src/ZF/Cardinal.ML
changeset 484 70b789956bd3
parent 467 92868dab2939
child 522 e1de521e012a
equal deleted inserted replaced
483:4d1614d8f119 484:70b789956bd3
   199 
   199 
   200 goalw Cardinal.thy [cardinal_def] "!!i. Ord(i) ==> |i| le i";
   200 goalw Cardinal.thy [cardinal_def] "!!i. Ord(i) ==> |i| le i";
   201 by (etac (eqpoll_refl RS Least_le) 1);
   201 by (etac (eqpoll_refl RS Least_le) 1);
   202 val Ord_cardinal_le = result();
   202 val Ord_cardinal_le = result();
   203 
   203 
   204 goalw Cardinal.thy [Card_def] "!!i. Card(i) ==> |i| = i";
   204 goalw Cardinal.thy [Card_def] "!!K. Card(K) ==> |K| = K";
   205 by (etac sym 1);
   205 by (etac sym 1);
   206 val Card_cardinal_eq = result();
   206 val Card_cardinal_eq = result();
   207 
   207 
   208 val prems = goalw Cardinal.thy [Card_def,cardinal_def]
   208 val prems = goalw Cardinal.thy [Card_def,cardinal_def]
   209     "[| Ord(i);  !!j. j<i ==> ~(j eqpoll i) |] ==> Card(i)";
   209     "[| Ord(i);  !!j. j<i ==> ~(j eqpoll i) |] ==> Card(i)";
   214 goalw Cardinal.thy [Card_def, cardinal_def] "!!i. Card(i) ==> Ord(i)";
   214 goalw Cardinal.thy [Card_def, cardinal_def] "!!i. Card(i) ==> Ord(i)";
   215 by (etac ssubst 1);
   215 by (etac ssubst 1);
   216 by (rtac Ord_Least 1);
   216 by (rtac Ord_Least 1);
   217 val Card_is_Ord = result();
   217 val Card_is_Ord = result();
   218 
   218 
   219 goalw Cardinal.thy [cardinal_def] "Ord( |A| )";
   219 goalw Cardinal.thy [cardinal_def] "Ord(|A|)";
   220 by (rtac Ord_Least 1);
   220 by (rtac Ord_Least 1);
   221 val Ord_cardinal = result();
   221 val Ord_cardinal = result();
   222 
   222 
   223 goal Cardinal.thy "Card(0)";
   223 goal Cardinal.thy "Card(0)";
   224 by (rtac (Ord_0 RS CardI) 1);
   224 by (rtac (Ord_0 RS CardI) 1);
   225 by (fast_tac (ZF_cs addSEs [ltE]) 1);
   225 by (fast_tac (ZF_cs addSEs [ltE]) 1);
   226 val Card_0 = result();
   226 val Card_0 = result();
   227 
   227 
   228 goalw Cardinal.thy [cardinal_def] "Card( |A| )";
   228 goalw Cardinal.thy [cardinal_def] "Card(|A|)";
   229 by (excluded_middle_tac "EX i. Ord(i) & i eqpoll A" 1);
   229 by (excluded_middle_tac "EX i. Ord(i) & i eqpoll A" 1);
   230 by (etac (Least_0 RS ssubst) 1 THEN rtac Card_0 1);
   230 by (etac (Least_0 RS ssubst) 1 THEN rtac Card_0 1);
   231 by (rtac (Ord_Least RS CardI) 1);
   231 by (rtac (Ord_Least RS CardI) 1);
   232 by (safe_tac ZF_cs);
   232 by (safe_tac ZF_cs);
   233 by (rtac less_LeastE 1);
   233 by (rtac less_LeastE 1);
   263 by (REPEAT_SOME assume_tac);
   263 by (REPEAT_SOME assume_tac);
   264 by (etac (lt_trans2 RS lt_irrefl) 1);
   264 by (etac (lt_trans2 RS lt_irrefl) 1);
   265 by (etac cardinal_mono 1);
   265 by (etac cardinal_mono 1);
   266 val cardinal_lt_imp_lt = result();
   266 val cardinal_lt_imp_lt = result();
   267 
   267 
   268 goal Cardinal.thy "!!i j. [| |i| < k;  Ord(i);  Card(k) |] ==> i < k";
   268 goal Cardinal.thy "!!i j. [| |i| < K;  Ord(i);  Card(K) |] ==> i < K";
   269 by (asm_simp_tac (ZF_ss addsimps 
   269 by (asm_simp_tac (ZF_ss addsimps 
   270 		  [cardinal_lt_imp_lt, Card_is_Ord, Card_cardinal_eq]) 1);
   270 		  [cardinal_lt_imp_lt, Card_is_Ord, Card_cardinal_eq]) 1);
   271 val Card_lt_imp_lt = result();
   271 val Card_lt_imp_lt = result();
       
   272 
       
   273 goal Cardinal.thy "!!i j. [| Ord(i);  Card(K) |] ==> (|i| < K) <-> (i < K)";
       
   274 by (fast_tac (ZF_cs addEs [Card_lt_imp_lt, Ord_cardinal_le RS lt_trans1]) 1);
       
   275 val Card_lt_iff = result();
       
   276 
       
   277 goal Cardinal.thy "!!i j. [| Ord(i);  Card(K) |] ==> (K le |i|) <-> (K le i)";
       
   278 by (asm_simp_tac (ZF_ss addsimps 
       
   279 		  [Card_lt_iff, Card_is_Ord, Ord_cardinal, 
       
   280 		   not_lt_iff_le RS iff_sym]) 1);
       
   281 val Card_le_iff = result();
   272 
   282 
   273 
   283 
   274 (** The swap operator [NOT USED] **)
   284 (** The swap operator [NOT USED] **)
   275 
   285 
   276 goalw Cardinal.thy [swap_def]
   286 goalw Cardinal.thy [swap_def]