YES(O(1),O(n^2)) 190.64/63.55 YES(O(1),O(n^2)) 190.64/63.55 190.64/63.55 We are left with following problem, upon which TcT provides the 190.64/63.55 certificate YES(O(1),O(n^2)). 190.64/63.55 190.64/63.55 Strict Trs: 190.64/63.55 { __(X1, X2) -> n____(X1, X2) 190.64/63.55 , __(X, nil()) -> X 190.64/63.55 , __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.55 , __(nil(), X) -> X 190.64/63.55 , nil() -> n__nil() 190.64/63.55 , U11(tt()) -> tt() 190.64/63.55 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.55 , U22(tt()) -> tt() 190.64/63.55 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.55 , isList(n__nil()) -> tt() 190.64/63.55 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.55 , activate(X) -> X 190.64/63.55 , activate(n__nil()) -> nil() 190.64/63.55 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.55 , activate(n__a()) -> a() 190.64/63.55 , activate(n__e()) -> e() 190.64/63.55 , activate(n__i()) -> i() 190.64/63.55 , activate(n__o()) -> o() 190.64/63.55 , activate(n__u()) -> u() 190.64/63.55 , U31(tt()) -> tt() 190.64/63.55 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.55 , U42(tt()) -> tt() 190.64/63.55 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.55 , isNeList(n____(V1, V2)) -> 190.64/63.55 U41(isList(activate(V1)), activate(V2)) 190.64/63.55 , isNeList(n____(V1, V2)) -> 190.64/63.55 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.55 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.55 , U52(tt()) -> tt() 190.64/63.55 , U61(tt()) -> tt() 190.64/63.55 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.55 , U72(tt()) -> tt() 190.64/63.55 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.55 , isPal(n__nil()) -> tt() 190.64/63.55 , U81(tt()) -> tt() 190.64/63.55 , isQid(n__a()) -> tt() 190.64/63.55 , isQid(n__e()) -> tt() 190.64/63.55 , isQid(n__i()) -> tt() 190.64/63.55 , isQid(n__o()) -> tt() 190.64/63.55 , isQid(n__u()) -> tt() 190.64/63.55 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.55 , isNePal(n____(I, __(P, I))) -> 190.64/63.55 U71(isQid(activate(I)), activate(P)) 190.64/63.55 , a() -> n__a() 190.64/63.55 , e() -> n__e() 190.64/63.55 , i() -> n__i() 190.64/63.55 , o() -> n__o() 190.64/63.55 , u() -> n__u() } 190.64/63.55 Obligation: 190.64/63.55 derivational complexity 190.64/63.55 Answer: 190.64/63.55 YES(O(1),O(n^2)) 190.64/63.55 190.64/63.55 The weightgap principle applies (using the following nonconstant 190.64/63.55 growth matrix-interpretation) 190.64/63.55 190.64/63.55 TcT has computed the following triangular matrix interpretation. 190.64/63.55 Note that the diagonal of the component-wise maxima of 190.64/63.55 interpretation-entries contains no more than 1 non-zero entries. 190.64/63.55 190.64/63.55 [__](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [nil] = [0] 190.64/63.55 190.64/63.55 [U11](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [tt] = [0] 190.64/63.55 190.64/63.55 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [U22](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [isList](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [activate](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U31](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [U42](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [isNeList](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [U52](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U61](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [U72](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [isPal](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U81](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [n__nil] = [0] 190.64/63.55 190.64/63.55 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [isQid](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [isNePal](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [n__a] = [0] 190.64/63.55 190.64/63.55 [n__e] = [0] 190.64/63.55 190.64/63.55 [n__i] = [0] 190.64/63.55 190.64/63.55 [n__o] = [0] 190.64/63.55 190.64/63.55 [n__u] = [0] 190.64/63.55 190.64/63.55 [a] = [1] 190.64/63.55 190.64/63.55 [e] = [2] 190.64/63.55 190.64/63.55 [i] = [1] 190.64/63.55 190.64/63.55 [o] = [1] 190.64/63.55 190.64/63.55 [u] = [1] 190.64/63.55 190.64/63.55 The order satisfies the following ordering constraints: 190.64/63.55 190.64/63.55 [__(X1, X2)] = [1] X1 + [1] X2 + [0] 190.64/63.55 >= [1] X1 + [1] X2 + [0] 190.64/63.55 = [n____(X1, X2)] 190.64/63.55 190.64/63.55 [__(X, nil())] = [1] X + [0] 190.64/63.55 >= [1] X + [0] 190.64/63.55 = [X] 190.64/63.55 190.64/63.55 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [0] 190.64/63.55 >= [1] X + [1] Y + [1] Z + [0] 190.64/63.55 = [__(X, __(Y, Z))] 190.64/63.55 190.64/63.55 [__(nil(), X)] = [1] X + [0] 190.64/63.55 >= [1] X + [0] 190.64/63.55 = [X] 190.64/63.55 190.64/63.55 [nil()] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [n__nil()] 190.64/63.55 190.64/63.55 [U11(tt())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.55 >= [1] V2 + [0] 190.64/63.55 = [U22(isList(activate(V2)))] 190.64/63.55 190.64/63.55 [U22(tt())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isList(V)] = [1] V + [0] 190.64/63.55 >= [1] V + [0] 190.64/63.55 = [U11(isNeList(activate(V)))] 190.64/63.55 190.64/63.55 [isList(n__nil())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.55 >= [1] V2 + [1] V1 + [0] 190.64/63.55 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.55 190.64/63.55 [activate(X)] = [1] X + [0] 190.64/63.55 >= [1] X + [0] 190.64/63.55 = [X] 190.64/63.55 190.64/63.55 [activate(n__nil())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [nil()] 190.64/63.55 190.64/63.55 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.64/63.55 >= [1] X1 + [1] X2 + [0] 190.64/63.55 = [__(X1, X2)] 190.64/63.55 190.64/63.55 [activate(n__a())] = [0] 190.64/63.55 ? [1] 190.64/63.55 = [a()] 190.64/63.55 190.64/63.55 [activate(n__e())] = [0] 190.64/63.55 ? [2] 190.64/63.55 = [e()] 190.64/63.55 190.64/63.55 [activate(n__i())] = [0] 190.64/63.55 ? [1] 190.64/63.55 = [i()] 190.64/63.55 190.64/63.55 [activate(n__o())] = [0] 190.64/63.55 ? [1] 190.64/63.55 = [o()] 190.64/63.55 190.64/63.55 [activate(n__u())] = [0] 190.64/63.55 ? [1] 190.64/63.55 = [u()] 190.64/63.55 190.64/63.55 [U31(tt())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.55 >= [1] V2 + [0] 190.64/63.55 = [U42(isNeList(activate(V2)))] 190.64/63.55 190.64/63.55 [U42(tt())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isNeList(V)] = [1] V + [0] 190.64/63.55 >= [1] V + [0] 190.64/63.55 = [U31(isQid(activate(V)))] 190.64/63.55 190.64/63.55 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.55 >= [1] V2 + [1] V1 + [0] 190.64/63.55 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.55 190.64/63.55 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.55 >= [1] V2 + [1] V1 + [0] 190.64/63.55 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.55 190.64/63.55 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.55 >= [1] V2 + [0] 190.64/63.55 = [U52(isList(activate(V2)))] 190.64/63.55 190.64/63.55 [U52(tt())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [U61(tt())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [U71(tt(), P)] = [1] P + [0] 190.64/63.55 >= [1] P + [0] 190.64/63.55 = [U72(isPal(activate(P)))] 190.64/63.55 190.64/63.55 [U72(tt())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isPal(V)] = [1] V + [0] 190.64/63.55 >= [1] V + [0] 190.64/63.55 = [U81(isNePal(activate(V)))] 190.64/63.55 190.64/63.55 [isPal(n__nil())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [U81(tt())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isQid(n__a())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isQid(n__e())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isQid(n__i())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isQid(n__o())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isQid(n__u())] = [0] 190.64/63.55 >= [0] 190.64/63.55 = [tt()] 190.64/63.55 190.64/63.55 [isNePal(V)] = [1] V + [0] 190.64/63.55 >= [1] V + [0] 190.64/63.55 = [U61(isQid(activate(V)))] 190.64/63.55 190.64/63.55 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [0] 190.64/63.55 >= [1] P + [1] I + [0] 190.64/63.55 = [U71(isQid(activate(I)), activate(P))] 190.64/63.55 190.64/63.55 [a()] = [1] 190.64/63.55 > [0] 190.64/63.55 = [n__a()] 190.64/63.55 190.64/63.55 [e()] = [2] 190.64/63.55 > [0] 190.64/63.55 = [n__e()] 190.64/63.55 190.64/63.55 [i()] = [1] 190.64/63.55 > [0] 190.64/63.55 = [n__i()] 190.64/63.55 190.64/63.55 [o()] = [1] 190.64/63.55 > [0] 190.64/63.55 = [n__o()] 190.64/63.55 190.64/63.55 [u()] = [1] 190.64/63.55 > [0] 190.64/63.55 = [n__u()] 190.64/63.55 190.64/63.55 190.64/63.55 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.64/63.55 190.64/63.55 We are left with following problem, upon which TcT provides the 190.64/63.55 certificate YES(O(1),O(n^2)). 190.64/63.55 190.64/63.55 Strict Trs: 190.64/63.55 { __(X1, X2) -> n____(X1, X2) 190.64/63.55 , __(X, nil()) -> X 190.64/63.55 , __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.55 , __(nil(), X) -> X 190.64/63.55 , nil() -> n__nil() 190.64/63.55 , U11(tt()) -> tt() 190.64/63.55 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.55 , U22(tt()) -> tt() 190.64/63.55 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.55 , isList(n__nil()) -> tt() 190.64/63.55 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.55 , activate(X) -> X 190.64/63.55 , activate(n__nil()) -> nil() 190.64/63.55 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.55 , activate(n__a()) -> a() 190.64/63.55 , activate(n__e()) -> e() 190.64/63.55 , activate(n__i()) -> i() 190.64/63.55 , activate(n__o()) -> o() 190.64/63.55 , activate(n__u()) -> u() 190.64/63.55 , U31(tt()) -> tt() 190.64/63.55 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.55 , U42(tt()) -> tt() 190.64/63.55 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.55 , isNeList(n____(V1, V2)) -> 190.64/63.55 U41(isList(activate(V1)), activate(V2)) 190.64/63.55 , isNeList(n____(V1, V2)) -> 190.64/63.55 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.55 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.55 , U52(tt()) -> tt() 190.64/63.55 , U61(tt()) -> tt() 190.64/63.55 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.55 , U72(tt()) -> tt() 190.64/63.55 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.55 , isPal(n__nil()) -> tt() 190.64/63.55 , U81(tt()) -> tt() 190.64/63.55 , isQid(n__a()) -> tt() 190.64/63.55 , isQid(n__e()) -> tt() 190.64/63.55 , isQid(n__i()) -> tt() 190.64/63.55 , isQid(n__o()) -> tt() 190.64/63.55 , isQid(n__u()) -> tt() 190.64/63.55 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.55 , isNePal(n____(I, __(P, I))) -> 190.64/63.55 U71(isQid(activate(I)), activate(P)) } 190.64/63.55 Weak Trs: 190.64/63.55 { a() -> n__a() 190.64/63.55 , e() -> n__e() 190.64/63.55 , i() -> n__i() 190.64/63.55 , o() -> n__o() 190.64/63.55 , u() -> n__u() } 190.64/63.55 Obligation: 190.64/63.55 derivational complexity 190.64/63.55 Answer: 190.64/63.55 YES(O(1),O(n^2)) 190.64/63.55 190.64/63.55 We use the processor 'matrix interpretation of dimension 1' to 190.64/63.55 orient following rules strictly. 190.64/63.55 190.64/63.55 Trs: { isQid(n__a()) -> tt() } 190.64/63.55 190.64/63.55 The induced complexity on above rules (modulo remaining rules) is 190.64/63.55 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.64/63.55 component(s). 190.64/63.55 190.64/63.55 Sub-proof: 190.64/63.55 ---------- 190.64/63.55 TcT has computed the following triangular matrix interpretation. 190.64/63.55 190.64/63.55 [__](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [nil] = [0] 190.64/63.55 190.64/63.55 [U11](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [tt] = [0] 190.64/63.55 190.64/63.55 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [U22](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [isList](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [activate](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U31](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [U42](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [isNeList](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [U52](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U61](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [U72](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [isPal](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [U81](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [n__nil] = [0] 190.64/63.55 190.64/63.55 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.55 190.64/63.55 [isQid](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [isNePal](x1) = [1] x1 + [0] 190.64/63.55 190.64/63.55 [n__a] = [1] 190.64/63.55 190.64/63.55 [n__e] = [0] 190.64/63.55 190.64/63.55 [n__i] = [0] 190.64/63.55 190.64/63.55 [n__o] = [0] 190.64/63.55 190.64/63.55 [n__u] = [0] 190.64/63.55 190.64/63.55 [a] = [1] 190.64/63.55 190.64/63.55 [e] = [0] 190.64/63.55 190.64/63.55 [i] = [0] 190.64/63.55 190.64/63.55 [o] = [0] 190.64/63.55 190.64/63.55 [u] = [0] 190.64/63.55 190.64/63.55 The order satisfies the following ordering constraints: 190.64/63.55 190.64/63.55 [__(X1, X2)] = [1] X1 + [1] X2 + [0] 190.64/63.55 >= [1] X1 + [1] X2 + [0] 190.64/63.55 = [n____(X1, X2)] 190.64/63.55 190.64/63.56 [__(X, nil())] = [1] X + [0] 190.64/63.56 >= [1] X + [0] 190.64/63.56 = [X] 190.64/63.56 190.64/63.56 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [0] 190.64/63.56 >= [1] X + [1] Y + [1] Z + [0] 190.64/63.56 = [__(X, __(Y, Z))] 190.64/63.56 190.64/63.56 [__(nil(), X)] = [1] X + [0] 190.64/63.56 >= [1] X + [0] 190.64/63.56 = [X] 190.64/63.56 190.64/63.56 [nil()] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [n__nil()] 190.64/63.56 190.64/63.56 [U11(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.56 >= [1] V2 + [0] 190.64/63.56 = [U22(isList(activate(V2)))] 190.64/63.56 190.64/63.56 [U22(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isList(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U11(isNeList(activate(V)))] 190.64/63.56 190.64/63.56 [isList(n__nil())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.56 >= [1] V2 + [1] V1 + [0] 190.64/63.56 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.56 190.64/63.56 [activate(X)] = [1] X + [0] 190.64/63.56 >= [1] X + [0] 190.64/63.56 = [X] 190.64/63.56 190.64/63.56 [activate(n__nil())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [nil()] 190.64/63.56 190.64/63.56 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.64/63.56 >= [1] X1 + [1] X2 + [0] 190.64/63.56 = [__(X1, X2)] 190.64/63.56 190.64/63.56 [activate(n__a())] = [1] 190.64/63.56 >= [1] 190.64/63.56 = [a()] 190.64/63.56 190.64/63.56 [activate(n__e())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [e()] 190.64/63.56 190.64/63.56 [activate(n__i())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [i()] 190.64/63.56 190.64/63.56 [activate(n__o())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [o()] 190.64/63.56 190.64/63.56 [activate(n__u())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [u()] 190.64/63.56 190.64/63.56 [U31(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.56 >= [1] V2 + [0] 190.64/63.56 = [U42(isNeList(activate(V2)))] 190.64/63.56 190.64/63.56 [U42(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isNeList(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U31(isQid(activate(V)))] 190.64/63.56 190.64/63.56 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.56 >= [1] V2 + [1] V1 + [0] 190.64/63.56 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.56 190.64/63.56 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.56 >= [1] V2 + [1] V1 + [0] 190.64/63.56 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.56 190.64/63.56 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.56 >= [1] V2 + [0] 190.64/63.56 = [U52(isList(activate(V2)))] 190.64/63.56 190.64/63.56 [U52(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U61(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U71(tt(), P)] = [1] P + [0] 190.64/63.56 >= [1] P + [0] 190.64/63.56 = [U72(isPal(activate(P)))] 190.64/63.56 190.64/63.56 [U72(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isPal(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U81(isNePal(activate(V)))] 190.64/63.56 190.64/63.56 [isPal(n__nil())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U81(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__a())] = [1] 190.64/63.56 > [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__e())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__i())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__o())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__u())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isNePal(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U61(isQid(activate(V)))] 190.64/63.56 190.64/63.56 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [0] 190.64/63.56 >= [1] P + [1] I + [0] 190.64/63.56 = [U71(isQid(activate(I)), activate(P))] 190.64/63.56 190.64/63.56 [a()] = [1] 190.64/63.56 >= [1] 190.64/63.56 = [n__a()] 190.64/63.56 190.64/63.56 [e()] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [n__e()] 190.64/63.56 190.64/63.56 [i()] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [n__i()] 190.64/63.56 190.64/63.56 [o()] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [n__o()] 190.64/63.56 190.64/63.56 [u()] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [n__u()] 190.64/63.56 190.64/63.56 190.64/63.56 We return to the main proof. 190.64/63.56 190.64/63.56 We are left with following problem, upon which TcT provides the 190.64/63.56 certificate YES(O(1),O(n^2)). 190.64/63.56 190.64/63.56 Strict Trs: 190.64/63.56 { __(X1, X2) -> n____(X1, X2) 190.64/63.56 , __(X, nil()) -> X 190.64/63.56 , __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.56 , __(nil(), X) -> X 190.64/63.56 , nil() -> n__nil() 190.64/63.56 , U11(tt()) -> tt() 190.64/63.56 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.56 , U22(tt()) -> tt() 190.64/63.56 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.56 , isList(n__nil()) -> tt() 190.64/63.56 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.56 , activate(X) -> X 190.64/63.56 , activate(n__nil()) -> nil() 190.64/63.56 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.56 , activate(n__a()) -> a() 190.64/63.56 , activate(n__e()) -> e() 190.64/63.56 , activate(n__i()) -> i() 190.64/63.56 , activate(n__o()) -> o() 190.64/63.56 , activate(n__u()) -> u() 190.64/63.56 , U31(tt()) -> tt() 190.64/63.56 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.56 , U42(tt()) -> tt() 190.64/63.56 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.56 , isNeList(n____(V1, V2)) -> 190.64/63.56 U41(isList(activate(V1)), activate(V2)) 190.64/63.56 , isNeList(n____(V1, V2)) -> 190.64/63.56 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.56 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.56 , U52(tt()) -> tt() 190.64/63.56 , U61(tt()) -> tt() 190.64/63.56 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.56 , U72(tt()) -> tt() 190.64/63.56 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.56 , isPal(n__nil()) -> tt() 190.64/63.56 , U81(tt()) -> tt() 190.64/63.56 , isQid(n__e()) -> tt() 190.64/63.56 , isQid(n__i()) -> tt() 190.64/63.56 , isQid(n__o()) -> tt() 190.64/63.56 , isQid(n__u()) -> tt() 190.64/63.56 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.56 , isNePal(n____(I, __(P, I))) -> 190.64/63.56 U71(isQid(activate(I)), activate(P)) } 190.64/63.56 Weak Trs: 190.64/63.56 { isQid(n__a()) -> tt() 190.64/63.56 , a() -> n__a() 190.64/63.56 , e() -> n__e() 190.64/63.56 , i() -> n__i() 190.64/63.56 , o() -> n__o() 190.64/63.56 , u() -> n__u() } 190.64/63.56 Obligation: 190.64/63.56 derivational complexity 190.64/63.56 Answer: 190.64/63.56 YES(O(1),O(n^2)) 190.64/63.56 190.64/63.56 The weightgap principle applies (using the following nonconstant 190.64/63.56 growth matrix-interpretation) 190.64/63.56 190.64/63.56 TcT has computed the following triangular matrix interpretation. 190.64/63.56 Note that the diagonal of the component-wise maxima of 190.64/63.56 interpretation-entries contains no more than 1 non-zero entries. 190.64/63.56 190.64/63.56 [__](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.56 190.64/63.56 [nil] = [0] 190.64/63.56 190.64/63.56 [U11](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [tt] = [0] 190.64/63.56 190.64/63.56 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.56 190.64/63.56 [U22](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [isList](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [activate](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U31](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.56 190.64/63.56 [U42](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [isNeList](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.56 190.64/63.56 [U52](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U61](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.56 190.64/63.56 [U72](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [isPal](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U81](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [n__nil] = [0] 190.64/63.56 190.64/63.56 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.56 190.64/63.56 [isQid](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [isNePal](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [n__a] = [1] 190.64/63.56 190.64/63.56 [n__e] = [0] 190.64/63.56 190.64/63.56 [n__i] = [0] 190.64/63.56 190.64/63.56 [n__o] = [0] 190.64/63.56 190.64/63.56 [n__u] = [0] 190.64/63.56 190.64/63.56 [a] = [2] 190.64/63.56 190.64/63.56 [e] = [2] 190.64/63.56 190.64/63.56 [i] = [2] 190.64/63.56 190.64/63.56 [o] = [2] 190.64/63.56 190.64/63.56 [u] = [2] 190.64/63.56 190.64/63.56 The order satisfies the following ordering constraints: 190.64/63.56 190.64/63.56 [__(X1, X2)] = [1] X1 + [1] X2 + [1] 190.64/63.56 > [1] X1 + [1] X2 + [0] 190.64/63.56 = [n____(X1, X2)] 190.64/63.56 190.64/63.56 [__(X, nil())] = [1] X + [1] 190.64/63.56 > [1] X + [0] 190.64/63.56 = [X] 190.64/63.56 190.64/63.56 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [2] 190.64/63.56 >= [1] X + [1] Y + [1] Z + [2] 190.64/63.56 = [__(X, __(Y, Z))] 190.64/63.56 190.64/63.56 [__(nil(), X)] = [1] X + [1] 190.64/63.56 > [1] X + [0] 190.64/63.56 = [X] 190.64/63.56 190.64/63.56 [nil()] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [n__nil()] 190.64/63.56 190.64/63.56 [U11(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.56 >= [1] V2 + [0] 190.64/63.56 = [U22(isList(activate(V2)))] 190.64/63.56 190.64/63.56 [U22(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isList(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U11(isNeList(activate(V)))] 190.64/63.56 190.64/63.56 [isList(n__nil())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.56 >= [1] V2 + [1] V1 + [0] 190.64/63.56 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.56 190.64/63.56 [activate(X)] = [1] X + [0] 190.64/63.56 >= [1] X + [0] 190.64/63.56 = [X] 190.64/63.56 190.64/63.56 [activate(n__nil())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [nil()] 190.64/63.56 190.64/63.56 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.64/63.56 ? [1] X1 + [1] X2 + [1] 190.64/63.56 = [__(X1, X2)] 190.64/63.56 190.64/63.56 [activate(n__a())] = [1] 190.64/63.56 ? [2] 190.64/63.56 = [a()] 190.64/63.56 190.64/63.56 [activate(n__e())] = [0] 190.64/63.56 ? [2] 190.64/63.56 = [e()] 190.64/63.56 190.64/63.56 [activate(n__i())] = [0] 190.64/63.56 ? [2] 190.64/63.56 = [i()] 190.64/63.56 190.64/63.56 [activate(n__o())] = [0] 190.64/63.56 ? [2] 190.64/63.56 = [o()] 190.64/63.56 190.64/63.56 [activate(n__u())] = [0] 190.64/63.56 ? [2] 190.64/63.56 = [u()] 190.64/63.56 190.64/63.56 [U31(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.56 >= [1] V2 + [0] 190.64/63.56 = [U42(isNeList(activate(V2)))] 190.64/63.56 190.64/63.56 [U42(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isNeList(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U31(isQid(activate(V)))] 190.64/63.56 190.64/63.56 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.56 >= [1] V2 + [1] V1 + [0] 190.64/63.56 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.56 190.64/63.56 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.56 >= [1] V2 + [1] V1 + [0] 190.64/63.56 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.56 190.64/63.56 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.56 >= [1] V2 + [0] 190.64/63.56 = [U52(isList(activate(V2)))] 190.64/63.56 190.64/63.56 [U52(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U61(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U71(tt(), P)] = [1] P + [0] 190.64/63.56 >= [1] P + [0] 190.64/63.56 = [U72(isPal(activate(P)))] 190.64/63.56 190.64/63.56 [U72(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isPal(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U81(isNePal(activate(V)))] 190.64/63.56 190.64/63.56 [isPal(n__nil())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U81(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__a())] = [1] 190.64/63.56 > [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__e())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__i())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__o())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__u())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isNePal(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U61(isQid(activate(V)))] 190.64/63.56 190.64/63.56 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [1] 190.64/63.56 > [1] P + [1] I + [0] 190.64/63.56 = [U71(isQid(activate(I)), activate(P))] 190.64/63.56 190.64/63.56 [a()] = [2] 190.64/63.56 > [1] 190.64/63.56 = [n__a()] 190.64/63.56 190.64/63.56 [e()] = [2] 190.64/63.56 > [0] 190.64/63.56 = [n__e()] 190.64/63.56 190.64/63.56 [i()] = [2] 190.64/63.56 > [0] 190.64/63.56 = [n__i()] 190.64/63.56 190.64/63.56 [o()] = [2] 190.64/63.56 > [0] 190.64/63.56 = [n__o()] 190.64/63.56 190.64/63.56 [u()] = [2] 190.64/63.56 > [0] 190.64/63.56 = [n__u()] 190.64/63.56 190.64/63.56 190.64/63.56 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.64/63.56 190.64/63.56 We are left with following problem, upon which TcT provides the 190.64/63.56 certificate YES(O(1),O(n^2)). 190.64/63.56 190.64/63.56 Strict Trs: 190.64/63.56 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.56 , nil() -> n__nil() 190.64/63.56 , U11(tt()) -> tt() 190.64/63.56 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.56 , U22(tt()) -> tt() 190.64/63.56 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.56 , isList(n__nil()) -> tt() 190.64/63.56 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.56 , activate(X) -> X 190.64/63.56 , activate(n__nil()) -> nil() 190.64/63.56 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.56 , activate(n__a()) -> a() 190.64/63.56 , activate(n__e()) -> e() 190.64/63.56 , activate(n__i()) -> i() 190.64/63.56 , activate(n__o()) -> o() 190.64/63.56 , activate(n__u()) -> u() 190.64/63.56 , U31(tt()) -> tt() 190.64/63.56 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.56 , U42(tt()) -> tt() 190.64/63.56 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.56 , isNeList(n____(V1, V2)) -> 190.64/63.56 U41(isList(activate(V1)), activate(V2)) 190.64/63.56 , isNeList(n____(V1, V2)) -> 190.64/63.56 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.56 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.56 , U52(tt()) -> tt() 190.64/63.56 , U61(tt()) -> tt() 190.64/63.56 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.56 , U72(tt()) -> tt() 190.64/63.56 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.56 , isPal(n__nil()) -> tt() 190.64/63.56 , U81(tt()) -> tt() 190.64/63.56 , isQid(n__e()) -> tt() 190.64/63.56 , isQid(n__i()) -> tt() 190.64/63.56 , isQid(n__o()) -> tt() 190.64/63.56 , isQid(n__u()) -> tt() 190.64/63.56 , isNePal(V) -> U61(isQid(activate(V))) } 190.64/63.56 Weak Trs: 190.64/63.56 { __(X1, X2) -> n____(X1, X2) 190.64/63.56 , __(X, nil()) -> X 190.64/63.56 , __(nil(), X) -> X 190.64/63.56 , isQid(n__a()) -> tt() 190.64/63.56 , isNePal(n____(I, __(P, I))) -> 190.64/63.56 U71(isQid(activate(I)), activate(P)) 190.64/63.56 , a() -> n__a() 190.64/63.56 , e() -> n__e() 190.64/63.56 , i() -> n__i() 190.64/63.56 , o() -> n__o() 190.64/63.56 , u() -> n__u() } 190.64/63.56 Obligation: 190.64/63.56 derivational complexity 190.64/63.56 Answer: 190.64/63.56 YES(O(1),O(n^2)) 190.64/63.56 190.64/63.56 The weightgap principle applies (using the following nonconstant 190.64/63.56 growth matrix-interpretation) 190.64/63.56 190.64/63.56 TcT has computed the following triangular matrix interpretation. 190.64/63.56 Note that the diagonal of the component-wise maxima of 190.64/63.56 interpretation-entries contains no more than 1 non-zero entries. 190.64/63.56 190.64/63.56 [__](x1, x2) = [1] x1 + [1] x2 + [2] 190.64/63.56 190.64/63.56 [nil] = [2] 190.64/63.56 190.64/63.56 [U11](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [tt] = [0] 190.64/63.56 190.64/63.56 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.56 190.64/63.56 [U22](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [isList](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [activate](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U31](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.56 190.64/63.56 [U42](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [isNeList](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.56 190.64/63.56 [U52](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U61](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.56 190.64/63.56 [U72](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [isPal](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [U81](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [n__nil] = [0] 190.64/63.56 190.64/63.56 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.56 190.64/63.56 [isQid](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [isNePal](x1) = [1] x1 + [1] 190.64/63.56 190.64/63.56 [n__a] = [1] 190.64/63.56 190.64/63.56 [n__e] = [0] 190.64/63.56 190.64/63.56 [n__i] = [0] 190.64/63.56 190.64/63.56 [n__o] = [0] 190.64/63.56 190.64/63.56 [n__u] = [0] 190.64/63.56 190.64/63.56 [a] = [2] 190.64/63.56 190.64/63.56 [e] = [2] 190.64/63.56 190.64/63.56 [i] = [2] 190.64/63.56 190.64/63.56 [o] = [2] 190.64/63.56 190.64/63.56 [u] = [2] 190.64/63.56 190.64/63.56 The order satisfies the following ordering constraints: 190.64/63.56 190.64/63.56 [__(X1, X2)] = [1] X1 + [1] X2 + [2] 190.64/63.56 > [1] X1 + [1] X2 + [1] 190.64/63.56 = [n____(X1, X2)] 190.64/63.56 190.64/63.56 [__(X, nil())] = [1] X + [4] 190.64/63.56 > [1] X + [0] 190.64/63.56 = [X] 190.64/63.56 190.64/63.56 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [4] 190.64/63.56 >= [1] X + [1] Y + [1] Z + [4] 190.64/63.56 = [__(X, __(Y, Z))] 190.64/63.56 190.64/63.56 [__(nil(), X)] = [1] X + [4] 190.64/63.56 > [1] X + [0] 190.64/63.56 = [X] 190.64/63.56 190.64/63.56 [nil()] = [2] 190.64/63.56 > [0] 190.64/63.56 = [n__nil()] 190.64/63.56 190.64/63.56 [U11(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.56 >= [1] V2 + [0] 190.64/63.56 = [U22(isList(activate(V2)))] 190.64/63.56 190.64/63.56 [U22(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isList(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U11(isNeList(activate(V)))] 190.64/63.56 190.64/63.56 [isList(n__nil())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.56 > [1] V2 + [1] V1 + [0] 190.64/63.56 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.56 190.64/63.56 [activate(X)] = [1] X + [0] 190.64/63.56 >= [1] X + [0] 190.64/63.56 = [X] 190.64/63.56 190.64/63.56 [activate(n__nil())] = [0] 190.64/63.56 ? [2] 190.64/63.56 = [nil()] 190.64/63.56 190.64/63.56 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.64/63.56 ? [1] X1 + [1] X2 + [2] 190.64/63.56 = [__(X1, X2)] 190.64/63.56 190.64/63.56 [activate(n__a())] = [1] 190.64/63.56 ? [2] 190.64/63.56 = [a()] 190.64/63.56 190.64/63.56 [activate(n__e())] = [0] 190.64/63.56 ? [2] 190.64/63.56 = [e()] 190.64/63.56 190.64/63.56 [activate(n__i())] = [0] 190.64/63.56 ? [2] 190.64/63.56 = [i()] 190.64/63.56 190.64/63.56 [activate(n__o())] = [0] 190.64/63.56 ? [2] 190.64/63.56 = [o()] 190.64/63.56 190.64/63.56 [activate(n__u())] = [0] 190.64/63.56 ? [2] 190.64/63.56 = [u()] 190.64/63.56 190.64/63.56 [U31(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.56 >= [1] V2 + [0] 190.64/63.56 = [U42(isNeList(activate(V2)))] 190.64/63.56 190.64/63.56 [U42(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isNeList(V)] = [1] V + [0] 190.64/63.56 >= [1] V + [0] 190.64/63.56 = [U31(isQid(activate(V)))] 190.64/63.56 190.64/63.56 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.56 > [1] V2 + [1] V1 + [0] 190.64/63.56 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.56 190.64/63.56 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.56 > [1] V2 + [1] V1 + [0] 190.64/63.56 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.56 190.64/63.56 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.56 >= [1] V2 + [0] 190.64/63.56 = [U52(isList(activate(V2)))] 190.64/63.56 190.64/63.56 [U52(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U61(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U71(tt(), P)] = [1] P + [0] 190.64/63.56 >= [1] P + [0] 190.64/63.56 = [U72(isPal(activate(P)))] 190.64/63.56 190.64/63.56 [U72(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isPal(V)] = [1] V + [0] 190.64/63.56 ? [1] V + [1] 190.64/63.56 = [U81(isNePal(activate(V)))] 190.64/63.56 190.64/63.56 [isPal(n__nil())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [U81(tt())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__a())] = [1] 190.64/63.56 > [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__e())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__i())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__o())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isQid(n__u())] = [0] 190.64/63.56 >= [0] 190.64/63.56 = [tt()] 190.64/63.56 190.64/63.56 [isNePal(V)] = [1] V + [1] 190.64/63.56 > [1] V + [0] 190.64/63.56 = [U61(isQid(activate(V)))] 190.64/63.56 190.64/63.56 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [4] 190.64/63.56 > [1] P + [1] I + [0] 190.64/63.56 = [U71(isQid(activate(I)), activate(P))] 190.64/63.56 190.64/63.56 [a()] = [2] 190.64/63.56 > [1] 190.64/63.56 = [n__a()] 190.64/63.56 190.64/63.56 [e()] = [2] 190.64/63.56 > [0] 190.64/63.56 = [n__e()] 190.64/63.56 190.64/63.56 [i()] = [2] 190.64/63.56 > [0] 190.64/63.56 = [n__i()] 190.64/63.56 190.64/63.56 [o()] = [2] 190.64/63.56 > [0] 190.64/63.56 = [n__o()] 190.64/63.56 190.64/63.56 [u()] = [2] 190.64/63.56 > [0] 190.64/63.56 = [n__u()] 190.64/63.56 190.64/63.56 190.64/63.56 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.64/63.56 190.64/63.56 We are left with following problem, upon which TcT provides the 190.64/63.56 certificate YES(O(1),O(n^2)). 190.64/63.56 190.64/63.56 Strict Trs: 190.64/63.56 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.56 , U11(tt()) -> tt() 190.64/63.56 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.56 , U22(tt()) -> tt() 190.64/63.56 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.56 , isList(n__nil()) -> tt() 190.64/63.56 , activate(X) -> X 190.64/63.56 , activate(n__nil()) -> nil() 190.64/63.56 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.56 , activate(n__a()) -> a() 190.64/63.56 , activate(n__e()) -> e() 190.64/63.56 , activate(n__i()) -> i() 190.64/63.56 , activate(n__o()) -> o() 190.64/63.56 , activate(n__u()) -> u() 190.64/63.56 , U31(tt()) -> tt() 190.64/63.56 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.56 , U42(tt()) -> tt() 190.64/63.56 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.56 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.56 , U52(tt()) -> tt() 190.64/63.56 , U61(tt()) -> tt() 190.64/63.56 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.56 , U72(tt()) -> tt() 190.64/63.56 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.56 , isPal(n__nil()) -> tt() 190.64/63.56 , U81(tt()) -> tt() 190.64/63.56 , isQid(n__e()) -> tt() 190.64/63.56 , isQid(n__i()) -> tt() 190.64/63.56 , isQid(n__o()) -> tt() 190.64/63.56 , isQid(n__u()) -> tt() } 190.64/63.56 Weak Trs: 190.64/63.56 { __(X1, X2) -> n____(X1, X2) 190.64/63.56 , __(X, nil()) -> X 190.64/63.56 , __(nil(), X) -> X 190.64/63.56 , nil() -> n__nil() 190.64/63.56 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.56 , isNeList(n____(V1, V2)) -> 190.64/63.56 U41(isList(activate(V1)), activate(V2)) 190.64/63.56 , isNeList(n____(V1, V2)) -> 190.64/63.56 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.56 , isQid(n__a()) -> tt() 190.64/63.56 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.56 , isNePal(n____(I, __(P, I))) -> 190.64/63.56 U71(isQid(activate(I)), activate(P)) 190.64/63.56 , a() -> n__a() 190.64/63.56 , e() -> n__e() 190.64/63.56 , i() -> n__i() 190.64/63.56 , o() -> n__o() 190.64/63.56 , u() -> n__u() } 190.64/63.56 Obligation: 190.64/63.56 derivational complexity 190.64/63.56 Answer: 190.64/63.56 YES(O(1),O(n^2)) 190.64/63.56 190.64/63.56 The weightgap principle applies (using the following nonconstant 190.64/63.56 growth matrix-interpretation) 190.64/63.56 190.64/63.56 TcT has computed the following triangular matrix interpretation. 190.64/63.56 Note that the diagonal of the component-wise maxima of 190.64/63.56 interpretation-entries contains no more than 1 non-zero entries. 190.64/63.56 190.64/63.56 [__](x1, x2) = [1] x1 + [1] x2 + [2] 190.64/63.56 190.64/63.56 [nil] = [2] 190.64/63.56 190.64/63.56 [U11](x1) = [1] x1 + [0] 190.64/63.56 190.64/63.56 [tt] = [0] 190.64/63.56 190.64/63.57 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U22](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isList](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [activate](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U31](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U42](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isNeList](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U52](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U61](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U72](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isPal](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U81](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [n__nil] = [1] 190.64/63.57 190.64/63.57 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.57 190.64/63.57 [isQid](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isNePal](x1) = [1] x1 + [1] 190.64/63.57 190.64/63.57 [n__a] = [1] 190.64/63.57 190.64/63.57 [n__e] = [0] 190.64/63.57 190.64/63.57 [n__i] = [0] 190.64/63.57 190.64/63.57 [n__o] = [0] 190.64/63.57 190.64/63.57 [n__u] = [0] 190.64/63.57 190.64/63.57 [a] = [2] 190.64/63.57 190.64/63.57 [e] = [2] 190.64/63.57 190.64/63.57 [i] = [2] 190.64/63.57 190.64/63.57 [o] = [2] 190.64/63.57 190.64/63.57 [u] = [2] 190.64/63.57 190.64/63.57 The order satisfies the following ordering constraints: 190.64/63.57 190.64/63.57 [__(X1, X2)] = [1] X1 + [1] X2 + [2] 190.64/63.57 > [1] X1 + [1] X2 + [1] 190.64/63.57 = [n____(X1, X2)] 190.64/63.57 190.64/63.57 [__(X, nil())] = [1] X + [4] 190.64/63.57 > [1] X + [0] 190.64/63.57 = [X] 190.64/63.57 190.64/63.57 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [4] 190.64/63.57 >= [1] X + [1] Y + [1] Z + [4] 190.64/63.57 = [__(X, __(Y, Z))] 190.64/63.57 190.64/63.57 [__(nil(), X)] = [1] X + [4] 190.64/63.57 > [1] X + [0] 190.64/63.57 = [X] 190.64/63.57 190.64/63.57 [nil()] = [2] 190.64/63.57 > [1] 190.64/63.57 = [n__nil()] 190.64/63.57 190.64/63.57 [U11(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.57 >= [1] V2 + [0] 190.64/63.57 = [U22(isList(activate(V2)))] 190.64/63.57 190.64/63.57 [U22(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isList(V)] = [1] V + [0] 190.64/63.57 >= [1] V + [0] 190.64/63.57 = [U11(isNeList(activate(V)))] 190.64/63.57 190.64/63.57 [isList(n__nil())] = [1] 190.64/63.57 > [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.57 > [1] V2 + [1] V1 + [0] 190.64/63.57 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.57 190.64/63.57 [activate(X)] = [1] X + [0] 190.64/63.57 >= [1] X + [0] 190.64/63.57 = [X] 190.64/63.57 190.64/63.57 [activate(n__nil())] = [1] 190.64/63.57 ? [2] 190.64/63.57 = [nil()] 190.64/63.57 190.64/63.57 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.64/63.57 ? [1] X1 + [1] X2 + [2] 190.64/63.57 = [__(X1, X2)] 190.64/63.57 190.64/63.57 [activate(n__a())] = [1] 190.64/63.57 ? [2] 190.64/63.57 = [a()] 190.64/63.57 190.64/63.57 [activate(n__e())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [e()] 190.64/63.57 190.64/63.57 [activate(n__i())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [i()] 190.64/63.57 190.64/63.57 [activate(n__o())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [o()] 190.64/63.57 190.64/63.57 [activate(n__u())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [u()] 190.64/63.57 190.64/63.57 [U31(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.57 >= [1] V2 + [0] 190.64/63.57 = [U42(isNeList(activate(V2)))] 190.64/63.57 190.64/63.57 [U42(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isNeList(V)] = [1] V + [0] 190.64/63.57 >= [1] V + [0] 190.64/63.57 = [U31(isQid(activate(V)))] 190.64/63.57 190.64/63.57 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.57 > [1] V2 + [1] V1 + [0] 190.64/63.57 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.57 190.64/63.57 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.57 > [1] V2 + [1] V1 + [0] 190.64/63.57 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.57 190.64/63.57 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.57 >= [1] V2 + [0] 190.64/63.57 = [U52(isList(activate(V2)))] 190.64/63.57 190.64/63.57 [U52(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U61(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U71(tt(), P)] = [1] P + [0] 190.64/63.57 >= [1] P + [0] 190.64/63.57 = [U72(isPal(activate(P)))] 190.64/63.57 190.64/63.57 [U72(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isPal(V)] = [1] V + [0] 190.64/63.57 ? [1] V + [1] 190.64/63.57 = [U81(isNePal(activate(V)))] 190.64/63.57 190.64/63.57 [isPal(n__nil())] = [1] 190.64/63.57 > [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U81(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__a())] = [1] 190.64/63.57 > [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__e())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__i())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__o())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__u())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isNePal(V)] = [1] V + [1] 190.64/63.57 > [1] V + [0] 190.64/63.57 = [U61(isQid(activate(V)))] 190.64/63.57 190.64/63.57 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [4] 190.64/63.57 > [1] P + [1] I + [0] 190.64/63.57 = [U71(isQid(activate(I)), activate(P))] 190.64/63.57 190.64/63.57 [a()] = [2] 190.64/63.57 > [1] 190.64/63.57 = [n__a()] 190.64/63.57 190.64/63.57 [e()] = [2] 190.64/63.57 > [0] 190.64/63.57 = [n__e()] 190.64/63.57 190.64/63.57 [i()] = [2] 190.64/63.57 > [0] 190.64/63.57 = [n__i()] 190.64/63.57 190.64/63.57 [o()] = [2] 190.64/63.57 > [0] 190.64/63.57 = [n__o()] 190.64/63.57 190.64/63.57 [u()] = [2] 190.64/63.57 > [0] 190.64/63.57 = [n__u()] 190.64/63.57 190.64/63.57 190.64/63.57 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.64/63.57 190.64/63.57 We are left with following problem, upon which TcT provides the 190.64/63.57 certificate YES(O(1),O(n^2)). 190.64/63.57 190.64/63.57 Strict Trs: 190.64/63.57 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.57 , U11(tt()) -> tt() 190.64/63.57 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.57 , U22(tt()) -> tt() 190.64/63.57 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.57 , activate(X) -> X 190.64/63.57 , activate(n__nil()) -> nil() 190.64/63.57 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.57 , activate(n__a()) -> a() 190.64/63.57 , activate(n__e()) -> e() 190.64/63.57 , activate(n__i()) -> i() 190.64/63.57 , activate(n__o()) -> o() 190.64/63.57 , activate(n__u()) -> u() 190.64/63.57 , U31(tt()) -> tt() 190.64/63.57 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.57 , U42(tt()) -> tt() 190.64/63.57 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.57 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.57 , U52(tt()) -> tt() 190.64/63.57 , U61(tt()) -> tt() 190.64/63.57 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.57 , U72(tt()) -> tt() 190.64/63.57 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.57 , U81(tt()) -> tt() 190.64/63.57 , isQid(n__e()) -> tt() 190.64/63.57 , isQid(n__i()) -> tt() 190.64/63.57 , isQid(n__o()) -> tt() 190.64/63.57 , isQid(n__u()) -> tt() } 190.64/63.57 Weak Trs: 190.64/63.57 { __(X1, X2) -> n____(X1, X2) 190.64/63.57 , __(X, nil()) -> X 190.64/63.57 , __(nil(), X) -> X 190.64/63.57 , nil() -> n__nil() 190.64/63.57 , isList(n__nil()) -> tt() 190.64/63.57 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.57 , isNeList(n____(V1, V2)) -> 190.64/63.57 U41(isList(activate(V1)), activate(V2)) 190.64/63.57 , isNeList(n____(V1, V2)) -> 190.64/63.57 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.57 , isPal(n__nil()) -> tt() 190.64/63.57 , isQid(n__a()) -> tt() 190.64/63.57 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.57 , isNePal(n____(I, __(P, I))) -> 190.64/63.57 U71(isQid(activate(I)), activate(P)) 190.64/63.57 , a() -> n__a() 190.64/63.57 , e() -> n__e() 190.64/63.57 , i() -> n__i() 190.64/63.57 , o() -> n__o() 190.64/63.57 , u() -> n__u() } 190.64/63.57 Obligation: 190.64/63.57 derivational complexity 190.64/63.57 Answer: 190.64/63.57 YES(O(1),O(n^2)) 190.64/63.57 190.64/63.57 The weightgap principle applies (using the following nonconstant 190.64/63.57 growth matrix-interpretation) 190.64/63.57 190.64/63.57 TcT has computed the following triangular matrix interpretation. 190.64/63.57 Note that the diagonal of the component-wise maxima of 190.64/63.57 interpretation-entries contains no more than 1 non-zero entries. 190.64/63.57 190.64/63.57 [__](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.57 190.64/63.57 [nil] = [2] 190.64/63.57 190.64/63.57 [U11](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [tt] = [0] 190.64/63.57 190.64/63.57 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U22](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isList](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [activate](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U31](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U42](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isNeList](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U52](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U61](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U72](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isPal](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U81](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [n__nil] = [0] 190.64/63.57 190.64/63.57 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.57 190.64/63.57 [isQid](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isNePal](x1) = [1] x1 + [2] 190.64/63.57 190.64/63.57 [n__a] = [1] 190.64/63.57 190.64/63.57 [n__e] = [0] 190.64/63.57 190.64/63.57 [n__i] = [1] 190.64/63.57 190.64/63.57 [n__o] = [0] 190.64/63.57 190.64/63.57 [n__u] = [0] 190.64/63.57 190.64/63.57 [a] = [2] 190.64/63.57 190.64/63.57 [e] = [2] 190.64/63.57 190.64/63.57 [i] = [2] 190.64/63.57 190.64/63.57 [o] = [2] 190.64/63.57 190.64/63.57 [u] = [2] 190.64/63.57 190.64/63.57 The order satisfies the following ordering constraints: 190.64/63.57 190.64/63.57 [__(X1, X2)] = [1] X1 + [1] X2 + [1] 190.64/63.57 >= [1] X1 + [1] X2 + [1] 190.64/63.57 = [n____(X1, X2)] 190.64/63.57 190.64/63.57 [__(X, nil())] = [1] X + [3] 190.64/63.57 > [1] X + [0] 190.64/63.57 = [X] 190.64/63.57 190.64/63.57 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [2] 190.64/63.57 >= [1] X + [1] Y + [1] Z + [2] 190.64/63.57 = [__(X, __(Y, Z))] 190.64/63.57 190.64/63.57 [__(nil(), X)] = [1] X + [3] 190.64/63.57 > [1] X + [0] 190.64/63.57 = [X] 190.64/63.57 190.64/63.57 [nil()] = [2] 190.64/63.57 > [0] 190.64/63.57 = [n__nil()] 190.64/63.57 190.64/63.57 [U11(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.57 >= [1] V2 + [0] 190.64/63.57 = [U22(isList(activate(V2)))] 190.64/63.57 190.64/63.57 [U22(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isList(V)] = [1] V + [0] 190.64/63.57 >= [1] V + [0] 190.64/63.57 = [U11(isNeList(activate(V)))] 190.64/63.57 190.64/63.57 [isList(n__nil())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.57 > [1] V2 + [1] V1 + [0] 190.64/63.57 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.57 190.64/63.57 [activate(X)] = [1] X + [0] 190.64/63.57 >= [1] X + [0] 190.64/63.57 = [X] 190.64/63.57 190.64/63.57 [activate(n__nil())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [nil()] 190.64/63.57 190.64/63.57 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.64/63.57 >= [1] X1 + [1] X2 + [1] 190.64/63.57 = [__(X1, X2)] 190.64/63.57 190.64/63.57 [activate(n__a())] = [1] 190.64/63.57 ? [2] 190.64/63.57 = [a()] 190.64/63.57 190.64/63.57 [activate(n__e())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [e()] 190.64/63.57 190.64/63.57 [activate(n__i())] = [1] 190.64/63.57 ? [2] 190.64/63.57 = [i()] 190.64/63.57 190.64/63.57 [activate(n__o())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [o()] 190.64/63.57 190.64/63.57 [activate(n__u())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [u()] 190.64/63.57 190.64/63.57 [U31(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.57 >= [1] V2 + [0] 190.64/63.57 = [U42(isNeList(activate(V2)))] 190.64/63.57 190.64/63.57 [U42(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isNeList(V)] = [1] V + [0] 190.64/63.57 >= [1] V + [0] 190.64/63.57 = [U31(isQid(activate(V)))] 190.64/63.57 190.64/63.57 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.57 > [1] V2 + [1] V1 + [0] 190.64/63.57 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.57 190.64/63.57 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.57 > [1] V2 + [1] V1 + [0] 190.64/63.57 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.57 190.64/63.57 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.57 >= [1] V2 + [0] 190.64/63.57 = [U52(isList(activate(V2)))] 190.64/63.57 190.64/63.57 [U52(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U61(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U71(tt(), P)] = [1] P + [0] 190.64/63.57 >= [1] P + [0] 190.64/63.57 = [U72(isPal(activate(P)))] 190.64/63.57 190.64/63.57 [U72(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isPal(V)] = [1] V + [0] 190.64/63.57 ? [1] V + [2] 190.64/63.57 = [U81(isNePal(activate(V)))] 190.64/63.57 190.64/63.57 [isPal(n__nil())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U81(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__a())] = [1] 190.64/63.57 > [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__e())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__i())] = [1] 190.64/63.57 > [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__o())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isQid(n__u())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isNePal(V)] = [1] V + [2] 190.64/63.57 > [1] V + [0] 190.64/63.57 = [U61(isQid(activate(V)))] 190.64/63.57 190.64/63.57 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [4] 190.64/63.57 > [1] P + [1] I + [0] 190.64/63.57 = [U71(isQid(activate(I)), activate(P))] 190.64/63.57 190.64/63.57 [a()] = [2] 190.64/63.57 > [1] 190.64/63.57 = [n__a()] 190.64/63.57 190.64/63.57 [e()] = [2] 190.64/63.57 > [0] 190.64/63.57 = [n__e()] 190.64/63.57 190.64/63.57 [i()] = [2] 190.64/63.57 > [1] 190.64/63.57 = [n__i()] 190.64/63.57 190.64/63.57 [o()] = [2] 190.64/63.57 > [0] 190.64/63.57 = [n__o()] 190.64/63.57 190.64/63.57 [u()] = [2] 190.64/63.57 > [0] 190.64/63.57 = [n__u()] 190.64/63.57 190.64/63.57 190.64/63.57 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.64/63.57 190.64/63.57 We are left with following problem, upon which TcT provides the 190.64/63.57 certificate YES(O(1),O(n^2)). 190.64/63.57 190.64/63.57 Strict Trs: 190.64/63.57 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.57 , U11(tt()) -> tt() 190.64/63.57 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.57 , U22(tt()) -> tt() 190.64/63.57 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.57 , activate(X) -> X 190.64/63.57 , activate(n__nil()) -> nil() 190.64/63.57 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.57 , activate(n__a()) -> a() 190.64/63.57 , activate(n__e()) -> e() 190.64/63.57 , activate(n__i()) -> i() 190.64/63.57 , activate(n__o()) -> o() 190.64/63.57 , activate(n__u()) -> u() 190.64/63.57 , U31(tt()) -> tt() 190.64/63.57 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.57 , U42(tt()) -> tt() 190.64/63.57 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.57 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.57 , U52(tt()) -> tt() 190.64/63.57 , U61(tt()) -> tt() 190.64/63.57 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.57 , U72(tt()) -> tt() 190.64/63.57 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.57 , U81(tt()) -> tt() 190.64/63.57 , isQid(n__e()) -> tt() 190.64/63.57 , isQid(n__o()) -> tt() 190.64/63.57 , isQid(n__u()) -> tt() } 190.64/63.57 Weak Trs: 190.64/63.57 { __(X1, X2) -> n____(X1, X2) 190.64/63.57 , __(X, nil()) -> X 190.64/63.57 , __(nil(), X) -> X 190.64/63.57 , nil() -> n__nil() 190.64/63.57 , isList(n__nil()) -> tt() 190.64/63.57 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.57 , isNeList(n____(V1, V2)) -> 190.64/63.57 U41(isList(activate(V1)), activate(V2)) 190.64/63.57 , isNeList(n____(V1, V2)) -> 190.64/63.57 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.57 , isPal(n__nil()) -> tt() 190.64/63.57 , isQid(n__a()) -> tt() 190.64/63.57 , isQid(n__i()) -> tt() 190.64/63.57 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.57 , isNePal(n____(I, __(P, I))) -> 190.64/63.57 U71(isQid(activate(I)), activate(P)) 190.64/63.57 , a() -> n__a() 190.64/63.57 , e() -> n__e() 190.64/63.57 , i() -> n__i() 190.64/63.57 , o() -> n__o() 190.64/63.57 , u() -> n__u() } 190.64/63.57 Obligation: 190.64/63.57 derivational complexity 190.64/63.57 Answer: 190.64/63.57 YES(O(1),O(n^2)) 190.64/63.57 190.64/63.57 The weightgap principle applies (using the following nonconstant 190.64/63.57 growth matrix-interpretation) 190.64/63.57 190.64/63.57 TcT has computed the following triangular matrix interpretation. 190.64/63.57 Note that the diagonal of the component-wise maxima of 190.64/63.57 interpretation-entries contains no more than 1 non-zero entries. 190.64/63.57 190.64/63.57 [__](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.57 190.64/63.57 [nil] = [2] 190.64/63.57 190.64/63.57 [U11](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [tt] = [0] 190.64/63.57 190.64/63.57 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U22](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isList](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [activate](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U31](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U42](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isNeList](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U52](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U61](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.57 190.64/63.57 [U72](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isPal](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [U81](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [n__nil] = [0] 190.64/63.57 190.64/63.57 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.57 190.64/63.57 [isQid](x1) = [1] x1 + [0] 190.64/63.57 190.64/63.57 [isNePal](x1) = [1] x1 + [2] 190.64/63.57 190.64/63.57 [n__a] = [1] 190.64/63.57 190.64/63.57 [n__e] = [1] 190.64/63.57 190.64/63.57 [n__i] = [1] 190.64/63.57 190.64/63.57 [n__o] = [0] 190.64/63.57 190.64/63.57 [n__u] = [0] 190.64/63.57 190.64/63.57 [a] = [2] 190.64/63.57 190.64/63.57 [e] = [2] 190.64/63.57 190.64/63.57 [i] = [2] 190.64/63.57 190.64/63.57 [o] = [2] 190.64/63.57 190.64/63.57 [u] = [2] 190.64/63.57 190.64/63.57 The order satisfies the following ordering constraints: 190.64/63.57 190.64/63.57 [__(X1, X2)] = [1] X1 + [1] X2 + [1] 190.64/63.57 >= [1] X1 + [1] X2 + [1] 190.64/63.57 = [n____(X1, X2)] 190.64/63.57 190.64/63.57 [__(X, nil())] = [1] X + [3] 190.64/63.57 > [1] X + [0] 190.64/63.57 = [X] 190.64/63.57 190.64/63.57 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [2] 190.64/63.57 >= [1] X + [1] Y + [1] Z + [2] 190.64/63.57 = [__(X, __(Y, Z))] 190.64/63.57 190.64/63.57 [__(nil(), X)] = [1] X + [3] 190.64/63.57 > [1] X + [0] 190.64/63.57 = [X] 190.64/63.57 190.64/63.57 [nil()] = [2] 190.64/63.57 > [0] 190.64/63.57 = [n__nil()] 190.64/63.57 190.64/63.57 [U11(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.57 >= [1] V2 + [0] 190.64/63.57 = [U22(isList(activate(V2)))] 190.64/63.57 190.64/63.57 [U22(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isList(V)] = [1] V + [0] 190.64/63.57 >= [1] V + [0] 190.64/63.57 = [U11(isNeList(activate(V)))] 190.64/63.57 190.64/63.57 [isList(n__nil())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.57 > [1] V2 + [1] V1 + [0] 190.64/63.57 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.57 190.64/63.57 [activate(X)] = [1] X + [0] 190.64/63.57 >= [1] X + [0] 190.64/63.57 = [X] 190.64/63.57 190.64/63.57 [activate(n__nil())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [nil()] 190.64/63.57 190.64/63.57 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.64/63.57 >= [1] X1 + [1] X2 + [1] 190.64/63.57 = [__(X1, X2)] 190.64/63.57 190.64/63.57 [activate(n__a())] = [1] 190.64/63.57 ? [2] 190.64/63.57 = [a()] 190.64/63.57 190.64/63.57 [activate(n__e())] = [1] 190.64/63.57 ? [2] 190.64/63.57 = [e()] 190.64/63.57 190.64/63.57 [activate(n__i())] = [1] 190.64/63.57 ? [2] 190.64/63.57 = [i()] 190.64/63.57 190.64/63.57 [activate(n__o())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [o()] 190.64/63.57 190.64/63.57 [activate(n__u())] = [0] 190.64/63.57 ? [2] 190.64/63.57 = [u()] 190.64/63.57 190.64/63.57 [U31(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.57 >= [1] V2 + [0] 190.64/63.57 = [U42(isNeList(activate(V2)))] 190.64/63.57 190.64/63.57 [U42(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isNeList(V)] = [1] V + [0] 190.64/63.57 >= [1] V + [0] 190.64/63.57 = [U31(isQid(activate(V)))] 190.64/63.57 190.64/63.57 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.57 > [1] V2 + [1] V1 + [0] 190.64/63.57 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.57 190.64/63.57 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.57 > [1] V2 + [1] V1 + [0] 190.64/63.57 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.57 190.64/63.57 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.57 >= [1] V2 + [0] 190.64/63.57 = [U52(isList(activate(V2)))] 190.64/63.57 190.64/63.57 [U52(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U61(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [U71(tt(), P)] = [1] P + [0] 190.64/63.57 >= [1] P + [0] 190.64/63.57 = [U72(isPal(activate(P)))] 190.64/63.57 190.64/63.57 [U72(tt())] = [0] 190.64/63.57 >= [0] 190.64/63.57 = [tt()] 190.64/63.57 190.64/63.57 [isPal(V)] = [1] V + [0] 190.64/63.57 ? [1] V + [2] 190.64/63.57 = [U81(isNePal(activate(V)))] 190.64/63.57 190.64/63.57 [isPal(n__nil())] = [0] 190.64/63.57 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U81(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__a())] = [1] 190.64/63.58 > [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__e())] = [1] 190.64/63.58 > [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__i())] = [1] 190.64/63.58 > [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__o())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__u())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isNePal(V)] = [1] V + [2] 190.64/63.58 > [1] V + [0] 190.64/63.58 = [U61(isQid(activate(V)))] 190.64/63.58 190.64/63.58 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [4] 190.64/63.58 > [1] P + [1] I + [0] 190.64/63.58 = [U71(isQid(activate(I)), activate(P))] 190.64/63.58 190.64/63.58 [a()] = [2] 190.64/63.58 > [1] 190.64/63.58 = [n__a()] 190.64/63.58 190.64/63.58 [e()] = [2] 190.64/63.58 > [1] 190.64/63.58 = [n__e()] 190.64/63.58 190.64/63.58 [i()] = [2] 190.64/63.58 > [1] 190.64/63.58 = [n__i()] 190.64/63.58 190.64/63.58 [o()] = [2] 190.64/63.58 > [0] 190.64/63.58 = [n__o()] 190.64/63.58 190.64/63.58 [u()] = [2] 190.64/63.58 > [0] 190.64/63.58 = [n__u()] 190.64/63.58 190.64/63.58 190.64/63.58 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.64/63.58 190.64/63.58 We are left with following problem, upon which TcT provides the 190.64/63.58 certificate YES(O(1),O(n^2)). 190.64/63.58 190.64/63.58 Strict Trs: 190.64/63.58 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.58 , U11(tt()) -> tt() 190.64/63.58 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.58 , U22(tt()) -> tt() 190.64/63.58 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.58 , activate(X) -> X 190.64/63.58 , activate(n__nil()) -> nil() 190.64/63.58 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.58 , activate(n__a()) -> a() 190.64/63.58 , activate(n__e()) -> e() 190.64/63.58 , activate(n__i()) -> i() 190.64/63.58 , activate(n__o()) -> o() 190.64/63.58 , activate(n__u()) -> u() 190.64/63.58 , U31(tt()) -> tt() 190.64/63.58 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.58 , U42(tt()) -> tt() 190.64/63.58 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.58 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.58 , U52(tt()) -> tt() 190.64/63.58 , U61(tt()) -> tt() 190.64/63.58 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.58 , U72(tt()) -> tt() 190.64/63.58 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.58 , U81(tt()) -> tt() 190.64/63.58 , isQid(n__o()) -> tt() 190.64/63.58 , isQid(n__u()) -> tt() } 190.64/63.58 Weak Trs: 190.64/63.58 { __(X1, X2) -> n____(X1, X2) 190.64/63.58 , __(X, nil()) -> X 190.64/63.58 , __(nil(), X) -> X 190.64/63.58 , nil() -> n__nil() 190.64/63.58 , isList(n__nil()) -> tt() 190.64/63.58 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.58 , isNeList(n____(V1, V2)) -> 190.64/63.58 U41(isList(activate(V1)), activate(V2)) 190.64/63.58 , isNeList(n____(V1, V2)) -> 190.64/63.58 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.58 , isPal(n__nil()) -> tt() 190.64/63.58 , isQid(n__a()) -> tt() 190.64/63.58 , isQid(n__e()) -> tt() 190.64/63.58 , isQid(n__i()) -> tt() 190.64/63.58 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.58 , isNePal(n____(I, __(P, I))) -> 190.64/63.58 U71(isQid(activate(I)), activate(P)) 190.64/63.58 , a() -> n__a() 190.64/63.58 , e() -> n__e() 190.64/63.58 , i() -> n__i() 190.64/63.58 , o() -> n__o() 190.64/63.58 , u() -> n__u() } 190.64/63.58 Obligation: 190.64/63.58 derivational complexity 190.64/63.58 Answer: 190.64/63.58 YES(O(1),O(n^2)) 190.64/63.58 190.64/63.58 We use the processor 'matrix interpretation of dimension 1' to 190.64/63.58 orient following rules strictly. 190.64/63.58 190.64/63.58 Trs: { isQid(n__o()) -> tt() } 190.64/63.58 190.64/63.58 The induced complexity on above rules (modulo remaining rules) is 190.64/63.58 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.64/63.58 component(s). 190.64/63.58 190.64/63.58 Sub-proof: 190.64/63.58 ---------- 190.64/63.58 TcT has computed the following triangular matrix interpretation. 190.64/63.58 190.64/63.58 [__](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [nil] = [0] 190.64/63.58 190.64/63.58 [U11](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [tt] = [0] 190.64/63.58 190.64/63.58 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U22](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isList](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [activate](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U31](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U42](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isNeList](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U52](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U61](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U72](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isPal](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U81](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [n__nil] = [0] 190.64/63.58 190.64/63.58 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [isQid](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isNePal](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [n__a] = [1] 190.64/63.58 190.64/63.58 [n__e] = [0] 190.64/63.58 190.64/63.58 [n__i] = [0] 190.64/63.58 190.64/63.58 [n__o] = [1] 190.64/63.58 190.64/63.58 [n__u] = [0] 190.64/63.58 190.64/63.58 [a] = [1] 190.64/63.58 190.64/63.58 [e] = [0] 190.64/63.58 190.64/63.58 [i] = [0] 190.64/63.58 190.64/63.58 [o] = [1] 190.64/63.58 190.64/63.58 [u] = [0] 190.64/63.58 190.64/63.58 The order satisfies the following ordering constraints: 190.64/63.58 190.64/63.58 [__(X1, X2)] = [1] X1 + [1] X2 + [0] 190.64/63.58 >= [1] X1 + [1] X2 + [0] 190.64/63.58 = [n____(X1, X2)] 190.64/63.58 190.64/63.58 [__(X, nil())] = [1] X + [0] 190.64/63.58 >= [1] X + [0] 190.64/63.58 = [X] 190.64/63.58 190.64/63.58 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [0] 190.64/63.58 >= [1] X + [1] Y + [1] Z + [0] 190.64/63.58 = [__(X, __(Y, Z))] 190.64/63.58 190.64/63.58 [__(nil(), X)] = [1] X + [0] 190.64/63.58 >= [1] X + [0] 190.64/63.58 = [X] 190.64/63.58 190.64/63.58 [nil()] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [n__nil()] 190.64/63.58 190.64/63.58 [U11(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.58 >= [1] V2 + [0] 190.64/63.58 = [U22(isList(activate(V2)))] 190.64/63.58 190.64/63.58 [U22(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isList(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.58 = [U11(isNeList(activate(V)))] 190.64/63.58 190.64/63.58 [isList(n__nil())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.58 >= [1] V2 + [1] V1 + [0] 190.64/63.58 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.58 190.64/63.58 [activate(X)] = [1] X + [0] 190.64/63.58 >= [1] X + [0] 190.64/63.58 = [X] 190.64/63.58 190.64/63.58 [activate(n__nil())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [nil()] 190.64/63.58 190.64/63.58 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.64/63.58 >= [1] X1 + [1] X2 + [0] 190.64/63.58 = [__(X1, X2)] 190.64/63.58 190.64/63.58 [activate(n__a())] = [1] 190.64/63.58 >= [1] 190.64/63.58 = [a()] 190.64/63.58 190.64/63.58 [activate(n__e())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [e()] 190.64/63.58 190.64/63.58 [activate(n__i())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [i()] 190.64/63.58 190.64/63.58 [activate(n__o())] = [1] 190.64/63.58 >= [1] 190.64/63.58 = [o()] 190.64/63.58 190.64/63.58 [activate(n__u())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [u()] 190.64/63.58 190.64/63.58 [U31(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.58 >= [1] V2 + [0] 190.64/63.58 = [U42(isNeList(activate(V2)))] 190.64/63.58 190.64/63.58 [U42(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isNeList(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.58 = [U31(isQid(activate(V)))] 190.64/63.58 190.64/63.58 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.58 >= [1] V2 + [1] V1 + [0] 190.64/63.58 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.58 190.64/63.58 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.58 >= [1] V2 + [1] V1 + [0] 190.64/63.58 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.58 190.64/63.58 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.58 >= [1] V2 + [0] 190.64/63.58 = [U52(isList(activate(V2)))] 190.64/63.58 190.64/63.58 [U52(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U61(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U71(tt(), P)] = [1] P + [0] 190.64/63.58 >= [1] P + [0] 190.64/63.58 = [U72(isPal(activate(P)))] 190.64/63.58 190.64/63.58 [U72(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isPal(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.58 = [U81(isNePal(activate(V)))] 190.64/63.58 190.64/63.58 [isPal(n__nil())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U81(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__a())] = [1] 190.64/63.58 > [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__e())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__i())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__o())] = [1] 190.64/63.58 > [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__u())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isNePal(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.58 = [U61(isQid(activate(V)))] 190.64/63.58 190.64/63.58 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [0] 190.64/63.58 >= [1] P + [1] I + [0] 190.64/63.58 = [U71(isQid(activate(I)), activate(P))] 190.64/63.58 190.64/63.58 [a()] = [1] 190.64/63.58 >= [1] 190.64/63.58 = [n__a()] 190.64/63.58 190.64/63.58 [e()] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [n__e()] 190.64/63.58 190.64/63.58 [i()] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [n__i()] 190.64/63.58 190.64/63.58 [o()] = [1] 190.64/63.58 >= [1] 190.64/63.58 = [n__o()] 190.64/63.58 190.64/63.58 [u()] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [n__u()] 190.64/63.58 190.64/63.58 190.64/63.58 We return to the main proof. 190.64/63.58 190.64/63.58 We are left with following problem, upon which TcT provides the 190.64/63.58 certificate YES(O(1),O(n^2)). 190.64/63.58 190.64/63.58 Strict Trs: 190.64/63.58 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.58 , U11(tt()) -> tt() 190.64/63.58 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.58 , U22(tt()) -> tt() 190.64/63.58 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.58 , activate(X) -> X 190.64/63.58 , activate(n__nil()) -> nil() 190.64/63.58 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.58 , activate(n__a()) -> a() 190.64/63.58 , activate(n__e()) -> e() 190.64/63.58 , activate(n__i()) -> i() 190.64/63.58 , activate(n__o()) -> o() 190.64/63.58 , activate(n__u()) -> u() 190.64/63.58 , U31(tt()) -> tt() 190.64/63.58 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.58 , U42(tt()) -> tt() 190.64/63.58 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.58 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.58 , U52(tt()) -> tt() 190.64/63.58 , U61(tt()) -> tt() 190.64/63.58 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.58 , U72(tt()) -> tt() 190.64/63.58 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.58 , U81(tt()) -> tt() 190.64/63.58 , isQid(n__u()) -> tt() } 190.64/63.58 Weak Trs: 190.64/63.58 { __(X1, X2) -> n____(X1, X2) 190.64/63.58 , __(X, nil()) -> X 190.64/63.58 , __(nil(), X) -> X 190.64/63.58 , nil() -> n__nil() 190.64/63.58 , isList(n__nil()) -> tt() 190.64/63.58 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.58 , isNeList(n____(V1, V2)) -> 190.64/63.58 U41(isList(activate(V1)), activate(V2)) 190.64/63.58 , isNeList(n____(V1, V2)) -> 190.64/63.58 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.58 , isPal(n__nil()) -> tt() 190.64/63.58 , isQid(n__a()) -> tt() 190.64/63.58 , isQid(n__e()) -> tt() 190.64/63.58 , isQid(n__i()) -> tt() 190.64/63.58 , isQid(n__o()) -> tt() 190.64/63.58 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.58 , isNePal(n____(I, __(P, I))) -> 190.64/63.58 U71(isQid(activate(I)), activate(P)) 190.64/63.58 , a() -> n__a() 190.64/63.58 , e() -> n__e() 190.64/63.58 , i() -> n__i() 190.64/63.58 , o() -> n__o() 190.64/63.58 , u() -> n__u() } 190.64/63.58 Obligation: 190.64/63.58 derivational complexity 190.64/63.58 Answer: 190.64/63.58 YES(O(1),O(n^2)) 190.64/63.58 190.64/63.58 We use the processor 'matrix interpretation of dimension 1' to 190.64/63.58 orient following rules strictly. 190.64/63.58 190.64/63.58 Trs: { isQid(n__u()) -> tt() } 190.64/63.58 190.64/63.58 The induced complexity on above rules (modulo remaining rules) is 190.64/63.58 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.64/63.58 component(s). 190.64/63.58 190.64/63.58 Sub-proof: 190.64/63.58 ---------- 190.64/63.58 TcT has computed the following triangular matrix interpretation. 190.64/63.58 190.64/63.58 [__](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [nil] = [0] 190.64/63.58 190.64/63.58 [U11](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [tt] = [0] 190.64/63.58 190.64/63.58 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U22](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isList](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [activate](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U31](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U42](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isNeList](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U52](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U61](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U72](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isPal](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U81](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [n__nil] = [0] 190.64/63.58 190.64/63.58 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [isQid](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isNePal](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [n__a] = [0] 190.64/63.58 190.64/63.58 [n__e] = [0] 190.64/63.58 190.64/63.58 [n__i] = [1] 190.64/63.58 190.64/63.58 [n__o] = [0] 190.64/63.58 190.64/63.58 [n__u] = [1] 190.64/63.58 190.64/63.58 [a] = [0] 190.64/63.58 190.64/63.58 [e] = [0] 190.64/63.58 190.64/63.58 [i] = [1] 190.64/63.58 190.64/63.58 [o] = [0] 190.64/63.58 190.64/63.58 [u] = [1] 190.64/63.58 190.64/63.58 The order satisfies the following ordering constraints: 190.64/63.58 190.64/63.58 [__(X1, X2)] = [1] X1 + [1] X2 + [0] 190.64/63.58 >= [1] X1 + [1] X2 + [0] 190.64/63.58 = [n____(X1, X2)] 190.64/63.58 190.64/63.58 [__(X, nil())] = [1] X + [0] 190.64/63.58 >= [1] X + [0] 190.64/63.58 = [X] 190.64/63.58 190.64/63.58 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [0] 190.64/63.58 >= [1] X + [1] Y + [1] Z + [0] 190.64/63.58 = [__(X, __(Y, Z))] 190.64/63.58 190.64/63.58 [__(nil(), X)] = [1] X + [0] 190.64/63.58 >= [1] X + [0] 190.64/63.58 = [X] 190.64/63.58 190.64/63.58 [nil()] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [n__nil()] 190.64/63.58 190.64/63.58 [U11(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.58 >= [1] V2 + [0] 190.64/63.58 = [U22(isList(activate(V2)))] 190.64/63.58 190.64/63.58 [U22(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isList(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.58 = [U11(isNeList(activate(V)))] 190.64/63.58 190.64/63.58 [isList(n__nil())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.58 >= [1] V2 + [1] V1 + [0] 190.64/63.58 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.58 190.64/63.58 [activate(X)] = [1] X + [0] 190.64/63.58 >= [1] X + [0] 190.64/63.58 = [X] 190.64/63.58 190.64/63.58 [activate(n__nil())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [nil()] 190.64/63.58 190.64/63.58 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.64/63.58 >= [1] X1 + [1] X2 + [0] 190.64/63.58 = [__(X1, X2)] 190.64/63.58 190.64/63.58 [activate(n__a())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [a()] 190.64/63.58 190.64/63.58 [activate(n__e())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [e()] 190.64/63.58 190.64/63.58 [activate(n__i())] = [1] 190.64/63.58 >= [1] 190.64/63.58 = [i()] 190.64/63.58 190.64/63.58 [activate(n__o())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [o()] 190.64/63.58 190.64/63.58 [activate(n__u())] = [1] 190.64/63.58 >= [1] 190.64/63.58 = [u()] 190.64/63.58 190.64/63.58 [U31(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.58 >= [1] V2 + [0] 190.64/63.58 = [U42(isNeList(activate(V2)))] 190.64/63.58 190.64/63.58 [U42(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isNeList(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.58 = [U31(isQid(activate(V)))] 190.64/63.58 190.64/63.58 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.58 >= [1] V2 + [1] V1 + [0] 190.64/63.58 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.58 190.64/63.58 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.58 >= [1] V2 + [1] V1 + [0] 190.64/63.58 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.58 190.64/63.58 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.58 >= [1] V2 + [0] 190.64/63.58 = [U52(isList(activate(V2)))] 190.64/63.58 190.64/63.58 [U52(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U61(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U71(tt(), P)] = [1] P + [0] 190.64/63.58 >= [1] P + [0] 190.64/63.58 = [U72(isPal(activate(P)))] 190.64/63.58 190.64/63.58 [U72(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isPal(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.58 = [U81(isNePal(activate(V)))] 190.64/63.58 190.64/63.58 [isPal(n__nil())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U81(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__a())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__e())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__i())] = [1] 190.64/63.58 > [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__o())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isQid(n__u())] = [1] 190.64/63.58 > [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isNePal(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.58 = [U61(isQid(activate(V)))] 190.64/63.58 190.64/63.58 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [0] 190.64/63.58 >= [1] P + [1] I + [0] 190.64/63.58 = [U71(isQid(activate(I)), activate(P))] 190.64/63.58 190.64/63.58 [a()] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [n__a()] 190.64/63.58 190.64/63.58 [e()] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [n__e()] 190.64/63.58 190.64/63.58 [i()] = [1] 190.64/63.58 >= [1] 190.64/63.58 = [n__i()] 190.64/63.58 190.64/63.58 [o()] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [n__o()] 190.64/63.58 190.64/63.58 [u()] = [1] 190.64/63.58 >= [1] 190.64/63.58 = [n__u()] 190.64/63.58 190.64/63.58 190.64/63.58 We return to the main proof. 190.64/63.58 190.64/63.58 We are left with following problem, upon which TcT provides the 190.64/63.58 certificate YES(O(1),O(n^2)). 190.64/63.58 190.64/63.58 Strict Trs: 190.64/63.58 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.58 , U11(tt()) -> tt() 190.64/63.58 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.58 , U22(tt()) -> tt() 190.64/63.58 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.58 , activate(X) -> X 190.64/63.58 , activate(n__nil()) -> nil() 190.64/63.58 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.58 , activate(n__a()) -> a() 190.64/63.58 , activate(n__e()) -> e() 190.64/63.58 , activate(n__i()) -> i() 190.64/63.58 , activate(n__o()) -> o() 190.64/63.58 , activate(n__u()) -> u() 190.64/63.58 , U31(tt()) -> tt() 190.64/63.58 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.58 , U42(tt()) -> tt() 190.64/63.58 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.58 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.58 , U52(tt()) -> tt() 190.64/63.58 , U61(tt()) -> tt() 190.64/63.58 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.58 , U72(tt()) -> tt() 190.64/63.58 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.58 , U81(tt()) -> tt() } 190.64/63.58 Weak Trs: 190.64/63.58 { __(X1, X2) -> n____(X1, X2) 190.64/63.58 , __(X, nil()) -> X 190.64/63.58 , __(nil(), X) -> X 190.64/63.58 , nil() -> n__nil() 190.64/63.58 , isList(n__nil()) -> tt() 190.64/63.58 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.58 , isNeList(n____(V1, V2)) -> 190.64/63.58 U41(isList(activate(V1)), activate(V2)) 190.64/63.58 , isNeList(n____(V1, V2)) -> 190.64/63.58 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.58 , isPal(n__nil()) -> tt() 190.64/63.58 , isQid(n__a()) -> tt() 190.64/63.58 , isQid(n__e()) -> tt() 190.64/63.58 , isQid(n__i()) -> tt() 190.64/63.58 , isQid(n__o()) -> tt() 190.64/63.58 , isQid(n__u()) -> tt() 190.64/63.58 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.58 , isNePal(n____(I, __(P, I))) -> 190.64/63.58 U71(isQid(activate(I)), activate(P)) 190.64/63.58 , a() -> n__a() 190.64/63.58 , e() -> n__e() 190.64/63.58 , i() -> n__i() 190.64/63.58 , o() -> n__o() 190.64/63.58 , u() -> n__u() } 190.64/63.58 Obligation: 190.64/63.58 derivational complexity 190.64/63.58 Answer: 190.64/63.58 YES(O(1),O(n^2)) 190.64/63.58 190.64/63.58 We use the processor 'matrix interpretation of dimension 1' to 190.64/63.58 orient following rules strictly. 190.64/63.58 190.64/63.58 Trs: { isPal(V) -> U81(isNePal(activate(V))) } 190.64/63.58 190.64/63.58 The induced complexity on above rules (modulo remaining rules) is 190.64/63.58 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.64/63.58 component(s). 190.64/63.58 190.64/63.58 Sub-proof: 190.64/63.58 ---------- 190.64/63.58 TcT has computed the following triangular matrix interpretation. 190.64/63.58 190.64/63.58 [__](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.58 190.64/63.58 [nil] = [0] 190.64/63.58 190.64/63.58 [U11](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [tt] = [0] 190.64/63.58 190.64/63.58 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U22](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isList](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [activate](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U31](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U42](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isNeList](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.58 190.64/63.58 [U52](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U61](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [U71](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.58 190.64/63.58 [U72](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isPal](x1) = [1] x1 + [1] 190.64/63.58 190.64/63.58 [U81](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [n__nil] = [0] 190.64/63.58 190.64/63.58 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.58 190.64/63.58 [isQid](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [isNePal](x1) = [1] x1 + [0] 190.64/63.58 190.64/63.58 [n__a] = [0] 190.64/63.58 190.64/63.58 [n__e] = [1] 190.64/63.58 190.64/63.58 [n__i] = [0] 190.64/63.58 190.64/63.58 [n__o] = [0] 190.64/63.58 190.64/63.58 [n__u] = [0] 190.64/63.58 190.64/63.58 [a] = [0] 190.64/63.58 190.64/63.58 [e] = [1] 190.64/63.58 190.64/63.58 [i] = [0] 190.64/63.58 190.64/63.58 [o] = [0] 190.64/63.58 190.64/63.58 [u] = [0] 190.64/63.58 190.64/63.58 The order satisfies the following ordering constraints: 190.64/63.58 190.64/63.58 [__(X1, X2)] = [1] X1 + [1] X2 + [1] 190.64/63.58 >= [1] X1 + [1] X2 + [1] 190.64/63.58 = [n____(X1, X2)] 190.64/63.58 190.64/63.58 [__(X, nil())] = [1] X + [1] 190.64/63.58 > [1] X + [0] 190.64/63.58 = [X] 190.64/63.58 190.64/63.58 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [2] 190.64/63.58 >= [1] X + [1] Y + [1] Z + [2] 190.64/63.58 = [__(X, __(Y, Z))] 190.64/63.58 190.64/63.58 [__(nil(), X)] = [1] X + [1] 190.64/63.58 > [1] X + [0] 190.64/63.58 = [X] 190.64/63.58 190.64/63.58 [nil()] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [n__nil()] 190.64/63.58 190.64/63.58 [U11(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.58 >= [1] V2 + [0] 190.64/63.58 = [U22(isList(activate(V2)))] 190.64/63.58 190.64/63.58 [U22(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isList(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.58 = [U11(isNeList(activate(V)))] 190.64/63.58 190.64/63.58 [isList(n__nil())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.58 > [1] V2 + [1] V1 + [0] 190.64/63.58 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.58 190.64/63.58 [activate(X)] = [1] X + [0] 190.64/63.58 >= [1] X + [0] 190.64/63.58 = [X] 190.64/63.58 190.64/63.58 [activate(n__nil())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [nil()] 190.64/63.58 190.64/63.58 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.64/63.58 >= [1] X1 + [1] X2 + [1] 190.64/63.58 = [__(X1, X2)] 190.64/63.58 190.64/63.58 [activate(n__a())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [a()] 190.64/63.58 190.64/63.58 [activate(n__e())] = [1] 190.64/63.58 >= [1] 190.64/63.58 = [e()] 190.64/63.58 190.64/63.58 [activate(n__i())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [i()] 190.64/63.58 190.64/63.58 [activate(n__o())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [o()] 190.64/63.58 190.64/63.58 [activate(n__u())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [u()] 190.64/63.58 190.64/63.58 [U31(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.58 >= [1] V2 + [0] 190.64/63.58 = [U42(isNeList(activate(V2)))] 190.64/63.58 190.64/63.58 [U42(tt())] = [0] 190.64/63.58 >= [0] 190.64/63.58 = [tt()] 190.64/63.58 190.64/63.58 [isNeList(V)] = [1] V + [0] 190.64/63.58 >= [1] V + [0] 190.64/63.59 = [U31(isQid(activate(V)))] 190.64/63.59 190.64/63.59 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.59 > [1] V2 + [1] V1 + [0] 190.64/63.59 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.59 190.64/63.59 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.59 > [1] V2 + [1] V1 + [0] 190.64/63.59 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.59 190.64/63.59 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.59 >= [1] V2 + [0] 190.64/63.59 = [U52(isList(activate(V2)))] 190.64/63.59 190.64/63.59 [U52(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U61(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U71(tt(), P)] = [1] P + [1] 190.64/63.59 >= [1] P + [1] 190.64/63.59 = [U72(isPal(activate(P)))] 190.64/63.59 190.64/63.59 [U72(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isPal(V)] = [1] V + [1] 190.64/63.59 > [1] V + [0] 190.64/63.59 = [U81(isNePal(activate(V)))] 190.64/63.59 190.64/63.59 [isPal(n__nil())] = [1] 190.64/63.59 > [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U81(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__a())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__e())] = [1] 190.64/63.59 > [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__i())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__o())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__u())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isNePal(V)] = [1] V + [0] 190.64/63.59 >= [1] V + [0] 190.64/63.59 = [U61(isQid(activate(V)))] 190.64/63.59 190.64/63.59 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [2] 190.64/63.59 > [1] P + [1] I + [1] 190.64/63.59 = [U71(isQid(activate(I)), activate(P))] 190.64/63.59 190.64/63.59 [a()] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [n__a()] 190.64/63.59 190.64/63.59 [e()] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [n__e()] 190.64/63.59 190.64/63.59 [i()] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [n__i()] 190.64/63.59 190.64/63.59 [o()] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [n__o()] 190.64/63.59 190.64/63.59 [u()] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [n__u()] 190.64/63.59 190.64/63.59 190.64/63.59 We return to the main proof. 190.64/63.59 190.64/63.59 We are left with following problem, upon which TcT provides the 190.64/63.59 certificate YES(O(1),O(n^2)). 190.64/63.59 190.64/63.59 Strict Trs: 190.64/63.59 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.59 , U11(tt()) -> tt() 190.64/63.59 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.59 , U22(tt()) -> tt() 190.64/63.59 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.59 , activate(X) -> X 190.64/63.59 , activate(n__nil()) -> nil() 190.64/63.59 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.59 , activate(n__a()) -> a() 190.64/63.59 , activate(n__e()) -> e() 190.64/63.59 , activate(n__i()) -> i() 190.64/63.59 , activate(n__o()) -> o() 190.64/63.59 , activate(n__u()) -> u() 190.64/63.59 , U31(tt()) -> tt() 190.64/63.59 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.59 , U42(tt()) -> tt() 190.64/63.59 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.59 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.59 , U52(tt()) -> tt() 190.64/63.59 , U61(tt()) -> tt() 190.64/63.59 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.59 , U72(tt()) -> tt() 190.64/63.59 , U81(tt()) -> tt() } 190.64/63.59 Weak Trs: 190.64/63.59 { __(X1, X2) -> n____(X1, X2) 190.64/63.59 , __(X, nil()) -> X 190.64/63.59 , __(nil(), X) -> X 190.64/63.59 , nil() -> n__nil() 190.64/63.59 , isList(n__nil()) -> tt() 190.64/63.59 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.59 , isNeList(n____(V1, V2)) -> 190.64/63.59 U41(isList(activate(V1)), activate(V2)) 190.64/63.59 , isNeList(n____(V1, V2)) -> 190.64/63.59 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.59 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.59 , isPal(n__nil()) -> tt() 190.64/63.59 , isQid(n__a()) -> tt() 190.64/63.59 , isQid(n__e()) -> tt() 190.64/63.59 , isQid(n__i()) -> tt() 190.64/63.59 , isQid(n__o()) -> tt() 190.64/63.59 , isQid(n__u()) -> tt() 190.64/63.59 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.59 , isNePal(n____(I, __(P, I))) -> 190.64/63.59 U71(isQid(activate(I)), activate(P)) 190.64/63.59 , a() -> n__a() 190.64/63.59 , e() -> n__e() 190.64/63.59 , i() -> n__i() 190.64/63.59 , o() -> n__o() 190.64/63.59 , u() -> n__u() } 190.64/63.59 Obligation: 190.64/63.59 derivational complexity 190.64/63.59 Answer: 190.64/63.59 YES(O(1),O(n^2)) 190.64/63.59 190.64/63.59 We use the processor 'matrix interpretation of dimension 1' to 190.64/63.59 orient following rules strictly. 190.64/63.59 190.64/63.59 Trs: { U71(tt(), P) -> U72(isPal(activate(P))) } 190.64/63.59 190.64/63.59 The induced complexity on above rules (modulo remaining rules) is 190.64/63.59 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.64/63.59 component(s). 190.64/63.59 190.64/63.59 Sub-proof: 190.64/63.59 ---------- 190.64/63.59 TcT has computed the following triangular matrix interpretation. 190.64/63.59 190.64/63.59 [__](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.59 190.64/63.59 [nil] = [0] 190.64/63.59 190.64/63.59 [U11](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [tt] = [0] 190.64/63.59 190.64/63.59 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U22](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isList](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [activate](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U31](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U42](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isNeList](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U52](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U61](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U71](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.59 190.64/63.59 [U72](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isPal](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U81](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [n__nil] = [0] 190.64/63.59 190.64/63.59 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.64/63.59 190.64/63.59 [isQid](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isNePal](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [n__a] = [0] 190.64/63.59 190.64/63.59 [n__e] = [1] 190.64/63.59 190.64/63.59 [n__i] = [0] 190.64/63.59 190.64/63.59 [n__o] = [0] 190.64/63.59 190.64/63.59 [n__u] = [0] 190.64/63.59 190.64/63.59 [a] = [0] 190.64/63.59 190.64/63.59 [e] = [1] 190.64/63.59 190.64/63.59 [i] = [0] 190.64/63.59 190.64/63.59 [o] = [0] 190.64/63.59 190.64/63.59 [u] = [0] 190.64/63.59 190.64/63.59 The order satisfies the following ordering constraints: 190.64/63.59 190.64/63.59 [__(X1, X2)] = [1] X1 + [1] X2 + [1] 190.64/63.59 >= [1] X1 + [1] X2 + [1] 190.64/63.59 = [n____(X1, X2)] 190.64/63.59 190.64/63.59 [__(X, nil())] = [1] X + [1] 190.64/63.59 > [1] X + [0] 190.64/63.59 = [X] 190.64/63.59 190.64/63.59 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [2] 190.64/63.59 >= [1] X + [1] Y + [1] Z + [2] 190.64/63.59 = [__(X, __(Y, Z))] 190.64/63.59 190.64/63.59 [__(nil(), X)] = [1] X + [1] 190.64/63.59 > [1] X + [0] 190.64/63.59 = [X] 190.64/63.59 190.64/63.59 [nil()] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [n__nil()] 190.64/63.59 190.64/63.59 [U11(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U21(tt(), V2)] = [1] V2 + [0] 190.64/63.59 >= [1] V2 + [0] 190.64/63.59 = [U22(isList(activate(V2)))] 190.64/63.59 190.64/63.59 [U22(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isList(V)] = [1] V + [0] 190.64/63.59 >= [1] V + [0] 190.64/63.59 = [U11(isNeList(activate(V)))] 190.64/63.59 190.64/63.59 [isList(n__nil())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.59 > [1] V2 + [1] V1 + [0] 190.64/63.59 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.59 190.64/63.59 [activate(X)] = [1] X + [0] 190.64/63.59 >= [1] X + [0] 190.64/63.59 = [X] 190.64/63.59 190.64/63.59 [activate(n__nil())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [nil()] 190.64/63.59 190.64/63.59 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.64/63.59 >= [1] X1 + [1] X2 + [1] 190.64/63.59 = [__(X1, X2)] 190.64/63.59 190.64/63.59 [activate(n__a())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [a()] 190.64/63.59 190.64/63.59 [activate(n__e())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [e()] 190.64/63.59 190.64/63.59 [activate(n__i())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [i()] 190.64/63.59 190.64/63.59 [activate(n__o())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [o()] 190.64/63.59 190.64/63.59 [activate(n__u())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [u()] 190.64/63.59 190.64/63.59 [U31(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U41(tt(), V2)] = [1] V2 + [0] 190.64/63.59 >= [1] V2 + [0] 190.64/63.59 = [U42(isNeList(activate(V2)))] 190.64/63.59 190.64/63.59 [U42(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isNeList(V)] = [1] V + [0] 190.64/63.59 >= [1] V + [0] 190.64/63.59 = [U31(isQid(activate(V)))] 190.64/63.59 190.64/63.59 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.59 > [1] V2 + [1] V1 + [0] 190.64/63.59 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.59 190.64/63.59 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.64/63.59 > [1] V2 + [1] V1 + [0] 190.64/63.59 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.59 190.64/63.59 [U51(tt(), V2)] = [1] V2 + [0] 190.64/63.59 >= [1] V2 + [0] 190.64/63.59 = [U52(isList(activate(V2)))] 190.64/63.59 190.64/63.59 [U52(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U61(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U71(tt(), P)] = [1] P + [1] 190.64/63.59 > [1] P + [0] 190.64/63.59 = [U72(isPal(activate(P)))] 190.64/63.59 190.64/63.59 [U72(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isPal(V)] = [1] V + [0] 190.64/63.59 >= [1] V + [0] 190.64/63.59 = [U81(isNePal(activate(V)))] 190.64/63.59 190.64/63.59 [isPal(n__nil())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U81(tt())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__a())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__e())] = [1] 190.64/63.59 > [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__i())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__o())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__u())] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isNePal(V)] = [1] V + [0] 190.64/63.59 >= [1] V + [0] 190.64/63.59 = [U61(isQid(activate(V)))] 190.64/63.59 190.64/63.59 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [2] 190.64/63.59 > [1] P + [1] I + [1] 190.64/63.59 = [U71(isQid(activate(I)), activate(P))] 190.64/63.59 190.64/63.59 [a()] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [n__a()] 190.64/63.59 190.64/63.59 [e()] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [n__e()] 190.64/63.59 190.64/63.59 [i()] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [n__i()] 190.64/63.59 190.64/63.59 [o()] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [n__o()] 190.64/63.59 190.64/63.59 [u()] = [0] 190.64/63.59 >= [0] 190.64/63.59 = [n__u()] 190.64/63.59 190.64/63.59 190.64/63.59 We return to the main proof. 190.64/63.59 190.64/63.59 We are left with following problem, upon which TcT provides the 190.64/63.59 certificate YES(O(1),O(n^2)). 190.64/63.59 190.64/63.59 Strict Trs: 190.64/63.59 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.59 , U11(tt()) -> tt() 190.64/63.59 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.59 , U22(tt()) -> tt() 190.64/63.59 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.59 , activate(X) -> X 190.64/63.59 , activate(n__nil()) -> nil() 190.64/63.59 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.59 , activate(n__a()) -> a() 190.64/63.59 , activate(n__e()) -> e() 190.64/63.59 , activate(n__i()) -> i() 190.64/63.59 , activate(n__o()) -> o() 190.64/63.59 , activate(n__u()) -> u() 190.64/63.59 , U31(tt()) -> tt() 190.64/63.59 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.59 , U42(tt()) -> tt() 190.64/63.59 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.59 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.59 , U52(tt()) -> tt() 190.64/63.59 , U61(tt()) -> tt() 190.64/63.59 , U72(tt()) -> tt() 190.64/63.59 , U81(tt()) -> tt() } 190.64/63.59 Weak Trs: 190.64/63.59 { __(X1, X2) -> n____(X1, X2) 190.64/63.59 , __(X, nil()) -> X 190.64/63.59 , __(nil(), X) -> X 190.64/63.59 , nil() -> n__nil() 190.64/63.59 , isList(n__nil()) -> tt() 190.64/63.59 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.59 , isNeList(n____(V1, V2)) -> 190.64/63.59 U41(isList(activate(V1)), activate(V2)) 190.64/63.59 , isNeList(n____(V1, V2)) -> 190.64/63.59 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.59 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.59 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.59 , isPal(n__nil()) -> tt() 190.64/63.59 , isQid(n__a()) -> tt() 190.64/63.59 , isQid(n__e()) -> tt() 190.64/63.59 , isQid(n__i()) -> tt() 190.64/63.59 , isQid(n__o()) -> tt() 190.64/63.59 , isQid(n__u()) -> tt() 190.64/63.59 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.59 , isNePal(n____(I, __(P, I))) -> 190.64/63.59 U71(isQid(activate(I)), activate(P)) 190.64/63.59 , a() -> n__a() 190.64/63.59 , e() -> n__e() 190.64/63.59 , i() -> n__i() 190.64/63.59 , o() -> n__o() 190.64/63.59 , u() -> n__u() } 190.64/63.59 Obligation: 190.64/63.59 derivational complexity 190.64/63.59 Answer: 190.64/63.59 YES(O(1),O(n^2)) 190.64/63.59 190.64/63.59 The weightgap principle applies (using the following nonconstant 190.64/63.59 growth matrix-interpretation) 190.64/63.59 190.64/63.59 TcT has computed the following triangular matrix interpretation. 190.64/63.59 Note that the diagonal of the component-wise maxima of 190.64/63.59 interpretation-entries contains no more than 1 non-zero entries. 190.64/63.59 190.64/63.59 [__](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [nil] = [2] 190.64/63.59 190.64/63.59 [U11](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [tt] = [1] 190.64/63.59 190.64/63.59 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U22](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isList](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [activate](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U31](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U42](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isNeList](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U52](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U61](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U72](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isPal](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U81](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [n__nil] = [1] 190.64/63.59 190.64/63.59 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [isQid](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isNePal](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [n__a] = [1] 190.64/63.59 190.64/63.59 [n__e] = [1] 190.64/63.59 190.64/63.59 [n__i] = [1] 190.64/63.59 190.64/63.59 [n__o] = [1] 190.64/63.59 190.64/63.59 [n__u] = [1] 190.64/63.59 190.64/63.59 [a] = [2] 190.64/63.59 190.64/63.59 [e] = [2] 190.64/63.59 190.64/63.59 [i] = [2] 190.64/63.59 190.64/63.59 [o] = [2] 190.64/63.59 190.64/63.59 [u] = [2] 190.64/63.59 190.64/63.59 The order satisfies the following ordering constraints: 190.64/63.59 190.64/63.59 [__(X1, X2)] = [1] X1 + [1] X2 + [0] 190.64/63.59 >= [1] X1 + [1] X2 + [0] 190.64/63.59 = [n____(X1, X2)] 190.64/63.59 190.64/63.59 [__(X, nil())] = [1] X + [2] 190.64/63.59 > [1] X + [0] 190.64/63.59 = [X] 190.64/63.59 190.64/63.59 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [0] 190.64/63.59 >= [1] X + [1] Y + [1] Z + [0] 190.64/63.59 = [__(X, __(Y, Z))] 190.64/63.59 190.64/63.59 [__(nil(), X)] = [1] X + [2] 190.64/63.59 > [1] X + [0] 190.64/63.59 = [X] 190.64/63.59 190.64/63.59 [nil()] = [2] 190.64/63.59 > [1] 190.64/63.59 = [n__nil()] 190.64/63.59 190.64/63.59 [U11(tt())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U21(tt(), V2)] = [1] V2 + [1] 190.64/63.59 > [1] V2 + [0] 190.64/63.59 = [U22(isList(activate(V2)))] 190.64/63.59 190.64/63.59 [U22(tt())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isList(V)] = [1] V + [0] 190.64/63.59 >= [1] V + [0] 190.64/63.59 = [U11(isNeList(activate(V)))] 190.64/63.59 190.64/63.59 [isList(n__nil())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.59 >= [1] V2 + [1] V1 + [0] 190.64/63.59 = [U21(isList(activate(V1)), activate(V2))] 190.64/63.59 190.64/63.59 [activate(X)] = [1] X + [0] 190.64/63.59 >= [1] X + [0] 190.64/63.59 = [X] 190.64/63.59 190.64/63.59 [activate(n__nil())] = [1] 190.64/63.59 ? [2] 190.64/63.59 = [nil()] 190.64/63.59 190.64/63.59 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.64/63.59 >= [1] X1 + [1] X2 + [0] 190.64/63.59 = [__(X1, X2)] 190.64/63.59 190.64/63.59 [activate(n__a())] = [1] 190.64/63.59 ? [2] 190.64/63.59 = [a()] 190.64/63.59 190.64/63.59 [activate(n__e())] = [1] 190.64/63.59 ? [2] 190.64/63.59 = [e()] 190.64/63.59 190.64/63.59 [activate(n__i())] = [1] 190.64/63.59 ? [2] 190.64/63.59 = [i()] 190.64/63.59 190.64/63.59 [activate(n__o())] = [1] 190.64/63.59 ? [2] 190.64/63.59 = [o()] 190.64/63.59 190.64/63.59 [activate(n__u())] = [1] 190.64/63.59 ? [2] 190.64/63.59 = [u()] 190.64/63.59 190.64/63.59 [U31(tt())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U41(tt(), V2)] = [1] V2 + [1] 190.64/63.59 > [1] V2 + [0] 190.64/63.59 = [U42(isNeList(activate(V2)))] 190.64/63.59 190.64/63.59 [U42(tt())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isNeList(V)] = [1] V + [0] 190.64/63.59 >= [1] V + [0] 190.64/63.59 = [U31(isQid(activate(V)))] 190.64/63.59 190.64/63.59 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.59 >= [1] V2 + [1] V1 + [0] 190.64/63.59 = [U41(isList(activate(V1)), activate(V2))] 190.64/63.59 190.64/63.59 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.64/63.59 >= [1] V2 + [1] V1 + [0] 190.64/63.59 = [U51(isNeList(activate(V1)), activate(V2))] 190.64/63.59 190.64/63.59 [U51(tt(), V2)] = [1] V2 + [1] 190.64/63.59 > [1] V2 + [0] 190.64/63.59 = [U52(isList(activate(V2)))] 190.64/63.59 190.64/63.59 [U52(tt())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U61(tt())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U71(tt(), P)] = [1] P + [1] 190.64/63.59 > [1] P + [0] 190.64/63.59 = [U72(isPal(activate(P)))] 190.64/63.59 190.64/63.59 [U72(tt())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isPal(V)] = [1] V + [0] 190.64/63.59 >= [1] V + [0] 190.64/63.59 = [U81(isNePal(activate(V)))] 190.64/63.59 190.64/63.59 [isPal(n__nil())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [U81(tt())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__a())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__e())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__i())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__o())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isQid(n__u())] = [1] 190.64/63.59 >= [1] 190.64/63.59 = [tt()] 190.64/63.59 190.64/63.59 [isNePal(V)] = [1] V + [0] 190.64/63.59 >= [1] V + [0] 190.64/63.59 = [U61(isQid(activate(V)))] 190.64/63.59 190.64/63.59 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [0] 190.64/63.59 >= [1] P + [1] I + [0] 190.64/63.59 = [U71(isQid(activate(I)), activate(P))] 190.64/63.59 190.64/63.59 [a()] = [2] 190.64/63.59 > [1] 190.64/63.59 = [n__a()] 190.64/63.59 190.64/63.59 [e()] = [2] 190.64/63.59 > [1] 190.64/63.59 = [n__e()] 190.64/63.59 190.64/63.59 [i()] = [2] 190.64/63.59 > [1] 190.64/63.59 = [n__i()] 190.64/63.59 190.64/63.59 [o()] = [2] 190.64/63.59 > [1] 190.64/63.59 = [n__o()] 190.64/63.59 190.64/63.59 [u()] = [2] 190.64/63.59 > [1] 190.64/63.59 = [n__u()] 190.64/63.59 190.64/63.59 190.64/63.59 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.64/63.59 190.64/63.59 We are left with following problem, upon which TcT provides the 190.64/63.59 certificate YES(O(1),O(n^2)). 190.64/63.59 190.64/63.59 Strict Trs: 190.64/63.59 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.64/63.59 , U11(tt()) -> tt() 190.64/63.59 , U22(tt()) -> tt() 190.64/63.59 , isList(V) -> U11(isNeList(activate(V))) 190.64/63.59 , activate(X) -> X 190.64/63.59 , activate(n__nil()) -> nil() 190.64/63.59 , activate(n____(X1, X2)) -> __(X1, X2) 190.64/63.59 , activate(n__a()) -> a() 190.64/63.59 , activate(n__e()) -> e() 190.64/63.59 , activate(n__i()) -> i() 190.64/63.59 , activate(n__o()) -> o() 190.64/63.59 , activate(n__u()) -> u() 190.64/63.59 , U31(tt()) -> tt() 190.64/63.59 , U42(tt()) -> tt() 190.64/63.59 , isNeList(V) -> U31(isQid(activate(V))) 190.64/63.59 , U52(tt()) -> tt() 190.64/63.59 , U61(tt()) -> tt() 190.64/63.59 , U72(tt()) -> tt() 190.64/63.59 , U81(tt()) -> tt() } 190.64/63.59 Weak Trs: 190.64/63.59 { __(X1, X2) -> n____(X1, X2) 190.64/63.59 , __(X, nil()) -> X 190.64/63.59 , __(nil(), X) -> X 190.64/63.59 , nil() -> n__nil() 190.64/63.59 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.64/63.59 , isList(n__nil()) -> tt() 190.64/63.59 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.64/63.59 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.64/63.59 , isNeList(n____(V1, V2)) -> 190.64/63.59 U41(isList(activate(V1)), activate(V2)) 190.64/63.59 , isNeList(n____(V1, V2)) -> 190.64/63.59 U51(isNeList(activate(V1)), activate(V2)) 190.64/63.59 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.64/63.59 , U71(tt(), P) -> U72(isPal(activate(P))) 190.64/63.59 , isPal(V) -> U81(isNePal(activate(V))) 190.64/63.59 , isPal(n__nil()) -> tt() 190.64/63.59 , isQid(n__a()) -> tt() 190.64/63.59 , isQid(n__e()) -> tt() 190.64/63.59 , isQid(n__i()) -> tt() 190.64/63.59 , isQid(n__o()) -> tt() 190.64/63.59 , isQid(n__u()) -> tt() 190.64/63.59 , isNePal(V) -> U61(isQid(activate(V))) 190.64/63.59 , isNePal(n____(I, __(P, I))) -> 190.64/63.59 U71(isQid(activate(I)), activate(P)) 190.64/63.59 , a() -> n__a() 190.64/63.59 , e() -> n__e() 190.64/63.59 , i() -> n__i() 190.64/63.59 , o() -> n__o() 190.64/63.59 , u() -> n__u() } 190.64/63.59 Obligation: 190.64/63.59 derivational complexity 190.64/63.59 Answer: 190.64/63.59 YES(O(1),O(n^2)) 190.64/63.59 190.64/63.59 The weightgap principle applies (using the following nonconstant 190.64/63.59 growth matrix-interpretation) 190.64/63.59 190.64/63.59 TcT has computed the following triangular matrix interpretation. 190.64/63.59 Note that the diagonal of the component-wise maxima of 190.64/63.59 interpretation-entries contains no more than 1 non-zero entries. 190.64/63.59 190.64/63.59 [__](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [nil] = [2] 190.64/63.59 190.64/63.59 [U11](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [tt] = [1] 190.64/63.59 190.64/63.59 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U22](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isList](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [activate](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U31](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U42](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isNeList](x1) = [1] x1 + [1] 190.64/63.59 190.64/63.59 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U52](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U61](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.64/63.59 190.64/63.59 [U72](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [isPal](x1) = [1] x1 + [0] 190.64/63.59 190.64/63.59 [U81](x1) = [1] x1 + [0] 190.64/63.59 190.83/63.60 [n__nil] = [1] 190.83/63.60 190.83/63.60 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.60 190.83/63.60 [isQid](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [isNePal](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [n__a] = [1] 190.83/63.60 190.83/63.60 [n__e] = [1] 190.83/63.60 190.83/63.60 [n__i] = [1] 190.83/63.60 190.83/63.60 [n__o] = [1] 190.83/63.60 190.83/63.60 [n__u] = [1] 190.83/63.60 190.83/63.60 [a] = [2] 190.83/63.60 190.83/63.60 [e] = [2] 190.83/63.60 190.83/63.60 [i] = [2] 190.83/63.60 190.83/63.60 [o] = [2] 190.83/63.60 190.83/63.60 [u] = [2] 190.83/63.60 190.83/63.60 The order satisfies the following ordering constraints: 190.83/63.60 190.83/63.60 [__(X1, X2)] = [1] X1 + [1] X2 + [0] 190.83/63.60 >= [1] X1 + [1] X2 + [0] 190.83/63.60 = [n____(X1, X2)] 190.83/63.60 190.83/63.60 [__(X, nil())] = [1] X + [2] 190.83/63.60 > [1] X + [0] 190.83/63.60 = [X] 190.83/63.60 190.83/63.60 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [0] 190.83/63.60 >= [1] X + [1] Y + [1] Z + [0] 190.83/63.60 = [__(X, __(Y, Z))] 190.83/63.60 190.83/63.60 [__(nil(), X)] = [1] X + [2] 190.83/63.60 > [1] X + [0] 190.83/63.60 = [X] 190.83/63.60 190.83/63.60 [nil()] = [2] 190.83/63.60 > [1] 190.83/63.60 = [n__nil()] 190.83/63.60 190.83/63.60 [U11(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [U21(tt(), V2)] = [1] V2 + [1] 190.83/63.60 > [1] V2 + [0] 190.83/63.60 = [U22(isList(activate(V2)))] 190.83/63.60 190.83/63.60 [U22(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isList(V)] = [1] V + [0] 190.83/63.60 ? [1] V + [1] 190.83/63.60 = [U11(isNeList(activate(V)))] 190.83/63.60 190.83/63.60 [isList(n__nil())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.60 >= [1] V2 + [1] V1 + [0] 190.83/63.60 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.60 190.83/63.60 [activate(X)] = [1] X + [0] 190.83/63.60 >= [1] X + [0] 190.83/63.60 = [X] 190.83/63.60 190.83/63.60 [activate(n__nil())] = [1] 190.83/63.60 ? [2] 190.83/63.60 = [nil()] 190.83/63.60 190.83/63.60 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.83/63.60 >= [1] X1 + [1] X2 + [0] 190.83/63.60 = [__(X1, X2)] 190.83/63.60 190.83/63.60 [activate(n__a())] = [1] 190.83/63.60 ? [2] 190.83/63.60 = [a()] 190.83/63.60 190.83/63.60 [activate(n__e())] = [1] 190.83/63.60 ? [2] 190.83/63.60 = [e()] 190.83/63.60 190.83/63.60 [activate(n__i())] = [1] 190.83/63.60 ? [2] 190.83/63.60 = [i()] 190.83/63.60 190.83/63.60 [activate(n__o())] = [1] 190.83/63.60 ? [2] 190.83/63.60 = [o()] 190.83/63.60 190.83/63.60 [activate(n__u())] = [1] 190.83/63.60 ? [2] 190.83/63.60 = [u()] 190.83/63.60 190.83/63.60 [U31(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [U41(tt(), V2)] = [1] V2 + [1] 190.83/63.60 >= [1] V2 + [1] 190.83/63.60 = [U42(isNeList(activate(V2)))] 190.83/63.60 190.83/63.60 [U42(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isNeList(V)] = [1] V + [1] 190.83/63.60 > [1] V + [0] 190.83/63.60 = [U31(isQid(activate(V)))] 190.83/63.60 190.83/63.60 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.60 > [1] V2 + [1] V1 + [0] 190.83/63.60 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.60 190.83/63.60 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.60 >= [1] V2 + [1] V1 + [1] 190.83/63.60 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.60 190.83/63.60 [U51(tt(), V2)] = [1] V2 + [1] 190.83/63.60 > [1] V2 + [0] 190.83/63.60 = [U52(isList(activate(V2)))] 190.83/63.60 190.83/63.60 [U52(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [U61(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [U71(tt(), P)] = [1] P + [1] 190.83/63.60 > [1] P + [0] 190.83/63.60 = [U72(isPal(activate(P)))] 190.83/63.60 190.83/63.60 [U72(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isPal(V)] = [1] V + [0] 190.83/63.60 >= [1] V + [0] 190.83/63.60 = [U81(isNePal(activate(V)))] 190.83/63.60 190.83/63.60 [isPal(n__nil())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [U81(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isQid(n__a())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isQid(n__e())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isQid(n__i())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isQid(n__o())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isQid(n__u())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isNePal(V)] = [1] V + [0] 190.83/63.60 >= [1] V + [0] 190.83/63.60 = [U61(isQid(activate(V)))] 190.83/63.60 190.83/63.60 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [0] 190.83/63.60 >= [1] P + [1] I + [0] 190.83/63.60 = [U71(isQid(activate(I)), activate(P))] 190.83/63.60 190.83/63.60 [a()] = [2] 190.83/63.60 > [1] 190.83/63.60 = [n__a()] 190.83/63.60 190.83/63.60 [e()] = [2] 190.83/63.60 > [1] 190.83/63.60 = [n__e()] 190.83/63.60 190.83/63.60 [i()] = [2] 190.83/63.60 > [1] 190.83/63.60 = [n__i()] 190.83/63.60 190.83/63.60 [o()] = [2] 190.83/63.60 > [1] 190.83/63.60 = [n__o()] 190.83/63.60 190.83/63.60 [u()] = [2] 190.83/63.60 > [1] 190.83/63.60 = [n__u()] 190.83/63.60 190.83/63.60 190.83/63.60 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.83/63.60 190.83/63.60 We are left with following problem, upon which TcT provides the 190.83/63.60 certificate YES(O(1),O(n^2)). 190.83/63.60 190.83/63.60 Strict Trs: 190.83/63.60 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.60 , U11(tt()) -> tt() 190.83/63.60 , U22(tt()) -> tt() 190.83/63.60 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.60 , activate(X) -> X 190.83/63.60 , activate(n__nil()) -> nil() 190.83/63.60 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.60 , activate(n__a()) -> a() 190.83/63.60 , activate(n__e()) -> e() 190.83/63.60 , activate(n__i()) -> i() 190.83/63.60 , activate(n__o()) -> o() 190.83/63.60 , activate(n__u()) -> u() 190.83/63.60 , U31(tt()) -> tt() 190.83/63.60 , U42(tt()) -> tt() 190.83/63.60 , U52(tt()) -> tt() 190.83/63.60 , U61(tt()) -> tt() 190.83/63.60 , U72(tt()) -> tt() 190.83/63.60 , U81(tt()) -> tt() } 190.83/63.60 Weak Trs: 190.83/63.60 { __(X1, X2) -> n____(X1, X2) 190.83/63.60 , __(X, nil()) -> X 190.83/63.60 , __(nil(), X) -> X 190.83/63.60 , nil() -> n__nil() 190.83/63.60 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.60 , isList(n__nil()) -> tt() 190.83/63.60 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.60 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.60 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.60 , isNeList(n____(V1, V2)) -> 190.83/63.60 U41(isList(activate(V1)), activate(V2)) 190.83/63.60 , isNeList(n____(V1, V2)) -> 190.83/63.60 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.60 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.60 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.60 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.60 , isPal(n__nil()) -> tt() 190.83/63.60 , isQid(n__a()) -> tt() 190.83/63.60 , isQid(n__e()) -> tt() 190.83/63.60 , isQid(n__i()) -> tt() 190.83/63.60 , isQid(n__o()) -> tt() 190.83/63.60 , isQid(n__u()) -> tt() 190.83/63.60 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.60 , isNePal(n____(I, __(P, I))) -> 190.83/63.60 U71(isQid(activate(I)), activate(P)) 190.83/63.60 , a() -> n__a() 190.83/63.60 , e() -> n__e() 190.83/63.60 , i() -> n__i() 190.83/63.60 , o() -> n__o() 190.83/63.60 , u() -> n__u() } 190.83/63.60 Obligation: 190.83/63.60 derivational complexity 190.83/63.60 Answer: 190.83/63.60 YES(O(1),O(n^2)) 190.83/63.60 190.83/63.60 We use the processor 'matrix interpretation of dimension 1' to 190.83/63.60 orient following rules strictly. 190.83/63.60 190.83/63.60 Trs: { U52(tt()) -> tt() } 190.83/63.60 190.83/63.60 The induced complexity on above rules (modulo remaining rules) is 190.83/63.60 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.83/63.60 component(s). 190.83/63.60 190.83/63.60 Sub-proof: 190.83/63.60 ---------- 190.83/63.60 TcT has computed the following triangular matrix interpretation. 190.83/63.60 190.83/63.60 [__](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.60 190.83/63.60 [nil] = [1] 190.83/63.60 190.83/63.60 [U11](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [tt] = [1] 190.83/63.60 190.83/63.60 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.60 190.83/63.60 [U22](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [isList](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [activate](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [U31](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.60 190.83/63.60 [U42](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [isNeList](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.60 190.83/63.60 [U52](x1) = [1] x1 + [1] 190.83/63.60 190.83/63.60 [U61](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.60 190.83/63.60 [U72](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [isPal](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [U81](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [n__nil] = [1] 190.83/63.60 190.83/63.60 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.60 190.83/63.60 [isQid](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [isNePal](x1) = [1] x1 + [0] 190.83/63.60 190.83/63.60 [n__a] = [1] 190.83/63.60 190.83/63.60 [n__e] = [1] 190.83/63.60 190.83/63.60 [n__i] = [1] 190.83/63.60 190.83/63.60 [n__o] = [1] 190.83/63.60 190.83/63.60 [n__u] = [1] 190.83/63.60 190.83/63.60 [a] = [1] 190.83/63.60 190.83/63.60 [e] = [1] 190.83/63.60 190.83/63.60 [i] = [1] 190.83/63.60 190.83/63.60 [o] = [1] 190.83/63.60 190.83/63.60 [u] = [1] 190.83/63.60 190.83/63.60 The order satisfies the following ordering constraints: 190.83/63.60 190.83/63.60 [__(X1, X2)] = [1] X1 + [1] X2 + [0] 190.83/63.60 >= [1] X1 + [1] X2 + [0] 190.83/63.60 = [n____(X1, X2)] 190.83/63.60 190.83/63.60 [__(X, nil())] = [1] X + [1] 190.83/63.60 > [1] X + [0] 190.83/63.60 = [X] 190.83/63.60 190.83/63.60 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [0] 190.83/63.60 >= [1] X + [1] Y + [1] Z + [0] 190.83/63.60 = [__(X, __(Y, Z))] 190.83/63.60 190.83/63.60 [__(nil(), X)] = [1] X + [1] 190.83/63.60 > [1] X + [0] 190.83/63.60 = [X] 190.83/63.60 190.83/63.60 [nil()] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [n__nil()] 190.83/63.60 190.83/63.60 [U11(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [U21(tt(), V2)] = [1] V2 + [1] 190.83/63.60 > [1] V2 + [0] 190.83/63.60 = [U22(isList(activate(V2)))] 190.83/63.60 190.83/63.60 [U22(tt())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isList(V)] = [1] V + [0] 190.83/63.60 >= [1] V + [0] 190.83/63.60 = [U11(isNeList(activate(V)))] 190.83/63.60 190.83/63.60 [isList(n__nil())] = [1] 190.83/63.60 >= [1] 190.83/63.60 = [tt()] 190.83/63.60 190.83/63.60 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.60 >= [1] V2 + [1] V1 + [0] 190.83/63.60 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.60 190.83/63.60 [activate(X)] = [1] X + [0] 190.83/63.60 >= [1] X + [0] 190.83/63.60 = [X] 190.83/63.61 190.83/63.61 [activate(n__nil())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [nil()] 190.83/63.61 190.83/63.61 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.83/63.61 >= [1] X1 + [1] X2 + [0] 190.83/63.61 = [__(X1, X2)] 190.83/63.61 190.83/63.61 [activate(n__a())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [a()] 190.83/63.61 190.83/63.61 [activate(n__e())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [e()] 190.83/63.61 190.83/63.61 [activate(n__i())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [i()] 190.83/63.61 190.83/63.61 [activate(n__o())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [o()] 190.83/63.61 190.83/63.61 [activate(n__u())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [u()] 190.83/63.61 190.83/63.61 [U31(tt())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U41(tt(), V2)] = [1] V2 + [1] 190.83/63.61 > [1] V2 + [0] 190.83/63.61 = [U42(isNeList(activate(V2)))] 190.83/63.61 190.83/63.61 [U42(tt())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isNeList(V)] = [1] V + [0] 190.83/63.61 >= [1] V + [0] 190.83/63.61 = [U31(isQid(activate(V)))] 190.83/63.61 190.83/63.61 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.61 >= [1] V2 + [1] V1 + [0] 190.83/63.61 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.61 190.83/63.61 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.61 >= [1] V2 + [1] V1 + [0] 190.83/63.61 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.61 190.83/63.61 [U51(tt(), V2)] = [1] V2 + [1] 190.83/63.61 >= [1] V2 + [1] 190.83/63.61 = [U52(isList(activate(V2)))] 190.83/63.61 190.83/63.61 [U52(tt())] = [2] 190.83/63.61 > [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U61(tt())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U71(tt(), P)] = [1] P + [1] 190.83/63.61 > [1] P + [0] 190.83/63.61 = [U72(isPal(activate(P)))] 190.83/63.61 190.83/63.61 [U72(tt())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isPal(V)] = [1] V + [0] 190.83/63.61 >= [1] V + [0] 190.83/63.61 = [U81(isNePal(activate(V)))] 190.83/63.61 190.83/63.61 [isPal(n__nil())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U81(tt())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__a())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__e())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__i())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__o())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__u())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isNePal(V)] = [1] V + [0] 190.83/63.61 >= [1] V + [0] 190.83/63.61 = [U61(isQid(activate(V)))] 190.83/63.61 190.83/63.61 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [0] 190.83/63.61 >= [1] P + [1] I + [0] 190.83/63.61 = [U71(isQid(activate(I)), activate(P))] 190.83/63.61 190.83/63.61 [a()] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [n__a()] 190.83/63.61 190.83/63.61 [e()] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [n__e()] 190.83/63.61 190.83/63.61 [i()] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [n__i()] 190.83/63.61 190.83/63.61 [o()] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [n__o()] 190.83/63.61 190.83/63.61 [u()] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [n__u()] 190.83/63.61 190.83/63.61 190.83/63.61 We return to the main proof. 190.83/63.61 190.83/63.61 We are left with following problem, upon which TcT provides the 190.83/63.61 certificate YES(O(1),O(n^2)). 190.83/63.61 190.83/63.61 Strict Trs: 190.83/63.61 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.61 , U11(tt()) -> tt() 190.83/63.61 , U22(tt()) -> tt() 190.83/63.61 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.61 , activate(X) -> X 190.83/63.61 , activate(n__nil()) -> nil() 190.83/63.61 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.61 , activate(n__a()) -> a() 190.83/63.61 , activate(n__e()) -> e() 190.83/63.61 , activate(n__i()) -> i() 190.83/63.61 , activate(n__o()) -> o() 190.83/63.61 , activate(n__u()) -> u() 190.83/63.61 , U31(tt()) -> tt() 190.83/63.61 , U42(tt()) -> tt() 190.83/63.61 , U61(tt()) -> tt() 190.83/63.61 , U72(tt()) -> tt() 190.83/63.61 , U81(tt()) -> tt() } 190.83/63.61 Weak Trs: 190.83/63.61 { __(X1, X2) -> n____(X1, X2) 190.83/63.61 , __(X, nil()) -> X 190.83/63.61 , __(nil(), X) -> X 190.83/63.61 , nil() -> n__nil() 190.83/63.61 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.61 , isList(n__nil()) -> tt() 190.83/63.61 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.61 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.61 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.61 , isNeList(n____(V1, V2)) -> 190.83/63.61 U41(isList(activate(V1)), activate(V2)) 190.83/63.61 , isNeList(n____(V1, V2)) -> 190.83/63.61 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.61 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.61 , U52(tt()) -> tt() 190.83/63.61 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.61 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.61 , isPal(n__nil()) -> tt() 190.83/63.61 , isQid(n__a()) -> tt() 190.83/63.61 , isQid(n__e()) -> tt() 190.83/63.61 , isQid(n__i()) -> tt() 190.83/63.61 , isQid(n__o()) -> tt() 190.83/63.61 , isQid(n__u()) -> tt() 190.83/63.61 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.61 , isNePal(n____(I, __(P, I))) -> 190.83/63.61 U71(isQid(activate(I)), activate(P)) 190.83/63.61 , a() -> n__a() 190.83/63.61 , e() -> n__e() 190.83/63.61 , i() -> n__i() 190.83/63.61 , o() -> n__o() 190.83/63.61 , u() -> n__u() } 190.83/63.61 Obligation: 190.83/63.61 derivational complexity 190.83/63.61 Answer: 190.83/63.61 YES(O(1),O(n^2)) 190.83/63.61 190.83/63.61 The weightgap principle applies (using the following nonconstant 190.83/63.61 growth matrix-interpretation) 190.83/63.61 190.83/63.61 TcT has computed the following triangular matrix interpretation. 190.83/63.61 Note that the diagonal of the component-wise maxima of 190.83/63.61 interpretation-entries contains no more than 1 non-zero entries. 190.83/63.61 190.83/63.61 [__](x1, x2) = [1] x1 + [1] x2 + [2] 190.83/63.61 190.83/63.61 [nil] = [2] 190.83/63.61 190.83/63.61 [U11](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [tt] = [0] 190.83/63.61 190.83/63.61 [U21](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.61 190.83/63.61 [U22](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [isList](x1) = [1] x1 + [1] 190.83/63.61 190.83/63.61 [activate](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U31](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.61 190.83/63.61 [U42](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [isNeList](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U51](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.61 190.83/63.61 [U52](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U61](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.61 190.83/63.61 [U72](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [isPal](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U81](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [n__nil] = [0] 190.83/63.61 190.83/63.61 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.61 190.83/63.61 [isQid](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [isNePal](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [n__a] = [1] 190.83/63.61 190.83/63.61 [n__e] = [1] 190.83/63.61 190.83/63.61 [n__i] = [1] 190.83/63.61 190.83/63.61 [n__o] = [1] 190.83/63.61 190.83/63.61 [n__u] = [1] 190.83/63.61 190.83/63.61 [a] = [2] 190.83/63.61 190.83/63.61 [e] = [2] 190.83/63.61 190.83/63.61 [i] = [2] 190.83/63.61 190.83/63.61 [o] = [2] 190.83/63.61 190.83/63.61 [u] = [2] 190.83/63.61 190.83/63.61 The order satisfies the following ordering constraints: 190.83/63.61 190.83/63.61 [__(X1, X2)] = [1] X1 + [1] X2 + [2] 190.83/63.61 > [1] X1 + [1] X2 + [1] 190.83/63.61 = [n____(X1, X2)] 190.83/63.61 190.83/63.61 [__(X, nil())] = [1] X + [4] 190.83/63.61 > [1] X + [0] 190.83/63.61 = [X] 190.83/63.61 190.83/63.61 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [4] 190.83/63.61 >= [1] X + [1] Y + [1] Z + [4] 190.83/63.61 = [__(X, __(Y, Z))] 190.83/63.61 190.83/63.61 [__(nil(), X)] = [1] X + [4] 190.83/63.61 > [1] X + [0] 190.83/63.61 = [X] 190.83/63.61 190.83/63.61 [nil()] = [2] 190.83/63.61 > [0] 190.83/63.61 = [n__nil()] 190.83/63.61 190.83/63.61 [U11(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U21(tt(), V2)] = [1] V2 + [1] 190.83/63.61 >= [1] V2 + [1] 190.83/63.61 = [U22(isList(activate(V2)))] 190.83/63.61 190.83/63.61 [U22(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isList(V)] = [1] V + [1] 190.83/63.61 > [1] V + [0] 190.83/63.61 = [U11(isNeList(activate(V)))] 190.83/63.61 190.83/63.61 [isList(n__nil())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [2] 190.83/63.61 >= [1] V2 + [1] V1 + [2] 190.83/63.61 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.61 190.83/63.61 [activate(X)] = [1] X + [0] 190.83/63.61 >= [1] X + [0] 190.83/63.61 = [X] 190.83/63.61 190.83/63.61 [activate(n__nil())] = [0] 190.83/63.61 ? [2] 190.83/63.61 = [nil()] 190.83/63.61 190.83/63.61 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.83/63.61 ? [1] X1 + [1] X2 + [2] 190.83/63.61 = [__(X1, X2)] 190.83/63.61 190.83/63.61 [activate(n__a())] = [1] 190.83/63.61 ? [2] 190.83/63.61 = [a()] 190.83/63.61 190.83/63.61 [activate(n__e())] = [1] 190.83/63.61 ? [2] 190.83/63.61 = [e()] 190.83/63.61 190.83/63.61 [activate(n__i())] = [1] 190.83/63.61 ? [2] 190.83/63.61 = [i()] 190.83/63.61 190.83/63.61 [activate(n__o())] = [1] 190.83/63.61 ? [2] 190.83/63.61 = [o()] 190.83/63.61 190.83/63.61 [activate(n__u())] = [1] 190.83/63.61 ? [2] 190.83/63.61 = [u()] 190.83/63.61 190.83/63.61 [U31(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U41(tt(), V2)] = [1] V2 + [0] 190.83/63.61 >= [1] V2 + [0] 190.83/63.61 = [U42(isNeList(activate(V2)))] 190.83/63.61 190.83/63.61 [U42(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isNeList(V)] = [1] V + [0] 190.83/63.61 >= [1] V + [0] 190.83/63.61 = [U31(isQid(activate(V)))] 190.83/63.61 190.83/63.61 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.61 >= [1] V2 + [1] V1 + [1] 190.83/63.61 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.61 190.83/63.61 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.61 >= [1] V2 + [1] V1 + [1] 190.83/63.61 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.61 190.83/63.61 [U51(tt(), V2)] = [1] V2 + [1] 190.83/63.61 >= [1] V2 + [1] 190.83/63.61 = [U52(isList(activate(V2)))] 190.83/63.61 190.83/63.61 [U52(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U61(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U71(tt(), P)] = [1] P + [0] 190.83/63.61 >= [1] P + [0] 190.83/63.61 = [U72(isPal(activate(P)))] 190.83/63.61 190.83/63.61 [U72(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isPal(V)] = [1] V + [0] 190.83/63.61 >= [1] V + [0] 190.83/63.61 = [U81(isNePal(activate(V)))] 190.83/63.61 190.83/63.61 [isPal(n__nil())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U81(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__a())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__e())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__i())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__o())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__u())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isNePal(V)] = [1] V + [0] 190.83/63.61 >= [1] V + [0] 190.83/63.61 = [U61(isQid(activate(V)))] 190.83/63.61 190.83/63.61 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [3] 190.83/63.61 > [1] P + [1] I + [0] 190.83/63.61 = [U71(isQid(activate(I)), activate(P))] 190.83/63.61 190.83/63.61 [a()] = [2] 190.83/63.61 > [1] 190.83/63.61 = [n__a()] 190.83/63.61 190.83/63.61 [e()] = [2] 190.83/63.61 > [1] 190.83/63.61 = [n__e()] 190.83/63.61 190.83/63.61 [i()] = [2] 190.83/63.61 > [1] 190.83/63.61 = [n__i()] 190.83/63.61 190.83/63.61 [o()] = [2] 190.83/63.61 > [1] 190.83/63.61 = [n__o()] 190.83/63.61 190.83/63.61 [u()] = [2] 190.83/63.61 > [1] 190.83/63.61 = [n__u()] 190.83/63.61 190.83/63.61 190.83/63.61 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.83/63.61 190.83/63.61 We are left with following problem, upon which TcT provides the 190.83/63.61 certificate YES(O(1),O(n^2)). 190.83/63.61 190.83/63.61 Strict Trs: 190.83/63.61 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.61 , U11(tt()) -> tt() 190.83/63.61 , U22(tt()) -> tt() 190.83/63.61 , activate(X) -> X 190.83/63.61 , activate(n__nil()) -> nil() 190.83/63.61 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.61 , activate(n__a()) -> a() 190.83/63.61 , activate(n__e()) -> e() 190.83/63.61 , activate(n__i()) -> i() 190.83/63.61 , activate(n__o()) -> o() 190.83/63.61 , activate(n__u()) -> u() 190.83/63.61 , U31(tt()) -> tt() 190.83/63.61 , U42(tt()) -> tt() 190.83/63.61 , U61(tt()) -> tt() 190.83/63.61 , U72(tt()) -> tt() 190.83/63.61 , U81(tt()) -> tt() } 190.83/63.61 Weak Trs: 190.83/63.61 { __(X1, X2) -> n____(X1, X2) 190.83/63.61 , __(X, nil()) -> X 190.83/63.61 , __(nil(), X) -> X 190.83/63.61 , nil() -> n__nil() 190.83/63.61 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.61 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.61 , isList(n__nil()) -> tt() 190.83/63.61 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.61 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.61 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.61 , isNeList(n____(V1, V2)) -> 190.83/63.61 U41(isList(activate(V1)), activate(V2)) 190.83/63.61 , isNeList(n____(V1, V2)) -> 190.83/63.61 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.61 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.61 , U52(tt()) -> tt() 190.83/63.61 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.61 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.61 , isPal(n__nil()) -> tt() 190.83/63.61 , isQid(n__a()) -> tt() 190.83/63.61 , isQid(n__e()) -> tt() 190.83/63.61 , isQid(n__i()) -> tt() 190.83/63.61 , isQid(n__o()) -> tt() 190.83/63.61 , isQid(n__u()) -> tt() 190.83/63.61 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.61 , isNePal(n____(I, __(P, I))) -> 190.83/63.61 U71(isQid(activate(I)), activate(P)) 190.83/63.61 , a() -> n__a() 190.83/63.61 , e() -> n__e() 190.83/63.61 , i() -> n__i() 190.83/63.61 , o() -> n__o() 190.83/63.61 , u() -> n__u() } 190.83/63.61 Obligation: 190.83/63.61 derivational complexity 190.83/63.61 Answer: 190.83/63.61 YES(O(1),O(n^2)) 190.83/63.61 190.83/63.61 We use the processor 'matrix interpretation of dimension 1' to 190.83/63.61 orient following rules strictly. 190.83/63.61 190.83/63.61 Trs: { U61(tt()) -> tt() } 190.83/63.61 190.83/63.61 The induced complexity on above rules (modulo remaining rules) is 190.83/63.61 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.83/63.61 component(s). 190.83/63.61 190.83/63.61 Sub-proof: 190.83/63.61 ---------- 190.83/63.61 TcT has computed the following triangular matrix interpretation. 190.83/63.61 190.83/63.61 [__](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.61 190.83/63.61 [nil] = [0] 190.83/63.61 190.83/63.61 [U11](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [tt] = [0] 190.83/63.61 190.83/63.61 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.61 190.83/63.61 [U22](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [isList](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [activate](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U31](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.61 190.83/63.61 [U42](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [isNeList](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.61 190.83/63.61 [U52](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [U61](x1) = [1] x1 + [1] 190.83/63.61 190.83/63.61 [U71](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.61 190.83/63.61 [U72](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [isPal](x1) = [1] x1 + [1] 190.83/63.61 190.83/63.61 [U81](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [n__nil] = [0] 190.83/63.61 190.83/63.61 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.61 190.83/63.61 [isQid](x1) = [1] x1 + [0] 190.83/63.61 190.83/63.61 [isNePal](x1) = [1] x1 + [1] 190.83/63.61 190.83/63.61 [n__a] = [0] 190.83/63.61 190.83/63.61 [n__e] = [1] 190.83/63.61 190.83/63.61 [n__i] = [0] 190.83/63.61 190.83/63.61 [n__o] = [0] 190.83/63.61 190.83/63.61 [n__u] = [1] 190.83/63.61 190.83/63.61 [a] = [0] 190.83/63.61 190.83/63.61 [e] = [1] 190.83/63.61 190.83/63.61 [i] = [0] 190.83/63.61 190.83/63.61 [o] = [0] 190.83/63.61 190.83/63.61 [u] = [1] 190.83/63.61 190.83/63.61 The order satisfies the following ordering constraints: 190.83/63.61 190.83/63.61 [__(X1, X2)] = [1] X1 + [1] X2 + [0] 190.83/63.61 >= [1] X1 + [1] X2 + [0] 190.83/63.61 = [n____(X1, X2)] 190.83/63.61 190.83/63.61 [__(X, nil())] = [1] X + [0] 190.83/63.61 >= [1] X + [0] 190.83/63.61 = [X] 190.83/63.61 190.83/63.61 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [0] 190.83/63.61 >= [1] X + [1] Y + [1] Z + [0] 190.83/63.61 = [__(X, __(Y, Z))] 190.83/63.61 190.83/63.61 [__(nil(), X)] = [1] X + [0] 190.83/63.61 >= [1] X + [0] 190.83/63.61 = [X] 190.83/63.61 190.83/63.61 [nil()] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [n__nil()] 190.83/63.61 190.83/63.61 [U11(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U21(tt(), V2)] = [1] V2 + [0] 190.83/63.61 >= [1] V2 + [0] 190.83/63.61 = [U22(isList(activate(V2)))] 190.83/63.61 190.83/63.61 [U22(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isList(V)] = [1] V + [0] 190.83/63.61 >= [1] V + [0] 190.83/63.61 = [U11(isNeList(activate(V)))] 190.83/63.61 190.83/63.61 [isList(n__nil())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.61 >= [1] V2 + [1] V1 + [0] 190.83/63.61 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.61 190.83/63.61 [activate(X)] = [1] X + [0] 190.83/63.61 >= [1] X + [0] 190.83/63.61 = [X] 190.83/63.61 190.83/63.61 [activate(n__nil())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [nil()] 190.83/63.61 190.83/63.61 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.83/63.61 >= [1] X1 + [1] X2 + [0] 190.83/63.61 = [__(X1, X2)] 190.83/63.61 190.83/63.61 [activate(n__a())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [a()] 190.83/63.61 190.83/63.61 [activate(n__e())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [e()] 190.83/63.61 190.83/63.61 [activate(n__i())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [i()] 190.83/63.61 190.83/63.61 [activate(n__o())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [o()] 190.83/63.61 190.83/63.61 [activate(n__u())] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [u()] 190.83/63.61 190.83/63.61 [U31(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U41(tt(), V2)] = [1] V2 + [0] 190.83/63.61 >= [1] V2 + [0] 190.83/63.61 = [U42(isNeList(activate(V2)))] 190.83/63.61 190.83/63.61 [U42(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isNeList(V)] = [1] V + [0] 190.83/63.61 >= [1] V + [0] 190.83/63.61 = [U31(isQid(activate(V)))] 190.83/63.61 190.83/63.61 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.61 >= [1] V2 + [1] V1 + [0] 190.83/63.61 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.61 190.83/63.61 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.61 >= [1] V2 + [1] V1 + [0] 190.83/63.61 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.61 190.83/63.61 [U51(tt(), V2)] = [1] V2 + [0] 190.83/63.61 >= [1] V2 + [0] 190.83/63.61 = [U52(isList(activate(V2)))] 190.83/63.61 190.83/63.61 [U52(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U61(tt())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U71(tt(), P)] = [1] P + [1] 190.83/63.61 >= [1] P + [1] 190.83/63.61 = [U72(isPal(activate(P)))] 190.83/63.61 190.83/63.61 [U72(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isPal(V)] = [1] V + [1] 190.83/63.61 >= [1] V + [1] 190.83/63.61 = [U81(isNePal(activate(V)))] 190.83/63.61 190.83/63.61 [isPal(n__nil())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [U81(tt())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__a())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__e())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__i())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__o())] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isQid(n__u())] = [1] 190.83/63.61 > [0] 190.83/63.61 = [tt()] 190.83/63.61 190.83/63.61 [isNePal(V)] = [1] V + [1] 190.83/63.61 >= [1] V + [1] 190.83/63.61 = [U61(isQid(activate(V)))] 190.83/63.61 190.83/63.61 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [1] 190.83/63.61 >= [1] P + [1] I + [1] 190.83/63.61 = [U71(isQid(activate(I)), activate(P))] 190.83/63.61 190.83/63.61 [a()] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [n__a()] 190.83/63.61 190.83/63.61 [e()] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [n__e()] 190.83/63.61 190.83/63.61 [i()] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [n__i()] 190.83/63.61 190.83/63.61 [o()] = [0] 190.83/63.61 >= [0] 190.83/63.61 = [n__o()] 190.83/63.61 190.83/63.61 [u()] = [1] 190.83/63.61 >= [1] 190.83/63.61 = [n__u()] 190.83/63.61 190.83/63.61 190.83/63.61 We return to the main proof. 190.83/63.61 190.83/63.61 We are left with following problem, upon which TcT provides the 190.83/63.61 certificate YES(O(1),O(n^2)). 190.83/63.61 190.83/63.61 Strict Trs: 190.83/63.61 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.61 , U11(tt()) -> tt() 190.83/63.61 , U22(tt()) -> tt() 190.83/63.61 , activate(X) -> X 190.83/63.61 , activate(n__nil()) -> nil() 190.83/63.61 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.61 , activate(n__a()) -> a() 190.83/63.61 , activate(n__e()) -> e() 190.83/63.61 , activate(n__i()) -> i() 190.83/63.61 , activate(n__o()) -> o() 190.83/63.61 , activate(n__u()) -> u() 190.83/63.61 , U31(tt()) -> tt() 190.83/63.61 , U42(tt()) -> tt() 190.83/63.61 , U72(tt()) -> tt() 190.83/63.61 , U81(tt()) -> tt() } 190.83/63.61 Weak Trs: 190.83/63.61 { __(X1, X2) -> n____(X1, X2) 190.83/63.61 , __(X, nil()) -> X 190.83/63.61 , __(nil(), X) -> X 190.83/63.61 , nil() -> n__nil() 190.83/63.61 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.61 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.61 , isList(n__nil()) -> tt() 190.83/63.61 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.61 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.61 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.61 , isNeList(n____(V1, V2)) -> 190.83/63.61 U41(isList(activate(V1)), activate(V2)) 190.83/63.61 , isNeList(n____(V1, V2)) -> 190.83/63.61 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.61 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.61 , U52(tt()) -> tt() 190.83/63.61 , U61(tt()) -> tt() 190.83/63.61 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.62 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.62 , isPal(n__nil()) -> tt() 190.83/63.62 , isQid(n__a()) -> tt() 190.83/63.62 , isQid(n__e()) -> tt() 190.83/63.62 , isQid(n__i()) -> tt() 190.83/63.62 , isQid(n__o()) -> tt() 190.83/63.62 , isQid(n__u()) -> tt() 190.83/63.62 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.62 , isNePal(n____(I, __(P, I))) -> 190.83/63.62 U71(isQid(activate(I)), activate(P)) 190.83/63.62 , a() -> n__a() 190.83/63.62 , e() -> n__e() 190.83/63.62 , i() -> n__i() 190.83/63.62 , o() -> n__o() 190.83/63.62 , u() -> n__u() } 190.83/63.62 Obligation: 190.83/63.62 derivational complexity 190.83/63.62 Answer: 190.83/63.62 YES(O(1),O(n^2)) 190.83/63.62 190.83/63.62 We use the processor 'matrix interpretation of dimension 1' to 190.83/63.62 orient following rules strictly. 190.83/63.62 190.83/63.62 Trs: { U81(tt()) -> tt() } 190.83/63.62 190.83/63.62 The induced complexity on above rules (modulo remaining rules) is 190.83/63.62 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.83/63.62 component(s). 190.83/63.62 190.83/63.62 Sub-proof: 190.83/63.62 ---------- 190.83/63.62 TcT has computed the following triangular matrix interpretation. 190.83/63.62 190.83/63.62 [__](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [nil] = [0] 190.83/63.62 190.83/63.62 [U11](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [tt] = [0] 190.83/63.62 190.83/63.62 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.62 190.83/63.62 [U22](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isList](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [activate](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U31](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.62 190.83/63.62 [U42](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isNeList](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.62 190.83/63.62 [U52](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U61](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U71](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [U72](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isPal](x1) = [1] x1 + [1] 190.83/63.62 190.83/63.62 [U81](x1) = [1] x1 + [1] 190.83/63.62 190.83/63.62 [n__nil] = [0] 190.83/63.62 190.83/63.62 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [isQid](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isNePal](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [n__a] = [2] 190.83/63.62 190.83/63.62 [n__e] = [1] 190.83/63.62 190.83/63.62 [n__i] = [0] 190.83/63.62 190.83/63.62 [n__o] = [0] 190.83/63.62 190.83/63.62 [n__u] = [1] 190.83/63.62 190.83/63.62 [a] = [2] 190.83/63.62 190.83/63.62 [e] = [1] 190.83/63.62 190.83/63.62 [i] = [0] 190.83/63.62 190.83/63.62 [o] = [0] 190.83/63.62 190.83/63.62 [u] = [1] 190.83/63.62 190.83/63.62 The order satisfies the following ordering constraints: 190.83/63.62 190.83/63.62 [__(X1, X2)] = [1] X1 + [1] X2 + [1] 190.83/63.62 >= [1] X1 + [1] X2 + [1] 190.83/63.62 = [n____(X1, X2)] 190.83/63.62 190.83/63.62 [__(X, nil())] = [1] X + [1] 190.83/63.62 > [1] X + [0] 190.83/63.62 = [X] 190.83/63.62 190.83/63.62 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [2] 190.83/63.62 >= [1] X + [1] Y + [1] Z + [2] 190.83/63.62 = [__(X, __(Y, Z))] 190.83/63.62 190.83/63.62 [__(nil(), X)] = [1] X + [1] 190.83/63.62 > [1] X + [0] 190.83/63.62 = [X] 190.83/63.62 190.83/63.62 [nil()] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [n__nil()] 190.83/63.62 190.83/63.62 [U11(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U21(tt(), V2)] = [1] V2 + [0] 190.83/63.62 >= [1] V2 + [0] 190.83/63.62 = [U22(isList(activate(V2)))] 190.83/63.62 190.83/63.62 [U22(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isList(V)] = [1] V + [0] 190.83/63.62 >= [1] V + [0] 190.83/63.62 = [U11(isNeList(activate(V)))] 190.83/63.62 190.83/63.62 [isList(n__nil())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.62 > [1] V2 + [1] V1 + [0] 190.83/63.62 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.62 190.83/63.62 [activate(X)] = [1] X + [0] 190.83/63.62 >= [1] X + [0] 190.83/63.62 = [X] 190.83/63.62 190.83/63.62 [activate(n__nil())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [nil()] 190.83/63.62 190.83/63.62 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.83/63.62 >= [1] X1 + [1] X2 + [1] 190.83/63.62 = [__(X1, X2)] 190.83/63.62 190.83/63.62 [activate(n__a())] = [2] 190.83/63.62 >= [2] 190.83/63.62 = [a()] 190.83/63.62 190.83/63.62 [activate(n__e())] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [e()] 190.83/63.62 190.83/63.62 [activate(n__i())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [i()] 190.83/63.62 190.83/63.62 [activate(n__o())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [o()] 190.83/63.62 190.83/63.62 [activate(n__u())] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [u()] 190.83/63.62 190.83/63.62 [U31(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U41(tt(), V2)] = [1] V2 + [0] 190.83/63.62 >= [1] V2 + [0] 190.83/63.62 = [U42(isNeList(activate(V2)))] 190.83/63.62 190.83/63.62 [U42(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isNeList(V)] = [1] V + [0] 190.83/63.62 >= [1] V + [0] 190.83/63.62 = [U31(isQid(activate(V)))] 190.83/63.62 190.83/63.62 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.62 > [1] V2 + [1] V1 + [0] 190.83/63.62 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.62 190.83/63.62 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.62 > [1] V2 + [1] V1 + [0] 190.83/63.62 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.62 190.83/63.62 [U51(tt(), V2)] = [1] V2 + [0] 190.83/63.62 >= [1] V2 + [0] 190.83/63.62 = [U52(isList(activate(V2)))] 190.83/63.62 190.83/63.62 [U52(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U61(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U71(tt(), P)] = [1] P + [1] 190.83/63.62 >= [1] P + [1] 190.83/63.62 = [U72(isPal(activate(P)))] 190.83/63.62 190.83/63.62 [U72(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isPal(V)] = [1] V + [1] 190.83/63.62 >= [1] V + [1] 190.83/63.62 = [U81(isNePal(activate(V)))] 190.83/63.62 190.83/63.62 [isPal(n__nil())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U81(tt())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__a())] = [2] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__e())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__i())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__o())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__u())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isNePal(V)] = [1] V + [0] 190.83/63.62 >= [1] V + [0] 190.83/63.62 = [U61(isQid(activate(V)))] 190.83/63.62 190.83/63.62 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [2] 190.83/63.62 > [1] P + [1] I + [1] 190.83/63.62 = [U71(isQid(activate(I)), activate(P))] 190.83/63.62 190.83/63.62 [a()] = [2] 190.83/63.62 >= [2] 190.83/63.62 = [n__a()] 190.83/63.62 190.83/63.62 [e()] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [n__e()] 190.83/63.62 190.83/63.62 [i()] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [n__i()] 190.83/63.62 190.83/63.62 [o()] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [n__o()] 190.83/63.62 190.83/63.62 [u()] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [n__u()] 190.83/63.62 190.83/63.62 190.83/63.62 We return to the main proof. 190.83/63.62 190.83/63.62 We are left with following problem, upon which TcT provides the 190.83/63.62 certificate YES(O(1),O(n^2)). 190.83/63.62 190.83/63.62 Strict Trs: 190.83/63.62 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.62 , U11(tt()) -> tt() 190.83/63.62 , U22(tt()) -> tt() 190.83/63.62 , activate(X) -> X 190.83/63.62 , activate(n__nil()) -> nil() 190.83/63.62 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.62 , activate(n__a()) -> a() 190.83/63.62 , activate(n__e()) -> e() 190.83/63.62 , activate(n__i()) -> i() 190.83/63.62 , activate(n__o()) -> o() 190.83/63.62 , activate(n__u()) -> u() 190.83/63.62 , U31(tt()) -> tt() 190.83/63.62 , U42(tt()) -> tt() 190.83/63.62 , U72(tt()) -> tt() } 190.83/63.62 Weak Trs: 190.83/63.62 { __(X1, X2) -> n____(X1, X2) 190.83/63.62 , __(X, nil()) -> X 190.83/63.62 , __(nil(), X) -> X 190.83/63.62 , nil() -> n__nil() 190.83/63.62 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.62 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.62 , isList(n__nil()) -> tt() 190.83/63.62 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.62 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.62 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.62 , isNeList(n____(V1, V2)) -> 190.83/63.62 U41(isList(activate(V1)), activate(V2)) 190.83/63.62 , isNeList(n____(V1, V2)) -> 190.83/63.62 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.62 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.62 , U52(tt()) -> tt() 190.83/63.62 , U61(tt()) -> tt() 190.83/63.62 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.62 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.62 , isPal(n__nil()) -> tt() 190.83/63.62 , U81(tt()) -> tt() 190.83/63.62 , isQid(n__a()) -> tt() 190.83/63.62 , isQid(n__e()) -> tt() 190.83/63.62 , isQid(n__i()) -> tt() 190.83/63.62 , isQid(n__o()) -> tt() 190.83/63.62 , isQid(n__u()) -> tt() 190.83/63.62 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.62 , isNePal(n____(I, __(P, I))) -> 190.83/63.62 U71(isQid(activate(I)), activate(P)) 190.83/63.62 , a() -> n__a() 190.83/63.62 , e() -> n__e() 190.83/63.62 , i() -> n__i() 190.83/63.62 , o() -> n__o() 190.83/63.62 , u() -> n__u() } 190.83/63.62 Obligation: 190.83/63.62 derivational complexity 190.83/63.62 Answer: 190.83/63.62 YES(O(1),O(n^2)) 190.83/63.62 190.83/63.62 We use the processor 'matrix interpretation of dimension 1' to 190.83/63.62 orient following rules strictly. 190.83/63.62 190.83/63.62 Trs: { U11(tt()) -> tt() } 190.83/63.62 190.83/63.62 The induced complexity on above rules (modulo remaining rules) is 190.83/63.62 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.83/63.62 component(s). 190.83/63.62 190.83/63.62 Sub-proof: 190.83/63.62 ---------- 190.83/63.62 TcT has computed the following triangular matrix interpretation. 190.83/63.62 190.83/63.62 [__](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [nil] = [0] 190.83/63.62 190.83/63.62 [U11](x1) = [1] x1 + [1] 190.83/63.62 190.83/63.62 [tt] = [0] 190.83/63.62 190.83/63.62 [U21](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [U22](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isList](x1) = [1] x1 + [1] 190.83/63.62 190.83/63.62 [activate](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U31](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.62 190.83/63.62 [U42](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isNeList](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U51](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [U52](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U61](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.62 190.83/63.62 [U72](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isPal](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U81](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [n__nil] = [0] 190.83/63.62 190.83/63.62 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [isQid](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isNePal](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [n__a] = [0] 190.83/63.62 190.83/63.62 [n__e] = [2] 190.83/63.62 190.83/63.62 [n__i] = [1] 190.83/63.62 190.83/63.62 [n__o] = [1] 190.83/63.62 190.83/63.62 [n__u] = [0] 190.83/63.62 190.83/63.62 [a] = [0] 190.83/63.62 190.83/63.62 [e] = [2] 190.83/63.62 190.83/63.62 [i] = [1] 190.83/63.62 190.83/63.62 [o] = [1] 190.83/63.62 190.83/63.62 [u] = [0] 190.83/63.62 190.83/63.62 The order satisfies the following ordering constraints: 190.83/63.62 190.83/63.62 [__(X1, X2)] = [1] X1 + [1] X2 + [1] 190.83/63.62 >= [1] X1 + [1] X2 + [1] 190.83/63.62 = [n____(X1, X2)] 190.83/63.62 190.83/63.62 [__(X, nil())] = [1] X + [1] 190.83/63.62 > [1] X + [0] 190.83/63.62 = [X] 190.83/63.62 190.83/63.62 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [2] 190.83/63.62 >= [1] X + [1] Y + [1] Z + [2] 190.83/63.62 = [__(X, __(Y, Z))] 190.83/63.62 190.83/63.62 [__(nil(), X)] = [1] X + [1] 190.83/63.62 > [1] X + [0] 190.83/63.62 = [X] 190.83/63.62 190.83/63.62 [nil()] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [n__nil()] 190.83/63.62 190.83/63.62 [U11(tt())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U21(tt(), V2)] = [1] V2 + [1] 190.83/63.62 >= [1] V2 + [1] 190.83/63.62 = [U22(isList(activate(V2)))] 190.83/63.62 190.83/63.62 [U22(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isList(V)] = [1] V + [1] 190.83/63.62 >= [1] V + [1] 190.83/63.62 = [U11(isNeList(activate(V)))] 190.83/63.62 190.83/63.62 [isList(n__nil())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [2] 190.83/63.62 >= [1] V2 + [1] V1 + [2] 190.83/63.62 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.62 190.83/63.62 [activate(X)] = [1] X + [0] 190.83/63.62 >= [1] X + [0] 190.83/63.62 = [X] 190.83/63.62 190.83/63.62 [activate(n__nil())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [nil()] 190.83/63.62 190.83/63.62 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.83/63.62 >= [1] X1 + [1] X2 + [1] 190.83/63.62 = [__(X1, X2)] 190.83/63.62 190.83/63.62 [activate(n__a())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [a()] 190.83/63.62 190.83/63.62 [activate(n__e())] = [2] 190.83/63.62 >= [2] 190.83/63.62 = [e()] 190.83/63.62 190.83/63.62 [activate(n__i())] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [i()] 190.83/63.62 190.83/63.62 [activate(n__o())] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [o()] 190.83/63.62 190.83/63.62 [activate(n__u())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [u()] 190.83/63.62 190.83/63.62 [U31(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U41(tt(), V2)] = [1] V2 + [0] 190.83/63.62 >= [1] V2 + [0] 190.83/63.62 = [U42(isNeList(activate(V2)))] 190.83/63.62 190.83/63.62 [U42(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isNeList(V)] = [1] V + [0] 190.83/63.62 >= [1] V + [0] 190.83/63.62 = [U31(isQid(activate(V)))] 190.83/63.62 190.83/63.62 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.62 >= [1] V2 + [1] V1 + [1] 190.83/63.62 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.62 190.83/63.62 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.62 >= [1] V2 + [1] V1 + [1] 190.83/63.62 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.62 190.83/63.62 [U51(tt(), V2)] = [1] V2 + [1] 190.83/63.62 >= [1] V2 + [1] 190.83/63.62 = [U52(isList(activate(V2)))] 190.83/63.62 190.83/63.62 [U52(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U61(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U71(tt(), P)] = [1] P + [0] 190.83/63.62 >= [1] P + [0] 190.83/63.62 = [U72(isPal(activate(P)))] 190.83/63.62 190.83/63.62 [U72(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isPal(V)] = [1] V + [0] 190.83/63.62 >= [1] V + [0] 190.83/63.62 = [U81(isNePal(activate(V)))] 190.83/63.62 190.83/63.62 [isPal(n__nil())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U81(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__a())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__e())] = [2] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__i())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__o())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__u())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isNePal(V)] = [1] V + [0] 190.83/63.62 >= [1] V + [0] 190.83/63.62 = [U61(isQid(activate(V)))] 190.83/63.62 190.83/63.62 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [2] 190.83/63.62 > [1] P + [1] I + [0] 190.83/63.62 = [U71(isQid(activate(I)), activate(P))] 190.83/63.62 190.83/63.62 [a()] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [n__a()] 190.83/63.62 190.83/63.62 [e()] = [2] 190.83/63.62 >= [2] 190.83/63.62 = [n__e()] 190.83/63.62 190.83/63.62 [i()] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [n__i()] 190.83/63.62 190.83/63.62 [o()] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [n__o()] 190.83/63.62 190.83/63.62 [u()] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [n__u()] 190.83/63.62 190.83/63.62 190.83/63.62 We return to the main proof. 190.83/63.62 190.83/63.62 We are left with following problem, upon which TcT provides the 190.83/63.62 certificate YES(O(1),O(n^2)). 190.83/63.62 190.83/63.62 Strict Trs: 190.83/63.62 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.62 , U22(tt()) -> tt() 190.83/63.62 , activate(X) -> X 190.83/63.62 , activate(n__nil()) -> nil() 190.83/63.62 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.62 , activate(n__a()) -> a() 190.83/63.62 , activate(n__e()) -> e() 190.83/63.62 , activate(n__i()) -> i() 190.83/63.62 , activate(n__o()) -> o() 190.83/63.62 , activate(n__u()) -> u() 190.83/63.62 , U31(tt()) -> tt() 190.83/63.62 , U42(tt()) -> tt() 190.83/63.62 , U72(tt()) -> tt() } 190.83/63.62 Weak Trs: 190.83/63.62 { __(X1, X2) -> n____(X1, X2) 190.83/63.62 , __(X, nil()) -> X 190.83/63.62 , __(nil(), X) -> X 190.83/63.62 , nil() -> n__nil() 190.83/63.62 , U11(tt()) -> tt() 190.83/63.62 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.62 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.62 , isList(n__nil()) -> tt() 190.83/63.62 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.62 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.62 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.62 , isNeList(n____(V1, V2)) -> 190.83/63.62 U41(isList(activate(V1)), activate(V2)) 190.83/63.62 , isNeList(n____(V1, V2)) -> 190.83/63.62 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.62 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.62 , U52(tt()) -> tt() 190.83/63.62 , U61(tt()) -> tt() 190.83/63.62 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.62 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.62 , isPal(n__nil()) -> tt() 190.83/63.62 , U81(tt()) -> tt() 190.83/63.62 , isQid(n__a()) -> tt() 190.83/63.62 , isQid(n__e()) -> tt() 190.83/63.62 , isQid(n__i()) -> tt() 190.83/63.62 , isQid(n__o()) -> tt() 190.83/63.62 , isQid(n__u()) -> tt() 190.83/63.62 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.62 , isNePal(n____(I, __(P, I))) -> 190.83/63.62 U71(isQid(activate(I)), activate(P)) 190.83/63.62 , a() -> n__a() 190.83/63.62 , e() -> n__e() 190.83/63.62 , i() -> n__i() 190.83/63.62 , o() -> n__o() 190.83/63.62 , u() -> n__u() } 190.83/63.62 Obligation: 190.83/63.62 derivational complexity 190.83/63.62 Answer: 190.83/63.62 YES(O(1),O(n^2)) 190.83/63.62 190.83/63.62 We use the processor 'matrix interpretation of dimension 1' to 190.83/63.62 orient following rules strictly. 190.83/63.62 190.83/63.62 Trs: { U72(tt()) -> tt() } 190.83/63.62 190.83/63.62 The induced complexity on above rules (modulo remaining rules) is 190.83/63.62 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.83/63.62 component(s). 190.83/63.62 190.83/63.62 Sub-proof: 190.83/63.62 ---------- 190.83/63.62 TcT has computed the following triangular matrix interpretation. 190.83/63.62 190.83/63.62 [__](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [nil] = [1] 190.83/63.62 190.83/63.62 [U11](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [tt] = [0] 190.83/63.62 190.83/63.62 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.62 190.83/63.62 [U22](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isList](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [activate](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U31](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.62 190.83/63.62 [U42](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isNeList](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.62 190.83/63.62 [U52](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U61](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U71](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [U72](x1) = [1] x1 + [1] 190.83/63.62 190.83/63.62 [isPal](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [U81](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [n__nil] = [1] 190.83/63.62 190.83/63.62 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.62 190.83/63.62 [isQid](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [isNePal](x1) = [1] x1 + [0] 190.83/63.62 190.83/63.62 [n__a] = [2] 190.83/63.62 190.83/63.62 [n__e] = [1] 190.83/63.62 190.83/63.62 [n__i] = [1] 190.83/63.62 190.83/63.62 [n__o] = [0] 190.83/63.62 190.83/63.62 [n__u] = [0] 190.83/63.62 190.83/63.62 [a] = [2] 190.83/63.62 190.83/63.62 [e] = [1] 190.83/63.62 190.83/63.62 [i] = [1] 190.83/63.62 190.83/63.62 [o] = [0] 190.83/63.62 190.83/63.62 [u] = [0] 190.83/63.62 190.83/63.62 The order satisfies the following ordering constraints: 190.83/63.62 190.83/63.62 [__(X1, X2)] = [1] X1 + [1] X2 + [1] 190.83/63.62 >= [1] X1 + [1] X2 + [1] 190.83/63.62 = [n____(X1, X2)] 190.83/63.62 190.83/63.62 [__(X, nil())] = [1] X + [2] 190.83/63.62 > [1] X + [0] 190.83/63.62 = [X] 190.83/63.62 190.83/63.62 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [2] 190.83/63.62 >= [1] X + [1] Y + [1] Z + [2] 190.83/63.62 = [__(X, __(Y, Z))] 190.83/63.62 190.83/63.62 [__(nil(), X)] = [1] X + [2] 190.83/63.62 > [1] X + [0] 190.83/63.62 = [X] 190.83/63.62 190.83/63.62 [nil()] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [n__nil()] 190.83/63.62 190.83/63.62 [U11(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U21(tt(), V2)] = [1] V2 + [0] 190.83/63.62 >= [1] V2 + [0] 190.83/63.62 = [U22(isList(activate(V2)))] 190.83/63.62 190.83/63.62 [U22(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isList(V)] = [1] V + [0] 190.83/63.62 >= [1] V + [0] 190.83/63.62 = [U11(isNeList(activate(V)))] 190.83/63.62 190.83/63.62 [isList(n__nil())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.62 > [1] V2 + [1] V1 + [0] 190.83/63.62 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.62 190.83/63.62 [activate(X)] = [1] X + [0] 190.83/63.62 >= [1] X + [0] 190.83/63.62 = [X] 190.83/63.62 190.83/63.62 [activate(n__nil())] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [nil()] 190.83/63.62 190.83/63.62 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.83/63.62 >= [1] X1 + [1] X2 + [1] 190.83/63.62 = [__(X1, X2)] 190.83/63.62 190.83/63.62 [activate(n__a())] = [2] 190.83/63.62 >= [2] 190.83/63.62 = [a()] 190.83/63.62 190.83/63.62 [activate(n__e())] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [e()] 190.83/63.62 190.83/63.62 [activate(n__i())] = [1] 190.83/63.62 >= [1] 190.83/63.62 = [i()] 190.83/63.62 190.83/63.62 [activate(n__o())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [o()] 190.83/63.62 190.83/63.62 [activate(n__u())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [u()] 190.83/63.62 190.83/63.62 [U31(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U41(tt(), V2)] = [1] V2 + [0] 190.83/63.62 >= [1] V2 + [0] 190.83/63.62 = [U42(isNeList(activate(V2)))] 190.83/63.62 190.83/63.62 [U42(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isNeList(V)] = [1] V + [0] 190.83/63.62 >= [1] V + [0] 190.83/63.62 = [U31(isQid(activate(V)))] 190.83/63.62 190.83/63.62 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.62 > [1] V2 + [1] V1 + [0] 190.83/63.62 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.62 190.83/63.62 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.62 > [1] V2 + [1] V1 + [0] 190.83/63.62 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.62 190.83/63.62 [U51(tt(), V2)] = [1] V2 + [0] 190.83/63.62 >= [1] V2 + [0] 190.83/63.62 = [U52(isList(activate(V2)))] 190.83/63.62 190.83/63.62 [U52(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U61(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U71(tt(), P)] = [1] P + [1] 190.83/63.62 >= [1] P + [1] 190.83/63.62 = [U72(isPal(activate(P)))] 190.83/63.62 190.83/63.62 [U72(tt())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isPal(V)] = [1] V + [0] 190.83/63.62 >= [1] V + [0] 190.83/63.62 = [U81(isNePal(activate(V)))] 190.83/63.62 190.83/63.62 [isPal(n__nil())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [U81(tt())] = [0] 190.83/63.62 >= [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__a())] = [2] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__e())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__i())] = [1] 190.83/63.62 > [0] 190.83/63.62 = [tt()] 190.83/63.62 190.83/63.62 [isQid(n__o())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__u())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isNePal(V)] = [1] V + [0] 190.83/63.63 >= [1] V + [0] 190.83/63.63 = [U61(isQid(activate(V)))] 190.83/63.63 190.83/63.63 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [2] 190.83/63.63 > [1] P + [1] I + [1] 190.83/63.63 = [U71(isQid(activate(I)), activate(P))] 190.83/63.63 190.83/63.63 [a()] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [n__a()] 190.83/63.63 190.83/63.63 [e()] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [n__e()] 190.83/63.63 190.83/63.63 [i()] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [n__i()] 190.83/63.63 190.83/63.63 [o()] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [n__o()] 190.83/63.63 190.83/63.63 [u()] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [n__u()] 190.83/63.63 190.83/63.63 190.83/63.63 We return to the main proof. 190.83/63.63 190.83/63.63 We are left with following problem, upon which TcT provides the 190.83/63.63 certificate YES(O(1),O(n^2)). 190.83/63.63 190.83/63.63 Strict Trs: 190.83/63.63 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.63 , U22(tt()) -> tt() 190.83/63.63 , activate(X) -> X 190.83/63.63 , activate(n__nil()) -> nil() 190.83/63.63 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.63 , activate(n__a()) -> a() 190.83/63.63 , activate(n__e()) -> e() 190.83/63.63 , activate(n__i()) -> i() 190.83/63.63 , activate(n__o()) -> o() 190.83/63.63 , activate(n__u()) -> u() 190.83/63.63 , U31(tt()) -> tt() 190.83/63.63 , U42(tt()) -> tt() } 190.83/63.63 Weak Trs: 190.83/63.63 { __(X1, X2) -> n____(X1, X2) 190.83/63.63 , __(X, nil()) -> X 190.83/63.63 , __(nil(), X) -> X 190.83/63.63 , nil() -> n__nil() 190.83/63.63 , U11(tt()) -> tt() 190.83/63.63 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.63 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.63 , isList(n__nil()) -> tt() 190.83/63.63 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.63 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.63 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.63 , isNeList(n____(V1, V2)) -> 190.83/63.63 U41(isList(activate(V1)), activate(V2)) 190.83/63.63 , isNeList(n____(V1, V2)) -> 190.83/63.63 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.63 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.63 , U52(tt()) -> tt() 190.83/63.63 , U61(tt()) -> tt() 190.83/63.63 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.63 , U72(tt()) -> tt() 190.83/63.63 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.63 , isPal(n__nil()) -> tt() 190.83/63.63 , U81(tt()) -> tt() 190.83/63.63 , isQid(n__a()) -> tt() 190.83/63.63 , isQid(n__e()) -> tt() 190.83/63.63 , isQid(n__i()) -> tt() 190.83/63.63 , isQid(n__o()) -> tt() 190.83/63.63 , isQid(n__u()) -> tt() 190.83/63.63 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.63 , isNePal(n____(I, __(P, I))) -> 190.83/63.63 U71(isQid(activate(I)), activate(P)) 190.83/63.63 , a() -> n__a() 190.83/63.63 , e() -> n__e() 190.83/63.63 , i() -> n__i() 190.83/63.63 , o() -> n__o() 190.83/63.63 , u() -> n__u() } 190.83/63.63 Obligation: 190.83/63.63 derivational complexity 190.83/63.63 Answer: 190.83/63.63 YES(O(1),O(n^2)) 190.83/63.63 190.83/63.63 The weightgap principle applies (using the following nonconstant 190.83/63.63 growth matrix-interpretation) 190.83/63.63 190.83/63.63 TcT has computed the following triangular matrix interpretation. 190.83/63.63 Note that the diagonal of the component-wise maxima of 190.83/63.63 interpretation-entries contains no more than 1 non-zero entries. 190.83/63.63 190.83/63.63 [__](x1, x2) = [1] x1 + [1] x2 + [2] 190.83/63.63 190.83/63.63 [nil] = [2] 190.83/63.63 190.83/63.63 [U11](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [tt] = [0] 190.83/63.63 190.83/63.63 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.63 190.83/63.63 [U22](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isList](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [activate](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U31](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U41](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.63 190.83/63.63 [U42](x1) = [1] x1 + [1] 190.83/63.63 190.83/63.63 [isNeList](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.63 190.83/63.63 [U52](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U61](x1) = [1] x1 + [1] 190.83/63.63 190.83/63.63 [U71](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.63 190.83/63.63 [U72](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isPal](x1) = [1] x1 + [1] 190.83/63.63 190.83/63.63 [U81](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [n__nil] = [0] 190.83/63.63 190.83/63.63 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.63 190.83/63.63 [isQid](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isNePal](x1) = [1] x1 + [1] 190.83/63.63 190.83/63.63 [n__a] = [2] 190.83/63.63 190.83/63.63 [n__e] = [2] 190.83/63.63 190.83/63.63 [n__i] = [2] 190.83/63.63 190.83/63.63 [n__o] = [2] 190.83/63.63 190.83/63.63 [n__u] = [2] 190.83/63.63 190.83/63.63 [a] = [2] 190.83/63.63 190.83/63.63 [e] = [2] 190.83/63.63 190.83/63.63 [i] = [2] 190.83/63.63 190.83/63.63 [o] = [2] 190.83/63.63 190.83/63.63 [u] = [2] 190.83/63.63 190.83/63.63 The order satisfies the following ordering constraints: 190.83/63.63 190.83/63.63 [__(X1, X2)] = [1] X1 + [1] X2 + [2] 190.83/63.63 > [1] X1 + [1] X2 + [1] 190.83/63.63 = [n____(X1, X2)] 190.83/63.63 190.83/63.63 [__(X, nil())] = [1] X + [4] 190.83/63.63 > [1] X + [0] 190.83/63.63 = [X] 190.83/63.63 190.83/63.63 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [4] 190.83/63.63 >= [1] X + [1] Y + [1] Z + [4] 190.83/63.63 = [__(X, __(Y, Z))] 190.83/63.63 190.83/63.63 [__(nil(), X)] = [1] X + [4] 190.83/63.63 > [1] X + [0] 190.83/63.63 = [X] 190.83/63.63 190.83/63.63 [nil()] = [2] 190.83/63.63 > [0] 190.83/63.63 = [n__nil()] 190.83/63.63 190.83/63.63 [U11(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U21(tt(), V2)] = [1] V2 + [0] 190.83/63.63 >= [1] V2 + [0] 190.83/63.63 = [U22(isList(activate(V2)))] 190.83/63.63 190.83/63.63 [U22(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isList(V)] = [1] V + [0] 190.83/63.63 >= [1] V + [0] 190.83/63.63 = [U11(isNeList(activate(V)))] 190.83/63.63 190.83/63.63 [isList(n__nil())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.63 > [1] V2 + [1] V1 + [0] 190.83/63.63 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.63 190.83/63.63 [activate(X)] = [1] X + [0] 190.83/63.63 >= [1] X + [0] 190.83/63.63 = [X] 190.83/63.63 190.83/63.63 [activate(n__nil())] = [0] 190.83/63.63 ? [2] 190.83/63.63 = [nil()] 190.83/63.63 190.83/63.63 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.83/63.63 ? [1] X1 + [1] X2 + [2] 190.83/63.63 = [__(X1, X2)] 190.83/63.63 190.83/63.63 [activate(n__a())] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [a()] 190.83/63.63 190.83/63.63 [activate(n__e())] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [e()] 190.83/63.63 190.83/63.63 [activate(n__i())] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [i()] 190.83/63.63 190.83/63.63 [activate(n__o())] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [o()] 190.83/63.63 190.83/63.63 [activate(n__u())] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [u()] 190.83/63.63 190.83/63.63 [U31(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U41(tt(), V2)] = [1] V2 + [1] 190.83/63.63 >= [1] V2 + [1] 190.83/63.63 = [U42(isNeList(activate(V2)))] 190.83/63.63 190.83/63.63 [U42(tt())] = [1] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isNeList(V)] = [1] V + [0] 190.83/63.63 >= [1] V + [0] 190.83/63.63 = [U31(isQid(activate(V)))] 190.83/63.63 190.83/63.63 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.63 >= [1] V2 + [1] V1 + [1] 190.83/63.63 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.63 190.83/63.63 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [1] 190.83/63.63 > [1] V2 + [1] V1 + [0] 190.83/63.63 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.63 190.83/63.63 [U51(tt(), V2)] = [1] V2 + [0] 190.83/63.63 >= [1] V2 + [0] 190.83/63.63 = [U52(isList(activate(V2)))] 190.83/63.63 190.83/63.63 [U52(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U61(tt())] = [1] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U71(tt(), P)] = [1] P + [1] 190.83/63.63 >= [1] P + [1] 190.83/63.63 = [U72(isPal(activate(P)))] 190.83/63.63 190.83/63.63 [U72(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isPal(V)] = [1] V + [1] 190.83/63.63 >= [1] V + [1] 190.83/63.63 = [U81(isNePal(activate(V)))] 190.83/63.63 190.83/63.63 [isPal(n__nil())] = [1] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U81(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__a())] = [2] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__e())] = [2] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__i())] = [2] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__o())] = [2] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__u())] = [2] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isNePal(V)] = [1] V + [1] 190.83/63.63 >= [1] V + [1] 190.83/63.63 = [U61(isQid(activate(V)))] 190.83/63.63 190.83/63.63 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [4] 190.83/63.63 > [1] P + [1] I + [1] 190.83/63.63 = [U71(isQid(activate(I)), activate(P))] 190.83/63.63 190.83/63.63 [a()] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [n__a()] 190.83/63.63 190.83/63.63 [e()] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [n__e()] 190.83/63.63 190.83/63.63 [i()] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [n__i()] 190.83/63.63 190.83/63.63 [o()] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [n__o()] 190.83/63.63 190.83/63.63 [u()] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [n__u()] 190.83/63.63 190.83/63.63 190.83/63.63 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 190.83/63.63 190.83/63.63 We are left with following problem, upon which TcT provides the 190.83/63.63 certificate YES(O(1),O(n^2)). 190.83/63.63 190.83/63.63 Strict Trs: 190.83/63.63 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.63 , U22(tt()) -> tt() 190.83/63.63 , activate(X) -> X 190.83/63.63 , activate(n__nil()) -> nil() 190.83/63.63 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.63 , activate(n__a()) -> a() 190.83/63.63 , activate(n__e()) -> e() 190.83/63.63 , activate(n__i()) -> i() 190.83/63.63 , activate(n__o()) -> o() 190.83/63.63 , activate(n__u()) -> u() 190.83/63.63 , U31(tt()) -> tt() } 190.83/63.63 Weak Trs: 190.83/63.63 { __(X1, X2) -> n____(X1, X2) 190.83/63.63 , __(X, nil()) -> X 190.83/63.63 , __(nil(), X) -> X 190.83/63.63 , nil() -> n__nil() 190.83/63.63 , U11(tt()) -> tt() 190.83/63.63 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.63 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.63 , isList(n__nil()) -> tt() 190.83/63.63 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.63 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.63 , U42(tt()) -> tt() 190.83/63.63 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.63 , isNeList(n____(V1, V2)) -> 190.83/63.63 U41(isList(activate(V1)), activate(V2)) 190.83/63.63 , isNeList(n____(V1, V2)) -> 190.83/63.63 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.63 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.63 , U52(tt()) -> tt() 190.83/63.63 , U61(tt()) -> tt() 190.83/63.63 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.63 , U72(tt()) -> tt() 190.83/63.63 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.63 , isPal(n__nil()) -> tt() 190.83/63.63 , U81(tt()) -> tt() 190.83/63.63 , isQid(n__a()) -> tt() 190.83/63.63 , isQid(n__e()) -> tt() 190.83/63.63 , isQid(n__i()) -> tt() 190.83/63.63 , isQid(n__o()) -> tt() 190.83/63.63 , isQid(n__u()) -> tt() 190.83/63.63 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.63 , isNePal(n____(I, __(P, I))) -> 190.83/63.63 U71(isQid(activate(I)), activate(P)) 190.83/63.63 , a() -> n__a() 190.83/63.63 , e() -> n__e() 190.83/63.63 , i() -> n__i() 190.83/63.63 , o() -> n__o() 190.83/63.63 , u() -> n__u() } 190.83/63.63 Obligation: 190.83/63.63 derivational complexity 190.83/63.63 Answer: 190.83/63.63 YES(O(1),O(n^2)) 190.83/63.63 190.83/63.63 We use the processor 'matrix interpretation of dimension 1' to 190.83/63.63 orient following rules strictly. 190.83/63.63 190.83/63.63 Trs: { U31(tt()) -> tt() } 190.83/63.63 190.83/63.63 The induced complexity on above rules (modulo remaining rules) is 190.83/63.63 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.83/63.63 component(s). 190.83/63.63 190.83/63.63 Sub-proof: 190.83/63.63 ---------- 190.83/63.63 TcT has computed the following triangular matrix interpretation. 190.83/63.63 190.83/63.63 [__](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.63 190.83/63.63 [nil] = [0] 190.83/63.63 190.83/63.63 [U11](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [tt] = [0] 190.83/63.63 190.83/63.63 [U21](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.63 190.83/63.63 [U22](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isList](x1) = [1] x1 + [1] 190.83/63.63 190.83/63.63 [activate](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U31](x1) = [1] x1 + [1] 190.83/63.63 190.83/63.63 [U41](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.63 190.83/63.63 [U42](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isNeList](x1) = [1] x1 + [1] 190.83/63.63 190.83/63.63 [U51](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.63 190.83/63.63 [U52](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U61](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.63 190.83/63.63 [U72](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isPal](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U81](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [n__nil] = [0] 190.83/63.63 190.83/63.63 [n____](x1, x2) = [1] x1 + [1] x2 + [1] 190.83/63.63 190.83/63.63 [isQid](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isNePal](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [n__a] = [0] 190.83/63.63 190.83/63.63 [n__e] = [0] 190.83/63.63 190.83/63.63 [n__i] = [0] 190.83/63.63 190.83/63.63 [n__o] = [1] 190.83/63.63 190.83/63.63 [n__u] = [0] 190.83/63.63 190.83/63.63 [a] = [0] 190.83/63.63 190.83/63.63 [e] = [0] 190.83/63.63 190.83/63.63 [i] = [0] 190.83/63.63 190.83/63.63 [o] = [1] 190.83/63.63 190.83/63.63 [u] = [0] 190.83/63.63 190.83/63.63 The order satisfies the following ordering constraints: 190.83/63.63 190.83/63.63 [__(X1, X2)] = [1] X1 + [1] X2 + [1] 190.83/63.63 >= [1] X1 + [1] X2 + [1] 190.83/63.63 = [n____(X1, X2)] 190.83/63.63 190.83/63.63 [__(X, nil())] = [1] X + [1] 190.83/63.63 > [1] X + [0] 190.83/63.63 = [X] 190.83/63.63 190.83/63.63 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [2] 190.83/63.63 >= [1] X + [1] Y + [1] Z + [2] 190.83/63.63 = [__(X, __(Y, Z))] 190.83/63.63 190.83/63.63 [__(nil(), X)] = [1] X + [1] 190.83/63.63 > [1] X + [0] 190.83/63.63 = [X] 190.83/63.63 190.83/63.63 [nil()] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [n__nil()] 190.83/63.63 190.83/63.63 [U11(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U21(tt(), V2)] = [1] V2 + [1] 190.83/63.63 >= [1] V2 + [1] 190.83/63.63 = [U22(isList(activate(V2)))] 190.83/63.63 190.83/63.63 [U22(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isList(V)] = [1] V + [1] 190.83/63.63 >= [1] V + [1] 190.83/63.63 = [U11(isNeList(activate(V)))] 190.83/63.63 190.83/63.63 [isList(n__nil())] = [1] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [2] 190.83/63.63 >= [1] V2 + [1] V1 + [2] 190.83/63.63 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.63 190.83/63.63 [activate(X)] = [1] X + [0] 190.83/63.63 >= [1] X + [0] 190.83/63.63 = [X] 190.83/63.63 190.83/63.63 [activate(n__nil())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [nil()] 190.83/63.63 190.83/63.63 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [1] 190.83/63.63 >= [1] X1 + [1] X2 + [1] 190.83/63.63 = [__(X1, X2)] 190.83/63.63 190.83/63.63 [activate(n__a())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [a()] 190.83/63.63 190.83/63.63 [activate(n__e())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [e()] 190.83/63.63 190.83/63.63 [activate(n__i())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [i()] 190.83/63.63 190.83/63.63 [activate(n__o())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [o()] 190.83/63.63 190.83/63.63 [activate(n__u())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [u()] 190.83/63.63 190.83/63.63 [U31(tt())] = [1] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U41(tt(), V2)] = [1] V2 + [1] 190.83/63.63 >= [1] V2 + [1] 190.83/63.63 = [U42(isNeList(activate(V2)))] 190.83/63.63 190.83/63.63 [U42(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isNeList(V)] = [1] V + [1] 190.83/63.63 >= [1] V + [1] 190.83/63.63 = [U31(isQid(activate(V)))] 190.83/63.63 190.83/63.63 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [2] 190.83/63.63 >= [1] V2 + [1] V1 + [2] 190.83/63.63 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.63 190.83/63.63 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [2] 190.83/63.63 >= [1] V2 + [1] V1 + [2] 190.83/63.63 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.63 190.83/63.63 [U51(tt(), V2)] = [1] V2 + [1] 190.83/63.63 >= [1] V2 + [1] 190.83/63.63 = [U52(isList(activate(V2)))] 190.83/63.63 190.83/63.63 [U52(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U61(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U71(tt(), P)] = [1] P + [0] 190.83/63.63 >= [1] P + [0] 190.83/63.63 = [U72(isPal(activate(P)))] 190.83/63.63 190.83/63.63 [U72(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isPal(V)] = [1] V + [0] 190.83/63.63 >= [1] V + [0] 190.83/63.63 = [U81(isNePal(activate(V)))] 190.83/63.63 190.83/63.63 [isPal(n__nil())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U81(tt())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__a())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__e())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__i())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__o())] = [1] 190.83/63.63 > [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__u())] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isNePal(V)] = [1] V + [0] 190.83/63.63 >= [1] V + [0] 190.83/63.63 = [U61(isQid(activate(V)))] 190.83/63.63 190.83/63.63 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [2] 190.83/63.63 > [1] P + [1] I + [0] 190.83/63.63 = [U71(isQid(activate(I)), activate(P))] 190.83/63.63 190.83/63.63 [a()] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [n__a()] 190.83/63.63 190.83/63.63 [e()] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [n__e()] 190.83/63.63 190.83/63.63 [i()] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [n__i()] 190.83/63.63 190.83/63.63 [o()] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [n__o()] 190.83/63.63 190.83/63.63 [u()] = [0] 190.83/63.63 >= [0] 190.83/63.63 = [n__u()] 190.83/63.63 190.83/63.63 190.83/63.63 We return to the main proof. 190.83/63.63 190.83/63.63 We are left with following problem, upon which TcT provides the 190.83/63.63 certificate YES(O(1),O(n^2)). 190.83/63.63 190.83/63.63 Strict Trs: 190.83/63.63 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.63 , U22(tt()) -> tt() 190.83/63.63 , activate(X) -> X 190.83/63.63 , activate(n__nil()) -> nil() 190.83/63.63 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.63 , activate(n__a()) -> a() 190.83/63.63 , activate(n__e()) -> e() 190.83/63.63 , activate(n__i()) -> i() 190.83/63.63 , activate(n__o()) -> o() 190.83/63.63 , activate(n__u()) -> u() } 190.83/63.63 Weak Trs: 190.83/63.63 { __(X1, X2) -> n____(X1, X2) 190.83/63.63 , __(X, nil()) -> X 190.83/63.63 , __(nil(), X) -> X 190.83/63.63 , nil() -> n__nil() 190.83/63.63 , U11(tt()) -> tt() 190.83/63.63 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.63 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.63 , isList(n__nil()) -> tt() 190.83/63.63 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.63 , U31(tt()) -> tt() 190.83/63.63 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.63 , U42(tt()) -> tt() 190.83/63.63 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.63 , isNeList(n____(V1, V2)) -> 190.83/63.63 U41(isList(activate(V1)), activate(V2)) 190.83/63.63 , isNeList(n____(V1, V2)) -> 190.83/63.63 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.63 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.63 , U52(tt()) -> tt() 190.83/63.63 , U61(tt()) -> tt() 190.83/63.63 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.63 , U72(tt()) -> tt() 190.83/63.63 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.63 , isPal(n__nil()) -> tt() 190.83/63.63 , U81(tt()) -> tt() 190.83/63.63 , isQid(n__a()) -> tt() 190.83/63.63 , isQid(n__e()) -> tt() 190.83/63.63 , isQid(n__i()) -> tt() 190.83/63.63 , isQid(n__o()) -> tt() 190.83/63.63 , isQid(n__u()) -> tt() 190.83/63.63 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.63 , isNePal(n____(I, __(P, I))) -> 190.83/63.63 U71(isQid(activate(I)), activate(P)) 190.83/63.63 , a() -> n__a() 190.83/63.63 , e() -> n__e() 190.83/63.63 , i() -> n__i() 190.83/63.63 , o() -> n__o() 190.83/63.63 , u() -> n__u() } 190.83/63.63 Obligation: 190.83/63.63 derivational complexity 190.83/63.63 Answer: 190.83/63.63 YES(O(1),O(n^2)) 190.83/63.63 190.83/63.63 We use the processor 'matrix interpretation of dimension 1' to 190.83/63.63 orient following rules strictly. 190.83/63.63 190.83/63.63 Trs: { U22(tt()) -> tt() } 190.83/63.63 190.83/63.63 The induced complexity on above rules (modulo remaining rules) is 190.83/63.63 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.83/63.63 component(s). 190.83/63.63 190.83/63.63 Sub-proof: 190.83/63.63 ---------- 190.83/63.63 TcT has computed the following triangular matrix interpretation. 190.83/63.63 190.83/63.63 [__](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.63 190.83/63.63 [nil] = [1] 190.83/63.63 190.83/63.63 [U11](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [tt] = [1] 190.83/63.63 190.83/63.63 [U21](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.63 190.83/63.63 [U22](x1) = [1] x1 + [1] 190.83/63.63 190.83/63.63 [isList](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [activate](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U31](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U41](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.63 190.83/63.63 [U42](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isNeList](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U51](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.63 190.83/63.63 [U52](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U61](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U71](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.63 190.83/63.63 [U72](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isPal](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [U81](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [n__nil] = [1] 190.83/63.63 190.83/63.63 [n____](x1, x2) = [1] x1 + [1] x2 + [0] 190.83/63.63 190.83/63.63 [isQid](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [isNePal](x1) = [1] x1 + [0] 190.83/63.63 190.83/63.63 [n__a] = [2] 190.83/63.63 190.83/63.63 [n__e] = [2] 190.83/63.63 190.83/63.63 [n__i] = [1] 190.83/63.63 190.83/63.63 [n__o] = [1] 190.83/63.63 190.83/63.63 [n__u] = [1] 190.83/63.63 190.83/63.63 [a] = [2] 190.83/63.63 190.83/63.63 [e] = [2] 190.83/63.63 190.83/63.63 [i] = [1] 190.83/63.63 190.83/63.63 [o] = [1] 190.83/63.63 190.83/63.63 [u] = [1] 190.83/63.63 190.83/63.63 The order satisfies the following ordering constraints: 190.83/63.63 190.83/63.63 [__(X1, X2)] = [1] X1 + [1] X2 + [0] 190.83/63.63 >= [1] X1 + [1] X2 + [0] 190.83/63.63 = [n____(X1, X2)] 190.83/63.63 190.83/63.63 [__(X, nil())] = [1] X + [1] 190.83/63.63 > [1] X + [0] 190.83/63.63 = [X] 190.83/63.63 190.83/63.63 [__(__(X, Y), Z)] = [1] X + [1] Y + [1] Z + [0] 190.83/63.63 >= [1] X + [1] Y + [1] Z + [0] 190.83/63.63 = [__(X, __(Y, Z))] 190.83/63.63 190.83/63.63 [__(nil(), X)] = [1] X + [1] 190.83/63.63 > [1] X + [0] 190.83/63.63 = [X] 190.83/63.63 190.83/63.63 [nil()] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [n__nil()] 190.83/63.63 190.83/63.63 [U11(tt())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U21(tt(), V2)] = [1] V2 + [1] 190.83/63.63 >= [1] V2 + [1] 190.83/63.63 = [U22(isList(activate(V2)))] 190.83/63.63 190.83/63.63 [U22(tt())] = [2] 190.83/63.63 > [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isList(V)] = [1] V + [0] 190.83/63.63 >= [1] V + [0] 190.83/63.63 = [U11(isNeList(activate(V)))] 190.83/63.63 190.83/63.63 [isList(n__nil())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.63 >= [1] V2 + [1] V1 + [0] 190.83/63.63 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.63 190.83/63.63 [activate(X)] = [1] X + [0] 190.83/63.63 >= [1] X + [0] 190.83/63.63 = [X] 190.83/63.63 190.83/63.63 [activate(n__nil())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [nil()] 190.83/63.63 190.83/63.63 [activate(n____(X1, X2))] = [1] X1 + [1] X2 + [0] 190.83/63.63 >= [1] X1 + [1] X2 + [0] 190.83/63.63 = [__(X1, X2)] 190.83/63.63 190.83/63.63 [activate(n__a())] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [a()] 190.83/63.63 190.83/63.63 [activate(n__e())] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [e()] 190.83/63.63 190.83/63.63 [activate(n__i())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [i()] 190.83/63.63 190.83/63.63 [activate(n__o())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [o()] 190.83/63.63 190.83/63.63 [activate(n__u())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [u()] 190.83/63.63 190.83/63.63 [U31(tt())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U41(tt(), V2)] = [1] V2 + [1] 190.83/63.63 > [1] V2 + [0] 190.83/63.63 = [U42(isNeList(activate(V2)))] 190.83/63.63 190.83/63.63 [U42(tt())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isNeList(V)] = [1] V + [0] 190.83/63.63 >= [1] V + [0] 190.83/63.63 = [U31(isQid(activate(V)))] 190.83/63.63 190.83/63.63 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.63 >= [1] V2 + [1] V1 + [0] 190.83/63.63 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.63 190.83/63.63 [isNeList(n____(V1, V2))] = [1] V2 + [1] V1 + [0] 190.83/63.63 >= [1] V2 + [1] V1 + [0] 190.83/63.63 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.63 190.83/63.63 [U51(tt(), V2)] = [1] V2 + [1] 190.83/63.63 > [1] V2 + [0] 190.83/63.63 = [U52(isList(activate(V2)))] 190.83/63.63 190.83/63.63 [U52(tt())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U61(tt())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U71(tt(), P)] = [1] P + [1] 190.83/63.63 > [1] P + [0] 190.83/63.63 = [U72(isPal(activate(P)))] 190.83/63.63 190.83/63.63 [U72(tt())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isPal(V)] = [1] V + [0] 190.83/63.63 >= [1] V + [0] 190.83/63.63 = [U81(isNePal(activate(V)))] 190.83/63.63 190.83/63.63 [isPal(n__nil())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [U81(tt())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__a())] = [2] 190.83/63.63 > [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__e())] = [2] 190.83/63.63 > [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__i())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__o())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isQid(n__u())] = [1] 190.83/63.63 >= [1] 190.83/63.63 = [tt()] 190.83/63.63 190.83/63.63 [isNePal(V)] = [1] V + [0] 190.83/63.63 >= [1] V + [0] 190.83/63.63 = [U61(isQid(activate(V)))] 190.83/63.63 190.83/63.63 [isNePal(n____(I, __(P, I)))] = [1] P + [2] I + [0] 190.83/63.63 >= [1] P + [1] I + [0] 190.83/63.63 = [U71(isQid(activate(I)), activate(P))] 190.83/63.63 190.83/63.63 [a()] = [2] 190.83/63.63 >= [2] 190.83/63.63 = [n__a()] 190.83/63.63 190.83/63.64 [e()] = [2] 190.83/63.64 >= [2] 190.83/63.64 = [n__e()] 190.83/63.64 190.83/63.64 [i()] = [1] 190.83/63.64 >= [1] 190.83/63.64 = [n__i()] 190.83/63.64 190.83/63.64 [o()] = [1] 190.83/63.64 >= [1] 190.83/63.64 = [n__o()] 190.83/63.64 190.83/63.64 [u()] = [1] 190.83/63.64 >= [1] 190.83/63.64 = [n__u()] 190.83/63.64 190.83/63.64 190.83/63.64 We return to the main proof. 190.83/63.64 190.83/63.64 We are left with following problem, upon which TcT provides the 190.83/63.64 certificate YES(O(1),O(n^2)). 190.83/63.64 190.83/63.64 Strict Trs: 190.83/63.64 { __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.64 , activate(X) -> X 190.83/63.64 , activate(n__nil()) -> nil() 190.83/63.64 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.64 , activate(n__a()) -> a() 190.83/63.64 , activate(n__e()) -> e() 190.83/63.64 , activate(n__i()) -> i() 190.83/63.64 , activate(n__o()) -> o() 190.83/63.64 , activate(n__u()) -> u() } 190.83/63.64 Weak Trs: 190.83/63.64 { __(X1, X2) -> n____(X1, X2) 190.83/63.64 , __(X, nil()) -> X 190.83/63.64 , __(nil(), X) -> X 190.83/63.64 , nil() -> n__nil() 190.83/63.64 , U11(tt()) -> tt() 190.83/63.64 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.64 , U22(tt()) -> tt() 190.83/63.64 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.64 , isList(n__nil()) -> tt() 190.83/63.64 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.64 , U31(tt()) -> tt() 190.83/63.64 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.64 , U42(tt()) -> tt() 190.83/63.64 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.64 , isNeList(n____(V1, V2)) -> 190.83/63.64 U41(isList(activate(V1)), activate(V2)) 190.83/63.64 , isNeList(n____(V1, V2)) -> 190.83/63.64 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.64 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.64 , U52(tt()) -> tt() 190.83/63.64 , U61(tt()) -> tt() 190.83/63.64 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.64 , U72(tt()) -> tt() 190.83/63.64 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.64 , isPal(n__nil()) -> tt() 190.83/63.64 , U81(tt()) -> tt() 190.83/63.64 , isQid(n__a()) -> tt() 190.83/63.64 , isQid(n__e()) -> tt() 190.83/63.64 , isQid(n__i()) -> tt() 190.83/63.64 , isQid(n__o()) -> tt() 190.83/63.64 , isQid(n__u()) -> tt() 190.83/63.64 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.64 , isNePal(n____(I, __(P, I))) -> 190.83/63.64 U71(isQid(activate(I)), activate(P)) 190.83/63.64 , a() -> n__a() 190.83/63.64 , e() -> n__e() 190.83/63.64 , i() -> n__i() 190.83/63.64 , o() -> n__o() 190.83/63.64 , u() -> n__u() } 190.83/63.64 Obligation: 190.83/63.64 derivational complexity 190.83/63.64 Answer: 190.83/63.64 YES(O(1),O(n^2)) 190.83/63.64 190.83/63.64 We use the processor 'matrix interpretation of dimension 2' to 190.83/63.64 orient following rules strictly. 190.83/63.64 190.83/63.64 Trs: { __(__(X, Y), Z) -> __(X, __(Y, Z)) } 190.83/63.64 190.83/63.64 The induced complexity on above rules (modulo remaining rules) is 190.83/63.64 YES(?,O(n^2)) . These rules are moved into the corresponding weak 190.83/63.64 component(s). 190.83/63.64 190.83/63.64 Sub-proof: 190.83/63.64 ---------- 190.83/63.64 TcT has computed the following triangular matrix interpretation. 190.83/63.64 190.83/63.64 [__](x1, x2) = [1 1] x1 + [1 0] x2 + [0] 190.83/63.64 [0 1] [0 1] [1] 190.83/63.64 190.83/63.64 [nil] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [U11](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [tt] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [U21](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 190.83/63.64 [U22](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [isList](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [activate](x1) = [1 0] x1 + [0] 190.83/63.64 [0 1] [0] 190.83/63.64 190.83/63.64 [U31](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U41](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 190.83/63.64 [U42](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [isNeList](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U51](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 190.83/63.64 [U52](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U61](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U71](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 190.83/63.64 [U72](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [isPal](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U81](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [n__nil] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n____](x1, x2) = [1 1] x1 + [1 0] x2 + [0] 190.83/63.64 [0 1] [0 1] [1] 190.83/63.64 190.83/63.64 [isQid](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [isNePal](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [n__a] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n__e] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n__i] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n__o] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n__u] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [a] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [e] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [i] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [o] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [u] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 The order satisfies the following ordering constraints: 190.83/63.64 190.83/63.64 [__(X1, X2)] = [1 1] X1 + [1 0] X2 + [0] 190.83/63.64 [0 1] [0 1] [1] 190.83/63.64 >= [1 1] X1 + [1 0] X2 + [0] 190.83/63.64 [0 1] [0 1] [1] 190.83/63.64 = [n____(X1, X2)] 190.83/63.64 190.83/63.64 [__(X, nil())] = [1 1] X + [0] 190.83/63.64 [0 1] [1] 190.83/63.64 >= [1 0] X + [0] 190.83/63.64 [0 1] [0] 190.83/63.64 = [X] 190.83/63.64 190.83/63.64 [__(__(X, Y), Z)] = [1 2] X + [1 1] Y + [1 0] Z + [1] 190.83/63.64 [0 1] [0 1] [0 1] [2] 190.83/63.64 > [1 1] X + [1 1] Y + [1 0] Z + [0] 190.83/63.64 [0 1] [0 1] [0 1] [2] 190.83/63.64 = [__(X, __(Y, Z))] 190.83/63.64 190.83/63.64 [__(nil(), X)] = [1 0] X + [0] 190.83/63.64 [0 1] [1] 190.83/63.64 >= [1 0] X + [0] 190.83/63.64 [0 1] [0] 190.83/63.64 = [X] 190.83/63.64 190.83/63.64 [nil()] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [n__nil()] 190.83/63.64 190.83/63.64 [U11(tt())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U21(tt(), V2)] = [1 0] V2 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V2 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U22(isList(activate(V2)))] 190.83/63.64 190.83/63.64 [U22(tt())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isList(V)] = [1 0] V + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U11(isNeList(activate(V)))] 190.83/63.64 190.83/63.64 [isList(n__nil())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isList(n____(V1, V2))] = [1 0] V2 + [1 1] V1 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 >= [1 0] V2 + [1 0] V1 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.64 190.83/63.64 [activate(X)] = [1 0] X + [0] 190.83/63.64 [0 1] [0] 190.83/63.64 >= [1 0] X + [0] 190.83/63.64 [0 1] [0] 190.83/63.64 = [X] 190.83/63.64 190.83/63.64 [activate(n__nil())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [nil()] 190.83/63.64 190.83/63.64 [activate(n____(X1, X2))] = [1 1] X1 + [1 0] X2 + [0] 190.83/63.64 [0 1] [0 1] [1] 190.83/63.64 >= [1 1] X1 + [1 0] X2 + [0] 190.83/63.64 [0 1] [0 1] [1] 190.83/63.64 = [__(X1, X2)] 190.83/63.64 190.83/63.64 [activate(n__a())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [a()] 190.83/63.64 190.83/63.64 [activate(n__e())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [e()] 190.83/63.64 190.83/63.64 [activate(n__i())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [i()] 190.83/63.64 190.83/63.64 [activate(n__o())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [o()] 190.83/63.64 190.83/63.64 [activate(n__u())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [u()] 190.83/63.64 190.83/63.64 [U31(tt())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U41(tt(), V2)] = [1 0] V2 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V2 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U42(isNeList(activate(V2)))] 190.83/63.64 190.83/63.64 [U42(tt())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isNeList(V)] = [1 0] V + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U31(isQid(activate(V)))] 190.83/63.64 190.83/63.64 [isNeList(n____(V1, V2))] = [1 0] V2 + [1 1] V1 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 >= [1 0] V2 + [1 0] V1 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.64 190.83/63.64 [isNeList(n____(V1, V2))] = [1 0] V2 + [1 1] V1 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 >= [1 0] V2 + [1 0] V1 + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.64 190.83/63.64 [U51(tt(), V2)] = [1 0] V2 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V2 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U52(isList(activate(V2)))] 190.83/63.64 190.83/63.64 [U52(tt())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U61(tt())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U71(tt(), P)] = [1 0] P + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] P + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U72(isPal(activate(P)))] 190.83/63.64 190.83/63.64 [U72(tt())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isPal(V)] = [1 0] V + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U81(isNePal(activate(V)))] 190.83/63.64 190.83/63.64 [isPal(n__nil())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U81(tt())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__a())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__e())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__i())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__o())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__u())] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isNePal(V)] = [1 0] V + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U61(isQid(activate(V)))] 190.83/63.64 190.83/63.64 [isNePal(n____(I, __(P, I)))] = [1 1] P + [2 1] I + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 >= [1 0] P + [1 0] I + [0] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 = [U71(isQid(activate(I)), activate(P))] 190.83/63.64 190.83/63.64 [a()] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [n__a()] 190.83/63.64 190.83/63.64 [e()] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [n__e()] 190.83/63.64 190.83/63.64 [i()] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [n__i()] 190.83/63.64 190.83/63.64 [o()] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [n__o()] 190.83/63.64 190.83/63.64 [u()] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [n__u()] 190.83/63.64 190.83/63.64 190.83/63.64 We return to the main proof. 190.83/63.64 190.83/63.64 We are left with following problem, upon which TcT provides the 190.83/63.64 certificate YES(O(1),O(n^1)). 190.83/63.64 190.83/63.64 Strict Trs: 190.83/63.64 { activate(X) -> X 190.83/63.64 , activate(n__nil()) -> nil() 190.83/63.64 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.64 , activate(n__a()) -> a() 190.83/63.64 , activate(n__e()) -> e() 190.83/63.64 , activate(n__i()) -> i() 190.83/63.64 , activate(n__o()) -> o() 190.83/63.64 , activate(n__u()) -> u() } 190.83/63.64 Weak Trs: 190.83/63.64 { __(X1, X2) -> n____(X1, X2) 190.83/63.64 , __(X, nil()) -> X 190.83/63.64 , __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.64 , __(nil(), X) -> X 190.83/63.64 , nil() -> n__nil() 190.83/63.64 , U11(tt()) -> tt() 190.83/63.64 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.64 , U22(tt()) -> tt() 190.83/63.64 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.64 , isList(n__nil()) -> tt() 190.83/63.64 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.64 , U31(tt()) -> tt() 190.83/63.64 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.64 , U42(tt()) -> tt() 190.83/63.64 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.64 , isNeList(n____(V1, V2)) -> 190.83/63.64 U41(isList(activate(V1)), activate(V2)) 190.83/63.64 , isNeList(n____(V1, V2)) -> 190.83/63.64 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.64 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.64 , U52(tt()) -> tt() 190.83/63.64 , U61(tt()) -> tt() 190.83/63.64 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.64 , U72(tt()) -> tt() 190.83/63.64 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.64 , isPal(n__nil()) -> tt() 190.83/63.64 , U81(tt()) -> tt() 190.83/63.64 , isQid(n__a()) -> tt() 190.83/63.64 , isQid(n__e()) -> tt() 190.83/63.64 , isQid(n__i()) -> tt() 190.83/63.64 , isQid(n__o()) -> tt() 190.83/63.64 , isQid(n__u()) -> tt() 190.83/63.64 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.64 , isNePal(n____(I, __(P, I))) -> 190.83/63.64 U71(isQid(activate(I)), activate(P)) 190.83/63.64 , a() -> n__a() 190.83/63.64 , e() -> n__e() 190.83/63.64 , i() -> n__i() 190.83/63.64 , o() -> n__o() 190.83/63.64 , u() -> n__u() } 190.83/63.64 Obligation: 190.83/63.64 derivational complexity 190.83/63.64 Answer: 190.83/63.64 YES(O(1),O(n^1)) 190.83/63.64 190.83/63.64 We use the processor 'matrix interpretation of dimension 2' to 190.83/63.64 orient following rules strictly. 190.83/63.64 190.83/63.64 Trs: 190.83/63.64 { activate(X) -> X 190.83/63.64 , activate(n__nil()) -> nil() 190.83/63.64 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.64 , activate(n__a()) -> a() 190.83/63.64 , activate(n__e()) -> e() 190.83/63.64 , activate(n__i()) -> i() 190.83/63.64 , activate(n__o()) -> o() 190.83/63.64 , activate(n__u()) -> u() } 190.83/63.64 190.83/63.64 The induced complexity on above rules (modulo remaining rules) is 190.83/63.64 YES(?,O(n^1)) . These rules are moved into the corresponding weak 190.83/63.64 component(s). 190.83/63.64 190.83/63.64 Sub-proof: 190.83/63.64 ---------- 190.83/63.64 TcT has computed the following triangular matrix interpretation. 190.83/63.64 190.83/63.64 [__](x1, x2) = [1 0] x1 + [1 0] x2 + [2] 190.83/63.64 [0 1] [0 1] [2] 190.83/63.64 190.83/63.64 [nil] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [U11](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [tt] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [U21](x1, x2) = [1 0] x1 + [1 1] x2 + [2] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 190.83/63.64 [U22](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [isList](x1) = [1 1] x1 + [2] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [activate](x1) = [1 0] x1 + [1] 190.83/63.64 [0 1] [0] 190.83/63.64 190.83/63.64 [U31](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U41](x1, x2) = [1 0] x1 + [1 1] x2 + [1] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 190.83/63.64 [U42](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [isNeList](x1) = [1 1] x1 + [1] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U51](x1, x2) = [1 0] x1 + [1 1] x2 + [1] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 190.83/63.64 [U52](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U61](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U71](x1, x2) = [1 0] x1 + [1 0] x2 + [1] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 190.83/63.64 [U72](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [isPal](x1) = [1 0] x1 + [2] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [U81](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [n__nil] = [0] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n____](x1, x2) = [1 0] x1 + [1 0] x2 + [2] 190.83/63.64 [0 1] [0 1] [2] 190.83/63.64 190.83/63.64 [isQid](x1) = [1 0] x1 + [0] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [isNePal](x1) = [1 0] x1 + [1] 190.83/63.64 [0 0] [0] 190.83/63.64 190.83/63.64 [n__a] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n__e] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n__i] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n__o] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [n__u] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [a] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [e] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [i] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [o] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 [u] = [2] 190.83/63.64 [0] 190.83/63.64 190.83/63.64 The order satisfies the following ordering constraints: 190.83/63.64 190.83/63.64 [__(X1, X2)] = [1 0] X1 + [1 0] X2 + [2] 190.83/63.64 [0 1] [0 1] [2] 190.83/63.64 >= [1 0] X1 + [1 0] X2 + [2] 190.83/63.64 [0 1] [0 1] [2] 190.83/63.64 = [n____(X1, X2)] 190.83/63.64 190.83/63.64 [__(X, nil())] = [1 0] X + [2] 190.83/63.64 [0 1] [2] 190.83/63.64 > [1 0] X + [0] 190.83/63.64 [0 1] [0] 190.83/63.64 = [X] 190.83/63.64 190.83/63.64 [__(__(X, Y), Z)] = [1 0] X + [1 0] Y + [1 0] Z + [4] 190.83/63.64 [0 1] [0 1] [0 1] [4] 190.83/63.64 >= [1 0] X + [1 0] Y + [1 0] Z + [4] 190.83/63.64 [0 1] [0 1] [0 1] [4] 190.83/63.64 = [__(X, __(Y, Z))] 190.83/63.64 190.83/63.64 [__(nil(), X)] = [1 0] X + [2] 190.83/63.64 [0 1] [2] 190.83/63.64 > [1 0] X + [0] 190.83/63.64 [0 1] [0] 190.83/63.64 = [X] 190.83/63.64 190.83/63.64 [nil()] = [0] 190.83/63.64 [0] 190.83/63.64 >= [0] 190.83/63.64 [0] 190.83/63.64 = [n__nil()] 190.83/63.64 190.83/63.64 [U11(tt())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U21(tt(), V2)] = [1 1] V2 + [4] 190.83/63.64 [0 0] [0] 190.83/63.64 > [1 1] V2 + [3] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U22(isList(activate(V2)))] 190.83/63.64 190.83/63.64 [U22(tt())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isList(V)] = [1 1] V + [2] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 1] V + [2] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U11(isNeList(activate(V)))] 190.83/63.64 190.83/63.64 [isList(n__nil())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isList(n____(V1, V2))] = [1 1] V2 + [1 1] V1 + [6] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 >= [1 1] V2 + [1 1] V1 + [6] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 = [U21(isList(activate(V1)), activate(V2))] 190.83/63.64 190.83/63.64 [activate(X)] = [1 0] X + [1] 190.83/63.64 [0 1] [0] 190.83/63.64 > [1 0] X + [0] 190.83/63.64 [0 1] [0] 190.83/63.64 = [X] 190.83/63.64 190.83/63.64 [activate(n__nil())] = [1] 190.83/63.64 [0] 190.83/63.64 > [0] 190.83/63.64 [0] 190.83/63.64 = [nil()] 190.83/63.64 190.83/63.64 [activate(n____(X1, X2))] = [1 0] X1 + [1 0] X2 + [3] 190.83/63.64 [0 1] [0 1] [2] 190.83/63.64 > [1 0] X1 + [1 0] X2 + [2] 190.83/63.64 [0 1] [0 1] [2] 190.83/63.64 = [__(X1, X2)] 190.83/63.64 190.83/63.64 [activate(n__a())] = [3] 190.83/63.64 [0] 190.83/63.64 > [2] 190.83/63.64 [0] 190.83/63.64 = [a()] 190.83/63.64 190.83/63.64 [activate(n__e())] = [3] 190.83/63.64 [0] 190.83/63.64 > [2] 190.83/63.64 [0] 190.83/63.64 = [e()] 190.83/63.64 190.83/63.64 [activate(n__i())] = [3] 190.83/63.64 [0] 190.83/63.64 > [2] 190.83/63.64 [0] 190.83/63.64 = [i()] 190.83/63.64 190.83/63.64 [activate(n__o())] = [3] 190.83/63.64 [0] 190.83/63.64 > [2] 190.83/63.64 [0] 190.83/63.64 = [o()] 190.83/63.64 190.83/63.64 [activate(n__u())] = [3] 190.83/63.64 [0] 190.83/63.64 > [2] 190.83/63.64 [0] 190.83/63.64 = [u()] 190.83/63.64 190.83/63.64 [U31(tt())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U41(tt(), V2)] = [1 1] V2 + [3] 190.83/63.64 [0 0] [0] 190.83/63.64 > [1 1] V2 + [2] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U42(isNeList(activate(V2)))] 190.83/63.64 190.83/63.64 [U42(tt())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isNeList(V)] = [1 1] V + [1] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V + [1] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U31(isQid(activate(V)))] 190.83/63.64 190.83/63.64 [isNeList(n____(V1, V2))] = [1 1] V2 + [1 1] V1 + [5] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 >= [1 1] V2 + [1 1] V1 + [5] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 = [U41(isList(activate(V1)), activate(V2))] 190.83/63.64 190.83/63.64 [isNeList(n____(V1, V2))] = [1 1] V2 + [1 1] V1 + [5] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 > [1 1] V2 + [1 1] V1 + [4] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 = [U51(isNeList(activate(V1)), activate(V2))] 190.83/63.64 190.83/63.64 [U51(tt(), V2)] = [1 1] V2 + [3] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 1] V2 + [3] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U52(isList(activate(V2)))] 190.83/63.64 190.83/63.64 [U52(tt())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U61(tt())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U71(tt(), P)] = [1 0] P + [3] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] P + [3] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U72(isPal(activate(P)))] 190.83/63.64 190.83/63.64 [U72(tt())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isPal(V)] = [1 0] V + [2] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V + [2] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U81(isNePal(activate(V)))] 190.83/63.64 190.83/63.64 [isPal(n__nil())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [U81(tt())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__a())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__e())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__i())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__o())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isQid(n__u())] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [tt()] 190.83/63.64 190.83/63.64 [isNePal(V)] = [1 0] V + [1] 190.83/63.64 [0 0] [0] 190.83/63.64 >= [1 0] V + [1] 190.83/63.64 [0 0] [0] 190.83/63.64 = [U61(isQid(activate(V)))] 190.83/63.64 190.83/63.64 [isNePal(n____(I, __(P, I)))] = [1 0] P + [2 0] I + [5] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 > [1 0] P + [1 0] I + [3] 190.83/63.64 [0 0] [0 0] [0] 190.83/63.64 = [U71(isQid(activate(I)), activate(P))] 190.83/63.64 190.83/63.64 [a()] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [n__a()] 190.83/63.64 190.83/63.64 [e()] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [n__e()] 190.83/63.64 190.83/63.64 [i()] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [n__i()] 190.83/63.64 190.83/63.64 [o()] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [n__o()] 190.83/63.64 190.83/63.64 [u()] = [2] 190.83/63.64 [0] 190.83/63.64 >= [2] 190.83/63.64 [0] 190.83/63.64 = [n__u()] 190.83/63.64 190.83/63.64 190.83/63.64 We return to the main proof. 190.83/63.64 190.83/63.64 We are left with following problem, upon which TcT provides the 190.83/63.64 certificate YES(O(1),O(1)). 190.83/63.64 190.83/63.64 Weak Trs: 190.83/63.64 { __(X1, X2) -> n____(X1, X2) 190.83/63.64 , __(X, nil()) -> X 190.83/63.64 , __(__(X, Y), Z) -> __(X, __(Y, Z)) 190.83/63.64 , __(nil(), X) -> X 190.83/63.64 , nil() -> n__nil() 190.83/63.64 , U11(tt()) -> tt() 190.83/63.64 , U21(tt(), V2) -> U22(isList(activate(V2))) 190.83/63.64 , U22(tt()) -> tt() 190.83/63.64 , isList(V) -> U11(isNeList(activate(V))) 190.83/63.64 , isList(n__nil()) -> tt() 190.83/63.64 , isList(n____(V1, V2)) -> U21(isList(activate(V1)), activate(V2)) 190.83/63.64 , activate(X) -> X 190.83/63.64 , activate(n__nil()) -> nil() 190.83/63.64 , activate(n____(X1, X2)) -> __(X1, X2) 190.83/63.64 , activate(n__a()) -> a() 190.83/63.64 , activate(n__e()) -> e() 190.83/63.64 , activate(n__i()) -> i() 190.83/63.64 , activate(n__o()) -> o() 190.83/63.64 , activate(n__u()) -> u() 190.83/63.64 , U31(tt()) -> tt() 190.83/63.64 , U41(tt(), V2) -> U42(isNeList(activate(V2))) 190.83/63.64 , U42(tt()) -> tt() 190.83/63.64 , isNeList(V) -> U31(isQid(activate(V))) 190.83/63.64 , isNeList(n____(V1, V2)) -> 190.83/63.64 U41(isList(activate(V1)), activate(V2)) 190.83/63.64 , isNeList(n____(V1, V2)) -> 190.83/63.64 U51(isNeList(activate(V1)), activate(V2)) 190.83/63.64 , U51(tt(), V2) -> U52(isList(activate(V2))) 190.83/63.64 , U52(tt()) -> tt() 190.83/63.64 , U61(tt()) -> tt() 190.83/63.64 , U71(tt(), P) -> U72(isPal(activate(P))) 190.83/63.64 , U72(tt()) -> tt() 190.83/63.64 , isPal(V) -> U81(isNePal(activate(V))) 190.83/63.64 , isPal(n__nil()) -> tt() 190.83/63.64 , U81(tt()) -> tt() 190.83/63.64 , isQid(n__a()) -> tt() 190.83/63.64 , isQid(n__e()) -> tt() 190.83/63.64 , isQid(n__i()) -> tt() 190.83/63.64 , isQid(n__o()) -> tt() 190.83/63.64 , isQid(n__u()) -> tt() 190.83/63.64 , isNePal(V) -> U61(isQid(activate(V))) 190.83/63.64 , isNePal(n____(I, __(P, I))) -> 190.83/63.64 U71(isQid(activate(I)), activate(P)) 190.83/63.64 , a() -> n__a() 190.83/63.64 , e() -> n__e() 190.83/63.64 , i() -> n__i() 190.83/63.64 , o() -> n__o() 190.83/63.64 , u() -> n__u() } 190.83/63.64 Obligation: 190.83/63.64 derivational complexity 190.83/63.64 Answer: 190.83/63.64 YES(O(1),O(1)) 190.83/63.64 190.83/63.64 Empty rules are trivially bounded 190.83/63.64 190.83/63.64 Hurray, we answered YES(O(1),O(n^2)) 190.83/63.65 EOF