NO Problem: zeros() -> cons(0(),n__zeros()) and(tt(),X) -> activate(X) length(nil()) -> 0() length(cons(N,L)) -> s(length(activate(L))) take(0(),IL) -> nil() take(s(M),cons(N,IL)) -> cons(N,n__take(M,activate(IL))) zeros() -> n__zeros() take(X1,X2) -> n__take(X1,X2) activate(n__zeros()) -> zeros() activate(n__take(X1,X2)) -> take(X1,X2) activate(X) -> X Proof: Matrix Interpretation Processor: dim=1 interpretation: [tt] = 3, [length](x0) = x0 + 7, [0] = 0, [cons](x0, x1) = x0 + 4x1 + 5, [and](x0, x1) = 3x0 + 4x1, [take](x0, x1) = 4x0 + 4x1 + 5, [zeros] = 5, [nil] = 4, [n__take](x0, x1) = x0 + x1, [s](x0) = x0, [activate](x0) = 4x0 + 5, [n__zeros] = 0 orientation: zeros() = 5 >= 5 = cons(0(),n__zeros()) and(tt(),X) = 4X + 9 >= 4X + 5 = activate(X) length(nil()) = 11 >= 0 = 0() length(cons(N,L)) = 4L + N + 12 >= 4L + 12 = s(length(activate(L))) take(0(),IL) = 4IL + 5 >= 4 = nil() take(s(M),cons(N,IL)) = 16IL + 4M + 4N + 25 >= 16IL + 4M + N + 25 = cons(N,n__take(M,activate(IL))) zeros() = 5 >= 0 = n__zeros() take(X1,X2) = 4X1 + 4X2 + 5 >= X1 + X2 = n__take(X1,X2) activate(n__zeros()) = 5 >= 5 = zeros() activate(n__take(X1,X2)) = 4X1 + 4X2 + 5 >= 4X1 + 4X2 + 5 = take(X1,X2) activate(X) = 4X + 5 >= X = X problem: zeros() -> cons(0(),n__zeros()) length(cons(N,L)) -> s(length(activate(L))) take(s(M),cons(N,IL)) -> cons(N,n__take(M,activate(IL))) activate(n__zeros()) -> zeros() activate(n__take(X1,X2)) -> take(X1,X2) Unfolding Processor: loop length: 3 terms: length(cons(N,n__zeros())) s(length(activate(n__zeros()))) s(length(zeros())) context: s([]) substitution: N -> 0() Qed