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