| 1478 |      1 | (*  Title:      ZF/AC/Hartog.thy
 | 
| 1123 |      2 |     ID:         $Id$
 | 
| 1478 |      3 |     Author:     Krzysztof Grabczewski
 | 
| 1123 |      4 | 
 | 
|  |      5 | Hartog's function.
 | 
|  |      6 | *)
 | 
|  |      7 | 
 | 
| 12776 |      8 | theory Hartog = AC_Equiv:
 | 
|  |      9 | 
 | 
|  |     10 | constdefs
 | 
|  |     11 |   Hartog :: "i => i"
 | 
|  |     12 |    "Hartog(X) == LEAST i. ~ i \<lesssim> X"
 | 
|  |     13 | 
 | 
|  |     14 | lemma Ords_in_set: "\<forall>a. Ord(a) --> a \<in> X ==> P"
 | 
|  |     15 | apply (rule_tac X1 = "{y \<in> X. Ord (y) }" in ON_class [THEN revcut_rl])
 | 
|  |     16 | apply fast
 | 
|  |     17 | done
 | 
| 1123 |     18 | 
 | 
| 12776 |     19 | lemma Ord_lepoll_imp_ex_well_ord:
 | 
|  |     20 |      "[| Ord(a); a \<lesssim> X |] 
 | 
|  |     21 |       ==> \<exists>Y. Y \<subseteq> X & (\<exists>R. well_ord(Y,R) & ordertype(Y,R)=a)"
 | 
|  |     22 | apply (unfold lepoll_def)
 | 
|  |     23 | apply (erule exE)
 | 
|  |     24 | apply (intro exI conjI)
 | 
|  |     25 |   apply (erule inj_is_fun [THEN fun_is_rel, THEN image_subset])
 | 
|  |     26 |  apply (rule well_ord_rvimage [OF bij_is_inj well_ord_Memrel]) 
 | 
|  |     27 |   apply (erule restrict_bij [THEN bij_converse_bij]) 
 | 
| 12820 |     28 | apply (rule subset_refl, assumption) 
 | 
| 12776 |     29 | apply (rule trans) 
 | 
|  |     30 | apply (rule bij_ordertype_vimage) 
 | 
|  |     31 | apply (erule restrict_bij [THEN bij_converse_bij]) 
 | 
|  |     32 | apply (rule subset_refl) 
 | 
|  |     33 | apply (erule well_ord_Memrel) 
 | 
|  |     34 | apply (erule ordertype_Memrel) 
 | 
|  |     35 | done
 | 
|  |     36 | 
 | 
|  |     37 | lemma Ord_lepoll_imp_eq_ordertype:
 | 
|  |     38 |      "[| Ord(a); a \<lesssim> X |] ==> \<exists>Y. Y \<subseteq> X & (\<exists>R. R \<subseteq> X*X & ordertype(Y,R)=a)"
 | 
| 12820 |     39 | apply (drule Ord_lepoll_imp_ex_well_ord, assumption, clarify)
 | 
| 12776 |     40 | apply (intro exI conjI)
 | 
|  |     41 | apply (erule_tac [3] ordertype_Int, auto) 
 | 
|  |     42 | done
 | 
| 1123 |     43 | 
 | 
| 12776 |     44 | lemma Ords_lepoll_set_lemma:
 | 
|  |     45 |      "(\<forall>a. Ord(a) --> a \<lesssim> X) ==>   
 | 
|  |     46 |        \<forall>a. Ord(a) -->   
 | 
|  |     47 |         a \<in> {b. Z \<in> Pow(X)*Pow(X*X), \<exists>Y R. Z=<Y,R> & ordertype(Y,R)=b}"
 | 
|  |     48 | apply (intro allI impI)
 | 
|  |     49 | apply (elim allE impE, assumption)
 | 
|  |     50 | apply (blast dest!: Ord_lepoll_imp_eq_ordertype intro: sym) 
 | 
|  |     51 | done
 | 
|  |     52 | 
 | 
|  |     53 | lemma Ords_lepoll_set: "\<forall>a. Ord(a) --> a \<lesssim> X ==> P"
 | 
|  |     54 | by (erule Ords_lepoll_set_lemma [THEN Ords_in_set])
 | 
|  |     55 | 
 | 
|  |     56 | lemma ex_Ord_not_lepoll: "\<exists>a. Ord(a) & ~a \<lesssim> X"
 | 
|  |     57 | apply (rule ccontr)
 | 
|  |     58 | apply (best intro: Ords_lepoll_set) 
 | 
|  |     59 | done
 | 
| 1123 |     60 | 
 | 
| 12776 |     61 | lemma not_Hartog_lepoll_self: "~ Hartog(A) \<lesssim> A"
 | 
|  |     62 | apply (unfold Hartog_def)
 | 
|  |     63 | apply (rule ex_Ord_not_lepoll [THEN exE])
 | 
|  |     64 | apply (rule LeastI, auto) 
 | 
|  |     65 | done
 | 
|  |     66 | 
 | 
|  |     67 | lemmas Hartog_lepoll_selfE = not_Hartog_lepoll_self [THEN notE, standard]
 | 
| 1123 |     68 | 
 | 
| 12776 |     69 | lemma Ord_Hartog: "Ord(Hartog(A))"
 | 
|  |     70 | by (unfold Hartog_def, rule Ord_Least)
 | 
|  |     71 | 
 | 
|  |     72 | lemma less_HartogE1: "[| i < Hartog(A); ~ i \<lesssim> A |] ==> P"
 | 
|  |     73 | by (unfold Hartog_def, fast elim: less_LeastE)
 | 
|  |     74 | 
 | 
|  |     75 | lemma less_HartogE: "[| i < Hartog(A); i \<approx> Hartog(A) |] ==> P"
 | 
|  |     76 | by (blast intro: less_HartogE1 eqpoll_sym eqpoll_imp_lepoll 
 | 
|  |     77 |                  lepoll_trans [THEN Hartog_lepoll_selfE]);
 | 
|  |     78 | 
 | 
|  |     79 | lemma Card_Hartog: "Card(Hartog(A))"
 | 
|  |     80 | by (fast intro!: CardI Ord_Hartog elim: less_HartogE)
 | 
| 1123 |     81 | 
 | 
| 1203 |     82 | end
 |