<atomic sentence> :: (AND <literal>+) | <literal>
<literal> :: <positive literal> | <negative literal>
<negative literal> :: (NOT <positive literal>)
<positive literal> :: (<relconst> <term>+)
<term> :: <objconst> | (<funconst> <term>+)
<relconst>, <objconst>, <funconst> :: <symbol>
<var> :: Symbol beginning with '?'
<symbol> :: A sequence of characters satisfying the Common Lisp symbol
datatype.
<boolean> :: TRUE | FALSE
The set of ;SPMlt;funconst;SPMgt; is a subset of ;SPMlt;relconst;SPMgt;.
In addition, any ;SPMlt;literal;SPMgt; may be named. This is purely a convenience for certain implementations (it is useful for generating explanations). The syntax for a named literal is (:name <symbol> <literal>). CML does not place any restrictions on the names or their scopes, although implementations that make use of them may.
<dimension expression> ::
<objconst>
| (* <dimension expression> <dimension expression>+ )
| (/ <dimension expression> <dimension expression> )
| (EXPT <dimension expression> <number>)
<quantity expression> ::
<quantity>
| <constant>
| (<math function> <quantity expression>+ )
<constant> :: <objconst> | <number>
<number> :: A member of the Common Lisp number datatype.
This includes reals, integers, rationals, floating point, and complex
numbers.
<string> :: The sequence of characters contained in the string,
preceded and followed by a " (double quote) character, as defined by
the Common Lisp string datatype.