logic-classes-1.7: Data/Logic/Instances/Test.hs
-- | Formula instance used in the unit tests.
{-# LANGUAGE CPP, DeriveDataTypeable, FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, TemplateHaskell, TypeFamilies #-}
module Data.Logic.Instances.Test
( V(..)
, Predicate
, QFormula(..)
, Term(..)
, Function(..)
, Formula, SkAtom, SkTerm
, TFormula, TAtom, TTerm -- deprecated
) where
import Data.Char (isDigit)
import Data.Logic.ATP.Apply (Predicate)
import Data.Logic.ATP.Equate (FOL(..))
import Data.Logic.ATP.Quantified (Quant(..), QFormula(..))
import Data.Logic.ATP.Prop (BinOp(..))
import Data.Logic.ATP.Skolem (Function(..), Formula, SkTerm, SkAtom)
import Data.Logic.ATP.Term (V(V), Term(..))
import Data.SafeCopy (base, deriveSafeCopy)
next :: String -> String
next s =
case break (not . isDigit) (reverse s) of
(_, "") -> "x"
("", nondigits) -> nondigits ++ "2"
(digits, nondigits) -> nondigits ++ show (1 + read (reverse digits) :: Int)
type TFormula = Formula
type TAtom = SkAtom
type TTerm = SkTerm
$(deriveSafeCopy 1 'base ''BinOp)
$(deriveSafeCopy 1 'base ''Quant)
$(deriveSafeCopy 1 'base ''Predicate)
$(deriveSafeCopy 1 'base ''Term)
$(deriveSafeCopy 1 'base ''FOL)
$(deriveSafeCopy 1 'base ''QFormula)