Documentation

Linglib.Core.Logic.Modal.BSML.Bisimulation

Bisimulation invariance for BSML #

[AAY24] [Ant25]

The carrier-level bisimulation substrate (WorldBisim, StateBisim, and the Lemma 3.7 transport lemmas) lives in Core/Logic/Modal/Bisimulation.lean, shared across the modal team logics. This file specialises it to BSML: the modal-depth measure on BSMLFormula and the headline invariance result (Theorem 3.8) for BSML's bilateral evaluation.

Main declarations #

Implementation notes #

The bisim-invariance proof inducts on the formula, handling both polarities (eval M b φ s) jointly at each step. The negation case flips polarity without changing depth; the modal case uses StateBisim.accessImage (Lemma 3.7(i)) to recurse at depth k; conjunction and disjunction use StateBisim.splitPreserve (Lemma 3.7(ii)) for the split-existential clauses (conj-antiSupport and disj-support).

Todo #

Modal depth of a BSMLFormula (page 9 of [AAY24]). Atoms and NE are 0; neg preserves depth; conj and disj take the max; poss increments.

Equations
Instances For

    Theorem 3.8: bisimulation invariance for BSML #

    theorem Core.Logic.Modal.BSML.bisim_invariant_eval {W : Type u_1} {W' : Type u_2} [DecidableEq W] [Fintype W] [DecidableEq W'] [Fintype W'] {Atom : Type u_3} (φ : BSMLFormula Atom) {k : } :
    φ.modalDepth k∀ {M : BSMLModel W Atom} {M' : BSMLModel W' Atom} {s : Finset W} {s' : Finset W'}, StateBisim k M s M' s'∀ (b : Bool), eval M b φ s eval M' b φ s'

    Theorem 3.8 of [AAY24] specialised to BSML: if s ⇌_k s' and φ : BSMLFormula Atom has modal depth ≤ k, then eval M b φ s ↔ eval M' b φ s' for both polarities.

    Proved by structural induction on φ, with both polarities handled jointly at each step. The neg case flips polarity without changing depth; the poss case uses Lemma 3.7(i) to recurse at depth k; conjunction and disjunction use Lemma 3.7(ii) for the split-existential clauses (conj-antiSupport and disj-support).