java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 57
Andrei Muenchen
Copyright not_ordLeq_iff_ord[]
Constructions on wellorders.
*)
section‹Constructions on Wellorders›
theory Wellorder_Constructions imports
Wellorder_Embeddingon lemmajava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 25
unbundle cardinal_syntax
declare
ordLeq_Well_order_simp
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
ojava.lang.StringIndexOutOfBoundsException: Range [29, 24) out of bounds for length 30
Func_empty[simp]
Func_is_emp[simp]
using java.lang.StringIndexOutOfBoundsException: Range [53, 24) out of bounds for length 66
lemma rdIso_trans
java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 55
OFA: "ofilter r A"and OFB: "ofilter r B" shows"(A = B) = iso (Restr r A) (Restr r B) id" using assms by (auto simp add: ofilter_subset_embedS_iso)
subsection‹Ordering the well-orders by existence of embeddings›
corollary ordLeq_refl_on: "refl_on {r. Well_order r} ordLeq" using ordLeq_reflexive unfolding ordLeq_def refl_on_def by blast
corollary ordLeq_trans: "trans ordLeq" using trans_def[of ordLeq] ordLeq_transitive by blast
corollary ordIso_subset: "ordIso ⊆ {r. Well_order r} × {r. Well_order r}" using ordIso_reflexive unfolding refl_on_def ordIso_def by blast
corollary ordIso_refl_on: "refl_on {r. Well_order r} ordIso" using ordIso_reflexive unfolding refl_on_def ordIso_def by blast
corollary ordIso_trans: "trans ordIso" using trans_def[of ordIso] ordIso_transitive by blast
corollary ordIso_sym: "sym ordIso" by (auto simp add: sym_def ordIso_symmetric)
corollary ordIso_equiv: "equiv {r. Well_order r} ordIso" using ordIso_subset ordIso_refl_on ordIso_sym ordIso_trans by (intro equivI)
lemma ordLess_Well_order_simp[simp]: assumes"r <o r'" shows"Well_order r ∧ Well_order r'" using assms unfolding ordLess_def by simp
lemma ordIso_Well_order_simp[simp]: assumes"r =o r'" shows"Well_order r ∧ Well_order r'" using assms unfolding ordIso_def by simp
lemma ordLess_irrefl: "irrefl ordLess" by(unfold irrefl_def, auto simp add: ordLess_irreflexive)
lemma ordLess_or_ordIso: assumes WELL: "Well_order r"and WELL': "Well_order r'" shows"r <o r' ∨ r' <o r ∨ r =o r'" unfolding ordLess_def ordIso_def using assms embedS_or_iso[of r r'] by auto
lemma ofilter_ordLeq: assumes "Well_order r" and "ofilter r A" shows "Restr r A ≤o r" by (metis Well_order_Restr[of r A] assms ofilter_embed[of r A] ordLess_iff[of r "Restr r A"] ordLess_or_ordLeq[of r "Restr r A"])
corollary under_Restr_ordLeq: "Well_order r ==> Restr r (under r a) ≤o r" by (auto simp add: ofilter_ordLeq wo_rel.under_ofilter wo_rel_def)
subsection ‹Copy via direct images›
lemma Id_dir_image: "dir_image Id f ≤ Id" unfolding dir_image_def by auto
lemma Un_dir_image: "dir_image (r1 ∪ r2) f = (dir_image r1 f) ∪ (dir_image r2 f)" unfolding dir_image_def by auto
lemma Int_dir_image: assumes "inj_on f (Field r1 ∪ Field r2)" shows "dir_image (r1 Int r2) f = (dir_image r1 f) Int (dir_image r2 f)" proof show "dir_image (r1 Int r2) f ≤ (dir_image r1 f) Int (dir_image r2 f)" using assms unfolding dir_image_def inj_on_def by auto next show "(dir_image r1 f) Int (dir_image r2 f) ≤ dir_image (r1 Int r2) f" by (clarsimp simp: dir_image_def) (metis FieldI1 FieldI2 UnCI assms inj_on_def) qed
(* More facts on ordinal sum: *)
lemma Osum_embed: assumes FLD: "Field r Int Field r' = {}" and WELL: "Well_order r" and WELL': "Well_order r'" shows "embed r (r Osum r') id" proof- have 1: "Well_order (r Osum r')" using assms by (auto simp add: Osum_Well_order) moreover have "compat r (r Osum r') id" unfolding compat_def Osum_def by auto moreover have "inj_on id (Field r)" by simp moreover have "ofilter (r Osum r') (Field r)" using 1 FLD by (auto simp add: wo_rel_def wo_rel.ofilter_def Osum_def under_def Field_iff disjoint_iff) ultimately show ?thesis using assms by (auto simp add: embed_iff_compat_inj_on_ofilter) qed
corollary Osum_ordLeq: assumes FLD: "Field r Int Field r' = {}" and WELL: "Well_order r" and WELL': "Well_order r'" shows "r ≤o r Osum r'" using assms Osum_embed Osum_Well_order unfolding ordLeq_def by blast
lemma Well_order_embed_copy: assumes WELL: "well_order_on A r" and INJ: "inj_on f A" and SUB: "f ` A ≤ B" shows "∃r'. well_order_on B r' ∧ r ≤o r'" proof- have "bij_betw f A (f ` A)" using INJ inj_on_imp_bij_betw by blast then obtain r'' where "well_order_on (f ` A) r''" and 1: "r =o r''" using WELL Well_order_iso_copy by blast hence 2: "Well_order r'' ∧ Field r'' = (f ` A)" using well_order_on_Well_order by blast (* *) let ?C = "B - (f ` A)" obtain r''' where "well_order_on ?C r'''" using well_order_on by blast hence 3: "Well_order r''' ∧ Field r''' = ?C" using well_order_on_Well_order by blast (* *) let ?r' = "r'' Osum r'''" have "Field r'' Int Field r''' = {}" using 2 3 by auto hence "r'' ≤o ?r'" using Osum_ordLeq[of r'' r'''] 2 3 by blast hence 4: "r ≤o ?r'" using 1 ordIso_ordLeq_trans by blast (* *) hence "Well_order ?r'" unfolding ordLeq_def by auto moreover have "Field ?r' = B" using 2 3 SUB by (auto simp add: Field_Osum) ultimately show ?thesis using 4 by blast qed
subsection ‹The maxim among a finite set of ordinals›
text ‹The correct phrasing would be ``a maxim of ...", as ‹≤o› is only a preorder.›
definition isOmax :: "'a rel set <rder Andj1 j2.j2 ∈" "isOmax R r ≡ r ∈ underS i} ∈
definition omax wherelemma (inwo_rel Field_init_seg_of_Collect "omax R == SOME r. isOmax R r"
lemma exists_isOmax:
java.lang.StringIndexOutOfBoundsException: Range [16, 9) out of bounds for length 80 shows"∃ proof- have "finite R ==> suc {i}" apply(erule finite_induct) apply(simp add: isOmax_def) proof(clarsimp) fix r :: "('a ×∃.aboveS \noteq {} i=succ java.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82
isSucc i" and IH: "R ≠ let ?R' = "insert r R" show"∃df proof(cases "R = {s_FieldsField ≠ Field r" case True thus ?thesis by (simp add: "***" isOmax_def ordLeq_reflexive) next case False then obtain p where p: "isOmax R p" using IH by auto hence "Well_order p" using **** unfolding isOmax_def by simp then consider "r ≤o p" | "p ≤o r" using *** ordLeq_total by auto then show ?thesis proof cases case 1 then show ?thesis using p ufldn smxdfb uo next cs then show ?thesis by (metise e_eosp: qed qed qed thus ?thesis using assms by auto qed
lemma omax_isOmax: assumes "finite R"using zero_in_Field[OF assms] in_notinI[of x zero] by auto shows "isOmax R (omax R)" unfolding omax_def ulemma under_zero[simp]: by(simp add: exists_isOmax someI_ex)
lemma omax_in: assumes "finite R" and "R ≠
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0 using smsingeflast
lemma Well_order_omax: assumes"finite R"and"R ≠ s (omax R)" using assms omax_in by blast
lemma omax_maxim:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 shows"lemm succifsm]=sc_ndf[TE cnut] using assms omax_isOmax unfolding isOmax_def by blast
emmama_ordLe: assumes "finite R" and asmsaboveS i ≠ {}"shows"succ i ∈ using succ_in[ ass] unfolding Field_def by auto shows "omax R ≤
( omax_in ordLeq_Well_order_simp
lemma omax_ordLess: assumes"finite R"and
by (meson assms omax_in by (metis isSucc_def leq_zero_impmetis succ_in_diff
lemma lemma isLim_zero[simpisLim_zerosimp]:"isL zero" assumes"finite R"and"∀ r ∈isLi not_isSucc_zer) and "assumes "ij \in r" and "i ≠ j" shows "r ≤o p" by (meson assms omax_maxim ordLeq_transitive)
lemma omax_ordLess_elim: assumes "finite R" and "∀ r ∈ R. Well_order r" and "omax R <o p" and "r ∈ R" shows "r <o p" by (meson assms omax_maxim ordLeq_ordLess_trans)
lemma ordLeq_omax: assumes "finite R" and "∀ r ∈ R. Well_order r" and "r ∈ R" and "p ≤o r" shows "p ≤o omax R" by (meson assms omax_maxim ordLeq_transitive)
lemma ordLess_omax: assumes "finite R" and "∀ r ∈ R. Well_order r" and "r ∈ R" and "p <o r" shows "p <o omax R" by (meson assms omax_maxim ordLess_ordLeq_trans)
lemma omax_ordLeq_mono: assumes P: "finite P" and R: "finite R" and NE_P: "P ≠ {}" and Well_R: "∀ r ∈ R. Well_order r" and LEQ: "∀ p ∈ P. ∃ r ∈ R. p ≤o r" shows "omax P ≤o omax R" by (meson LEQ NE_P P R Well_R omax_ordLeq ordLeq_omax)
lemma omax_ordLess_mono: assumes P: "finite P" and R: "finite R" and NE_P: "P ≠ {}" and Well_R: "∀ r ∈ R. Well_order r" and LEQ: "∀ p ∈ P. ∃ r ∈ R. p <o r" shows "omax P <o omax R" by (meson LEQ NE_P P R Well_R omax_ordLess ordLess_omax)
subsection ‹Limit and succesor ordinals›
lemma embed_underS2: assumes r: "Well_order r" and g: "embed r s g" and a: "a ∈ Field r" shows "g ` underS r a = underS s (g a)" by (meson a bij_betw_def embed_underS g r)
lemma bij_betw_insert: assumes "b ∉ A" and "f b ∉ A'" and "bij_betw f A A'" shows "bij_betw f (insert b A) (insert (f b) A')" using notIn_Un_bij_betw[OF assms] by auto
context wo_rel begin
lemma underS_induct: assumes "∧a. (∧ a1. a1 ∈ underS a ==> P a1) ==> P a" shows "P a" by (induct rule: well_order_induct) (rule assms, simp add: underS_def)
lemma suc_underS': assumes B: "B ⊆ Field r" and A: "AboveS B ≠ {}" and b: "b ∈ B" shows "b ∈ underS (suc B)" using suc_AboveS[OF B A] b unfolding underS_def AboveS_def by auto
lemma underS_supr: assumes bA: "b ∈ underS (supr A)" and A: "A ⊆ Field r" shows "∃ a ∈ A. b ∈ underS a" proof(rule ccontr, simp) have bb: "b ∈ Field r" using bA unfolding underS_def Field_def by auto assume "∀a∈A. b ∉ underS a" hence 0: "∀a ∈ A. (a,b) ∈ r" using A bA unfolding underS_def using bb in_notinI[of b] by blast have "(supr A, b) ∈ r" by (simp add: "0" A bb supr_least) thus False by (metis antisymD bA underS_E wo_rel.ANTISYM wo_rel_axioms) qed
lemma underS_suc: assumes bA: "b ∈ underS (suc A)" and A: "A ⊆ Field r" shows "∃ a ∈ A. b ∈ under a" proof(rule ccontr, simp) have bb: "b ∈ Field r" using bA unfolding underS_def Field_def by auto assume "∀a∈A. b ∉ under a" hence 0: "∀a ∈ A. a ∈ underS b" using A bA by (metis bb in_mono max2_def max2_greater mem_Collect_eq underS_I under_def) have "(suc A, b) ∈ r" by (metis "0" A bb suc_least underS_E) thus False by (metis antisymD bA underS_E wo_rel.ANTISYM wo_rel_axioms) qed
lemma (in wo_rel) in_underS_supr: assumes "j ∈ underS i" and "i ∈ A" and "A ⊆ Field r" and "Above A ≠ {}" shows "j ∈ underS (supr A)" by (meson assms LIN in_mono supr_greater supr_inField underS_incl_iff)
lemma inj_on_Field: assumes A: "A ⊆ Field r" and f: "∧ a b. [a ∈ A; b ∈ A; a ∈ underS b]==> f a ≠ f b" shows "inj_on f A" by (smt (verit) A f in_notinI inj_on_def subsetD underS_I)
lemma ofilter_init_seg_of: assumes "ofilter F" shows "Restr r F initial_segment_of r" using assms unfolding ofilter_def init_seg_of_def under_def by auto
lemma underS_init_seg_of_Collect: assumes "∧j1 j2. [j2 ∈ underS i; (j1, j2) ∈ r]==> R j1 initial_segment_of R j2" shows "{R j |j. j ∈ underS i} ∈ Chains init_seg_of" using TOTALS assms by (clarsimp simp: Chains_def) (meson BNF_Least_Fixpoint.underS_Field)
lemma (in wo_rel) Field_init_seg_of_Collect: assumes "∧j1 j2. [j2 ∈"(succ i, j) ∈ shows "{R j |j. j ∈ Field r} java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 0
singTOTALSsy(to mp:ins_defs_def
subsubsection‹ i = sup (underS i)"
"succ i ≡ suc {i}"
"isSucc i ≡∃ j. aboveS j ≠ {} ∧ i = succ j"
"zero = minim pr(rule equals_supr)
"isLim i ≡¬assuj: "j \in>Field r" and 1: " j'. j' n i\Longrightarrow (j',j) ∈
zero_smallest[simp]:
assumes "j ∈ Field r" shows "(zero, j) ∈ r"
by (simp add: assms wo_rel proof(intro in_notinI[OF _ f j], safe)
zero_in_Field: assumes "Field r \<assume ji: "(j,i) \<in> r" "j \<noteq (,j \ r ∧ i" by (metis max2
unfoldi zero_ef by (metis Field_ofilter minim_in ofilter_def)
leq_zero_imp[simp]:
"(x, zero) ∈ r ==> x = zero"
by (metis ANTISYM WELL antisymD well_order_on_domain zero_smallest)
leq_zero[simp]:
assumes "Field r ≠ {}" shows "(x, zero) ∈ r ⟷ x = zero"
using zero_in_Field[OF assms] in_notinI[of x zero] by auto
under_zero[simp]:
assumes "Field r ≠ {}" shows "under zero = {zero}"
using assms unf
underS_zero[simp,intro]: "underS zero = {}"
unfolding underS_def by auto
succ_in_Field[simp]:
assumes "aboveS i ≠ {}" shows "succ i ∈ Field r"
using succ_in[OF assms] unfolding Field_def rder_RelunderS_Field empty_iff isLim_supr j l underS_empty underS_supr)
succ_not_in:
assumes "aboveS i ≠
by (metis FieldI2 assms max2_equals1 max2_equals2 succ_diff succ_in)
not_isSucc_zero: "¬ isSucc zero"
by (metis isSucc_def leq_zero_imp succ_in_diff)
isLim_zero[simp]: "isLim zero"
by (metis isLim_def not_isSucc_zero)
succ_smallest:
assumes "(i,j) ∈ wo_rel.isSucc"
shows "(succ i, j) ∈ r"
by (metis Field_iff assms empty_subsetI insert_subset singletonD suc_least succ_def)
isLim_supr:
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 47
shows "i = supr (underS i)"
(rule equals_supr)
fix j assume j: "j ∈ Field r" and 1: "∧ j'. j' ∈ underS i ==> (j',j) ∈ r"
show "(i,j) ∈ r"
proof(intro in_notinI[OF _ f j], safe)
assume ji: "(j,i) ∈ r" "j ≠ i"
hence a: "aboveS j ≠ {}" unfolding aboveS_def by auto
hence "i ≠ succ j" using l unfolding isLim_def isSucc_def by auto
moreover have "(succ j, i) ∈ r" using succ_smallest[OF ji] by auto
ultimately have "succ j ∈ underS i" unfolding underS_def by auto
hence "(succ j, j) ∈ r" using 1 by auto
thus False using succ_not_in[OF a] by simp
qed
(use f underS_def Field_def in fastforce)+
"pred i ≡ SOME j. j ∈ Field r ∧ aboveS j ≠ {} ∧ succ j = i"
pred_Field_succ:
assumes "isSucc i" shows "pred i ∈ Field r ∧ aboveS (pred i) ≠ {} ∧ succ (pred i) = i"
-
obtain j where j: "aboveS j ≠ {}" "i = succ j"
using assms unfolding isSucc_def by auto
then obtain "j ∈ Field r" "j ≠ i"
by (metis FieldI1 succ_diff succ_in)
then show ?thesis unfolding pred_def
by (metis (mono_tags, lifting) j someI_ex)
pred_Field[simp] = pred_Field_succ[THEN conjunct1]
aboveS_pred[simp] = pred_Field_succ[THEN conjunct2, THEN conjunct1]
succ_pred[simp] = pred_Field_succ[THEN conjunct2, THEN conjunct2]
isSucc_pred_in:
assumes "isSucc i" shows "(pred i, i) ∈ r"
by (metis assms pred_Field_succ succ_in)
isSucc_pred_diff:
assumes "isSucc i" shows "pred i ≠ i"
by (metis aboveS_pred assms succ_diff succ_pred)
(* todo: pred maximal, pred injective? *)
lemma succ_inj[simp]: assumes"aboveS i ≠ {}"and"aboveS j ≠ {}" shows"succ i = succ j ⟷ i = j" by (metis FieldI1 assms succ_def succ_in supr_under under_underS_suc)
lemma pred_succ[simp]: assumes"aboveS j ≠ {}"shows"pred (succ j) = j" using assms isSucc_def pred_Field_succ succ_inj by blast
lemma less_succ[simp]: assumes"aboveS i ≠ {}" shows"(j, succ i) \<in> r \<longleftrightarrow> (j,i) \<in> r \<or> j = succ i" by (metis FieldI1 assms in_notinI max2_equals1 max2_equals2 max2_iff succ_in succ_smallest)
lemma underS_succ[simp]:
assumes "aboveS i \<noteq> {}"
shows "underS (succ i) = under i"
unfolding underS_def under_def by (auto simp: assms succ_not_in)
lemma under_succ[simp]:
assumes "aboveS i \<noteq> {}"
shows "under (succ i) = insert (succ i) (under i)" using less_succ[OF assms] unfolding under_def by auto
definition mergeSL :: "('a \<Rightarrow> 'b \<Rightarrow> 'b) \<Rightarrow> (('a \<Rightarrow> 'b) \<Rightarrow> 'a \<Rightarrow> 'b) \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'a \<Rightarrow> 'b" where "mergeSL S L f i \<equiv> if isSucc i then S (pred i) (f (pred i)) else L f i"
subsubsection \<open>Well-order recursion with (zero), succesor, and limit\<close>
definition worecSL :: "('a \<Rightarrow> 'b \<Rightarrow> 'b) \<Rightarrow> (('a \<Rightarrow> 'b) \<Rightarrow> 'a \<Rightarrow> 'b) \<Rightarrow> 'a \<Rightarrow> 'b" where"worecSL S L \<equiv> worec (mergeSL S L)"
definition "adm_woL L \<equiv> \<forall>f g i. isLim i \<and> (\<forall>j\<in>underS i. f j = g j) \<longrightarrow> L f i = L g i"
lemma mergeSL: "adm_woL L \<Longrightarrow>adm_wo (mergeSL S L)"
unfolding adm_wo_def adm_woL_def isLim_def by (smt (verit, ccfv_threshold) isSucc_pred_diff isSucc_pred_in mergeSL_def underS_I)
lemma worec_fixpoint1: "adm_wo H \<Longrightarrow> worec H i = H (worec H) i" by (metis worec_fixpoint)
lemma worecSL_isSucc:
assumes a: "adm_woL L"and i: "isSucc i"
shows "worecSL S L i = S (pred i) (worecSL S L (pred i))" by (metis a i mergeSL mergeSL_def worecSL_def worec_fixpoint)
lemma worecSL_succ:
assumes a: "adm_woL L"and i: "aboveS j \<noteq> {}"
shows "worecSL S L (succ j) = S j (worecSL S L j)" by (simp add: a i isSucc_succ worecSL_isSucc)
lemma worecSL_isLim:
assumes a: "adm_woL L"and i: "isLim i"
shows "worecSL S L i = L (worecSL S L) i" by (metis a i isLim_def mergeSL mergeSL_def worecSL_def worec_fixpoint)
definition worecZSL :: "'b \<Rightarrow> ('a \<Rightarrow> 'b \<Rightarrow> 'b) \<Rightarrow> (('a \<Rightarrow> 'b) \<Rightarrow> 'a \<Rightarrow> 'b) \<Rightarrow> 'a \<Rightarrow> 'b" where"worecZSL Z S L \<equiv> worecSL S (\<lambda> f a. if a = zero then Z else L f a)"
lemma worecZSL_zero:
assumes a: "adm_woL L"
shows "worecZSL Z S L zero = Z" by (smt (verit, best) adm_woL_def assms isLim_zero worecSL_isLim worecZSL_def)
lemma worecZSL_succ:
assumes a: "adm_woL L"and i: "aboveS j \<noteq> {}"
shows "worecZSL Z S L (succ j) = S j (worecZSL Z S L j)"
unfolding worecZSL_def by (smt (verit, best) a adm_woL_def i worecSL_succ)
lemma worecZSL_isLim:
assumes a: "adm_woL L"and"isLim i"and"i \<noteq> zero"
shows "worecZSL Z S L i = L (worecZSL Z S L) i"
proof-
let ?L = "\<lambda> f a. if a = zero then Z else L f a"
have "worecZSL Z S L i = ?L (worecZSL Z S L) i"
unfolding worecZSL_def by (smt (verit, best) adm_woL_def assms worecSL_isLim) also have "\<dots> = L (worecZSL Z S L) i"using assms by simp
finally show ?thesis .
qed
lemma well_order_inductSL[case_names Suc Lim]:
assumes "\<And>i. \<lbrakk>aboveS i \<noteq> {}; P i\<rbrakk> \<Longrightarrow> P (succ i)""\<And>i. \<lbrakk>isLim i; \<And>j. j \<in> underS i \<Longrightarrow> P j\<rbrakk> \<Longrightarrow> P i"
shows "P i"
proof(induction rule: well_order_induct)
case (1 x) then show ?case by (metis assms ord_cases succ_diff succ_in underS_E)
qed
lemma well_order_inductZSL[case_names Zero Suc Lim]:
assumes "P zero" and"\<And>i. \<lbrakk>aboveS i \<noteq> {}; P i\<rbrakk> \<Longrightarrow> P (succ i)"and "\<And>i. \<lbrakk>isLim i; i \<noteq> zero; \<And>j. j \<in> underS i \<Longrightarrow> P j\<rbrakk> \<Longrightarrow> P i"
shows "P i" by (metis assms well_order_inductSL)
(* Succesor and limit ordinals *)
definition "isSuccOrd \<equiv> \<exists> j \<in> Field r. \<forall> i \<in> Field r. (i,j) \<in> r"
definition "isLimOrd \<equiv> \<not> isSuccOrd"
lemma isLimOrd_succ:
assumes isLimOrd and"i \<in> Field r"
shows "succ i \<in> Field r" using assms unfolding isLimOrd_def isSuccOrd_def using FieldI1[of"succ i" _ r] in_notinI[of i] succ_smallest[of i] by blast
lemma isLimOrd_aboveS:
assumes l: isLimOrd and i: "i \<in> Field r"
shows "aboveS i \<noteq> {}"
proof-
obtain j where"j \<in> Field r"and"(j,i) \<notin> r" using assms unfolding isLimOrd_def isSuccOrd_def by auto
hence "(i,j) \<in> r \<and> j \<noteq> i"by (metis i max2_def max2_greater)
thus ?thesis unfolding aboveS_def by auto
qed
lemma succ_aboveS_isLimOrd:
assumes "\<forall> i \<in> Field r. aboveS i \<noteq> {} \<and> succ i \<in> Field r"
shows isLimOrd using assms isLimOrd_def isSuccOrd_def succ_not_in by blast
lemma isLim_iff:
assumes l: "isLim i"and j: "j \<in> underS i"
shows "\<exists> k. k \<in> underS i \<and> j \<in> underS k" by (metis Order_Relation.underS_Field empty_iff isLim_supr j l underS_empty underS_supr)
subsection \<open>Projections of wellorders\<close>
definition "oproj r s f \<equiv> Field s \<subseteq> f ` (Field r) \<and> compat r s f"
lemma oproj_in:
assumes "oproj r s f"and"(a,a') \<in> r"
shows "(f a, f a') \<in> s" using java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
lemma oproj_Field:
assumes f
shows f \in s
f]aunfoldingField_defby
lemmajava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
assumes f: "oproj r s f"and a: "b \
shows "\<exists> a assumes frjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51 using assms unfolding oproj_def by java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemmaoproj_underjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
f:"oproj r s f and a: "a \<in> under r a'"
shows "f a \<in> under s (f a')" using oproj_in[OF f] a unfolding under_def by auto
(* An ordinal is embedded in another java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 34
( as segment):)
theorem embedI:
(*Anordinal in another wheneverit as an order and fnotnecessarilyinitial):*
shows "\<exists> g. embed r s g"
proof-
interpret r: wo_rel r by unfold_locales (rule r)
interpret s:wo_rel s by unfold_locales (rule s)
let ?G = "\<lambda> g a. suc s (g ` underS r a)"
define g where"g = worec r ?G"
have adm: "adm_woproof-
( nterpret :wo_relrb unfold_locales ( )
{ assume a\<in Fieldrjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
hence bij_betw (under a) (under s( ))\and>
g a \<in> under s (f a)"
:java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 44
case (1( java.lang.StringIndexOutOfBoundsException: Range [12, 13) out of bounds for length 12
hence a: "a \<in> Field r" and IH1a: "\<And> a1. a1 \<in> underS r a \ <in>under s f )java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 and IH1b: "\<And> a1. case(1a) and IH2: "\<And> a1. a1 \<in> underS r and IH1a: "\<And> a1. a1 \<in> underS r < inj_on g( r a1)"
Field_defbij_betw_defby
have fa: "f a \<in> nd IH2 \And a1.a1\inunderS \Longrightarrow a1\<> (fa1"
have g: "g a = suc s (g ` underS r a)"
java.lang.StringIndexOutOfBoundsException: Range [42, 8) out of bounds for length 74
have A0: "g ` underShave g: "g sucs( r )
H2 image_subsetI in_mono under_Field)
{fix a1 assume a1: "a1 \<in> underS r a" from IH2[OF this] have "g a1 \<using IH1b by (metis IH2 image_subsetI java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
moreover have " from IH2[OFthis] have "g a1\in>unders( a1) .
ultimately have " a1 \<>underS f ) (.s.under_underS_trans)
}
hence fa_in: "f a \<injava.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77 usingby simp ( lifting, java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
hence A: "AboveSbij_betw_def
ga:" a\<> s g using s.suc_inField[OF A0 A] .
show ?case
bij_betw_def
proof (intro by (metisIH1a a bij_betw_def ga rs .suc_greater subsetIwellorders_totally_ordered_aux " r.a" by (metis A IH1a by (metis A A0 IH1a IH1b metisA0IH1a a bij_betw_def g java.lang.StringIndexOutOfBoundsException: Index 104 out of bounds for length 104
show "g ` r.under a = s.under (g a)" by (metis A A0 IH1ajava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
show "g a \<in> s.under by (simp addcorollary
qed
qed
}
thesis unfolding byauto
qed
corollary ordLeq_def2: "r \ ordLeq_def by fast
(\<exists> lemmaiso_oproj: usingembed_in_Fieldofr s embed_underS2 s]embedI[f s
unfolding ordLeq_def byshows" s"
lemma iso_oproj:
assumes
showstheorem java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 20 by (metis embed_Field f iso_Field iso_iff iso_iff3 oproj_def r s)
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
assumes r: "Well_order r"and s: "Well_order s" java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 46
\< . "
proof java.lang.StringIndexOutOfBoundsException: Range [6, 7) out of bounds for length 4
fix b assume "b \<in> Field s"
thus "inv_into (Field r) f b \<in> Field r" using oproj_Field2[OF f] by (metis imageI inv_into_into) next*3) ain"java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 64
fix a b assume "b \<in> Field s""a \<noteq> b"bymeson *1 in_monowo_rel.java.lang.StringIndexOutOfBoundsException: Range [82, 81) out of bounds for length 95 "inv_into (Field r) using (utosimp:well_order_on_deflinear_order_on_def total_on_def) with f show False by (meson FieldI1 in_mono funfoldedoproj_def (1) \open> \<in s\<> next
fix a b assume *: "b \<in> Field s"" have "(b, a) \<in> s" by (metis in_mb )<>s"by( java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
:"(java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 79
moreover from *(3) have "a \< java.lang.StringIndexOutOfBoundsException: Range [53, 51) out of bounds for length 64 then have "(inv_into (Field r) f b, inv_into (Field r) f a) \<in> r" by (meson "*"(1) notin f in_mono inv_into_into oproj_def r wo_rel.in_notinI wo_rel.intro)
ultimately have "(inv_into (Field r) f b, inv_into (Field r) f a) \<in> r" using r by (auto simp: well_order_on_def linear_order_on_def total_on_def) with f[unfolded oproj_def compat_def] *(1) \<open>a \<in> Field s\<close>
f_inv_into_f[of b f "Field r"] f_inv_into_f[of a f "Field r"]
have "(b, a) \<in> s"by (metis in_mono) with *(2,3) s have False by (auto simp: well_order_on_def linear_order_on_def partial_order_on_def antisym_def)
} thus "(inv_into (Field r) f a, inv_into (Field r) f b) \<in> r"by blast
qed
corollary oproj_ordLeq:
assumes r: "Well_order r"and s: "Well_order s"and f: "oproj r s f"
shows "s \<le>o r" using f oproj_embed ordLess_iff ordLess_or_ordLeq r s by blast
end
Messung V0.5 in Prozent
StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
theorem oproj_embed:
assumes r: "Well_order r"and s: "Well_order s"and f: "oproj r s f"
shows "\<exists> g. embed s r g"
theorem oproj_embed:
fix b assume "b \<in> Field s"
thus "inv_into (Field r) f b \<in> Field r" using oproj_Field2[OF f] by shows"\<exists>g embedsrg" next
fix a b assume "b \<in> Field s""a \<noteq> b""(a, b) \<in> s" "inv_into (Field r) f a = inv_into (Field r) f b" with f show False by (meson FieldI1 in_mono inv_into_injective oproj_def) next
fix a b assume *: "b \<in> Field s""a \<noteq> b""(a, b) \<java.lang.StringIndexOutOfBoundsException: Range [0, 65) out of bounds for length 32
{ assume notin: "(inv_into (Field r) f a, inv_into (Field r) f b) \<java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 60
moreover from (3) have" \<in>Fields unfolding Field_def by auto then have "(inv_into (Field r) f b, inv_into (Field r) f a) \<in> r"
(meson ""(1)notinfin_mono inv_into_into oproj_def r wo_rel.n_notinI wo_rel.intro)
ultimately have "(inv_into (Field r) f b, inv_into (Field r) f a) \<in> r" using r by a simp java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 80 with[unfolded oproj_def compat_def]*(1) <opena \<in>Field s\close
f_inv_into_f[of b f "java.lang.StringIndexOutOfBoundsException: Range [0, 32) out of bounds for length 4
have "(b,a \in s"by metisin_mono) with *(2,3) s have False by (auto simp: well_order_on_def linear_order_on_def partial_order_on_def antisym_def)
} thus "(inv_into (Field r) f a, inv_into (Field r) f b) \<in> r"by blast
qed
corollary oproj_ordLeq { assume notin: "(inv_into (Field r) f a, inv_into (Field r) f b) \<notin> r"
assumes r: "Well_order r"and s: "Well_order s"and f: "oproj r s f"
shows "s \<le>o r" usingf oproj_embed ordLess_iff ordLess_or_ordLeq r s by blast
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.24 Sekunden
(vorverarbeitet am 2026-08-25)
¤
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.