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}; \ |