node(a; b; c; d). depends(b,a). depends(c,a). depends(d, a). depends(d, c). level(X, 0) :- not depends(X, _); node(X). level(X, LEVEL):- LEVEL = #max{L+1, level(Y, L): level(Y, L), depends(X, Y)}; node(X); LEVEL > 0.