text‹Lemma for the inductive definition below› lemma Union_in_Pow: "Y ∈ Pow(Pow(A)) ==>∪(Y) ∈ Pow(A)" by blast
text‹We could make the inductive definition conditional on term‹next ∈ increasing(S)›
but instead we make this a side-condition of an introduction rule. Thus
the induction rule lets us assume that condition! Many inductive proofs
are therefore unconditional.› consts "TFin" :: "[i,i]→i"
text‹Lemma 1 of section 3.1› lemma TFin_linear_lemma1: "[n ∈ TFin(S,next); m ∈ TFin(S,next); ∀x ∈ TFin(S,next) . x<=m ⟶ x=m | next`x<=m] ==> n<=m | next`m<=n" apply (erule TFin_induct) apply (erule_tac [2] Union_lemma0) (*or just Blast_tac*) (*downgrade subsetI from intro! to intro*) apply (blast dest: increasing_trans) done
text‹Lemma 2 of section 3.2. Interesting in its own right!
Requires term‹next ∈ increasing(S)› in the second induction step.› lemma TFin_linear_lemma2: "[m ∈ TFin(S,next); next ∈ increasing(S)] ==>∀n ∈ TFin(S,next). n<=m ⟶ n=m | next`n ⊆ m" apply (erule TFin_induct) apply (rule impI [THEN ballI]) txt‹case split using ‹TFin_linear_lemma1›› apply (rule_tac n1 = n and m1 = x in TFin_linear_lemma1 [THEN disjE],
assumption+) apply (blast del: subsetI
intro: increasing_trans subsetI, blast) txt‹second induction step› apply (rule impI [THEN ballI]) apply (rule Union_lemma0 [THEN disjE]) apply (erule_tac [3] disjI2) prefer2apply blast apply (rule ballI) apply (drule bspec, assumption) apply (drule subsetD, assumption) apply (rule_tac n1 = n and m1 = x in TFin_linear_lemma1 [THEN disjE],
assumption+, blast) apply (erule increasingD2 [THEN subset_trans, THEN disjI1]) apply (blast dest: TFin_is_subset)+ done
text‹a more convenient form for Lemma 2› lemma TFin_subsetD: "[n<=m; m ∈ TFin(S,next); n ∈ TFin(S,next); next ∈ increasing(S)] ==> n=m | next`n ⊆ m" by (blast dest: TFin_linear_lemma2 [rule_format])
text‹Consequences from section 3.3 -- Property 3.2, the ordering is total› lemma TFin_subset_linear: "[m ∈ TFin(S,next); n ∈ TFin(S,next); next ∈ increasing(S)] ==> n ⊆ m | m<=n" apply (rule disjE) apply (rule TFin_linear_lemma1 [OF _ _TFin_linear_lemma2]) apply (assumption+, erule disjI2) apply (blast del: subsetI
intro: subsetI increasingD2 [THEN subset_trans] TFin_is_subset) done
text‹Lemma 3 of section 3.3› lemma equal_next_upper: "[n ∈ TFin(S,next); m ∈ TFin(S,next); m = next`m]==> n ⊆ m" apply (erule TFin_induct) apply (drule TFin_subsetD) apply (assumption+, force, blast) done
definition Chain :: "i → i"where "Chain(r) = {A ∈ Pow(field(r)). ∀a∈A. ∀b∈A. ⟨a, b⟩∈ r | ⟨b, a⟩∈ r}"
lemma mono_Chain: "r ⊆ s ==> Chain(r) ⊆ Chain(s)" unfolding Chain_def by blast
theorem Zorn_po: assumes po: "Partial_order(r)" and u: "∀C∈Chain(r). ∃u∈field(r). ∀a∈C. ⟨a, u⟩∈ r" shows"∃m∈field(r). ∀a∈field(r). ⟨m, a⟩∈ r ⟶ a = m" proof - have"Preorder(r)"using po by (simp add: partial_order_on_def) ―‹Mirror r in the set of subsets below (wrt r) elements of A (?).› let ?B = "λx∈field(r). r -`` {x}"let ?S = "?B `` field(r)" have"∀C∈chain(?S). ∃U∈?S. ∀A∈C. A ⊆ U" proof (clarsimp simp: chain_def Subset_rel_def bex_image_simp) fix C assume1: "C ⊆ ?S"and2: "∀A∈C. ∀B∈C. A ⊆ B | B ⊆ A" let ?A = "{x ∈ field(r). ∃M∈C. M = ?B`x}" have"C = ?B `` ?A"using1 apply (auto simp: image_def) apply rule apply rule apply (drule subsetD) apply assumption apply (erule CollectE) apply rule apply assumption apply (erule bexE) apply rule prefer2apply assumption apply rule apply (erule lamE) apply simp apply assumption
apply (thin_tac "C ⊆ X"for X) apply (fast elim: lamE) done have"?A ∈ Chain(r)" proof (simp add: Chain_def subsetI, intro conjI ballI impI) fix a b assume"a ∈ field(r)""r -`` {a} ∈ C""b ∈ field(r)""r -`` {b} ∈ C" hence"r -`` {a} ⊆ r -`` {b} | r -`` {b} ⊆ r -`` {a}"using2by auto thenshow"⟨a, b⟩∈ r | ⟨b, a⟩∈ r" using‹Preorder(r)›‹a ∈ field(r)›‹b ∈ field(r)› by (simp add: subset_vimage1_vimage1_iff) qed thenobtain u where uA: "u ∈ field(r)""∀a∈?A. ⟨a, u⟩∈ r" using u apply auto apply (drule bspec) apply assumption apply auto done have"∀A∈C. A ⊆ r -`` {u}" proof (auto intro!: vimageI) fix a B assume aB: "B ∈ C""a ∈ B" with1obtain x where"x ∈ field(r)""B = r -`` {x}" apply - apply (drule subsetD) apply assumption apply (erule imageE) apply (erule lamE) apply simp done thenshow"⟨a, u⟩∈ r"using uA aB ‹Preorder(r)› by (auto simp: preorder_on_def refl_def) (blast dest: trans_onD)+ qed thenshow"∃U∈field(r). ∀A∈C. A ⊆ r -`` {U}" using‹u ∈ field(r)› .. qed from Zorn2 [OF this] obtain m B where"m ∈ field(r)""B = r -`` {m}" "∀x∈field(r). B ⊆ r -`` {x} ⟶ B = r -`` {x}" by (auto elim!: lamE simp: ball_image_simp) thenhave"∀a∈field(r). ⟨m, a⟩∈ r ⟶ a = m" using po ‹Preorder(r)›‹m ∈ field(r)› by (auto simp: subset_vimage1_vimage1_iff Partial_order_eq_vimage1_vimage1_iff) thenshow ?thesis using‹m ∈ field(r)›by blast qed
end
Messung V0.5 in Prozent
¤ 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.0.14Bemerkung:
(vorverarbeitet am 2026-06-29)
¤
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.