divisible_by_two:-This is a non-unit clause.even.
In general, a clause consists of two parts: the head and the body.
The head is divisible_by_two and the body is even --- even is sometimes referred to as a subgoal.
Note that the symbol ``:-'' is read as if. An informal reading of the clause is `` divisible_by_two is true if even is true'' which is equivalent to `` even divisible_by_two''.
Any number of subgoals may be in the body of the rule.
This is another way in which Prolog is a restriction of full first order predicate calculus. For example, we cannot translate rich(fred) happy(fred)powerful(fred) directly into the Prolog version happy(fred),powerful(fred) :- rich(fred).
See section 2.10 for an example of a clause with more than one subgoal in the body. A fact is effectively a rule with no subgoals.
You may have noticed that, even if it is held that ``even'' is a relation, it does not seem to relate anything to anything else.
The rule is not as much use as it might be because it does not reveal the more interesting relationship that
A number is divisible by two if it is evenWe can express this with the help of the logical variable. Here is the improved rule:
divisible_by_two(X):-This is also a non-unit clause. The named logical variable is X. This Prolog clause is equivalent to the predicate calculus statement X. (even(X) divisible_by_two(X)).even(X).