©1998 Research Institute for Symbolic Computation (RISC-Linz)
This package contains the implementation of command Def for defining rewrite rules.
Syntax call
FormFunction[ params,lvars,term,cnd ]
Input
params,lvars : lists of Mathematica symbols
term : a term,
cnd : pair of the form { ppeqs, eqs } where ppeqs is a list of parameter passing equations and eqs is a list of initial equations.
These four terms are those involved in the encoding of a conditional rewrite rule R.
Output
the encoding corresponding to R.
Implementation
Syntax call
Def[vars, {
, ... ,
}]
or
Def[vars, {
, ... ,
}, TypeCheck->b ]
Input
![[Graphics:RewriteRuleDefsgr12.gif]](RewriteRuleDefsgr12.gif)
Effect
for every conditional rewrite rule
of the form f[
, ... ,
] → t ⇐
∧"ï∧
perform the following steps
õ! type check
only if the option TypeCheck ->True is specified, or no TypeCheck option is specified but
type-checking is switched on;
if
is ill typed then give an error message and return "⊥",
õ! add
to the list of conditional rewrite rules associated with f.
õ! Return "⊤" if all conditional rewrite rules were successfully inserted in the corresponding rewrite rule lists.
Remarks
The encoding of a CRR of the form f[
, ... ,
] → t ⇐
∧"ï∧
is
Function[{
, ... ,
}, Module[{
, ... ,
}, RewritesTo[t , {![[Graphics:RewriteRuleDefsgr29.gif]](RewriteRuleDefsgr29.gif)
, ... ,
≈
}, {
, ... ,
}]]] ,
where
, ... ,
are the rule variables, and is added to the list RewriteRuleList[f] of conditional rewrite rules
associated with f.
Implementation
Syntax call
Uniform[ term ]
Input
term : a term
Output
if term is a constant then return {{},{}}
if term is of the form
] then return a pair {vars,eqs} where vars is a
list of n fresh variables
,...,
and eqs is the list of parameter passing equations ![[Graphics:RewriteRuleDefsgr43.gif]](RewriteRuleDefsgr43.gif)
Example
Uniform[f[x,r[a],b]] returns the pair
{{w$144,w$145,w$146},{w$144≈x,w$145≈r[a],w$146≈b}}
Implementation