definition module trd

// $Id$

from rule import Rule
from graph import Node
from StdOverloaded import ==

/*
`Ruletype theap symtype rule' determines the type of `rule'.
`Theap' must be an endless supply of type variables.
`Symtype' associates type rules with the symbols that occur in `rule'.

If typing does not succeed, the function aborts.
*/

ruletype
 :: .[tvar]
    ((Node sym var) -> Rule tsym trvar)
    (Rule sym var)
 -> .Rule tsym tvar
 |  == var
 &  == tsym
 &  == tvar
 &  == trvar