% Petersche Funktion p (manchmal auch Ackermannfunktion genannt).
%    p(0,y) := y+1
%    p(x+1,0) := p(x,1)
%    p(x+1,y+1) := p(x,p(x+1,y))
% fuer alle natuerlichen Zahlen x und y.

% Darstellung der natuerlichen Zahlen wie in addmul.pl.
% Die petersche Funktion stellen wir als dreistelliges Prädikat p dar,
% das genau dem Graphen der peterschen Funktion entspricht. Dann gilt:

p(0,Y,f(Y)).
p(f(X),0,Z) :- p(X,f(0),Z).
p(f(X),f(Y),Z) :- p(f(X),Y,U), p(X,U,Z).

% Beispiel fuer eine Anfrage (Was ist p(6,0)?):
% ?- p(f(f(f(f(f(f(0)))))),0,Z).

% Die Anzahl der Klauselinstanzen, die Prolog erzeugen muss,
% ist extrem hoch.
