NO Problem 1: (VAR v_NonEmpty:S X:S X1:S X2:S Y:S) (RULES activate(n__prod(X1:S,X2:S)) -> prod(X1:S,X2:S) activate(n__s(X:S)) -> s(X:S) activate(X:S) -> X:S add(s(X:S),Y:S) -> s(add(X:S,Y:S)) add(0,X:S) -> X:S fact(X:S) -> if(zero(X:S),n__s(0),n__prod(X:S,fact(p(X:S)))) if(ffalse,X:S,Y:S) -> activate(Y:S) if(ttrue,X:S,Y:S) -> activate(X:S) p(s(X:S)) -> X:S prod(s(X:S),Y:S) -> add(Y:S,prod(X:S,Y:S)) prod(0,X:S) -> 0 prod(X1:S,X2:S) -> n__prod(X1:S,X2:S) s(X:S) -> n__s(X:S) zero(s(X:S)) -> ffalse zero(0) -> ttrue ) Problem 1: Dependency Pairs Processor: -> Pairs: ACTIVATE(n__prod(X1:S,X2:S)) -> PROD(X1:S,X2:S) ACTIVATE(n__s(X:S)) -> S(X:S) ADD(s(X:S),Y:S) -> ADD(X:S,Y:S) ADD(s(X:S),Y:S) -> S(add(X:S,Y:S)) FACT(X:S) -> FACT(p(X:S)) FACT(X:S) -> IF(zero(X:S),n__s(0),n__prod(X:S,fact(p(X:S)))) FACT(X:S) -> P(X:S) FACT(X:S) -> ZERO(X:S) IF(ffalse,X:S,Y:S) -> ACTIVATE(Y:S) IF(ttrue,X:S,Y:S) -> ACTIVATE(X:S) PROD(s(X:S),Y:S) -> ADD(Y:S,prod(X:S,Y:S)) PROD(s(X:S),Y:S) -> PROD(X:S,Y:S) -> Rules: activate(n__prod(X1:S,X2:S)) -> prod(X1:S,X2:S) activate(n__s(X:S)) -> s(X:S) activate(X:S) -> X:S add(s(X:S),Y:S) -> s(add(X:S,Y:S)) add(0,X:S) -> X:S fact(X:S) -> if(zero(X:S),n__s(0),n__prod(X:S,fact(p(X:S)))) if(ffalse,X:S,Y:S) -> activate(Y:S) if(ttrue,X:S,Y:S) -> activate(X:S) p(s(X:S)) -> X:S prod(s(X:S),Y:S) -> add(Y:S,prod(X:S,Y:S)) prod(0,X:S) -> 0 prod(X1:S,X2:S) -> n__prod(X1:S,X2:S) s(X:S) -> n__s(X:S) zero(s(X:S)) -> ffalse zero(0) -> ttrue Problem 1: Infinite Processor: -> Pairs: ACTIVATE(n__prod(X1:S,X2:S)) -> PROD(X1:S,X2:S) ACTIVATE(n__s(X:S)) -> S(X:S) ADD(s(X:S),Y:S) -> ADD(X:S,Y:S) ADD(s(X:S),Y:S) -> S(add(X:S,Y:S)) FACT(X:S) -> FACT(p(X:S)) FACT(X:S) -> IF(zero(X:S),n__s(0),n__prod(X:S,fact(p(X:S)))) FACT(X:S) -> P(X:S) FACT(X:S) -> ZERO(X:S) IF(ffalse,X:S,Y:S) -> ACTIVATE(Y:S) IF(ttrue,X:S,Y:S) -> ACTIVATE(X:S) PROD(s(X:S),Y:S) -> ADD(Y:S,prod(X:S,Y:S)) PROD(s(X:S),Y:S) -> PROD(X:S,Y:S) -> Rules: activate(n__prod(X1:S,X2:S)) -> prod(X1:S,X2:S) activate(n__s(X:S)) -> s(X:S) activate(X:S) -> X:S add(s(X:S),Y:S) -> s(add(X:S,Y:S)) add(0,X:S) -> X:S fact(X:S) -> if(zero(X:S),n__s(0),n__prod(X:S,fact(p(X:S)))) if(ffalse,X:S,Y:S) -> activate(Y:S) if(ttrue,X:S,Y:S) -> activate(X:S) p(s(X:S)) -> X:S prod(s(X:S),Y:S) -> add(Y:S,prod(X:S,Y:S)) prod(0,X:S) -> 0 prod(X1:S,X2:S) -> n__prod(X1:S,X2:S) s(X:S) -> n__s(X:S) zero(s(X:S)) -> ffalse zero(0) -> ttrue -> Pairs in cycle: FACT(X:S) -> FACT(p(X:S)) The problem is infinite.