Evaluating rules
A predicate is computed completely, only once everything it depends on is known.
This gives a bottom-up, layer-by-layer strategy:
Arrows point from a predicate to the predicates it depends on.
- Layer 0:
num(no dependencies) - Layer 1 :
even(needsnum),divisor(needsnum) - Layer 2:
odd(needseven),composite(needsdivisor) - Layer 3:
not_prime(needscomposite) - Finally, evaluate the query.