% Prologprogramm zur Addition und Multiplikation von natuerlichen Zahlen.

% Darstellung in der klassischen Praedikatenlogik erster Stufe und in Prolog:
% Die Objekte (Elemente des Individuenbereichs) sind die natuerlichen Zahlen.
% Wir verwenden die Konstante 0 und das Funktionszeichen f fuer die
% Nachfolgerfunktion. Das Herbrand-Universum zu unserer Logiksprache
% besteht aus den Grundtermen 0, f(0), f(f(0)), f(f(f(0))), ...,
% die als die natuerlichen Zahlen 0, 1, 2, 3, ... interpretiert werden.
% Die zweistelligen Funktionen + und * stellen wir als dreistellige
% Praedikate add bzw. mul dar, die genau den Graphen der zahlentheoretischen
% Funktionen + bzw. * entsprechen. D.h. add(X,Y,Z) ist zu interpretieren
% als X+Y=Z, und mul(X,Y,P) ist zu interpretieren als X*Y=P. Dann gilt:

add(X,0,X).
add(X,f(Y),f(Z)) :-
  add(X,Y,Z).

mul(_,0,0).
mul(X,f(Y),P) :-
  mul(X,Y,Q),
  add(Q,X,P).

% Beispiel fuer eine Anfrage (Was ist 2*2?):
% ?- mul(f(f(0)), f(f(0)), X).
