src/ZF/AC/AC16_WO4.ML
changeset 8123 a71686059be0
parent 7499 23e090051cb8
child 9491 1a36151ee2fc
equal deleted inserted replaced
8122:b43ad07660b9 8123:a71686059be0
    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";