Modal inclusion logic #
Modal inclusion logic ML(⊆) extends classical modal logic with inclusion atoms a ⊆ b, supported
by a team when every tuple of truth values that a takes at a world of the team is taken by b
at some world of the team. It has support only, no anti-support. Its ◇ is lax: a team supports
◇φ when some team of successors supporting φ reaches every world of the team. ML(⊆) formulas
are union closed and supported by the empty team, but the inclusion atom breaks downward
closure. Anttila, Häggblom and Yang axiomatize the logic and characterize its expressive power.
Main definitions #
Formula: atoms,⊥, inclusion atoms,¬,∧, split∨,◇and□.eval,support: support of a formula by a team.Formula.modalDepth: the nesting depth of◇and□.Formula.InclFree,Realize: the fragment without inclusion atoms, and classical truth.
Main results #
supClosed_support,support_empty: support is union closed and contains∅.not_isLowerSet_incl_of_witness: the inclusion atom is not downward closed.invariant_eval:k-bisimilar teams agree on every formula of modal depth at mostk.definableClass_support_subset: every definable team property is union closed, contains∅and is closed under bounded bisimulation.support_iff_forall_realize: without inclusion atoms, support is pointwise classical truth.
Implementation notes #
eval is a fold over the operations of Team/Operations.lean and the inclusion atom
Team.incl. It departs from the source in two ways. Inclusion atoms relate lists of atoms,
where the source allows classical formulas. Negation applies to any formula, with the source's
pointwise clause, where the source restricts it to classical formulas.
TODO #
- The converse of
definableClass_support_subset. The source's normal form uses inclusion atoms⊤ ⊆ αover classical formulas, which the atom-only encoding lacks. - The natural-deduction axiomatization and its completeness.
- The might operator and the singular might operator, which have the same expressive power.
References #
Syntax #
The formulas of ML(⊆) ([AHY25] Definition 2.1), with ◇ and □ both
primitive. An inclusion atom α₁...αₙ ⊆ β₁...βₙ is the list of pairs
[(α₁, β₁), ..., (αₙ, βₙ)].
- atom
{Atom : Type u_3}
(p : Atom)
: Formula Atom
Atomic proposition.
- bot
{Atom : Type u_3}
: Formula Atom
Weak contradiction
⊥. - incl
{Atom : Type u_3}
(xys : List (Atom × Atom))
: Formula Atom
Inclusion atom
x⃗ ⊆ y⃗. - neg
{Atom : Type u_3}
(φ : Formula Atom)
: Formula Atom
Classical negation (restricted to classical formulas in the paper; we allow on any formula for uniform recursion).
- conj
{Atom : Type u_3}
(φ ψ : Formula Atom)
: Formula Atom
Conjunction.
- disj
{Atom : Type u_3}
(φ ψ : Formula Atom)
: Formula Atom
Tensor disjunction.
- poss
{Atom : Type u_3}
(φ : Formula Atom)
: Formula Atom
Possibility modal
◇(lax semantics). - nec
{Atom : Type u_3}
(φ : Formula Atom)
: Formula Atom
Necessity modal
□.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Classical truth #
Without inclusion atoms MIL is classical modal logic ([Ant21]'s Proposition 2.2.16
for the lax and image modalities, support_iff_forall_realize below).
Formula.InclFree φ holds when φ contains no inclusion atom.
Equations
- (ModalLogic.Inclusion.Formula.atom p).InclFree = True
- ModalLogic.Inclusion.Formula.bot.InclFree = True
- (ModalLogic.Inclusion.Formula.incl xys).InclFree = False
- φ.neg.InclFree = φ.InclFree
- φ.poss.InclFree = φ.InclFree
- φ.nec.InclFree = φ.InclFree
- (φ.conj ψ).InclFree = (φ.InclFree ∧ ψ.InclFree)
- (φ.disj ψ).InclFree = (φ.InclFree ∧ ψ.InclFree)
Instances For
Classical Kripke truth of a MIL formula at a world, with ◇ and □ the shared
ModalLogic.Diamond and ModalLogic.Box; an inclusion atom is true at every world.
Equations
- ModalLogic.Inclusion.Realize M (ModalLogic.Inclusion.Formula.atom p) x✝ = M.val p x✝
- ModalLogic.Inclusion.Realize M ModalLogic.Inclusion.Formula.bot x✝ = False
- ModalLogic.Inclusion.Realize M (ModalLogic.Inclusion.Formula.incl xys) x✝ = True
- ModalLogic.Inclusion.Realize M ψ.neg x✝ = ¬ModalLogic.Inclusion.Realize M ψ x✝
- ModalLogic.Inclusion.Realize M (ψ₁.conj ψ₂) x✝ = (ModalLogic.Inclusion.Realize M ψ₁ x✝ ∧ ModalLogic.Inclusion.Realize M ψ₂ x✝)
- ModalLogic.Inclusion.Realize M (ψ₁.disj ψ₂) x✝ = (ModalLogic.Inclusion.Realize M ψ₁ x✝ ∨ ModalLogic.Inclusion.Realize M ψ₂ x✝)
- ModalLogic.Inclusion.Realize M ψ.poss x✝ = ModalLogic.Diamond M.accessible (ModalLogic.Inclusion.Realize M ψ) x✝
- ModalLogic.Inclusion.Realize M ψ.nec x✝ = ModalLogic.Box M.accessible (ModalLogic.Inclusion.Realize M ψ) x✝
Instances For
Semantics #
A team supports a formula ([AHY25] Definition 2.2).
Equations
- One or more equations did not get rendered due to their size.
- ModalLogic.Inclusion.eval M (ModalLogic.Inclusion.Formula.atom p) x✝ = (x✝ ∈ Team.flat (M.val p))
- ModalLogic.Inclusion.eval M ModalLogic.Inclusion.Formula.bot x✝ = (x✝ ∈ {∅})
- ModalLogic.Inclusion.eval M ψ.neg x✝ = (x✝ ∈ Team.flat fun (w : W) => ¬ModalLogic.Inclusion.eval M ψ {w})
- ModalLogic.Inclusion.eval M (ψ₁.conj ψ₂) x✝ = (ModalLogic.Inclusion.eval M ψ₁ x✝ ∧ ModalLogic.Inclusion.eval M ψ₂ x✝)
- ModalLogic.Inclusion.eval M (ψ₁.disj ψ₂) x✝ = (x✝ ∈ Team.tensor {s : Finset W | ModalLogic.Inclusion.eval M ψ₁ s} {s : Finset W | ModalLogic.Inclusion.eval M ψ₂ s})
- ModalLogic.Inclusion.eval M ψ.poss x✝ = (x✝ ∈ Team.possLax M.access {s : Finset W | ModalLogic.Inclusion.eval M ψ s})
- ModalLogic.Inclusion.eval M ψ.nec x✝ = (x✝ ∈ Team.necImage M.access {s : Finset W | ModalLogic.Inclusion.eval M ψ s})
Instances For
Support is eval, under its conventional name; ML(⊆) has no anti-support.
Equations
- ModalLogic.Inclusion.support M φ t = ModalLogic.Inclusion.eval M φ t
Instances For
Modal depth #
The modal depth of a formula is the greatest number of nested modalities in it.
Equations
- (ModalLogic.Inclusion.Formula.atom p).modalDepth = 0
- ModalLogic.Inclusion.Formula.bot.modalDepth = 0
- (ModalLogic.Inclusion.Formula.incl xys).modalDepth = 0
- ψ.neg.modalDepth = ψ.modalDepth
- (ψ₁.conj ψ₂).modalDepth = max ψ₁.modalDepth ψ₂.modalDepth
- (ψ₁.disj ψ₂).modalDepth = max ψ₁.modalDepth ψ₂.modalDepth
- ψ.poss.modalDepth = ψ.modalDepth + 1
- ψ.nec.modalDepth = ψ.modalDepth + 1
Instances For
Union closure #
Every MIL formula has union-closed support. Each case is the closure lemma of its connective
in Team/Operations.lean, and an inclusion witness in either team is one in the union.
Empty team property #
Inclusion breaks downward closure (the defining feature) #
The inclusion atom is not downward closed. If w₂ supplies the b-value matching both its
own and w₁'s a-value but w₁ does not match itself, then {w₁, w₂} supports a ⊆ b
and {w₁} does not.
Bisimulation invariance #
Teams that are k-bisimilar agree on every formula of modal depth at most k
([AHY25] Theorem 3.6).
The support of a formula is closed under bisimulation at its modal depth.
Soundness for the closure cell (Definability bridge) #
Every MIL-definable team property is union closed, contains the empty team and is closed under bounded bisimulation. This is the easy inclusion of the expressive completeness of ML(⊆) ([AHY25] §3).
The classical fragment #
On incl-free formulas support is pointwise classical truth: the lax and image modalities
agree with the flat ones on flat properties (Team.possLax_flat, Team.necImage_flat).
On incl-free formulas, support is pointwise classical truth.