The constant-support calculus for a constant expansion L[[J]] (issue #8 kernel step 2) #
The neutral home of the syntactic constant-support machinery, moved and generalized from
Methods/MarkerStage.lean (its Layers 2/5 discovered the finite-support problem: an L_{ω₁ω}
formula can mention infinitely many constants — ⋁ₙ (dₙ = dₙ) has support all of ℕ — so
freshness arguments must CARRY a finite support rather than compute one). Craig interpolation
(#8) consumes the same calculus for its InsepAt-parameterized separators.
- the generic
functionsInstructural lemmas (relabel / castLE / subst / openBounds / finiteness), verbatim from MarkerStage; sentenceJConsts— the constant support of anL'[[J]]-formula — with its monotonicity calculus, verbatim from MarkerStage;- NEW: term-level support (
Term.jConsts), the constant closed term (constTerm), instantiation support bounds, the base-symbol projections (baseFunctionsIn/baseRelationsIn), andstripConsts— a constant-free expansion formula restricts to the base language, withmapLanguage (lhomWithConstants)as left inverse and occurrence transport (theA = ∅root gate of the interpolation argument).
Structural lemmas for functionsIn (relabel / castLE / subst / openBounds) #
The mentioned function symbols are stable under variable renamings and grow only by the substituted terms' symbols under substitution. Generic over the language.
A term mentions only finitely many function symbols (it is a finite tree).
Substitution only adds symbols: φ's own symbols survive (only variables are replaced).
Negation does not change the mentioned function symbols (not is imp · ⊥).
Existential quantification (¬∀¬) does not change the mentioned function symbols.
Negation does not change the mentioned relation symbols.
Existential quantification does not change the mentioned relation symbols.
A finite existential block does not change the mentioned function symbols.
A finite existential block does not change the mentioned relation symbols.
A finite universal block does not change the mentioned function symbols.
A finite universal block does not change the mentioned relation symbols.
The true formula mentions no function symbols.
The true formula mentions no relation symbols.
Binary conjunction collects both sides' function symbols.
Binary conjunction collects both sides' relation symbols.
An Encodable-indexed conjunction collects the branches' function symbols (the ⊤ padding
of undecodable indices contributes nothing).
An Encodable-indexed conjunction collects the branches' relation symbols.
In a relational language no formula mentions a function symbol.
Occurrence-aware term-realization congruence: two structure instances agreeing on the
function symbols occurring in t realize t identically.
Occurrence-aware realization congruence: two structure instances agreeing on the
symbols occurring in φ realize φ identically. The tool that localizes semantic transport
to a formula's own vocabulary.
Constant support of a constant-expansion formula #
The syntactic constant support of an L'[[J]]-formula: the added constants (arity-0
Sum.inr function symbols) among its mentioned symbols. Only countable in general
(functionsIn_countable — countably-branching connectives); freshness arguments demand
containment in a finite set rather than computing one. Generic in the base language, so it
also serves iterated expansion layers (L := L'[[J]], constants ℕ).
Instances For
Negation does not change the constant support (not is imp · falsum).
A conjunction component's constant support is contained in the conjunction's.
A disjunction component's constant support is contained in the disjunction's.
An implication's antecedent support is contained in the implication's.
An implication's consequent support is contained in the implication's.
The j-th constant of the expansion, as a closed term.
Equations
Instances For
openBounds does not change the constant support.
Existential quantification does not change the constant support.
Instantiation support bound: substituting the constant j into a one-variable
formula adds at most j to the constant support.
The base function symbols of an expansion formula (the Sum.inl layer).
Equations
Instances For
The base relation symbols of an expansion formula (the constant layer adds none).
Equations
Instances For
Stripping constant-free formulas to the base language #
A constant-free L'[[J]]-formula is (the mapLanguage-image of) a base formula. This is the
A = ∅ root gate of the interpolation argument: a separator with empty allowed support
strips to an interpolant of the base language.
Strip a constant-free expansion term to the base language.
Equations
- (FirstOrder.Language.var x_2).stripConsts x_3 = FirstOrder.Language.var x_2
- (FirstOrder.Language.func (Sum.inl f) ts).stripConsts h = FirstOrder.Language.func f fun (i : Fin l) => (ts i).stripConsts ⋯
- (FirstOrder.Language.func (Sum.inr c) _ts).stripConsts h = absurd ⋯ ⋯
Instances For
The withConstants inclusion is a left inverse of term stripping.
Occurrence transport for term stripping: the stripped term's symbols are the base symbols of the original.
Strip a constant-free expansion formula to the base language.
Equations
- FirstOrder.Language.BoundedFormulaω.falsum.stripConsts x_4 = FirstOrder.Language.BoundedFormulaω.falsum
- (FirstOrder.Language.BoundedFormulaω.equal t u).stripConsts h = FirstOrder.Language.BoundedFormulaω.equal (t.stripConsts ⋯) (u.stripConsts ⋯)
- (FirstOrder.Language.BoundedFormulaω.rel (Sum.inl R) ts).stripConsts h = FirstOrder.Language.BoundedFormulaω.rel R fun (i : Fin l) => (ts i).stripConsts ⋯
- (φ.imp ψ).stripConsts h = (φ.stripConsts ⋯).imp (ψ.stripConsts ⋯)
- φ.all.stripConsts h = (φ.stripConsts h).all
- (FirstOrder.Language.BoundedFormulaω.iSup φs).stripConsts h = FirstOrder.Language.BoundedFormulaω.iSup fun (i : ℕ) => (φs i).stripConsts ⋯
- (FirstOrder.Language.BoundedFormulaω.iInf φs).stripConsts h = FirstOrder.Language.BoundedFormulaω.iInf fun (i : ℕ) => (φs i).stripConsts ⋯
Instances For
Quantifier class is invariant under stripping constants. stripConsts rewrites only terms
and the relation tag; it touches no quantifier node, so the signed universal class is exact.
The withConstants inclusion is a left inverse of formula stripping.
Occurrence transport for formula stripping (function symbols).
Occurrence transport for formula stripping (relation symbols).