tpdb-2.7.3: Data Type for Rewriting Systems
Safe HaskellSafe-Inferred
LanguageHaskell2010

TPDB.Data.Term

Synopsis

Documentation

type Position = [Int] Source #

subterms :: TermC v c => Term v c -> [Term v c] Source #

in preorder

peek :: TermC v c => Term v c -> Position -> Term v c Source #

poke :: TermC v c => Term v c -> (Position, Term v c) -> Term v c Source #

pos :: TermC v c => Term v c -> [Position] Source #

all positions

vmap :: (TermC v s, TermC u s) => (v -> u) -> Term v s -> Term u s Source #

tmap :: (t -> s) -> Term v t -> Term v s Source #

positions :: TermC v c => Term v c -> [(Position, Term v c)] Source #

sympos :: TermC v c => Term v c -> [Position] Source #

non-variable positions

varpos :: TermC v c => Term v c -> [Position] Source #

variable positions

leafpos :: TermC v c => Term v c -> [Position] Source #

leaf positions (= nullary symbols)

strict_subterms :: Term v c -> [Term v c] Source #

isSubtermOf :: (TermC v c, Eq v, Eq c) => Term v c -> Term v c -> Bool Source #

isStrictSubtermOf :: (TermC v c, Eq v, Eq c) => Term v c -> Term v c -> Bool Source #

pmap :: (TermC v c, TermC v d) => (Position -> c -> d) -> Term v c -> Term v d Source #

compute new symbol at position, giving the position

rpmap :: (TermC v c, TermC v d) => (Position -> c -> d) -> Term v c -> Term v d Source #

compute new symbol from *reverse* position and previous symbol this is more efficient (no reverse needed)

peek_symbol :: TermC v c => Term v c -> Position -> c Source #

poke_symbol :: TermC v c => Term v c -> (Position, c) -> Term v c Source #

warning: don't check arity

pokes :: TermC v c => Term v c -> [(Position, Term v c)] -> Term v c Source #

symsl :: TermC v c => Term v c -> [c] Source #

list of function symbols (in pre-order, with duplicates)

lsyms :: (Ord c, TermC v c) => Term v c -> [c] Source #

unique

isvar :: TermC v c => Term v c -> Bool Source #

lvars :: (Ord v, TermC v c) => Term v c -> [v] Source #

list of variables (each occurs once, unspecified ordering)

voccs :: TermC v c => Term v c -> [v] Source #

list of variables (in pre-order, with duplicates)