
% p(X,Z) :- q(X,Y), p(Y,Z).
% p(X,X).
% q(a,b).


p(a).
p(b).
q(b).

%  ?- p(X), q(X).
%    |- (1. Klausel: X=a)
%       ?- q(a).   Sackgasse!
%    Letzer Schritt rückgängig, Alternative:
%    |- (2. Klausel: X=b)
%       ?- q(b).
%         |- (3. Klausel)
%            ?- .

r :- r.
r.

%  ?- r.
%    |- (1. Klausel)
%      ?- r.
%        |- (1. Klausel)
%          ...

isPeano(s(N)) :- isPeano(N).
isPeano(o).

%  ?- isPeano(N).
%    |- 1. Klausel, N = s(N1)
%      ?- isPeano(N1)
%        |- 1. Klausel, N1 = s(N2)
%          ?- isPeano(N2)
%      ...
