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