function fak(N : Integer) : Integer begin if N = 0 then fak := 1 else if N > 0 then fak := N* fak(N-1); end;
fak(0,1).fak(N,X) :- N >0, M is N-1, fak(M,X), N is N*Y.