Modal Logic #
Modal logic is a logic for reasoning about (possibly polyadic) relational structures, studying qualified statements through the use of modalities (like necessity, possibility, knowledge, belief, permission, etc.).
This module formalises general modal logic, parameterised over a signature of modal operators. A
signature is formalised as a polynomial functor (PFunctor), generalising the concept of modal
similarity types from the literature [BRV01].
Implementation notes #
- Compared to [BRV01], a triangle takes a map of arguments (from the argument type given by the polynomial functor to propositions), instead of a sequence of arguments.
- The use of
τto range over signatures of modal operators comes from the literature [BRV01].
References #
- P. Blackburn, M. de Rijke, Y. Venema, Modal Logic
- The definitions of theory equivalence and the denotational semantics of worlds are inspired by
the development of
Cslib.Logic.HML.
A modal proposition.
- atom
{τ : PFunctor.{u_1, u_2}}
{Atom : Type u}
(p : Atom)
: Proposition τ Atom
Atomic proposition.
- false
{τ : PFunctor.{u_1, u_2}}
{Atom : Type u}
: Proposition τ Atom
Falsehood.
- not
{τ : PFunctor.{u_1, u_2}}
{Atom : Type u}
(φ : Proposition τ Atom)
: Proposition τ Atom
Negation.
- or
{τ : PFunctor.{u_1, u_2}}
{Atom : Type u}
(φ₁ φ₂ : Proposition τ Atom)
: Proposition τ Atom
Disjunction.
- triangle
{τ : PFunctor.{u_1, u_2}}
{Atom : Type u}
(op : τ.A)
(φs : τ.B op → Proposition τ Atom)
: Proposition τ Atom
Generalised possibility, or triangle.
Instances For
A map of propositions for the operator op in the polynomial functor τ.
Equations
- Cslib.Logic.Modal.PropositionMap τ op Atom = (τ.B op → Cslib.Logic.Modal.Proposition τ Atom)
Instances For
Utility to coerce atoms into atomic propositions.
Equations
Equations
Equations
Equations
Equations
Truth.
Instances For
Equations
Conjunction.
Equations
- φ₁.and φ₂ = Cslib.Logic.HasNot.not (Cslib.Logic.HasOr.or (Cslib.Logic.HasNot.not φ₁) (Cslib.Logic.HasNot.not φ₂))
Instances For
Equations
Implication.
Equations
- φ₁.imp φ₂ = Cslib.Logic.HasOr.or (Cslib.Logic.HasNot.not φ₁) φ₂
Instances For
Equations
Bi-implication.
Equations
- φ₁.iff φ₂ = Cslib.Logic.HasAnd.and (Cslib.Logic.HasImp.imp φ₁ φ₂) (Cslib.Logic.HasImp.imp φ₂ φ₁)
Instances For
Equations
Point-wise negation of a proposition map.
Equations
- φs.not i = Cslib.Logic.HasNot.not (φs i)
Instances For
Point-wise conjunction of proposition maps.
Equations
- φs₁.and φs₂ i = Cslib.Logic.HasAnd.and (φs₁ i) (φs₂ i)
Instances For
Point-wise disjunction of proposition maps.
Equations
- φs₁.or φs₂ i = Cslib.Logic.HasOr.or (φs₁ i) (φs₂ i)
Instances For
Point-wise implication of proposition maps.
Equations
- φs₁.imp φs₂ i = Cslib.Logic.HasImp.imp (φs₁ i) (φs₂ i)
Instances For
Point-wise bi-implication of proposition maps.
Equations
- φs₁.iff φs₂ i = Cslib.Logic.HasIff.iff (φs₁ i) (φs₂ i)
Instances For
Generalised necessity, or nabla (∇), dual of triangle.
Equations
Instances For
Equations
The constant proposition map for the operator op, used for applying a modality uniformly. This
supplies the same proposition φ to every argument position of op.
Equations
Instances For
Negation commutes with constant proposition maps.
Conjunction commutes with constant proposition maps.
Disjunction commutes with constant proposition maps.
Implication commutes with constant proposition maps.
Bi-implication commutes with constant proposition maps.