We consider the following Problem: Strict Trs: { fst(0(), Z) -> nil() , fst(s(X), cons(Y, Z)) -> cons(Y, n__fst(activate(X), activate(Z))) , from(X) -> cons(X, n__from(n__s(X))) , add(0(), X) -> X , add(s(X), Y) -> s(n__add(activate(X), Y)) , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z))) , fst(X1, X2) -> n__fst(X1, X2) , from(X) -> n__from(X) , s(X) -> n__s(X) , add(X1, X2) -> n__add(X1, X2) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__s(X)) -> s(X) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(n__len(X)) -> len(activate(X)) , activate(X) -> X} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: Arguments of following rules are not normal-forms: { fst(s(X), cons(Y, Z)) -> cons(Y, n__fst(activate(X), activate(Z))) , add(s(X), Y) -> s(n__add(activate(X), Y))} All above mentioned rules can be savely removed. We consider the following Problem: Strict Trs: { fst(0(), Z) -> nil() , from(X) -> cons(X, n__from(n__s(X))) , add(0(), X) -> X , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z))) , fst(X1, X2) -> n__fst(X1, X2) , from(X) -> n__from(X) , s(X) -> n__s(X) , add(X1, X2) -> n__add(X1, X2) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__s(X)) -> s(X) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(n__len(X)) -> len(activate(X)) , activate(X) -> X} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: { fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [1] 0() = [0] [0] nil() = [0] [0] s(x1) = [1 0] x1 + [1] [0 0] [1] cons(x1, x2) = [1 1] x1 + [0 0] x2 + [1] [0 0] [1 1] [1] n__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] activate(x1) = [1 1] x1 + [0] [0 0] [1] from(x1) = [1 1] x1 + [0] [0 0] [1] n__from(x1) = [0 0] x1 + [0] [1 1] [0] n__s(x1) = [0 0] x1 + [0] [1 0] [0] add(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [1] n__add(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] len(x1) = [1 1] x1 + [1] [0 0] [1] n__len(x1) = [1 0] x1 + [0] [0 1] [0] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { from(X) -> cons(X, n__from(n__s(X))) , add(0(), X) -> X , fst(X1, X2) -> n__fst(X1, X2) , from(X) -> n__from(X) , s(X) -> n__s(X) , add(X1, X2) -> n__add(X1, X2) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__s(X)) -> s(X) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(n__len(X)) -> len(activate(X)) , activate(X) -> X} Weak Trs: { fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {activate(n__s(X)) -> s(X)} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [1] 0() = [0] [0] nil() = [0] [0] s(x1) = [1 0] x1 + [0] [0 0] [1] cons(x1, x2) = [1 1] x1 + [0 0] x2 + [1] [0 0] [1 1] [1] n__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] activate(x1) = [1 1] x1 + [1] [0 0] [1] from(x1) = [1 1] x1 + [1] [0 0] [1] n__from(x1) = [0 0] x1 + [0] [1 1] [0] n__s(x1) = [0 0] x1 + [0] [1 0] [0] add(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [1] n__add(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] len(x1) = [1 1] x1 + [1] [0 0] [1] n__len(x1) = [1 0] x1 + [0] [0 1] [0] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { from(X) -> cons(X, n__from(n__s(X))) , add(0(), X) -> X , fst(X1, X2) -> n__fst(X1, X2) , from(X) -> n__from(X) , s(X) -> n__s(X) , add(X1, X2) -> n__add(X1, X2) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(n__len(X)) -> len(activate(X)) , activate(X) -> X} Weak Trs: { activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {activate(n__len(X)) -> len(activate(X))} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [1] 0() = [0] [0] nil() = [0] [0] s(x1) = [1 0] x1 + [0] [0 0] [1] cons(x1, x2) = [1 1] x1 + [0 0] x2 + [1] [0 0] [1 1] [1] n__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] activate(x1) = [1 1] x1 + [1] [0 0] [1] from(x1) = [1 1] x1 + [1] [0 0] [1] n__from(x1) = [0 0] x1 + [0] [1 1] [0] n__s(x1) = [0 0] x1 + [0] [1 0] [0] add(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [1] n__add(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] len(x1) = [1 1] x1 + [0] [0 0] [1] n__len(x1) = [1 0] x1 + [0] [0 1] [2] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { from(X) -> cons(X, n__from(n__s(X))) , add(0(), X) -> X , fst(X1, X2) -> n__fst(X1, X2) , from(X) -> n__from(X) , s(X) -> n__s(X) , add(X1, X2) -> n__add(X1, X2) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(X) -> X} Weak Trs: { activate(n__len(X)) -> len(activate(X)) , activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {add(0(), X) -> X} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 1] [0 0] [0] 0() = [0] [0] nil() = [0] [0] s(x1) = [1 0] x1 + [0] [0 0] [1] cons(x1, x2) = [1 1] x1 + [0 0] x2 + [1] [0 0] [1 1] [1] n__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] activate(x1) = [1 1] x1 + [1] [0 0] [1] from(x1) = [1 1] x1 + [1] [0 0] [1] n__from(x1) = [0 0] x1 + [0] [1 1] [0] n__s(x1) = [0 0] x1 + [0] [1 0] [0] add(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 1] [1] n__add(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] len(x1) = [1 1] x1 + [1] [0 0] [1] n__len(x1) = [1 0] x1 + [0] [0 1] [2] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { from(X) -> cons(X, n__from(n__s(X))) , fst(X1, X2) -> n__fst(X1, X2) , from(X) -> n__from(X) , s(X) -> n__s(X) , add(X1, X2) -> n__add(X1, X2) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(X) -> X} Weak Trs: { add(0(), X) -> X , activate(n__len(X)) -> len(activate(X)) , activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {fst(X1, X2) -> n__fst(X1, X2)} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 1] [0 1] [1] 0() = [0] [0] nil() = [0] [0] s(x1) = [1 0] x1 + [0] [0 0] [0] cons(x1, x2) = [1 1] x1 + [0 0] x2 + [1] [0 0] [1 1] [1] n__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] activate(x1) = [1 1] x1 + [1] [0 0] [0] from(x1) = [1 1] x1 + [0] [0 0] [1] n__from(x1) = [0 0] x1 + [0] [1 1] [0] n__s(x1) = [0 0] x1 + [0] [1 0] [0] add(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 1] [1] n__add(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] len(x1) = [1 1] x1 + [0] [0 0] [0] n__len(x1) = [1 0] x1 + [0] [0 1] [0] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { from(X) -> cons(X, n__from(n__s(X))) , from(X) -> n__from(X) , s(X) -> n__s(X) , add(X1, X2) -> n__add(X1, X2) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(X) -> X} Weak Trs: { fst(X1, X2) -> n__fst(X1, X2) , add(0(), X) -> X , activate(n__len(X)) -> len(activate(X)) , activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {add(X1, X2) -> n__add(X1, X2)} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 1] [0 1] [1] 0() = [0] [0] nil() = [0] [0] s(x1) = [1 0] x1 + [0] [0 0] [0] cons(x1, x2) = [1 1] x1 + [0 0] x2 + [1] [0 0] [1 1] [1] n__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] activate(x1) = [1 1] x1 + [1] [0 0] [0] from(x1) = [1 1] x1 + [3] [0 0] [1] n__from(x1) = [0 0] x1 + [0] [1 1] [0] n__s(x1) = [0 0] x1 + [0] [1 0] [0] add(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 1] [0 1] [1] n__add(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] len(x1) = [1 1] x1 + [0] [0 0] [0] n__len(x1) = [1 0] x1 + [0] [0 1] [0] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { from(X) -> cons(X, n__from(n__s(X))) , from(X) -> n__from(X) , s(X) -> n__s(X) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(X) -> X} Weak Trs: { add(X1, X2) -> n__add(X1, X2) , fst(X1, X2) -> n__fst(X1, X2) , add(0(), X) -> X , activate(n__len(X)) -> len(activate(X)) , activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {from(X) -> n__from(X)} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [0] 0() = [1] [0] nil() = [2] [0] s(x1) = [1 0] x1 + [0] [1 0] [0] cons(x1, x2) = [0 0] x1 + [1 0] x2 + [1] [1 1] [1 1] [1] n__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 0] [0] activate(x1) = [1 0] x1 + [0] [1 1] [0] from(x1) = [1 0] x1 + [1] [0 0] [1] n__from(x1) = [1 0] x1 + [0] [0 0] [0] n__s(x1) = [1 0] x1 + [0] [0 0] [0] add(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 1] [0] n__add(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] len(x1) = [1 0] x1 + [0] [1 0] [0] n__len(x1) = [1 0] x1 + [1] [0 0] [3] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { from(X) -> cons(X, n__from(n__s(X))) , s(X) -> n__s(X) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(X) -> X} Weak Trs: { from(X) -> n__from(X) , add(X1, X2) -> n__add(X1, X2) , fst(X1, X2) -> n__fst(X1, X2) , add(0(), X) -> X , activate(n__len(X)) -> len(activate(X)) , activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {from(X) -> cons(X, n__from(n__s(X)))} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 0] x2 + [3] [0 1] [0 0] [1] 0() = [1] [0] nil() = [0] [0] s(x1) = [1 0] x1 + [0] [0 0] [0] cons(x1, x2) = [0 0] x1 + [1 0] x2 + [1] [0 1] [0 0] [1] n__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] activate(x1) = [1 0] x1 + [1] [0 0] [1] from(x1) = [1 0] x1 + [2] [0 1] [3] n__from(x1) = [1 0] x1 + [0] [0 0] [0] n__s(x1) = [1 0] x1 + [0] [0 0] [0] add(x1, x2) = [1 0] x1 + [1 0] x2 + [3] [0 0] [0 1] [1] n__add(x1, x2) = [1 0] x1 + [1 0] x2 + [3] [0 0] [0 0] [0] len(x1) = [1 0] x1 + [1] [0 0] [0] n__len(x1) = [1 0] x1 + [1] [0 0] [0] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { s(X) -> n__s(X) , len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(X) -> X} Weak Trs: { from(X) -> cons(X, n__from(n__s(X))) , from(X) -> n__from(X) , add(X1, X2) -> n__add(X1, X2) , fst(X1, X2) -> n__fst(X1, X2) , add(0(), X) -> X , activate(n__len(X)) -> len(activate(X)) , activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {s(X) -> n__s(X)} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 1] x2 + [0] [0 1] [0 0] [0] 0() = [0] [0] nil() = [0] [0] s(x1) = [1 2] x1 + [1] [0 0] [1] cons(x1, x2) = [0 0] x1 + [1 0] x2 + [0] [0 0] [0 1] [3] n__fst(x1, x2) = [1 0] x1 + [1 1] x2 + [0] [0 1] [0 0] [0] activate(x1) = [1 1] x1 + [0] [0 0] [1] from(x1) = [1 2] x1 + [2] [0 0] [3] n__from(x1) = [1 1] x1 + [0] [0 0] [0] n__s(x1) = [1 2] x1 + [0] [0 0] [1] add(x1, x2) = [1 1] x1 + [1 0] x2 + [0] [0 0] [0 1] [0] n__add(x1, x2) = [1 1] x1 + [1 0] x2 + [0] [0 0] [0 1] [0] len(x1) = [1 2] x1 + [0] [0 0] [1] n__len(x1) = [1 0] x1 + [2] [0 1] [0] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) , activate(X) -> X} Weak Trs: { s(X) -> n__s(X) , from(X) -> cons(X, n__from(n__s(X))) , from(X) -> n__from(X) , add(X1, X2) -> n__add(X1, X2) , fst(X1, X2) -> n__fst(X1, X2) , add(0(), X) -> X , activate(n__len(X)) -> len(activate(X)) , activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {activate(X) -> X} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] 0() = [0] [0] nil() = [0] [0] s(x1) = [1 0] x1 + [0] [0 0] [0] cons(x1, x2) = [0 0] x1 + [1 0] x2 + [1] [0 0] [0 1] [0] n__fst(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] activate(x1) = [1 0] x1 + [1] [0 1] [0] from(x1) = [1 0] x1 + [2] [0 0] [0] n__from(x1) = [1 0] x1 + [0] [0 0] [0] n__s(x1) = [1 0] x1 + [0] [0 0] [0] add(x1, x2) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 1] [0] n__add(x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] len(x1) = [1 0] x1 + [0] [0 0] [0] n__len(x1) = [1 0] x1 + [0] [0 0] [0] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2))} Weak Trs: { activate(X) -> X , s(X) -> n__s(X) , from(X) -> cons(X, n__from(n__s(X))) , from(X) -> n__from(X) , add(X1, X2) -> n__add(X1, X2) , fst(X1, X2) -> n__fst(X1, X2) , add(0(), X) -> X , activate(n__len(X)) -> len(activate(X)) , activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: We consider the following Problem: Strict Trs: { len(X) -> n__len(X) , activate(n__fst(X1, X2)) -> fst(activate(X1), activate(X2)) , activate(n__from(X)) -> from(activate(X)) , activate(n__add(X1, X2)) -> add(activate(X1), activate(X2))} Weak Trs: { activate(X) -> X , s(X) -> n__s(X) , from(X) -> cons(X, n__from(n__s(X))) , from(X) -> n__from(X) , add(X1, X2) -> n__add(X1, X2) , fst(X1, X2) -> n__fst(X1, X2) , add(0(), X) -> X , activate(n__len(X)) -> len(activate(X)) , activate(n__s(X)) -> s(X) , fst(0(), Z) -> nil() , len(nil()) -> 0() , len(cons(X, Z)) -> s(n__len(activate(Z)))} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The following argument positions are usable: Uargs(fst) = {1, 2}, Uargs(s) = {1}, Uargs(cons) = {}, Uargs(n__fst) = {}, Uargs(activate) = {}, Uargs(from) = {1}, Uargs(n__from) = {}, Uargs(n__s) = {}, Uargs(add) = {1, 2}, Uargs(n__add) = {}, Uargs(len) = {1}, Uargs(n__len) = {1} We have the following constructor-based EDA-non-satisfying and IDA(2)-non-satisfying matrix interpretation: Interpretation Functions: fst(x1, x2) = [1 0 0] x1 + [1 0 0] x2 + [1] [0 1 0] [0 1 0] [2] [0 0 1] [0 1 1] [0] 0() = [0] [0] [0] nil() = [0] [0] [0] s(x1) = [1 0 0] x1 + [0] [0 0 0] [0] [0 0 0] [0] cons(x1, x2) = [0 0 0] x1 + [1 1 2] x2 + [0] [0 1 0] [0 1 0] [0] [0 0 1] [0 0 0] [0] n__fst(x1, x2) = [1 0 0] x1 + [1 0 0] x2 + [0] [0 1 0] [0 1 0] [2] [0 0 1] [0 1 1] [0] activate(x1) = [1 2 2] x1 + [0] [0 1 0] [0] [0 0 1] [0] from(x1) = [1 0 0] x1 + [1] [0 1 0] [1] [0 0 1] [0] n__from(x1) = [1 0 0] x1 + [0] [0 1 0] [1] [0 0 1] [0] n__s(x1) = [1 0 0] x1 + [0] [0 0 0] [0] [0 0 0] [0] add(x1, x2) = [1 0 0] x1 + [1 0 0] x2 + [1] [0 0 0] [0 1 0] [1] [0 1 1] [0 0 1] [1] n__add(x1, x2) = [1 0 0] x1 + [1 0 0] x2 + [0] [0 0 0] [0 1 0] [1] [0 1 1] [0 0 1] [1] len(x1) = [1 1 0] x1 + [2] [0 1 0] [0] [0 1 1] [2] n__len(x1) = [1 0 0] x1 + [0] [0 1 0] [0] [0 1 1] [2] Hurray, we answered YES(?,O(n^2))