NO Problem: nats() -> cons(0(),n__incr(n__nats())) pairs() -> cons(0(),n__incr(n__odds())) odds() -> incr(pairs()) incr(cons(X,XS)) -> cons(s(X),n__incr(activate(XS))) head(cons(X,XS)) -> X tail(cons(X,XS)) -> activate(XS) incr(X) -> n__incr(X) nats() -> n__nats() odds() -> n__odds() activate(n__incr(X)) -> incr(activate(X)) activate(n__nats()) -> nats() activate(n__odds()) -> odds() activate(X) -> X Proof: Matrix Interpretation Processor: dim=1 interpretation: [cons](x0, x1) = x0 + x1, [incr](x0) = 4x0, [0] = 0, [n__incr](x0) = 4x0, [pairs] = 0, [activate](x0) = x0, [nats] = 0, [odds] = 0, [tail](x0) = 6x0 + 1, [head](x0) = x0 + 1, [s](x0) = 4x0, [n__odds] = 0, [n__nats] = 0 orientation: nats() = 0 >= 0 = cons(0(),n__incr(n__nats())) pairs() = 0 >= 0 = cons(0(),n__incr(n__odds())) odds() = 0 >= 0 = incr(pairs()) incr(cons(X,XS)) = 4X + 4XS >= 4X + 4XS = cons(s(X),n__incr(activate(XS))) head(cons(X,XS)) = X + XS + 1 >= X = X tail(cons(X,XS)) = 6X + 6XS + 1 >= XS = activate(XS) incr(X) = 4X >= 4X = n__incr(X) nats() = 0 >= 0 = n__nats() odds() = 0 >= 0 = n__odds() activate(n__incr(X)) = 4X >= 4X = incr(activate(X)) activate(n__nats()) = 0 >= 0 = nats() activate(n__odds()) = 0 >= 0 = odds() activate(X) = X >= X = X problem: nats() -> cons(0(),n__incr(n__nats())) pairs() -> cons(0(),n__incr(n__odds())) odds() -> incr(pairs()) incr(cons(X,XS)) -> cons(s(X),n__incr(activate(XS))) incr(X) -> n__incr(X) nats() -> n__nats() odds() -> n__odds() activate(n__incr(X)) -> incr(activate(X)) activate(n__nats()) -> nats() activate(n__odds()) -> odds() activate(X) -> X Unfolding Processor: loop length: 4 terms: incr(cons(X,n__incr(n__nats()))) cons(s(X),n__incr(activate(n__incr(n__nats())))) cons(s(X),n__incr(incr(activate(n__nats())))) cons(s(X),n__incr(incr(nats()))) context: cons(s(X),n__incr([])) substitution: X -> 0() Qed