WORST_CASE(?,O(n^3)) * Step 1: NaturalPI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(X,nil()) -> X __(X1,X2) -> n____(X1,X2) __(__(X,Y),Z) -> __(X,__(Y,Z)) __(nil(),X) -> X a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isList(X)) -> isList(X) activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() and(tt(),X) -> activate(X) e() -> n__e() i() -> n__i() isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(V) -> isQid(activate(V)) isNeList(X) -> n__isNeList(X) isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) -> isNePal(activate(V)) isPal(X) -> n__isPal(X) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__e()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() nil() -> n__nil() o() -> n__o() u() -> n__u() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalPI {shape = Linear, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a polynomial interpretation of kind constructor-based(linear): The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = 1 + x1 + x2 p(a) = 1 p(activate) = x1 p(and) = 1 + x1 + x2 p(e) = 0 p(i) = 0 p(isList) = x1 p(isNeList) = x1 p(isNePal) = x1 p(isPal) = x1 p(isQid) = x1 p(n____) = 1 + x1 + x2 p(n__a) = 1 p(n__e) = 0 p(n__i) = 0 p(n__isList) = x1 p(n__isNeList) = x1 p(n__isPal) = x1 p(n__nil) = 7 p(n__o) = 0 p(n__u) = 0 p(nil) = 7 p(o) = 0 p(tt) = 0 p(u) = 0 Following rules are strictly oriented: __(X,nil()) = 8 + X > X = X __(nil(),X) = 8 + X > X = X and(tt(),X) = 1 + X > X = activate(X) isList(n__nil()) = 7 > 0 = tt() isNePal(n____(I,__(P,I))) = 2 + 2*I + P > 1 + I + P = and(isQid(activate(I)),n__isPal(activate(P))) isPal(n__nil()) = 7 > 0 = tt() isQid(n__a()) = 1 > 0 = tt() Following rules are (at-least) weakly oriented: __(X1,X2) = 1 + X1 + X2 >= 1 + X1 + X2 = n____(X1,X2) __(__(X,Y),Z) = 2 + X + Y + Z >= 2 + X + Y + Z = __(X,__(Y,Z)) a() = 1 >= 1 = n__a() activate(X) = X >= X = X activate(n____(X1,X2)) = 1 + X1 + X2 >= 1 + X1 + X2 = __(X1,X2) activate(n__a()) = 1 >= 1 = a() activate(n__e()) = 0 >= 0 = e() activate(n__i()) = 0 >= 0 = i() activate(n__isList(X)) = X >= X = isList(X) activate(n__isNeList(X)) = X >= X = isNeList(X) activate(n__isPal(X)) = X >= X = isPal(X) activate(n__nil()) = 7 >= 7 = nil() activate(n__o()) = 0 >= 0 = o() activate(n__u()) = 0 >= 0 = u() e() = 0 >= 0 = n__e() i() = 0 >= 0 = n__i() isList(V) = V >= V = isNeList(activate(V)) isList(X) = X >= X = n__isList(X) isList(n____(V1,V2)) = 1 + V1 + V2 >= 1 + V1 + V2 = and(isList(activate(V1)),n__isList(activate(V2))) isNeList(V) = V >= V = isQid(activate(V)) isNeList(X) = X >= X = n__isNeList(X) isNeList(n____(V1,V2)) = 1 + V1 + V2 >= 1 + V1 + V2 = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = 1 + V1 + V2 >= 1 + V1 + V2 = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = V >= V = isQid(activate(V)) isPal(V) = V >= V = isNePal(activate(V)) isPal(X) = X >= X = n__isPal(X) isQid(n__e()) = 0 >= 0 = tt() isQid(n__i()) = 0 >= 0 = tt() isQid(n__o()) = 0 >= 0 = tt() isQid(n__u()) = 0 >= 0 = tt() nil() = 7 >= 7 = n__nil() o() = 0 >= 0 = n__o() u() = 0 >= 0 = n__u() * Step 2: NaturalPI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(X1,X2) -> n____(X1,X2) __(__(X,Y),Z) -> __(X,__(Y,Z)) a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isList(X)) -> isList(X) activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() e() -> n__e() i() -> n__i() isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isNeList(V) -> isQid(activate(V)) isNeList(X) -> n__isNeList(X) isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isPal(V) -> isNePal(activate(V)) isPal(X) -> n__isPal(X) isQid(n__e()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() nil() -> n__nil() o() -> n__o() u() -> n__u() - Weak TRS: __(X,nil()) -> X __(nil(),X) -> X and(tt(),X) -> activate(X) isList(n__nil()) -> tt() isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalPI {shape = Linear, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a polynomial interpretation of kind constructor-based(linear): The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = 1 + x1 + x2 p(a) = 0 p(activate) = x1 p(and) = x1 + x2 p(e) = 0 p(i) = 6 p(isList) = x1 p(isNeList) = x1 p(isNePal) = 2 + x1 p(isPal) = 2 + x1 p(isQid) = x1 p(n____) = 1 + x1 + x2 p(n__a) = 0 p(n__e) = 0 p(n__i) = 6 p(n__isList) = x1 p(n__isNeList) = x1 p(n__isPal) = 2 + x1 p(n__nil) = 0 p(n__o) = 0 p(n__u) = 2 p(nil) = 0 p(o) = 0 p(tt) = 0 p(u) = 2 Following rules are strictly oriented: isList(n____(V1,V2)) = 1 + V1 + V2 > V1 + V2 = and(isList(activate(V1)),n__isList(activate(V2))) isNeList(n____(V1,V2)) = 1 + V1 + V2 > V1 + V2 = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = 1 + V1 + V2 > V1 + V2 = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = 2 + V > V = isQid(activate(V)) isQid(n__i()) = 6 > 0 = tt() isQid(n__u()) = 2 > 0 = tt() Following rules are (at-least) weakly oriented: __(X,nil()) = 1 + X >= X = X __(X1,X2) = 1 + X1 + X2 >= 1 + X1 + X2 = n____(X1,X2) __(__(X,Y),Z) = 2 + X + Y + Z >= 2 + X + Y + Z = __(X,__(Y,Z)) __(nil(),X) = 1 + X >= X = X a() = 0 >= 0 = n__a() activate(X) = X >= X = X activate(n____(X1,X2)) = 1 + X1 + X2 >= 1 + X1 + X2 = __(X1,X2) activate(n__a()) = 0 >= 0 = a() activate(n__e()) = 0 >= 0 = e() activate(n__i()) = 6 >= 6 = i() activate(n__isList(X)) = X >= X = isList(X) activate(n__isNeList(X)) = X >= X = isNeList(X) activate(n__isPal(X)) = 2 + X >= 2 + X = isPal(X) activate(n__nil()) = 0 >= 0 = nil() activate(n__o()) = 0 >= 0 = o() activate(n__u()) = 2 >= 2 = u() and(tt(),X) = X >= X = activate(X) e() = 0 >= 0 = n__e() i() = 6 >= 6 = n__i() isList(V) = V >= V = isNeList(activate(V)) isList(X) = X >= X = n__isList(X) isList(n__nil()) = 0 >= 0 = tt() isNeList(V) = V >= V = isQid(activate(V)) isNeList(X) = X >= X = n__isNeList(X) isNePal(n____(I,__(P,I))) = 4 + 2*I + P >= 2 + I + P = and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) = 2 + V >= 2 + V = isNePal(activate(V)) isPal(X) = 2 + X >= 2 + X = n__isPal(X) isPal(n__nil()) = 2 >= 0 = tt() isQid(n__a()) = 0 >= 0 = tt() isQid(n__e()) = 0 >= 0 = tt() isQid(n__o()) = 0 >= 0 = tt() nil() = 0 >= 0 = n__nil() o() = 0 >= 0 = n__o() u() = 2 >= 2 = n__u() * Step 3: NaturalPI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(X1,X2) -> n____(X1,X2) __(__(X,Y),Z) -> __(X,__(Y,Z)) a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isList(X)) -> isList(X) activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() e() -> n__e() i() -> n__i() isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isNeList(V) -> isQid(activate(V)) isNeList(X) -> n__isNeList(X) isPal(V) -> isNePal(activate(V)) isPal(X) -> n__isPal(X) isQid(n__e()) -> tt() isQid(n__o()) -> tt() nil() -> n__nil() o() -> n__o() u() -> n__u() - Weak TRS: __(X,nil()) -> X __(nil(),X) -> X and(tt(),X) -> activate(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__i()) -> tt() isQid(n__u()) -> tt() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalPI {shape = Linear, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a polynomial interpretation of kind constructor-based(linear): The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = x1 + x2 p(a) = 1 p(activate) = x1 p(and) = x1 + x2 p(e) = 0 p(i) = 1 p(isList) = x1 p(isNeList) = x1 p(isNePal) = 1 + x1 p(isPal) = 1 + x1 p(isQid) = x1 p(n____) = x1 + x2 p(n__a) = 1 p(n__e) = 0 p(n__i) = 1 p(n__isList) = x1 p(n__isNeList) = x1 p(n__isPal) = 1 + x1 p(n__nil) = 0 p(n__o) = 3 p(n__u) = 4 p(nil) = 0 p(o) = 3 p(tt) = 0 p(u) = 4 Following rules are strictly oriented: isQid(n__o()) = 3 > 0 = tt() Following rules are (at-least) weakly oriented: __(X,nil()) = X >= X = X __(X1,X2) = X1 + X2 >= X1 + X2 = n____(X1,X2) __(__(X,Y),Z) = X + Y + Z >= X + Y + Z = __(X,__(Y,Z)) __(nil(),X) = X >= X = X a() = 1 >= 1 = n__a() activate(X) = X >= X = X activate(n____(X1,X2)) = X1 + X2 >= X1 + X2 = __(X1,X2) activate(n__a()) = 1 >= 1 = a() activate(n__e()) = 0 >= 0 = e() activate(n__i()) = 1 >= 1 = i() activate(n__isList(X)) = X >= X = isList(X) activate(n__isNeList(X)) = X >= X = isNeList(X) activate(n__isPal(X)) = 1 + X >= 1 + X = isPal(X) activate(n__nil()) = 0 >= 0 = nil() activate(n__o()) = 3 >= 3 = o() activate(n__u()) = 4 >= 4 = u() and(tt(),X) = X >= X = activate(X) e() = 0 >= 0 = n__e() i() = 1 >= 1 = n__i() isList(V) = V >= V = isNeList(activate(V)) isList(X) = X >= X = n__isList(X) isList(n____(V1,V2)) = V1 + V2 >= V1 + V2 = and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) = 0 >= 0 = tt() isNeList(V) = V >= V = isQid(activate(V)) isNeList(X) = X >= X = n__isNeList(X) isNeList(n____(V1,V2)) = V1 + V2 >= V1 + V2 = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = V1 + V2 >= V1 + V2 = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = 1 + V >= V = isQid(activate(V)) isNePal(n____(I,__(P,I))) = 1 + 2*I + P >= 1 + I + P = and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) = 1 + V >= 1 + V = isNePal(activate(V)) isPal(X) = 1 + X >= 1 + X = n__isPal(X) isPal(n__nil()) = 1 >= 0 = tt() isQid(n__a()) = 1 >= 0 = tt() isQid(n__e()) = 0 >= 0 = tt() isQid(n__i()) = 1 >= 0 = tt() isQid(n__u()) = 4 >= 0 = tt() nil() = 0 >= 0 = n__nil() o() = 3 >= 3 = n__o() u() = 4 >= 4 = n__u() * Step 4: NaturalPI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(X1,X2) -> n____(X1,X2) __(__(X,Y),Z) -> __(X,__(Y,Z)) a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isList(X)) -> isList(X) activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() e() -> n__e() i() -> n__i() isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isNeList(V) -> isQid(activate(V)) isNeList(X) -> n__isNeList(X) isPal(V) -> isNePal(activate(V)) isPal(X) -> n__isPal(X) isQid(n__e()) -> tt() nil() -> n__nil() o() -> n__o() u() -> n__u() - Weak TRS: __(X,nil()) -> X __(nil(),X) -> X and(tt(),X) -> activate(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalPI {shape = Linear, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a polynomial interpretation of kind constructor-based(linear): The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = 1 + x1 + x2 p(a) = 0 p(activate) = x1 p(and) = x1 + x2 p(e) = 2 p(i) = 2 p(isList) = 1 + x1 p(isNeList) = 1 + x1 p(isNePal) = x1 p(isPal) = 1 + x1 p(isQid) = x1 p(n____) = 1 + x1 + x2 p(n__a) = 0 p(n__e) = 2 p(n__i) = 2 p(n__isList) = 1 + x1 p(n__isNeList) = 1 + x1 p(n__isPal) = 1 + x1 p(n__nil) = 3 p(n__o) = 1 p(n__u) = 1 p(nil) = 3 p(o) = 1 p(tt) = 0 p(u) = 1 Following rules are strictly oriented: isNeList(V) = 1 + V > V = isQid(activate(V)) isPal(V) = 1 + V > V = isNePal(activate(V)) isQid(n__e()) = 2 > 0 = tt() Following rules are (at-least) weakly oriented: __(X,nil()) = 4 + X >= X = X __(X1,X2) = 1 + X1 + X2 >= 1 + X1 + X2 = n____(X1,X2) __(__(X,Y),Z) = 2 + X + Y + Z >= 2 + X + Y + Z = __(X,__(Y,Z)) __(nil(),X) = 4 + X >= X = X a() = 0 >= 0 = n__a() activate(X) = X >= X = X activate(n____(X1,X2)) = 1 + X1 + X2 >= 1 + X1 + X2 = __(X1,X2) activate(n__a()) = 0 >= 0 = a() activate(n__e()) = 2 >= 2 = e() activate(n__i()) = 2 >= 2 = i() activate(n__isList(X)) = 1 + X >= 1 + X = isList(X) activate(n__isNeList(X)) = 1 + X >= 1 + X = isNeList(X) activate(n__isPal(X)) = 1 + X >= 1 + X = isPal(X) activate(n__nil()) = 3 >= 3 = nil() activate(n__o()) = 1 >= 1 = o() activate(n__u()) = 1 >= 1 = u() and(tt(),X) = X >= X = activate(X) e() = 2 >= 2 = n__e() i() = 2 >= 2 = n__i() isList(V) = 1 + V >= 1 + V = isNeList(activate(V)) isList(X) = 1 + X >= 1 + X = n__isList(X) isList(n____(V1,V2)) = 2 + V1 + V2 >= 2 + V1 + V2 = and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) = 4 >= 0 = tt() isNeList(X) = 1 + X >= 1 + X = n__isNeList(X) isNeList(n____(V1,V2)) = 2 + V1 + V2 >= 2 + V1 + V2 = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = 2 + V1 + V2 >= 2 + V1 + V2 = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = V >= V = isQid(activate(V)) isNePal(n____(I,__(P,I))) = 2 + 2*I + P >= 1 + I + P = and(isQid(activate(I)),n__isPal(activate(P))) isPal(X) = 1 + X >= 1 + X = n__isPal(X) isPal(n__nil()) = 4 >= 0 = tt() isQid(n__a()) = 0 >= 0 = tt() isQid(n__i()) = 2 >= 0 = tt() isQid(n__o()) = 1 >= 0 = tt() isQid(n__u()) = 1 >= 0 = tt() nil() = 3 >= 3 = n__nil() o() = 1 >= 1 = n__o() u() = 1 >= 1 = n__u() * Step 5: NaturalPI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(X1,X2) -> n____(X1,X2) __(__(X,Y),Z) -> __(X,__(Y,Z)) a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isList(X)) -> isList(X) activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() e() -> n__e() i() -> n__i() isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isNeList(X) -> n__isNeList(X) isPal(X) -> n__isPal(X) nil() -> n__nil() o() -> n__o() u() -> n__u() - Weak TRS: __(X,nil()) -> X __(nil(),X) -> X and(tt(),X) -> activate(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(V) -> isQid(activate(V)) isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) -> isNePal(activate(V)) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__e()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalPI {shape = Linear, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a polynomial interpretation of kind constructor-based(linear): The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = 3 + x1 + x2 p(a) = 1 p(activate) = x1 p(and) = x1 + x2 p(e) = 0 p(i) = 5 p(isList) = 2 + x1 p(isNeList) = x1 p(isNePal) = x1 p(isPal) = x1 p(isQid) = x1 p(n____) = 3 + x1 + x2 p(n__a) = 1 p(n__e) = 0 p(n__i) = 5 p(n__isList) = 2 + x1 p(n__isNeList) = x1 p(n__isPal) = x1 p(n__nil) = 1 p(n__o) = 0 p(n__u) = 2 p(nil) = 1 p(o) = 0 p(tt) = 0 p(u) = 2 Following rules are strictly oriented: isList(V) = 2 + V > V = isNeList(activate(V)) Following rules are (at-least) weakly oriented: __(X,nil()) = 4 + X >= X = X __(X1,X2) = 3 + X1 + X2 >= 3 + X1 + X2 = n____(X1,X2) __(__(X,Y),Z) = 6 + X + Y + Z >= 6 + X + Y + Z = __(X,__(Y,Z)) __(nil(),X) = 4 + X >= X = X a() = 1 >= 1 = n__a() activate(X) = X >= X = X activate(n____(X1,X2)) = 3 + X1 + X2 >= 3 + X1 + X2 = __(X1,X2) activate(n__a()) = 1 >= 1 = a() activate(n__e()) = 0 >= 0 = e() activate(n__i()) = 5 >= 5 = i() activate(n__isList(X)) = 2 + X >= 2 + X = isList(X) activate(n__isNeList(X)) = X >= X = isNeList(X) activate(n__isPal(X)) = X >= X = isPal(X) activate(n__nil()) = 1 >= 1 = nil() activate(n__o()) = 0 >= 0 = o() activate(n__u()) = 2 >= 2 = u() and(tt(),X) = X >= X = activate(X) e() = 0 >= 0 = n__e() i() = 5 >= 5 = n__i() isList(X) = 2 + X >= 2 + X = n__isList(X) isList(n____(V1,V2)) = 5 + V1 + V2 >= 4 + V1 + V2 = and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) = 3 >= 0 = tt() isNeList(V) = V >= V = isQid(activate(V)) isNeList(X) = X >= X = n__isNeList(X) isNeList(n____(V1,V2)) = 3 + V1 + V2 >= 2 + V1 + V2 = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = 3 + V1 + V2 >= 2 + V1 + V2 = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = V >= V = isQid(activate(V)) isNePal(n____(I,__(P,I))) = 6 + 2*I + P >= I + P = and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) = V >= V = isNePal(activate(V)) isPal(X) = X >= X = n__isPal(X) isPal(n__nil()) = 1 >= 0 = tt() isQid(n__a()) = 1 >= 0 = tt() isQid(n__e()) = 0 >= 0 = tt() isQid(n__i()) = 5 >= 0 = tt() isQid(n__o()) = 0 >= 0 = tt() isQid(n__u()) = 2 >= 0 = tt() nil() = 1 >= 1 = n__nil() o() = 0 >= 0 = n__o() u() = 2 >= 2 = n__u() * Step 6: NaturalPI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(X1,X2) -> n____(X1,X2) __(__(X,Y),Z) -> __(X,__(Y,Z)) a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isList(X)) -> isList(X) activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() e() -> n__e() i() -> n__i() isList(X) -> n__isList(X) isNeList(X) -> n__isNeList(X) isPal(X) -> n__isPal(X) nil() -> n__nil() o() -> n__o() u() -> n__u() - Weak TRS: __(X,nil()) -> X __(nil(),X) -> X and(tt(),X) -> activate(X) isList(V) -> isNeList(activate(V)) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(V) -> isQid(activate(V)) isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) -> isNePal(activate(V)) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__e()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalPI {shape = Linear, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a polynomial interpretation of kind constructor-based(linear): The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = 7 + x1 + x2 p(a) = 0 p(activate) = 1 + x1 p(and) = x1 + x2 p(e) = 0 p(i) = 0 p(isList) = 4 + x1 p(isNeList) = 2 + x1 p(isNePal) = 2 + x1 p(isPal) = 3 + x1 p(isQid) = 1 + x1 p(n____) = 6 + x1 + x2 p(n__a) = 0 p(n__e) = 0 p(n__i) = 0 p(n__isList) = 3 + x1 p(n__isNeList) = 2 + x1 p(n__isPal) = 2 + x1 p(n__nil) = 0 p(n__o) = 2 p(n__u) = 0 p(nil) = 1 p(o) = 3 p(tt) = 1 p(u) = 1 Following rules are strictly oriented: __(X1,X2) = 7 + X1 + X2 > 6 + X1 + X2 = n____(X1,X2) activate(X) = 1 + X > X = X activate(n__a()) = 1 > 0 = a() activate(n__e()) = 1 > 0 = e() activate(n__i()) = 1 > 0 = i() activate(n__isNeList(X)) = 3 + X > 2 + X = isNeList(X) isList(X) = 4 + X > 3 + X = n__isList(X) isPal(X) = 3 + X > 2 + X = n__isPal(X) nil() = 1 > 0 = n__nil() o() = 3 > 2 = n__o() u() = 1 > 0 = n__u() Following rules are (at-least) weakly oriented: __(X,nil()) = 8 + X >= X = X __(__(X,Y),Z) = 14 + X + Y + Z >= 14 + X + Y + Z = __(X,__(Y,Z)) __(nil(),X) = 8 + X >= X = X a() = 0 >= 0 = n__a() activate(n____(X1,X2)) = 7 + X1 + X2 >= 7 + X1 + X2 = __(X1,X2) activate(n__isList(X)) = 4 + X >= 4 + X = isList(X) activate(n__isPal(X)) = 3 + X >= 3 + X = isPal(X) activate(n__nil()) = 1 >= 1 = nil() activate(n__o()) = 3 >= 3 = o() activate(n__u()) = 1 >= 1 = u() and(tt(),X) = 1 + X >= 1 + X = activate(X) e() = 0 >= 0 = n__e() i() = 0 >= 0 = n__i() isList(V) = 4 + V >= 3 + V = isNeList(activate(V)) isList(n____(V1,V2)) = 10 + V1 + V2 >= 9 + V1 + V2 = and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) = 4 >= 1 = tt() isNeList(V) = 2 + V >= 2 + V = isQid(activate(V)) isNeList(X) = 2 + X >= 2 + X = n__isNeList(X) isNeList(n____(V1,V2)) = 8 + V1 + V2 >= 8 + V1 + V2 = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = 8 + V1 + V2 >= 7 + V1 + V2 = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = 2 + V >= 2 + V = isQid(activate(V)) isNePal(n____(I,__(P,I))) = 15 + 2*I + P >= 5 + I + P = and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) = 3 + V >= 3 + V = isNePal(activate(V)) isPal(n__nil()) = 3 >= 1 = tt() isQid(n__a()) = 1 >= 1 = tt() isQid(n__e()) = 1 >= 1 = tt() isQid(n__i()) = 1 >= 1 = tt() isQid(n__o()) = 3 >= 1 = tt() isQid(n__u()) = 1 >= 1 = tt() * Step 7: NaturalPI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(__(X,Y),Z) -> __(X,__(Y,Z)) a() -> n__a() activate(n____(X1,X2)) -> __(X1,X2) activate(n__isList(X)) -> isList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() e() -> n__e() i() -> n__i() isNeList(X) -> n__isNeList(X) - Weak TRS: __(X,nil()) -> X __(X1,X2) -> n____(X1,X2) __(nil(),X) -> X activate(X) -> X activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isNeList(X)) -> isNeList(X) and(tt(),X) -> activate(X) isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(V) -> isQid(activate(V)) isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) -> isNePal(activate(V)) isPal(X) -> n__isPal(X) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__e()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() nil() -> n__nil() o() -> n__o() u() -> n__u() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalPI {shape = Linear, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a polynomial interpretation of kind constructor-based(linear): The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = 6 + x1 + x2 p(a) = 1 p(activate) = 1 + x1 p(and) = x1 + x2 p(e) = 1 p(i) = 3 p(isList) = 5 + x1 p(isNeList) = 2 + x1 p(isNePal) = 3 + x1 p(isPal) = 6 + x1 p(isQid) = 1 + x1 p(n____) = 6 + x1 + x2 p(n__a) = 0 p(n__e) = 1 p(n__i) = 2 p(n__isList) = 4 + x1 p(n__isNeList) = 1 + x1 p(n__isPal) = 6 + x1 p(n__nil) = 5 p(n__o) = 0 p(n__u) = 2 p(nil) = 5 p(o) = 0 p(tt) = 1 p(u) = 2 Following rules are strictly oriented: a() = 1 > 0 = n__a() activate(n____(X1,X2)) = 7 + X1 + X2 > 6 + X1 + X2 = __(X1,X2) activate(n__isPal(X)) = 7 + X > 6 + X = isPal(X) activate(n__nil()) = 6 > 5 = nil() activate(n__o()) = 1 > 0 = o() activate(n__u()) = 3 > 2 = u() i() = 3 > 2 = n__i() isNeList(X) = 2 + X > 1 + X = n__isNeList(X) Following rules are (at-least) weakly oriented: __(X,nil()) = 11 + X >= X = X __(X1,X2) = 6 + X1 + X2 >= 6 + X1 + X2 = n____(X1,X2) __(__(X,Y),Z) = 12 + X + Y + Z >= 12 + X + Y + Z = __(X,__(Y,Z)) __(nil(),X) = 11 + X >= X = X activate(X) = 1 + X >= X = X activate(n__a()) = 1 >= 1 = a() activate(n__e()) = 2 >= 1 = e() activate(n__i()) = 3 >= 3 = i() activate(n__isList(X)) = 5 + X >= 5 + X = isList(X) activate(n__isNeList(X)) = 2 + X >= 2 + X = isNeList(X) and(tt(),X) = 1 + X >= 1 + X = activate(X) e() = 1 >= 1 = n__e() isList(V) = 5 + V >= 3 + V = isNeList(activate(V)) isList(X) = 5 + X >= 4 + X = n__isList(X) isList(n____(V1,V2)) = 11 + V1 + V2 >= 11 + V1 + V2 = and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) = 10 >= 1 = tt() isNeList(V) = 2 + V >= 2 + V = isQid(activate(V)) isNeList(n____(V1,V2)) = 8 + V1 + V2 >= 8 + V1 + V2 = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = 8 + V1 + V2 >= 8 + V1 + V2 = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = 3 + V >= 2 + V = isQid(activate(V)) isNePal(n____(I,__(P,I))) = 15 + 2*I + P >= 9 + I + P = and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) = 6 + V >= 4 + V = isNePal(activate(V)) isPal(X) = 6 + X >= 6 + X = n__isPal(X) isPal(n__nil()) = 11 >= 1 = tt() isQid(n__a()) = 1 >= 1 = tt() isQid(n__e()) = 2 >= 1 = tt() isQid(n__i()) = 3 >= 1 = tt() isQid(n__o()) = 1 >= 1 = tt() isQid(n__u()) = 3 >= 1 = tt() nil() = 5 >= 5 = n__nil() o() = 0 >= 0 = n__o() u() = 2 >= 2 = n__u() * Step 8: NaturalPI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(__(X,Y),Z) -> __(X,__(Y,Z)) activate(n__isList(X)) -> isList(X) e() -> n__e() - Weak TRS: __(X,nil()) -> X __(X1,X2) -> n____(X1,X2) __(nil(),X) -> X a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() and(tt(),X) -> activate(X) i() -> n__i() isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(V) -> isQid(activate(V)) isNeList(X) -> n__isNeList(X) isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) -> isNePal(activate(V)) isPal(X) -> n__isPal(X) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__e()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() nil() -> n__nil() o() -> n__o() u() -> n__u() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalPI {shape = Linear, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a polynomial interpretation of kind constructor-based(linear): The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = 6 + x1 + x2 p(a) = 7 p(activate) = 2 + x1 p(and) = x1 + x2 p(e) = 7 p(i) = 6 p(isList) = 4 + x1 p(isNeList) = 2 + x1 p(isNePal) = 2 + x1 p(isPal) = 5 + x1 p(isQid) = x1 p(n____) = 6 + x1 + x2 p(n__a) = 5 p(n__e) = 5 p(n__i) = 6 p(n__isList) = 2 + x1 p(n__isNeList) = x1 p(n__isPal) = 5 + x1 p(n__nil) = 0 p(n__o) = 5 p(n__u) = 4 p(nil) = 0 p(o) = 6 p(tt) = 4 p(u) = 5 Following rules are strictly oriented: e() = 7 > 5 = n__e() Following rules are (at-least) weakly oriented: __(X,nil()) = 6 + X >= X = X __(X1,X2) = 6 + X1 + X2 >= 6 + X1 + X2 = n____(X1,X2) __(__(X,Y),Z) = 12 + X + Y + Z >= 12 + X + Y + Z = __(X,__(Y,Z)) __(nil(),X) = 6 + X >= X = X a() = 7 >= 5 = n__a() activate(X) = 2 + X >= X = X activate(n____(X1,X2)) = 8 + X1 + X2 >= 6 + X1 + X2 = __(X1,X2) activate(n__a()) = 7 >= 7 = a() activate(n__e()) = 7 >= 7 = e() activate(n__i()) = 8 >= 6 = i() activate(n__isList(X)) = 4 + X >= 4 + X = isList(X) activate(n__isNeList(X)) = 2 + X >= 2 + X = isNeList(X) activate(n__isPal(X)) = 7 + X >= 5 + X = isPal(X) activate(n__nil()) = 2 >= 0 = nil() activate(n__o()) = 7 >= 6 = o() activate(n__u()) = 6 >= 5 = u() and(tt(),X) = 4 + X >= 2 + X = activate(X) i() = 6 >= 6 = n__i() isList(V) = 4 + V >= 4 + V = isNeList(activate(V)) isList(X) = 4 + X >= 2 + X = n__isList(X) isList(n____(V1,V2)) = 10 + V1 + V2 >= 10 + V1 + V2 = and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) = 4 >= 4 = tt() isNeList(V) = 2 + V >= 2 + V = isQid(activate(V)) isNeList(X) = 2 + X >= X = n__isNeList(X) isNeList(n____(V1,V2)) = 8 + V1 + V2 >= 8 + V1 + V2 = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = 8 + V1 + V2 >= 8 + V1 + V2 = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = 2 + V >= 2 + V = isQid(activate(V)) isNePal(n____(I,__(P,I))) = 14 + 2*I + P >= 9 + I + P = and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) = 5 + V >= 4 + V = isNePal(activate(V)) isPal(X) = 5 + X >= 5 + X = n__isPal(X) isPal(n__nil()) = 5 >= 4 = tt() isQid(n__a()) = 5 >= 4 = tt() isQid(n__e()) = 5 >= 4 = tt() isQid(n__i()) = 6 >= 4 = tt() isQid(n__o()) = 5 >= 4 = tt() isQid(n__u()) = 4 >= 4 = tt() nil() = 0 >= 0 = n__nil() o() = 6 >= 5 = n__o() u() = 5 >= 4 = n__u() * Step 9: NaturalMI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(__(X,Y),Z) -> __(X,__(Y,Z)) activate(n__isList(X)) -> isList(X) - Weak TRS: __(X,nil()) -> X __(X1,X2) -> n____(X1,X2) __(nil(),X) -> X a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() and(tt(),X) -> activate(X) e() -> n__e() i() -> n__i() isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(V) -> isQid(activate(V)) isNeList(X) -> n__isNeList(X) isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) -> isNePal(activate(V)) isPal(X) -> n__isPal(X) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__e()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() nil() -> n__nil() o() -> n__o() u() -> n__u() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = [1] x1 + [1] x2 + [4] p(a) = [10] p(activate) = [1] x1 + [1] p(and) = [1] x1 + [1] x2 + [0] p(e) = [10] p(i) = [12] p(isList) = [1] x1 + [2] p(isNeList) = [1] x1 + [1] p(isNePal) = [1] x1 + [6] p(isPal) = [1] x1 + [7] p(isQid) = [1] x1 + [0] p(n____) = [1] x1 + [1] x2 + [4] p(n__a) = [9] p(n__e) = [10] p(n__i) = [11] p(n__isList) = [1] x1 + [2] p(n__isNeList) = [1] x1 + [1] p(n__isPal) = [1] x1 + [7] p(n__nil) = [7] p(n__o) = [9] p(n__u) = [9] p(nil) = [8] p(o) = [10] p(tt) = [9] p(u) = [9] Following rules are strictly oriented: activate(n__isList(X)) = [1] X + [3] > [1] X + [2] = isList(X) Following rules are (at-least) weakly oriented: __(X,nil()) = [1] X + [12] >= [1] X + [0] = X __(X1,X2) = [1] X1 + [1] X2 + [4] >= [1] X1 + [1] X2 + [4] = n____(X1,X2) __(__(X,Y),Z) = [1] X + [1] Y + [1] Z + [8] >= [1] X + [1] Y + [1] Z + [8] = __(X,__(Y,Z)) __(nil(),X) = [1] X + [12] >= [1] X + [0] = X a() = [10] >= [9] = n__a() activate(X) = [1] X + [1] >= [1] X + [0] = X activate(n____(X1,X2)) = [1] X1 + [1] X2 + [5] >= [1] X1 + [1] X2 + [4] = __(X1,X2) activate(n__a()) = [10] >= [10] = a() activate(n__e()) = [11] >= [10] = e() activate(n__i()) = [12] >= [12] = i() activate(n__isNeList(X)) = [1] X + [2] >= [1] X + [1] = isNeList(X) activate(n__isPal(X)) = [1] X + [8] >= [1] X + [7] = isPal(X) activate(n__nil()) = [8] >= [8] = nil() activate(n__o()) = [10] >= [10] = o() activate(n__u()) = [10] >= [9] = u() and(tt(),X) = [1] X + [9] >= [1] X + [1] = activate(X) e() = [10] >= [10] = n__e() i() = [12] >= [11] = n__i() isList(V) = [1] V + [2] >= [1] V + [2] = isNeList(activate(V)) isList(X) = [1] X + [2] >= [1] X + [2] = n__isList(X) isList(n____(V1,V2)) = [1] V1 + [1] V2 + [6] >= [1] V1 + [1] V2 + [6] = and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) = [9] >= [9] = tt() isNeList(V) = [1] V + [1] >= [1] V + [1] = isQid(activate(V)) isNeList(X) = [1] X + [1] >= [1] X + [1] = n__isNeList(X) isNeList(n____(V1,V2)) = [1] V1 + [1] V2 + [5] >= [1] V1 + [1] V2 + [5] = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = [1] V1 + [1] V2 + [5] >= [1] V1 + [1] V2 + [5] = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = [1] V + [6] >= [1] V + [1] = isQid(activate(V)) isNePal(n____(I,__(P,I))) = [2] I + [1] P + [14] >= [1] I + [1] P + [9] = and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) = [1] V + [7] >= [1] V + [7] = isNePal(activate(V)) isPal(X) = [1] X + [7] >= [1] X + [7] = n__isPal(X) isPal(n__nil()) = [14] >= [9] = tt() isQid(n__a()) = [9] >= [9] = tt() isQid(n__e()) = [10] >= [9] = tt() isQid(n__i()) = [11] >= [9] = tt() isQid(n__o()) = [9] >= [9] = tt() isQid(n__u()) = [9] >= [9] = tt() nil() = [8] >= [7] = n__nil() o() = [10] >= [9] = n__o() u() = [9] >= [9] = n__u() * Step 10: NaturalMI WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: __(__(X,Y),Z) -> __(X,__(Y,Z)) - Weak TRS: __(X,nil()) -> X __(X1,X2) -> n____(X1,X2) __(nil(),X) -> X a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isList(X)) -> isList(X) activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() and(tt(),X) -> activate(X) e() -> n__e() i() -> n__i() isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(V) -> isQid(activate(V)) isNeList(X) -> n__isNeList(X) isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) -> isNePal(activate(V)) isPal(X) -> n__isPal(X) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__e()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() nil() -> n__nil() o() -> n__o() u() -> n__u() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: NaturalMI {miDimension = 3, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(__) = {2}, uargs(and) = {1,2}, uargs(isList) = {1}, uargs(isNeList) = {1}, uargs(isNePal) = {1}, uargs(isQid) = {1}, uargs(n__isList) = {1}, uargs(n__isNeList) = {1}, uargs(n__isPal) = {1} Following symbols are considered usable: {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid,nil,o,u} TcT has computed the following interpretation: p(__) = [1 1 0] [1 0 0] [0] [0 1 0] x1 + [0 1 0] x2 + [1] [0 0 1] [0 0 1] [1] p(a) = [1] [0] [1] p(activate) = [1 0 0] [0] [0 1 0] x1 + [0] [0 0 1] [0] p(and) = [1 0 0] [1 0 0] [0] [0 1 1] x1 + [0 1 1] x2 + [0] [0 0 0] [0 0 1] [0] p(e) = [0] [0] [0] p(i) = [0] [0] [0] p(isList) = [1 1 0] [0] [0 1 1] x1 + [0] [0 0 0] [1] p(isNeList) = [1 1 0] [0] [0 1 1] x1 + [0] [0 0 0] [1] p(isNePal) = [1 1 0] [0] [0 1 0] x1 + [1] [0 0 0] [1] p(isPal) = [1 1 0] [0] [0 1 0] x1 + [1] [0 0 0] [1] p(isQid) = [1 1 0] [0] [0 1 0] x1 + [0] [0 0 0] [1] p(n____) = [1 1 0] [1 0 0] [0] [0 1 0] x1 + [0 1 0] x2 + [1] [0 0 1] [0 0 1] [1] p(n__a) = [1] [0] [1] p(n__e) = [0] [0] [0] p(n__i) = [0] [0] [0] p(n__isList) = [1 1 0] [0] [0 1 1] x1 + [0] [0 0 0] [1] p(n__isNeList) = [1 1 0] [0] [0 1 1] x1 + [0] [0 0 0] [1] p(n__isPal) = [1 1 0] [0] [0 1 0] x1 + [1] [0 0 0] [1] p(n__nil) = [1] [0] [1] p(n__o) = [0] [0] [0] p(n__u) = [0] [1] [0] p(nil) = [1] [0] [1] p(o) = [0] [0] [0] p(tt) = [0] [0] [1] p(u) = [0] [1] [0] Following rules are strictly oriented: __(__(X,Y),Z) = [1 2 0] [1 1 0] [1 0 0] [1] [0 1 0] X + [0 1 0] Y + [0 1 0] Z + [2] [0 0 1] [0 0 1] [0 0 1] [2] > [1 1 0] [1 1 0] [1 0 0] [0] [0 1 0] X + [0 1 0] Y + [0 1 0] Z + [2] [0 0 1] [0 0 1] [0 0 1] [2] = __(X,__(Y,Z)) Following rules are (at-least) weakly oriented: __(X,nil()) = [1 1 0] [1] [0 1 0] X + [1] [0 0 1] [2] >= [1 0 0] [0] [0 1 0] X + [0] [0 0 1] [0] = X __(X1,X2) = [1 1 0] [1 0 0] [0] [0 1 0] X1 + [0 1 0] X2 + [1] [0 0 1] [0 0 1] [1] >= [1 1 0] [1 0 0] [0] [0 1 0] X1 + [0 1 0] X2 + [1] [0 0 1] [0 0 1] [1] = n____(X1,X2) __(nil(),X) = [1 0 0] [1] [0 1 0] X + [1] [0 0 1] [2] >= [1 0 0] [0] [0 1 0] X + [0] [0 0 1] [0] = X a() = [1] [0] [1] >= [1] [0] [1] = n__a() activate(X) = [1 0 0] [0] [0 1 0] X + [0] [0 0 1] [0] >= [1 0 0] [0] [0 1 0] X + [0] [0 0 1] [0] = X activate(n____(X1,X2)) = [1 1 0] [1 0 0] [0] [0 1 0] X1 + [0 1 0] X2 + [1] [0 0 1] [0 0 1] [1] >= [1 1 0] [1 0 0] [0] [0 1 0] X1 + [0 1 0] X2 + [1] [0 0 1] [0 0 1] [1] = __(X1,X2) activate(n__a()) = [1] [0] [1] >= [1] [0] [1] = a() activate(n__e()) = [0] [0] [0] >= [0] [0] [0] = e() activate(n__i()) = [0] [0] [0] >= [0] [0] [0] = i() activate(n__isList(X)) = [1 1 0] [0] [0 1 1] X + [0] [0 0 0] [1] >= [1 1 0] [0] [0 1 1] X + [0] [0 0 0] [1] = isList(X) activate(n__isNeList(X)) = [1 1 0] [0] [0 1 1] X + [0] [0 0 0] [1] >= [1 1 0] [0] [0 1 1] X + [0] [0 0 0] [1] = isNeList(X) activate(n__isPal(X)) = [1 1 0] [0] [0 1 0] X + [1] [0 0 0] [1] >= [1 1 0] [0] [0 1 0] X + [1] [0 0 0] [1] = isPal(X) activate(n__nil()) = [1] [0] [1] >= [1] [0] [1] = nil() activate(n__o()) = [0] [0] [0] >= [0] [0] [0] = o() activate(n__u()) = [0] [1] [0] >= [0] [1] [0] = u() and(tt(),X) = [1 0 0] [0] [0 1 1] X + [1] [0 0 1] [0] >= [1 0 0] [0] [0 1 0] X + [0] [0 0 1] [0] = activate(X) e() = [0] [0] [0] >= [0] [0] [0] = n__e() i() = [0] [0] [0] >= [0] [0] [0] = n__i() isList(V) = [1 1 0] [0] [0 1 1] V + [0] [0 0 0] [1] >= [1 1 0] [0] [0 1 1] V + [0] [0 0 0] [1] = isNeList(activate(V)) isList(X) = [1 1 0] [0] [0 1 1] X + [0] [0 0 0] [1] >= [1 1 0] [0] [0 1 1] X + [0] [0 0 0] [1] = n__isList(X) isList(n____(V1,V2)) = [1 2 0] [1 1 0] [1] [0 1 1] V1 + [0 1 1] V2 + [2] [0 0 0] [0 0 0] [1] >= [1 1 0] [1 1 0] [0] [0 1 1] V1 + [0 1 1] V2 + [2] [0 0 0] [0 0 0] [1] = and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) = [1] [1] [1] >= [0] [0] [1] = tt() isNeList(V) = [1 1 0] [0] [0 1 1] V + [0] [0 0 0] [1] >= [1 1 0] [0] [0 1 0] V + [0] [0 0 0] [1] = isQid(activate(V)) isNeList(X) = [1 1 0] [0] [0 1 1] X + [0] [0 0 0] [1] >= [1 1 0] [0] [0 1 1] X + [0] [0 0 0] [1] = n__isNeList(X) isNeList(n____(V1,V2)) = [1 2 0] [1 1 0] [1] [0 1 1] V1 + [0 1 1] V2 + [2] [0 0 0] [0 0 0] [1] >= [1 1 0] [1 1 0] [0] [0 1 1] V1 + [0 1 1] V2 + [2] [0 0 0] [0 0 0] [1] = and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) = [1 2 0] [1 1 0] [1] [0 1 1] V1 + [0 1 1] V2 + [2] [0 0 0] [0 0 0] [1] >= [1 1 0] [1 1 0] [0] [0 1 1] V1 + [0 1 1] V2 + [2] [0 0 0] [0 0 0] [1] = and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) = [1 1 0] [0] [0 1 0] V + [1] [0 0 0] [1] >= [1 1 0] [0] [0 1 0] V + [0] [0 0 0] [1] = isQid(activate(V)) isNePal(n____(I,__(P,I))) = [2 3 0] [1 2 0] [2] [0 2 0] I + [0 1 0] P + [3] [0 0 0] [0 0 0] [1] >= [1 1 0] [1 1 0] [0] [0 1 0] I + [0 1 0] P + [3] [0 0 0] [0 0 0] [1] = and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) = [1 1 0] [0] [0 1 0] V + [1] [0 0 0] [1] >= [1 1 0] [0] [0 1 0] V + [1] [0 0 0] [1] = isNePal(activate(V)) isPal(X) = [1 1 0] [0] [0 1 0] X + [1] [0 0 0] [1] >= [1 1 0] [0] [0 1 0] X + [1] [0 0 0] [1] = n__isPal(X) isPal(n__nil()) = [1] [1] [1] >= [0] [0] [1] = tt() isQid(n__a()) = [1] [0] [1] >= [0] [0] [1] = tt() isQid(n__e()) = [0] [0] [1] >= [0] [0] [1] = tt() isQid(n__i()) = [0] [0] [1] >= [0] [0] [1] = tt() isQid(n__o()) = [0] [0] [1] >= [0] [0] [1] = tt() isQid(n__u()) = [1] [1] [1] >= [0] [0] [1] = tt() nil() = [1] [0] [1] >= [1] [0] [1] = n__nil() o() = [0] [0] [0] >= [0] [0] [0] = n__o() u() = [0] [1] [0] >= [0] [1] [0] = n__u() * Step 11: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: __(X,nil()) -> X __(X1,X2) -> n____(X1,X2) __(__(X,Y),Z) -> __(X,__(Y,Z)) __(nil(),X) -> X a() -> n__a() activate(X) -> X activate(n____(X1,X2)) -> __(X1,X2) activate(n__a()) -> a() activate(n__e()) -> e() activate(n__i()) -> i() activate(n__isList(X)) -> isList(X) activate(n__isNeList(X)) -> isNeList(X) activate(n__isPal(X)) -> isPal(X) activate(n__nil()) -> nil() activate(n__o()) -> o() activate(n__u()) -> u() and(tt(),X) -> activate(X) e() -> n__e() i() -> n__i() isList(V) -> isNeList(activate(V)) isList(X) -> n__isList(X) isList(n____(V1,V2)) -> and(isList(activate(V1)),n__isList(activate(V2))) isList(n__nil()) -> tt() isNeList(V) -> isQid(activate(V)) isNeList(X) -> n__isNeList(X) isNeList(n____(V1,V2)) -> and(isList(activate(V1)),n__isNeList(activate(V2))) isNeList(n____(V1,V2)) -> and(isNeList(activate(V1)),n__isList(activate(V2))) isNePal(V) -> isQid(activate(V)) isNePal(n____(I,__(P,I))) -> and(isQid(activate(I)),n__isPal(activate(P))) isPal(V) -> isNePal(activate(V)) isPal(X) -> n__isPal(X) isPal(n__nil()) -> tt() isQid(n__a()) -> tt() isQid(n__e()) -> tt() isQid(n__i()) -> tt() isQid(n__o()) -> tt() isQid(n__u()) -> tt() nil() -> n__nil() o() -> n__o() u() -> n__u() - Signature: {__/2,a/0,activate/1,and/2,e/0,i/0,isList/1,isNeList/1,isNePal/1,isPal/1,isQid/1,nil/0,o/0,u/0} / {n____/2 ,n__a/0,n__e/0,n__i/0,n__isList/1,n__isNeList/1,n__isPal/1,n__nil/0,n__o/0,n__u/0,tt/0} - Obligation: innermost runtime complexity wrt. defined symbols {__,a,activate,and,e,i,isList,isNeList,isNePal,isPal,isQid ,nil,o,u} and constructors {n____,n__a,n__e,n__i,n__isList,n__isNeList,n__isPal,n__nil,n__o,n__u,tt} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^3))