% Query: sum(g,f)
p(plus(X,0),X).
p(plus(X,s(Y)),s(Z)):- p(plus(X,Y),Z).
p(plus(0,X),X).
p(plus(s(X),Y),s(Z)):- p(plus(X,Y),Z).
p(plus(plus(X,Y),Z),T):- p(plus(X,plus(Y,Z)),T).
sum(0,0).
sum(s(X),Y):- sum(X,Z), p(plus(Z,s(X)),Y).