Modal logic deduction

Content created by Viktor Yudov.

Created on 2024-05-05.
Last modified on 2024-05-25.

module modal-logic.deduction where
Imports
open import foundation.conjunction
open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.empty-types
open import foundation.existential-quantification
open import foundation.function-types
open import foundation.identity-types
open import foundation.negation
open import foundation.propositional-truncations
open import foundation.propositions
open import foundation.sets
open import foundation.subtypes
open import foundation.unions-subtypes
open import foundation.unit-type
open import foundation.universe-levels

open import foundation-core.cartesian-product-types

open import modal-logic.formulas

Idea

The deduction system of modal logic is defined inductively as follows:

a ∈ T ------ (AX) T ⊢ a

T ⊢ a → b T ⊢ a ------------------ (MP) T ⊢ b

T ⊢ a ------ (NEC) T ⊢ □a

where T is a set of formulas and a, b are formulas.

Modal logic generated by a set of axioms is the smallest set of formulas that contains the axioms and is closed under the deduction system.

Definition

Theory of modal formulas

module _
  {l1 : Level} (l2 : Level) (i : Set l1)
  where

  modal-theory : UU (l1  lsuc l2)
  modal-theory = subtype l2 (modal-formula i)

Deduction system

module _
  {l1 l2 : Level} {i : Set l1}
  where

  infix 5 _⊢ₘ_

  data _⊢ₘ_ (axioms : modal-theory l2 i) : modal-formula i  UU (l1  l2) where
    modal-ax : {a : modal-formula i}  is-in-subtype axioms a  axioms ⊢ₘ a
    modal-mp :
      {a b : modal-formula i}  axioms ⊢ₘ a →ₘ b  axioms ⊢ₘ a  axioms ⊢ₘ b
    modal-nec : {a : modal-formula i}  axioms ⊢ₘ a  axioms ⊢ₘ □ₘ a

Closure of a theory under the deduction system

  modal-logic-closure : modal-theory l2 i  modal-theory (l1  l2) i
  modal-logic-closure axioms a = trunc-Prop (axioms ⊢ₘ a)
  is-modal-logic-Prop : modal-theory l2 i  Prop (l1  l2)
  is-modal-logic-Prop theory =
    leq-prop-subtype (modal-logic-closure theory) theory

  is-modal-logic : modal-theory l2 i  UU (l1  l2)
  is-modal-logic = type-Prop  is-modal-logic-Prop

TODO: Title

  is-in-modal-logic-closure-deduction :
    {axioms : modal-theory l2 i} {a : modal-formula i} 
    axioms ⊢ₘ a  is-in-subtype (modal-logic-closure axioms) a
  is-in-modal-logic-closure-deduction = unit-trunc-Prop

  is-contradictory-modal-logic-Prop : modal-theory l2 i  Prop l2
  is-contradictory-modal-logic-Prop logic = logic ⊥ₘ

  is-contradictory-modal-logic : modal-theory l2 i  UU l2
  is-contradictory-modal-logic = type-Prop  is-contradictory-modal-logic-Prop

  is-consistent-modal-logic-Prop : modal-theory l2 i  Prop l2
  is-consistent-modal-logic-Prop = neg-Prop  is-contradictory-modal-logic-Prop

  is-consistent-modal-logic : modal-theory l2 i  UU l2
  is-consistent-modal-logic = type-Prop  is-consistent-modal-logic-Prop

module _
  {l1 : Level} {i : Set l1}
  where

  is-contradictory-modal-logic-monotic :
    {l2 l3 : Level} (ax₁ : modal-theory l2 i) (ax₂ : modal-theory l3 i) 
    ax₁  ax₂ 
    is-contradictory-modal-logic ax₁ 
    is-contradictory-modal-logic ax₂
  is-contradictory-modal-logic-monotic ax₁ ax₂ leq = leq ⊥ₘ

  is-consistent-modal-logic-antimonotic :
    {l2 l3 : Level} (ax₁ : modal-theory l2 i) (ax₂ : modal-theory l3 i) 
    ax₁  ax₂ 
    is-consistent-modal-logic ax₂ 
    is-consistent-modal-logic ax₁
  is-consistent-modal-logic-antimonotic ax₁ ax₂ leq is-cons =
    is-cons  is-contradictory-modal-logic-monotic ax₁ ax₂ leq

