A function fact is an item of the form ‘Head = Result’.
A predicate fact is an item of the form ‘Head’,
where the top-level functor of Head
In both cases, the Head term must not be a variable.
The top-level functor of the Head
determines which predicate or function the fact belongs to;
the predicate or function must have been declared
in a preceding ‘pred’ or ‘func’ declaration in this module.
The Result (if any) and the arguments of the Head must
be valid data-terms (optionally annotated with a mode qualifier;
see Different clauses for different modes).
A fact is equivalent to a rule whose body is ‘true’.