Less repetitions. Instead of
roo(X, W) :- zut(X, Z), pum(Z, Y), tos(Y, W)
we could write something like roo/2 :- zut . pum . tos roo(X, W) :- zut(X, Z), pum(Z, Y), tos(Y, W)
we could write something like roo/2 :- zut . pum . tos roo --> zut, pum, tos.
Note the use of (-->)/2 to define a grammar rule. Use phrase/3 to invoke the DCG. DCGs are currently being drafted for inclusion in the Prolog ISO standard: