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.
def
Cslib.Logic.Modal.Proposition.Equiv
{World : Type u_1}
{Atom : Type u_2}
(S : Set (Model World Atom))
(φ₁ φ₂ : Proposition Atom)
:
The modal propositions φ₁ and φ₂ are equivalent in the class of models S.
Equations
- Cslib.Logic.Modal.Proposition.Equiv S φ₁ φ₂ = ∀ m ∈ S, ∀ (w : World), ⇓{ m := m, w := w, φ := Cslib.Logic.HasIff.iff φ₁ φ₂ }
Instances For
@[instance_reducible]
instance
Cslib.Logic.Modal.instCongruencePropositionEquiv
{World✝ : Type u_1}
{Atom✝ : Type u_2}
{S : Set (Model World✝ Atom✝)}
:
theorem
Cslib.Logic.Modal.Proposition.equiv_def
{World : Type u_1}
{Atom : Type u_2}
(S : Set (Model World Atom))
(φ₁ φ₂ : Proposition Atom)
:
theorem
Cslib.Logic.Modal.Proposition.equiv_forall_der
{World : Type u_1}
{Atom : Type u_2}
(S : Set (Model World Atom))
(φ₁ φ₂ : Proposition Atom)
(h : Congruence.r (Equiv S) φ₁ φ₂)
(m : Model World Atom)
:
m ∈ S → ∀ (w : World), ⇓{ m := m, w := w, φ := HasIff.iff φ₁ φ₂ }
theorem
Cslib.Logic.Modal.Proposition.forall_der_equiv
{World : Type u_1}
{Atom : Type u_2}
(S : Set (Model World Atom))
(φ₁ φ₂ : Proposition Atom)
(h : ∀ m ∈ S, ∀ (w : World), ⇓{ m := m, w := w, φ := HasIff.iff φ₁ φ₂ })
:
Congruence.r (Equiv S) φ₁ φ₂
theorem
Cslib.Logic.Modal.Proposition.equiv_valid
{World : Type u_1}
{Atom : Type u_2}
(S : Set (Model World Atom))
(φ₁ φ₂ : Proposition Atom)
(h : Congruence.r (Equiv S) φ₁ φ₂)
:
Logical equivalence preserves validity.
Propositional contexts.
- hole {Atom : Type u} : Context Atom
- not {Atom : Type u} (c : Context Atom) : Context Atom
- andL {Atom : Type u} (c : Context Atom) (φ : Proposition Atom) : Context Atom
- andR {Atom : Type u} (φ : Proposition Atom) (c : Context Atom) : Context Atom
- diamond {Atom : Type u} (c : Context Atom) : Context Atom
Instances For
def
Cslib.Logic.Modal.Proposition.Context.fill
{Atom : Type u_1}
(c : Context Atom)
(φ : Proposition Atom)
:
Proposition Atom
Replaces a hole in a propositional context with a proposition.
Equations
Instances For
@[instance_reducible]
instance
Cslib.Logic.Modal.instHasContextProposition
{Atom : Type u_1}
:
HasContext (Proposition Atom)
Equations
theorem
Cslib.Logic.Modal.Proposition.Context.fill_def
{Atom : Type u_1}
{φ : Proposition Atom}
{c : HasContext.Context (Proposition Atom)}
:
instance
Cslib.Logic.Modal.instIsEquivPropositionEquiv
{World : Type u_1}
{Atom : Type u_2}
(S : Set (Model World Atom))
:
IsEquiv (Proposition Atom) (Proposition.Equiv S)
Logical equivalence is an equivalence relation.
instance
Cslib.Logic.Modal.instLawfulCongruencePropositionEquiv
{World : Type u_1}
{Atom : Type u_2}
(S : Set (Model World Atom))
:
Logical equivalence is a congruence.
@[instance_reducible]
instance
Cslib.Logic.Modal.instHasHContextJudgementProposition
{World : Type u_1}
{Atom : Type u_2}
:
HasHContext (Judgement World Atom) (Proposition Atom)
Equations
- Cslib.Logic.Modal.instHasHContextJudgementProposition = { Context := Cslib.Logic.Modal.Satisfies.Context World Atom, fill := Cslib.Logic.Modal.Satisfies.Context.fill }
@[instance_reducible]
instance
Cslib.Logic.Modal.instLogicalEquivalencePropositionJudgementDefaultEquivUnivModel
{Atom : Type u_1}
{World : Type u_2}
:
Logical equivalence for Modal Logic K. That is, no assumptions on models are made.
Equations
- Cslib.Logic.Modal.instLogicalEquivalencePropositionJudgementDefaultEquivUnivModel = { toLawfulCongruence := ⋯, eqvFillValid := ⋯ }