Problem:
 if(true()) -> X
 if(false()) -> Y
 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))
 zero(0()) -> true()
 zero(s(X)) -> false()
 p(s(X)) -> X

Proof:
 Fresh Variable Processor: loop length: 1
                           terms:
                            if(true())
                           context: []
                           substitution:
                            X -> if(true())
  Qed