equal
deleted
inserted
replaced
562 "(\<forall>t \<in> rcset a. \<exists>u \<in> rcset b. R t u) \<and> (\<forall>t \<in> rcset b. \<exists>u \<in> rcset a. R u t) \<longleftrightarrow> |
562 "(\<forall>t \<in> rcset a. \<exists>u \<in> rcset b. R t u) \<and> (\<forall>t \<in> rcset b. \<exists>u \<in> rcset a. R u t) \<longleftrightarrow> |
563 ((BNF_Def.Grp {x. rcset x \<subseteq> {(a, b). R a b}} (cimage fst))\<inverse>\<inverse> OO |
563 ((BNF_Def.Grp {x. rcset x \<subseteq> {(a, b). R a b}} (cimage fst))\<inverse>\<inverse> OO |
564 BNF_Def.Grp {x. rcset x \<subseteq> {(a, b). R a b}} (cimage snd)) a b" (is "?L = ?R") |
564 BNF_Def.Grp {x. rcset x \<subseteq> {(a, b). R a b}} (cimage snd)) a b" (is "?L = ?R") |
565 proof |
565 proof |
566 assume ?L |
566 assume ?L |
567 def R' \<equiv> "the_inv rcset (Collect (split R) \<inter> (rcset a \<times> rcset b))" |
567 def R' \<equiv> "the_inv rcset (Collect (case_prod R) \<inter> (rcset a \<times> rcset b))" |
568 (is "the_inv rcset ?L'") |
568 (is "the_inv rcset ?L'") |
569 have L: "countable ?L'" by auto |
569 have L: "countable ?L'" by auto |
570 hence *: "rcset R' = ?L'" unfolding R'_def by (intro rcset_to_rcset) |
570 hence *: "rcset R' = ?L'" unfolding R'_def by (intro rcset_to_rcset) |
571 thus ?R unfolding Grp_def relcompp.simps conversep.simps including cset.lifting |
571 thus ?R unfolding Grp_def relcompp.simps conversep.simps including cset.lifting |
572 proof (intro CollectI case_prodI exI[of _ a] exI[of _ b] exI[of _ R'] conjI refl) |
572 proof (intro CollectI case_prodI exI[of _ a] exI[of _ b] exI[of _ R'] conjI refl) |
605 show "rel_cset R OO rel_cset S \<le> rel_cset (R OO S)" |
605 show "rel_cset R OO rel_cset S \<le> rel_cset (R OO S)" |
606 unfolding rel_cset_alt_def[abs_def] by fast |
606 unfolding rel_cset_alt_def[abs_def] by fast |
607 next |
607 next |
608 fix R |
608 fix R |
609 show "rel_cset R = |
609 show "rel_cset R = |
610 (BNF_Def.Grp {x. rcset x \<subseteq> Collect (split R)} (cimage fst))\<inverse>\<inverse> OO |
610 (BNF_Def.Grp {x. rcset x \<subseteq> Collect (case_prod R)} (cimage fst))\<inverse>\<inverse> OO |
611 BNF_Def.Grp {x. rcset x \<subseteq> Collect (split R)} (cimage snd)" |
611 BNF_Def.Grp {x. rcset x \<subseteq> Collect (case_prod R)} (cimage snd)" |
612 unfolding rel_cset_alt_def[abs_def] rel_cset_aux by simp |
612 unfolding rel_cset_alt_def[abs_def] rel_cset_aux by simp |
613 qed(simp add: bot_cset.rep_eq) |
613 qed(simp add: bot_cset.rep_eq) |
614 |
614 |
615 end |
615 end |