NO Problem 1: (VAR v_NonEmpty:S X:S Y:S Z:S) (RULES add(0,X:S) -> X:S add(s(X:S),Y:S) -> s(add(X:S,Y:S)) and(ffalse,Y:S) -> ffalse and(ttrue,X:S) -> X:S first(0,X:S) -> nil first(s(X:S),cons(Y:S,Z:S)) -> cons(Y:S,first(X:S,Z:S)) from(X:S) -> cons(X:S,from(s(X:S))) if(ffalse,X:S,Y:S) -> Y:S if(ttrue,X:S,Y:S) -> X:S ) Problem 1: Dependency Pairs Processor: -> Pairs: ADD(s(X:S),Y:S) -> ADD(X:S,Y:S) FIRST(s(X:S),cons(Y:S,Z:S)) -> FIRST(X:S,Z:S) FROM(X:S) -> FROM(s(X:S)) -> Rules: add(0,X:S) -> X:S add(s(X:S),Y:S) -> s(add(X:S,Y:S)) and(ffalse,Y:S) -> ffalse and(ttrue,X:S) -> X:S first(0,X:S) -> nil first(s(X:S),cons(Y:S,Z:S)) -> cons(Y:S,first(X:S,Z:S)) from(X:S) -> cons(X:S,from(s(X:S))) if(ffalse,X:S,Y:S) -> Y:S if(ttrue,X:S,Y:S) -> X:S Problem 1: Infinite Processor: -> Pairs: ADD(s(X:S),Y:S) -> ADD(X:S,Y:S) FIRST(s(X:S),cons(Y:S,Z:S)) -> FIRST(X:S,Z:S) FROM(X:S) -> FROM(s(X:S)) -> Rules: add(0,X:S) -> X:S add(s(X:S),Y:S) -> s(add(X:S,Y:S)) and(ffalse,Y:S) -> ffalse and(ttrue,X:S) -> X:S first(0,X:S) -> nil first(s(X:S),cons(Y:S,Z:S)) -> cons(Y:S,first(X:S,Z:S)) from(X:S) -> cons(X:S,from(s(X:S))) if(ffalse,X:S,Y:S) -> Y:S if(ttrue,X:S,Y:S) -> X:S -> Pairs in cycle: FROM(X:S) -> FROM(s(X:S)) The problem is infinite.