Aloni, Anttila and Yang (2024): state-based modal logics for free choice #
Aloni, Anttila and Yang extend bilateral state-based modal logic (BSML) in two ways. BSML⨼ adds
the global disjunction ⨼, supported when either disjunct is, and BSML⊘ adds the emptiness
operator ⊘, supported when its argument is or the state is empty. NE is the only obstruction
to downward closure and to the empty-state property, and ⨼ the only obstruction to union
closure. All three logics are invariant under bounded bisimulation, and BSML, though union
closed, cannot express every union-closed bisimulation-invariant property.
Main results #
support_empt_iff_gdisj_bot,support_poss_gdisj: equivalences among the new connectives.isLowerSet_support_of_neFree,supClosed_support_of_gdFree,isFlat_support_of_neFree_gdFree: the closure properties of Fact 2.7.invariant_eval: bisimulation invariance (Theorem 3.8).bsml_not_complete_for_unionClosed: BSML does not express every union-closed bisimulation-invariant property (Fact 3.19).support_empt_conj_ne:⊘cancels pragmatic enrichment.narrowScopeFC: narrow-scope free choice, transferred from BSML alongofBSML.
Implementation notes #
The three logics are fragments of one syntax: Formula carries ⊥, NE, ⨼ and ⊘
together, and NEFree, GDFree and EmptFree cut out the languages, so each closure property
is one theorem under its fragment hypothesis. Expressive completeness (Theorems 3.15 and 3.17)
and the natural-deduction systems of §4 are not formalized here; the BSML system lives in
Logic/Team/BSML/NaturalDeduction.lean.
References #
Syntax and semantics #
The formulas of the joint syntax of BSML, BSML⨼ and BSML⊘ (Definition 2.1) are those of
BSML together with the weak contradiction ⊥, the global disjunction ⨼ and the
emptiness operator ⊘.
- atom {Atom : Type u_4} (p : Atom) : Formula Atom
- bot
{Atom : Type u_4}
: Formula Atom
Weak contradiction
⊥, supported by the empty state only. - ne
{Atom : Type u_4}
: Formula Atom
Nonemptiness atom
NE. - 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
Tensor (local) disjunction.
- gdisj
{Atom : Type u_4}
(φ ψ : Formula Atom)
: Formula Atom
Global disjunction
⨼. - empt
{Atom : Type u_4}
(φ : Formula Atom)
: Formula Atom
Emptiness operator
⊘. - 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
Equations
- One or more equations did not get rendered due to their size.
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (AloniAnttilaYang2024.Formula.atom a) (AloniAnttilaYang2024.Formula.atom b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (AloniAnttilaYang2024.Formula.atom p) AloniAnttilaYang2024.Formula.bot = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (AloniAnttilaYang2024.Formula.atom p) AloniAnttilaYang2024.Formula.ne = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (AloniAnttilaYang2024.Formula.atom p) φ.neg = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (AloniAnttilaYang2024.Formula.atom p) (φ.conj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (AloniAnttilaYang2024.Formula.atom p) (φ.disj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (AloniAnttilaYang2024.Formula.atom p) (φ.gdisj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (AloniAnttilaYang2024.Formula.atom p) φ.empt = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (AloniAnttilaYang2024.Formula.atom p) φ.poss = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.bot (AloniAnttilaYang2024.Formula.atom p) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.bot AloniAnttilaYang2024.Formula.bot = isTrue ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.bot AloniAnttilaYang2024.Formula.ne = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.bot φ.neg = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.bot (φ.conj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.bot (φ.disj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.bot (φ.gdisj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.bot φ.empt = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.bot φ.poss = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.ne (AloniAnttilaYang2024.Formula.atom p) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.ne AloniAnttilaYang2024.Formula.bot = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.ne AloniAnttilaYang2024.Formula.ne = isTrue ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.ne φ.neg = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.ne (φ.conj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.ne (φ.disj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.ne (φ.gdisj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.ne φ.empt = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq AloniAnttilaYang2024.Formula.ne φ.poss = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.neg (AloniAnttilaYang2024.Formula.atom p) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.neg AloniAnttilaYang2024.Formula.bot = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.neg AloniAnttilaYang2024.Formula.ne = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq a.neg b.neg = if h : a = b then h ▸ have inst := AloniAnttilaYang2024.instDecidableEqFormula.decEq a a; isTrue ⋯ else isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.neg (φ_1.conj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.neg (φ_1.disj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.neg (φ_1.gdisj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.neg φ_1.empt = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.neg φ_1.poss = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.conj ψ) (AloniAnttilaYang2024.Formula.atom p) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.conj ψ) AloniAnttilaYang2024.Formula.bot = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.conj ψ) AloniAnttilaYang2024.Formula.ne = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.conj ψ) φ_1.neg = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.conj ψ) (φ_1.disj ψ_1) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.conj ψ) (φ_1.gdisj ψ_1) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.conj ψ) φ_1.empt = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.conj ψ) φ_1.poss = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.disj ψ) (AloniAnttilaYang2024.Formula.atom p) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.disj ψ) AloniAnttilaYang2024.Formula.bot = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.disj ψ) AloniAnttilaYang2024.Formula.ne = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.disj ψ) φ_1.neg = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.disj ψ) (φ_1.conj ψ_1) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.disj ψ) (φ_1.gdisj ψ_1) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.disj ψ) φ_1.empt = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.disj ψ) φ_1.poss = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.gdisj ψ) (AloniAnttilaYang2024.Formula.atom p) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.gdisj ψ) AloniAnttilaYang2024.Formula.bot = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.gdisj ψ) AloniAnttilaYang2024.Formula.ne = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.gdisj ψ) φ_1.neg = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.gdisj ψ) (φ_1.conj ψ_1) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.gdisj ψ) (φ_1.disj ψ_1) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.gdisj ψ) φ_1.empt = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq (φ.gdisj ψ) φ_1.poss = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.empt (AloniAnttilaYang2024.Formula.atom p) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.empt AloniAnttilaYang2024.Formula.bot = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.empt AloniAnttilaYang2024.Formula.ne = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.empt φ_1.neg = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.empt (φ_1.conj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.empt (φ_1.disj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.empt (φ_1.gdisj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq a.empt b.empt = if h : a = b then h ▸ have inst := AloniAnttilaYang2024.instDecidableEqFormula.decEq a a; isTrue ⋯ else isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.empt φ_1.poss = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.poss (AloniAnttilaYang2024.Formula.atom p) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.poss AloniAnttilaYang2024.Formula.bot = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.poss AloniAnttilaYang2024.Formula.ne = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.poss φ_1.neg = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.poss (φ_1.conj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.poss (φ_1.disj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.poss (φ_1.gdisj ψ) = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq φ.poss φ_1.empt = isFalse ⋯
- AloniAnttilaYang2024.instDecidableEqFormula.decEq a.poss b.poss = if h : a = b then h ▸ have inst := AloniAnttilaYang2024.instDecidableEqFormula.decEq a a; isTrue ⋯ else isFalse ⋯
Instances For
Equations
- (AloniAnttilaYang2024.Formula.atom p).instDecidableNEFree = isTrue trivial
- AloniAnttilaYang2024.Formula.bot.instDecidableNEFree = isTrue trivial
- AloniAnttilaYang2024.Formula.ne.instDecidableNEFree = isFalse ⋯
- φ.neg.instDecidableNEFree = ⋯.mpr φ.instDecidableNEFree
- φ.empt.instDecidableNEFree = ⋯.mpr φ.instDecidableNEFree
- φ.poss.instDecidableNEFree = ⋯.mpr φ.instDecidableNEFree
- (φ.conj ψ).instDecidableNEFree = ⋯.mpr instDecidableAnd
- (φ.disj ψ).instDecidableNEFree = ⋯.mpr instDecidableAnd
- (φ.gdisj ψ).instDecidableNEFree = ⋯.mpr instDecidableAnd
Equations
- (AloniAnttilaYang2024.Formula.atom p).instDecidableGDFree = isTrue trivial
- AloniAnttilaYang2024.Formula.bot.instDecidableGDFree = isTrue trivial
- AloniAnttilaYang2024.Formula.ne.instDecidableGDFree = isTrue trivial
- (φ.gdisj ψ).instDecidableGDFree = isFalse ⋯
- φ.neg.instDecidableGDFree = ⋯.mpr φ.instDecidableGDFree
- φ.empt.instDecidableGDFree = ⋯.mpr φ.instDecidableGDFree
- φ.poss.instDecidableGDFree = ⋯.mpr φ.instDecidableGDFree
- (φ.conj ψ).instDecidableGDFree = ⋯.mpr instDecidableAnd
- (φ.disj ψ).instDecidableGDFree = ⋯.mpr instDecidableAnd
Equations
- (AloniAnttilaYang2024.Formula.atom p).instDecidableEmptFree = isTrue trivial
- AloniAnttilaYang2024.Formula.bot.instDecidableEmptFree = isTrue trivial
- AloniAnttilaYang2024.Formula.ne.instDecidableEmptFree = isTrue trivial
- φ.empt.instDecidableEmptFree = isFalse ⋯
- φ.neg.instDecidableEmptFree = ⋯.mpr φ.instDecidableEmptFree
- φ.poss.instDecidableEmptFree = ⋯.mpr φ.instDecidableEmptFree
- (φ.conj ψ).instDecidableEmptFree = ⋯.mpr instDecidableAnd
- (φ.disj ψ).instDecidableEmptFree = ⋯.mpr instDecidableAnd
- (φ.gdisj ψ).instDecidableEmptFree = ⋯.mpr instDecidableAnd
Bilateral evaluation eval M b φ t (Definition 2.3) is support when b is true and
anti-support when it is false.
Equations
- AloniAnttilaYang2024.eval M true (AloniAnttilaYang2024.Formula.atom p) x✝ = ∀ w ∈ x✝, M.val p w
- AloniAnttilaYang2024.eval M false (AloniAnttilaYang2024.Formula.atom p) x✝ = ∀ w ∈ x✝, ¬M.val p w
- AloniAnttilaYang2024.eval M true AloniAnttilaYang2024.Formula.bot x✝ = (x✝ = ∅)
- AloniAnttilaYang2024.eval M false AloniAnttilaYang2024.Formula.bot x✝ = True
- AloniAnttilaYang2024.eval M true AloniAnttilaYang2024.Formula.ne x✝ = x✝.Nonempty
- AloniAnttilaYang2024.eval M false AloniAnttilaYang2024.Formula.ne x✝ = (x✝ = ∅)
- AloniAnttilaYang2024.eval M true ψ.neg x✝ = AloniAnttilaYang2024.eval M false ψ x✝
- AloniAnttilaYang2024.eval M false ψ.neg x✝ = AloniAnttilaYang2024.eval M true ψ x✝
- AloniAnttilaYang2024.eval M true (ψ₁.conj ψ₂) x✝ = (AloniAnttilaYang2024.eval M true ψ₁ x✝ ∧ AloniAnttilaYang2024.eval M true ψ₂ x✝)
- AloniAnttilaYang2024.eval M false (ψ₁.conj ψ₂) x✝ = (x✝ ∈ Team.tensor {s : Finset W | AloniAnttilaYang2024.eval M false ψ₁ s} {s : Finset W | AloniAnttilaYang2024.eval M false ψ₂ s})
- AloniAnttilaYang2024.eval M true (ψ₁.disj ψ₂) x✝ = (x✝ ∈ Team.tensor {s : Finset W | AloniAnttilaYang2024.eval M true ψ₁ s} {s : Finset W | AloniAnttilaYang2024.eval M true ψ₂ s})
- AloniAnttilaYang2024.eval M false (ψ₁.disj ψ₂) x✝ = (AloniAnttilaYang2024.eval M false ψ₁ x✝ ∧ AloniAnttilaYang2024.eval M false ψ₂ x✝)
- AloniAnttilaYang2024.eval M true (ψ₁.gdisj ψ₂) x✝ = (AloniAnttilaYang2024.eval M true ψ₁ x✝ ∨ AloniAnttilaYang2024.eval M true ψ₂ x✝)
- AloniAnttilaYang2024.eval M false (ψ₁.gdisj ψ₂) x✝ = (AloniAnttilaYang2024.eval M false ψ₁ x✝ ∧ AloniAnttilaYang2024.eval M false ψ₂ x✝)
- AloniAnttilaYang2024.eval M true ψ.empt x✝ = (AloniAnttilaYang2024.eval M true ψ x✝ ∨ x✝ = ∅)
- AloniAnttilaYang2024.eval M false ψ.empt x✝ = AloniAnttilaYang2024.eval M false ψ x✝
- AloniAnttilaYang2024.eval M true ψ.poss x✝ = ∀ w ∈ x✝, ∃ s ⊆ M.access w, s.Nonempty ∧ AloniAnttilaYang2024.eval M true ψ s
- AloniAnttilaYang2024.eval M false ψ.poss x✝ = ∀ w ∈ x✝, AloniAnttilaYang2024.eval M false ψ (M.access w)
Instances For
Equations
- AloniAnttilaYang2024.support M φ t = AloniAnttilaYang2024.eval M true φ t
Instances For
Equations
- AloniAnttilaYang2024.antiSupport M φ t = AloniAnttilaYang2024.eval M false φ t
Instances For
The §2 equivalences #
⊘φ ≡ φ ⨼ ⊥.
The diamond converts the global disjunction into the tensor one, ◇(φ ⨼ ψ) ≡ ◇φ ∨ ◇ψ,
which makes the rule Conv◇⨼∨ of Theorem 4.3 sound.
Closure properties (Fact 2.7) #
NE-free formulas have the empty-state property.
NE-free formulas are downward closed.
⨼-free formulas are union closed; in particular every BSML⊘ formula is.
Classical formulas — NE-free and ⨼-free — are flat.
BSML is not complete for union-closed properties #
A BSML formula with the empty-state property is downward closed (Lemma 3.18).
The two-world model of Fact 3.19 makes p true at true only and has no accessible
worlds.
Equations
- AloniAnttilaYang2024.twoWorlds = { access := fun (x : Bool) => ∅, val := fun (x : Unit) (w : Bool) => w = true }
Instances For
The property ‖(p ∧ NE) ∨ (¬p ∧ NE)‖ ∪ ‖⊥‖ of Fact 3.19 is union closed and bisimulation
invariant, yet not expressible in BSML.
Equations
- One or more equations did not get rendered due to their size.
Instances For
No BSML formula expresses splitProperty (Fact 3.19). The property holds on ∅ and on
{true, false}, so a BSML formula expressing it would be downward closed (Lemma 3.18) and
hold on {true}, where the property fails.
The emptiness operator cancels enrichment #
For classical α, ⊘(α ∧ NE) ≡ α (§5), so the emptiness operator undoes the
non-emptiness that pragmatic enrichment adds.
The embedding of BSML #
BSML formulas as formulas of the joint language.
Equations
- AloniAnttilaYang2024.ofBSML (BSML.Formula.atom p) = AloniAnttilaYang2024.Formula.atom p
- AloniAnttilaYang2024.ofBSML BSML.Formula.ne = AloniAnttilaYang2024.Formula.ne
- AloniAnttilaYang2024.ofBSML ψ.neg = (AloniAnttilaYang2024.ofBSML ψ).neg
- AloniAnttilaYang2024.ofBSML (ψ₁.conj ψ₂) = (AloniAnttilaYang2024.ofBSML ψ₁).conj (AloniAnttilaYang2024.ofBSML ψ₂)
- AloniAnttilaYang2024.ofBSML (ψ₁.disj ψ₂) = (AloniAnttilaYang2024.ofBSML ψ₁).disj (AloniAnttilaYang2024.ofBSML ψ₂)
- AloniAnttilaYang2024.ofBSML ψ.poss = (AloniAnttilaYang2024.ofBSML ψ).poss
Instances For
The embedding preserves bilateral evaluation, so the joint language is a conservative extension of BSML.
Narrow-scope free choice, [◇(α ∨ β)]⁺ ⊨ ◇α ∧ ◇β, transported from
[Alo22] along the embedding.
Bisimulation invariance (Theorem 3.8) #
The modal depth of a formula is the greatest number of nested ◇s in it.
Equations
- (AloniAnttilaYang2024.Formula.atom p).modalDepth = 0
- AloniAnttilaYang2024.Formula.bot.modalDepth = 0
- AloniAnttilaYang2024.Formula.ne.modalDepth = 0
- ψ.neg.modalDepth = ψ.modalDepth
- ψ.empt.modalDepth = ψ.modalDepth
- (ψ₁.conj ψ₂).modalDepth = max ψ₁.modalDepth ψ₂.modalDepth
- (ψ₁.disj ψ₂).modalDepth = max ψ₁.modalDepth ψ₂.modalDepth
- (ψ₁.gdisj ψ₂).modalDepth = max ψ₁.modalDepth ψ₂.modalDepth
- ψ.poss.modalDepth = ψ.modalDepth + 1
Instances For
Teams that are k-bisimilar agree on every formula of modal depth at most k, in both
polarities (Theorem 3.8).