src/ZF/AC/Hartog.ML
author paulson
Tue, 26 Jun 2001 16:54:39 +0200
changeset 11380 e76366922751
parent 11317 7f9e4c389318
permissions -rw-r--r--
tidying and consolidating files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1299
diff changeset
     1
(*  Title:      ZF/AC/Hartog.ML
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
     2
    ID:         $Id$
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1299
diff changeset
     3
    Author:     Krzysztof Grabczewski
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
     4
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
     5
  Some proofs on the Hartogs function.
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
     6
*)
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
     7
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 5137
diff changeset
     8
Goal "\\<forall>a. Ord(a) --> a \\<in> X ==> P";
7f9e4c389318 X-symbols for set theory
paulson
parents: 5137
diff changeset
     9
by (res_inst_tac [("X1","{y \\<in> X. Ord(y)}")] (ON_class RS revcut_rl) 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1461
diff changeset
    10
by (Fast_tac 1);
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    11
qed "Ords_in_set";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    12
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5068
diff changeset
    13
Goalw [lepoll_def] "[| Ord(a); a lepoll X |] ==>  \
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 5137
diff changeset
    14
\               \\<exists>Y. Y \\<subseteq> X & (\\<exists>R. well_ord(Y,R) & ordertype(Y,R)=a)";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    15
by (etac exE 1);
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    16
by (REPEAT (resolve_tac [exI, conjI] 1));
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    17
by (eresolve_tac [inj_is_fun RS fun_is_rel RS image_subset] 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    18
by (rtac exI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    19
by (rtac conjI 1);
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    20
by (eresolve_tac [well_ord_Memrel RSN (2, subset_refl RSN (2, 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1299
diff changeset
    21
        restrict_bij RS bij_converse_bij) RS bij_is_inj RS well_ord_rvimage)] 1
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1299
diff changeset
    22
        THEN (assume_tac 1));
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    23
by (resolve_tac [subset_refl RSN (2, restrict_bij RS bij_converse_bij) RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1299
diff changeset
    24
        (well_ord_Memrel RSN (2, bij_ordertype_vimage)) RS 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1299
diff changeset
    25
        (ordertype_Memrel RSN (2, trans))] 1
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1299
diff changeset
    26
        THEN (REPEAT (assume_tac 1)));
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    27
qed "Ord_lepoll_imp_ex_well_ord";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    28
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5068
diff changeset
    29
Goal "[| Ord(a); a lepoll X |] ==>  \
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 5137
diff changeset
    30
\               \\<exists>Y. Y \\<subseteq> X & (\\<exists>R. R \\<subseteq> X*X & ordertype(Y,R)=a)";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    31
by (dtac Ord_lepoll_imp_ex_well_ord 1 THEN (assume_tac 1));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2469
diff changeset
    32
by Safe_tac;
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    33
by (REPEAT (ares_tac [exI, conjI] 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    34
by (etac ordertype_Int 2);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1461
diff changeset
    35
by (Fast_tac 1);
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    36
qed "Ord_lepoll_imp_eq_ordertype";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    37
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 5137
diff changeset
    38
Goal "\\<forall>a. Ord(a) --> a lepoll X ==>  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 5137
diff changeset
    39
\       \\<forall>a. Ord(a) -->  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 5137
diff changeset
    40
\       a:{a. Z \\<in> Pow(X)*Pow(X*X), \\<exists>Y R. Z=<Y,R> & ordertype(Y,R)=a}";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    41
by (REPEAT (resolve_tac [allI,impI] 1));
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    42
by (REPEAT (eresolve_tac [allE, impE] 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents: 1123
diff changeset
    43
by (assume_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    44
by (dtac Ord_lepoll_imp_eq_ordertype 1 THEN (assume_tac 1));
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
    45
by (fast_tac (claset() addSIs [ReplaceI] addEs [sym]) 1);
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    46
qed "Ords_lepoll_set_lemma";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    47
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 5137
diff changeset
    48
Goal "\\<forall>a. Ord(a) --> a lepoll X ==> P";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    49
by (eresolve_tac [Ords_lepoll_set_lemma RS Ords_in_set] 1);
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    50
qed "Ords_lepoll_set";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    51
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 5137
diff changeset
    52
Goal "\\<exists>a. Ord(a) & ~a lepoll X";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    53
by (rtac swap 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1461
diff changeset
    54
by (Fast_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    55
by (rtac Ords_lepoll_set 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1461
diff changeset
    56
by (Fast_tac 1);
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    57
qed "ex_Ord_not_lepoll";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    58
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4091
diff changeset
    59
Goalw [Hartog_def] "~ Hartog(A) lepoll A";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    60
by (resolve_tac [ex_Ord_not_lepoll RS exE] 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    61
by (rtac LeastI 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1461
diff changeset
    62
by (REPEAT (Fast_tac 1));
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    63
qed "HartogI";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    64
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    65
val HartogE = HartogI RS notE;
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    66
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4091
diff changeset
    67
Goalw [Hartog_def] "Ord(Hartog(A))";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    68
by (rtac Ord_Least 1);
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    69
qed "Ord_Hartog";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    70
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5068
diff changeset
    71
Goalw [Hartog_def] "[| i < Hartog(A); ~ i lepoll A |] ==> P";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
    72
by (fast_tac (claset() addEs [less_LeastE]) 1);
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    73
qed "less_HartogE1";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    74
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5068
diff changeset
    75
Goal "[| i < Hartog(A); i eqpoll Hartog(A) |] ==> P";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
    76
by (fast_tac (claset() addEs [less_HartogE1, eqpoll_sym RS eqpoll_imp_lepoll
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1299
diff changeset
    77
                RS lepoll_trans RS HartogE]) 1);
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    78
qed "less_HartogE";
1123
5dfdc1464966 Krzysztof Grabczewski's (nearly) complete AC proofs
lcp
parents:
diff changeset
    79
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4091
diff changeset
    80
Goal "Card(Hartog(A))";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
    81
by (fast_tac (claset() addSIs [CardI, Ord_Hartog] addEs [less_HartogE]) 1);
1299
e74f694ca1da added usage of qed
clasohm
parents: 1208
diff changeset
    82
qed "Card_Hartog";