1.2 Mode Spec

When introducing a built-in predicate, we shall present its usage with a mode spec, which has the form name(arg, ..., arg), where each arg denotes how that argument should be instantiated in goals, and has one of the following forms:

This argument should be instantiated to a term denoting a goal or a clause or a predicate name, or that otherwise needs special handling of module prefixes. The argument is subject to module name expansion (see Meta Exp).
This argument should be instantiated to a non-variable term.
This argument should be uninstantiated.
This argument may or may not be instantiated.

Mode specs are not only used in the manual, but are part of the syntax of the language as well. When used in the source code, however, the ArgName part must be omitted. That is, arg must be either `:', `+', `-', or `?'.