src/ZF/AC/AC16_WO4.ML
changeset 5241 e5129172cb2b
parent 5147 825877190618
child 5265 9d1d4c43c76d
equal deleted inserted replaced
5240:bbcd79ef7cf2 5241:e5129172cb2b
    59                 well_ord_Memrel RSN (2, well_ord_Un)) RS exE] 1);
    59                 well_ord_Memrel RSN (2, well_ord_Un)) RS exE] 1);
    60 by (fast_tac (claset() addSIs [Ord_Hartog, well_ord_Memrel, well_ord_paired,
    60 by (fast_tac (claset() addSIs [Ord_Hartog, well_ord_Memrel, well_ord_paired,
    61         equals0I, HartogI RSN (2, lepoll_trans1),
    61         equals0I, HartogI RSN (2, lepoll_trans1),
    62         subset_imp_lepoll RS (paired_eqpoll RS eqpoll_sym RS
    62         subset_imp_lepoll RS (paired_eqpoll RS eqpoll_sym RS
    63         eqpoll_imp_lepoll RSN (2, lepoll_trans))]
    63         eqpoll_imp_lepoll RSN (2, lepoll_trans))]
    64         addSEs [RepFunE, nat_not_Finite RS notE] addEs [mem_asym]
    64         addSEs [nat_not_Finite RS notE] addEs [mem_asym]
    65         addSDs [Un_upper1 RS subset_imp_lepoll RS lepoll_Finite,
    65         addSDs [Un_upper1 RS subset_imp_lepoll RS lepoll_Finite,
    66         paired_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll
    66         paired_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll
    67         RS lepoll_Finite]) 1);
    67         RS lepoll_Finite]) 1);
    68 val lemma2 = result();
    68 val lemma2 = result();
    69 
    69 
   160 by (Fast_tac 1);
   160 by (Fast_tac 1);
   161 qed "cons_cons_subset";
   161 qed "cons_cons_subset";
   162 
   162 
   163 Goal "[| a eqpoll k; a<=y; b:y-a; u:x; x Int y = 0  \
   163 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))";
   164 \       |] ==> cons(b, cons(u, a)) eqpoll succ(succ(k))";
   165 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [equals0D]) 1);
   165 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [equals0E]) 1);
   166 qed "cons_cons_eqpoll";
   166 qed "cons_cons_eqpoll";
   167 
   167 
   168 Goalw [s_u_def] "s_u(u, t_n, k, y) <= t_n";
   168 Goalw [s_u_def] "s_u(u, t_n, k, y) <= t_n";
   169 by (Fast_tac 1);
   169 by (Fast_tac 1);
   170 qed "s_u_subset";
   170 qed "s_u_subset";
   346 (* back to the second part                                                *)
   346 (* back to the second part                                                *)
   347 (* ********************************************************************** *)
   347 (* ********************************************************************** *)
   348 
   348 
   349 Goal "[| x Int y = 0; w <= x Un y |]  \
   349 Goal "[| x Int y = 0; w <= x Un y |]  \
   350 \        ==> w Int (x - {u}) = w - cons(u, w Int y)";
   350 \        ==> w Int (x - {u}) = w - cons(u, w Int y)";
   351 by (fast_tac (claset() addEs [equals0D]) 1);
   351 by (fast_tac (claset() addEs [equals0E]) 1);
   352 qed "w_Int_eq_w_Diff";
   352 qed "w_Int_eq_w_Diff";
   353 
   353 
   354 Goal "[| w:{v:s_u(u, t_n, succ(l), y). a <= v};  \
   354 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)};  \
   355 \       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;  \
   356 \       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  \
   357 \       ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y  \
   358 \       |] ==> w Int (x - {u}) eqpoll m";
   358 \       |] ==> w Int (x - {u}) eqpoll m";
   359 by (etac CollectE 1);
   359 by (etac CollectE 1);
   360 by (resolve_tac [w_Int_eq_w_Diff RS ssubst] 1 THEN (assume_tac 1));
   360 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);
   361 by (fast_tac (claset() addSDs [s_u_subset RS subsetD]) 1);
   362 by (fast_tac (claset() addEs [equals0D] addSDs [bspec]
   362 by (fast_tac (claset() addEs [equals0E] addSDs [bspec]
   363         addDs [s_u_subset RS subsetD]
   363         addDs [s_u_subset RS subsetD]
   364         addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_u_imp_u_in]
   364         addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_u_imp_u_in]
   365         addSIs [eqpoll_sum_imp_Diff_eqpoll]) 1);
   365         addSIs [eqpoll_sum_imp_Diff_eqpoll]) 1);
   366 qed "w_Int_eqpoll_m";
   366 qed "w_Int_eqpoll_m";
   367 
   367 
   371 qed "eqpoll_m_not_empty";
   371 qed "eqpoll_m_not_empty";
   372 
   372 
   373 Goal
   373 Goal
   374         "[| 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  \
   375 \       |] ==> 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))}";
   376 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [equals0D, eqpoll_sym]) 1);
   376 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [equals0E, eqpoll_sym]) 1);
   377 qed "cons_cons_in";
   377 qed "cons_cons_in";
   378 
   378 
   379 (* ********************************************************************** *)
   379 (* ********************************************************************** *)
   380 (*   2. {v:s_u. a <= v} is less than or equipollent                       *)
   380 (*   2. {v:s_u. a <= v} is less than or equipollent                       *)
   381 (*      to {v:Pow(x). v eqpoll n-k}                                       *)
   381 (*      to {v:Pow(x). v eqpoll n-k}                                       *)
   503 qed "well_ord_subsets_lepoll_n";
   503 qed "well_ord_subsets_lepoll_n";
   504 
   504 
   505 Goalw [LL_def, MM_def]
   505 Goalw [LL_def, MM_def]
   506         "t_n <= {v:Pow(x Un y). v eqpoll n}  \
   506         "t_n <= {v:Pow(x Un y). v eqpoll n}  \
   507 \               ==> LL(t_n, k, y) <= {z:Pow(y). z lepoll n}";
   507 \               ==> LL(t_n, k, y) <= {z:Pow(y). z lepoll n}";
   508 by (fast_tac (claset() addSEs [RepFunE]
   508 by (fast_tac (claset() addIs [subset_imp_lepoll 
   509         addIs [subset_imp_lepoll RS (eqpoll_imp_lepoll
   509 			      RS (eqpoll_imp_lepoll
   510                 RSN (2, lepoll_trans))]) 1);
   510 				  RSN (2, lepoll_trans))]) 1);
   511 qed "LL_subset";
   511 qed "LL_subset";
   512 
   512 
   513 Goal "[| t_n <= {v:Pow(x Un y). v eqpoll n}; \
   513 Goal "[| t_n <= {v:Pow(x Un y). v eqpoll n}; \
   514 \               well_ord(y, R); ~Finite(y); n:nat  \
   514 \               well_ord(y, R); ~Finite(y); n:nat  \
   515 \               |] ==> EX S. well_ord(LL(t_n, k, y), S)";
   515 \               |] ==> EX S. well_ord(LL(t_n, k, y), S)";
   525 Goalw [MM_def, LL_def]
   525 Goalw [MM_def, LL_def]
   526         "[| ALL z:{z: Pow(x Un y) . z eqpoll k}. EX! w. w:t_n & z <= w; \
   526         "[| ALL z:{z: Pow(x Un y) . z eqpoll k}. EX! w. w:t_n & z <= w; \
   527 \       t_n <= {v:Pow(x Un y). v eqpoll n}; \
   527 \       t_n <= {v:Pow(x Un y). v eqpoll n}; \
   528 \       v:LL(t_n, k, y)  \
   528 \       v:LL(t_n, k, y)  \
   529 \       |] ==> EX! w. w:MM(t_n, k, y) & v<=w";
   529 \       |] ==> EX! w. w:MM(t_n, k, y) & v<=w";
   530 by (safe_tac (claset() addSEs [RepFunE]));
   530 by Safe_tac;
   531 by (Fast_tac 1);
   531 by (Fast_tac 1);
   532 by (resolve_tac [lepoll_imp_eqpoll_subset RS exE] 1 THEN (assume_tac 1));
   532 by (resolve_tac [lepoll_imp_eqpoll_subset RS exE] 1 THEN (assume_tac 1));
   533 by (eres_inst_tac [("x","xa")] ballE 1);
   533 by (eres_inst_tac [("x","xa")] ballE 1);
   534 by (fast_tac (claset() addSEs [eqpoll_sym]) 2);
   534 by (fast_tac (claset() addSEs [eqpoll_sym]) 2);
   535 by (etac alt_ex1E 1);
   535 by (etac alt_ex1E 1);
   581 by (etac Int_in_LL 2);
   581 by (etac Int_in_LL 2);
   582 by (rewtac GG_def);
   582 by (rewtac GG_def);
   583 by (asm_full_simp_tac (simpset() delsimps ball_simps addsimps [Int_in_LL]) 1);
   583 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
   584 by (eresolve_tac [unique_superset_in_MM RS the_equality2 RS ssubst] 1
   585         THEN (assume_tac 1));
   585         THEN (assume_tac 1));
   586 by (REPEAT (fast_tac (claset() addEs [equals0D] addSEs [Int_in_LL]) 1));
   586 by (REPEAT (fast_tac (claset() addEs [equals0E] addSEs [Int_in_LL]) 1));
   587 qed "exists_in_LL";
   587 qed "exists_in_LL";
   588 
   588 
   589 Goalw [LL_def] 
   589 Goalw [LL_def] 
   590         "[| ALL z:{z: Pow(x Un y) . z eqpoll k}. EX! w. w:t_n & z <= w; \
   590         "[| 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};  \
   591 \       t_n <= {v:Pow(x Un y). v eqpoll n};  \