Monotonicity

Consider a rule containing an atom referencing a predicate p:

r(X, Y, Z) :- ..., p(X, Y), ...

We call the rule monotone in p if a larger p gives us a larger r.

A program is monotone if all recursive rules are monotone in all recursive predicates.

Knaster-Tarski Theorem: Each monotone program has a least fixed point.
Kleene Fixed-Point Theorem: For monotone programs in pure Datalog, naive evaluation terminates with the least fixed point.