plus(X,z,X).
plus(X,s(Y),s(Z)) :- plus(X,Y,Z).
times(X,z,z).
times(X,s(Y),Z) :- times(X,Y,W), plus(X,W,Z).
fact(z,s(z)).
fact(s(N),Y) :- fact(N,I), times(I,s(N),Y).