Lω₁ω Semantics — compatibility facade over the fixed-carrier semantics #
The three realization definitions are no longer given here. They come from
Mathlib.ModelTheory.Infinitary.Semantics, whose BoundedFormulaInf.Realize is the single
structural recursion serving every index carrier. This file re-exports that semantics under the
qualified names the project already uses, and keeps only what Mathlib does not provide.
Why the definitions had to be adopted, not merely paralleled #
Lomega1omega/Syntax.lean already identifies BoundedFormulaω with BoundedFormulaInf ℕ
definitionally. Keeping a separate recursive Realize here would leave two definitionally
distinct semantics for one and the same formula type: dot-notation φ.Realize resolves through
the head symbol to BoundedFormulaInf.Realize, while the qualified BoundedFormulaω.Realize
would name the other one. Every later operation would then have to pick, and would pick wrong.
What this file still owns #
- the qualified
Realizenames, as reducible aliases — 100-odd files nameBoundedFormulaω.Realize/Formulaω.Realize/Sentenceω.Realizeexplicitly, many in@-applied form, so the aliases reproduce Mathlib's semantics at the project's historical argument order; - compatibility wrappers carrying the project's realization theorem names, with the project's explicit argument convention (Mathlib states these with implicit arguments);
- realization for the connectives Mathlib does not define:
and/or/iffand theEncodable-indexedeinf/esupwith their explicit-encoding forms; - the
⊨ωnotation.
The gates at the end certify by Iff.rfl — no rewriting, no casts — that each alias is the
Mathlib semantics, and that the historical Fin.elim0 spellings of the arity-0 cases still
agree with Mathlib's default.
Realization of a bounded Lω₁ω formula, as a qualified name.
Mathlib's BoundedFormulaInf.Realize is the definition; this alias is @[reducible] and
reproduces the project's historical argument order L M inst α n φ v xs.
Equations
- φ.Realize v xs = FirstOrder.Language.BoundedFormulaInf.Realize φ v xs
Instances For
Primitive connectives #
Mathlib states each of these with implicit arguments; the project's consumers supply them
explicitly (realize_rel R ts, realize_imp φ ψ, …), so the wrappers keep that convention.
Connectives the project owns #
Realization of an Lω₁ω formula, as a qualified name. Mathlib's FormulaInf.Realize is the
definition; it fills the arity-0 valuation with default, which is definitionally the project's
historical Fin.elim0 (gated below).
Equations
Instances For
The level-crossing lemma: formula realization is bounded-formula realization at the empty tuple.
FormulaInf.Realize is a plain definition upstream, not a reducible abbreviation (matching the
finitary Formula.Realize), so neither rw nor simp can see a BoundedFormulaω realization
lemma through it. Supply this lemma explicitly — simp only [Formulaω.realize_def, realize_not] —
instead of crossing that abstraction boundary. Deliberately not @[simp]: the formula-level
lemmas below are the normal interface, and this escape hatch should be visible where it is used.
The level-crossing lemma: sentence truth is bounded-formula realization at the empty
valuation and the empty tuple. See Formulaω.realize_def for why this is needed and why it is
not a simp lemma.
Notation for a structure satisfying a sentence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Facade semantics gates #
Each must close by Iff.rfl — no change, no rewriting, no explicit cast. That is what
certifies that the qualified ω names are Mathlib's semantics rather than a parallel copy of
it, and that the arity-0 spellings the project has used throughout (Fin.elim0, Empty.elim)
still agree with Mathlib's default.