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