| author | wenzelm | 
| Sun, 11 Nov 2001 21:35:04 +0100 | |
| changeset 12144 | f84eb7334d04 | 
| parent 11380 | e76366922751 | 
| permissions | -rw-r--r-- | 
| 1461 | 1  | 
(* Title: ZF/AC/WO1_WO7.ML  | 
| 1123 | 2  | 
ID: $Id$  | 
| 1461 | 3  | 
Author: Krzysztof Grabczewski  | 
| 1123 | 4  | 
|
5  | 
WO7 <-> LEMMA <-> WO1 (Rubin & Rubin p. 5)  | 
|
6  | 
LEMMA is the sentence denoted by (**)  | 
|
| 11380 | 7  | 
|
8  | 
Also, WO1 <-> WO8  | 
|
| 1123 | 9  | 
*)  | 
10  | 
||
11  | 
(* ********************************************************************** *)  | 
|
| 1461 | 12  | 
(* It is easy to see, that WO7 is equivallent to (**) *)  | 
| 1123 | 13  | 
(* ********************************************************************** *)  | 
14  | 
||
| 5473 | 15  | 
Goalw [WO7_def, LEMMA_def]  | 
16  | 
"WO7 <-> LEMMA";  | 
|
| 4091 | 17  | 
by (fast_tac (claset() addSEs [Finite_well_ord_converse]) 1);  | 
| 3731 | 18  | 
qed "WO7_iff_LEMMA";  | 
| 1123 | 19  | 
|
20  | 
(* ********************************************************************** *)  | 
|
| 1461 | 21  | 
(* It is also easy to show that LEMMA implies WO1. *)  | 
| 1123 | 22  | 
(* ********************************************************************** *)  | 
23  | 
||
| 5473 | 24  | 
Goalw [WO1_def, LEMMA_def] "LEMMA ==> WO1";  | 
| 
1208
 
bc3093616ba4
Ran expandshort and corrected spelling of Grabczewski
 
paulson 
parents: 
1200 
diff
changeset
 | 
25  | 
by (rtac allI 1);  | 
| 
 
bc3093616ba4
Ran expandshort and corrected spelling of Grabczewski
 
paulson 
parents: 
1200 
diff
changeset
 | 
