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

% ?- p(S,b).

% p(a).
% p(b).
% q(b).
% 
% ?- p(X), q(X).
%  |- ?- q(a). % Fehlschlag, Backtracking
% ?- p(X), q(X).
%  |- ?- q(b).
%     |- ?- .

% (1) p :- p.
% (2) p.
% 
% ?- p.
%  |- (1)
%   ?- p.
%    |- (1)
%     ?- p.
%      ... endlose Ableitung


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

% ?- isPeano(Z).
%  |- Z |-> s(N1)
%    ?- isPeano(N1).
%      |- N1 |-> s(N2)
%      ?- isPeano(N2).
%       ....

% Empfehlung: Regeln fuer Spezialfaelle VOR allgemeinen Faellen!
