author | wenzelm |
Tue, 02 May 2006 20:42:34 +0200 | |
changeset 19538 | ae6d01fa2d8a |
parent 16417 | 9bc16273c2d4 |
child 24893 | b8ef7afe3a6b |
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 |
||
16417 | 8 |
theory Hartog imports AC_Equiv begin |
12776 | 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 |
|
13339
0f89104dd377
Fixed quantified variable name preservation for ball and bex (bounded quants)
paulson
parents:
12820
diff
changeset
|
77 |
lepoll_trans [THEN Hartog_lepoll_selfE]) |
12776 | 78 |
|
79 |
lemma Card_Hartog: "Card(Hartog(A))" |
|
80 |
by (fast intro!: CardI Ord_Hartog elim: less_HartogE) |
|
1123 | 81 |
|
1203 | 82 |
end |