Evaluating bodies

A body is a conjunction of literals (remember: , means “and”).

Evaluating it finds every binding that satisfies all of them: positive atoms generate candidate bindings, comparisons narrow them, and equalities bind new variables.

divisor(D, N) :- num(D), num(M), D > 1, M > 1, N = D * M:

stepbindings
num(D), num(M)all 36 (D, M) pairs
D > 1, M > 125 pairs
N = D * MN computed for each → 25 (D, N) facts

Each surviving binding instantiates the head, building up the divisor relation, one new tuple per binding.