module _
  {l1 l2 : Level} {i : Set l1} {axioms : modal-theory l2 i}
  where

  modal-logic-closure-ax :
    {a : modal-formula i} 
    is-in-subtype axioms a 
    is-in-subtype (modal-logic-closure axioms) a
  modal-logic-closure-ax = unit-trunc-Prop  modal-ax

  modal-logic-closure-mp :
    {a b : modal-formula i} 
    is-in-subtype (modal-logic-closure axioms) (a →ₘ b) 
    is-in-subtype (modal-logic-closure axioms) a 
    is-in-subtype (modal-logic-closure axioms) b
  modal-logic-closure-mp {a} {b} tdab tda =
    apply-twice-universal-property-trunc-Prop tdab tda
      ( modal-logic-closure axioms b)
      ( λ dab da  unit-trunc-Prop (modal-mp dab da))

  modal-logic-closure-nec :
    {a : modal-formula i} 
    is-in-subtype (modal-logic-closure axioms) a 
    is-in-subtype (modal-logic-closure axioms) (□ₘ a)
  modal-logic-closure-nec {a} =
    map-universal-property-trunc-Prop
      ( modal-logic-closure axioms (□ₘ a))
      ( λ da  unit-trunc-Prop (modal-nec da))

module _
  {l1 l2 : Level} {i : Set l1}
  {logic : modal-theory l2 i} (is-logic : is-modal-logic logic)
  where

  modal-logic-mp :
    {a b : modal-formula i} 
    is-in-subtype logic (a →ₘ b) 
    is-in-subtype logic a 
    is-in-subtype logic b
  modal-logic-mp {a} {b} dab da =
    is-logic b
      ( modal-logic-closure-mp
        ( modal-logic-closure-ax dab)
        ( modal-logic-closure-ax da))

  modal-logic-nec :
    {a : modal-formula i} 
    is-in-subtype logic a 
    is-in-subtype logic (□ₘ a)
  modal-logic-nec {a} d =
    is-logic (□ₘ a) (modal-logic-closure-nec (modal-logic-closure-ax d))

module _
  {l1 : Level} {i : Set l1}
  where

  axioms-subset-modal-logic :
    {l2 : Level} (axioms : modal-theory l2 i) 
    axioms  modal-logic-closure axioms
  axioms-subset-modal-logic _ a H = unit-trunc-Prop (modal-ax H)

  modal-logic-closed :
    {l2 : Level} {axioms : modal-theory l2 i} {a : modal-formula i} 
    modal-logic-closure axioms ⊢ₘ a 
    is-in-subtype (modal-logic-closure axioms) a
  modal-logic-closed (modal-ax x) = x
  modal-logic-closed (modal-mp dab da) =
    modal-logic-closure-mp (modal-logic-closed dab) (modal-logic-closed da)
  modal-logic-closed (modal-nec d) =
    modal-logic-closure-nec (modal-logic-closed d)

  -- TODO: refactor
  is-modal-logic-modal-logic-closure :
    {l2 : Level}
    (axioms : modal-theory l2 i) 
    is-modal-logic (modal-logic-closure axioms)
  is-modal-logic-modal-logic-closure axioms a =
    map-universal-property-trunc-Prop
      ( modal-logic-closure axioms a)
      ( modal-logic-closed)

module _
  {l1 l2 l3 : Level} {i : Set l1}
  {ax₁ : modal-theory l2 i} {ax₂ : modal-theory l3 i}
  (leq : ax₁  ax₂)
  where

  deduction-monotic : {a : modal-formula i}  ax₁ ⊢ₘ a  ax₂ ⊢ₘ a
  deduction-monotic (modal-ax x) = modal-ax (leq _ x)
  deduction-monotic (modal-mp dab da) =
    modal-mp (deduction-monotic dab) (deduction-monotic da)
  deduction-monotic (modal-nec d) = modal-nec (deduction-monotic d)

  modal-logic-monotic : modal-logic-closure ax₁  modal-logic-closure ax₂
  modal-logic-monotic a =
    map-universal-property-trunc-Prop
      ( modal-logic-closure ax₂ a)
      ( unit-trunc-Prop  deduction-monotic)

