| author | kuncar | 
| Mon, 26 Nov 2012 14:20:51 +0100 | |
| changeset 50227 | 01d545993e8c | 
| parent 46822 | 95f1e700b712 | 
| child 76213 | e44d86131648 | 
| permissions | -rw-r--r-- | 
| 5464 | 1 | (* Title: ZF/AC/WO1_WO7.thy | 
| 2 | Author: Lawrence C Paulson, CU Computer Laboratory | |
| 3 | Copyright 1998 University of Cambridge | |
| 4 | ||
| 46822 
95f1e700b712
 mathematical symbols for Isabelle/ZF example theories
 paulson parents: 
32960diff
changeset | 5 | WO7 \<longleftrightarrow> LEMMA \<longleftrightarrow> WO1 (Rubin & Rubin p. 5) | 
| 5464 | 6 | LEMMA is the sentence denoted by (**) | 
| 12776 | 7 | |
| 46822 
95f1e700b712
 mathematical symbols for Isabelle/ZF example theories
 paulson parents: 
32960diff
changeset | 8 | Also, WO1 \<longleftrightarrow> WO8 | 
| 5464 | 9 | *) | 
| 10 | ||
| 27678 | 11 | theory WO1_WO7 | 
| 12 | imports AC_Equiv | |
| 13 | begin | |
| 5464 | 14 | |
| 24893 | 15 | definition | 
| 5464 | 16 | "LEMMA == | 
| 46822 
95f1e700b712
 mathematical symbols for Isabelle/ZF example theories
 paulson parents: 
32960diff
changeset | 17 | \<forall>X. ~Finite(X) \<longrightarrow> (\<exists>R. well_ord(X,R) & ~well_ord(X,converse(R)))" | 
| 12776 | 18 | |
| 19 | (* ********************************************************************** *) | |
| 20 | (* It is easy to see that WO7 is equivalent to (**) *) | |
| 21 | (* ********************************************************************** *) | |
| 22 | ||
| 46822 
95f1e700b712
 mathematical symbols for Isabelle/ZF example theories
 paulson parents: 
