author | paulson |
Thu, 20 Nov 1997 11:03:26 +0100 | |
changeset 4242 | 97601cf26262 |
parent 4091 | 771b1f6422a8 |
child 5068 | fb28eaa07e01 |
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 (**) |
|
7 |
*) |
|
8 |
||
9 |
(* ********************************************************************** *) |
|
1461 | 10 |
(* It is easy to see, that WO7 is equivallent to (**) *) |
1123 | 11 |
(* ********************************************************************** *) |
12 |
||
13 |
goalw thy [WO7_def] "WO7 <-> (ALL X. ~Finite(X) --> \ |
|
1461 | 14 |
\ (EX R. well_ord(X,R) & ~well_ord(X,converse(R))))"; |
4091 | 15 |
by (fast_tac (claset() addSEs [Finite_well_ord_converse]) 1); |
3731 | 16 |
qed "WO7_iff_LEMMA"; |
1123 | 17 |
|
18 |
(* ********************************************************************** *) |
|
1461 | 19 |
(* It is also easy to show that LEMMA implies WO1. *) |
1123 | 20 |
(* ********************************************************************** *) |
21 |
||
22 |
goalw thy [WO1_def] "!!Z. ALL X. ~Finite(X) --> \ |
|
1461 | 23 |
\ (EX R. well_ord(X,R) & ~well_ord(X,converse(R))) ==> WO1"; |
1208
bc3093616ba4
Ran expandshort and corrected spelling of Grabczewski
paulson
parents:
1200
diff
changeset
|
24 |
by (rtac allI 1); |
bc3093616ba4
Ran expandshort and corrected spelling of Grabczewski
paulson
parents:
1200
diff
changeset
|
25 |
by (etac allE 1); |
1123 | 26 |
by (excluded_middle_tac "Finite(A)" 1); |
2469 | 27 |
by (Fast_tac 1); |
1123 | 28 |
by (rewrite_goals_tac [Finite_def, eqpoll_def]); |
4091 | 29 |
by (fast_tac (claset() addSIs [[bij_is_inj, nat_implies_well_ord] MRS |
1461 | 30 |
well_ord_rvimage]) 1); |
3731 | 31 |
qed "LEMMA_imp_WO1"; |
1123 | 32 |
|
33 |
(* ********************************************************************** *) |
|
1461 | 34 |
(* The Rubins' proof of the other implication is contained within the *) |
35 |
(* following sentence : *) |
|
36 |
(* "... each infinite ordinal is well ordered by < but not by >." *) |
|
37 |
(* This statement can be proved by the following two theorems. *) |
|
38 |
(* But moreover we need to show similar property for any well ordered *) |
|
1123 | 39 |
(* infinite set. It is not very difficult thanks to Isabelle order types *) |
1461 | 40 |
(* We show that if a set is well ordered by some relation and by it's *) |
1123 | 41 |
(* converse, then apropriate order type is well ordered by the converse *) |
1461 | 42 |
(* of it's membership relation, which in connection with the previous *) |
43 |
(* gives the conclusion. *) |
|
1123 | 44 |
(* ********************************************************************** *) |
45 |
||
46 |
goalw thy [wf_on_def, wf_def] |
|
47 |
"!!a. [| Ord(a); ~Finite(a) |] ==> ~wf[a](converse(Memrel(a)))"; |
|
48 |
by (dresolve_tac [nat_le_infinite_Ord RS le_imp_subset] 1 |
|
1196 | 49 |
THEN (assume_tac 1)); |
1208
bc3093616ba4
Ran expandshort and corrected spelling of Grabczewski
paulson
parents:
1200
diff
changeset
|
50 |
by (rtac notI 1); |
1123 | 51 |
by (eres_inst_tac [("x","nat")] allE 1); |
1208
bc3093616ba4
Ran expandshort and corrected spelling of Grabczewski
paulson
parents:
1200
diff
changeset
|
52 |
by (etac disjE 1); |
4091 | 53 |
by (fast_tac (claset() addSDs [nat_0I RSN (2,equals0D)]) 1); |
1208
bc3093616ba4
Ran expandshort and corrected spelling of Grabczewski
paulson
parents:
1200
diff
changeset
|
54 |
by (etac bexE 1); |
1123 | 55 |
by (eres_inst_tac [("x","succ(x)")] allE 1); |
4091 | 56 |
by (fast_tac (claset() addSIs [nat_succI, converseI, MemrelI, |
1123 | 57 |
nat_succI RSN (2, subsetD)]) 1); |
3731 | 58 |
qed "converse_Memrel_not_wf_on"; |
1123 | 59 |
|
60 |
goalw thy [well_ord_def] |
|
61 |
"!!a. [| Ord(a); ~Finite(a) |] ==> ~well_ord(a,converse(Memrel(a)))"; |
|
4091 | 62 |
by (fast_tac (claset() addSDs [converse_Memrel_not_wf_on]) 1); |
3731 | 63 |
qed "converse_Memrel_not_well_ord"; |
1123 | 64 |
|
65 |
goal thy "!!A. [| well_ord(A,r); well_ord(A,converse(r)) |] \ |
|
1461 | 66 |
\ ==> well_ord(ordertype(A,r), converse(Memrel(ordertype(A, r))))"; |
1123 | 67 |
by (rtac ([ordertype_ord_iso RS ord_iso_sym RS ord_iso_rvimage_eq, |
1461 | 68 |
Memrel_type RS (subset_Int_iff RS iffD1)] |
69 |
MRS trans RS subst) 1 |
|
70 |
THEN (assume_tac 1)); |
|
1123 | 71 |
by (rtac (rvimage_converse RS subst) 1); |
72 |
by (etac (ordertype_ord_iso RS ord_iso_sym RS ord_iso_is_bij RS |
|
1461 | 73 |
bij_is_inj RS well_ord_rvimage) 1 |
74 |
THEN (assume_tac 1)); |
|
3731 | 75 |
qed "well_ord_converse_Memrel"; |
1123 | 76 |
|
77 |
goalw thy [WO1_def] "!!Z. WO1 ==> ALL X. ~Finite(X) --> \ |
|
1461 | 78 |
\ (EX R. well_ord(X,R) & ~well_ord(X,converse(R)))"; |
1123 | 79 |
by (REPEAT (resolve_tac [allI,impI] 1)); |
80 |
by (REPEAT (eresolve_tac [allE,exE] 1)); |
|
81 |
by (REPEAT (ares_tac [exI,conjI,notI] 1)); |
|
1196 | 82 |
by (forward_tac [well_ord_converse_Memrel] 1 THEN (assume_tac 1)); |
1123 | 83 |
by (forward_tac [Ord_ordertype RS converse_Memrel_not_well_ord] 1); |
84 |
by (contr_tac 2); |
|
85 |
by (fast_tac (empty_cs addSEs [ordertype_ord_iso RS ord_iso_is_bij RS |
|
1461 | 86 |
bij_is_inj RS (exI RS (lepoll_def RS def_imp_iff RS iffD2)) |
87 |
RS lepoll_Finite] |
|
88 |
addSIs [notI] addEs [notE]) 1); |
|
3731 | 89 |
qed "WO1_imp_LEMMA"; |
1123 | 90 |