|
| Data.TermLanguage | | Portability | portable | | Stability | experimental | | Maintainer | jba @ di . uminho . pt |
|
|
|
|
|
| Description |
| A module for handling Terms, Variables and Substitutions.
|
|
| Synopsis |
|
|
|
| Documentation |
|
| class Eq a => TermLanguage t s a | t -> s where |
A class that handle terms (t a) with variables (a) and the
associated notion of substitution (s a t).
Note that a has kind *, t has kind *->* and s has
kind *->*->*. | | | Methods | | varT :: a -> t a | | Build a term from a variable | | | varsIn :: t a -> [a] | | Vars in a term | | | appS :: s a t -> t a -> t a | | Applies a substitution to a term | | | nullS :: s a t | | Null Substitution | | | unitS :: a -> t a -> s a t | | Singleton substitution | | | compS :: s a t -> s a t -> s a t | | Composition of two substitutions | | | domS :: s a t -> [a] | | Gets the Domain of a substitution | | | unifyT :: t a -> t a -> Maybe (s a t) | | unifyT t1 t2 computes the most general unifier for terms
t1 and t2 (if it exists).
That is, if unify t1 t2 returns Just s then
(appS s t1)==(appS s t2)
and, for every substitution s1 that equalizes both terms, it factors
through s (i.e. exists s2 such that s1==comp s s2). | | | matchT :: t a -> t a -> Maybe (s a t) | | matchT t1 t2 computes the matcher substitution for terms
t1 and t2 (if it exists).
That is, if match t1 t2 returns Just s then
(appS s t1)==t2. |
| | | Instances | |
|
|
| vRngS :: TermLanguage t s a => s a t -> [a] |
(s2 @@ s1) returns the substitution s2 AFTER s1.
It is the infix operator for substitution composition.
However, remember that the arguments are swaped when compared with
compS, that is compS s1 s2==s2 s1 Get all vars in the range of a substitution. |
|
| isIdempotentS :: TermLanguage t s a => s a t -> Bool |
| isIdempotentS s checks if s is an idempotent substitution. |
|
| isInstanceOfT :: TermLanguage t s a => t a -> t a -> Bool |
| isInstanceOfT t1 t2 checks if t1 is an instance of t2. |
|
| Produced by Haddock version 0.6 |