twee-0.1: An equational theorem prover

Safe HaskellNone
LanguageHaskell2010

Twee.Rule

Documentation

data Rule f Source #

Constructors

Rule 

Fields

Instances

Eq (Rule f) Source # 

Methods

(==) :: Rule f -> Rule f -> Bool #

(/=) :: Rule f -> Rule f -> Bool #

Ord (Rule f) Source # 

Methods

compare :: Rule f -> Rule f -> Ordering #

(<) :: Rule f -> Rule f -> Bool #

(<=) :: Rule f -> Rule f -> Bool #

(>) :: Rule f -> Rule f -> Bool #

(>=) :: Rule f -> Rule f -> Bool #

max :: Rule f -> Rule f -> Rule f #

min :: Rule f -> Rule f -> Rule f #

Show (Rule f) Source # 

Methods

showsPrec :: Int -> Rule f -> ShowS #

show :: Rule f -> String #

showList :: [Rule f] -> ShowS #

(Numbered f, PrettyTerm f) => Pretty (Rule f) Source # 

Methods

pPrintPrec :: PrettyLevel -> Rational -> Rule f -> Doc #

pPrint :: Rule f -> Doc #

pPrintList :: PrettyLevel -> [Rule f] -> Doc #

Symbolic (Rule f) Source # 

Associated Types

type ConstantOf (Rule f) :: * Source #

Methods

term :: Rule f -> TermOf (Rule f) Source #

termsDL :: Rule f -> DList (TermListOf (Rule f)) Source #

replace :: (TermListOf (Rule f) -> BuilderOf (Rule f)) -> Rule f -> Rule f Source #

type ConstantOf (Rule f) Source # 
type ConstantOf (Rule f) = f

data Equation f Source #

Constructors

(Term f) :=: (Term f) 

Instances

orient :: Function f => Equation f -> [Rule f] Source #

rule :: Function f => Term f -> Term f -> Rule f Source #

bothSides :: (Term f -> Term f') -> Equation f -> Equation f' Source #

type Strategy f = Term f -> [Reduction f] Source #

data Reduction f Source #

Constructors

Step (Rule f) (Subst f) 
Trans (Reduction f) (Reduction f) 
Parallel [(Int, Reduction f)] (Term f) 

steps :: Reduction f -> [(Rule f, Subst f)] Source #

normalForms :: Function f => Strategy f -> [Term f] -> Set (Term f) Source #

rewrite :: Function f => String -> (Rule f -> Subst f -> Bool) -> Frozen (Rule f) -> Strategy f Source #

tryRule :: Function f => (Rule f -> Subst f -> Bool) -> Rule f -> Strategy f Source #

reducesWith :: Function f => (Term f -> Term f -> Bool) -> Rule f -> Subst f -> Bool Source #

reduces :: Function f => Rule f -> Subst f -> Bool Source #

reducesSub :: Function f => Term f -> Rule f -> Subst f -> Bool Source #