Documentation

LeanPool.InfinitaryLogic.Methods.MarkerStage

The Marker stage: finite-fragment support extraction and Erdős–Rado certification #

First layer of the template/consistency-property reshape of the Morley–Hanf chain (the replacement for the ZFC-refutable in-M extraction ladder — see the audit fences on PureColoringHypothesis/MorleyHanfExtraction in Conditional/MorleyHanfTransfer.lean). Following Marker, Lectures on Infinitary Model Theory §5.2, the consistency-property route certifies each finite fragment of an L'[[J]] template/constant theory by a large homogeneous set in the source model, with the indiscernible sequence materializing only in the model built by Model Existence.

This file provides the syntactic/combinatorial bridge between "finite fragment of a constant theory" and "finite-arity Erdős–Rado approximation":

The per-α conclusion (available for every α < ω₁ at once) is the Marker schedule.

Layer 2: the certification predicates and their closure calculus #

Toward the Marker consistency property, this file also provides the candidate member predicate and its easy closure lemmas:

C7/Henkin witness design (SETTLED: Henkin constant expansion — see Layer 3): over a relational L', the closed L'[[J]]-terms are exactly the J-constants, so quantifier witnesses must be fresh constants; a fresh J-constant would have to occupy a specific order-position that an arbitrary linear J need not offer, so witnesses live in a separate layer (L'[[J]])[[ℕ]] instead (henkinConst, henkinConstsIn, expJConstsIn), with the reduct lemma (Theoryω.model_reduct_of_expansion) returning the final model to L'[[J]]. The finite-member predicates over the expansion (MarkerHenkinCert, MarkerHenkinConsistent, Layer 5) avoid the arbitrary-set extension field and the global C4 uniformization entirely — the Henkin construction consumes finite members along its enumeration, per the classical Marker/Keisler shape. The realizeWith API (Layer 4) confines all structure instances to two definition bodies; every closure rule is stated through it. The choice-free closure rules (C0/C1'/C2/C3/C4') are proved in Layer 5; remaining: the re-homogenization rules (C1, C3', C4 — per-member branch/index choice by coloring support tuples inside the certificate), C7 via a fresh witness index (enabled by the finite-Henkin-support invariant — see the Layer 5 audit note), then the Henkin construction/model-existence adapter decision.

theorem FirstOrder.Language.markerStage_homogeneous {L' : Language} (M : Type) [L'.Structure M] [LinearOrder M] [WellFoundedLT M] (hM : Cardinal.mk M Cardinal.beth (Ordinal.omega 1)) (α : Ordinal.{0}) ( : α < Ordinal.omega 1) {J : Type} [LinearOrder J] {m : } {ar : Fin m} (fml : (p : Fin m) → L'.BoundedFormulaω Empty (ar p)) (tup : (p : Fin m) → Fin (ar p) ↪o J) :
∃ (k : ) (enum : Fin k ↪o J) (r : (p : Fin m) → Fin (ar p) ↪o Fin k), (∀ (p : Fin m), RelEmbedding.trans (r p) enum = tup p) Set.range enum = ⋃ (p : Fin m), Set.range (tup p) ∃ (e : (Order.succ (Cardinal.beth α)).ord.ToType ↪o M), ∀ (u u' : Fin k ↪o M), (∀ (i : Fin k), u i Set.range e)(∀ (i : Fin k), u' i Set.range e)∀ (p : Fin m), (fml p).Realize Empty.elim (u (r p)) (fml p).Realize Empty.elim (u' (r p))

The Marker-stage Erdős–Rado certification. A finite fragment of an L'[[J]] constant theory, presented by its index data (fml p, tup p), pulls back along the support factorization to a single arity-k truth-vector coloring over the source model M; for every α < ω₁, finiteArityHomogeneousUpTo_beth_stage then yields a (ℶ_α)⁺-suborder of M on which the truth of every formula of the fragment (at its own positions r p inside the support) is independent of the choice of increasing k-tuple.

This is the per-fragment certification of the Marker consistency property: available at every α < ω₁ simultaneously (the cofinal schedule), from the single hypothesis |M| ≥ ℶ_{ω₁} — per-α, per-finite-fragment approximations, never one ω₁-suborder homogeneous for all arities at once (that jump is ZFC-refutable; see the audit fences).

Layer 2: the certification predicates #

The per-level Marker certification of a finite fragment: a common finite constant support S, a (ℶ_α)⁺-suborder e of the (well-ordered) source M, and satisfaction of every member sentence under every constant interpretation that is strictly increasing on S with values in the range of e. This is Marker's "ℶ_α-large set realizing σ", stated semantically over interpretations so that the closure calculus needs no constructor inversion through the template pipeline.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    The candidate Marker member predicate: every finite subfragment is certified at cofinally many levels α < ω₁. Finite character makes weakening and chain closure direct; the uniformization questions (MarkerISupUniform below) are exactly where it is honest.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem FirstOrder.Language.MarkerFiniteCert.mono {L' : Language} {J : Type} [LinearOrder J] {M : Type} [L'.Structure M] [LinearOrder M] {α : Ordinal.{0}} {F F' : Set (L'.withConstants J).Sentenceω} (hFF : F'F) (h : MarkerFiniteCert M α F) :

      Certification is monotone (downward-closed) in the fragment.

      theorem FirstOrder.Language.MarkerCofinalConsistent.mono {L' : Language} {J : Type} [LinearOrder J] {M : Type} [L'.Structure M] [LinearOrder M] {Sset Sset' : Set (L'.withConstants J).Sentenceω} (hSS : Sset'Sset) (h : MarkerCofinalConsistent M Sset) :

      Cofinal consistency is monotone (downward-closed) in the sentence set.

      theorem FirstOrder.Language.exists_strictMonoOn_interp {J : Type} [LinearOrder J] {M : Type} [LinearOrder M] {α : Ordinal.{0}} (e : (Order.succ (Cardinal.beth α)).ord.ToType ↪o M) (S : Finset J) :
      ∃ (σ : JM), StrictMonoOn σ S jS, σ j Set.range e

      There is always an interpretation that is increasing on a given finite support into the range of a (ℶ_α)⁺-suborder — the suborder's domain is infinite, so it contains increasing tuples of every finite length. Supplies the "evaluation point" for the C0 lemmas.

      C2 (double negation): ¬¬φ ∈ Sset allows adjoining φ.

      The ω₁-pigeonhole engine and the stated uniformization test #

      Layer 3: the Henkin-witness substrate #

      C7 design decision (settled): Henkin constant expansion. Quantifier witnesses live in a separate withConstants layer (L'[[J]])[[ℕ]], NOT among the J-constants: an arbitrary linear J need not have an element in the order-gap a witness would require (and MorleySeedTailTemplateRealizable quantifies over every linear J); a relational L' provides no closed terms beyond constants, so witnesses cannot be generated internally; and a separate layer keeps the EM skeleton (J, order-positioned, universally quantified in certification) apart from proof-theoretic witnesses (, existentially interpreted per skeleton interpretation). The finite-member consistency predicate lives over the expansion; the endpoint returns to L'[[J]] by the reduct lemma.

      The n-th Henkin witness constant of a constant expansion L[[ℕ]], as a closed term.

      Equations
      Instances For
        @[reducible, inline]

        The Henkin-constant support of an expansion formula — the generalized sentenceJConsts at base L'[[J]] and constant type . Freshness of a witness index n for a fragment F is ∀ τ ∈ F, n ∉ henkinConstsIn τ.

        Equations
        Instances For

          The J-constant support of an expansion formula: the J-constants sit inside the base L''[[J]] layer, under Sum.inlSum.inr.

          Equations
          Instances For

            Layer 4: the realizeWith evaluation API and the constant-agreement congruence #

            All structure instances are confined to the two wrapper definitions; every lemma statement mentions only the wrappers, so no local-instance synthesis ever leaks into downstream theorem statements. All later Marker closure rules are to be stated through this API.

            def FirstOrder.Language.termValueWith {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {β : Type} (t : ((L''.withConstants J).withConstants ).Term β) (v : βM) :
            M

            Evaluation of an expansion term under a skeleton interpretation σ : J → M and a Henkin interpretation h : ℕ → M.

            Equations
            Instances For
              def FirstOrder.Language.realizeWith {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {α : Type} {n : } (φ : ((L''.withConstants J).withConstants ).BoundedFormulaω α n) (v : αM) (xs : Fin nM) :

              Realization of an expansion formula under a skeleton interpretation σ : J → M and a Henkin interpretation h : ℕ → M.

              Equations
              Instances For

                Constructor unfolds (term level) #

                @[simp]
                theorem FirstOrder.Language.termValueWith_base {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {β : Type} {l : } (f : L''.Functions l) (ts : Fin l((L''.withConstants J).withConstants ).Term β) (v : βM) :
                termValueWith σ h (func (Sum.inl (Sum.inl f)) ts) v = Structure.funMap f fun (i : Fin l) => termValueWith σ h (ts i) v

                Constructor unfolds (formula level) #

                The base relation symbol behind an expansion relation symbol (the constant layers add no relations).

                Equations
                Instances For
                  @[simp]
                  theorem FirstOrder.Language.realizeWith_equal {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {α : Type} {n : } (t₁ t₂ : ((L''.withConstants J).withConstants ).Term (α Fin n)) (v : αM) (xs : Fin nM) :
                  realizeWith σ h (BoundedFormulaω.equal t₁ t₂) v xs termValueWith σ h t₁ (Sum.elim v xs) = termValueWith σ h t₂ (Sum.elim v xs)
                  @[simp]
                  theorem FirstOrder.Language.realizeWith_rel {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {α : Type} {n l : } (R : ((L''.withConstants J).withConstants ).Relations l) (ts : Fin l((L''.withConstants J).withConstants ).Term (α Fin n)) (v : αM) (xs : Fin nM) :
                  realizeWith σ h (BoundedFormulaω.rel R ts) v xs Structure.RelMap (baseRel R) fun (i : Fin l) => termValueWith σ h (ts i) (Sum.elim v xs)
                  @[simp]
                  theorem FirstOrder.Language.realizeWith_imp {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {α : Type} {n : } (φ ψ : ((L''.withConstants J).withConstants ).BoundedFormulaω α n) (v : αM) (xs : Fin nM) :
                  realizeWith σ h (φ.imp ψ) v xs realizeWith σ h φ v xsrealizeWith σ h ψ v xs
                  @[simp]
                  theorem FirstOrder.Language.realizeWith_all {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {α : Type} {n : } (φ : ((L''.withConstants J).withConstants ).BoundedFormulaω α (n + 1)) (v : αM) (xs : Fin nM) :
                  realizeWith σ h φ.all v xs ∀ (x : M), realizeWith σ h φ v (Fin.snoc xs x)
                  @[simp]
                  theorem FirstOrder.Language.realizeWith_iSup {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {α : Type} {n : } (φs : ((L''.withConstants J).withConstants ).BoundedFormulaω α n) (v : αM) (xs : Fin nM) :
                  realizeWith σ h (BoundedFormulaω.iSup φs) v xs ∃ (i : ), realizeWith σ h (φs i) v xs
                  @[simp]
                  theorem FirstOrder.Language.realizeWith_iInf {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {α : Type} {n : } (φs : ((L''.withConstants J).withConstants ).BoundedFormulaω α n) (v : αM) (xs : Fin nM) :
                  realizeWith σ h (BoundedFormulaω.iInf φs) v xs ∀ (i : ), realizeWith σ h (φs i) v xs
                  @[simp]
                  theorem FirstOrder.Language.realizeWith_not {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {α : Type} {n : } (φ : ((L''.withConstants J).withConstants ).BoundedFormulaω α n) (v : αM) (xs : Fin nM) :
                  realizeWith σ h φ.not v xs ¬realizeWith σ h φ v xs
                  @[simp]
                  theorem FirstOrder.Language.realizeWith_ex {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) {α : Type} {n : } (φ : ((L''.withConstants J).withConstants ).BoundedFormulaω α (n + 1)) (v : αM) (xs : Fin nM) :
                  realizeWith σ h φ.ex v xs ∃ (x : M), realizeWith σ h φ v (Fin.snoc xs x)
                  theorem FirstOrder.Language.sentenceRealize_iff_realizeWith {L'' : Language} {J M : Type} [L''.Structure M] (σ : JM) (h : M) (τ : ((L''.withConstants J).withConstants ).Sentenceω) :

                  Bridge to the raw sentence satisfaction used by MarkerHenkinCert.

                  The constant-agreement congruence #

                  Layer 5: the finite Henkin closure calculus #

                  The freshness audit gate (settled by strengthening the predicate): henkinConstsIn is not automatically finite for an arbitrary Lω₁ω sentence — iSup/iInf can mention countably many witness constants (e.g. ⋁ₙ (dₙ = dₙ) has Henkin support all of ) — so "pick a fresh witness index outside the fragment's Henkin support" needs an invariant. MarkerHenkinCert therefore carries a finite Henkin support H : Finset alongside the skeleton support S : Finset J. The invariant is self-maintaining and non-restrictive: the construction's seed sentences are mapLanguage-images of L'[[J]]-sentences (Henkin support ), and every closure operation shrinks the support (components, negations, implication branches) or grows it by finitely many constants (substitution instances) — an infinite-support sentence never enters a member of the Henkin enumeration.

                  Support lemmas for the expansion's skeleton constants #

                  Support lemmas for the expansion's Henkin constants (wrappers around the generic #

                  sentenceJConsts family, restated so rw matches the henkinConstsIn spelling)

                  The finite-member predicates #

                  The certificate body at an explicit skeleton support S: a (ℶ_α)⁺-suborder e of the source, and — for EVERY skeleton interpretation increasing on S into e's range — SOME Henkin interpretation making every member true. The skeleton side stays universal (the EM tuples); the witness side is existential per interpretation, because quantifier witnesses vary with the tuple. The support-tracking conjuncts live in the wrapping predicates.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    The per-level Henkin–Marker certification of a finite fragment over the expansion (L''[[J]])[[ℕ]]: a finite skeleton support S, a finite Henkin support H (the freshness invariant), and a body at S.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For

                      The finite-member consistency predicate: a UNIFORM finite support (S, H) (fixed across all levels — this is what the re-homogenization room lemma needs, and what the base case markerStage_homogeneous naturally provides) together with certification bodies at cofinally many levels below ω₁. The arbitrary-set extension field and the global C4 uniformization of the ambient ConsistencyPropertyEq API are deliberately avoided: the Henkin construction consumes finite members along its enumeration, choosing disjuncts and witnesses per member (the classical Marker/Keisler shape).

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        theorem FirstOrder.Language.MarkerHenkinBody.mono {L'' : Language} {J : Type} [LinearOrder J] {M : Type} [L''.Structure M] [LinearOrder M] {α : Ordinal.{0}} {S : Finset J} {F F' : Set ((L''.withConstants J).withConstants ).Sentenceω} (hFF : F'F) (hb : MarkerHenkinBody M α S F) :

                        The body is monotone (downward-closed) in the fragment, at fixed support.

                        theorem FirstOrder.Language.MarkerHenkinCert.mono {L'' : Language} {J : Type} [LinearOrder J] {M : Type} [L''.Structure M] [LinearOrder M] {α : Ordinal.{0}} {F F' : Set ((L''.withConstants J).withConstants ).Sentenceω} (hFF : F'F) (hc : MarkerHenkinCert M α F) :

                        Certification is monotone (downward-closed) in the fragment.

                        Finite-member consistency is monotone (downward-closed).

                        C2 (double negation): ¬¬φ ∈ F allows adjoining φ.

                        Layer 5b engine: re-homogenization #

                        The reusable machinery for the branch/index choice rules (C1, C3', C4): color the support tuples of a high-level certificate body by the branch a realizing interpretation selects, re-homogenize inside the existing suborder via finiteArityHomogeneousUpTo_beth_stage at a level lower by the finite ladder cost 2·|S|+2, and read off a uniform branch.

                        A finite tuple order-embedding into any infinite linear order exists.

                        theorem FirstOrder.Language.MarkerHenkinBody.branch_choice {L'' : Language} {J : Type} [LinearOrder J] {M : Type} [L''.Structure M] [LinearOrder M] {α₀ α : Ordinal.{0}} {S : Finset J} {F : Set ((L''.withConstants J).withConstants ).Sentenceω} (hroom : α₀ + ↑(2 * S.card + 2) α) (hb : MarkerHenkinBody M α S F) (hFsupp : τF, expJConstsIn τS) {K : Type} [Countable K] (branch : K((L''.withConstants J).withConstants ).Sentenceω) (hbranchSupp : ∀ (k : K), expJConstsIn (branch k)S) (hcover : ∀ (σ : JM) (h : M), (∀ τF, realizeWith σ h τ Empty.elim Fin.elim0)∃ (k : K), realizeWith σ h (branch k) Empty.elim Fin.elim0) :
                        ∃ (k : K), MarkerHenkinBody M α₀ S (insert (branch k) F)

                        The re-homogenization engine. From a certificate body of F at a level α exceeding the target α₀ by the finite ladder cost 2·|S|+2, a covering branch family whose members have skeleton support inside S, produce ONE branch k and a body of insert (branch k) F at the target level α₀. The branch is uniform on the support tuples of the output suborder (read off finiteArityHomogeneousUpTo_beth_stage); every admissible interpretation of the output suborder factors through a support tuple, whose realizing interpretation selects branch k, and constant-agreement congruence transfers realization back.

                        Layer 5b-2: the branch/index choice rules #

                        theorem FirstOrder.Language.MarkerHenkinConsistent.branch_choice {L'' : Language} {J : Type} [LinearOrder J] {M : Type} [L''.Structure M] [LinearOrder M] {F : Finset ((L''.withConstants J).withConstants ).Sentenceω} (h : MarkerHenkinConsistent M F) {K : Type} [Countable K] (branch : K((L''.withConstants J).withConstants ).Sentenceω) {trigger : ((L''.withConstants J).withConstants ).Sentenceω} (hmem : trigger F) (hbJ : ∀ (k : K), expJConstsIn (branch k)expJConstsIn trigger) (hbN : ∀ (k : K), henkinConstsIn (branch k)henkinConstsIn trigger) (hcover : ∀ (σ : JM) (hk : M), realizeWith σ hk trigger Empty.elim Fin.elim0∃ (k : K), realizeWith σ hk (branch k) Empty.elim Fin.elim0) :
                        ∃ (k : K), MarkerHenkinConsistent M (insert (branch k) F)

                        Consistency-level branch choice (re-homogenization + the ω₁-pigeonhole assembly): a covering branch family for a trigger ∈ F, whose members' constant supports lie inside the trigger's, yields ONE branch k with insert (branch k) F consistent. Per target level the body comes from MarkerHenkinBody.branch_choice (asked at the ladder-cost-offset level, kept below ω₁ by add_natCast_lt_omega_one); the single uniform k comes from exists_uniform_of_cofinal_countable (ω₁ is regular). Uniform support (S, H) is preserved.

                        C4 (disjunction witness): ⋁ᵢ φᵢ ∈ F yields a uniform disjunct k with insert (φs k) F consistent.

                        C3' (negated-conjunction witness): ¬⋀ᵢ φᵢ ∈ F yields a uniform index k with insert (φs k).not F consistent.

                        Layer 5c: the Henkin witness rule (C7) #

                        The one closure rule of a different shape: no re-homogenization, but a fresh Henkin constant. From ∃x φ(x) ∈ F, pick a witness index n outside the finite Henkin support H, update the Henkin interpretation at n to the existential witness (per skeleton interpretation), and adjoin the instance φ(dₙ). The finite-support invariant is what makes "fresh n" available.

                        The Henkin witness instance of an existential: φ with its last bound variable filled by the n-th Henkin constant.

                        Equations
                        Instances For

                          does not change the mentioned function symbols.

                          theorem FirstOrder.Language.MarkerHenkinBody.witness {L'' : Language} {J : Type} [LinearOrder J] {M : Type} [L''.Structure M] [LinearOrder M] {α : Ordinal.{0}} {S : Finset J} {F : Set ((L''.withConstants J).withConstants ).Sentenceω} (hb : MarkerHenkinBody M α S F) {φ : ((L''.withConstants J).withConstants ).BoundedFormulaω Empty 1} (hmem : φ.ex F) (n : ) (hn : τF, nhenkinConstsIn τ) :

                          Body-level C7: from ∃x φ(x) ∈ F and a Henkin index n fresh for F, the witness instance can be adjoined — update the Henkin interpretation at n to the existential witness; n's freshness leaves every old member unchanged (realizeWith_congr).

                          Layer 6a: the finite-support universe and the restricted extension rule #

                          The bespoke finite-Henkin adapter avoids the ambient ConsistencyPropertyEq (whose extension field quantifies over ARBITRARY sentences, which Marker consistency cannot supply at infinite constant-support). Instead it works over the sentences of finite constant support — exactly the sentences the Marker recursion from the template seed ever produces — and replaces the arbitrary-sentence extension field with a restricted extension rule proved by the same Layer-5b re-homogenization engine (branch over Bool, colour support tuples by whether τ is realized).

                          A sentence of finite constant support: finitely many J-constants and finitely many Henkin constants. The restricted universe the adapter decides over.

                          Equations
                          Instances For
                            @[reducible, inline]

                            The subtype of finite-constant-support sentences — the universe of the maximal finite-support theory.

                            Equations
                            Instances For
                              theorem FirstOrder.Language.MarkerHenkinBody.enlarge_support {L'' : Language} {J : Type} [LinearOrder J] {M : Type} [L''.Structure M] [LinearOrder M] {α : Ordinal.{0}} {S S' : Finset J} {F : Set ((L''.withConstants J).withConstants ).Sentenceω} (hSS : SS') (hb : MarkerHenkinBody M α S F) :

                              A body over S is a body over any larger support (fewer admissible interpretations).

                              The restricted extension rule (the replacement for the ambient extension field): any finite-constant-support sentence τ can be decided — one of insert τ F, insert τ.not F is Marker-consistent. Enlarge the uniform support by τ's finite supports, re-homogenize the Boolean "is τ realized" colouring of the support tuples (MarkerHenkinBody.branch_choice, covering is the unconditional tautology τ ∨ ¬τ), and uniformize the branch over the cofinal α-schedule.

                              Layer 6b: the equality closure rules (C5/C6) #

                              The equality rules the term-model quotient and truth lemma will need on the restricted maximal theory. Both are proved semantically (certification is realizability in M, whose equality is genuine) via unconditional/entailed insertion, with finite constant support tracked through the syntactic support API.

                              C5 (equality reflexivity): t = t can always be adjoined — it is valid, so any realizing interpretation realizes it too.

                              Layer 6c: the maximal finite-support theory (Zorn) #

                              The finite closure calculus (C0–C7) is turned into a complete theory over the finite-support universe by a finite-character Zorn argument, mirroring ConsistencyProperty.chain_closure but with completeness only for finite-support sentences — exactly what the restricted truth lemma will need. Parameterized by a consistent seed (the base consistency hook is a separate cross-file integration; the abstract machinery here fixes the shape it must feed).

                              Negation on the finite-support universe.

                              Equations
                              Instances For

                                Finite-character Marker consistency of a set of finite-support sentences: every finite subset is Marker–Henkin consistent. This is the family Zorn runs over.

                                Equations
                                Instances For

                                  Finite-character consistency is downward-closed in the set.

                                  Membership calculus of the maximal theory #