src/HOL/BNF/BNF_GFP.thy
changeset 54841 af71b753c459
parent 54581 1502a1f707d9
child 55022 eeba3ba73486
equal deleted inserted replaced
54840:fac0c76bbda2 54841:af71b753c459
   252 
   252 
   253 lemma fromCard_toCard:
   253 lemma fromCard_toCard:
   254 "\<lbrakk>|A| \<le>o r; Card_order r; b \<in> A\<rbrakk> \<Longrightarrow> fromCard A r (toCard A r b) = b"
   254 "\<lbrakk>|A| \<le>o r; Card_order r; b \<in> A\<rbrakk> \<Longrightarrow> fromCard A r (toCard A r b) = b"
   255 unfolding fromCard_def by (rule some_equality) (auto simp add: toCard_inj)
   255 unfolding fromCard_def by (rule some_equality) (auto simp add: toCard_inj)
   256 
   256 
   257 (* pick according to the weak pullback *)
       
   258 definition pickWP where
       
   259 "pickWP A p1 p2 b1 b2 \<equiv> SOME a. a \<in> A \<and> p1 a = b1 \<and> p2 a = b2"
       
   260 
       
   261 lemma pickWP_pred:
       
   262 assumes "wpull A B1 B2 f1 f2 p1 p2" and
       
   263 "b1 \<in> B1" and "b2 \<in> B2" and "f1 b1 = f2 b2"
       
   264 shows "\<exists> a. a \<in> A \<and> p1 a = b1 \<and> p2 a = b2"
       
   265 using assms unfolding wpull_def by blast
       
   266 
       
   267 lemma pickWP_raw:
       
   268 assumes "wpull A B1 B2 f1 f2 p1 p2" and
       
   269 "b1 \<in> B1" and "b2 \<in> B2" and "f1 b1 = f2 b2"
       
   270 shows "pickWP A p1 p2 b1 b2 \<in> A
       
   271        \<and> p1 (pickWP A p1 p2 b1 b2) = b1
       
   272        \<and> p2 (pickWP A p1 p2 b1 b2) = b2"
       
   273 unfolding pickWP_def using assms someI_ex[OF pickWP_pred] by fastforce
       
   274 
       
   275 lemmas pickWP =
       
   276   pickWP_raw[THEN conjunct1]
       
   277   pickWP_raw[THEN conjunct2, THEN conjunct1]
       
   278   pickWP_raw[THEN conjunct2, THEN conjunct2]
       
   279 
       
   280 lemma Inl_Field_csum: "a \<in> Field r \<Longrightarrow> Inl a \<in> Field (r +c s)"
   257 lemma Inl_Field_csum: "a \<in> Field r \<Longrightarrow> Inl a \<in> Field (r +c s)"
   281 unfolding Field_card_of csum_def by auto
   258 unfolding Field_card_of csum_def by auto
   282 
   259 
   283 lemma Inr_Field_csum: "a \<in> Field s \<Longrightarrow> Inr a \<in> Field (r +c s)"
   260 lemma Inr_Field_csum: "a \<in> Field s \<Longrightarrow> Inr a \<in> Field (r +c s)"
   284 unfolding Field_card_of csum_def by auto
   261 unfolding Field_card_of csum_def by auto