Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Codec.TPTP.Base
Synopsis
- type Formula = F Identity
- type Term = T Identity
- type FormulaW s = F (Writer s)
- type TermW s = T (Writer s)
- type FormulaC = FormulaW [String]
- type TermC = TermW [String]
- forgetFC :: FormulaC -> Formula
- forgetTC :: TermC -> Term
- (.<=>.) :: Pointed c => F c -> F c -> F c
- (.=>.) :: Pointed c => F c -> F c -> F c
- (.<=.) :: Pointed c => F c -> F c -> F c
- (.|.) :: Pointed c => F c -> F c -> F c
- (.&.) :: Pointed c => F c -> F c -> F c
- (.<~>.) :: Pointed c => F c -> F c -> F c
- (.~|.) :: Pointed c => F c -> F c -> F c
- (.~&.) :: Pointed c => F c -> F c -> F c
- (.~.) :: Pointed c => F c -> F c
- (.=.) :: Pointed c => T c -> T c -> F c
- (.!=.) :: Pointed c => T c -> T c -> F c
- for_all :: Pointed c => [V] -> F c -> F c
- exists :: Pointed c => [V] -> F c -> F c
- pApp :: Pointed c => AtomicWord -> [T c] -> F c
- var :: Pointed c => V -> T c
- fApp :: Pointed c => AtomicWord -> [T c] -> T c
- numberLitTerm :: Pointed c => Rational -> T c
- distinctObjectTerm :: Pointed c => String -> T c
- data Formula0 term formula
- data Term0 term
- = Var V
- | NumberLitTerm Rational
- | DistinctObjectTerm String
- | FunApp AtomicWord [term]
- data BinOp
- data InfixPred
- data Quant
- type TPTP_Input = TPTP_Input_ Identity
- type TPTP_Input_C = TPTP_Input_ (Writer [String])
- forgetTIC :: TPTP_Input_C -> TPTP_Input
- data TPTP_Input_ c
- = AFormula {
- name :: AtomicWord
- role :: Role
- formula :: F c
- annotations :: Annotations
- | Comment String
- | Include FilePath [AtomicWord]
- = AFormula {
- data Annotations
- data UsefulInfo
- = NoUsefulInfo
- | UsefulInfo [GTerm]
- newtype Role = Role {}
- data GData
- data GTerm
- class FreeVars a where
- univquant_free_vars :: Formula -> Formula
- univquant_free_vars_FC :: FormulaC -> FormulaC
- arbCNF :: Gen Formula
- arbLiteral :: Gen Formula
- arbAtomicFormula :: Gen Formula
- newtype AtomicWord = AtomicWord String
- newtype V = V String
- newtype F c = F {}
- newtype T c = T {}
- unwrapF :: Copointed t => F t -> Formula0 (T t) (F t)
- unwrapT :: Copointed t => T t -> Term0 (T t)
- foldFormula0 :: (f -> r) -> (Quant -> [V] -> f -> r) -> (f -> BinOp -> f -> r) -> (t -> InfixPred -> t -> r) -> (AtomicWord -> [t] -> r) -> Formula0 t f -> r
- foldTerm0 :: (String -> r) -> (Rational -> r) -> (V -> r) -> (AtomicWord -> [t] -> r) -> Term0 t -> r
- foldF :: Copointed t => (F t -> r) -> (Quant -> [V] -> F t -> r) -> (F t -> BinOp -> F t -> r) -> (T t -> InfixPred -> T t -> r) -> (AtomicWord -> [T t] -> r) -> F t -> r
- foldT :: Copointed t => (String -> r) -> (Rational -> r) -> (V -> r) -> (AtomicWord -> [T t] -> r) -> T t -> r
Basic undecorated formulae and terms
Formulae and terms decorated with state
fApp :: Pointed c => AtomicWord -> [T c] -> T c Source #
Function symbol application (constants are encoded as nullary functions)
distinctObjectTerm :: Pointed c => String -> T c Source #
Double-quoted string literal, called Distinct Object in TPTP's grammar
General decorated formulae and terms
data Formula0 term formula Source #
See http://haskell.org/haskellwiki/Indirect_composite for the point of the type parameters (they allow for future decorations, e.g. monadic subformulae). If you don't need decorations, you can just use Formula
and the wrapped constructors above.
Constructors
BinOp formula BinOp formula | Binary connective application |
InfixPred term InfixPred term | Infix predicate application (equalities, inequalities) |
PredApp AtomicWord [term] | Predicate application |
Quant Quant [V] formula | Quantified formula |
(:~:) formula | Negation |
Instances
PrettyAnsi F0Diff Source # | |
Defined in Codec.TPTP.Diff | |
(PrettyAnsi (WithEnclosing t), PrettyAnsi (WithEnclosing f)) => PrettyAnsi (WithEnclosing (Formula0 t f)) Source # | |
Defined in Codec.TPTP.Pretty Methods prettyAnsi :: WithEnclosing (Formula0 t f) -> Doc AnsiStyle Source # prettyAnsiList :: [WithEnclosing (Formula0 t f)] -> Doc AnsiStyle Source # | |
PrettyAnsi (WithEnclosing F0Diff) Source # | |
Defined in Codec.TPTP.Diff Methods prettyAnsi :: WithEnclosing F0Diff -> Doc AnsiStyle Source # prettyAnsiList :: [WithEnclosing F0Diff] -> Doc AnsiStyle Source # | |
(Arbitrary a, Arbitrary b) => Arbitrary (Formula0 a b) Source # | |
(Data term, Data formula) => Data (Formula0 term formula) Source # | |
Defined in Codec.TPTP.Base Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Formula0 term formula -> c (Formula0 term formula) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Formula0 term formula) # toConstr :: Formula0 term formula -> Constr # dataTypeOf :: Formula0 term formula -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Formula0 term formula)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Formula0 term formula)) # gmapT :: (forall b. Data b => b -> b) -> Formula0 term formula -> Formula0 term formula # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Formula0 term formula -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Formula0 term formula -> r # gmapQ :: (forall d. Data d => d -> u) -> Formula0 term formula -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Formula0 term formula -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Formula0 term formula -> m (Formula0 term formula) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Formula0 term formula -> m (Formula0 term formula) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Formula0 term formula -> m (Formula0 term formula) # | |
(Read term, Read formula) => Read (Formula0 term formula) Source # | |
(Show term, Show formula) => Show (Formula0 term formula) Source # | |
(Eq term, Eq formula) => Eq (Formula0 term formula) Source # | |
(Ord term, Ord formula) => Ord (Formula0 term formula) Source # | |
Defined in Codec.TPTP.Base Methods compare :: Formula0 term formula -> Formula0 term formula -> Ordering # (<) :: Formula0 term formula -> Formula0 term formula -> Bool # (<=) :: Formula0 term formula -> Formula0 term formula -> Bool # (>) :: Formula0 term formula -> Formula0 term formula -> Bool # (>=) :: Formula0 term formula -> Formula0 term formula -> Bool # max :: Formula0 term formula -> Formula0 term formula -> Formula0 term formula # min :: Formula0 term formula -> Formula0 term formula -> Formula0 term formula # | |
(ToTPTP f, ToTPTP t) => ToTPTP (Formula0 t f) Source # | |
PrettyAnsi (Formula0 Term Formula) Source # | |
See http://haskell.org/haskellwiki/Indirect_composite for the point of the type parameters (they allow for future decorations). If you don't need decorations, you can just use Term
and the wrapped constructors above.
Constructors
Var V | Variable |
NumberLitTerm Rational | Number literal |
DistinctObjectTerm String | Double-quoted item |
FunApp AtomicWord [term] | Function symbol application (constants are encoded as nullary functions) |
Instances
PrettyAnsi T0Diff Source # | |
Defined in Codec.TPTP.Diff | |
Arbitrary a => Arbitrary (Term0 a) Source # | |
Data term => Data (Term0 term) Source # | |
Defined in Codec.TPTP.Base Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Term0 term -> c (Term0 term) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Term0 term) # toConstr :: Term0 term -> Constr # dataTypeOf :: Term0 term -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Term0 term)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Term0 term)) # gmapT :: (forall b. Data b => b -> b) -> Term0 term -> Term0 term # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Term0 term -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Term0 term -> r # gmapQ :: (forall d. Data d => d -> u) -> Term0 term -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Term0 term -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Term0 term -> m (Term0 term) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Term0 term -> m (Term0 term) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Term0 term -> m (Term0 term) # | |
Read term => Read (Term0 term) Source # | |
Show term => Show (Term0 term) Source # | |
Eq term => Eq (Term0 term) Source # | |
Ord term => Ord (Term0 term) Source # | |
ToTPTP t => ToTPTP (Term0 t) Source # | |
PrettyAnsi (Term0 Term) Source # | |
Defined in Codec.TPTP.Pretty | |
PrettyAnsi (WithEnclosing t) => PrettyAnsi (WithEnclosing (Term0 t)) Source # | |
Defined in Codec.TPTP.Pretty Methods prettyAnsi :: WithEnclosing (Term0 t) -> Doc AnsiStyle Source # prettyAnsiList :: [WithEnclosing (Term0 t)] -> Doc AnsiStyle Source # | |
PrettyAnsi (WithEnclosing T0Diff) Source # | |
Defined in Codec.TPTP.Diff Methods prettyAnsi :: WithEnclosing T0Diff -> Doc AnsiStyle Source # prettyAnsiList :: [WithEnclosing T0Diff] -> Doc AnsiStyle Source # |
Binary formula connectives
Constructors
(:<=>:) | Equivalence |
(:=>:) | Implication |
(:<=:) | Reverse Implication |
(:&:) | AND |
(:|:) | OR |
(:~&:) | NAND |
(:~|:) | NOR |
(:<~>:) | XOR |
Instances
Arbitrary BinOp Source # | |
Data BinOp Source # | |
Defined in Codec.TPTP.Base Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BinOp -> c BinOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BinOp # dataTypeOf :: BinOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BinOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BinOp) # gmapT :: (forall b. Data b => b -> b) -> BinOp -> BinOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BinOp -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BinOp -> r # gmapQ :: (forall d. Data d => d -> u) -> BinOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> BinOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BinOp -> m BinOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BinOp -> m BinOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BinOp -> m BinOp # | |
Bounded BinOp Source # | |
Enum BinOp Source # | |
Defined in Codec.TPTP.Base | |
Read BinOp Source # | |
Show BinOp Source # | |
Eq BinOp Source # | |
Ord BinOp Source # | |
ToTPTP BinOp Source # | |
PrettyAnsi BinOp Source # | |
Defined in Codec.TPTP.Pretty |
Term -> Term -> Formula infix connectives
Instances
Quantifier specification
Instances
Arbitrary Quant Source # | |
Data Quant Source # | |
Defined in Codec.TPTP.Base Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Quant -> c Quant # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Quant # dataTypeOf :: Quant -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Quant) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Quant) # gmapT :: (forall b. Data b => b -> b) -> Quant -> Quant # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Quant -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Quant -> r # gmapQ :: (forall d. Data d => d -> u) -> Quant -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Quant -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Quant -> m Quant # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Quant -> m Quant # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Quant -> m Quant # | |
Bounded Quant Source # | |
Enum Quant Source # | |
Defined in Codec.TPTP.Base | |
Read Quant Source # | |
Show Quant Source # | |
Eq Quant Source # | |
Ord Quant Source # | |
ToTPTP Quant Source # | |
PrettyAnsi Quant Source # | |
Defined in Codec.TPTP.Pretty |
Formula Metadata
type TPTP_Input = TPTP_Input_ Identity Source #
A line of a TPTP file: Annotated formula, comment or include statement.
type TPTP_Input_C = TPTP_Input_ (Writer [String]) Source #
A line of a TPTP file: Annotated formula (with the comment string embbeded in the Writer monad ), comment or include statement
forgetTIC :: TPTP_Input_C -> TPTP_Input Source #
Forget comments in a line of a TPTP file decorated with comments
data TPTP_Input_ c Source #
Generalized TPTP_Input
Constructors
AFormula | Annotated formulae |
Fields
| |
Comment String | |
Include FilePath [AtomicWord] |
Instances
data Annotations Source #
Annotations about the formulas origin
Constructors
NoAnnotations | |
Annotations GTerm UsefulInfo |
Instances
data UsefulInfo Source #
Misc annotations
Constructors
NoUsefulInfo | |
UsefulInfo [GTerm] |
Instances
Formula roles
Instances
Arbitrary Role Source # | |
Data Role Source # | |
Defined in Codec.TPTP.Base Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Role -> c Role # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Role # dataTypeOf :: Role -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Role) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Role) # gmapT :: (forall b. Data b => b -> b) -> Role -> Role # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r # gmapQ :: (forall d. Data d => d -> u) -> Role -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Role -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Role -> m Role # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role # | |
Read Role Source # | |
Show Role Source # | |
Eq Role Source # | |
Ord Role Source # | |
ToTPTP Role Source # | |
Metadata (the general_data rule in TPTP's grammar)
Constructors
GWord AtomicWord | |
GApp AtomicWord [GTerm] | |
GVar V | |
GNumber Rational | |
GDistinctObject String | |
GFormulaData String Formula | |
GFormulaTerm String Term |
Instances
Arbitrary GData Source # | |
Data GData Source # | |
Defined in Codec.TPTP.Base Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GData -> c GData # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c GData # dataTypeOf :: GData -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c GData) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c GData) # gmapT :: (forall b. Data b => b -> b) -> GData -> GData # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GData -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GData -> r # gmapQ :: (forall d. Data d => d -> u) -> GData -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> GData -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> GData -> m GData # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GData -> m GData # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GData -> m GData # | |
Read GData Source # | |
Show GData Source # | |
Eq GData Source # | |
Ord GData Source # | |
ToTPTP GData Source # | |
PrettyAnsi GData Source # | |
Defined in Codec.TPTP.Pretty |
Metadata (the general_term rule in TPTP's grammar)
Instances
Arbitrary GTerm Source # | |
Data GTerm Source # | |
Defined in Codec.TPTP.Base Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GTerm -> c GTerm # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c GTerm # dataTypeOf :: GTerm -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c GTerm) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c GTerm) # gmapT :: (forall b. Data b => b -> b) -> GTerm -> GTerm # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GTerm -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GTerm -> r # gmapQ :: (forall d. Data d => d -> u) -> GTerm -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> GTerm -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> GTerm -> m GTerm # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GTerm -> m GTerm # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GTerm -> m GTerm # | |
Read GTerm Source # | |
Show GTerm Source # | |
Eq GTerm Source # | |
Ord GTerm Source # | |
ToTPTP GTerm Source # | |
PrettyAnsi GTerm Source # | |
Defined in Codec.TPTP.Pretty |
Gathering free Variables
univquant_free_vars :: Formula -> Formula Source #
Universally quantify all free variables in the formula
univquant_free_vars_FC :: FormulaC -> FormulaC Source #
Universally quantify all free variables in the formula
arbLiteral :: Gen Formula Source #
newtype AtomicWord Source #
TPTP constant symbol/predicate symbol/function symbol identifiers (they are output in single quotes unless they are lower_words).
Tip: Use the -XOverloadedStrings
compiler flag if you don't want to have to type AtomicWord to construct an AtomicWord
Constructors
AtomicWord String |
Instances
Variable names
Instances
Arbitrary V Source # | |
Data V Source # | |
Defined in Codec.TPTP.Base Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> V -> c V # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c V # dataTypeOf :: V -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c V) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c V) # gmapT :: (forall b. Data b => b -> b) -> V -> V # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> V -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> V -> r # gmapQ :: (forall d. Data d => d -> u) -> V -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> V -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> V -> m V # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> V -> m V # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> V -> m V # | |
IsString V Source # | |
Defined in Codec.TPTP.Base Methods fromString :: String -> V # | |
Monoid V Source # | |
Semigroup V Source # | |
Read V Source # | |
Show V Source # | |
Eq V Source # | |
Ord V Source # | |
ToTPTP V Source # | |
PrettyAnsi V Source # | |
Defined in Codec.TPTP.Pretty |
Fixed-point style decorated formulae and terms
Formulae whose subexpressions are wrapped in the given type constructor c
.
For example:
Instances
Terms whose subterms are wrapped in the given type constructor c
Instances
Utility functions
foldFormula0 :: (f -> r) -> (Quant -> [V] -> f -> r) -> (f -> BinOp -> f -> r) -> (t -> InfixPred -> t -> r) -> (AtomicWord -> [t] -> r) -> Formula0 t f -> r Source #
foldTerm0 :: (String -> r) -> (Rational -> r) -> (V -> r) -> (AtomicWord -> [t] -> r) -> Term0 t -> r Source #
Arguments
:: Copointed t | |
=> (F t -> r) | Handle negation |
-> (Quant -> [V] -> F t -> r) | Handle quantification |
-> (F t -> BinOp -> F t -> r) | Handle binary op |
-> (T t -> InfixPred -> T t -> r) | Handle equality/inequality |
-> (AtomicWord -> [T t] -> r) | Handle predicate symbol application |
-> F t -> r | Handle formula |
Eliminate formulae