The primary top-level defining forms being supported are:
A domain theory is a finite set of top-level forms. This implies that the order of forms in a domain theory is irrelevant and that implementations must allow for use before definition. This property of the language follows from its logical semantics. It is also a practical necessity because of the way in which time is handled. Because time must be made explicit, it is necessary to know whether a particular relation or function is time-dependent. This information is only available in the appropriate defining form.
The general syntax of a form is the form identifier (e.g., defQuantityFunction), followed by its name, followed by a series of keyword / value pairs. Some keywords are optional, as indicated by the surrounding brackets in the grammar (i.e., []). If an optional field is absent, its value defaults to NIL.
Wherever a keyword/value pair appears, an arbitrary number of other, implementation specific, keywords are allowed. If the domain theories employing such keywords are to be portable, however, the following restriction must be satisfied. If the keywords affect the behavioral inferences entailed by the domain theory, then they should only strengthen or annotate the behavioral inferences. This allows other implementations to ignore the additional keywords and still draw correct, if weaker conclusions. Domain theories that employ an extension that satisfies this criterion will be sharable across implementations.
The semantics of each top level form is defined by an axiom schema.