GenZ-0.1.0.0: lib/Logic/Propositional/CPL.hs
module Logic.Propositional.CPL (classical) where
import qualified Data.Set as Set
import General
import FormP
classical :: Logic FormP
classical = Log { name = "CPL"
, safeRules = [leftBot, isAxiom, replaceRule safeCPL]
, unsafeRules = []
}
{-
Γ, φ, ψ ⇒ ∆
∧L Γ, φ ∧ ψ ⇒ ∆
Γ, φ ⇒ ∆ Γ, ψ ⇒ ∆
∨L Γ, φ ∨ ψ ⇒ ∆
Γ ⇒ ∆, φ Γ ⇒ ∆, ψ
→L Γ, φ → ψ ⇒ ∆
Γ ⇒ ∆, φ Γ ⇒ ∆, ψ
∧R Γ ⇒ ∆, φ ∧ ψ
Γ ⇒ ∆, φ, ψ
∨R Γ ⇒ ∆, φ ∨ ψ
Γ, φ ⇒ ∆, ψ
→R Γ ⇒ ∆, φ → ψ
-}
safeCPL :: Either FormP FormP -> [(RuleName,[Sequent FormP])]
safeCPL (Left (ConP f g)) = [("∧L", [Set.fromList [Left g, Left f]])]
safeCPL (Left (DisP f g)) = [("vL", [Set.singleton (Left f), Set.singleton (Left g)])]
safeCPL (Left (ImpP f g)) = [("→L", [Set.singleton (Right f), Set.singleton (Left g)])]
safeCPL (Right (ConP f g)) = [("∧R", [Set.singleton (Right f), Set.singleton (Right g)])]
safeCPL (Right (DisP f g)) = [("vR", [Set.fromList [Right g, Right f]])]
safeCPL (Right (ImpP f g)) = [("→R", [Set.fromList [Right g, Left f]])]
safeCPL _ = []