src/ZF/AC/WO2_AC16.ML
author paulson
Tue, 18 Dec 2001 15:03:27 +0100
changeset 12536 e9a729259385
parent 11317 7f9e4c389318
permissions -rw-r--r--
replaced lepoll_lesspoll_lesspoll, lesspoll_lepoll_lesspoll by lesspoll_trans1, lesspoll_trans2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
     1
(*  Title:      ZF/AC/WO2_AC16.ML
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
     2
    ID:         $Id$
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
     3
    Author:     Krzysztof Grabczewski
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
     4
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
     5
  The proof of WO2 ==> AC16(k #+ m, k)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
     6
  
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
     7
  The main part of the proof is the inductive reasoning concerning
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
     8
  properties of constructed family T_gamma.
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
     9
  The proof deals with three cases for ordinals: 0, succ and limit ordinal.
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    10
  The first instance is trivial, the third not difficult, but the second
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    11
  is very complicated requiring many lemmas.
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    12
  We also need to prove that at any stage gamma the set 
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    13
  (s - Union(...) - k_gamma)   (Rubin & Rubin page 15)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    14
  contains m distinct elements (in fact is equipollent to s)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    15
*)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    16
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    17
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    18
(* case of limit ordinal                                                  *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    19
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    20
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
    21
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    22
Goal "[| \\<forall>y<x. \\<forall>z<a. z<y | (\\<exists>Y \\<in> F(y). f(z)<=Y)  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    23
\               --> (\\<exists>! Y. Y \\<in> F(y) & f(z)<=Y);  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    24
\               \\<forall>i j. i le j --> F(i) \\<subseteq> F(j); j le i; i<x; z<a;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    25
\               V \\<in> F(i); f(z)<=V; W \\<in> F(j); f(z)<=W |]  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    26
\               ==> V = W";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    27
by (REPEAT (eresolve_tac [asm_rl, allE, impE] 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    28
by (dtac subsetD 1 THEN (assume_tac 1));
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    29
by (REPEAT (dtac ospec 1 THEN (assume_tac 1)));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    30
by (eresolve_tac [disjI2 RSN (2, impE)] 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    31
by (fast_tac (FOL_cs addSIs [bexI]) 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    32
by (etac ex1_two_eq 1 THEN (REPEAT (ares_tac [conjI] 1)));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    33
val lemma3_1 = result();
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    34
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
    35
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    36
Goal "[| \\<forall>y<x. \\<forall>z<a. z<y | (\\<exists>Y \\<in> F(y). f(z)<=Y)  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    37
\               --> (\\<exists>! Y. Y \\<in> F(y) & f(z)<=Y);  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    38
\               \\<forall>i j. i le j --> F(i) \\<subseteq> F(j); i<x; j<x; z<a;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    39
\               V \\<in> F(i); f(z)<=V; W \\<in> F(j); f(z)<=W |]  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    40
\               ==> V = W";
8123
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
    41
by (res_inst_tac [("j","j")] ([lt_Ord, lt_Ord] MRS Ord_linear_le) 1
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
    42
    THEN (REPEAT (assume_tac 1)));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    43
by (eresolve_tac [lemma3_1 RS sym] 1 THEN (REPEAT (assume_tac 1)));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    44
by (etac lemma3_1 1 THEN (REPEAT (assume_tac 1)));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    45
val lemma3 = result();
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    46
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
    47
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    48
Goal "[| \\<forall>y<x. F(y) \\<subseteq> X &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    49
\               (\\<forall>x<a. x < y | (\\<exists>Y \\<in> F(y). fa(x) \\<subseteq> Y) -->  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    50
\                       (\\<exists>! Y. Y \\<in> F(y) & fa(x) \\<subseteq> Y)); x < a |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    51
\               ==> \\<forall>y<x. \\<forall>z<a. z < y | (\\<exists>Y \\<in> F(y). fa(z) \\<subseteq> Y) -->  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    52
\                       (\\<exists>! Y. Y \\<in> F(y) & fa(z) \\<subseteq> Y)";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    53
by (REPEAT (resolve_tac [oallI, impI] 1));
4152
451104c223e2 Ran expandshort, especially to introduce Safe_tac
paulson
parents: 4091
diff changeset
    54
by (dtac ospec 1 THEN (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    55
by (fast_tac (FOL_cs addSEs [oallE]) 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    56
val lemma4 = result();
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    57
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
    58
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    59
Goal "[| \\<forall>y<x. F(y) \\<subseteq> X &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    60
\               (\\<forall>x<a. x < y | (\\<exists>Y \\<in> F(y). fa(x) \\<subseteq> Y) -->  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    61
\                       (\\<exists>! Y. Y \\<in> F(y) & fa(x) \\<subseteq> Y)); \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    62
\               x < a; Limit(x); \\<forall>i j. i le j --> F(i) \\<subseteq> F(j) |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    63
\               ==> (\\<Union>x<x. F(x)) \\<subseteq> X &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    64
\               (\\<forall>xa<a. xa < x | (\\<exists>x \\<in> \\<Union>x<x. F(x). fa(xa) \\<subseteq> x)  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    65
\               --> (\\<exists>! Y. Y \\<in> (\\<Union>x<x. F(x)) & fa(xa) \\<subseteq> Y))";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    66
by (rtac conjI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    67
by (rtac subsetI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    68
by (etac OUN_E 1);
4152
451104c223e2 Ran expandshort, especially to introduce Safe_tac
paulson
parents: 4091
diff changeset
    69
by (dtac ospec 1 THEN (assume_tac 1));
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
    70
by (Fast_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    71
by (dtac lemma4 1 THEN (assume_tac 1));
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    72
by (rtac oallI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    73
by (rtac impI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    74
by (etac disjE 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    75
by (forward_tac [Limit_has_succ RSN (2, ospec)] 1 THEN (REPEAT (assume_tac 1)));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    76
by (dres_inst_tac [("A","a"),("x","xa")] ospec 1 THEN (assume_tac 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    77
by (eresolve_tac [lt_Ord RS le_refl RSN (2, disjI1 RSN (2, impE))] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    78
        THEN (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    79
by (REPEAT (eresolve_tac [ex1E, conjE] 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    80
by (rtac ex1I 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    81
by (rtac conjI 1 THEN (assume_tac 2));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    82
by (eresolve_tac [Limit_has_succ RS OUN_I] 1 THEN (TRYALL assume_tac));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    83
by (REPEAT (eresolve_tac [conjE, OUN_E] 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    84
by (etac lemma3 1 THEN (TRYALL assume_tac));
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    85
by (etac Limit_has_succ 1 THEN (assume_tac 1));
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    86
by (etac bexE 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    87
by (rtac ex1I 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    88
by (etac conjI 1 THEN (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    89
by (REPEAT (eresolve_tac [conjE, OUN_E] 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    90
by (etac lemma3 1 THEN (TRYALL assume_tac));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    91
val lemma5 = result();
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    92
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    93
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    94
(* case of successor ordinal                                              *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    95
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    96
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    97
(*
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    98
  First quite complicated proof of the fact used in the recursive construction
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    99
  of the family T_gamma (WO2 ==> AC16(k #+ m, k)) - the fact that at any stage
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   100
  gamma the set (s - Union(...) - k_gamma) is equipollent to s
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   101
  (Rubin & Rubin page 15).
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   102
*)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   103
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   104
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   105
(* dbl_Diff_eqpoll_Card                                                   *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   106
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   107
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   108
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   109
Goal "[| A eqpoll a; Card(a); ~Finite(a); B lesspoll a;  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   110
\       C lesspoll a |] ==> A - B - C eqpoll a";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   111
by (rtac Diff_lesspoll_eqpoll_Card 1 THEN (REPEAT (assume_tac 1)));
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   112
by (rtac Diff_lesspoll_eqpoll_Card 1 THEN (REPEAT (assume_tac 1)));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   113
qed "dbl_Diff_eqpoll_Card";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   114
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   115
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   116
(* Case of finite ordinals                                                *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   117
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   118
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   119
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4152
diff changeset
   120
Goalw [lesspoll_def]
8123
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   121
        "[| Finite(X); ~Finite(a); Ord(a) |] ==> X lesspoll a";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   122
by (rtac conjI 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   123
by (dresolve_tac [nat_le_infinite_Ord RS le_imp_lepoll] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   124
        THEN (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   125
by (rewtac Finite_def);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   126
by (fast_tac (claset() addSEs [eqpoll_sym RS eqpoll_trans]) 2);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   127
by (rtac lepoll_trans 1 THEN (assume_tac 2));
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   128
by (fast_tac (claset() addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_subset RS 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   129
        subset_imp_lepoll RSN (2, eqpoll_imp_lepoll RS lepoll_trans)]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   130
qed "Finite_lesspoll_infinite_Ord";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   131
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   132
Goal "[| \\<forall>x \\<in> X. x lepoll n & x \\<subseteq> T; well_ord(T, R); X lepoll b;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   133
\       b<a; ~Finite(a); Card(a); n \\<in> nat |]  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   134
\       ==> Union(X) lesspoll a";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   135
by (excluded_middle_tac "Finite(X)" 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   136
by (resolve_tac [Card_is_Ord RSN (3, Finite_lesspoll_infinite_Ord)] 2
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   137
        THEN (REPEAT (assume_tac 3)));
8123
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   138
by (fast_tac (claset() addSEs [lepoll_nat_imp_Finite]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   139
                addSIs [Finite_Union]) 2);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   140
by (dresolve_tac [lt_Ord RSN (2, lepoll_imp_ex_le_eqpoll)] 1 THEN (assume_tac 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   141
by (REPEAT (eresolve_tac [exE, conjE] 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   142
by (forward_tac [eqpoll_imp_lepoll RS lepoll_infinite] 1 THEN (assume_tac 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   143
by (eresolve_tac [eqpoll_sym RS (eqpoll_def RS def_imp_iff RS iffD1) RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   144
                exE] 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   145
by (forward_tac [bij_is_surj RS surj_image_eq] 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   146
by (dresolve_tac [[bij_is_fun, subset_refl] MRS image_fun] 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   147
by (dresolve_tac [sym RS trans] 1 THEN (assume_tac 1));
12536
e9a729259385 replaced lepoll_lesspoll_lesspoll, lesspoll_lepoll_lesspoll
paulson
parents: 11317
diff changeset
   148
by (blast_tac (claset() addIs [lesspoll_trans1, UN_lepoll, lt_Ord, 
e9a729259385 replaced lepoll_lesspoll_lesspoll, lesspoll_lepoll_lesspoll
paulson
parents: 11317
diff changeset
   149
                               lt_trans1 RSN (2, lt_Card_imp_lesspoll)]) 1); 
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   150
qed "Union_lesspoll";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   151
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   152
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   153
(* recfunAC16_lepoll_index                                                *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   154
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   155
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   156
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4152
diff changeset
   157
Goal "A Un {a} = cons(a, A)";
2493
bdeb5024353a Removal of sum_cs and eq_cs
paulson
parents: 2469
diff changeset
   158
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   159
qed "Un_sing_eq_cons";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   160
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   161
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   162
Goal "A lepoll B ==> A Un {a} lepoll succ(B)";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   163
by (asm_simp_tac (simpset() addsimps [Un_sing_eq_cons, succ_def]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   164
by (eresolve_tac [mem_not_refl RSN (2, cons_lepoll_cong)] 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   165
qed "Un_lepoll_succ";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   166
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   167
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   168
Goal "Ord(a) ==> F(a) - (\\<Union>b<succ(a). F(b)) = 0";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   169
by (fast_tac (claset() addSIs [OUN_I, le_refl]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   170
qed "Diff_UN_succ_empty";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   171
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   172
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   173
Goal "Ord(a) ==> F(a) Un X - (\\<Union>b<succ(a). F(b)) \\<subseteq> X";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   174
by (fast_tac (claset() addSIs [OUN_I, le_refl]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   175
qed "Diff_UN_succ_subset";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   176
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   177
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   178
Goal "Ord(x) ==>  \
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   179
\       recfunAC16(f, g, x, a) - (\\<Union>i<x. recfunAC16(f, g, i, a)) lepoll 1";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   180
by (etac Ord_cases 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   181
by (asm_simp_tac (simpset() addsimps [recfunAC16_0,
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   182
				      empty_subsetI RS subset_imp_lepoll]) 1);
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   183
by (asm_simp_tac (simpset() addsimps [recfunAC16_Limit, Diff_cancel, 
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   184
				      empty_subsetI RS subset_imp_lepoll]) 2);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   185
by (asm_simp_tac (simpset() addsimps [recfunAC16_succ]) 1);
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   186
by (rtac conjI 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   187
by (fast_tac (claset() addSIs [empty_subsetI RS subset_imp_lepoll]
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   188
                      addSEs [Diff_UN_succ_empty RS ssubst]) 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   189
by (fast_tac (claset() addSEs [Diff_UN_succ_subset RS subset_imp_lepoll RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   190
        (singleton_eqpoll_1 RS eqpoll_imp_lepoll RSN (2, lepoll_trans))]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   191
qed "recfunAC16_Diff_lepoll_1";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   192
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   193
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   194
Goal "[| z \\<in> F(x); Ord(x) |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   195
\       ==> z \\<in> F(LEAST i. z \\<in> F(i)) - (\\<Union>j<(LEAST i. z \\<in> F(i)). F(j))";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   196
by (fast_tac (claset() addEs [less_LeastE] addSEs [OUN_E, LeastI]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   197
qed "in_Least_Diff";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   198
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   199
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   200
Goal "[| (LEAST i. w \\<in> F(i)) = (LEAST i. z \\<in> F(i));  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   201
\       w \\<in> (\\<Union>i<a. F(i)); z \\<in> (\\<Union>i<a. F(i)) |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   202
\       ==> \\<exists>b<a. w \\<in> (F(b) - (\\<Union>c<b. F(c))) & z \\<in> (F(b) - (\\<Union>c<b. F(c)))";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   203
by (REPEAT (etac OUN_E 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   204
by (dresolve_tac [lt_Ord RSN (2, in_Least_Diff)] 1 THEN (assume_tac 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   205
by (forward_tac [lt_Ord RSN (2, in_Least_Diff)] 1 THEN (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   206
by (rtac oexI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   207
by (rtac conjI 1 THEN (assume_tac 2));
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   208
by (etac subst 1 THEN (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   209
by (eresolve_tac [lt_Ord RSN (2, Least_le) RS lt_trans1] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   210
        THEN (REPEAT (assume_tac 1)));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   211
qed "Least_eq_imp_ex";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   212
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   213
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   214
Goal "[| A lepoll 1; a \\<in> A; b \\<in> A |] ==> a=b";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   215
by (fast_tac (claset() addSDs [lepoll_1_is_sing]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   216
qed "two_in_lepoll_1";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   217
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   218
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   219
Goal "[| \\<forall>i<a. F(i)-(\\<Union>j<i. F(j)) lepoll 1; Limit(a) |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   220
\       ==> (\\<Union>x<a. F(x)) lepoll a";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   221
by (resolve_tac [lepoll_def RS (def_imp_iff RS iffD2)] 1);
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   222
by (res_inst_tac [("x","\\<lambda>z \\<in> (\\<Union>x<a. F(x)). LEAST i. z \\<in> F(i)")] exI 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   223
by (rewtac inj_def);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   224
by (rtac CollectI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   225
by (rtac lam_type 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   226
by (etac OUN_E 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   227
by (etac Least_in_Ord 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   228
by (etac ltD 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   229
by (etac lt_Ord2 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   230
by (rtac ballI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   231
by (rtac ballI 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   232
by (Asm_simp_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   233
by (rtac impI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   234
by (dtac Least_eq_imp_ex 1 THEN (REPEAT (assume_tac 1)));
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   235
by (fast_tac (claset() addSEs [two_in_lepoll_1]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   236
qed "UN_lepoll_index";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   237
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   238
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   239
Goal "Ord(y) ==> recfunAC16(f, fa, y, a) lepoll y";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   240
by (etac trans_induct 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   241
by (etac Ord_cases 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   242
by (asm_simp_tac (simpset() addsimps [recfunAC16_0, lepoll_refl]) 1);
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   243
by (asm_simp_tac (simpset() addsimps [recfunAC16_succ]) 1);
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   244
by (fast_tac (claset() 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   245
        addSDs [succI1 RSN (2, bspec)]
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   246
        addSEs [subset_succI RS subset_imp_lepoll RSN (2, lepoll_trans),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   247
                Un_lepoll_succ]) 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   248
by (asm_simp_tac (simpset() addsimps [recfunAC16_Limit]) 1);
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   249
by (fast_tac (claset() addSEs [lt_Ord RS recfunAC16_Diff_lepoll_1]
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   250
                       addSIs [UN_lepoll_index]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   251
qed "recfunAC16_lepoll_index";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   252
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   253
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   254
Goal "[| recfunAC16(f,g,y,a) \\<subseteq> {X \\<in> Pow(A). X eqpoll n};  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   255
\        A eqpoll a;  y<a;  ~Finite(a);  Card(a);  n \\<in> nat |]  \
9491
1a36151ee2fc natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents: 8123
diff changeset
   256
\     ==> Union(recfunAC16(f,g,y,a)) lesspoll a";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   257
by (eresolve_tac [eqpoll_def RS def_imp_iff RS iffD1 RS exE] 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   258
by (rtac Union_lesspoll 1 THEN (TRYALL assume_tac));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   259
by (eresolve_tac [lt_Ord RS recfunAC16_lepoll_index] 3);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   260
by (eresolve_tac [[bij_is_inj, Card_is_Ord RS well_ord_Memrel] MRS
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   261
		  well_ord_rvimage] 2 
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   262
    THEN (assume_tac 2));
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   263
by (fast_tac (claset() addSEs [eqpoll_imp_lepoll]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   264
qed "Union_recfunAC16_lesspoll";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   265
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   266
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   267
Goal "[| recfunAC16(f, fa, y, a) \\<subseteq> {X \\<in> Pow(A) . X eqpoll succ(k #+ m)};  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   268
\       Card(a); ~ Finite(a); A eqpoll a;  \
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   269
\       k \\<in> nat;  y<a;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   270
\       fa \\<in> bij(a, {Y \\<in> Pow(A). Y eqpoll succ(k)}) |]  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   271
\       ==> A - Union(recfunAC16(f, fa, y, a)) - fa`y eqpoll a";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   272
by (rtac dbl_Diff_eqpoll_Card 1 THEN (TRYALL assume_tac));
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   273
by (rtac Union_recfunAC16_lesspoll 1 THEN (REPEAT (assume_tac 1)));
9491
1a36151ee2fc natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents: 8123
diff changeset
   274
by (Simp_tac 1);
8123
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   275
by (resolve_tac [nat_succI RSN 
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   276
		 (2, bexI RS (Finite_def RS def_imp_iff RS iffD2)) RS 
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   277
		 (Card_is_Ord RSN (3, Finite_lesspoll_infinite_Ord))] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   278
        THEN (TRYALL assume_tac));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   279
by (eresolve_tac [ltD RSN (2, bij_is_fun RS apply_type) RS CollectE] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   280
        THEN (TRYALL assume_tac));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   281
qed "dbl_Diff_eqpoll";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   282
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   283
(* back to the proof *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   284
8123
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   285
val disj_Un_eqpoll_nat_sum = 
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   286
    [disj_Un_eqpoll_sum, sum_eqpoll_cong, nat_sum_eqpoll_sum] MRS 
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   287
    (eqpoll_trans RS eqpoll_trans) |> standard;
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   288
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   289
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   290
Goal "[| x \\<in> Pow(A - B - fa`i); x eqpoll m;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   291
\       fa \\<in> bij(a, {x \\<in> Pow(A) . x eqpoll k}); i<a; k \\<in> nat; m \\<in> nat |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   292
\       ==> fa ` i Un x \\<in> {x \\<in> Pow(A) . x eqpoll k #+ m}";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   293
by (rtac CollectI 1);
8123
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   294
by (fast_tac (claset() 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   295
        addSEs [ltD RSN (2, bij_is_fun RS apply_type RS CollectE)]) 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   296
by (rtac disj_Un_eqpoll_nat_sum 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   297
        THEN (TRYALL assume_tac));
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   298
by (fast_tac (claset() addSIs [equals0I]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   299
by (eresolve_tac [ltD RSN (2, bij_is_fun RS apply_type RS CollectE)] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   300
        THEN (REPEAT (assume_tac 1)));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   301
qed "Un_in_Collect";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   302
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   303
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   304
(* Lemmas simplifying assumptions                                         *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   305
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   306
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   307
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   308
Goal "[| \\<forall>y<succ(j). F(y)<=X & (\\<forall>x<a. x<y | P(x,y)  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   309
\       --> Q(x,y)); succ(j)<a |]  \
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   310
\       ==> F(j)<=X & (\\<forall>x<a. x<j | P(x,j) --> Q(x,j))";
4152
451104c223e2 Ran expandshort, especially to introduce Safe_tac
paulson
parents: 4091
diff changeset
   311
by (dtac ospec 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   312
by (resolve_tac [lt_Ord RS (succI1 RS ltI RS lt_Ord RS le_refl)] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   313
        THEN (REPEAT (assume_tac 1)));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   314
val lemma6 = result();
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   315
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   316
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   317
Goal "[| \\<forall>x<a. x<j | P(x,j) --> Q(x,j);  succ(j)<a |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   318
\     ==> P(j,j) --> (\\<forall>x<a. x le j | P(x,j) --> Q(x,j))";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   319
by (fast_tac (claset() addSEs [leE]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   320
val lemma7 = result();
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   321
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   322
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   323
(* Lemmas needded to prove ex_next_set which means that for any successor *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   324
(* ordinal there is a set satisfying certain properties                   *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   325
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   326
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   327
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   328
Goal "[| A eqpoll a; ~ Finite(a); Ord(a); m \\<in> nat |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   329
\       ==> \\<exists>X \\<in> Pow(A). X eqpoll m";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   330
by (eresolve_tac [Ord_nat RSN (2, ltI) RS 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   331
                (nat_le_infinite_Ord RSN (2, lt_trans2)) RS 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   332
                leI RS le_imp_lepoll RS 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   333
                ((eqpoll_sym RS eqpoll_imp_lepoll) RSN (2, lepoll_trans)) RS 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   334
                lepoll_imp_eqpoll_subset RS exE] 1 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   335
        THEN REPEAT (assume_tac 1));
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   336
by (fast_tac (claset() addSEs [eqpoll_sym]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   337
qed "ex_subset_eqpoll";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   338
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   339
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   340
Goal "[| A \\<subseteq> B Un C; A Int C = 0 |] ==> A \\<subseteq> B";
5265
9d1d4c43c76d Disjointness reasoning by AddEs [equals0E, sym RS equals0E]
paulson
parents: 5241
diff changeset
   341
by (Blast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   342
qed "subset_Un_disjoint";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   343
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   344
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   345
Goal "[| X \\<in> Pow(A - Union(B) -C); T \\<in> B; F \\<subseteq> T |] ==> F Int X = 0";
5265
9d1d4c43c76d Disjointness reasoning by AddEs [equals0E, sym RS equals0E]
paulson
parents: 5241
diff changeset
   346
by (Blast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   347
qed "Int_empty";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   348
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   349
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   350
(* equipollent subset (and finite) is the whole set                       *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   351
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   352
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   353
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   354
Goal "[| A \\<subseteq> B; a \\<in> A; A - {a} = B - {a} |] ==> A = B";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   355
by (fast_tac (claset() addSEs [equalityE]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   356
qed "Diffs_eq_imp_eq";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   357
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   358
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   359
Goal "m \\<in> nat ==> \\<forall>A B. A \\<subseteq> B & m lepoll A & B lepoll m --> A=B";
6070
032babd0120b ZF: the natural numbers as a datatype
paulson
parents: 6068
diff changeset
   360
by (induct_tac "m" 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   361
by (fast_tac (claset() addSDs [lepoll_0_is_0]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   362
by (REPEAT (resolve_tac [allI, impI] 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   363
by (REPEAT (etac conjE 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   364
by (resolve_tac [succ_lepoll_imp_not_empty RS not_emptyE] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   365
        THEN (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   366
by (forward_tac [subsetD RS Diff_sing_lepoll] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   367
        THEN REPEAT (assume_tac 1));
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6070
diff changeset
   368
by (ftac lepoll_Diff_sing 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   369
by (REPEAT (eresolve_tac [allE, impE] 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   370
by (rtac conjI 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   371
by (Fast_tac 2);
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   372
by (Fast_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   373
by (etac Diffs_eq_imp_eq 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   374
        THEN REPEAT (assume_tac 1));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   375
qed "subset_imp_eq_lemma";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   376
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   377
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   378
Goal "[| A \\<subseteq> B; m lepoll A; B lepoll m; m \\<in> nat |] ==> A=B";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   379
by (fast_tac (FOL_cs addSDs [subset_imp_eq_lemma]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   380
qed "subset_imp_eq";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   381
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   382
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   383
Goal "[| f \\<in> bij(a, {Y \\<in> X. Y eqpoll succ(k)}); k \\<in> nat; f`b \\<subseteq> f`y; b<a;  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   384
\       y<a |] ==> b=y";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   385
by (dtac subset_imp_eq 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   386
by (etac nat_succI 3);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   387
by (fast_tac (claset() addSEs [bij_is_fun RS (ltD RSN (2, apply_type)) RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   388
                CollectE, eqpoll_sym RS eqpoll_imp_lepoll]) 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   389
by (fast_tac (claset() addSEs [bij_is_fun RS (ltD RSN (2, apply_type)) RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   390
        CollectE, eqpoll_imp_lepoll]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   391
by (rewrite_goals_tac [bij_def, inj_def]);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   392
by (fast_tac (claset() addSDs [ltD]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   393
qed "bij_imp_arg_eq";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   394
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   395
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   396
Goal "[| recfunAC16(f, fa, y, a) \\<subseteq> {X \\<in> Pow(A) . X eqpoll succ(k #+ m)};  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   397
\       Card(a); ~ Finite(a); A eqpoll a;  \
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   398
\       k \\<in> nat; m \\<in> nat; y<a;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   399
\       fa \\<in> bij(a, {Y \\<in> Pow(A). Y eqpoll succ(k)});  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   400
\       ~ (\\<exists>Y \\<in> recfunAC16(f, fa, y, a). fa`y \\<subseteq> Y) |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   401
\       ==> \\<exists>X \\<in> {Y \\<in> Pow(A). Y eqpoll succ(k #+ m)}. fa`y \\<subseteq> X &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   402
\               (\\<forall>b<a. fa`b \\<subseteq> X -->  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   403
\               (\\<forall>T \\<in> recfunAC16(f, fa, y, a). ~ fa`b \\<subseteq> T))";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   404
by (eresolve_tac [dbl_Diff_eqpoll RS ex_subset_eqpoll RS bexE] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   405
        THEN REPEAT (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   406
by (etac Card_is_Ord 1);
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6070
diff changeset
   407
by (ftac Un_in_Collect 2 THEN REPEAT (assume_tac 2));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   408
by (etac CollectE 4);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   409
by (rtac bexI 4);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   410
by (rtac CollectI 5);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   411
by (assume_tac 5);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   412
by (eresolve_tac [add_succ RS subst] 5);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   413
by (assume_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   414
by (etac nat_succI 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   415
by (assume_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   416
by (rtac conjI 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   417
by (Fast_tac 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   418
by (REPEAT (resolve_tac [ballI, impI, oallI, notI] 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   419
by (dresolve_tac [Int_empty RSN (2, subset_Un_disjoint)] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   420
        THEN REPEAT (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   421
by (dtac bij_imp_arg_eq 1 THEN REPEAT (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   422
by (hyp_subst_tac 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   423
by (eresolve_tac [bexI RSN (2, notE)] 1 THEN TRYALL assume_tac);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   424
qed "ex_next_set";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   425
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   426
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   427
(* Lemma ex_next_Ord states that for any successor                        *)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   428
(* ordinal there is a number of the set satisfying certain properties     *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   429
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   430
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   431
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   432
Goal "[| recfunAC16(f, fa, y, a) \\<subseteq> {X \\<in> Pow(A) . X eqpoll succ(k #+ m)};  \
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   433
\       Card(a); ~ Finite(a); A eqpoll a;  \
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   434
\       k \\<in> nat; m \\<in> nat; y<a;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   435
\       fa \\<in> bij(a, {Y \\<in> Pow(A). Y eqpoll succ(k)});  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   436
\       f \\<in> bij(a, {Y \\<in> Pow(A). Y eqpoll succ(k #+ m)});  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   437
\       ~ (\\<exists>Y \\<in> recfunAC16(f, fa, y, a). fa`y \\<subseteq> Y) |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   438
\       ==> \\<exists>c<a. fa`y \\<subseteq> f`c &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   439
\               (\\<forall>b<a. fa`b \\<subseteq> f`c -->  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   440
\               (\\<forall>T \\<in> recfunAC16(f, fa, y, a). ~ fa`b \\<subseteq> T))";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   441
by (dtac ex_next_set 1 THEN REPEAT (assume_tac 1));
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   442
by (etac bexE 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   443
by (resolve_tac [bij_converse_bij RS bij_is_fun RS apply_type RS ltI RSN
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   444
        (2, oexI)] 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   445
by (resolve_tac [right_inverse_bij RS ssubst] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   446
        THEN REPEAT (ares_tac [Card_is_Ord] 1));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   447
qed "ex_next_Ord";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   448
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   449
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   450
Goal "[| \\<exists>! Y. Y \\<in> Z & P(Y); ~P(W) |] ==> \\<exists>! Y. Y \\<in> (Z Un {W}) & P(Y)";
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   451
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   452
qed "ex1_in_Un_sing";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   453
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   454
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   455
(* Lemma simplifying assumptions                                          *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   456
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   457
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   458
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   459
Goal "[| \\<forall>x<a. x<j | (\\<exists>xa \\<in> F(j). P(x, xa))  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   460
\       --> (\\<exists>! Y. Y \\<in> F(j) & P(x, Y)); F(j) \\<subseteq> X;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   461
\       L \\<in> X; P(j, L) & (\\<forall>x<a. P(x, L) --> (\\<forall>xa \\<in> F(j). ~P(x, xa))) |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   462
\       ==> F(j) Un {L} \\<subseteq> X &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   463
\       (\\<forall>x<a. x le j | (\\<exists>xa \\<in> (F(j) Un {L}). P(x, xa)) -->  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   464
\               (\\<exists>! Y. Y \\<in> (F(j) Un {L}) & P(x, Y)))";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   465
by (rtac conjI 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   466
by (fast_tac (claset() addSIs [singleton_subsetI]) 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   467
by (rtac oallI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   468
by (etac oallE 1 THEN (contr_tac 2));
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   469
by (blast_tac (claset() addSEs [leE]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   470
val lemma8 = result();
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   471
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   472
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   473
(* The main part of the proof: inductive proof of the property of T_gamma *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   474
(* lemma main_induct                                                      *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   475
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   476
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   477
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   478
Goal "[| b < a; f \\<in> bij(a, {Y \\<in> Pow(A) . Y eqpoll succ(k #+ m)});  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   479
\       fa \\<in> bij(a, {Y \\<in> Pow(A) . Y eqpoll succ(k)});  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   480
\       ~Finite(a); Card(a); A eqpoll a; k \\<in> nat; m \\<in> nat |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   481
\       ==> recfunAC16(f, fa, b, a) \\<subseteq> {X \\<in> Pow(A) . X eqpoll succ(k #+ m)} &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   482
\       (\\<forall>x<a. x < b | (\\<exists>Y \\<in> recfunAC16(f, fa, b, a). fa ` x \\<subseteq> Y) -->  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   483
\       (\\<exists>! Y. Y \\<in> recfunAC16(f, fa, b, a) & fa ` x \\<subseteq> Y))";
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   484
by (etac lt_induct 1);
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6070
diff changeset
   485
by (ftac lt_Ord 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   486
by (etac Ord_cases 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   487
(* case 0 *)
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   488
by (asm_simp_tac (simpset() addsimps [recfunAC16_0]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   489
(* case Limit *)
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   490
by (asm_simp_tac (simpset() addsimps [recfunAC16_Limit]) 2);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   491
by (rtac lemma5 2 THEN (REPEAT (assume_tac 2)));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   492
by (fast_tac (FOL_cs addSEs [recfunAC16_mono]) 2);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   493
(* case succ *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   494
by (hyp_subst_tac 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   495
by (eresolve_tac [lemma6 RS conjE] 1 THEN (assume_tac 1));
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   496
by (asm_simp_tac (simpset() delsplits [split_if]
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   497
			    addsimps [recfunAC16_succ]) 1);
5116
8eb343ab5748 Renamed expand_if to split_if and setloop split_tac to addsplits,
paulson
parents: 5068
diff changeset
   498
by (resolve_tac [conjI RS (split_if RS iffD2)] 1);
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   499
by (Asm_simp_tac 1);
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   500
by (etac lemma7 1 THEN  assume_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   501
by (rtac impI 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   502
by (resolve_tac [ex_next_Ord RS oexE] 1 
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   503
    THEN REPEAT (ares_tac [le_refl RS lt_trans] 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   504
by (etac lemma8 1 THEN (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   505
by (resolve_tac [bij_is_fun RS apply_type] 1 THEN (assume_tac 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   506
by (eresolve_tac [Least_le RS lt_trans2 RS ltD] 1 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   507
        THEN REPEAT (ares_tac [lt_Ord, succ_leI] 1));
6068
2d8f3e1f1151 if-then-else syntax for ZF
paulson
parents: 5315
diff changeset
   508
by (rtac (lt_Ord RSN (2, LeastI)) 1 THEN REPEAT (assume_tac 1));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   509
qed "main_induct";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   510
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   511
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   512
(* Lemma to simplify the inductive proof                                  *)
1200
d4551b1a6da7 Many small changes to make proofs run faster
lcp
parents: 1196
diff changeset
   513
(*   - the desired property is a consequence of the inductive assumption  *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   514
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   515
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   516
val [prem1, prem2, prem3, prem4] = goal thy
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   517
        "[| (!!b. b<a ==> F(b) \\<subseteq> S & (\\<forall>x<a. (x<b | (\\<exists>Y \\<in> F(b). f`x \\<subseteq> Y)) \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   518
\       --> (\\<exists>! Y. Y \\<in> F(b) & f`x \\<subseteq> Y)));  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   519
\       f \\<in> a->f``(a); Limit(a); (!!i j. i le j ==> F(i) \\<subseteq> F(j)) |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   520
\       ==> (\\<Union>j<a. F(j)) \\<subseteq> S &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   521
\       (\\<forall>x \\<in> f``a. \\<exists>! Y. Y \\<in> (\\<Union>j<a. F(j)) & x \\<subseteq> Y)";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   522
by (rtac conjI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   523
by (rtac subsetI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   524
by (etac OUN_E 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   525
by (dtac prem1 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   526
by (Fast_tac 1);
2493
bdeb5024353a Removal of sum_cs and eq_cs
paulson
parents: 2469
diff changeset
   527
(** LEVEL 5 **)
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   528
by (rtac ballI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   529
by (etac imageE 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   530
by (dresolve_tac [prem3 RS Limit_is_Ord RSN (2, ltI) RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   531
        (prem3 RS Limit_has_succ)] 1);
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6070
diff changeset
   532
by (ftac prem1 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   533
by (etac conjE 1);
2493
bdeb5024353a Removal of sum_cs and eq_cs
paulson
parents: 2469
diff changeset
   534
(** LEVEL 10 **)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   535
by (dresolve_tac [leI RS succ_leE RSN (2, ospec)] 1 THEN (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   536
by (etac impE 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   537
by (fast_tac (claset() addSEs [leI RS succ_leE RS lt_Ord RS le_refl]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   538
by (dresolve_tac [prem2 RSN (2, apply_equality)] 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   539
by (REPEAT (eresolve_tac [conjE, ex1E] 1));
2493
bdeb5024353a Removal of sum_cs and eq_cs
paulson
parents: 2469
diff changeset
   540
(** LEVEL 15 **)
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   541
by (rtac ex1I 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3731
diff changeset
   542
by (fast_tac (claset() addSIs [OUN_I]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   543
by (REPEAT (eresolve_tac [conjE, OUN_E] 1));
6068
2d8f3e1f1151 if-then-else syntax for ZF
paulson
parents: 5315
diff changeset
   544
by (eresolve_tac [lt_Ord RSN (2, lt_Ord RS Ord_linear_le)] 1 
2d8f3e1f1151 if-then-else syntax for ZF
paulson
parents: 5315
diff changeset
   545
    THEN assume_tac 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   546
by (dresolve_tac [prem4 RS subsetD] 2 THEN (assume_tac 2));
2493
bdeb5024353a Removal of sum_cs and eq_cs
paulson
parents: 2469
diff changeset
   547
(** LEVEL 20 **)
bdeb5024353a Removal of sum_cs and eq_cs
paulson
parents: 2469
diff changeset
   548
by (fast_tac FOL_cs 2);
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6070
diff changeset
   549
by (ftac prem1 1);
23e090051cb8 isatool expandshort;
wenzelm
parents: 6070
diff changeset
   550
by (ftac succ_leE 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   551
by (dresolve_tac [prem4 RS subsetD] 1 THEN (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   552
by (etac conjE 1);
2493
bdeb5024353a Removal of sum_cs and eq_cs
paulson
parents: 2469
diff changeset
   553
(** LEVEL 25 **)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   554
by (dresolve_tac [lt_trans RSN (2, ospec)] 1 THEN (TRYALL assume_tac));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   555
by (dresolve_tac [disjI1 RSN (2, mp)] 1 THEN (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   556
by (etac ex1_two_eq 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1932
diff changeset
   557
by (REPEAT (Fast_tac 1));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 2845
diff changeset
   558
qed "lemma_simp_induct";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   559
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   560
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   561
(* The target theorem                                                     *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   562
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   563
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   564
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   565
Goalw [AC16_def] "[| WO2; 0<m; k \\<in> nat; m \\<in> nat |] ==> AC16(k #+ m,k)";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   566
by (rtac allI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   567
by (rtac impI 1);
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6070
diff changeset
   568
by (ftac WO2_infinite_subsets_eqpoll_X 1 
2493
bdeb5024353a Removal of sum_cs and eq_cs
paulson
parents: 2469
diff changeset
   569
    THEN (REPEAT (assume_tac 1)));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   570
by (forw_inst_tac [("n","k #+ m")] (WO2_infinite_subsets_eqpoll_X) 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   571
        THEN (REPEAT (ares_tac [add_type] 1)));
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6070
diff changeset
   572
by (ftac WO2_imp_ex_Card 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   573
by (REPEAT (eresolve_tac [exE,conjE] 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   574
by (dresolve_tac [eqpoll_trans RS eqpoll_sym RS (eqpoll_def RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   575
        def_imp_iff RS iffD1)] 1 THEN (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   576
by (dresolve_tac [eqpoll_trans RS eqpoll_sym RS (eqpoll_def RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   577
        def_imp_iff RS iffD1)] 1 THEN (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   578
by (REPEAT (etac exE 1));
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   579
by (res_inst_tac [("x","\\<Union>j<a. recfunAC16(fa,f,j,a)")] exI 1);
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   580
by (res_inst_tac [("P","%z. ?Y & (\\<forall>x \\<in> z. ?Z(x))")] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   581
        (bij_is_surj RS surj_image_eq RS subst) 1
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   582
        THEN (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   583
by (rtac lemma_simp_induct 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   584
by (eresolve_tac [bij_is_fun RS surj_image RS surj_is_fun] 2);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   585
by (eresolve_tac [eqpoll_imp_lepoll RS lepoll_infinite RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   586
        infinite_Card_is_InfCard RS InfCard_is_Limit] 2 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   587
        THEN REPEAT (assume_tac 2));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   588
by (etac recfunAC16_mono 2);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   589
by (rtac main_induct 1 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   590
        THEN REPEAT (ares_tac [eqpoll_imp_lepoll RS lepoll_infinite] 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   591
qed "WO2_AC16";