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.