src/ZF/AC/Cardinal_aux.ML
changeset 8123 a71686059be0
parent 6153 bff90585cce5
child 11317 7f9e4c389318
equal deleted inserted replaced
8122:b43ad07660b9 8123:a71686059be0
     9 (* Lemmas involving ordinals and cardinalities used in the proofs         *)
     9 (* Lemmas involving ordinals and cardinalities used in the proofs         *)
    10 (* concerning AC16 and DC                                                 *)
    10 (* concerning AC16 and DC                                                 *)
    11 (* ********************************************************************** *)
    11 (* ********************************************************************** *)
    12 
    12 
    13 (* j=|A| *)
    13 (* j=|A| *)
    14 goal Cardinal.thy
    14 Goal "[| A lepoll i; Ord(i) |] ==> EX j. j le i & A eqpoll j";
    15     "!!A. [| A lepoll i; Ord(i) |] ==> EX j. j le i & A eqpoll j";
    15 by (blast_tac (claset() addSIs [lepoll_cardinal_le, well_ord_Memrel,
    16 by (fast_tac (claset() addIs [lepoll_cardinal_le, well_ord_Memrel,
    16 				well_ord_cardinal_eqpoll RS eqpoll_sym]
    17                             well_ord_cardinal_eqpoll RS eqpoll_sym]
    17                         addDs [lepoll_well_ord]) 1);
    18                     addDs [lepoll_well_ord]) 1);
       
    19 qed "lepoll_imp_ex_le_eqpoll";
    18 qed "lepoll_imp_ex_le_eqpoll";
    20 
    19 
    21 (* j=|A| *)
    20 (* j=|A| *)
    22 goalw Cardinal.thy [lesspoll_def]
    21 Goalw [lesspoll_def]
    23     "!!A a. [| A lesspoll i; Ord(i) |] ==> EX j. j<i & A eqpoll j";
    22     "[| A lesspoll i; Ord(i) |] ==> EX j. j<i & A eqpoll j";
    24 by (fast_tac (claset() addSDs [lepoll_imp_ex_le_eqpoll] addSEs [leE]) 1);
    23 by (blast_tac (claset() addSDs [lepoll_imp_ex_le_eqpoll] addSEs [leE]) 1);
    25 qed "lesspoll_imp_ex_lt_eqpoll";
    24 qed "lesspoll_imp_ex_lt_eqpoll";
    26 
    25 
    27 Goalw [InfCard_def] "[| ~Finite(i); Ord(i) |] ==> InfCard(|i|)";
    26 Goalw [InfCard_def] "[| ~Finite(i); Ord(i) |] ==> InfCard(|i|)";
    28 by (rtac conjI 1);
    27 by (rtac conjI 1);
    29 by (rtac Card_cardinal 1);
    28 by (rtac Card_cardinal 1);
   159 by (eres_inst_tac [("P","%z. x:F(z)"),("i","c")] less_LeastE 1);
   158 by (eres_inst_tac [("P","%z. x:F(z)"),("i","c")] less_LeastE 1);
   160 by (eresolve_tac [Ord_Least RSN (2, ltI)] 1);
   159 by (eresolve_tac [Ord_Least RSN (2, ltI)] 1);
   161 qed "UN_eq_UN_Diffs";
   160 qed "UN_eq_UN_Diffs";
   162 
   161 
   163 Goalw [lepoll_def, eqpoll_def]
   162 Goalw [lepoll_def, eqpoll_def]
   164         "a lepoll X ==> EX Y. Y<=X & a eqpoll Y";
   163      "a lepoll X ==> EX Y. Y<=X & a eqpoll Y";
   165 by (etac exE 1);
   164 by (etac exE 1);
   166 by (forward_tac [subset_refl RSN (2, restrict_bij)] 1);
   165 by (forward_tac [subset_refl RSN (2, restrict_bij)] 1);
   167 by (res_inst_tac [("x","f``a")] exI 1);
   166 by (res_inst_tac [("x","f``a")] exI 1);
   168 by (fast_tac (claset() addSEs [inj_is_fun RS fun_is_rel RS image_subset]) 1);
   167 by (fast_tac (claset() addSEs [inj_is_fun RS fun_is_rel RS image_subset]) 1);
   169 qed "lepoll_imp_eqpoll_subset";
   168 qed "lepoll_imp_eqpoll_subset";
   174 
   173 
   175 Goal "[| A eqpoll a; ~Finite(a); Card(a); B lesspoll a;  \
   174 Goal "[| A eqpoll a; ~Finite(a); Card(a); B lesspoll a;  \
   176 \               A-B lesspoll a |] ==> P";
   175 \               A-B lesspoll a |] ==> P";
   177 by (REPEAT (eresolve_tac [lesspoll_imp_ex_lt_eqpoll RS exE,
   176 by (REPEAT (eresolve_tac [lesspoll_imp_ex_lt_eqpoll RS exE,
   178         Card_is_Ord, conjE] 1));
   177         Card_is_Ord, conjE] 1));
   179 by (forw_inst_tac [("j","xa")] (lt_Ord RS (lt_Ord RSN (2, Un_upper1_le))) 1
   178 by (forw_inst_tac [("j","xa")] ([lt_Ord, lt_Ord] MRS Un_upper1_le) 1
   180         THEN (assume_tac 1));
   179         THEN (assume_tac 1));
   181 by (forw_inst_tac [("j","xa")] (lt_Ord RS (lt_Ord RSN (2, Un_upper2_le))) 1
   180 by (forw_inst_tac [("j","xa")] ([lt_Ord, lt_Ord] MRS Un_upper2_le) 1
   182         THEN (assume_tac 1));
   181         THEN (assume_tac 1));
   183 by (dtac Un_least_lt 1 THEN (assume_tac 1));
   182 by (dtac Un_least_lt 1 THEN (assume_tac 1));
   184 by (dresolve_tac [le_imp_lepoll RSN
   183 by (dresolve_tac [le_imp_lepoll RSN
   185         (2, eqpoll_imp_lepoll RS lepoll_trans)] 1
   184         (2, eqpoll_imp_lepoll RS lepoll_trans)] 1
   186         THEN (assume_tac 1));
   185         THEN (assume_tac 1));