42 |
42 |
43 val lepoll_paired = paired_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll; |
43 val lepoll_paired = paired_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll; |
44 |
44 |
45 Goal "EX y R. well_ord(y,R) & x Int y = 0 & ~y lepoll z & ~Finite(y)"; |
45 Goal "EX y R. well_ord(y,R) & x Int y = 0 & ~y lepoll z & ~Finite(y)"; |
46 by (res_inst_tac [("x","{{a,x}. a:nat Un Hartog(z)}")] exI 1); |
46 by (res_inst_tac [("x","{{a,x}. a:nat Un Hartog(z)}")] exI 1); |
47 by (resolve_tac [transfer thy Ord_nat RS well_ord_Memrel RS (Ord_Hartog RS |
47 by (resolve_tac [transfer thy Ord_nat RS well_ord_Memrel RS |
48 well_ord_Memrel RSN (2, well_ord_Un)) RS exE] 1); |
48 (Ord_Hartog RS |
|
49 well_ord_Memrel RSN (2, well_ord_Un)) RS exE] 1); |
49 by (fast_tac |
50 by (fast_tac |
50 (claset() addSIs [Ord_Hartog, well_ord_Memrel, well_ord_paired, |
51 (claset() addSIs [Ord_Hartog, well_ord_Memrel, well_ord_paired, |
51 HartogI RSN (2, lepoll_trans1), |
52 HartogI RSN (2, lepoll_trans1), |
52 subset_imp_lepoll RS (lepoll_paired RSN (2, lepoll_trans))] |
53 subset_imp_lepoll RS (lepoll_paired RSN (2, lepoll_trans))] |
53 addSEs [nat_not_Finite RS notE] addEs [mem_asym] |
54 addSEs [nat_not_Finite RS notE] addEs [mem_asym] |
54 addSDs [Un_upper1 RS subset_imp_lepoll RS lepoll_Finite, |
55 addSDs [Un_upper1 RS subset_imp_lepoll RS lepoll_Finite, |
55 lepoll_paired RS lepoll_Finite]) 1); |
56 lepoll_paired RS lepoll_Finite]) 1); |
56 val lemma2 = result(); |
57 val lemma2 = result(); |
57 |
58 |
58 val [prem] = goal thy "~Finite(B) ==> ~Finite(A Un B)"; |
59 Goal "~Finite(B) ==> ~Finite(A Un B)"; |
59 by (fast_tac (claset() |
60 by (blast_tac (claset() addIs [subset_Finite]) 1); |
60 addSIs [subset_imp_lepoll RS (prem RSN (2, lepoll_infinite))]) 1); |
|
61 qed "infinite_Un"; |
61 qed "infinite_Un"; |
62 |
62 |
63 (* ********************************************************************** *) |
63 (* ********************************************************************** *) |
64 (* There is a v : s(u) such that k lepoll x Int y (in our case succ(k)) *) |
64 (* There is a v : s(u) such that k lepoll x Int y (in our case succ(k)) *) |
65 (* The idea of the proof is the following : *) |
65 (* The idea of the proof is the following : *) |
611 by (rtac lemma1 1 THEN REPEAT (assume_tac 1)); |
611 by (rtac lemma1 1 THEN REPEAT (assume_tac 1)); |
612 by (cut_facts_tac [lemma2] 1); |
612 by (cut_facts_tac [lemma2] 1); |
613 by (REPEAT (eresolve_tac [exE, conjE] 1)); |
613 by (REPEAT (eresolve_tac [exE, conjE] 1)); |
614 by (eres_inst_tac [("x","A Un y")] allE 1); |
614 by (eres_inst_tac [("x","A Un y")] allE 1); |
615 by (ftac infinite_Un 1 THEN (mp_tac 1)); |
615 by (ftac infinite_Un 1 THEN (mp_tac 1)); |
616 by (etac zero_lt_natE 1); by (assume_tac 1); |
616 by (etac zero_lt_natE 1); |
|
617 by (assume_tac 1); |
617 by (Clarify_tac 1); |
618 by (Clarify_tac 1); |
618 by (DEPTH_SOLVE (ares_tac [export conclusion] 1)); |
619 by (DEPTH_SOLVE (ares_tac [export conclusion] 1)); |
619 qed "AC16_WO4"; |
620 qed "AC16_WO4"; |