State-based Modal Logics for Free Choice — Aloni, Anttila & Yang 2024 #
Formalisation of two extensions of BSML introduced in [AAY24] (Notre Dame J. Formal Logic 65(4), 2024):
BSMLOr— BSML extended with the global disjunction⨼(Definition 2.1; written∨∨in some sources).BSMLEmpty— BSML extended with the emptiness operator⊘(Definition 2.1).
Both extend BSML's BSMLModel (worlds + accessibility + valuation) and
inherit the bilateral support/anti-support semantics. The new connectives
are characterised by Fact 2.7 in the paper:
| Logic | Has NE | Has ⨼ | Downward-closed | Union-closed |
|---|---|---|---|---|
| BSML | yes | no | when NE-free | always |
| BSMLOr | yes | yes | when NE-free | when ⨼-free |
| BSMLEmpty | yes | no | when NE-free | always |
The "when NE-free" / "when ⨼-free" entries express Fact 2.7's universal
statement uniformly across all three logics — NE is the only obstruction
to downward closure; ⨼ is the only obstruction to union closure.
The closure-property classification matches the audit's family-axis
insight: each extension occupies a different cell of the
(IsLowerSet, SupClosed, ⊥ ∈ ·) profile lattice.
Main declarations #
BSMLOr.Formula/BSMLEmpty.Formula— syntax (Definition 2.1).BSMLOr.eval/BSMLEmpty.eval— bilateral semantics (Definition 2.3), parametric in polarity.BSMLOr.support/BSMLOr.antiSupport(and theBSMLEmptyanalogues) — convenience abbreviations.BSMLOr.isBilateral/BSMLEmpty.isBilateral— instances ofCore.Logic.Bilateral.IsBilateral, reusing the BSML substrate.BSMLEmpty.supClosed_support— union-closure of BSML⊘ formulas (Fact 2.7; the second-consumer evidence that BSML's substrate generalises).BSMLOr.ofBSML/BSMLEmpty.ofBSML— embeddingBSMLFormulainto each extension, preserving semantics (eval_ofBSMLtheorems).
Implementation notes #
The paper's BSML includes ⊥ (weak contradiction) as a primitive, whereas
linglib's BSMLFormula (Aloni 2022) does not (the original defines
⊥ := p ∧ ¬p). The extension formula types here include ⊥ to match
[AAY24]; the embedding BSMLFormula → Formula
therefore has no preimage for ⊥.
BSMLOr's global disjunction ⨼ is the team-semantic inquisitive
disjunction — the support clause is propositional disjunction at the
team level, in contrast to disj's split-existential. Crucially, ⨼ is
the only BSML-family connective that breaks union closure (Fact 2.7,
proof in [AAY24]).
BSMLEmpty's emptiness operator ⊘φ is supported when s ⊨ φ or
s = ∅. It is essentially a restricted ⨼: ⊘φ ≡ φ ⨼ ⊥. But since
BSMLEmpty omits ⨼, union closure is preserved.
Todo #
- §3.2 Expressive-completeness theorems — BSMLOr is expressively complete for bisimulation-invariant state properties; BSMLEmpty for the union-closed ∩ bisimulation-invariant fragment. The bisim-invariance half is done (Theorem 3.8 above for both BSMLOr and BSMLEmpty); the converse direction requires Hintikka formulas for states (Definition 3.10) and finite atom sets. See [Ant25] Chapter 3.
- §4 Natural-deduction axiomatisations for each of BSML, BSMLOr, BSMLEmpty. Soundness + completeness theorems; [Ant25] Chapter 4 has the updated proofs.
- Free-choice prediction theorem: state the narrow-scope FC inference
[◇(p ∨ q)]⁺ ⊨ ◇p ∧ ◇q(and the analogous cancellation under negation, Example (2) of the paper) over BSMLEmpty. Requires extendingBSML/Enrichment.lean's[·]⁺to targetBSMLEmpty.Formula. Currently the file formalises the vehicle (syntax + semantics) but never fires the gun (FC prediction). - Fact 2.5 (negation normal form) and Fact 2.8 (ML embedding) — provable but not load-bearing for the closure-property story.
BSMLOr-specific theorem:supClosed_support_of_isGDFree(Fact 2.7 second part — ⨼-free fragment is union-closed). Requires defining theisGDFreepredicate overBSMLOr.Formula.
BSMLOr — BSML with global disjunction ⨼ #
BSMLOr syntax (Definition 2.1 of [AAY24]):
BSML extended with the global disjunction gdisj (⨼). The bot
constructor is ⊥ (weak contradiction), included as a primitive in
the AAY-2024 presentation.
- atom
{Atom : Type u_4}
(p : Atom)
: Formula Atom
Atomic proposition.
- bot
{Atom : Type u_4}
: Formula Atom
Weak contradiction
⊥: supported only by the empty team. - ne
{Atom : Type u_4}
: Formula Atom
Non-emptiness atom: team is non-empty.
- neg
{Atom : Type u_4}
(φ : Formula Atom)
: Formula Atom
Bilateral negation: swap support/anti-support.
- conj
{Atom : Type u_4}
(φ ψ : Formula Atom)
: Formula Atom
Conjunction.
- disj
{Atom : Type u_4}
(φ ψ : Formula Atom)
: Formula Atom
Tensor disjunction (split).
- gdisj
{Atom : Type u_4}
(φ ψ : Formula Atom)
: Formula Atom
Global disjunction
⨼: propositional disjunction at the team level. - poss
{Atom : Type u_4}
(φ : Formula Atom)
: Formula Atom
Possibility modal
◇.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Bilateral evaluation for BSMLOr (Definition 2.3 of
[AAY24]). eval M true φ t is support;
eval M false φ t is anti-support. Negation flips polarity.
Equations
- One or more equations did not get rendered due to their size.
- AloniAnttilaYang2024.BSMLOr.eval M true (AloniAnttilaYang2024.BSMLOr.Formula.atom p) x✝ = ∀ w ∈ x✝, M.val p w = true
- AloniAnttilaYang2024.BSMLOr.eval M false (AloniAnttilaYang2024.BSMLOr.Formula.atom p) x✝ = ∀ w ∈ x✝, M.val p w = false
- AloniAnttilaYang2024.BSMLOr.eval M true AloniAnttilaYang2024.BSMLOr.Formula.bot x✝ = (x✝ = ∅)
- AloniAnttilaYang2024.BSMLOr.eval M false AloniAnttilaYang2024.BSMLOr.Formula.bot x✝ = True
- AloniAnttilaYang2024.BSMLOr.eval M true AloniAnttilaYang2024.BSMLOr.Formula.ne x✝ = x✝.Nonempty
- AloniAnttilaYang2024.BSMLOr.eval M false AloniAnttilaYang2024.BSMLOr.Formula.ne x✝ = (x✝ = ∅)
- AloniAnttilaYang2024.BSMLOr.eval M true ψ.neg x✝ = AloniAnttilaYang2024.BSMLOr.eval M false ψ x✝
- AloniAnttilaYang2024.BSMLOr.eval M false ψ.neg x✝ = AloniAnttilaYang2024.BSMLOr.eval M true ψ x✝
- AloniAnttilaYang2024.BSMLOr.eval M true (ψ₁.conj ψ₂) x✝ = (AloniAnttilaYang2024.BSMLOr.eval M true ψ₁ x✝ ∧ AloniAnttilaYang2024.BSMLOr.eval M true ψ₂ x✝)
- AloniAnttilaYang2024.BSMLOr.eval M false (ψ₁.disj ψ₂) x✝ = (AloniAnttilaYang2024.BSMLOr.eval M false ψ₁ x✝ ∧ AloniAnttilaYang2024.BSMLOr.eval M false ψ₂ x✝)
- AloniAnttilaYang2024.BSMLOr.eval M true (ψ₁.gdisj ψ₂) x✝ = (AloniAnttilaYang2024.BSMLOr.eval M true ψ₁ x✝ ∨ AloniAnttilaYang2024.BSMLOr.eval M true ψ₂ x✝)
- AloniAnttilaYang2024.BSMLOr.eval M false (ψ₁.gdisj ψ₂) x✝ = (AloniAnttilaYang2024.BSMLOr.eval M false ψ₁ x✝ ∧ AloniAnttilaYang2024.BSMLOr.eval M false ψ₂ x✝)
- AloniAnttilaYang2024.BSMLOr.eval M true ψ.poss x✝ = ∀ w ∈ x✝, ∃ s ⊆ M.access w, s.Nonempty ∧ AloniAnttilaYang2024.BSMLOr.eval M true ψ s
- AloniAnttilaYang2024.BSMLOr.eval M false ψ.poss x✝ = ∀ w ∈ x✝, AloniAnttilaYang2024.BSMLOr.eval M false ψ (M.access w)
Instances For
Support: positive evaluation.
Equations
- AloniAnttilaYang2024.BSMLOr.support M φ t = AloniAnttilaYang2024.BSMLOr.eval M true φ t
Instances For
Anti-support: negative evaluation.
Equations
- AloniAnttilaYang2024.BSMLOr.antiSupport M φ t = AloniAnttilaYang2024.BSMLOr.eval M false φ t
Instances For
BSMLOr's support/antiSupport form a paraconsistent bilateral
logic under Formula.neg.
Modal depth and bisim invariance for BSMLOr (Theorem 3.8) #
Modal depth of a BSMLOr.Formula: bot, atoms, ne are 0; neg
preserves depth; conj, disj, gdisj take the max; poss
increments.
Equations
- (AloniAnttilaYang2024.BSMLOr.Formula.atom a).modalDepth = 0
- AloniAnttilaYang2024.BSMLOr.Formula.bot.modalDepth = 0
- AloniAnttilaYang2024.BSMLOr.Formula.ne.modalDepth = 0
- a.neg.modalDepth = a.modalDepth
- (a.conj a_1).modalDepth = max a.modalDepth a_1.modalDepth
- (a.disj a_1).modalDepth = max a.modalDepth a_1.modalDepth
- (a.gdisj a_1).modalDepth = max a.modalDepth a_1.modalDepth
- a.poss.modalDepth = a.modalDepth + 1
Instances For
Theorem 3.8 of [AAY24] for BSMLOr: if
s ⇌_k s' and φ : Formula Atom has modal depth ≤ k, then
eval M b φ s ↔ eval M' b φ s' for both polarities.
BSMLEmpty — BSML with emptiness operator ⊘ #
BSMLEmpty syntax (Definition 2.1 of [AAY24]):
BSML extended with the emptiness operator empt (⊘).
- atom {Atom : Type u_4} (p : Atom) : Formula Atom
- bot
{Atom : Type u_4}
: Formula Atom
Weak contradiction
⊥. - ne
{Atom : Type u_4}
: Formula Atom
Non-emptiness atom.
- neg {Atom : Type u_4} (φ : Formula Atom) : Formula Atom
- conj {Atom : Type u_4} (φ ψ : Formula Atom) : Formula Atom
- disj {Atom : Type u_4} (φ ψ : Formula Atom) : Formula Atom
- empt
{Atom : Type u_4}
(φ : Formula Atom)
: Formula Atom
Emptiness operator
⊘φ: supported whens ⊨ φors = ∅. - poss {Atom : Type u_4} (φ : Formula Atom) : Formula Atom
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Bilateral evaluation for BSMLEmpty. The empt clause is:
support .empt φ s ↔ support φ s ∨ s = ∅ (Definition 2.3).
Equations
- One or more equations did not get rendered due to their size.
- AloniAnttilaYang2024.BSMLEmpty.eval M true (AloniAnttilaYang2024.BSMLEmpty.Formula.atom p) x✝ = ∀ w ∈ x✝, M.val p w = true
- AloniAnttilaYang2024.BSMLEmpty.eval M false (AloniAnttilaYang2024.BSMLEmpty.Formula.atom p) x✝ = ∀ w ∈ x✝, M.val p w = false
- AloniAnttilaYang2024.BSMLEmpty.eval M true AloniAnttilaYang2024.BSMLEmpty.Formula.bot x✝ = (x✝ = ∅)
- AloniAnttilaYang2024.BSMLEmpty.eval M false AloniAnttilaYang2024.BSMLEmpty.Formula.bot x✝ = True
- AloniAnttilaYang2024.BSMLEmpty.eval M true AloniAnttilaYang2024.BSMLEmpty.Formula.ne x✝ = x✝.Nonempty
- AloniAnttilaYang2024.BSMLEmpty.eval M false AloniAnttilaYang2024.BSMLEmpty.Formula.ne x✝ = (x✝ = ∅)
- AloniAnttilaYang2024.BSMLEmpty.eval M true ψ.neg x✝ = AloniAnttilaYang2024.BSMLEmpty.eval M false ψ x✝
- AloniAnttilaYang2024.BSMLEmpty.eval M false ψ.neg x✝ = AloniAnttilaYang2024.BSMLEmpty.eval M true ψ x✝
- AloniAnttilaYang2024.BSMLEmpty.eval M true (ψ₁.conj ψ₂) x✝ = (AloniAnttilaYang2024.BSMLEmpty.eval M true ψ₁ x✝ ∧ AloniAnttilaYang2024.BSMLEmpty.eval M true ψ₂ x✝)
- AloniAnttilaYang2024.BSMLEmpty.eval M false (ψ₁.disj ψ₂) x✝ = (AloniAnttilaYang2024.BSMLEmpty.eval M false ψ₁ x✝ ∧ AloniAnttilaYang2024.BSMLEmpty.eval M false ψ₂ x✝)
- AloniAnttilaYang2024.BSMLEmpty.eval M true ψ.empt x✝ = (AloniAnttilaYang2024.BSMLEmpty.eval M true ψ x✝ ∨ x✝ = ∅)
- AloniAnttilaYang2024.BSMLEmpty.eval M false ψ.empt x✝ = AloniAnttilaYang2024.BSMLEmpty.eval M false ψ x✝
- AloniAnttilaYang2024.BSMLEmpty.eval M true ψ.poss x✝ = ∀ w ∈ x✝, ∃ s ⊆ M.access w, s.Nonempty ∧ AloniAnttilaYang2024.BSMLEmpty.eval M true ψ s
- AloniAnttilaYang2024.BSMLEmpty.eval M false ψ.poss x✝ = ∀ w ∈ x✝, AloniAnttilaYang2024.BSMLEmpty.eval M false ψ (M.access w)
Instances For
Equations
- AloniAnttilaYang2024.BSMLEmpty.support M φ t = AloniAnttilaYang2024.BSMLEmpty.eval M true φ t
Instances For
Equations
- AloniAnttilaYang2024.BSMLEmpty.antiSupport M φ t = AloniAnttilaYang2024.BSMLEmpty.eval M false φ t
Instances For
Fact 2.7: BSMLEmpty is union-closed #
Fact 2.7 (BSMLEmpty portion): every BSMLEmpty formula has sup-closed support. Direct evidence that the team-semantics substrate generalises from BSML to BSML⊘ without changes — the substrate's payoff at a second logic.
Modal depth and bisim invariance for BSMLEmpty (Theorem 3.8) #
Modal depth of a BSMLEmpty.Formula: bot, atoms, ne are 0;
neg and empt preserve depth; conj, disj take the max; poss
increments. (empt/⊘ does not contain a modal operator.)
Equations
- (AloniAnttilaYang2024.BSMLEmpty.Formula.atom a).modalDepth = 0
- AloniAnttilaYang2024.BSMLEmpty.Formula.bot.modalDepth = 0
- AloniAnttilaYang2024.BSMLEmpty.Formula.ne.modalDepth = 0
- a.neg.modalDepth = a.modalDepth
- (a.conj a_1).modalDepth = max a.modalDepth a_1.modalDepth
- (a.disj a_1).modalDepth = max a.modalDepth a_1.modalDepth
- a.empt.modalDepth = a.modalDepth
- a.poss.modalDepth = a.modalDepth + 1
Instances For
Theorem 3.8 of [AAY24] for BSMLEmpty: if
s ⇌_k s' and φ : Formula Atom has modal depth ≤ k, then
eval M b φ s ↔ eval M' b φ s' for both polarities.
Embeddings: BSMLFormula ↪ extension formulas #
Embed a BSML formula into BSMLOr by inclusion of constructors.
Equations
- AloniAnttilaYang2024.BSMLOr.ofBSML (Core.Logic.Modal.BSML.BSMLFormula.atom p) = AloniAnttilaYang2024.BSMLOr.Formula.atom p
- AloniAnttilaYang2024.BSMLOr.ofBSML Core.Logic.Modal.BSML.BSMLFormula.ne = AloniAnttilaYang2024.BSMLOr.Formula.ne
- AloniAnttilaYang2024.BSMLOr.ofBSML ψ.neg = (AloniAnttilaYang2024.BSMLOr.ofBSML ψ).neg
- AloniAnttilaYang2024.BSMLOr.ofBSML (ψ₁.conj ψ₂) = (AloniAnttilaYang2024.BSMLOr.ofBSML ψ₁).conj (AloniAnttilaYang2024.BSMLOr.ofBSML ψ₂)
- AloniAnttilaYang2024.BSMLOr.ofBSML (ψ₁.disj ψ₂) = (AloniAnttilaYang2024.BSMLOr.ofBSML ψ₁).disj (AloniAnttilaYang2024.BSMLOr.ofBSML ψ₂)
- AloniAnttilaYang2024.BSMLOr.ofBSML ψ.poss = (AloniAnttilaYang2024.BSMLOr.ofBSML ψ).poss
Instances For
Embed a BSML formula into BSMLEmpty.
Equations
- AloniAnttilaYang2024.BSMLEmpty.ofBSML (Core.Logic.Modal.BSML.BSMLFormula.atom p) = AloniAnttilaYang2024.BSMLEmpty.Formula.atom p
- AloniAnttilaYang2024.BSMLEmpty.ofBSML Core.Logic.Modal.BSML.BSMLFormula.ne = AloniAnttilaYang2024.BSMLEmpty.Formula.ne
- AloniAnttilaYang2024.BSMLEmpty.ofBSML ψ.neg = (AloniAnttilaYang2024.BSMLEmpty.ofBSML ψ).neg
- AloniAnttilaYang2024.BSMLEmpty.ofBSML (ψ₁.conj ψ₂) = (AloniAnttilaYang2024.BSMLEmpty.ofBSML ψ₁).conj (AloniAnttilaYang2024.BSMLEmpty.ofBSML ψ₂)
- AloniAnttilaYang2024.BSMLEmpty.ofBSML (ψ₁.disj ψ₂) = (AloniAnttilaYang2024.BSMLEmpty.ofBSML ψ₁).disj (AloniAnttilaYang2024.BSMLEmpty.ofBSML ψ₂)
- AloniAnttilaYang2024.BSMLEmpty.ofBSML ψ.poss = (AloniAnttilaYang2024.BSMLEmpty.ofBSML ψ).poss
Instances For
The embedding BSMLFormula → BSMLOr.Formula preserves bilateral
evaluation: BSMLOr is a faithful extension of BSML.
The embedding BSMLFormula → BSMLEmpty.Formula preserves bilateral
evaluation.