{-# OPTIONS -Wwarn #-}
module Data.Logic
( -- * Boolean Logic
Negatable(..)
, Boolean(fromBool)
, Logic(..)
-- * Propositional Logic
, PropositionalFormula(..)
, Combine(..)
, BinOp(..)
-- * FirstOrderLogic
, Variable(..)
, Arity(arity)
, Pred(..)
, pApp
, Predicate(..)
, Skolem(..)
, Term(..)
, FirstOrderFormula(..)
-- * Normal Forms
, Literal(..)
, ClauseNormalFormula(..)
, ImplicativeForm(..)
-- * Knowledge Base and Theorem Proving
, Proof(proofResult)
, ProofResult(Proved, Invalid, Disproved)
, tellKB
, runProverT'
, prettyProof
) where
import Data.Logic.Classes.Arity
import Data.Logic.Classes.Boolean
import Data.Logic.Classes.ClauseNormalForm
import Data.Logic.Classes.FirstOrder
import Data.Logic.Classes.Literal
import Data.Logic.Classes.Logic
import Data.Logic.Classes.Negatable
import Data.Logic.Classes.Pred
import Data.Logic.Classes.Propositional
import Data.Logic.Classes.Skolem
import Data.Logic.Classes.Term
import Data.Logic.Classes.Variable
import Data.Logic.KnowledgeBase
import Data.Logic.Normal.Implicative
import Data.Logic.Types.FirstOrder ()
import Data.Logic.Types.FirstOrderPublic ()