(VAR X Y)
(RULES 
fact(X) -> if(zero(X))
add(0,X) -> X
add(s(X),Y) -> s(add(X,Y))
prod(0,X) -> 0
prod(s(X),Y) -> add(Y,prod(X,Y))
if(true) -> X
if(false) -> Y
zero(0) -> true
zero(s(X)) -> false
p(s(X)) -> X
)