Logical Equivalence in Modal Logic #
This module defines logical equivalence for modal propositions. The definitions are parametric on the class of models under consideration.
We also instantiate LogicalEquivalence for Modal Logic K, i.e., equivalence
for the class of all models.
The modal propositions φ₁ and φ₂ are equivalent in the model m.
Equations
- Cslib.Logic.Modal.Proposition.Equiv m φ₁ φ₂ = ∀ (w : World), ⇓{ m := m, w := w, φ := Cslib.Logic.HasIff.iff φ₁ φ₂ }
Instances For
A class of models, defined as a set.
Equations
- Cslib.Logic.Modal.ModelClass World τ Atom = Set (Cslib.Logic.Modal.Model World τ Atom)
Instances For
The modal propositions φ₁ and φ₂ are equivalent in the model class S.
Equations
- Cslib.Logic.Modal.Proposition.EquivWithin S φ₁ φ₂ = ∀ m ∈ S, Cslib.Congruence.r (Cslib.Logic.Modal.Proposition.Equiv m) φ₁ φ₂
Instances For
Universal logical equivalence: φ₁ and φ₂ are equivalent in the class of all models.
Equations
- φ₁.UEquiv φ₂ = Cslib.Logic.Modal.Proposition.EquivWithin Set.univ φ₁ φ₂
Instances For
Logical equivalence preserves validity.
A proposition map missing a particular case (index).
Equations
- Cslib.Logic.Modal.PropositionMap.Without τ Atom op i = ({ j : τ.B op // j ≠ i } → Cslib.Logic.Modal.Proposition τ Atom)
Instances For
Propositional contexts.
- hole {τ : PFunctor.{u_1, u_2}} {Atom : Type u} : Context τ Atom
- not {τ : PFunctor.{u_1, u_2}} {Atom : Type u} (c : Context τ Atom) : Context τ Atom
- andL {τ : PFunctor.{u_1, u_2}} {Atom : Type u} (c : Context τ Atom) (φ : Proposition τ Atom) : Context τ Atom
- andR {τ : PFunctor.{u_1, u_2}} {Atom : Type u} (φ : Proposition τ Atom) (c : Context τ Atom) : Context τ Atom
- triangle {τ : PFunctor.{u_1, u_2}} {Atom : Type u} (op : τ.A) (i : τ.B op) (c : Context τ Atom) (φs : PropositionMap.Without τ Atom op i) : Context τ Atom
Instances For
Replaces a hole in a propositional context with a proposition.
Equations
- Cslib.Logic.Modal.Proposition.Context.hole.fill φ = φ
- c_2.not.fill φ = (c_2.fill φ).not
- (c_2.andL φ').fill φ = (c_2.fill φ).and φ'
- (Cslib.Logic.Modal.Proposition.Context.andR φ' c_2).fill φ = φ'.and (c_2.fill φ)
- (Cslib.Logic.Modal.Proposition.Context.triangle op i c_2 φs).fill φ = Cslib.Logic.Modal.Proposition.triangle op fun (j : τ.B op) => if h : j = i then c_2.fill φ else φs ⟨j, h⟩
Instances For
Equations
Logical equivalence is an equivalence relation.
Logical equivalence within a class is an equivalence relation.
Logical equivalence is a congruence.
Logical equivalence within a class is a congruence.
Judgemental contexts.
- m : Model World τ Atom
The model to consider.
- w : World
The world to check propositions against.
Instances For
Fills a judgemental context with a proposition.
Instances For
Equations
- Cslib.Logic.Modal.instHasHContextJudgementProposition = { Context := Cslib.Logic.Modal.Judgement.Context World τ Atom, fill := Cslib.Logic.Modal.Judgement.Context.fill }
Logical equivalence for Modal Logic K. That is, no assumptions on models are made.
Equations
- Cslib.Logic.Modal.instLogicalEquivalencePropositionJudgementDefaultEquivWithinUnivModel = { toLawfulCongruence := ⋯, eqvFillValid := ⋯ }
Correspondence of equivalence and axiom validity.
A frame-valid bi-implication induces logical equivalence in every model over that frame.
A bi-implication is an axiom of f iff its sides are equivalent in every model over f.
Triangle and the negation of the dual nabla are universally logically equivalent.