Aunque Prolog tiene mecanimos para manejo de aritmética, estos pierden su sentido lógico, sin embargo, podemos mantenerlo con los axiomas de Peano.
0, s(0), s(s(0)), ... numero(0). numero(s(X)) :- numero(X). menor_igual(0,X) :- numero(X). menor_igual(s(X),s(Y)) :- menor_igual(X,Y). minimo(N1,N2,N1) :- menor_igual(N1,N2). minimo(N1,N2,N2) :- menor_igual(N2,N1). suma(0,X,X) :- numero(X). (0 + X = X) suma(s(X),Y,s(Z)) :- suma(X,Y,Z). (s(X) + Y = s(X + Y))
Podemos decir: suma(Num1,Num2,X), suma(Num1,X,Num2), suma(X,Y,Num3), etc. E.g., suma(s(0),s(s(0)),X), suma(s(A),X,s(s(s(0)))), suma(X,Y,s(s(s(0)))), etc.
Ventajas: se le pueden dar diferentes usos al programa.
Restricciones: suma(X,Y,Z) :- par(X), impar(Y).
mult(0,X,0). mult(s(X),Y,Z) :- mult(X,Y,W), suma(W,Y,Z).