When a type hierarchy is defined, it is possible to check if an input value is more or less ``instantiated'' within the hierarchy. Using the under and sunder constructs, one can check if a value is more (resp strictly more) specific than a symbol within a hierarchy. The syntax is the following:
|
NOTE: when under is used with a symbol z which is not part of a type hierarchy, #(under z) unifies with z only. In particular, it will NOT unify with NIL. So the expression ((a #(under z))) is equivalent to the expression ((a given) (a z)). In fact, under is the typed extension of the notion of given. Note that ((a #(under z))) is the equivalent of LFG's notation a =c z.