a(X, Z) :- b(X, X, Z).
a(1, 3).

b(X, 1, Z) :- e(X, Z), !, f(Z).
b(X, 2, Z) :- e(X, Z), !, f(Z).
b(X, Y, 6).

e(1, 4).
e(1, 5).
e(2, 5).

f(5).

% Interessante Abfragen:
% ? a(1, X).
% ? a(2, X). (Reerfüllung probieren!)
% ? b(3, 2, X).

% Versionen von a und b ohne Cut,
% um den Unterschied auszuprobieren
a2(X, Z) :- b2(X, X, Z).
a2(1, 3).

b2(X, 1, Z) :- e(X, Z), f(Z).
b2(X, 2, Z) :- e(X, Z), f(Z).
b2(X, Y, 6).
