bar(a, b, c). bar(X, Y, Z) :- bar(Y, X, Z). bar(X, Y, Z) :- bar(Z, Y, X), quux(X, Z). quux(b, c). quux(c, d). quux(X, Y ) :- quux(Y, X). quux(X, Z) :- quux(X, Y ), quux(Y, Z).