Modal dependence logic #
Väänänen's modal dependence logic (MDL) extends classical modal logic with the dependence atom
=(p₁, …, pₙ; q), supported by a team when the value of q is a function of the values of
p₁, …, pₙ across the team. Like BSML it evaluates formulas bilaterally against teams of worlds
of a Kripke model, and negation swaps support and anti-support. A team supports ◇φ when one team
supporting φ supplies a successor to each of its worlds, and anti-supports it when the union of
the successor sets anti-supports φ. MDL formulas are downward closed and supported by the empty
team, but the dependence atom breaks union closure.
Main definitions #
Formula: atoms, dependence atoms,¬,∧, split∨and◇.eval: bilateral evaluation, withsupportandantiSupport.Formula.modalDepth: the nesting depth of◇.Formula.DepFree,Realize: the fragment without dependence atoms, and classical truth.
Main results #
isLowerSet_support,support_empty: support is downward closed and contains∅.not_supClosed_dep_of_witness: the dependence atom is not union-closed.support_iff_forall_realize: without dependence atoms, support is pointwise classical truth.invariant_eval:k-bisimilar teams agree on every formula of modal depth at mostk.
Implementation notes #
eval is a fold over the operations of Team/Operations.lean and the dependence atom
Team.dep, with Väänänen's single-witness and image modalities. The disjunction clause is the
split t₁ ∪ t₂ = t, which is equivalent to Väänänen's t ⊆ t₁ ∪ t₂ under downward closure.
TODO #
- The classical disjunction and the satisfiability complexity results of [LV13].
- Modal independence logic, with the independence atom beside
Team.dep.
References #
Syntax (Definition 1.1) #
The formulas of MDL ([Vaa08] Definition 1.1, p. 238) extend classical modal logic
with the dependence atom =(p₁,...,pₙ; q). Väänänen defines □A as ¬◇¬A and A ∧ B as
¬(¬A ∨ ¬B); conj is primitive here, with the clauses that abbreviation yields.
- atom
{Atom : Type u_3}
(p : Atom)
: Formula Atom
Atomic proposition.
- dep
{Atom : Type u_3}
(xs : List Atom)
(y : Atom)
: Formula Atom
The dependence atom
=(x⃗; y)says that the values ofyin the team are a function of the values ofx⃗. - neg
{Atom : Type u_3}
(φ : Formula Atom)
: Formula Atom
Negation, which swaps support and anti-support.
- conj
{Atom : Type u_3}
(φ ψ : Formula Atom)
: Formula Atom
Conjunction.
- disj
{Atom : Type u_3}
(φ ψ : Formula Atom)
: Formula Atom
Tensor disjunction (team-split form under downward closure).
- poss
{Atom : Type u_3}
(φ : Formula Atom)
: Formula Atom
Possibility modal
◇.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Classical truth #
Without dependence atoms MDL is classical modal logic ([Ant21]'s Proposition 2.2.16
for Väänänen's modalities, support_iff_forall_realize below).
Classical Kripke truth of an MDL formula at a world, with ◇ the shared
ModalLogic.Diamond; a dependence atom is true at every world.
Equations
- ModalLogic.Dependence.Realize M (ModalLogic.Dependence.Formula.atom p) x✝ = M.val p x✝
- ModalLogic.Dependence.Realize M (ModalLogic.Dependence.Formula.dep xs y) x✝ = True
- ModalLogic.Dependence.Realize M ψ.neg x✝ = ¬ModalLogic.Dependence.Realize M ψ x✝
- ModalLogic.Dependence.Realize M (ψ₁.conj ψ₂) x✝ = (ModalLogic.Dependence.Realize M ψ₁ x✝ ∧ ModalLogic.Dependence.Realize M ψ₂ x✝)
- ModalLogic.Dependence.Realize M (ψ₁.disj ψ₂) x✝ = (ModalLogic.Dependence.Realize M ψ₁ x✝ ∨ ModalLogic.Dependence.Realize M ψ₂ x✝)
- ModalLogic.Dependence.Realize M ψ.poss x✝ = ModalLogic.Diamond M.accessible (ModalLogic.Dependence.Realize M ψ) x✝
Instances For
Semantics (Definition 4.1) #
Bilateral evaluation for MDL (Definition 4.1 of [Vaa08], p. 245).
eval M true φ t is support (Player II); eval M false φ t is
anti-support (Player I). Negation flips polarity (clause (T5)).
The ◇ clauses (T8), (T9) use Väänänen's single-witness form, not BSML's per-world form; the two formulations diverge for non-union- closed logics like MDL.
Equations
- ModalLogic.Dependence.eval M true (ModalLogic.Dependence.Formula.atom p) x✝ = (x✝ ∈ Team.flat (M.val p))
- ModalLogic.Dependence.eval M false (ModalLogic.Dependence.Formula.atom p) x✝ = (x✝ ∈ Team.flat fun (w : W) => ¬M.val p w)
- ModalLogic.Dependence.eval M true (ModalLogic.Dependence.Formula.dep xs y) x✝ = (x✝ ∈ Team.dep (fun (w : W) => List.map (fun (x : Atom) => M.val x w) xs) (M.val y))
- ModalLogic.Dependence.eval M false (ModalLogic.Dependence.Formula.dep xs y) x✝ = (x✝ ∈ {∅})
- ModalLogic.Dependence.eval M true ψ.neg x✝ = ModalLogic.Dependence.eval M false ψ x✝
- ModalLogic.Dependence.eval M false ψ.neg x✝ = ModalLogic.Dependence.eval M true ψ x✝
- ModalLogic.Dependence.eval M true (ψ₁.conj ψ₂) x✝ = (ModalLogic.Dependence.eval M true ψ₁ x✝ ∧ ModalLogic.Dependence.eval M true ψ₂ x✝)
- ModalLogic.Dependence.eval M false (ψ₁.conj ψ₂) x✝ = (x✝ ∈ Team.tensor {s : Finset W | ModalLogic.Dependence.eval M false ψ₁ s} {s : Finset W | ModalLogic.Dependence.eval M false ψ₂ s})
- ModalLogic.Dependence.eval M true (ψ₁.disj ψ₂) x✝ = (x✝ ∈ Team.tensor {s : Finset W | ModalLogic.Dependence.eval M true ψ₁ s} {s : Finset W | ModalLogic.Dependence.eval M true ψ₂ s})
- ModalLogic.Dependence.eval M false (ψ₁.disj ψ₂) x✝ = (ModalLogic.Dependence.eval M false ψ₁ x✝ ∧ ModalLogic.Dependence.eval M false ψ₂ x✝)
- ModalLogic.Dependence.eval M true ψ.poss x✝ = (x✝ ∈ Team.possWitness M.access {s : Finset W | ModalLogic.Dependence.eval M true ψ s})
- ModalLogic.Dependence.eval M false ψ.poss x✝ = (x✝ ∈ Team.necImage M.access {s : Finset W | ModalLogic.Dependence.eval M false ψ s})
Instances For
Support is evaluation in the positive polarity.
Equations
- ModalLogic.Dependence.support M φ t = ModalLogic.Dependence.eval M true φ t
Instances For
Anti-support is evaluation in the negative polarity.
Equations
- ModalLogic.Dependence.antiSupport M φ t = ModalLogic.Dependence.eval M false φ t
Instances For
Modal depth #
The modal depth of a formula is the greatest number of nested ◇s in it.
Equations
- (ModalLogic.Dependence.Formula.atom p).modalDepth = 0
- (ModalLogic.Dependence.Formula.dep xs y).modalDepth = 0
- ψ.neg.modalDepth = ψ.modalDepth
- (ψ₁.conj ψ₂).modalDepth = max ψ₁.modalDepth ψ₂.modalDepth
- (ψ₁.disj ψ₂).modalDepth = max ψ₁.modalDepth ψ₂.modalDepth
- ψ.poss.modalDepth = ψ.modalDepth + 1
Instances For
Lemma 4.2: Downward closure #
The support of every MDL formula is downward closed ([Vaa08] Lemma 4.2, p. 245).
Empty team property #
Every MDL formula is supported on the empty team.
Dep breaks union closure (the defining feature) #
The dependence atom is not union-closed. When two worlds agree on p but not on q,
each of their singleton teams supports =(p; q) but the team of both does not.
Soundness for the closure cell (Definability bridge) #
Every MDL-definable team property is downward closed and contains the empty team. The converse, that every such property is MDL-definable, is not proved here.
Bisimulation invariance #
Teams that are k-bisimilar agree on every MDL formula of modal depth at most k, in both
polarities, by the argument of [AAY24] Theorem 3.8.
The classical fragment #
On dep-free formulas support is pointwise classical truth and anti-support pointwise
classical falsity: Väänänen's single-witness and image modalities agree with the flat ones
on flat properties (Team.possWitness_flat, Team.necImage_flat).
On dep-free formulas, support is pointwise classical truth and anti-support pointwise
classical falsity.