 :- :h(X), :r(X,Y), def:0(Y)
 :- :g(X), :r(X,Y), nom:i1(Y)
:r(X,Y) v :r(X,Y1) :- :c(X), nom:i1(Y), nom:i2(Y1)
Y == Y1 v Y == Y2 :- :f(X), :r(X,Y), nom:i1(Y1), nom:i2(Y2)
:e(X) v [Y1 == Y2]@atMost(2 :r :d)(X) v [Y1 == Y3]@atMost(2 :r :d)(X) v [Y2 == Y3]@atMost(2 :r :d)(X) :- Y1 <= Y2, Y2 <= Y3, :d(X), :d(Y1), :d(Y2), :d(Y3), :r(X,Y1), :r(X,Y2), :r(X,Y3), NodeIDsAscendingOrEqual(Y1,Y2,Y3)
nom:i2(:i2)
def:0(:i2)
def:0(:i1)
nom:i1(:i1)