src/ZF/AC/AC16_WO4.ML
author paulson
Tue, 26 Jun 2001 16:54:39 +0200
changeset 11380 e76366922751
parent 11317 7f9e4c389318
child 12536 e9a729259385
permissions -rw-r--r--
tidying and consolidating files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
     1
(*  Title:      ZF/AC/AC16_WO4.ML
1200
d4551b1a6da7 Many small changes to make proofs run faster
lcp
parents: 1196
diff changeset
     2
    ID:         $Id$
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
     3
    Author:     Krzysztof Grabczewski
1200
d4551b1a6da7 Many small changes to make proofs run faster
lcp
parents: 1196
diff changeset
     4
d4551b1a6da7 Many small changes to make proofs run faster
lcp
parents: 1196
diff changeset
     5
  The proof of AC16(n, k) ==> WO4(n-k)
d4551b1a6da7 Many small changes to make proofs run faster
lcp
parents: 1196
diff changeset
     6
*)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
     7
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
     8
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
     9
(* The case of finite set                                                 *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    10
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    11
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    12
Goalw [Finite_def] "[| Finite(A); 0<m; m \\<in> nat |] ==>  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    13
\       \\<exists>a f. Ord(a) & domain(f) = a &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    14
\               (\\<Union>b<a. f`b) = A & (\\<forall>b<a. f`b lepoll m)";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    15
by (etac bexE 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    16
by (dresolve_tac [eqpoll_sym RS (eqpoll_def RS def_imp_iff RS iffD1)] 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
    17
by (etac exE 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    18
by (res_inst_tac [("x","n")] exI 1);
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    19
by (res_inst_tac [("x","\\<lambda>i \\<in> n. {f`i}")] exI 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
    20
by (Asm_full_simp_tac 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    21
by (rewrite_goals_tac [bij_def, surj_def]);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
    22
by (fast_tac (claset() addSIs [ltI, nat_into_Ord, lam_funtype RS domain_of_fun,
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    23
        equalityI, singleton_eqpoll_1 RS eqpoll_imp_lepoll RS lepoll_trans,
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    24
        nat_1_lepoll_iff RS iffD2]
1932
cc9f1ba8f29a Tidying: removing redundant args in classical reasoner calls
paulson
parents: 1924
diff changeset
    25
        addSEs [apply_type, ltE]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    26
val lemma1 = result();
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    27
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    28
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    29
(* The case of infinite set                                               *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    30
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    31
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    32
(* well_ord(x,r) ==> well_ord({{y,z}. y \\<in> x}, Something(x,z))  **)
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
    33
bind_thm ("well_ord_paired", (paired_bij RS bij_is_inj RS well_ord_rvimage));
1196
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
Goal "[| A lepoll B; ~ A lepoll C |] ==> ~ B lepoll C";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
    36
by (fast_tac (claset() addEs [notE, lepoll_trans]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
    37
qed "lepoll_trans1";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    38
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    39
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    40
(* There exists a well ordered set y such that ...                        *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    41
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    42
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    43
val lepoll_paired = paired_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll;
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    44
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    45
Goal "\\<exists>y R. well_ord(y,R) & x Int y = 0 & ~y lepoll z & ~Finite(y)";
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    46
by (res_inst_tac [("x","{{a,x}. a \\<in> nat Un Hartog(z)}")] exI 1);
8123
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
    47
by (resolve_tac [transfer thy Ord_nat RS well_ord_Memrel RS
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
    48
		 (Ord_Hartog RS
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
    49
		  well_ord_Memrel RSN (2, well_ord_Un)) RS exE] 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    50
by (fast_tac 
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    51
    (claset() addSIs [Ord_Hartog, well_ord_Memrel, well_ord_paired,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    52
		      HartogI RSN (2, lepoll_trans1),
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    53
		 subset_imp_lepoll RS (lepoll_paired RSN (2, lepoll_trans))]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    54
              addSEs [nat_not_Finite RS notE] addEs [mem_asym]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    55
	      addSDs [Un_upper1 RS subset_imp_lepoll RS lepoll_Finite,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    56
		      lepoll_paired RS lepoll_Finite]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    57
val lemma2 = result();
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    58
8123
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
    59
Goal "~Finite(B) ==> ~Finite(A Un B)";
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
    60
by (blast_tac (claset() addIs [subset_Finite]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
    61
qed "infinite_Un";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    62
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    63
(* ********************************************************************** *)
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    64
(* There is a v \\<in> s(u) such that k lepoll x Int y (in our case succ(k))    *)
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    65
(* The idea of the proof is the following \\<in>                               *)
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
    66
(* Suppose not, i.e. every element of s(u) has exactly k-1 elements of y   *)
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    67
(* Thence y is less than or equipollent to {v \\<in> Pow(x). v eqpoll n#-k}      *)
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    68
(*   We have obtained this result in two steps \\<in>                          *)
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    69
(*   1. y is less than or equipollent to {v \\<in> s(u). a \\<subseteq> v}                  *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    70
(*      where a is certain k-2 element subset of y                        *)
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    71
(*   2. {v \\<in> s(u). a \\<subseteq> v} is less than or equipollent                       *)
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    72
(*      to {v \\<in> Pow(x). v eqpoll n-k}                                       *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    73
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    74
1710
f50ec5b35937 Simplified KG's proofs
paulson
parents: 1461
diff changeset
    75
(*Proof simplified by LCP*)
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    76
Goal "[| ~(\\<exists>x \\<in> A. f`x=y); f \\<in> inj(A, B); y \\<in> B |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    77
\     ==> (\\<lambda>a \\<in> succ(A). if(a=A, y, f`a)) \\<in> inj(succ(A), B)";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    78
by (res_inst_tac [("d","%z. if(z=y, A, converse(f)`z)")] lam_injective 1);
6176
707b6f9859d2 tidied, with left_inverse & right_inverse as default simprules
paulson
parents: 6112
diff changeset
    79
by (auto_tac (claset(), simpset() addsimps [inj_is_fun RS apply_type]));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
    80
qed "succ_not_lepoll_lemma";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    81
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4091
diff changeset
    82
Goalw [lepoll_def, eqpoll_def, bij_def, surj_def]
5147
825877190618 More tidying and removal of "\!\!... from Goal commands
paulson
parents: 5137
diff changeset
    83
        "[| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
    84
by (fast_tac (claset() addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
    85
qed "succ_not_lepoll_imp_eqpoll";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    86
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
    87
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    88
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    89
(* There is a k-2 element subset of y                                     *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    90
(* ********************************************************************** *)
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
val ordertype_eqpoll =
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
    93
        ordermap_bij RS (exI RS (eqpoll_def RS def_imp_iff RS iffD2));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    94
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
    95
Goal "[| a \\<subseteq> y; b \\<in> y-a; u \\<in> x |] ==> cons(b, cons(u, a)) \\<in> Pow(x Un y)";
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
    96
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
    97
qed "cons_cons_subset";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
    98
11380
e76366922751 tidying and consolidating files
paulson
parents: 11317
diff changeset
    99
Goal "[| a eqpoll k; a \\<subseteq> y; b \\<in> y-a; u \\<in> x; x Int y = 0 |]   \
e76366922751 tidying and consolidating files
paulson
parents: 11317
diff changeset
   100
\     ==> cons(b, cons(u, a)) eqpoll succ(succ(k))";
5265
9d1d4c43c76d Disjointness reasoning by AddEs [equals0E, sym RS equals0E]
paulson
parents: 5241
diff changeset
   101
by (fast_tac (claset() addSIs [cons_eqpoll_succ]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   102
qed "cons_cons_eqpoll";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   103
11380
e76366922751 tidying and consolidating files
paulson
parents: 11317
diff changeset
   104
Goal "[| succ(k) eqpoll A; k eqpoll B; B \\<subseteq> A; a \\<in> A-B; k \\<in> nat |]   \
e76366922751 tidying and consolidating files
paulson
parents: 11317
diff changeset
   105
\     ==> A = cons(a, B)";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   106
by (rtac equalityI 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   107
by (Fast_tac 2);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   108
by (resolve_tac [Diff_eq_0_iff RS iffD1] 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   109
by (rtac equals0I 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   110
by (dresolve_tac [eqpoll_sym RS eqpoll_imp_lepoll] 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   111
by (dresolve_tac [eqpoll_sym RS cons_eqpoll_succ] 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   112
by (Fast_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   113
by (dtac cons_eqpoll_succ 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   114
by (Fast_tac 1);
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   115
by (fast_tac 
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   116
    (claset() 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   117
        addSEs [[eqpoll_sym RS eqpoll_imp_lepoll, subset_imp_lepoll] MRS
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   118
        (lepoll_trans RS lepoll_trans) RS succ_lepoll_natE]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   119
qed "set_eq_cons";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   120
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   121
Goal "[| cons(x,a) = cons(y,a); x\\<notin> a |] ==> x = y ";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   122
by (fast_tac (claset() addSEs [equalityE]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   123
qed "cons_eqE";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   124
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   125
Goal "A = B ==> A Int C = B Int C";
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   126
by (Asm_simp_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   127
qed "eq_imp_Int_eq";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   128
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   129
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   130
(* some arithmetic                                                        *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   131
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   132
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   133
Goal "[| k \\<in> nat; m \\<in> nat |] ==>  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   134
\       \\<forall>A B. A eqpoll k #+ m & k lepoll B & B \\<subseteq> A --> A-B lepoll m";
6070
032babd0120b ZF: the natural numbers as a datatype
paulson
parents: 6021
diff changeset
   135
by (induct_tac "k" 1);
9491
1a36151ee2fc natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents: 8123
diff changeset
   136
by (asm_simp_tac (simpset() addsimps [add_0]) 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   137
by (fast_tac (claset() addIs [eqpoll_imp_lepoll RS
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   138
        (Diff_subset RS subset_imp_lepoll RS lepoll_trans)]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   139
by (REPEAT (resolve_tac [allI,impI] 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   140
by (resolve_tac [succ_lepoll_imp_not_empty RS not_emptyE] 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   141
by (Fast_tac 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   142
by (eres_inst_tac [("x","A - {xa}")] allE 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   143
by (eres_inst_tac [("x","B - {xa}")] allE 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   144
by (etac impE 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   145
by (asm_full_simp_tac (simpset() addsimps [add_succ]) 1);
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   146
by (fast_tac (claset() addSIs [Diff_sing_eqpoll, lepoll_Diff_sing]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   147
by (res_inst_tac [("P","%z. z lepoll m")] subst 1 THEN (assume_tac 2));
2496
40efb87985b5 Removal of needless "addIs [equality]", etc.
paulson
parents: 2483
diff changeset
   148
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   149
qed "eqpoll_sum_imp_Diff_lepoll_lemma";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   150
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   151
Goal "[| A eqpoll succ(k #+ m); B \\<subseteq> A; succ(k) lepoll B;  k \\<in> nat; m \\<in> nat |]  \
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   152
\     ==> A-B lepoll m";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   153
by (dresolve_tac [add_succ RS ssubst] 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   154
by (dresolve_tac [nat_succI RS eqpoll_sum_imp_Diff_lepoll_lemma] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   155
        THEN (REPEAT (assume_tac 1)));
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   156
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   157
qed "eqpoll_sum_imp_Diff_lepoll";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   158
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   159
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   160
(* similar properties for eqpoll                                          *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   161
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   162
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   163
Goal "[| k \\<in> nat; m \\<in> nat |] ==>  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   164
\       \\<forall>A B. A eqpoll k #+ m & k eqpoll B & B \\<subseteq> A --> A-B eqpoll m";
6070
032babd0120b ZF: the natural numbers as a datatype
paulson
parents: 6021
diff changeset
   165
by (induct_tac "k" 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   166
by (fast_tac (claset() addSDs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_0_is_0]
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   167
        addss (simpset() addsimps [add_0])) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   168
by (REPEAT (resolve_tac [allI,impI] 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   169
by (resolve_tac [succ_lepoll_imp_not_empty RS not_emptyE] 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   170
by (fast_tac (claset() addSEs [eqpoll_imp_lepoll]) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   171
by (eres_inst_tac [("x","A - {xa}")] allE 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   172
by (eres_inst_tac [("x","B - {xa}")] allE 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   173
by (etac impE 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   174
by (fast_tac (claset() addSIs [Diff_sing_eqpoll,
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   175
        eqpoll_sym RSN (2, Diff_sing_eqpoll) RS eqpoll_sym]
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   176
        addss (simpset() addsimps [add_succ])) 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   177
by (res_inst_tac [("P","%z. z eqpoll m")] subst 1 THEN (assume_tac 2));
2496
40efb87985b5 Removal of needless "addIs [equality]", etc.
paulson
parents: 2483
diff changeset
   178
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   179
qed "eqpoll_sum_imp_Diff_eqpoll_lemma";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   180
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   181
Goal "[| A eqpoll succ(k #+ m); B \\<subseteq> A; succ(k) eqpoll B; k \\<in> nat; m \\<in> nat |]  \
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   182
\     ==> A-B eqpoll m";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   183
by (dresolve_tac [add_succ RS ssubst] 1);
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   184
by (dresolve_tac [nat_succI RS eqpoll_sum_imp_Diff_eqpoll_lemma] 1
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   185
        THEN (REPEAT (assume_tac 1)));
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   186
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   187
qed "eqpoll_sum_imp_Diff_eqpoll";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   188
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   189
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   190
(* ********************************************************************** *)
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   191
(* LL can be well ordered                                                 *)
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   192
(* ********************************************************************** *)
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   193
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   194
Goal "{x \\<in> Pow(X). x lepoll 0} = {0}";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   195
by (fast_tac (claset() addSDs [lepoll_0_is_0] addSIs [lepoll_refl]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   196
qed "subsets_lepoll_0_eq_unit";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   197
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   198
Goal "n \\<in> nat ==> {z \\<in> Pow(y). z lepoll succ(n)} =  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   199
\               {z \\<in> Pow(y). z lepoll n} Un {z \\<in> Pow(y). z eqpoll succ(n)}";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   200
by (fast_tac (claset() addIs [le_refl, leI, le_imp_lepoll]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   201
                addSDs [lepoll_succ_disj]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   202
                addSEs [nat_into_Ord, lepoll_trans, eqpoll_imp_lepoll]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   203
qed "subsets_lepoll_succ";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   204
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   205
Goal "n \\<in> nat ==> {z \\<in> Pow(y). z lepoll n} Int {z \\<in> Pow(y). z eqpoll succ(n)} = 0";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   206
by (fast_tac (claset() addSEs [eqpoll_sym RS eqpoll_imp_lepoll 
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   207
                RS lepoll_trans RS succ_lepoll_natE]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   208
                addSIs [equals0I]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   209
qed "Int_empty";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   210
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   211
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   212
Open_locale "AC16"; 
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   213
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   214
val all_ex = thm "all_ex";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   215
val disjoint = thm "disjoint";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   216
val includes = thm "includes";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   217
val WO_R = thm "WO_R";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   218
val k_def = thm "k_def";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   219
val lnat = thm "lnat";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   220
val mnat = thm "mnat";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   221
val mpos = thm "mpos";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   222
val Infinite = thm "Infinite";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   223
val noLepoll = thm "noLepoll";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   224
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   225
val LL_def = thm "LL_def";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   226
val MM_def = thm "MM_def";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   227
val GG_def = thm "GG_def";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   228
val s_def = thm "s_def";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   229
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   230
Addsimps [disjoint, WO_R, lnat, mnat, mpos, Infinite];
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   231
AddSIs [disjoint, WO_R, lnat, mnat, mpos];
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   232
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   233
Goalw [k_def] "k \\<in> nat";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   234
by Auto_tac;
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   235
qed "knat";
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   236
Addsimps [knat];  AddSIs [knat];
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   237
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   238
AddSIs [Infinite];   (*if notI is removed!*)
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   239
AddSEs [Infinite RS notE];
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   240
5470
855654b691db eliminated equals0E
paulson
parents: 5314
diff changeset
   241
AddEs [[disjoint, IntI] MRS (equals0D RS notE)];
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   242
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   243
(*use k = succ(l) *)
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   244
val includes_l = simplify (FOL_ss addsimps [k_def]) includes;
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   245
val all_ex_l = simplify (FOL_ss addsimps [k_def]) all_ex;
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   246
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   247
(* ********************************************************************** *)
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   248
(*   1. y is less than or equipollent to {v \\<in> s(u). a \\<subseteq> v}                  *)
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   249
(*      where a is certain k-2 element subset of y                        *)
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   250
(* ********************************************************************** *)
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   251
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   252
Goal "[| l eqpoll a; a \\<subseteq> y |] ==> y - a eqpoll y";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   253
by (cut_facts_tac [WO_R, Infinite, lnat] 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   254
by (fast_tac (empty_cs addIs [lepoll_lesspoll_lesspoll]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   255
        addSIs [Card_cardinal, Diff_lesspoll_eqpoll_Card RS eqpoll_trans,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   256
                Card_cardinal RS Card_is_Ord RS nat_le_infinite_Ord
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   257
                RS le_imp_lepoll]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   258
        addSEs [well_ord_cardinal_eqpoll,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   259
                well_ord_cardinal_eqpoll RS eqpoll_sym,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   260
                eqpoll_sym RS eqpoll_imp_lepoll,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   261
                n_lesspoll_nat RS lesspoll_lepoll_lesspoll,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   262
                well_ord_cardinal_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   263
                RS lepoll_infinite]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   264
qed "Diff_Finite_eqpoll";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   265
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   266
Goalw [s_def] "s(u) \\<subseteq> t_n";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   267
by (Fast_tac 1);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   268
qed "s_subset";
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   269
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   270
Goalw [s_def, succ_def, k_def]
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   271
      "[| w \\<in> t_n; cons(b,cons(u,a)) \\<subseteq> w; a \\<subseteq> y; b \\<in> y-a; l eqpoll a  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   272
\      |] ==> w \\<in> s(u)";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   273
by (fast_tac (claset() addDs [eqpoll_imp_lepoll RS cons_lepoll_cong]
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   274
                addSEs [subset_imp_lepoll RSN (2, lepoll_trans)]) 1);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   275
qed "sI";
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   276
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   277
Goalw [s_def] "v \\<in> s(u) ==> u \\<in> v";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   278
by (Fast_tac 1);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   279
qed "in_s_imp_u_in";
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   280
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   281
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   282
Goal "[| l eqpoll a;  a \\<subseteq> y;  b \\<in> y - a;  u \\<in> x |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   283
\     ==> \\<exists>! c. c \\<in> s(u) & a \\<subseteq> c & b \\<in> c";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   284
by (rtac (all_ex_l RS ballE) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   285
by (blast_tac (claset() delrules [PowI]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   286
		        addSIs [cons_cons_subset,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   287
				eqpoll_sym RS cons_cons_eqpoll]) 2);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   288
by (etac ex1E 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   289
by (res_inst_tac [("a","w")] ex1I 1);
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   290
by (blast_tac (claset() addIs [sI]) 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   291
by (etac allE 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   292
by (etac impE 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   293
by (assume_tac 2);
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   294
by (fast_tac (claset() addSEs [s_subset RS subsetD, in_s_imp_u_in]) 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   295
qed "ex1_superset_a";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   296
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   297
Goal "[| \\<forall>v \\<in> s(u). succ(l) eqpoll v Int y;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   298
\        l eqpoll a;  a \\<subseteq> y;  b \\<in> y - a;  u \\<in> x |]   \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   299
\     ==> (THE c. c \\<in> s(u) & a \\<subseteq> c & b \\<in> c)  \
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   300
\              Int y = cons(b, a)";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   301
by (forward_tac [ex1_superset_a RS theI] 1 THEN REPEAT (assume_tac 1));
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   302
by (rtac set_eq_cons 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   303
by (REPEAT (Fast_tac 1));
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   304
qed "the_eq_cons";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   305
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   306
Goal "[| \\<forall>v \\<in> s(u). succ(l) eqpoll v Int y;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   307
\        l eqpoll a;  a \\<subseteq> y;  u \\<in> x |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   308
\     ==> y lepoll {v \\<in> s(u). a \\<subseteq> v}";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   309
by (resolve_tac [Diff_Finite_eqpoll RS eqpoll_sym RS 
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   310
		 eqpoll_imp_lepoll RS lepoll_trans] 1
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   311
    THEN REPEAT (Fast_tac 1));
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   312
by (res_inst_tac 
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   313
     [("f3", "\\<lambda>b \\<in> y-a. THE c. c \\<in> s(u) & a \\<subseteq> c & b \\<in> c")]
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   314
     (exI RS (lepoll_def RS def_imp_iff RS iffD2)) 1);
6112
5e4871c5136b datatype package improvements
paulson
parents: 6070
diff changeset
   315
by (simp_tac (simpset() addsimps [inj_def]) 1);
5e4871c5136b datatype package improvements
paulson
parents: 6070
diff changeset
   316
by (rtac conjI 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   317
by (rtac lam_type 1);
6112
5e4871c5136b datatype package improvements
paulson
parents: 6070
diff changeset
   318
by (forward_tac [ex1_superset_a RS theI] 1 THEN REPEAT (Fast_tac 1));
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   319
by (Asm_simp_tac 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   320
by (Clarify_tac 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   321
by (rtac cons_eqE 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   322
by (Fast_tac 2);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   323
by (dres_inst_tac [("A","THE c. ?P(c)"), ("C","y")] eq_imp_Int_eq 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   324
by (asm_full_simp_tac (simpset() addsimps [the_eq_cons]) 1);
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   325
qed "y_lepoll_subset_s";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   326
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   327
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   328
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   329
(* back to the second part                                                *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   330
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   331
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   332
Goal "w \\<subseteq> x Un y ==> w Int (x - {u}) = w - cons(u, w Int y)";
5265
9d1d4c43c76d Disjointness reasoning by AddEs [equals0E, sym RS equals0E]
paulson
parents: 5241
diff changeset
   333
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   334
qed "w_Int_eq_w_Diff";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   335
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   336
Goal "[| w \\<in> {v \\<in> s(u). a \\<subseteq> v};  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   337
\        l eqpoll a;  u \\<in> x;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   338
\        \\<forall>v \\<in> s(u). succ(l) eqpoll v Int y  \
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   339
\     |] ==> w Int (x - {u}) eqpoll m";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   340
by (etac CollectE 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   341
by (stac w_Int_eq_w_Diff 1);
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   342
by (fast_tac (claset() addSDs [s_subset RS subsetD,
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   343
			       includes_l RS subsetD]) 1);
5265
9d1d4c43c76d Disjointness reasoning by AddEs [equals0E, sym RS equals0E]
paulson
parents: 5241
diff changeset
   344
by (fast_tac (claset() addSDs [bspec]
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   345
        addDs [s_subset RS subsetD, includes_l RS subsetD]
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   346
        addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_imp_u_in]
5137
60205b0de9b9 Huge tidy-up: removal of leading \!\!
paulson
parents: 5116
diff changeset
   347
        addSIs [eqpoll_sum_imp_Diff_eqpoll]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   348
qed "w_Int_eqpoll_m";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   349
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   350
(* ********************************************************************** *)
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   351
(*   2. {v \\<in> s(u). a \\<subseteq> v} is less than or equipollent                       *)
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   352
(*      to {v \\<in> Pow(x). v eqpoll n-k}                                       *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   353
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   354
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   355
Goal "x eqpoll m ==> x \\<noteq> 0";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   356
by (cut_facts_tac [mpos] 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   357
by (fast_tac (claset() addSEs [zero_lt_natE]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   358
		       addSDs [eqpoll_succ_imp_not_empty]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   359
qed "eqpoll_m_not_empty";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   360
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   361
Goal "[| z \\<in> xa Int (x - {u}); l eqpoll a; a \\<subseteq> y; u \\<in> x |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   362
\     ==> \\<exists>! w. w \\<in> t_n & cons(z, cons(u, a)) \\<subseteq> w";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   363
by (rtac (all_ex RS bspec) 1);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   364
by (rewtac k_def);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   365
by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [eqpoll_sym]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   366
qed "cons_cons_in";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   367
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   368
Goal "[| \\<forall>v \\<in> s(u). succ(l) eqpoll v Int y;  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   369
\        a \\<subseteq> y; l eqpoll a; u \\<in> x |]  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   370
\     ==> {v \\<in> s(u). a \\<subseteq> v} lepoll {v \\<in> Pow(x). v eqpoll m}";
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   371
by (res_inst_tac [("f3","\\<lambda>w \\<in> {v \\<in> s(u). a \\<subseteq> v}. w Int (x - {u})")] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   372
        (exI RS (lepoll_def RS def_imp_iff RS iffD2)) 1);
6112
5e4871c5136b datatype package improvements
paulson
parents: 6070
diff changeset
   373
by (simp_tac (simpset() addsimps [inj_def]) 1);
5e4871c5136b datatype package improvements
paulson
parents: 6070
diff changeset
   374
by (rtac conjI 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   375
by (rtac lam_type 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   376
by (rtac CollectI 1);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   377
by (Fast_tac 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   378
by (rtac w_Int_eqpoll_m 1 THEN REPEAT (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   379
by (REPEAT (resolve_tac [ballI, impI] 1));
6112
5e4871c5136b datatype package improvements
paulson
parents: 6070
diff changeset
   380
(** LEVEL 8 **)
5e4871c5136b datatype package improvements
paulson
parents: 6070
diff changeset
   381
by (resolve_tac [w_Int_eqpoll_m RS eqpoll_m_not_empty RS not_emptyE] 1);
5e4871c5136b datatype package improvements
paulson
parents: 6070
diff changeset
   382
by (EVERY (map Blast_tac [4,3,2,1]));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   383
by (dresolve_tac [equalityD1 RS subsetD] 1 THEN (assume_tac 1));
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6176
diff changeset
   384
by (ftac cons_cons_in 1 THEN REPEAT (assume_tac 1));
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   385
by (etac ex1_two_eq 1);
5265
9d1d4c43c76d Disjointness reasoning by AddEs [equals0E, sym RS equals0E]
paulson
parents: 5241
diff changeset
   386
by (REPEAT (blast_tac
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   387
	    (claset() addDs [s_subset RS subsetD, in_s_imp_u_in]) 1));
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   388
qed "subset_s_lepoll_w";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   389
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   390
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   391
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   392
(* well_ord_subsets_lepoll_n                                              *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   393
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   394
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   395
Goal "n \\<in> nat ==> \\<exists>S. well_ord({z \\<in> Pow(y) . z eqpoll succ(n)}, S)";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   396
by (resolve_tac [WO_R RS well_ord_infinite_subsets_eqpoll_X
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   397
		 RS (eqpoll_def RS def_imp_iff RS iffD1) RS exE] 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   398
by (REPEAT (fast_tac (claset() addIs [bij_is_inj RS well_ord_rvimage]) 1));
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   399
qed "well_ord_subsets_eqpoll_n";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   400
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   401
Goal "n \\<in> nat ==> \\<exists>R. well_ord({z \\<in> Pow(y). z lepoll n}, R)";
6070
032babd0120b ZF: the natural numbers as a datatype
paulson
parents: 6021
diff changeset
   402
by (induct_tac "n" 1);
032babd0120b ZF: the natural numbers as a datatype
paulson
parents: 6021
diff changeset
   403
by (force_tac (claset() addSIs [well_ord_unit],
032babd0120b ZF: the natural numbers as a datatype
paulson
parents: 6021
diff changeset
   404
	       simpset() addsimps [subsets_lepoll_0_eq_unit]) 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   405
by (etac exE 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   406
by (resolve_tac [well_ord_subsets_eqpoll_n RS exE] 1 THEN assume_tac 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   407
by (asm_simp_tac (simpset() addsimps [subsets_lepoll_succ]) 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   408
by (dtac well_ord_radd 1 THEN (assume_tac 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   409
by (eresolve_tac [Int_empty RS disj_Un_eqpoll_sum RS 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   410
                (eqpoll_def RS def_imp_iff RS iffD1) RS exE] 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   411
by (fast_tac (claset() addSEs [bij_is_inj RS well_ord_rvimage]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   412
qed "well_ord_subsets_lepoll_n";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   413
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   414
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   415
Goalw [LL_def, MM_def] "LL \\<subseteq> {z \\<in> Pow(y). z lepoll succ(k #+ m)}";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   416
by (cut_facts_tac [includes] 1);
5241
e5129172cb2b Renamed equals0D to equals0E; tidied
paulson
parents: 5147
diff changeset
   417
by (fast_tac (claset() addIs [subset_imp_lepoll 
e5129172cb2b Renamed equals0D to equals0E; tidied
paulson
parents: 5147
diff changeset
   418
			      RS (eqpoll_imp_lepoll
e5129172cb2b Renamed equals0D to equals0E; tidied
paulson
parents: 5147
diff changeset
   419
				  RSN (2, lepoll_trans))]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   420
qed "LL_subset";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   421
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   422
Goal "\\<exists>S. well_ord(LL,S)";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   423
by (rtac (well_ord_subsets_lepoll_n RS exE) 1);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   424
by (blast_tac (claset() addIs [LL_subset RSN (2, well_ord_subset)]) 2);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   425
by Auto_tac;
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   426
qed "well_ord_LL";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   427
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   428
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   429
(* every element of LL is a contained in exactly one element of MM        *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   430
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   431
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   432
Goalw [MM_def, LL_def] "v \\<in> LL ==> \\<exists>! w. w \\<in> MM & v \\<subseteq> w";
5241
e5129172cb2b Renamed equals0D to equals0E; tidied
paulson
parents: 5147
diff changeset
   433
by Safe_tac;
2845
b4f8df0efa6c Changes made necessary by the new ex1 rules
paulson
parents: 2496
diff changeset
   434
by (Fast_tac 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   435
by (resolve_tac [lepoll_imp_eqpoll_subset RS exE] 1 THEN (assume_tac 1));
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   436
by (res_inst_tac [("x","x")] (all_ex RS ballE) 1);
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3891
diff changeset
   437
by (fast_tac (claset() addSEs [eqpoll_sym]) 2);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   438
by (Blast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   439
qed "unique_superset_in_MM";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   440
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   441
val unique_superset1 = unique_superset_in_MM RS theI RS conjunct1;
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   442
val unique_superset2 = unique_superset_in_MM RS the_equality2;
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   443
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   444
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   445
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   446
(* The function GG satisfies the conditions of WO4                        *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   447
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   448
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   449
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   450
(* The union of appropriate values is the whole x                         *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   451
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   452
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   453
Goalw [LL_def] "w \\<in> MM ==> w Int y \\<in> LL";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   454
by (Fast_tac 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   455
qed "Int_in_LL";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   456
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   457
Goalw [LL_def] 
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   458
     "v \\<in> LL ==> v = (THE x. x \\<in> MM & v \\<subseteq> x) Int y";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   459
by (Clarify_tac 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   460
by (stac unique_superset2 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   461
by (auto_tac (claset(), simpset() addsimps [Int_in_LL]));
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   462
qed "in_LL_eq_Int";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   463
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   464
Goal "v \\<in> LL ==> (THE x. x \\<in> MM & v \\<subseteq> x) \\<subseteq> x Un y";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   465
by (dtac unique_superset1 1);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   466
by (rewtac MM_def);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   467
by (fast_tac (claset() addSDs [unique_superset1, includes RS subsetD]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   468
qed "the_in_MM_subset";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   469
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   470
Goalw [GG_def] "v \\<in> LL ==> GG ` v \\<subseteq> x";
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6176
diff changeset
   471
by (ftac the_in_MM_subset 1);
23e090051cb8 isatool expandshort;
wenzelm
parents: 6176
diff changeset
   472
by (ftac in_LL_eq_Int 1); 
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   473
by (force_tac (claset() addEs [equalityE], simpset()) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   474
qed "GG_subset";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   475
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   476
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   477
Goal "n \\<in> nat ==> \\<exists>z. z \\<subseteq> y & n eqpoll z";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   478
by (etac nat_lepoll_imp_ex_eqpoll_n 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   479
by (resolve_tac [ordertype_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   480
        RSN (2, lepoll_trans)] 1);
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   481
by (rtac WO_R 2);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   482
by (fast_tac 
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   483
    (claset() delrules [notI]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   484
              addSIs [nat_le_infinite_Ord RS le_imp_lepoll]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   485
	      addIs [Ord_ordertype, 
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   486
		     ordertype_eqpoll RS eqpoll_imp_lepoll
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   487
		     RS lepoll_infinite]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   488
qed "ex_subset_eqpoll_n";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   489
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   490
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   491
Goal "u \\<in> x ==> \\<exists>v \\<in> s(u). succ(k) lepoll v Int y";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   492
by (rtac ccontr 1);
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   493
by (subgoal_tac "\\<forall>v \\<in> s(u). k eqpoll v Int y" 1);
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   494
by (full_simp_tac (simpset() addsimps [s_def]) 2);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   495
by (blast_tac (claset() addIs [succ_not_lepoll_imp_eqpoll]) 2);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   496
by (rewtac k_def);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   497
by (cut_facts_tac [all_ex, includes, lnat] 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   498
by (rtac (ex_subset_eqpoll_n RS exE) 1 THEN assume_tac 1);
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   499
by (rtac (noLepoll RS notE) 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   500
by (blast_tac (claset() addIs
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   501
	   [[y_lepoll_subset_s, subset_s_lepoll_w] MRS lepoll_trans]) 1);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   502
qed "exists_proper_in_s";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   503
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   504
Goal "u \\<in> x ==> \\<exists>w \\<in> MM. u \\<in> w";
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   505
by (eresolve_tac [exists_proper_in_s RS bexE] 1);
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   506
by (rewrite_goals_tac [MM_def, s_def]);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   507
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   508
qed "exists_in_MM";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   509
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   510
Goal "u \\<in> x ==> \\<exists>w \\<in> LL. u \\<in> GG`w";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   511
by (rtac (exists_in_MM RS bexE) 1);
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   512
by (assume_tac 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   513
by (rtac bexI 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   514
by (etac Int_in_LL 2);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   515
by (rewtac GG_def);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   516
by (asm_simp_tac (simpset() addsimps [Int_in_LL]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   517
by (stac unique_superset2 1);
5265
9d1d4c43c76d Disjointness reasoning by AddEs [equals0E, sym RS equals0E]
paulson
parents: 5241
diff changeset
   518
by (REPEAT (fast_tac (claset() addSEs [Int_in_LL]) 1));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   519
qed "exists_in_LL";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   520
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   521
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   522
Goal "well_ord(LL,S) ==>      \
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   523
\     (\\<Union>b<ordertype(LL,S). GG ` (converse(ordermap(LL,S)) ` b)) = x";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   524
by (rtac equalityI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   525
by (rtac subsetI 1);
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   526
by (etac OUN_E 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   527
by (resolve_tac [GG_subset RS subsetD] 1);
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   528
by (assume_tac 2);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   529
by (blast_tac (claset() addIs [ordermap_bij RS bij_converse_bij RS
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   530
			       bij_is_fun RS apply_type, ltD]) 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   531
by (rtac subsetI 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   532
by (eresolve_tac [exists_in_LL RS bexE] 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   533
by (force_tac (claset() addIs [Ord_ordertype RSN (2, ltI),
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   534
			       ordermap_type RS apply_type],
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   535
        simpset() addsimps [ordermap_bij RS bij_is_inj RS left_inverse]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   536
qed "OUN_eq_x";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   537
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   538
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   539
(* Every element of the family is less than or equipollent to n-k (m)     *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   540
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   541
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   542
Goalw [MM_def] "w \\<in> MM ==> w eqpoll succ(k #+ m)";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   543
by (fast_tac (claset() addDs [includes RS subsetD]) 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   544
qed "in_MM_eqpoll_n";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   545
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   546
Goalw [LL_def, MM_def] "w \\<in> LL ==> succ(k) lepoll w";
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 2167
diff changeset
   547
by (Fast_tac 1);
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   548
qed "in_LL_eqpoll_n";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   549
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   550
val in_LL = in_LL_eq_Int RS equalityD1 RS (Int_lower1 RSN (2, subset_trans));
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   551
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4091
diff changeset
   552
Goalw [GG_def] 
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   553
      "well_ord(LL,S) ==>      \
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   554
\      \\<forall>b<ordertype(LL,S). GG ` (converse(ordermap(LL,S)) ` b) lepoll m";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   555
by (rtac oallI 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   556
by (asm_simp_tac 
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   557
    (simpset() addsimps [ltD,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   558
			 ordermap_bij RS bij_converse_bij RS
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   559
			 bij_is_fun RS apply_type]) 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   560
by (cut_facts_tac [includes] 1);
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   561
by (rtac eqpoll_sum_imp_Diff_lepoll 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   562
by (REPEAT
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   563
    (fast_tac (claset() delrules [subsetI]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   564
		        addSDs [ltD]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   565
			addSIs [eqpoll_sum_imp_Diff_lepoll, in_LL_eqpoll_n]
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   566
			addIs [unique_superset1 RS in_MM_eqpoll_n, in_LL,
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   567
			       ordermap_bij RS bij_converse_bij RS 
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   568
			       bij_is_fun RS apply_type]) 1 ));
3731
71366483323b result() -> qed; Step_tac -> Safe_tac
paulson
parents: 3013
diff changeset
   569
qed "all_in_lepoll_m";
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   570
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   571
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   572
Goal "\\<exists>a f. Ord(a) & domain(f) = a &  \
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   573
\             (\\<Union>b<a. f ` b) = x & (\\<forall>b<a. f ` b lepoll m)";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   574
by (resolve_tac [well_ord_LL RS exE] 1 THEN REPEAT (assume_tac 1));
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   575
by (rename_tac "S" 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   576
by (res_inst_tac [("x","ordertype(LL,S)")] exI 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   577
by (res_inst_tac [("x",
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   578
        "\\<lambda>b \\<in> ordertype(LL,S). GG ` (converse(ordermap(LL,S)) ` b)")] 
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   579
    exI 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   580
by (Simp_tac 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   581
by (REPEAT (ares_tac [conjI, lam_funtype RS domain_of_fun,
5314
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   582
		      Ord_ordertype, 
c061e6f9d546 Moved the definition of s_u (as s) into the locale
paulson
parents: 5284
diff changeset
   583
		      all_in_lepoll_m, OUN_eq_x] 1));
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   584
qed "conclusion";
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   585
6021
4a3fc834288e new Close_locale synatx
paulson
parents: 5470
diff changeset
   586
Close_locale "AC16";
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   587
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   588
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   589
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   590
(* ********************************************************************** *)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1208
diff changeset
   591
(* The main theorem AC16(n, k) ==> WO4(n-k)                               *)
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   592
(* ********************************************************************** *)
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   593
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4091
diff changeset
   594
Goalw [AC16_def,WO4_def]
11317
7f9e4c389318 X-symbols for set theory
paulson
parents: 9491
diff changeset
   595
        "[| AC16(k #+ m, k); 0 < k; 0 < m; k \\<in> nat; m \\<in> nat |] ==> WO4(m)";
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 1200
diff changeset
   596
by (rtac allI 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   597
by (case_tac "Finite(A)" 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   598
by (rtac lemma1 1 THEN REPEAT (assume_tac 1));
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   599
by (cut_facts_tac [lemma2] 1);
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   600
by (REPEAT (eresolve_tac [exE, conjE] 1));
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   601
by (eres_inst_tac [("x","A Un y")] allE 1);
7499
23e090051cb8 isatool expandshort;
wenzelm
parents: 6176
diff changeset
   602
by (ftac infinite_Un 1 THEN (mp_tac 1));
8123
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   603
by (etac zero_lt_natE 1); 
a71686059be0 a bit of tidying
paulson
parents: 7499
diff changeset
   604
by (assume_tac 1);
5284
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   605
by (Clarify_tac 1);
c77e9dd9bafc Tidying of AC, especially of AC16_WO4 using a locale
paulson
parents: 5265
diff changeset
   606
by (DEPTH_SOLVE (ares_tac [export conclusion] 1));
1196
d43c1f7a53fe Numerous small improvements by KG and LCP
lcp
parents:
diff changeset
   607
qed "AC16_WO4";