diff -r 48042bacdce2 -r 44a70e69ef92 QuotScript.thy --- a/QuotScript.thy Mon Nov 30 10:16:10 2009 +0100 +++ b/QuotScript.thy Mon Nov 30 11:53:20 2009 +0100 @@ -223,6 +223,7 @@ using FUN_QUOTIENT[OF q1 q2] unfolding Respects_def QUOTIENT_def expand_fun_eq by blast +(* TODO: it is the same as APPLY_RSP *) (* q1 and q2 not used; see next lemma *) lemma FUN_REL_MP: assumes q1: "QUOTIENT R1 Abs1 Rep1" @@ -430,6 +431,17 @@ + + +lemma COND_PRS: + assumes a: "QUOTIENT R absf repf" + shows "(if a then b else c) = absf (if a then repf b else repf c)" + using a unfolding QUOTIENT_def by auto + + + + + (* Set of lemmas for regularisation of ball and bex *) lemma ball_reg_eqv: fixes P :: "'a \ bool" @@ -525,49 +537,29 @@ "((\y. \x. A x y) \ (\y. \x\P. B x y)) \ ((\x. \y. A x y) \ (\x\P. \y. B x y))" by auto - - -(* TODO: Add similar *) -lemma RES_FORALL_RSP: - shows "\f g. (R ===> (op =)) f g ==> - (Ball (Respects R) f = Ball (Respects R) g)" - apply (simp add: FUN_REL.simps Ball_def IN_RESPECTS) - done +(* 2 lemmas needed for proving repabs_inj *) +lemma ball_rsp: + assumes a: "(R ===> (op =)) f g" + shows "Ball (Respects R) f = Ball (Respects R) g" + using a by (simp add: Ball_def IN_RESPECTS) -lemma RES_EXISTS_RSP: - shows "\f g. (R ===> (op =)) f g ==> - (Bex (Respects R) f = Bex (Respects R) g)" - apply (simp add: FUN_REL.simps Bex_def IN_RESPECTS) - done +lemma bex_rsp: + assumes a: "(R ===> (op =)) f g" + shows "(Bex (Respects R) f = Bex (Respects R) g)" + using a by (simp add: Bex_def IN_RESPECTS) - -lemma FORALL_PRS: +(* 2 lemmas needed for cleaning of quantifiers *) +lemma all_prs: assumes a: "QUOTIENT R absf repf" - shows "All f = Ball (Respects R) ((absf ---> id) f)" - using a - unfolding QUOTIENT_def + shows "Ball (Respects R) ((absf ---> id) f) = All f" + using a unfolding QUOTIENT_def by (metis IN_RESPECTS fun_map.simps id_apply) -lemma EXISTS_PRS: - assumes a: "QUOTIENT R absf repf" - shows "Ex f = Bex (Respects R) ((absf ---> id) f)" - using a - unfolding QUOTIENT_def - by (metis COMBC_def Collect_def Collect_mem_eq IN_RESPECTS fun_map.simps id_apply mem_def) - -lemma COND_PRS: +lemma ex_prs: assumes a: "QUOTIENT R absf repf" - shows "(if a then b else c) = absf (if a then repf b else repf c)" - using a unfolding QUOTIENT_def by auto - -(* These are the fixed versions, general ones need to be proved. *) -lemma ho_all_prs: - shows "((op = ===> op =) ===> op =) All All" - by auto - -lemma ho_ex_prs: - shows "((op = ===> op =) ===> op =) Ex Ex" - by auto + shows "Bex (Respects R) ((absf ---> id) f) = Ex f" + using a unfolding QUOTIENT_def + by (metis COMBC_def Collect_def Collect_mem_eq IN_RESPECTS fun_map.simps id_apply) end