diff -r 162bd20dae23 -r b57df8eecad6 src/HOL/BNF_Def.thy --- a/src/HOL/BNF_Def.thy Thu Aug 27 13:07:45 2015 +0200 +++ b/src/HOL/BNF_Def.thy Thu Aug 27 21:19:48 2015 +0200 @@ -15,7 +15,7 @@ "bnf" :: thy_goal begin -lemma Collect_splitD: "x \ Collect (split A) \ A (fst x) (snd x)" +lemma Collect_splitD: "x \ Collect (case_prod A) \ A (fst x) (snd x)" by auto inductive @@ -98,7 +98,7 @@ unfolding convol_def by simp lemma convol_mem_GrpI: - "x \ A \ \id, g\ x \ (Collect (split (Grp A g)))" + "x \ A \ \id, g\ x \ (Collect (case_prod (Grp A g)))" unfolding convol_def Grp_def by auto definition csquare where @@ -131,10 +131,10 @@ lemma GrpE: "Grp A f x y \ (\f x = y; x \ A\ \ R) \ R" unfolding Grp_def by auto -lemma Collect_split_Grp_eqD: "z \ Collect (split (Grp A f)) \ (f \ fst) z = snd z" +lemma Collect_split_Grp_eqD: "z \ Collect (case_prod (Grp A f)) \ (f \ fst) z = snd z" unfolding Grp_def comp_def by auto -lemma Collect_split_Grp_inD: "z \ Collect (split (Grp A f)) \ fst z \ A" +lemma Collect_split_Grp_inD: "z \ Collect (case_prod (Grp A f)) \ fst z \ A" unfolding Grp_def comp_def by auto definition "pick_middlep P Q a c = (SOME b. P a b \ Q b c)" @@ -149,7 +149,7 @@ definition sndOp where "sndOp P Q ac = (pick_middlep P Q (fst ac) (snd ac), (snd ac))" -lemma fstOp_in: "ac \ Collect (split (P OO Q)) \ fstOp P Q ac \ Collect (split P)" +lemma fstOp_in: "ac \ Collect (case_prod (P OO Q)) \ fstOp P Q ac \ Collect (case_prod P)" unfolding fstOp_def mem_Collect_eq by (subst (asm) surjective_pairing, unfold prod.case) (erule pick_middlep[THEN conjunct1]) @@ -159,7 +159,7 @@ lemma snd_sndOp: "snd bc = (snd \ sndOp P Q) bc" unfolding comp_def sndOp_def by simp -lemma sndOp_in: "ac \ Collect (split (P OO Q)) \ sndOp P Q ac \ Collect (split Q)" +lemma sndOp_in: "ac \ Collect (case_prod (P OO Q)) \ sndOp P Q ac \ Collect (case_prod Q)" unfolding sndOp_def mem_Collect_eq by (subst (asm) surjective_pairing, unfold prod.case) (erule pick_middlep[THEN conjunct2]) @@ -173,15 +173,15 @@ lemma fst_snd_flip: "fst xy = (snd \ (%(x, y). (y, x))) xy" by (simp split: prod.split) -lemma flip_pred: "A \ Collect (split (R ^--1)) \ (%(x, y). (y, x)) ` A \ Collect (split R)" +lemma flip_pred: "A \ Collect (case_prod (R ^--1)) \ (%(x, y). (y, x)) ` A \ Collect (case_prod R)" by auto -lemma Collect_split_mono: "A \ B \ Collect (split A) \ Collect (split B)" +lemma Collect_split_mono: "A \ B \ Collect (case_prod A) \ Collect (case_prod B)" by auto lemma Collect_split_mono_strong: - "\X = fst ` A; Y = snd ` A; \a\X. \b \ Y. P a b \ Q a b; A \ Collect (split P)\ \ - A \ Collect (split Q)" + "\X = fst ` A; Y = snd ` A; \a\X. \b \ Y. P a b \ Q a b; A \ Collect (case_prod P)\ \ + A \ Collect (case_prod Q)" by fastforce @@ -216,7 +216,7 @@ lemma rel_fun_iff_leq_vimage2p: "(rel_fun R S) f g = (R \ vimage2p f g S)" unfolding rel_fun_def vimage2p_def by auto -lemma convol_image_vimage2p: "\f \ fst, g \ snd\ ` Collect (split (vimage2p f g R)) \ Collect (split R)" +lemma convol_image_vimage2p: "\f \ fst, g \ snd\ ` Collect (case_prod (vimage2p f g R)) \ Collect (case_prod R)" unfolding vimage2p_def convol_def by auto lemma vimage2p_Grp: "vimage2p f g P = Grp UNIV f OO P OO (Grp UNIV g)\\"