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: dimension: 1 interpretation: [n__take](x0, x1) = 4x0 + 4x1, [take](x0, x1) = 4x0 + 4x1, [s](x0) = x0, [length](x0) = x0, [nil] = 0, [activate](x0) = x0, [and](x0, x1) = 5x0 + 4x1, [tt] = 3, [cons](x0, x1) = 2x0 + x1, [n__zeros] = 0, [0] = 0, [zeros] = 0 orientation: zeros() = 0 >= 0 = cons(0(),n__zeros()) and(tt(),X) = 4X + 15 >= X = activate(X) length(nil()) = 0 >= 0 = 0() length(cons(N,L)) = L + 2N >= L = s(length(activate(L))) take(0(),IL) = 4IL >= 0 = nil() take(s(M),cons(N,IL)) = 4IL + 4M + 8N >= 4IL + 4M + 2N = cons(N,n__take(M,activate(IL))) zeros() = 0 >= 0 = n__zeros() take(X1,X2) = 4X1 + 4X2 >= 4X1 + 4X2 = n__take(X1,X2) activate(n__zeros()) = 0 >= 0 = zeros() activate(n__take(X1,X2)) = 4X1 + 4X2 >= 4X1 + 4X2 = take(X1,X2) activate(X) = X >= X = X problem: zeros() -> cons(0(),n__zeros()) 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 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