term-rewriting-0.1.1: Term Rewriting Library

Safe HaskellNone

Data.Rewriting.Substitution

Contents

Synopsis

Documentation

data GSubst v f v' Source

A generalised? substitution: a finite, partial map from variables to terms with a different variable type.

Instances

(Pretty f, Pretty v) => Pretty (Subst f v) 
(Show v, Show f, Show v') => Show (GSubst v f v') 
(Pretty v, Pretty f, Pretty v') => Pretty (GSubst v f v') 

type Subst f v = GSubst v f vSource

A substitution, mapping variables to terms. Substitutions are equal to the identity almost everywhere.

Important operations

gApply :: Ord v => GSubst v f v' -> Term f v -> Maybe (Term f v')Source

Apply a substitution, assuming that it's total. If the term contains a variable not defined by the substitution, return Nothing.

apply :: Ord v => Subst f v -> Term f v -> Term f vSource

Apply a substitution, assuming that it's the identity on variables not mentionend in the substitution.

compose :: Ord v => Subst f v -> Subst f v -> Subst f vSource

Compose substitutions. We have

 (s1 `compose` s2) `apply` t = s1 `apply` (s2 `apply` t).

Reexported modules