We consider the following Problem: Strict Trs: { a__fst(0(), Z) -> nil() , a__fst(s(X), cons(Y, Z)) -> cons(mark(Y), fst(X, Z)) , a__from(X) -> cons(mark(X), from(s(X))) , a__add(0(), X) -> mark(X) , a__add(s(X), Y) -> s(add(X, Y)) , a__len(nil()) -> 0() , a__len(cons(X, Z)) -> s(len(Z)) , mark(fst(X1, X2)) -> a__fst(mark(X1), mark(X2)) , mark(from(X)) -> a__from(mark(X)) , mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) , mark(len(X)) -> a__len(mark(X)) , mark(0()) -> 0() , mark(s(X)) -> s(X) , mark(nil()) -> nil() , mark(cons(X1, X2)) -> cons(mark(X1), X2) , a__fst(X1, X2) -> fst(X1, X2) , a__from(X) -> from(X) , a__add(X1, X2) -> add(X1, X2) , a__len(X) -> len(X)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: We consider the following Problem: Strict Trs: { a__fst(0(), Z) -> nil() , a__fst(s(X), cons(Y, Z)) -> cons(mark(Y), fst(X, Z)) , a__from(X) -> cons(mark(X), from(s(X))) , a__add(0(), X) -> mark(X) , a__add(s(X), Y) -> s(add(X, Y)) , a__len(nil()) -> 0() , a__len(cons(X, Z)) -> s(len(Z)) , mark(fst(X1, X2)) -> a__fst(mark(X1), mark(X2)) , mark(from(X)) -> a__from(mark(X)) , mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) , mark(len(X)) -> a__len(mark(X)) , mark(0()) -> 0() , mark(s(X)) -> s(X) , mark(nil()) -> nil() , mark(cons(X1, X2)) -> cons(mark(X1), X2) , a__fst(X1, X2) -> fst(X1, X2) , a__from(X) -> from(X) , a__add(X1, X2) -> add(X1, X2) , a__len(X) -> len(X)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: { a__fst(0(), Z) -> nil() , a__fst(s(X), cons(Y, Z)) -> cons(mark(Y), fst(X, Z)) , a__from(X) -> cons(mark(X), from(s(X))) , a__add(0(), X) -> mark(X) , a__add(s(X), Y) -> s(add(X, Y)) , a__len(nil()) -> 0() , a__len(cons(X, Z)) -> s(len(Z)) , a__fst(X1, X2) -> fst(X1, X2) , a__from(X) -> from(X) , a__add(X1, X2) -> add(X1, X2) , a__len(X) -> len(X)} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(a__fst) = {1, 2}, Uargs(s) = {}, Uargs(cons) = {1}, Uargs(mark) = {}, Uargs(fst) = {}, Uargs(a__from) = {1}, Uargs(from) = {}, Uargs(a__add) = {1, 2}, Uargs(add) = {}, Uargs(a__len) = {1}, Uargs(len) = {} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: a__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [1] 0() = [0] [0] nil() = [0] [0] s(x1) = [0 0] x1 + [0] [0 0] [1] cons(x1, x2) = [1 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [1] mark(x1) = [0 0] x1 + [0] [0 0] [1] fst(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [0] a__from(x1) = [1 0] x1 + [1] [0 0] [1] from(x1) = [0 0] x1 + [0] [0 0] [0] a__add(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [1] add(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [0] a__len(x1) = [1 0] x1 + [1] [0 0] [1] len(x1) = [0 0] x1 + [0] [0 0] [0] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { mark(fst(X1, X2)) -> a__fst(mark(X1), mark(X2)) , mark(from(X)) -> a__from(mark(X)) , mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) , mark(le