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":
- a finite fragment is presented by its index data — a finite family of pairs
(fml p : L'.BoundedFormulaω Empty (ar p), tup p : Fin (ar p) ↪o J)(per the template machinery inMethods/EM/Realization.lean, membership in a template theory carries exactly this witness data, so no syntactic support extraction is ever needed); exists_markerSupport_factor— collect the finiteJ-constant support of the family, enumerate it asenum : Fin k ↪o J, and factor everytup pthroughenum(viaexists_orderEmbedding_factor);markerStage_homogeneous— pull the family back to a single arity-ktruth-vector coloring over the source model and applyfiniteArityHomogeneousUpTo_beth_stage: for everyα < ω₁, a source of size≥ ℶ_{ω₁}yields a(ℶ_α)⁺-suborder on which the truth vector of the whole fragment is tuple-independent.
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:
sentenceJConsts— the syntacticJ-constant support of anL'[[J]]-sentence (aSet Jcarved out offunctionsIn; only countable in general, finite exactly for the sentences the construction certifies — support finiteness is demanded by the predicate, never computed);MarkerFiniteCert M α F— a finite set of sentences is certified at levelα: a common finite supportS, a(ℶ_α)⁺-subordereofM, and satisfaction of every member under every constant interpretation that is increasing onSintoe's range;MarkerCofinalConsistent M Sset— every finite subset is certified at cofinally manyα < ω₁(finite character makes weakening and chain closure pleasant);- the closure lemmas that need no uniform countable choice: weakening, chain closure,
the
C0pair (no falsum, no contradiction),C2(double negation),C3(conjunction components),C4'(negated-disjunction components) — each by replacing the derived sentence with its trigger inside the certified fragment (MarkerCofinalConsistent.extend_of_semantic) and pushing pointwiserealizelemmas through the same interpretations; exists_uniform_of_cofinal_countable— theω₁-pigeonhole engine (ω₁ is regular, so a countably-colored cofinal α-schedule has a monochromatic cofinal subschedule);MarkerISupUniform— the stated hard test: does⋁ᵢ φᵢ ∈ Ssetyield ONE disjunctkwithSset ∪ {φs k}still cofinally consistent? Per finite fragmentFand levelα, re-homogenization + the pigeonhole producek(F); the open question is uniformizing over ALL finiteF ⊆ Sset— a directed intersection of antitone nonempty subsets ofℕ, which is NOT automatic. If provable,markerConsistencyPropertyEqis mostly assembly; if not, the fallback is a finite-member consistency notion with its own Henkin/model-existence adapter (the existingConsistencyPropertyEqAPI also demandsextensionfor ARBITRARY sentences, which certification cannot supply for sentences of infinite support — another reason the finite-member adapter may be the honest endpoint).
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.
Every finite ordinal step stays below ω₁: if α < ω₁ then α + n < ω₁ for every
natural n — the room the Marker α-schedule uses to absorb per-fragment ladder costs.
Support factorization for a finite constant-fragment. Given a finite family of
J-constant tuples tup p : Fin (ar p) ↪o J (the index data of a finite fragment of an
L'[[J]] constant theory), collect the finite support, enumerate it in increasing order as
enum : Fin k ↪o J, and factor every tuple through the enumeration. The range equation
identifies enum with the exact constant support of the fragment.
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
Certification is monotone (downward-closed) in the fragment.
Cofinal consistency is monotone (downward-closed) in the sentence set.
Chain closure: the union of a nonempty ⊆-chain of cofinally consistent sets is
cofinally consistent — a finite subfragment of the union lies in one chain member.
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.
C0 (no falsum): a certified fragment cannot contain ⊥ — an increasing
interpretation exists and would have to realize it.
C0 (no contradiction): a certified fragment cannot contain both a sentence and
its negation.
The semantic extension scheme behind the choice-free closure conditions: if a
trigger sentence of Sset semantically entails a new sentence pointwise (under every
constant interpretation) and the constant support does not grow, then adjoining new
preserves cofinal consistency — inside any finite subfragment, replace new by its
trigger and reuse the certificate.
C2 (double negation): ¬¬φ ∈ Sset allows adjoining φ.
C3 (conjunction components): ⋀ᵢ φᵢ ∈ Sset allows adjoining every component.
C4' (negated-disjunction components): ¬⋁ᵢ φᵢ ∈ Sset allows adjoining every
negated component.
The ω₁-pigeonhole engine and the stated uniformization test #
The cofinal-schedule pigeonhole: ω₁ is regular, so if cofinally many levels below
ω₁ each carry a witness from a countable index type, ONE index works cofinally. This is
the engine behind every uniformization step of the Marker consistency property (binary
choices such as C1, and — if it suffices — the disjunction choice C4).
The hard uniformization test (deliberately a named statement, not a theorem): does
a disjunction in a cofinally consistent set admit ONE disjunct whose adjunction stays
cofinally consistent? Per finite subfragment F and level α, re-homogenizing the
disjunct index (countably many colors, ≤ ℶ_α) and pigeonholing the cofinal schedule
(exists_uniform_of_cofinal_countable) produce a per-F disjunct k(F); the open
content is uniformizing over ALL finite F ⊆ Sset — a directed intersection of antitone
nonempty subsets of ℕ, which is not automatic. If this holds, the Marker consistency
property (ConsistencyPropertyEq's C4_iSup) is mostly assembly; if it fails, the honest
route is a finite-member consistency notion with its own Henkin/model-existence adapter
(see the module docstring, including the extension-field obstruction).
Equations
- One or more equations did not get rendered due to their size.
Instances For
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
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 τ.
Instances For
The J-constant support of an expansion formula: the J-constants sit inside the base
L''[[J]] layer, under Sum.inl ∘ Sum.inr.
Instances For
The forgetful/reduct lemma: realizing the mapLanguage-image of an L-theory in a
constant-expansion structure yields, by reduct, a model of the original theory. The Henkin
construction will model the expanded theory over (L'[[J]])[[ℕ]]; the Marker endpoint
needs the L'[[J]] original.
Image form of the reduct lemma: a model of the pushed-forward theory reducts to a model of the original.
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.
Evaluation of an expansion term under a skeleton interpretation σ : J → M and a
Henkin interpretation h : ℕ → M.
Equations
Instances For
Realization of an expansion formula under a skeleton interpretation σ : J → M and a
Henkin interpretation h : ℕ → M.
Equations
- FirstOrder.Language.realizeWith σ h φ v xs = φ.Realize v xs
Instances For
Constructor unfolds (term level) #
Constructor unfolds (formula level) #
The base relation symbol behind an expansion relation symbol (the constant layers add no relations).
Equations
Instances For
Bridge to the raw sentence satisfaction used by MarkerHenkinCert.
The constant-agreement congruence #
Term congruence: two skeleton interpretations agreeing on the occurring skeleton constants and two Henkin interpretations agreeing on the occurring witness constants give every term the same value.
Formula congruence — the semantic-support engine of the Marker construction:
agreement on the occurring skeleton constants (expJConstsIn) and witness constants
(henkinConstsIn) gives identical realization. This is what makes tuple-canonical
colorings well-defined (C4 re-homogenization) and fresh witness indices harmless
(C7).
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 #
Negation does not change the skeleton-constant support.
A conjunction component's skeleton support is contained in the conjunction's.
A disjunction component's skeleton support is contained in the disjunction's.
An implication's antecedent skeleton support is contained in the implication's.
An implication's consequent skeleton support is contained in the implication's.
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
The body is monotone (downward-closed) in the fragment, at fixed support.
Body-level semantic insertion: if a trigger member semantically entails a new
sentence under every interpretation pair, adjoining new preserves the body (same suborder,
same witnesses).
Certification is monotone (downward-closed) in the fragment.
Finite-member consistency is monotone (downward-closed).
The semantic insertion scheme behind the choice-free closure rules: if a trigger
member semantically entails a new sentence under every interpretation pair, and neither
constant support grows, then adjoining new preserves certification — same supports, same
suborder, same witnesses.
C0 (no falsum): a certified fragment cannot contain ⊥.
C0 (no contradiction): a certified fragment cannot contain both a sentence and
its negation.
The finite-member insertion scheme at the consistency level (uniform support preserved).
C2 (double negation): ¬¬φ ∈ F allows adjoining φ.
C3 (conjunction components): ⋀ᵢ φᵢ ∈ F allows adjoining every component.
C4' (negated-disjunction components): ¬⋁ᵢ φᵢ ∈ F allows adjoining every
negated component.
C1' (negated implication, antecedent): ¬(φ → ψ) ∈ F allows adjoining φ.
C1' (negated implication, consequent): ¬(φ → ψ) ∈ 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.
The skeleton interpretation determined by a source tuple t : Fin S.card → D and a
suborder e : D ↪o M: the i-th element of S maps to e (t i), off S to a default.
Equations
- FirstOrder.Language.tupleInterp S e t dflt j = if h : j ∈ S then e (t ((S.orderIsoOfFin ⋯).symm ⟨j, h⟩)) else dflt
Instances For
On the support, tupleInterp agrees with any σ matching it index-by-index.
A finite tuple order-embedding into any infinite linear order exists.
Support-tuple factoring: an admissible σ for the composite suborder e'.trans e
factors through the support into a source tuple t landing in Set.range e' and matching
σ on S index-by-index.
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 #
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.
C1 (implication): φ → ψ ∈ F — one of insert φ.not F, insert ψ F is
consistent (the branch is chosen uniformly over the support tuples).
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.
The witness constant dₙ's only mentioned symbol is the n-th Henkin constant.
The witness sentence adds no new function symbol beyond φ's and the fresh constant dₙ.
The semantic bridge: realizing the witness sentence is realizing φ with the last
bound variable set to the Henkin interpretation of dₙ.
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).
C7 (existential witness): ∃x φ(x) ∈ F yields a fresh Henkin index n with
insert (witnessSentence φ n) F consistent — the new Henkin support is insert n H.
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
- FirstOrder.Language.HasFiniteConstSupport τ = ∃ (S : Finset J) (H : Finset ℕ), FirstOrder.Language.expJConstsIn τ ⊆ ↑S ∧ FirstOrder.Language.henkinConstsIn τ ⊆ ↑H
Instances For
The subtype of finite-constant-support sentences — the universe of the maximal finite-support theory.
Equations
Instances For
Negation preserves finite constant support.
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.
A sentence mentioning only finitely many function symbols has finite constant support:
expJConstsIn/henkinConstsIn are preimages of functionsIn under injective maps.
Body-level entailed insertion: if the members of F semantically entail new under
every interpretation, adjoining new preserves the body (same suborder, same witnesses).
Consistency-level entailed insertion: a finite-support sentence entailed by F (under
every interpretation) can be adjoined; the uniform support grows by the new sentence's finite
supports. No re-homogenization (the entailment is unconditional over the branch).
C5 (equality reflexivity): t = t can always be adjoined — it is valid, so any
realizing interpretation realizes it too.
The C6 substitution instance mentions no symbol beyond the old instance φ(t₁) and the
equality sentence — the syntactic support bound behind eq_subst's finite support.
Realizing a relabel of a closed term is realizing the term (the extra bound slot is vacuous).
The substitution-of-a-closed-term bridge: realizing φ(t) is realizing φ with its bound
variable set to the value of t.
C6 (equality substitution): from t₁ = t₂ ∈ F and φ(t₁) ∈ F, the instance φ(t₂)
can be adjoined — the equality forces equal term values, and realizeWith_subst_const
transports φ. The support of φ(t₂) stays inside F's uniform support
(functionsIn_eq_subst_subset).
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).
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.
Chain closure: the union of a nonempty ⊆-chain of finite-character-consistent sets is
finite-character consistent — a finite subset of the union lies in one chain member.
The maximal finite-support theory: any finite-character-consistent seed extends to a maximal one (Zorn, chain closure supplying the upper bounds).
Membership calculus of the maximal theory #
A sentence outside a maximal theory is refuted by some finite fragment: adjoining it to that fragment breaks consistency.
Restricted completeness: a maximal finite-support theory decides every finite-support
sentence. From maximality, insert τ m and insert τ.not m are both inconsistent as families
when τ, τ.not ∉ m; combining the two refuting fragments and applying the extension rule
yields a contradiction.
The membership-insertion principle for the maximal theory: a finite-support sentence
whose adjunction to every fragment of m stays consistent is a member of m. This turns each
fragment-level closure rule into a membership rule.
The membership-closure engine: a fragment-level closure rule (adjoining new to any
consistent fragment containing the trigger stays consistent) lifts, given trigger ∈ m, to
new ∈ m. Every named closure membership rule below is a one-line instance.
C2 in membership form: ¬¬φ ∈ m implies φ ∈ m.