(* Auxiliary definitions used in proof *) definition
NN :: "i → i"where "NN(y) ≡ {m ∈ nat. ∃a. ∃f. Ord(a) ∧ domain(f)=a ∧ (∪b<a. f`b) = y ∧ (∀b<a. f`b < 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 = μ g. (∃d. Ord(d) ∧ (domain(uu(f,b,g,d)) ≠ 0 ∧ domain(uu(f,b,g,d)) < m)); d = μ d. domain(uu(f,b,g,d)) ≠ 0 ∧ domain(uu(f,b,g,d)) < m in if f`b ≠ 0 then domain(uu(f,b,g,d)) else 0"
lemma lt_oadd_odiff_disj: "[k < i++j; Ord(i); Ord(j)] ==> k < i | (¬ k<i ∧ k = i ++ (k--i) ∧ (k--i)<j)" apply (rule_tac i = k and j = i in Ord_linear2) prefer4 apply (drule odiff_lt_mono2, assumption) apply (simp add: oadd_odiff_inverse odiff_oadd_inverse) apply (auto elim!: lt_Ord) done
(* ********************************************************************** *) (* The most complicated part of the proof - lemma ii - p. 2-4 *) (* ********************************************************************** *)
(* ********************************************************************** *) (* some properties of relation uu(beta, gamma, delta) - p. 2 *) (* ********************************************************************** *)
lemma domain_uu_subset: "domain(uu(f,b,g,d)) ⊆ f`b" by (unfold uu_def, blast)
lemma quant_domain_uu_lepoll_m: "∀b<a. f`b < m ==>∀b<a. ∀g<a. ∀d<a. domain(uu(f,b,g,d)) < m" by (blast intro: domain_uu_subset [THEN subset_imp_lepoll] lepoll_trans)
(* ********************************************************************** *) (* every value of defined function is less than or equipollent to m *) (* ********************************************************************** *) lemma nested_LeastI: "[P(a, b); Ord(a); Ord(b); Least_a = (μ a. ∃x. Ord(x) ∧ P(a, x))] ==> P(Least_a, μ 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)) < 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] ==> 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 ∪ r*r) ⊆ rec(m, x, λk r. r ∪ 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 und die Messung sind noch experimentell.