Constant abstraction and reinterpretation surgery (issue #8 kernel steps 3–5) #
The genuinely uncertain freshness mechanism of the Craig interpolation arc
(docs/craig-audit.md §6a). Over a constant expansion L[[ℕ]] with a fixed base L-structure
on M:
BoundedFormulaω.realize_congr_instances— realization depends only on the interpretation of the symbols (twoL-structure instances agreeing on allfunMap/RelMapvalues realize identically). Used for the ambient bridge.wc base h— theL[[ℕ]]-structure with base reductbaseand constants interpreted byh : ℕ → M;ambient_realize_iff_wcbridges an arbitrary ambientL[[ℕ]]-structure to this controlled form.realize_congr_const— realization is unchanged by altering the constant interpretation off the formula's constant support (sentenceJConsts); the invariance-outside-support engine (Claim A of the acceptance argument).BoundedFormulaω.abstractConst j— withdraw the constantc_jinto the free variable0(Empty-based→Fin 1-based), with the occurrence-deletion lemma.realize_abstractConst— the reinterpretation engine (Claim B): realizing the abstracted formula at a witnessaequals realizing the original withc_jreinterpreted toa.
Pure realization surgery: no InsepAt, no interpolation-specific commitments.
Two-instance realization congruence #
Term realization depends only on the funMap values: two L-structure instances agreeing
on every funMap realize every term identically.
Realization depends only on the funMap/RelMap values: two L-structure instances
agreeing on all interpretations realize every formula identically.
The L[[ℕ]]-structure on M with base reduct base and constants interpreted by h.
Equations
- FirstOrder.Language.wc base h = L.withConstantsStructure ℕ
Instances For
The interpretation of the constant c_k by an ambient L[[ℕ]]-structure.
Equations
Instances For
The ambient bridge: any ambient L[[ℕ]]-structure realizes exactly as the controlled
structure built from its base reduct and its constant interpretation.
Invariance outside the constant support #
Two constant maps agreeing on a term's constant support give the term the same value.
Invariance outside the constant support (Claim A): altering the constant interpretation off a formula's constant support does not change its realization.
Constant abstraction #
Withdraw the constant c_j from a term into the fresh free variable 0 : Fin 1. The
free-variable side moves Empty → Fin 1; the bound side is unchanged. (Uses classical
decidability on the constant index; only ever run in proofs.)
Equations
- FirstOrder.Language.Term.abstractConst j (FirstOrder.Language.var (Sum.inl e)) = e.elim
- FirstOrder.Language.Term.abstractConst j (FirstOrder.Language.var (Sum.inr i)) = FirstOrder.Language.var (Sum.inr i)
- FirstOrder.Language.Term.abstractConst j (FirstOrder.Language.func (Sum.inl f) ts) = FirstOrder.Language.func (Sum.inl f) fun (i : Fin l) => FirstOrder.Language.Term.abstractConst j (ts i)
- FirstOrder.Language.Term.abstractConst j (FirstOrder.Language.func (Sum.inr k) _ts) = if k = j then FirstOrder.Language.var (Sum.inl 0) else FirstOrder.Language.func (Sum.inr k) Fin.elim0
Instances For
Withdraw the constant c_j from a formula into the fresh free variable 0 : Fin 1.
Equations
- One or more equations did not get rendered due to their size.
- FirstOrder.Language.BoundedFormulaω.abstractConst j FirstOrder.Language.BoundedFormulaω.falsum = FirstOrder.Language.BoundedFormulaω.falsum
- FirstOrder.Language.BoundedFormulaω.abstractConst j (φ.imp ψ) = (FirstOrder.Language.BoundedFormulaω.abstractConst j φ).imp (FirstOrder.Language.BoundedFormulaω.abstractConst j ψ)
- FirstOrder.Language.BoundedFormulaω.abstractConst j φ.all = (FirstOrder.Language.BoundedFormulaω.abstractConst j φ).all
Instances For
The reinterpretation engine (Claim B) #
Term reinterpretation: the abstracted term evaluated with the free variable at a equals
the original term with c_j reinterpreted to a.
The reinterpretation engine (Claim B): realizing the abstracted formula at a witness a
equals realizing the original with c_j reinterpreted to a.
Occurrence deletion: abstraction removes c_j and adds no new constants #
Abstraction adds no new function symbols to a term.
The constant c_j does not occur in the abstracted term.
Abstraction adds no new function symbols to a formula.
The constant c_j does not occur in the abstracted formula.
Abstraction preserves the relation symbols exactly.
c_j is not in the constant support of the abstracted formula.
The constant support of the abstracted formula is contained in that of the original.