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 |