src/ZF/AC/AC16_WO4.ML
changeset 5265 9d1d4c43c76d
parent 5241 e5129172cb2b
child 5284 c77e9dd9bafc
equal deleted inserted replaced
5264:7538fce1fe37 5265:9d1d4c43c76d
    97 Goalw [lepoll_def, eqpoll_def, bij_def, surj_def]
    97 Goalw [lepoll_def, eqpoll_def, bij_def, surj_def]
    98         "[| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B";
    98         "[| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B";
    99 by (fast_tac (claset() addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1);
    99 by (fast_tac (claset() addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1);
   100 qed "succ_not_lepoll_imp_eqpoll";
   100 qed "succ_not_lepoll_imp_eqpoll";
   101 
   101 
   102 val [prem] = goalw thy [s_u_def]
   102 val [prem] = Goalw [s_u_def]
   103         "(ALL v:s_u(u, t_n, k, y). k eqpoll v Int y ==> False)  \
   103         "(ALL v:s_u(u, t_n, k, y). k eqpoll v Int y ==> False)  \
   104 \       ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y";
   104 \       ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y";
   105 by (excluded_middle_tac "?P" 1 THEN (assume_tac 2));
   105 by (excluded_middle_tac "?P" 1 THEN (assume_tac 2));
   106 by (resolve_tac [prem RS FalseE] 1);
   106 by (resolve_tac [prem RS FalseE] 1);
   107 by (rtac ballI 1);
       
   108 by (etac CollectE 1);
       
   109 by (etac conjE 1);
       
   110 by (etac swap 1);
       
   111 by (fast_tac (claset() addSEs [succ_not_lepoll_imp_eqpoll]) 1);
   107 by (fast_tac (claset() addSEs [succ_not_lepoll_imp_eqpoll]) 1);
   112 qed "suppose_not";
   108 qed "suppose_not";
   113 
   109 
   114 (* ********************************************************************** *)
   110 (* ********************************************************************** *)
   115 (* There is a k-2 element subset of y                                     *)
   111 (* There is a k-2 element subset of y                                     *)
   116 (* ********************************************************************** *)
   112 (* ********************************************************************** *)
   117 
   113 
   118 Goalw [lepoll_def, eqpoll_def]
   114 Goalw [lepoll_def, eqpoll_def]
   119         "[| n:nat; nat lepoll X |] ==> EX Y. Y<=X & n eqpoll Y";
   115         "[| n:nat; nat lepoll X |] ==> EX Y. Y<=X & n eqpoll Y";
   120 by (fast_tac (FOL_cs addSDs [Ord_nat RSN (2, OrdmemD) RSN (2, restrict_inj)]
   116 by (fast_tac (subset_cs addSDs [Ord_nat RSN (2, OrdmemD) RSN (2, restrict_inj)]
   121         addSIs [subset_refl]
       
   122         addSEs [restrict_bij, inj_is_fun RS fun_is_rel RS image_subset]) 1);
   117         addSEs [restrict_bij, inj_is_fun RS fun_is_rel RS image_subset]) 1);
   123 qed "nat_lepoll_imp_ex_eqpoll_n";
   118 qed "nat_lepoll_imp_ex_eqpoll_n";
   124 
   119 
   125 val ordertype_eqpoll =
   120 val ordertype_eqpoll =
   126         ordermap_bij RS (exI RS (eqpoll_def RS def_imp_iff RS iffD2));
   121         ordermap_bij RS (exI RS (eqpoll_def RS def_imp_iff RS iffD2));
   135                         RS lepoll_infinite]) 1);
   130                         RS lepoll_infinite]) 1);
   136 qed "ex_subset_eqpoll_n";
   131 qed "ex_subset_eqpoll_n";
   137 
   132 
   138 Goalw [lesspoll_def] "n: nat ==> n lesspoll nat";
   133 Goalw [lesspoll_def] "n: nat ==> n lesspoll nat";
   139 by (fast_tac (claset() addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_lepoll,
   134 by (fast_tac (claset() addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_lepoll,
   140         eqpoll_sym RS eqpoll_imp_lepoll]
   135 			       eqpoll_sym RS eqpoll_imp_lepoll]
   141         addIs [Ord_nat RSN (2, nat_succI RS ltI) RS leI
   136 	      addIs [Ord_nat RSN (2, nat_succI RS ltI) RS leI
   142         RS le_imp_lepoll RS lepoll_trans RS succ_lepoll_natE]) 1);
   137 		     RS le_imp_lepoll RS lepoll_trans RS succ_lepoll_natE]) 1);
   143 qed "n_lesspoll_nat";
   138 qed "n_lesspoll_nat";
   144 
   139 
   145 Goal "[| well_ord(y,R); ~Finite(y); k eqpoll a; a <= y; k: nat |]  \
   140 Goal "[| well_ord(y,R); ~Finite(y); k eqpoll a; a <= y; k: nat |]  \
   146 \       ==> y - a eqpoll y";
   141 \       ==> y - a eqpoll y";
   147 by (fast_tac (empty_cs addIs [lepoll_lesspoll_lesspoll]
   142 by (fast_tac (empty_cs addIs [lepoll_lesspoll_lesspoll]
   160 by (Fast_tac 1);
   155 by (Fast_tac 1);
   161 qed "cons_cons_subset";
   156 qed "cons_cons_subset";
   162 
   157 
   163 Goal "[| a eqpoll k; a<=y; b:y-a; u:x; x Int y = 0  \
   158 Goal "[| a eqpoll k; a<=y; b:y-a; u:x; x Int y = 0  \
   164 \       |] ==> cons(b, cons(u, a)) eqpoll succ(succ(k))";
   159 \       |] ==> cons(b, cons(u, a)) eqpoll succ(succ(k))";
   165 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [equals0E]) 1);
   160 by (fast_tac (claset() addSIs [cons_eqpoll_succ]) 1);
   166 qed "cons_cons_eqpoll";
   161 qed "cons_cons_eqpoll";
   167 
   162 
   168 Goalw [s_u_def] "s_u(u, t_n, k, y) <= t_n";
   163 Goalw [s_u_def] "s_u(u, t_n, k, y) <= t_n";
   169 by (Fast_tac 1);
   164 by (Fast_tac 1);
   170 qed "s_u_subset";
   165 qed "s_u_subset";
   178 
   173 
   179 Goalw [s_u_def] "v : s_u(u, t_n, k, y) ==> u : v";
   174 Goalw [s_u_def] "v : s_u(u, t_n, k, y) ==> u : v";
   180 by (Fast_tac 1);
   175 by (Fast_tac 1);
   181 qed "in_s_u_imp_u_in";
   176 qed "in_s_u_imp_u_in";
   182 
   177 
   183 Goal
   178 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}.  \
   184         "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}.  \
       
   185 \       EX! w. w:t_n & z <= w; \
   179 \       EX! w. w:t_n & z <= w; \
   186 \       k eqpoll a; a <= y; b : y - a; u : x; x Int y = 0 |]  \
   180 \       k eqpoll a; a <= y; b : y - a; u : x; x Int y = 0 |]  \
   187 \       ==> EX! c. c:{v:s_u(u, t_n, succ(k), y). a <= v} & b:c";
   181 \       ==> EX! c. c:{v:s_u(u, t_n, succ(k), y). a <= v} & b:c";
   188 by (etac ballE 1);
   182 by (etac ballE 1);
   189 by (fast_tac (FOL_cs addSIs [CollectI, cons_cons_subset,
   183 by (fast_tac (FOL_cs addSIs [CollectI, cons_cons_subset,
   191 by (etac ex1E 1);
   185 by (etac ex1E 1);
   192 by (res_inst_tac [("a","w")] ex1I 1);
   186 by (res_inst_tac [("a","w")] ex1I 1);
   193 by (rtac conjI 1);
   187 by (rtac conjI 1);
   194 by (rtac CollectI 1);
   188 by (rtac CollectI 1);
   195 by (fast_tac (FOL_cs addSEs [s_uI]) 1);
   189 by (fast_tac (FOL_cs addSEs [s_uI]) 1);
   196 by (Fast_tac 1);
   190 by (Blast_tac 1);
   197 by (Fast_tac 1);
   191 by (Blast_tac 1);
   198 by (etac allE 1);
   192 by (etac allE 1);
   199 by (etac impE 1);
   193 by (etac impE 1);
   200 by (assume_tac 2);
   194 by (assume_tac 2);
   201 by (fast_tac (claset() addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
   195 by (fast_tac (claset() addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
   202 qed "ex1_superset_a";
   196 qed "ex1_superset_a";
   203 
   197 
   204 Goal
   198 Goal "[| succ(k) eqpoll A; k eqpoll B; B <= A; a : A-B; k:nat  \
   205         "[| succ(k) eqpoll A; k eqpoll B; B <= A; a : A-B; k:nat  \
       
   206 \       |] ==> A = cons(a, B)";
   199 \       |] ==> A = cons(a, B)";
   207 by (rtac equalityI 1);
   200 by (rtac equalityI 1);
   208 by (Fast_tac 2);
   201 by (Fast_tac 2);
   209 by (resolve_tac [Diff_eq_0_iff RS iffD1] 1);
   202 by (resolve_tac [Diff_eq_0_iff RS iffD1] 1);
   210 by (rtac equals0I 1);
   203 by (rtac equals0I 1);
   217     (claset() 
   210     (claset() 
   218         addSEs [[eqpoll_sym RS eqpoll_imp_lepoll, subset_imp_lepoll] MRS
   211         addSEs [[eqpoll_sym RS eqpoll_imp_lepoll, subset_imp_lepoll] MRS
   219         (lepoll_trans RS lepoll_trans) RS succ_lepoll_natE]) 1);
   212         (lepoll_trans RS lepoll_trans) RS succ_lepoll_natE]) 1);
   220 qed "set_eq_cons";
   213 qed "set_eq_cons";
   221 
   214 
   222 Goal
   215 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}.  \
   223         "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}.  \
   216 \        EX! w. w:t_n & z <= w; \
   224 \       EX! w. w:t_n & z <= w; \
   217 \        ALL v:s_u(u, t_n, succ(k), y). succ(k) eqpoll v Int y;  \
   225 \       ALL v:s_u(u, t_n, succ(k), y). succ(k) eqpoll v Int y;  \
   218 \        k eqpoll a; a <= y; b : y - a; u : x; x Int y = 0; k:nat |]   \
   226 \       k eqpoll a; a <= y; b : y - a; u : x; x Int y = 0; k:nat   \
   219 \     ==> (THE c. c:{v:s_u(u, t_n, succ(k), y). a <= v} & b:c)  \
   227 \       |] ==> (THE c. c:{v:s_u(u, t_n, succ(k), y). a <= v} & b:c)  \
   220 \              Int y = cons(b, a)";
   228 \       Int y = cons(b, a)";
       
   229 by (dresolve_tac [ex1_superset_a RS theI] 1 THEN REPEAT (assume_tac 1));
   221 by (dresolve_tac [ex1_superset_a RS theI] 1 THEN REPEAT (assume_tac 1));
   230 by (rtac set_eq_cons 1);
   222 by (rtac set_eq_cons 1);
   231 by (REPEAT (Fast_tac 1));
   223 by (REPEAT (Fast_tac 1));
   232 qed "the_eq_cons";
   224 qed "the_eq_cons";
   233 
   225 
   246 (* ********************************************************************** *)
   238 (* ********************************************************************** *)
   247 (*   1. y is less than or equipollent to {v:s_u. a <= v}                  *)
   239 (*   1. y is less than or equipollent to {v:s_u. a <= v}                  *)
   248 (*      where a is certain k-2 element subset of y                        *)
   240 (*      where a is certain k-2 element subset of y                        *)
   249 (* ********************************************************************** *)
   241 (* ********************************************************************** *)
   250 
   242 
   251 Goal
   243 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}.  \
   252         "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}.  \
       
   253 \       EX! w. w:t_n & z <= w; \
   244 \       EX! w. w:t_n & z <= w; \
   254 \       ALL v:s_u(u, t_n, succ(k), y). succ(k) eqpoll v Int y;  \
   245 \       ALL v:s_u(u, t_n, succ(k), y). succ(k) eqpoll v Int y;  \
   255 \       well_ord(y,R); ~Finite(y); k eqpoll a; a <= y;  \
   246 \       well_ord(y,R); ~Finite(y); k eqpoll a; a <= y;  \
   256 \       k:nat; u:x; x Int y = 0 |]  \
   247 \       k:nat; u:x; x Int y = 0 |]  \
   257 \       ==> y lepoll {v:s_u(u, t_n, succ(k), y). a <= v}";
   248 \       ==> y lepoll {v:s_u(u, t_n, succ(k), y). a <= v}";
   280 
   271 
   281 (* ********************************************************************** *)
   272 (* ********************************************************************** *)
   282 (* some arithmetic                                                        *)
   273 (* some arithmetic                                                        *)
   283 (* ********************************************************************** *)
   274 (* ********************************************************************** *)
   284 
   275 
   285 Goal 
   276 Goal "[| k:nat; m:nat |] ==>  \
   286         "[| k:nat; m:nat |] ==>  \
       
   287 \       ALL A B. A eqpoll k #+ m & k lepoll B & B<=A --> A-B lepoll m";
   277 \       ALL A B. A eqpoll k #+ m & k lepoll B & B<=A --> A-B lepoll m";
   288 by (eres_inst_tac [("n","k")] nat_induct 1);
   278 by (eres_inst_tac [("n","k")] nat_induct 1);
   289 by (simp_tac (simpset() addsimps [add_0]) 1);
   279 by (simp_tac (simpset() addsimps [add_0]) 1);
   290 by (fast_tac (claset() addIs [eqpoll_imp_lepoll RS
   280 by (fast_tac (claset() addIs [eqpoll_imp_lepoll RS
   291         (Diff_subset RS subset_imp_lepoll RS lepoll_trans)]) 1);
   281         (Diff_subset RS subset_imp_lepoll RS lepoll_trans)]) 1);
   312 
   302 
   313 (* ********************************************************************** *)
   303 (* ********************************************************************** *)
   314 (* similar properties for eqpoll                                          *)
   304 (* similar properties for eqpoll                                          *)
   315 (* ********************************************************************** *)
   305 (* ********************************************************************** *)
   316 
   306 
   317 Goal 
   307 Goal "[| k:nat; m:nat |] ==>  \
   318         "[| k:nat; m:nat |] ==>  \
       
   319 \       ALL A B. A eqpoll k #+ m & k eqpoll B & B<=A --> A-B eqpoll m";
   308 \       ALL A B. A eqpoll k #+ m & k eqpoll B & B<=A --> A-B eqpoll m";
   320 by (eres_inst_tac [("n","k")] nat_induct 1);
   309 by (eres_inst_tac [("n","k")] nat_induct 1);
   321 by (fast_tac (claset() addSDs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_0_is_0]
   310 by (fast_tac (claset() addSDs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_0_is_0]
   322         addss (simpset() addsimps [add_0])) 1);
   311         addss (simpset() addsimps [add_0])) 1);
   323 by (REPEAT (resolve_tac [allI,impI] 1));
   312 by (REPEAT (resolve_tac [allI,impI] 1));
   346 (* back to the second part                                                *)
   335 (* back to the second part                                                *)
   347 (* ********************************************************************** *)
   336 (* ********************************************************************** *)
   348 
   337 
   349 Goal "[| x Int y = 0; w <= x Un y |]  \
   338 Goal "[| x Int y = 0; w <= x Un y |]  \
   350 \        ==> w Int (x - {u}) = w - cons(u, w Int y)";
   339 \        ==> w Int (x - {u}) = w - cons(u, w Int y)";
   351 by (fast_tac (claset() addEs [equals0E]) 1);
   340 by (Fast_tac 1);
   352 qed "w_Int_eq_w_Diff";
   341 qed "w_Int_eq_w_Diff";
   353 
   342 
   354 Goal "[| w:{v:s_u(u, t_n, succ(l), y). a <= v};  \
   343 Goal "[| w:{v:s_u(u, t_n, succ(l), y). a <= v};  \
   355 \       l eqpoll a; t_n <= {v:Pow(x Un y). v eqpoll succ(succ(l) #+ m)};  \
   344 \       l eqpoll a; t_n <= {v:Pow(x Un y). v eqpoll succ(succ(l) #+ m)};  \
   356 \       m:nat; l:nat; x Int y = 0; u : x;  \
   345 \       m:nat; l:nat; x Int y = 0; u : x;  \
   357 \       ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y  \
   346 \       ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y  \
   358 \       |] ==> w Int (x - {u}) eqpoll m";
   347 \       |] ==> w Int (x - {u}) eqpoll m";
   359 by (etac CollectE 1);
   348 by (etac CollectE 1);
   360 by (resolve_tac [w_Int_eq_w_Diff RS ssubst] 1 THEN (assume_tac 1));
   349 by (resolve_tac [w_Int_eq_w_Diff RS ssubst] 1 THEN (assume_tac 1));
   361 by (fast_tac (claset() addSDs [s_u_subset RS subsetD]) 1);
   350 by (fast_tac (claset() addSDs [s_u_subset RS subsetD]) 1);
   362 by (fast_tac (claset() addEs [equals0E] addSDs [bspec]
   351 by (fast_tac (claset() addSDs [bspec]
   363         addDs [s_u_subset RS subsetD]
   352         addDs [s_u_subset RS subsetD]
   364         addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_u_imp_u_in]
   353         addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_u_imp_u_in]
   365         addSIs [eqpoll_sum_imp_Diff_eqpoll]) 1);
   354         addSIs [eqpoll_sum_imp_Diff_eqpoll]) 1);
   366 qed "w_Int_eqpoll_m";
   355 qed "w_Int_eqpoll_m";
   367 
   356 
   368 Goal "[| 0<m; x eqpoll m; m:nat |] ==> x ~= 0";
   357 Goal "[| 0<m; x eqpoll m; m:nat |] ==> x ~= 0";
   369 by (fast_tac (empty_cs
   358 by (fast_tac (empty_cs
   370         addSEs [mem_irrefl, ltE, eqpoll_succ_imp_not_empty, natE]) 1);
   359         addSEs [mem_irrefl, ltE, eqpoll_succ_imp_not_empty, natE]) 1);
   371 qed "eqpoll_m_not_empty";
   360 qed "eqpoll_m_not_empty";
   372 
   361 
   373 Goal
   362 Goal "[| z : xa Int (x - {u}); l eqpoll a; a <= y; x Int y = 0; u:x |]  \
   374         "[| z : xa Int (x - {u}); l eqpoll a; a <= y; x Int y = 0; u:x  \
   363 \     ==> cons(z, cons(u, a)) : {v: Pow(x Un y). v eqpoll succ(succ(l))}";
   375 \       |] ==> cons(z, cons(u, a)) : {v: Pow(x Un y). v eqpoll succ(succ(l))}";
   364 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [eqpoll_sym]) 1);
   376 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [equals0E, eqpoll_sym]) 1);
       
   377 qed "cons_cons_in";
   365 qed "cons_cons_in";
   378 
   366 
   379 (* ********************************************************************** *)
   367 (* ********************************************************************** *)
   380 (*   2. {v:s_u. a <= v} is less than or equipollent                       *)
   368 (*   2. {v:s_u. a <= v} is less than or equipollent                       *)
   381 (*      to {v:Pow(x). v eqpoll n-k}                                       *)
   369 (*      to {v:Pow(x). v eqpoll n-k}                                       *)
   382 (* ********************************************************************** *)
   370 (* ********************************************************************** *)
   383 
   371 
   384 Goal 
   372 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(l))}.  \
   385         "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(l))}.  \
       
   386 \       EX! w. w:t_n & z <= w; \
   373 \       EX! w. w:t_n & z <= w; \
   387 \       t_n <= {v:Pow(x Un y). v eqpoll succ(succ(l) #+ m)};  \
   374 \       t_n <= {v:Pow(x Un y). v eqpoll succ(succ(l) #+ m)};  \
   388 \       0<m; m:nat; l:nat;  \
   375 \       0<m; m:nat; l:nat;  \
   389 \       ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y;  \
   376 \       ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y;  \
   390 \       a <= y; l eqpoll a; x Int y = 0; u : x  \
   377 \       a <= y; l eqpoll a; x Int y = 0; u : x  \
   405 by (eresolve_tac [w_Int_eqpoll_m RSN (2, eqpoll_m_not_empty) RS not_emptyE] 1
   392 by (eresolve_tac [w_Int_eqpoll_m RSN (2, eqpoll_m_not_empty) RS not_emptyE] 1
   406         THEN REPEAT (assume_tac 1));
   393         THEN REPEAT (assume_tac 1));
   407 by (dresolve_tac [equalityD1 RS subsetD] 1 THEN (assume_tac 1));
   394 by (dresolve_tac [equalityD1 RS subsetD] 1 THEN (assume_tac 1));
   408 by (dresolve_tac [cons_cons_in RSN (2, bspec)] 1 THEN REPEAT (assume_tac 1));
   395 by (dresolve_tac [cons_cons_in RSN (2, bspec)] 1 THEN REPEAT (assume_tac 1));
   409 by (etac ex1_two_eq 1);
   396 by (etac ex1_two_eq 1);
   410 by (fast_tac (claset() addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
   397 by (REPEAT (blast_tac
   411 by (fast_tac (claset() addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
   398 	    (claset() addDs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1));
   412 qed "subset_s_u_lepoll_w";
   399 qed "subset_s_u_lepoll_w";
   413 
   400 
   414 Goal "[| 0<k; k:nat |] ==> EX l:nat. k = succ(l)";
   401 Goal "[| 0<k; k:nat |] ==> EX l:nat. k = succ(l)";
   415 by (etac natE 1);
   402 by (etac natE 1);
   416 by (fast_tac (empty_cs addSEs [ltE, mem_irrefl]) 1);
   403 by Auto_tac;
   417 by (fast_tac (empty_cs addSIs [refl, bexI]) 1);
       
   418 qed "ex_eq_succ";
   404 qed "ex_eq_succ";
   419 
   405 
   420 Goal
   406 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}.  \
   421  "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}.  \
       
   422 \                  EX! w. w:t_n & z <= w; \
   407 \                  EX! w. w:t_n & z <= w; \
   423 \         well_ord(y,R); ~Finite(y); u:x; x Int y = 0;  \
   408 \         well_ord(y,R); ~Finite(y); u:x; x Int y = 0;  \
   424 \         t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)};  \
   409 \         t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)};  \
   425 \         ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat  \
   410 \         ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat  \
   426 \      |] ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y";
   411 \      |] ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y";
   465                 RS lepoll_trans RS succ_lepoll_natE]
   450                 RS lepoll_trans RS succ_lepoll_natE]
   466                 addSIs [equals0I]) 1);
   451                 addSIs [equals0I]) 1);
   467 qed "Int_empty";
   452 qed "Int_empty";
   468 
   453 
   469 (* ********************************************************************** *)
   454 (* ********************************************************************** *)
   470 (* unit set is well-ordered by the empty relation                         *)
       
   471 (* ********************************************************************** *)
       
   472 
       
   473 Goalw [irrefl_def, trans_on_def, part_ord_def, linear_def, tot_ord_def]
       
   474         "tot_ord({a},0)";
       
   475 by (Simp_tac 1);
       
   476 qed "tot_ord_unit";
       
   477 
       
   478 Goalw [wf_on_def, wf_def] "wf[{a}](0)";
       
   479 by (Fast_tac 1);
       
   480 qed "wf_on_unit";
       
   481 
       
   482 Goalw [well_ord_def] "well_ord({a},0)";
       
   483 by (simp_tac (simpset() addsimps [tot_ord_unit, wf_on_unit]) 1);
       
   484 qed "well_ord_unit";
       
   485 
       
   486 (* ********************************************************************** *)
       
   487 (* well_ord_subsets_lepoll_n                                              *)
   455 (* well_ord_subsets_lepoll_n                                              *)
   488 (* ********************************************************************** *)
   456 (* ********************************************************************** *)
   489 
   457 
   490 Goal "[| well_ord(y,r); ~Finite(y); n:nat |] ==>  \
   458 Goal "[| well_ord(y,r); ~Finite(y); n:nat |] ==>  \
   491 \       EX R. well_ord({z:Pow(y). z lepoll n}, R)";
   459 \       EX R. well_ord({z:Pow(y). z lepoll n}, R)";
   545 
   513 
   546 (* ********************************************************************** *)
   514 (* ********************************************************************** *)
   547 (* The union of appropriate values is the whole x                         *)
   515 (* The union of appropriate values is the whole x                         *)
   548 (* ********************************************************************** *)
   516 (* ********************************************************************** *)
   549 
   517 
   550 Goal
   518 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}.  \
   551         "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}.  \
       
   552 \       EX! w. w:t_n & z <= w; \
   519 \       EX! w. w:t_n & z <= w; \
   553 \       well_ord(y,R); ~Finite(y); u:x; x Int y = 0;  \
   520 \       well_ord(y,R); ~Finite(y); u:x; x Int y = 0;  \
   554 \       t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)};  \
   521 \       t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)};  \
   555 \       ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat  \
   522 \       ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat  \
   556 \       |] ==> EX w:MM(t_n, succ(k), y). u:w";
   523 \       |] ==> EX w:MM(t_n, succ(k), y). u:w";
   566 
   533 
   567 Goalw [MM_def] "MM(t_n, k, y) <= t_n";
   534 Goalw [MM_def] "MM(t_n, k, y) <= t_n";
   568 by (Fast_tac 1);
   535 by (Fast_tac 1);
   569 qed "MM_subset";
   536 qed "MM_subset";
   570 
   537 
   571 Goal 
   538 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}.  \
   572         "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}.  \
       
   573 \       EX! w. w:t_n & z <= w; \
   539 \       EX! w. w:t_n & z <= w; \
   574 \       well_ord(y,R); ~Finite(y); u:x; x Int y = 0;  \
   540 \       well_ord(y,R); ~Finite(y); u:x; x Int y = 0;  \
   575 \       t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)};  \
   541 \       t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)};  \
   576 \       ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat  \
   542 \       ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat  \
   577 \       |] ==> EX w:LL(t_n, succ(k), y). u:GG(t_n, succ(k), y)`w";
   543 \       |] ==> EX w:LL(t_n, succ(k), y). u:GG(t_n, succ(k), y)`w";
   581 by (etac Int_in_LL 2);
   547 by (etac Int_in_LL 2);
   582 by (rewtac GG_def);
   548 by (rewtac GG_def);
   583 by (asm_full_simp_tac (simpset() delsimps ball_simps addsimps [Int_in_LL]) 1);
   549 by (asm_full_simp_tac (simpset() delsimps ball_simps addsimps [Int_in_LL]) 1);
   584 by (eresolve_tac [unique_superset_in_MM RS the_equality2 RS ssubst] 1
   550 by (eresolve_tac [unique_superset_in_MM RS the_equality2 RS ssubst] 1
   585         THEN (assume_tac 1));
   551         THEN (assume_tac 1));
   586 by (REPEAT (fast_tac (claset() addEs [equals0E] addSEs [Int_in_LL]) 1));
   552 by (REPEAT (fast_tac (claset() addSEs [Int_in_LL]) 1));
   587 qed "exists_in_LL";
   553 qed "exists_in_LL";
   588 
   554 
   589 Goalw [LL_def] 
   555 Goalw [LL_def] 
   590         "[| ALL z:{z: Pow(x Un y) . z eqpoll k}. EX! w. w:t_n & z <= w; \
   556         "[| ALL z:{z: Pow(x Un y) . z eqpoll k}. EX! w. w:t_n & z <= w; \
   591 \       t_n <= {v:Pow(x Un y). v eqpoll n};  \
   557 \       t_n <= {v:Pow(x Un y). v eqpoll n};  \
   593 \       ==> v = (THE x. x : MM(t_n, k, y) & v <= x) Int y";
   559 \       ==> v = (THE x. x : MM(t_n, k, y) & v <= x) Int y";
   594 by (fast_tac (claset() addSEs [Int_in_LL,
   560 by (fast_tac (claset() addSEs [Int_in_LL,
   595                 unique_superset_in_MM RS the_equality2 RS ssubst]) 1);
   561                 unique_superset_in_MM RS the_equality2 RS ssubst]) 1);
   596 qed "in_LL_eq_Int";
   562 qed "in_LL_eq_Int";
   597 
   563 
   598 Goal  
   564 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll k}. EX! w. w:t_n & z <= w; \
   599         "[| ALL z:{z: Pow(x Un y) . z eqpoll k}. EX! w. w:t_n & z <= w; \
       
   600 \       t_n <= {v:Pow(x Un y). v eqpoll n};  \
   565 \       t_n <= {v:Pow(x Un y). v eqpoll n};  \
   601 \       v : LL(t_n, k, y) |]  \
   566 \       v : LL(t_n, k, y) |]  \
   602 \       ==> (THE x. x : MM(t_n, k, y) & v <= x) <= x Un y";
   567 \       ==> (THE x. x : MM(t_n, k, y) & v <= x) <= x Un y";
   603 by (fast_tac (claset() addSDs [unique_superset_in_MM RS theI RS conjunct1 RS 
   568 by (fast_tac (claset() addSDs [unique_superset_in_MM RS theI RS conjunct1 RS 
   604         (MM_subset RS subsetD)]) 1);
   569         (MM_subset RS subsetD)]) 1);
   616 by (etac DiffE 1);
   581 by (etac DiffE 1);
   617 by (etac swap 1);
   582 by (etac swap 1);
   618 by (fast_tac (claset() addEs [ssubst]) 1);
   583 by (fast_tac (claset() addEs [ssubst]) 1);
   619 qed "GG_subset";
   584 qed "GG_subset";
   620 
   585 
   621 Goal  
   586 Goal "[| well_ord(LL(t_n, succ(k), y), S);  \
   622         "[| well_ord(LL(t_n, succ(k), y), S);  \
       
   623 \       ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. EX! w. w:t_n & z <= w; \
   587 \       ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. EX! w. w:t_n & z <= w; \
   624 \       well_ord(y,R); ~Finite(y); x Int y = 0;  \
   588 \       well_ord(y,R); ~Finite(y); x Int y = 0;  \
   625 \       t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)};  \
   589 \       t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)};  \
   626 \       ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat  \
   590 \       ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat  \
   627 \       |] ==> (UN b<ordertype(LL(t_n, succ(k), y), S).  \
   591 \       |] ==> (UN b<ordertype(LL(t_n, succ(k), y), S).  \