Two relations at once

Mutual recursion gives a system of equations. The even and odd numbers from Part 2:

even(0).
even(N) :- num(N), odd(N - 1).
odd(N)  :- num(N), even(N - 1).
even := { (0) } ∪ π#1( σ#2 = #1 - 1( num × odd ) )
odd  := π#1( σ#2 = #1 - 1( num × even ) )

The fact even(0) becomes the constant table { (0) }. Both equations are solved together, iterating from even = odd = {} until neither changes.

A whole strongly connected component becomes one simultaneous least fixed point, just as in naive evaluation.