Documentation

Linglib.Logic.Team.ModalDependence

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 #

Main results #

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 #

References #

Syntax (Definition 1.1) #

inductive ModalLogic.Dependence.Formula (Atom : Type u_3) :
Type u_3

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 of y in the team are a function of the values of x⃗.

  • 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
    @[instance_reducible]
    instance ModalLogic.Dependence.instReprFormula {Atom✝ : Type u_3} [Repr Atom✝] :
    Repr (Formula Atom✝)
    Equations
    def ModalLogic.Dependence.instReprFormula.repr {Atom✝ : Type u_3} [Repr Atom✝] :
    Formula Atom✝ → ℕ → Std.Format
    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).

      Formula.DepFree φ holds when φ contains no dependence atom.

      Equations
      Instances For
        def ModalLogic.Dependence.Realize {W : Type u_1} {Atom : Type u_2} (M : KripkeModel W Atom) :
        Formula Atom → W → Prop

        Classical Kripke truth of an MDL formula at a world, with ◇ the shared ModalLogic.Diamond; a dependence atom is true at every world.

        Equations
        Instances For
          theorem ModalLogic.Dependence.realize_poss {W : Type u_1} {Atom : Type u_2} {M : KripkeModel W Atom} {ψ : Formula Atom} {w : W} :
          Realize M ψ.poss w ↔ ∃ v ∈ M.access w, Realize M ψ v

          Semantics (Definition 4.1) #

          def ModalLogic.Dependence.eval {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) :
          Bool → Formula Atom → Finset W → Prop

          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
          Instances For
            @[reducible, inline]
            abbrev ModalLogic.Dependence.support {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ : Formula Atom) (t : Finset W) :

            Support is evaluation in the positive polarity.

            Equations
            Instances For
              @[reducible, inline]
              abbrev ModalLogic.Dependence.antiSupport {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ : Formula Atom) (t : Finset W) :

              Anti-support is evaluation in the negative polarity.

              Equations
              Instances For
                @[simp]
                theorem ModalLogic.Dependence.support_atom {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (p : Atom) (t : Finset W) :
                support M (Formula.atom p) t ↔ ∀ w ∈ t, M.val p w
                @[simp]
                theorem ModalLogic.Dependence.antiSupport_atom {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (p : Atom) (t : Finset W) :
                antiSupport M (Formula.atom p) t ↔ ∀ w ∈ t, ¬M.val p w
                @[simp]
                theorem ModalLogic.Dependence.support_dep {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (xs : List Atom) (y : Atom) (t : Finset W) :
                support M (Formula.dep xs y) t ↔ ∀ w₁ ∈ t, ∀ w₂ ∈ t, (∀ x ∈ xs, M.val x w₁ ↔ M.val x w₂) → (M.val y w₁ ↔ M.val y w₂)
                @[simp]
                theorem ModalLogic.Dependence.antiSupport_dep {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (xs : List Atom) (y : Atom) (t : Finset W) :
                antiSupport M (Formula.dep xs y) t ↔ t = ∅
                @[simp]
                theorem ModalLogic.Dependence.support_neg {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ : Formula Atom) (t : Finset W) :
                support M φ.neg t ↔ antiSupport M φ t
                @[simp]
                theorem ModalLogic.Dependence.antiSupport_neg {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ : Formula Atom) (t : Finset W) :
                antiSupport M φ.neg t ↔ support M φ t
                @[simp]
                theorem ModalLogic.Dependence.support_conj {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ ψ : Formula Atom) (t : Finset W) :
                support M (φ.conj ψ) t ↔ support M φ t ∧ support M ψ t
                @[simp]
                theorem ModalLogic.Dependence.antiSupport_conj {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ ψ : Formula Atom) (t : Finset W) :
                antiSupport M (φ.conj ψ) t ↔ ∃ (t₁ : Finset W), antiSupport M φ t₁ ∧ ∃ (t₂ : Finset W), antiSupport M ψ t₂ ∧ t₁ ∪ t₂ = t
                @[simp]
                theorem ModalLogic.Dependence.support_disj {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ ψ : Formula Atom) (t : Finset W) :
                support M (φ.disj ψ) t ↔ ∃ (t₁ : Finset W), support M φ t₁ ∧ ∃ (t₂ : Finset W), support M ψ t₂ ∧ t₁ ∪ t₂ = t
                @[simp]
                theorem ModalLogic.Dependence.antiSupport_disj {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ ψ : Formula Atom) (t : Finset W) :
                antiSupport M (φ.disj ψ) t ↔ antiSupport M φ t ∧ antiSupport M ψ t
                @[simp]
                theorem ModalLogic.Dependence.support_poss {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ : Formula Atom) (t : Finset W) :
                support M φ.poss t ↔ ∃ (Y : Finset W), (∀ w ∈ t, ∃ y ∈ Y, y ∈ M.access w) ∧ support M φ Y
                @[simp]
                theorem ModalLogic.Dependence.antiSupport_poss {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ : Formula Atom) (t : Finset W) :
                antiSupport M φ.poss t ↔ antiSupport M φ (t.biUnion M.access)

                The modal depth of a formula is the greatest number of nested ◇s in it.

                Equations
                Instances For

                  Lemma 4.2: Downward closure #

                  theorem ModalLogic.Dependence.isLowerSet_support {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ : Formula Atom) :
                  IsLowerSet {t : Finset W | support M φ t}

                  The support of every MDL formula is downward closed ([Vaa08] Lemma 4.2, p. 245).

                  Empty team property #

                  theorem ModalLogic.Dependence.support_empty {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) (φ : Formula Atom) :
                  support M φ ∅

                  Every MDL formula is supported on the empty team.

                  Dep breaks union closure (the defining feature) #

                  theorem ModalLogic.Dependence.not_supClosed_dep_of_witness {W : Type u_1} {Atom : Type u_2} [DecidableEq W] {p q : Atom} {w₁ w₂ : W} {M : KripkeModel W Atom} (hp : M.val p w₁ ↔ M.val p w₂) (hq : ¬(M.val q w₁ ↔ M.val q w₂)) :
                  ¬SupClosed {t : Finset W | support M (Formula.dep [p] q) t}

                  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) #

                  theorem ModalLogic.Dependence.definableClass_support_subset {W : Type u_1} {Atom : Type u_2} [DecidableEq W] (M : KripkeModel W Atom) :
                  Team.definableClass (support M) ⊆ {P : Team.TeamProperty W | IsLowerSet P ∧ ∅ ∈ P}

                  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 #

                  theorem ModalLogic.Dependence.invariant_eval {W : Type u_1} {Atom : Type u_2} [DecidableEq W] {W' : Type u_3} [DecidableEq W'] {M : KripkeModel W Atom} {M' : KripkeModel W' Atom} {k : ℕ} (φ : Formula Atom) (hd : φ.modalDepth ≤ k) (b : Bool) :
                  Team.Invariant (fun (x1 : W) (x2 : W') => WorldBisim k M x1 M' x2) {t : Finset W | eval M b φ t} {t : Finset W' | eval M' b φ t}

                  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).

                  theorem ModalLogic.Dependence.eval_iff_forall_realize {W : Type u_1} {Atom : Type u_2} [DecidableEq W] {M : KripkeModel W Atom} {φ : Formula Atom} (hD : φ.DepFree) (b : Bool) (t : Finset W) :
                  eval M b φ t ↔ ∀ w ∈ t, Realize M φ w ↔ b = true

                  On dep-free formulas, support is pointwise classical truth and anti-support pointwise classical falsity.

                  theorem ModalLogic.Dependence.support_iff_forall_realize {W : Type u_1} {Atom : Type u_2} [DecidableEq W] {M : KripkeModel W Atom} {φ : Formula Atom} {t : Finset W} (hD : φ.DepFree) :
                  support M φ t ↔ ∀ w ∈ t, Realize M φ w
                  theorem ModalLogic.Dependence.antiSupport_iff_forall_not_realize {W : Type u_1} {Atom : Type u_2} [DecidableEq W] {M : KripkeModel W Atom} {φ : Formula Atom} {t : Finset W} (hD : φ.DepFree) :
                  antiSupport M φ t ↔ ∀ w ∈ t, ¬Realize M φ w
                  theorem ModalLogic.Dependence.support_singleton_iff_realize {W : Type u_1} {Atom : Type u_2} [DecidableEq W] {M : KripkeModel W Atom} {φ : Formula Atom} {w : W} (hD : φ.DepFree) :
                  support M φ {w} ↔ Realize M φ w