twee-0.1: An equational theorem prover

Safe HaskellNone
LanguageHaskell2010

Twee.Term

Contents

Documentation

class Build f a | a -> f where Source #

Minimal complete definition

builder

Methods

builder :: a -> Builder f Source #

Instances

Build f a => Build f [a] Source # 

Methods

builder :: [a] -> Builder f Source #

Build f (TermList f) Source # 

Methods

builder :: TermList f -> Builder f Source #

Build f (Term f) Source # 

Methods

builder :: Term f -> Builder f Source #

Build f (Builder f) Source # 

Methods

builder :: Builder f -> Builder f Source #

build :: Build f a => a -> Term f Source #

buildList :: Build f a => a -> TermList f Source #

con :: Fun f -> Builder f Source #

fun :: Build f a => Fun f -> a -> Builder f Source #

listSubst :: Subst f -> [(Var, Term f)] Source #

foldSubst :: (Var -> TermList f -> b -> b) -> b -> Subst f -> b Source #

allSubst :: (Var -> TermList f -> Bool) -> Subst f -> Bool Source #

forMSubst_ :: Monad m => Subst f -> (Var -> TermList f -> m ()) -> m () Source #

class Substitution f s | s -> f where Source #

Minimal complete definition

evalSubst

Methods

evalSubst :: s -> Var -> Builder f Source #

Instances

Substitution f (TriangleSubst f) Source # 
Substitution f (Subst f) Source # 

Methods

evalSubst :: Subst f -> Var -> Builder f Source #

(Build f a, (~) * v Var) => Substitution f (v -> a) Source # 

Methods

evalSubst :: (v -> a) -> Var -> Builder f Source #

subst :: Substitution f s => s -> Term f -> Builder f Source #

newtype Subst f Source #

Constructors

Subst 

Fields

Instances

Substitution f (Subst f) Source # 

Methods

evalSubst :: Subst f -> Var -> Builder f Source #

Show (Subst f) Source # 

Methods

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

show :: Subst f -> String #

showList :: [Subst f] -> ShowS #

retract :: Var -> Subst f -> Subst f Source #

match :: Term f -> Term f -> Maybe (Subst f) Source #

unify :: Term f -> Term f -> Maybe (Subst f) Source #

lookup :: Var -> Subst f -> Maybe (Term f) Source #

extend :: Var -> Term f -> Subst f -> Maybe (Subst f) Source #

len :: Term f -> Int Source #

occurs :: Var -> Term f -> Bool Source #

subterms :: Term f -> [Term f] Source #

mapFun :: (Fun f -> Fun g) -> Term f -> Builder g Source #

mapFunList :: (Fun f -> Fun g) -> TermList f -> Builder g Source #

class Numbered f where Source #

Minimal complete definition

fromInt, toInt

Methods

fromInt :: Int -> f Source #

toInt :: f -> Int Source #

Instances

fromFun :: Numbered f => Fun f -> f Source #

toFun :: Numbered f => f -> Fun f Source #

pattern App :: forall f. Numbered f => f -> [Term f] -> Term f Source #

app :: Numbered a => a -> [Term a] -> Term a Source #

data Term f Source #

Instances

Build f (Term f) Source # 

Methods

builder :: Term f -> Builder f Source #

Eq (Term f) Source # 

Methods

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

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

Ord (Term f) Source # 

Methods

compare :: Term f -> Term f -> Ordering #

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

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

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

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

max :: Term f -> Term f -> Term f #

min :: Term f -> Term f -> Term f #

(Sized f, Numbered f) => Sized (Term f) Source # 

Methods

size :: Term f -> Int Source #

Symbolic (Term f) Source # 

Associated Types

type ConstantOf (Term f) :: * Source #

Methods

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

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

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

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

data TermList f Source #

Instances

Build f (TermList f) Source # 

Methods

builder :: TermList f -> Builder f Source #

Eq (TermList f) Source # 

Methods

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

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

Ord (TermList f) Source # 

Methods

compare :: TermList f -> TermList f -> Ordering #

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

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

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

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

max :: TermList f -> TermList f -> TermList f #

min :: TermList f -> TermList f -> TermList f #

(Sized f, Numbered f) => Sized (TermList f) Source # 

Methods

size :: TermList f -> Int Source #

Symbolic (TermList f) Source # 
type ConstantOf (TermList f) Source # 
type ConstantOf (TermList f) = f

at :: Int -> TermList f -> Term f Source #

pattern Empty :: forall f. TermList f Source #

pattern Cons :: forall f. Term f -> TermList f -> TermList f Source #

pattern ConsSym :: forall f. Term f -> TermList f -> TermList f Source #

pattern UnsafeCons :: forall f. Term f -> TermList f -> TermList f Source #

pattern UnsafeConsSym :: forall f. Term f -> TermList f -> TermList f Source #

newtype Fun f Source #

Constructors

MkFun Int 

Instances

Eq (Fun f) Source # 

Methods

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

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

Show (Fun f) Source # 

Methods

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

show :: Fun f -> String #

showList :: [Fun f] -> ShowS #

(Numbered f, Minimal f) => Minimal (Fun f) Source # 

Methods

minimal :: Fun f Source #

(Sized f, Numbered f) => Sized (Fun f) Source # 

Methods

size :: Fun f -> Int Source #

(Numbered f, Arity f) => Arity (Fun f) Source # 

Methods

arity :: Fun f -> Int Source #

(Numbered f, Skolem f) => Skolem (Fun f) Source # 

Methods

skolem :: Var -> Fun f Source #

newtype Var Source #

Constructors

MkVar Int 

Instances

Enum Var Source # 

Methods

succ :: Var -> Var #

pred :: Var -> Var #

toEnum :: Int -> Var #

fromEnum :: Var -> Int #

enumFrom :: Var -> [Var] #

enumFromThen :: Var -> Var -> [Var] #

enumFromTo :: Var -> Var -> [Var] #

enumFromThenTo :: Var -> Var -> Var -> [Var] #

Eq Var Source # 

Methods

(==) :: Var -> Var -> Bool #

(/=) :: Var -> Var -> Bool #

Ord Var Source # 

Methods

compare :: Var -> Var -> Ordering #

(<) :: Var -> Var -> Bool #

(<=) :: Var -> Var -> Bool #

(>) :: Var -> Var -> Bool #

(>=) :: Var -> Var -> Bool #

max :: Var -> Var -> Var #

min :: Var -> Var -> Var #

Show Var Source # 

Methods

showsPrec :: Int -> Var -> ShowS #

show :: Var -> String #

showList :: [Var] -> ShowS #

pattern Var :: forall t. Var -> Term t Source #

pattern Fun :: forall f. Fun f -> TermList f -> Term f Source #

data Builder f Source #

Instances

Build f (Builder f) Source # 

Methods

builder :: Builder f -> Builder f Source #

Monoid (Builder f) Source # 

Methods

mempty :: Builder f #

mappend :: Builder f -> Builder f -> Builder f #

mconcat :: [Builder f] -> Builder f #

Orphan instances

(Ord f, Numbered f) => Ord (Fun f) Source # 

Methods

compare :: Fun f -> Fun f -> Ordering #

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

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

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

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

max :: Fun f -> Fun f -> Fun f #

min :: Fun f -> Fun f -> Fun f #

Show (Term f) Source # 

Methods

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

show :: Term f -> String #

showList :: [Term f] -> ShowS #

Show (TermList f) Source # 

Methods

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

show :: TermList f -> String #

showList :: [TermList f] -> ShowS #