(* 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 \<Longrightarrow> WO1.
Every proof (except WO6 \<Longrightarrow> WO1 and WO1 \<Longrightarrow> WO2) are described as "clear" by Rubin & Rubin (page 2). They refer reader to a book by Gödel to see the proof WO1 \<Longrightarrow> 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 \<and> (\<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) \<and> (domain(uu(f,b,g,d)) \<noteq> 0 \<and> domain(uu(f,b,g,d)) \<lesssim> m));
d = \<mu> d. domain(uu(f,b,g,d)) \<noteq> 0 \<and> domain(uu(f,b,g,d)) \<lesssim> m inif f`b \<noteq> 0 then domain(uu(f,b,g,d)) else 0"
definition
ww1 :: "[i, i, i] \ i" where "ww1(f,m,b) \ f`b - vv1(f,m,b)"
definition
gg1 :: "[i, i, i] \ i" where "gg1(f,a,m) \ \b \ a++a. if b
(* ********************************************************************** *) (* 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) \<and> P(a, x))\<rbrakk> \<Longrightarrow> 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
(* ********************************************************************** *) (* every value of defined function is less than or equipollent to m *) (* ********************************************************************** *)
(* ********************************************************************** *) (* lemma ii *) (* ********************************************************************** *) lemma lemma_ii: "\succ(m) \ NN(y); y*y \ y; m \ nat; m\0\ \ m \ NN(y)" unfolding 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\ \<Longrightarrow> 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\ \<Longrightarrow> rec(n, x, \<lambda>k r. r \<union> r*r) \<subseteq> rec(m, x, \<lambda>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 \<Longrightarrow> NN(y) \<noteq> 0 *) (* * reverse induction which lets us infer that 1 \<in> NN(y) *) (* * 1 \<in> NN(y) \<Longrightarrow> y can be well-ordered *) (* ********************************************************************** *)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.