Backward chaining rule bodies are defined as:
<body> ::= <clause>+
<clause> ::= (<goal> <-- <expression>*)
<goal> ::= (<rule-name> <term>*)
In each sub-clause of the rule, the goal must have the same arity (number of arguments). Within each
<term>
destructuring is allowed and variables are introduced by
?
(and
?
on its own denotes the anonymous variable which always matches).
<expression>
is as defined in Forward Chaining Syntax.