[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]
Datei:
WO6_WO1.thy
Sprache: Unknown
(* Title: ZF/AC/WO6_WO1.thy Author: Krzysztof Grabczewski
Proofs needed to state that formulations WO1,...,WO6 are all equivalent. The only hard one is WO6 ==> WO1.
Every proof (except WO6 ==> WO1 and WO1 ==> WO2) are described as "clear" by Rubin & Rubin (page 2). They refer reader to a book by Gödel to see the proof WO1 ==> WO2. Fortunately order types made this proof also very easy.
*)
theory WO6_WO1 imports Cardinal_aux begin
(* Auxiliary definitions used in proof *) definition
NN :: "i => i"where "NN(y) == {m \ nat. \a. \f. Ord(a) & domain(f)=a &
(\<Union>b<a. f`b) = y & (\<forall>b<a. f`b \<lesssim> m)}"
definition
uu :: "[i, i, i, i] => i"where "uu(f, beta, gamma, delta) == (f`beta * f`gamma) \ f`delta"
(** Definitions for case 1 **) definition
vv1 :: "[i, i, i] => i"where "vv1(f,m,b) == let g = \<mu> g. (\<exists>d. Ord(d) & (domain(uu(f,b,g,d)) \<noteq> 0 & domain(uu(f,b,g,d)) \<lesssim> m));
d = \<mu> d. domain(uu(f,b,g,d)) \<noteq> 0 & domain(uu(f,b,g,d)) \<lesssim> m inif f`b \<noteq> 0 then domain(uu(f,b,g,d)) else 0"
(* ********************************************************************** *) (* every value of defined function is less than or equipollent to m *) (* ********************************************************************** *) lemma nested_LeastI: "[| P(a, b); Ord(a); Ord(b);
Least_a = (\<mu> a. \<exists>x. Ord(x) & P(a, x)) |]
==> P(Least_a, \<mu> b. P(Least_a, b))" apply (erule ssubst) apply (rule_tac Q = "%z. P (z, \ b. P (z, b))" in LeastI2) apply (fast elim!: LeastI)+ done
lemmas nested_Least_instance =
nested_LeastI [of "%g d. domain(uu(f,b,g,d)) \ 0 & domain(uu(f,b,g,d)) \<lesssim> m"] for f b m
(* ********************************************************************** *) (* lemma ii *) (* ********************************************************************** *) lemma lemma_ii: "[| succ(m) \ NN(y); y*y \ y; m \ nat; m\0 |] ==> m \ NN(y)" apply (unfold NN_def) apply (elim CollectE exE conjE) apply (rule quant_domain_uu_lepoll_m [THEN cases, THEN disjE], assumption) (* case 1 *) apply (simp add: lesspoll_succ_iff) apply (rule_tac x = "a++a"in exI) apply (fast intro!: Ord_oadd domain_gg1 UN_gg1_eq gg1_lepoll_m) (* case 2 *) apply (elim oexE conjE) apply (rule_tac A = "f`B"for B in not_emptyE, assumption) apply (rule CollectI) apply (erule succ_natD) apply (rule_tac x = "a++a"in exI) apply (rule_tac x = "gg2 (f,a,b,x) "in exI) apply (simp add: Ord_oadd domain_gg2 UN_gg2_eq gg2_lepoll_m) done
(* ********************************************************************** *) (* lemma iv - p. 4: *) (* For every set x there is a set y such that x \<union> (y * y) \<subseteq> y *) (* ********************************************************************** *)
(* The leading \<forall>-quantifier looks odd but makes the proofs shorter
(used only in the following two lemmas) *)
lemma z_n_subset_z_succ_n: "\n \ nat. rec(n, x, %k r. r \ r*r) \ rec(succ(n), x, %k r. r \ r*r)" by (fast intro: rec_succ [THEN ssubst])
lemma le_subsets: "[| \n \ nat. f(n)<=f(succ(n)); n\m; n \ nat; m \ nat |]
==> f(n)<=f(m)" apply (erule_tac P = "n\m" in rev_mp) apply (rule_tac P = "%z. n\z \ f (n) \ f (z) " in nat_induct) apply (auto simp add: le_iff) done
lemma le_imp_rec_subset: "[| n\m; m \ nat |]
==> rec(n, x, %k r. r \<union> r*r) \<subseteq> rec(m, x, %k r. r \<union> r*r)" apply (rule z_n_subset_z_succ_n [THEN le_subsets]) apply (blast intro: lt_nat_in_nat)+ done
lemma lemma_iv: "\y. x \ y*y \ y" apply (rule_tac x = "\n \ nat. rec (n, x, %k r. r \ r*r) " in exI) apply safe apply (rule nat_0I [THEN UN_I], simp) apply (rule_tac a = "succ (n \ na) " in UN_I) apply (erule Un_nat_type [THEN nat_succI], assumption) apply (auto intro: le_imp_rec_subset [THEN subsetD]
intro!: Un_upper1_le Un_upper2_le Un_nat_type
elim!: nat_into_Ord) done
(* ********************************************************************** *) (* Rubin & Rubin wrote, *) (* "It follows from (ii) and mathematical induction that if y*y \<subseteq> y then *) (* y can be well-ordered" *)
(* In fact we have to prove *) (* * WO6 ==> NN(y) \<noteq> 0 *) (* * reverse induction which lets us infer that 1 \<in> NN(y) *) (* * 1 \<in> NN(y) ==> y can be well-ordered *) (* ********************************************************************** *)