:- use_module(library(clpfd)). entier(zero). entier(s(X)) :- entier(X). add(X, zero, X). add(X, s(Y), Z) :- add(s(X), Y, Z). inf(zero, X) :- entier(X). inf(s(X), s(Y)) :- inf(X, Y). mult(zero, X, zero). mult(s(Y), X, Z) :- mult(Y, X, W), add(W, X, Z). div(A, B) :- inf(A, B), inf(X, B), mult(X, A, B). div_w(X, Y) :- inf(s(X), Y), inf(s(s(zero)), X), div(X, Y). prime(X) :- entier(X), \+ div_w(_, X). peano(X, zero) :- X #= 0. peano(X, s(P)) :- X #> 0, X #= Y + 1, peano(Y, P).