module _
  {l1 l2 l3 : Level} {i : Set l1}
  {ax₁ : modal-theory l2 i} {ax₂ : modal-theory l3 i}
  where

  subset-modal-logic-if-subset-axioms :
    ax₁  modal-logic-closure ax₂ 
    modal-logic-closure ax₁  modal-logic-closure ax₂
  subset-modal-logic-if-subset-axioms leq =
    transitive-leq-subtype
      ( modal-logic-closure ax₁)
      ( modal-logic-closure (modal-logic-closure ax₂))
      ( modal-logic-closure ax₂)
      ( is-modal-logic-modal-logic-closure ax₂)
      ( modal-logic-monotic leq)

module _
  {l1 l2 : Level} {i : Set l1}
  (a : modal-formula i)
  (theory : modal-theory l2 i)
  where

  -- TODO: make Id-formula to be a function for 1 element modal-theory
  theory-add-formula : modal-theory (l1  l2) i
  theory-add-formula = (Id-modal-formula-Prop a)  theory

  formula-in-add-formula : is-in-subtype theory-add-formula a
  formula-in-add-formula =
    subtype-union-left (Id-modal-formula-Prop a) theory a refl

  subset-add-formula : theory  theory-add-formula
  subset-add-formula = subtype-union-right (Id-modal-formula-Prop a) theory

  transitive-subset-add-formula :
    {l3 : Level} (theory' : modal-theory l3 i) 
    theory'  theory 
    theory'  theory-add-formula
  transitive-subset-add-formula theory' leq =
    transitive-leq-subtype theory' theory theory-add-formula
      ( subset-add-formula)
      ( leq)

  elim-theory-add-formula :
    {l3 : Level} (P : modal-formula i  Prop l3) 
    type-Prop (P a) 
    ((x : modal-formula i)  is-in-subtype theory x  type-Prop (P x)) 
    (x : modal-formula i)  is-in-subtype theory-add-formula x  type-Prop (P x)
  elim-theory-add-formula P H-a H-rest =
    elim-union-subtype (Id-modal-formula-Prop a) theory P
      ( λ where .a refl  H-a)
      ( H-rest)

  subset-theory-add-formula :
    {l3 : Level} (theory' : modal-theory l3 i) 
    is-in-subtype theory' a 
    theory  theory' 
    theory-add-formula  theory'
  subset-theory-add-formula theory' a-in =
    subtype-union-both
      ( Id-modal-formula-Prop a)
      ( theory)
      ( theory')
      ( λ where .a refl  a-in)

module _
  {l1 l2 : Level} {i : Set l1}
  where

  unbox-modal-theory : modal-theory l2 i  modal-theory l2 i
  unbox-modal-theory theory a = theory (□ₘ a)

  diamond-modal-theory : modal-theory l2 i  modal-theory (l1  l2) i
  diamond-modal-theory theory a =
    exists-structure-Prop
      ( modal-formula i)
      ( λ b  is-in-subtype theory b × (a  ◇ₘ b))

module _
  {l1 : Level} {i : Set l1}
  where

  is-disjuctive-modal-theory :
    {l2 : Level}  modal-theory l2 i  UU (l1  l2)
  is-disjuctive-modal-theory theory =
    (a : modal-formula i)  is-in-subtype theory a + is-in-subtype theory (¬ₘ a)

  theory-add-formula-union-right :
    (a : modal-formula i)
    {l2 l3 : Level}
    (theory : modal-theory l2 i)
    (theory' : modal-theory l3 i) 
    theory  theory-add-formula a theory' 
      theory-add-formula a (theory  theory')
  theory-add-formula-union-right a theory theory' =
    union-swap-1-2 theory (Id-modal-formula-Prop a) theory'

  inv-theory-add-formula-union-right :
    (a : modal-formula i)
    {l2 l3 : Level}
    (theory : modal-theory l2 i)
    (theory' : modal-theory l3 i) 
    theory-add-formula a (theory  theory') 
      theory  theory-add-formula a theory'
  inv-theory-add-formula-union-right a theory theory' =
    union-swap-1-2 (Id-modal-formula-Prop a) theory theory'

Recent changes