Skip to content

Peano arithmetic

Natural numbers as 0 and successors s(N). Define addition and multiplication.

% add(X, Y, Z)  means X + Y = Z
add(0, Y, Y).
add(s(X), Y, s(Z)) :- add(X, Y, Z).

% mul(X, Y, Z)  means X * Y = Z
mul(0, _Y, 0).
mul(s(X), Y, Z) :- mul(X, Y, T), add(Y, T, Z).
?- add(s(s(0)), s(0), R).
R = s(s(s(0))).

?- mul(s(s(0)), s(s(s(0))), R).
R = s(s(s(s(s(s(0)))))).  % 2 * 3 = 6

Tip: These are purely declarative and work in multiple directions (e.g., as relations).