26  | 
by (etac allE 1);  | 
| 1123 | 27  | 
by (excluded_middle_tac "Finite(A)" 1);  | 
| 2469 | 28  | 
by (Fast_tac 1);  | 
| 1123 | 29  | 
by (rewrite_goals_tac [Finite_def, eqpoll_def]);  | 
| 4091 | 30  | 
by (fast_tac (claset() addSIs [[bij_is_inj, nat_implies_well_ord] MRS  | 
| 1461 | 31  | 
well_ord_rvimage]) 1);  | 
| 3731 | 32  | 
qed "LEMMA_imp_WO1";  | 
| 1123 | 33  | 
|
34  | 
(* ********************************************************************** *)  | 
|
| 1461 | 35  | 
(* The Rubins' proof of the other implication is contained within the *)  | 
| 11317 | 36  | 
(* following sentence \\<in> *)  | 
| 1461 | 37  | 
(* "... each infinite ordinal is well ordered by < but not by >." *)  | 
38  | 
(* This statement can be proved by the following two theorems. *)  | 
|
39  | 
(* But moreover we need to show similar property for any well ordered *)  | 
|
| 1123 | 40  | 
(* infinite set. It is not very difficult thanks to Isabelle order types *)  | 
| 5137 | 41  | 
(* We show that if a set is well ordered by some relation and by its *)  | 
| 1123 | 42  | 
(* converse, then apropriate order type is well ordered by the converse *)  | 
| 1461 | 43  | 
(* of it's membership relation, which in connection with the previous *)  | 
44  | 
(* gives the conclusion. *)  | 
|
| 1123 | 45  | 
(* ********************************************************************** *)  | 
46  | 
||
| 5068 | 47  | 
Goalw [wf_on_def, wf_def]  | 
| 5473 | 48  | 
"[| Ord(a); ~Finite(a) |] ==> ~wf[a](converse(Memrel(a)))";  | 
| 1123 | 49  | 
by (dresolve_tac [nat_le_infinite_Ord RS le_imp_subset] 1  | 
| 1196 | 50  | 
THEN (assume_tac 1));  | 
| 
1208
 
bc3093616ba4
Ran expandshort and corrected spelling of Grabczewski
 
paulson 
parents: 
1200 
diff
changeset
 | 
51  | 
by (rtac notI 1);  | 
| 1123 | 52  | 
by (eres_inst_tac [("x","nat")] allE 1);
 | 
| 5473 | 53  | 
by (Blast_tac 1);  | 
| 3731 | 54  | 
qed "converse_Memrel_not_wf_on";  | 
| 1123 | 55  | 
|
| 5068 | 56  | 
Goalw [well_ord_def]  | 
| 5473 | 57  | 
"[| Ord(a); ~Finite(a) |] ==> ~well_ord(a,converse(Memrel(a)))";  | 
| 4091 | 58  | 
by (fast_tac (claset() addSDs [converse_Memrel_not_wf_on]) 1);  | 
| 3731 | 59  | 
qed "converse_Memrel_not_well_ord";  | 
| 1123 | 60  | 
|
| 5137 | 61  | 
Goal "[| well_ord(A,r); well_ord(A,converse(r)) |] \  | 
| 1461 | 62  | 
\ ==> well_ord(ordertype(A,r), converse(Memrel(ordertype(A, r))))";  | 
| 1123 | 63  | 
by (rtac ([ordertype_ord_iso RS ord_iso_sym RS ord_iso_rvimage_eq,  | 
| 1461 | 64  | 
Memrel_type RS (subset_Int_iff RS iffD1)]  | 
65  | 
MRS trans RS subst) 1  | 
|
66  | 
THEN (assume_tac 1));  | 
|
| 1123 | 67  | 
by (rtac (rvimage_converse RS subst) 1);  | 
68  | 
by (etac (ordertype_ord_iso RS ord_iso_sym RS ord_iso_is_bij RS  | 
|
| 1461 | 69  | 
bij_is_inj RS well_ord_rvimage) 1  | 
70  | 
THEN (assume_tac 1));  | 
|
| 3731 | 71  | 
qed "well_ord_converse_Memrel";  | 
| 1123 | 72  | 
|
| 5473 | 73  | 
Goalw [WO1_def, LEMMA_def] "WO1 ==> LEMMA";  | 
| 1123 | 74  | 
by (REPEAT (resolve_tac [allI,impI] 1));  | 
75  | 
by (REPEAT (eresolve_tac [allE,exE] 1));  | 
|
76  | 
by (REPEAT (ares_tac [exI,conjI,notI] 1));  | 
|
| 7499 | 77  | 
by (ftac well_ord_converse_Memrel 1 THEN (assume_tac 1));  | 
| 1123 | 78  | 
by (forward_tac [Ord_ordertype RS converse_Memrel_not_well_ord] 1);  | 
79  | 
by (contr_tac 2);  | 
|
80  | 
by (fast_tac (empty_cs addSEs [ordertype_ord_iso RS ord_iso_is_bij RS  | 
|
| 1461 | 81  | 
bij_is_inj RS (exI RS (lepoll_def RS def_imp_iff RS iffD2))  | 
82  | 
RS lepoll_Finite]  | 
|
83  | 
addSIs [notI] addEs [notE]) 1);  | 
|
| 3731 | 84  | 
qed "WO1_imp_LEMMA";  | 
| 1123 | 85  | 
|
| 5473 | 86  | 
|
87  | 
Goal "WO1 <-> WO7";  | 
|
88  | 
by (simp_tac (simpset() addsimps [WO7_iff_LEMMA]) 1);  | 
|
89  | 
by (blast_tac (claset() addIs [LEMMA_imp_WO1, WO1_imp_LEMMA]) 1);  | 
|
90  | 
qed "WO1_iff_WO7";  | 
|
| 11380 | 91  | 
|
92  | 
||
93  | 
||
94  | 
(* ********************************************************************** *)  | 
|
95  | 
||
96  | 
(* The proof of WO8 <-> WO1 (Rubin & Rubin p. 6) *)  | 
|
97  | 
||
98  | 
(* ********************************************************************** *)  | 
|
99  | 
||
100  | 
Goalw WO_defs "WO1 ==> WO8";  | 
|
101  | 
by (Fast_tac 1);  | 
|
102  | 
qed "WO1_WO8";  | 
|
103  | 
||
104  | 
||
105  | 
(* The proof of "WO8 ==> WO1" - faithful image of Rubin & Rubin's proof *)  | 
|
106  | 
Goalw WO_defs "WO8 ==> WO1";  | 
|
107  | 
by (rtac allI 1);  | 
|
108  | 
by (eres_inst_tac [("x","{{x}. x \\<in> A}")] allE 1);
 | 
|
109  | 
by (etac impE 1);  | 
|
110  | 
by (fast_tac (claset() addSEs [lam_sing_bij RS bij_is_inj RS  | 
|
111  | 
well_ord_rvimage]) 2);  | 
|
112  | 
by (res_inst_tac [("x","\\<lambda>a \\<in> {{x}. x \\<in> A}. THE x. a={x}")] exI 1);
 | 
|
113  | 
by (force_tac (claset() addSIs [lam_type],  | 
|
114  | 
simpset() addsimps [singleton_eq_iff, the_equality]) 1);  | 
|
115  | 
qed "WO8_WO1";  |