|
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 |