src/HOL/Library/Countable_Set_Type.thy
changeset 69313 b021008c5397
parent 68406 6beb45f6cf67
child 69324 39ba40eb2150
equal deleted inserted replaced
69312:e0f68a507683 69313:b021008c5397
   115 lift_definition cBex :: "'a cset \<Rightarrow> ('a \<Rightarrow> bool) \<Rightarrow> bool" is Bex parametric Bex_transfer .
   115 lift_definition cBex :: "'a cset \<Rightarrow> ('a \<Rightarrow> bool) \<Rightarrow> bool" is Bex parametric Bex_transfer .
   116 lift_definition cUNION :: "'a cset \<Rightarrow> ('a \<Rightarrow> 'b cset) \<Rightarrow> 'b cset"
   116 lift_definition cUNION :: "'a cset \<Rightarrow> ('a \<Rightarrow> 'b cset) \<Rightarrow> 'b cset"
   117   is "UNION" parametric UNION_transfer by simp
   117   is "UNION" parametric UNION_transfer by simp
   118 definition cUnion :: "'a cset cset \<Rightarrow> 'a cset" where "cUnion A = cUNION A id"
   118 definition cUnion :: "'a cset cset \<Rightarrow> 'a cset" where "cUnion A = cUNION A id"
   119 
   119 
   120 lemma Union_conv_UNION: "\<Union>A = UNION A id"
   120 lemma Union_conv_UNION: "\<Union>A = \<Union>(id ` A)"
   121 by auto
   121 by auto
   122 
   122 
   123 lemma cUnion_transfer [transfer_rule]:
   123 lemma cUnion_transfer [transfer_rule]:
   124   "rel_fun (pcr_cset (pcr_cset A)) (pcr_cset A) Union cUnion"
   124   "rel_fun (pcr_cset (pcr_cset A)) (pcr_cset A) Union cUnion"
   125 proof -
   125 proof -
   126   have "rel_fun (pcr_cset (pcr_cset A)) (pcr_cset A) (\<lambda>A. UNION A id) (\<lambda>A. cUNION A id)"
   126   have "rel_fun (pcr_cset (pcr_cset A)) (pcr_cset A) (\<lambda>A. \<Union>(id ` A)) (\<lambda>A. cUNION A id)"
   127     by transfer_prover
   127     by transfer_prover
   128   then show ?thesis by (simp flip: cUnion_def)
   128   then show ?thesis by (simp flip: cUnion_def)
   129 qed
   129 qed
   130 
   130 
   131 lemmas cset_eqI = set_eqI[Transfer.transferred]
   131 lemmas cset_eqI = set_eqI[Transfer.transferred]