natural(0).
natural(s(X)):-natural(X).

add(0,X,X):-natural(X).
add(s(X),Y,s(Z)):-add(X,Y,Z).

mul(0,X,0):-natural(X).
mul(s(X),Y,Z):-mul(X,Y,Z1), add(Z1,Y,Z).

%(a1)
lt(X, s(X)).
lt(X, s(Y)) :- lt(X, Y). 

%(a2)
fact(s(0),s(0)).
fact(s(X),F):-fact(X,G),mul(G,s(X),F).
