src/ZF/AC/AC16_WO4.ML
changeset 12536 e9a729259385
parent 11380 e76366922751
equal deleted inserted replaced
12535:626eaec7b5ad 12536:e9a729259385
    74 
    74 
    75 (*Proof simplified by LCP*)
    75 (*Proof simplified by LCP*)
    76 Goal "[| ~(\\<exists>x \\<in> A. f`x=y); f \\<in> inj(A, B); y \\<in> B |]  \
    76 Goal "[| ~(\\<exists>x \\<in> A. f`x=y); f \\<in> inj(A, B); y \\<in> B |]  \
    77 \     ==> (\\<lambda>a \\<in> succ(A). if(a=A, y, f`a)) \\<in> inj(succ(A), B)";
    77 \     ==> (\\<lambda>a \\<in> succ(A). if(a=A, y, f`a)) \\<in> inj(succ(A), B)";
    78 by (res_inst_tac [("d","%z. if(z=y, A, converse(f)`z)")] lam_injective 1);
    78 by (res_inst_tac [("d","%z. if(z=y, A, converse(f)`z)")] lam_injective 1);
    79 by (auto_tac (claset(), simpset() addsimps [inj_is_fun RS apply_type]));
    79 by (force_tac (claset(), simpset() addsimps [inj_is_fun RS apply_type]) 1);
       
    80 (*this preliminary simplification prevents looping somehow*)
       
    81 by (Asm_simp_tac 1);  
       
    82 by (force_tac (claset(), simpset() addsimps []) 1);  
    80 qed "succ_not_lepoll_lemma";
    83 qed "succ_not_lepoll_lemma";
    81 
    84 
    82 Goalw [lepoll_def, eqpoll_def, bij_def, surj_def]
    85 Goalw [lepoll_def, eqpoll_def, bij_def, surj_def]
    83         "[| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B";
    86         "[| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B";
    84 by (fast_tac (claset() addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1);
    87 by (fast_tac (claset() addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1);
   249 (*      where a is certain k-2 element subset of y                        *)
   252 (*      where a is certain k-2 element subset of y                        *)
   250 (* ********************************************************************** *)
   253 (* ********************************************************************** *)
   251 
   254 
   252 Goal "[| l eqpoll a; a \\<subseteq> y |] ==> y - a eqpoll y";
   255 Goal "[| l eqpoll a; a \\<subseteq> y |] ==> y - a eqpoll y";
   253 by (cut_facts_tac [WO_R, Infinite, lnat] 1);
   256 by (cut_facts_tac [WO_R, Infinite, lnat] 1);
   254 by (fast_tac (empty_cs addIs [lepoll_lesspoll_lesspoll]
   257 by (fast_tac (empty_cs addIs [lesspoll_trans1]
   255         addSIs [Card_cardinal, Diff_lesspoll_eqpoll_Card RS eqpoll_trans,
   258         addSIs [Card_cardinal, Diff_lesspoll_eqpoll_Card RS eqpoll_trans,
   256                 Card_cardinal RS Card_is_Ord RS nat_le_infinite_Ord
   259                 Card_cardinal RS Card_is_Ord RS nat_le_infinite_Ord
   257                 RS le_imp_lepoll]
   260                 RS le_imp_lepoll]
   258         addSEs [well_ord_cardinal_eqpoll,
   261         addSEs [well_ord_cardinal_eqpoll,
   259                 well_ord_cardinal_eqpoll RS eqpoll_sym,
   262                 well_ord_cardinal_eqpoll RS eqpoll_sym,
   260                 eqpoll_sym RS eqpoll_imp_lepoll,
   263                 eqpoll_sym RS eqpoll_imp_lepoll,
   261                 n_lesspoll_nat RS lesspoll_lepoll_lesspoll,
   264                 n_lesspoll_nat RS lesspoll_trans2,
   262                 well_ord_cardinal_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll
   265                 well_ord_cardinal_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll
   263                 RS lepoll_infinite]) 1);
   266                 RS lepoll_infinite]) 1);
   264 qed "Diff_Finite_eqpoll";
   267 qed "Diff_Finite_eqpoll";
   265 
   268 
   266 Goalw [s_def] "s(u) \\<subseteq> t_n";
   269 Goalw [s_def] "s(u) \\<subseteq> t_n";
   603 by (etac zero_lt_natE 1); 
   606 by (etac zero_lt_natE 1); 
   604 by (assume_tac 1);
   607 by (assume_tac 1);
   605 by (Clarify_tac 1);
   608 by (Clarify_tac 1);
   606 by (DEPTH_SOLVE (ares_tac [export conclusion] 1));
   609 by (DEPTH_SOLVE (ares_tac [export conclusion] 1));
   607 qed "AC16_WO4";
   610 qed "AC16_WO4";
       
   611