Semantics of infinitary first-order formulas #
This file defines realization of L_{∞ω} formulas in a structure, with a simp lemma for every
constructor and derived connective. The branching carrier is a type parameter, so each
realization lemma is a single statement generic in the carrier and its universe: there is no
separate L_{ω₁ω} semantics.
Quantification extends the bound-variable valuation at the last slot, with Fin.snoc, as for
finitary formulas.
Main definitions #
FirstOrder.Language.BoundedFormulaInf.Realize: realization with free-variable and bound-variable valuations.FirstOrder.Language.FormulaInf.RealizeandFirstOrder.Language.SentenceInf.Realize, with the low-priority simp lemmasFormulaInf.realize_defandSentenceInf.realize_defreducing them to bounded-formula realization once no formula- or sentence-level lemma applies.
Main results #
- One simp lemma per constructor and derived connective, each generic in the carrier and its
universe:
realize_iSup,realize_iInf,realize_inf,realize_iff,realize_alls, …. FirstOrder.Language.BoundedFormula.realize_toInf: the finitary embedding preserves realization, at every carrier.FirstOrder.Language.Sentence.realize_toInf: the sentence-level finitary embedding preserves satisfaction.
References #
- The finite conjunction lemma
BoundedFormulaInf.realize_foldr_inffollows Mathlib'sBoundedFormula.realize_foldr_infinMathlib/ModelTheory/Semantics.lean(Aaron Anderson). - Ported from
cameronfreer/infinitary-logicat commit9f82bd572af2d79a043c6bc3f1b745f14e0bcaa4, whose infinitary semantics isMathlib/ModelTheory/Infinitary/Semantics.leaninleanprover-community/mathlib4#42758(Apache 2.0) at commit2264c2c872bb642ab519aa2288d53110f07af37d. - Divergences from these sources: realization laws for the added binary connectives
(
realize_inf,realize_sup,realize_iff);FormulaInf.RealizeandSentenceInf.Realizeare not exposed, with the simp bridgesFormulaInf.realize_defandSentenceInf.realize_def(at prioritylow, so default-priority facts stated at the formula or sentence level are tried first) in their place;realize_allsandrealize_exsare stated for bounded realization at the empty valuation of the bound-variable slots, their simp-normal form.
Implementation notes #
BoundedFormulaInf.Realize is exposed, as in the sources. Its pattern-matching definition
compiles through an auxiliary matcher, which is named BoundedFormulaInf.Realize.match_1 only
when the body is exposed (otherwise the matcher gets a private, module-specific name). Exposing
it keeps that name stable, so that a downstream restatement of the same definition can be
compared with this one constant by constant.
Realization of an infinitary bounded formula in a structure, given valuations of the free and bound variables. One recursion serves every carrier.
Instances For
Realization of an infinitary disjunction: one statement, generic in the carrier and its universe.
Realization of an infinitary conjunction: one statement, generic in the carrier and its universe.
A finite conjunction holds exactly when every formula in the list holds.
The finitary embedding preserves realization, at every carrier.
Realization of an L_{∞ω} formula, which has no bound-variable slots.
Instances For
A formula is realized when it is realized as a bounded formula with no bound variables, so the
realization lemmas for bounded formulas apply to formulas. The priority is low so that simp
tries default-priority facts stated at the formula level (hypotheses passed to simp, downstream
simp lemmas) before descending to bounded realization.
Closing all bound-variable slots universally realizes as universal quantification over the valuations of those slots.
Closing all bound-variable slots existentially realizes as existential quantification over the valuations of those slots.
Quantifying the last k slots existentially realizes as existential quantification over the
valuations ys of those slots, appended to the valuation of the remaining slots.
Realization of an L_{∞ω} sentence in a structure.
Instances For
A sentence is realized in a structure when it is realized as a formula under the empty
valuation of its free variables. The priority is low for the same reason as
FormulaInf.realize_def.
An infinitary conjunction of sentences holds exactly when every sentence holds.
The negation of a sentence holds exactly when the sentence does not hold.
An implication of sentences holds exactly when its conclusion holds whenever its hypothesis does.
An infinitary disjunction of sentences holds exactly when some sentence holds.