The standard translation for monadic quantified modal logic #
The standard translation of modal logic into first-order logic
([BdRV01]), for the monadic signature: modal formulas
over monadicLang Const Pred translate into plain mathlib first-order
formulas over stLang Const Pred — accessibility as a binary relation,
predicates world-relativized to binary relations, constants world-indexed to
unary functions, and an individual-sort predicate — interpreted on the
two-sorted-as-one carrier W ⊕ M. realize_st? is satisfaction
preservation; composed with Proposition 4.1, the support relation of NE-free
QBSML bottoms out in single-structure mathlib first-order satisfaction
(support_singleton_iff_st).
Main declarations #
stLang— the target signature;KripkeStructure.stStructure— theW ⊕ Mencoding of a Kripke structure as one mathlib structure.ModalFormula.st?— the standard translation, with the current world as the free variableSum.inr kand box introducing the fresh world variableSum.inr (k + 1)(partial: embedded classical formulas translate when atomic, which covers alltoModal?images).realize_st?— satisfaction preservation: Kripke satisfaction atwis first-order realization overstStructureat any sorted valuation pinningSum.inr ktow.support_singleton_iff_st— NE-free QBSML support is first-order realization of the standard translation, via Proposition 4.1.stClose— sort-guarded existential closure of the current-world variable, turning translations into sentence candidates.support_compactness— compactness transfer: finite team satisfiability of an NE-free family yields one first-order structure satisfying all closed translations.
Implementation notes #
- The valuation in
realize_st?is an arbitraryval : Var ⊕ ℕ → W ⊕ Mconstrained only at individual variables and at the current world index — quantifiers in the translation range over the full mixed carrier, with off-sort values discharged by the relational guards, so noSum.elim-update commutation is needed in the induction. - Freshness of world variables is by increment: each
boxshifts the current index fromktok + 1, and the constraint set of the theorem pins only indexk, so no freshness side conditions arise. - The compactness transfer is one-way: recovering a team model from an
arbitrary first-order structure would need
Finset-branching accessibility and aFintypedomain.freeVarFinset = ∅side conditions are hypotheses, dischargeable bydecideper instance — no generic free-variable bookkeeping forst?.
The target signature and the encoded structure #
The standard-translation target signature: world-indexed constants as unary functions, an individual-sort predicate (unary), and world-relativized monadic predicates plus accessibility (binary).
Equations
- One or more equations did not get rendered due to their size.
Instances For
A constant as a unary function symbol of the target signature.
Equations
Instances For
The individual-sort predicate.
Equations
- Core.Logic.Modal.QBSML.stIndiv = PUnit.unit
Instances For
A predicate as a world-relativized binary relation symbol.
Equations
- Core.Logic.Modal.QBSML.stRel P = Sum.inl P
Instances For
The accessibility relation symbol.
Equations
- Core.Logic.Modal.QBSML.stAcc = Sum.inr PUnit.unit
Instances For
The W ⊕ M encoding of a Kripke structure over the monadic signature
as a single mathlib structure: worlds and individuals share the carrier,
sorted by stIndiv; relational guards make all off-sort atoms false.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The translation #
Translate a monadic term: variables stay, constants become their unary function applied to the current world variable.
Equations
- Core.Logic.Modal.QBSML.stTerm k (FirstOrder.Language.var (Sum.inl x_1)) = FirstOrder.Language.var (Sum.inl x_1)
- Core.Logic.Modal.QBSML.stTerm k (FirstOrder.Language.var (Sum.inr i)) = i.elim0
- Core.Logic.Modal.QBSML.stTerm k (FirstOrder.Language.func c _ts_2) = FirstOrder.Language.func (Core.Logic.Modal.QBSML.stConst c) ![FirstOrder.Language.var (Sum.inr k)]
- Core.Logic.Modal.QBSML.stTerm k (FirstOrder.Language.func f_2 _ts_2) = PEmpty.elim f_2
Instances For
Translate an embedded classical formula when it is a monadic atom
(none otherwise — which never arises from QBSMLFormula.toModal?
images, whose embedded formulas are exactly the atoms).
Equations
- One or more equations did not get rendered due to their size.
- Core.Logic.Modal.QBSML.stAtom? k (FirstOrder.Language.BoundedFormula.rel r x_1) = PEmpty.elim r
- Core.Logic.Modal.QBSML.stAtom? k (FirstOrder.Language.BoundedFormula.rel r x_1) = PEmpty.elim r
- Core.Logic.Modal.QBSML.stAtom? k x✝ = none
Instances For
The standard translation ST_k ([BdRV01]): the
current world is the free variable Sum.inr k; box relativizes a
fresh world variable Sum.inr (k + 1) along accessibility; quantifiers
relativize to the individual sort.
Equations
- One or more equations did not get rendered due to their size.
- FirstOrder.Language.ModalFormula.st? k (FirstOrder.Language.ModalFormula.ofFormula χ) = Core.Logic.Modal.QBSML.stAtom? k χ
- FirstOrder.Language.ModalFormula.st? k φ.not = Option.map (fun (x : (Core.Logic.Modal.QBSML.stLang Const Pred).Formula (Var ⊕ ℕ)) => x.not) (FirstOrder.Language.ModalFormula.st? k φ)
Instances For
Satisfaction preservation #
Satisfaction preservation for the standard translation: Kripke
satisfaction at w is first-order realization over stStructure, for
any valuation that is individual-sorted on Var and pins the current
world variable Sum.inr k to w. Off-sort quantifier instances are
discharged by the relational guards, and box's fresh world variable
k + 1 leaves the pinned index untouched.
Sort-guarded sentence closure #
Sort-guarded existential closure of the current-world variable
Sum.inr k: ∃z(¬IsIndiv(z) ∧ ψ). The guard is load-bearing on the
mixed carrier — a bare ex₁ could be witnessed by a junk
individual-as-world, which satisfies □⊥ vacuously.
Equations
- Core.Logic.Modal.QBSML.stClose k ψ = FirstOrder.Language.Formula.ex₁ (Sum.inr k) ((Core.Logic.Modal.QBSML.stIndiv.formula₁ (FirstOrder.Language.var (Sum.inr k))).not ⊓ ψ)
Instances For
Over stStructure, the guarded witness of stClose is exactly a
world.
Proposition 4.1, composed: QBSML support is first-order realization #
NE-free QBSML support is single-structure first-order satisfaction:
[AvO23] Proposition 4.1 composed with the standard
translation. Support at a singleton state is mathlib Formula.Realize
of the standard translation over stStructure — the link along which
classical model theory (compactness, Löwenheim–Skolem) transfers to the
NE-free fragment.
Support at a singleton state forces the closed standard translation,
as a sentence of stStructure.
Conversely, the closed standard translation as a sentence of
stStructure yields support at some singleton state.
Compactness for the NE-free fragment #
Compactness transfer for NE-free QBSML ([AvO23]
Proposition 4.1, the standard translation, and mathlib's
Theory.isSatisfiable_iff_isFinitelySatisfiable): if every finite
subfamily of a family of NE-free formulas is supported at a singleton
state of some model, the family's closed standard translations are
jointly satisfiable in a single first-order structure.
The converse recovery of a team model from that structure would need
Finset-branching accessibility and a Fintype domain, which an
arbitrary first-order structure does not supply, so the transfer is
stated one-way. Compactness for team-semantic consequence is proved
directly (ultraproducts and saturation, without translation) by
[PQ24], who also separate satisfiability- from
entailment-compactness in team logics.