|
|
|
|
|
|
Synopsis |
|
|
|
Documentation |
|
newtype Variable |
A string used for a variable name.
Names starting with '!' are reserved for internal use. | Constructors | | Instances | |
|
|
newtype Head |
A string used for a term head name. | Constructors | | Instances | |
|
|
newtype Label |
A string used for a label name (includes the '@').
Names starting with "@!" are reserved for internal use. | Constructors | | Instances | |
|
|
data Term |
Terms. We often use the following definitions:
- depth
- The maximum number of App nestings in a Term. Note that
foo, foo(X), and foo(@lab) have depth one, while foo(bar)
has depth two, and X and @lab have depth zero.
- ground term
- A term without variables.
- simple term
- A term without labels.
- pure term
- A simple ground term.
- plain term
- A ground term of depth <= 1.
| Constructors | | Instances | |
|
|
data Loc |
Locations. | Constructors | | Instances | |
|
|
data Clause |
A Clause is meant to be a pattern for matching Terms beloging to
a Grammar. | Constructors | |
|
|
data Rule |
The Rules define the Term rewriting system. The implied meaning is
"whenever the left hand side has a match in the Grammar,
add the right hand side to the Grammar". | Constructors | |
|
|
data Intersection |
A special IntersectionRule, defining a Label set as the intersection
of two sets. This could be modeled by a set of Rules, once for each
term head. See also intersect. | Constructors | |
|
|
Special Constants |
|
intersectionLabel :: Label |
A Label whose set over-approximates the intersection between sets.
This is used internally: see also computeIntersection. |
|
intersectionHead :: Head |
A Head that is used in the set of intersectionLabel in order to
over-approximate the intersection between sets.
This is used internally: see also computeIntersection. |
|
resultLabel :: Label |
A Label where is stored the result fo the analisys, by convention. |
|
resultHead :: Head |
A flag that, if present in resultLabel, tells the analysis failed. |
|
simpleLoc :: Loc |
The Location implied in a SimpleRule. |
|
Substitutions |
|
newtype Subst |
|
|
applySubstTerm :: Subst -> Term -> Term |
|
applySubst :: Subst -> Clause -> Clause |
Apply Subst to a Clause. The Location in the result must be a
Label. |
|
Utilities |
|
isPlain :: Term -> Bool |
|
succHead :: Head -> Head |
|
Pretty Printing |
|
pprTerm :: Term -> String |
Pretty print a Term. |
|
pprTerms :: [Term] -> String |
|
pprClause :: Clause -> String |
Pretty print a Clause. |
|
pprClauses :: [Clause] -> String |
|
pprRule :: Rule -> String |
Pretty print a Rule. |
|
pprGeneralRule :: Rule -> String |
Pretty print SimpleRules and FullRules , using
user-friendly syntax. |
|
Produced by Haddock version 0.6 |