?- struct("s/1"); plus(0, Y) :- Y; plus(s(X), Y) :- s(plus(X, Y)); mult(0, Y) :- 0; mult(s(X), Y) :- plus(Y, mult(X,Y)); fact(0) :- s(0); fact(s(X)) :- mult(s(X), fact(X)); calc(0) :- 0; calc(s(X)) :- 1+calc(X);