% Here is my translation of NatNum into Prolog, to give you the idea... % natnum(0). % natnum(N) :- s(M,N),natnum(M). ?- natnum(4). true . ?- natnum(-2). false. ?- natnum(0). true . ?- s(X,4). X = 3 . ?- s(4,X). X = 5. ?- plus(3,4,X). X = 7 . ?- mult(12,8,OUT). OUT = 96 . ?- exp(2,8,Res). Res = 256 . ?- plus(-2,3,Out). false. ?-