32960diff
changeset | 23 | lemma WO7_iff_LEMMA: "WO7 \<longleftrightarrow> LEMMA" | 
| 12776 | 24 | apply (unfold WO7_def LEMMA_def) | 
| 25 | apply (blast intro: Finite_well_ord_converse) | |
| 26 | done | |
| 27 | ||
| 28 | (* ********************************************************************** *) | |
| 29 | (* It is also easy to show that LEMMA implies WO1. *) | |
| 30 | (* ********************************************************************** *) | |
| 31 | ||
| 32 | lemma LEMMA_imp_WO1: "LEMMA ==> WO1" | |
| 33 | apply (unfold WO1_def LEMMA_def Finite_def eqpoll_def) | |
| 34 | apply (blast intro!: well_ord_rvimage [OF bij_is_inj nat_implies_well_ord]) | |
| 35 | done | |
| 36 | ||
| 37 | (* ********************************************************************** *) | |
| 38 | (* The Rubins' proof of the other implication is contained within the *) | |
| 39 | (* following sentence \<in> *) | |
| 40 | (* "... each infinite ordinal is well ordered by < but not by >." *) | |
| 41 | (* This statement can be proved by the following two theorems. *) | |
| 42 | (* But moreover we need to show similar property for any well ordered *) | |
| 43 | (* infinite set. It is not very difficult thanks to Isabelle order types *) | |
| 44 | (* We show that if a set is well ordered by some relation and by its *) | |
| 45 | (* converse, then apropriate order type is well ordered by the converse *) | |
| 46 | (* of it's membership relation, which in connection with the previous *) | |
| 47 | (* gives the conclusion. *) | |
| 48 | (* ********************************************************************** *) | |
| 49 | ||
| 50 | lemma converse_Memrel_not_wf_on: | |
| 51 | "[| Ord(a); ~Finite(a) |] ==> ~wf[a](converse(Memrel(a)))" | |
| 52 | apply (unfold wf_on_def wf_def) | |
| 12820 | 53 | apply (drule nat_le_infinite_Ord [THEN le_imp_subset], assumption) | 
| 12776 | 54 | apply (rule notI) | 
| 13339 
0f89104dd377
Fixed quantified variable name preservation for ball and bex (bounded quants)
 paulson parents: 
12820diff
changeset | 55 | apply (erule_tac x = nat in allE, blast) | 
| 12776 | 56 | done | 
| 57 | ||
| 58 | lemma converse_Memrel_not_well_ord: | |
| 59 | "[| Ord(a); ~Finite(a) |] ==> ~well_ord(a,converse(Memrel(a)))" | |
| 60 | apply (unfold well_ord_def) | |
| 61 | apply (blast dest: converse_Memrel_not_wf_on) | |
| 62 | done | |
| 63 | ||
| 64 | lemma well_ord_rvimage_ordertype: | |
| 65 | "well_ord(A,r) \<Longrightarrow> | |
| 66 | rvimage (ordertype(A,r), converse(ordermap(A,r)),r) = | |
| 67 | Memrel(ordertype(A,r))" | |
| 68 | by (blast intro: ordertype_ord_iso [THEN ord_iso_sym] ord_iso_rvimage_eq | |
| 69 | Memrel_type [THEN subset_Int_iff [THEN iffD1]] trans) | |
| 70 | ||
| 71 | lemma well_ord_converse_Memrel: | |
| 72 | "[| well_ord(A,r); well_ord(A,converse(r)) |] | |
| 73 | ==> well_ord(ordertype(A,r), converse(Memrel(ordertype(A,r))))" | |
| 74 | apply (subst well_ord_rvimage_ordertype [symmetric], assumption) | |
| 75 | apply (rule rvimage_converse [THEN subst]) | |
| 76 | apply (blast intro: ordertype_ord_iso ord_iso_sym ord_iso_is_bij | |
| 77 | bij_is_inj well_ord_rvimage) | |
| 78 | done | |
| 79 | ||
| 80 | lemma WO1_imp_LEMMA: "WO1 ==> LEMMA" | |
| 81 | apply (unfold WO1_def LEMMA_def, clarify) | |
| 82 | apply (blast dest: well_ord_converse_Memrel | |
| 83 | Ord_ordertype [THEN converse_Memrel_not_well_ord] | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
27678diff
changeset | 84 | intro: ordertype_ord_iso ord_iso_is_bij bij_is_inj lepoll_Finite | 
| 12776 | 85 | lepoll_def [THEN def_imp_iff, THEN iffD2] ) | 
| 86 | done | |
| 87 | ||
| 46822 
95f1e700b712
 mathematical symbols for Isabelle/ZF example theories
 paulson parents: 
32960diff
changeset | 88 | lemma WO1_iff_WO7: "WO1 \<longleftrightarrow> WO7" | 
| 12776 | 89 | apply (simp add: WO7_iff_LEMMA) | 
| 90 | apply (blast intro: LEMMA_imp_WO1 WO1_imp_LEMMA) | |
| 91 | done | |
| 92 | ||
| 93 | ||
| 94 | ||
| 95 | (* ********************************************************************** *) | |
| 46822 
95f1e700b712
 mathematical symbols for Isabelle/ZF example theories
 paulson parents: 
32960diff
changeset | 96 | (* The proof of WO8 \<longleftrightarrow> WO1 (Rubin & Rubin p. 6) *) | 
| 12776 | 97 | (* ********************************************************************** *) | 
| 98 | ||
| 99 | lemma WO1_WO8: "WO1 ==> WO8" | |
| 100 | by (unfold WO1_def WO8_def, fast) | |
| 101 | ||
| 102 | ||
| 103 | (* The implication "WO8 ==> WO1": a faithful image of Rubin & Rubin's proof*) | |
| 104 | lemma WO8_WO1: "WO8 ==> WO1" | |
| 105 | apply (unfold WO1_def WO8_def) | |
| 106 | apply (rule allI) | |
| 107 | apply (erule_tac x = "{{x}. x \<in> A}" in allE)
 | |
| 108 | apply (erule impE) | |
| 109 |  apply (rule_tac x = "\<lambda>a \<in> {{x}. x \<in> A}. THE x. a={x}" in exI)
 | |
| 110 | apply (force intro!: lam_type simp add: singleton_eq_iff the_equality) | |
| 111 | apply (blast intro: lam_sing_bij bij_is_inj well_ord_rvimage) | |
| 112 | done | |
| 5464 | 113 | |
| 114 | end |