(VAR X Y) (RULES +(X,0) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) f(0,s(0),X) -> f(X,double(X),X) g(X,Y) -> X g(X,Y) -> Y )