MAYBE 899.06/297.05 MAYBE 899.06/297.05 899.06/297.05 We are left with following problem, upon which TcT provides the 899.06/297.05 certificate MAYBE. 899.06/297.05 899.06/297.05 Strict Trs: 899.06/297.05 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.05 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.05 , a__U12(X) -> U12(X) 899.06/297.05 , a__U12(tt()) -> tt() 899.06/297.05 , a__isNat(X) -> isNat(X) 899.06/297.05 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.05 , a__isNat(0()) -> tt() 899.06/297.05 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.05 , a__U21(X) -> U21(X) 899.06/297.05 , a__U21(tt()) -> tt() 899.06/297.05 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.05 , a__U31(tt(), N) -> mark(N) 899.06/297.05 , mark(tt()) -> tt() 899.06/297.05 , mark(s(X)) -> s(mark(X)) 899.06/297.05 , mark(0()) -> 0() 899.06/297.05 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.05 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.05 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.05 , mark(isNat(X)) -> a__isNat(X) 899.06/297.05 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.05 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.05 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.05 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.05 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.05 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.05 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.05 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) 899.06/297.05 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.05 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.05 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.05 Obligation: 899.06/297.05 innermost runtime complexity 899.06/297.05 Answer: 899.06/297.05 MAYBE 899.06/297.05 899.06/297.05 None of the processors succeeded. 899.06/297.05 899.06/297.05 Details of failed attempt(s): 899.06/297.05 ----------------------------- 899.06/297.05 1) 'empty' failed due to the following reason: 899.06/297.05 899.06/297.05 Empty strict component of the problem is NOT empty. 899.06/297.05 899.06/297.05 2) 'Best' failed due to the following reason: 899.06/297.05 899.06/297.05 None of the processors succeeded. 899.06/297.05 899.06/297.05 Details of failed attempt(s): 899.06/297.05 ----------------------------- 899.06/297.05 1) 'With Problem ... (timeout of 297 seconds)' failed due to the 899.06/297.05 following reason: 899.06/297.05 899.06/297.05 Computation stopped due to timeout after 297.0 seconds. 899.06/297.05 899.06/297.05 2) 'Best' failed due to the following reason: 899.06/297.05 899.06/297.05 None of the processors succeeded. 899.06/297.05 899.06/297.05 Details of failed attempt(s): 899.06/297.05 ----------------------------- 899.06/297.05 1) 'With Problem ... (timeout of 148 seconds) (timeout of 297 899.06/297.05 seconds)' failed due to the following reason: 899.06/297.05 899.06/297.05 The weightgap principle applies (using the following nonconstant 899.06/297.05 growth matrix-interpretation) 899.06/297.05 899.06/297.05 The following argument positions are usable: 899.06/297.05 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.05 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.05 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.05 899.06/297.05 TcT has computed the following matrix interpretation satisfying 899.06/297.05 not(EDA) and not(IDA(1)). 899.06/297.05 899.06/297.05 [a__U11](x1, x2) = [1] x1 + [1] 899.06/297.05 899.06/297.05 [tt] = [0] 899.06/297.05 899.06/297.05 [a__U12](x1) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [a__isNat](x1) = [0] 899.06/297.05 899.06/297.05 [a__U21](x1) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [a__U31](x1, x2) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [mark](x1) = [0] 899.06/297.05 899.06/297.05 [a__U41](x1, x2, x3) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [a__U42](x1, x2, x3) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [s](x1) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [a__plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.05 899.06/297.05 [0] = [0] 899.06/297.05 899.06/297.05 [plus](x1, x2) = [1] x1 + [1] x2 + [7] 899.06/297.05 899.06/297.05 [U11](x1, x2) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [U12](x1) = [1] x1 + [7] 899.06/297.05 899.06/297.05 [isNat](x1) = [7] 899.06/297.05 899.06/297.05 [U21](x1) = [1] x1 + [7] 899.06/297.05 899.06/297.05 [U31](x1, x2) = [1] x1 + [7] 899.06/297.05 899.06/297.05 [U41](x1, x2, x3) = [1] x1 + [7] 899.06/297.05 899.06/297.05 [U42](x1, x2, x3) = [1] x1 + [7] 899.06/297.05 899.06/297.05 The order satisfies the following ordering constraints: 899.06/297.05 899.06/297.05 [a__U11(X1, X2)] = [1] X1 + [1] 899.06/297.05 > [1] X1 + [0] 899.06/297.05 = [U11(X1, X2)] 899.06/297.05 899.06/297.05 [a__U11(tt(), V2)] = [1] 899.06/297.05 > [0] 899.06/297.05 = [a__U12(a__isNat(V2))] 899.06/297.05 899.06/297.05 [a__U12(X)] = [1] X + [0] 899.06/297.05 ? [1] X + [7] 899.06/297.05 = [U12(X)] 899.06/297.05 899.06/297.05 [a__U12(tt())] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [tt()] 899.06/297.05 899.06/297.05 [a__isNat(X)] = [0] 899.06/297.05 ? [7] 899.06/297.05 = [isNat(X)] 899.06/297.05 899.06/297.05 [a__isNat(s(V1))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U21(a__isNat(V1))] 899.06/297.05 899.06/297.05 [a__isNat(0())] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [tt()] 899.06/297.05 899.06/297.05 [a__isNat(plus(V1, V2))] = [0] 899.06/297.05 ? [1] 899.06/297.05 = [a__U11(a__isNat(V1), V2)] 899.06/297.05 899.06/297.05 [a__U21(X)] = [1] X + [0] 899.06/297.05 ? [1] X + [7] 899.06/297.05 = [U21(X)] 899.06/297.05 899.06/297.05 [a__U21(tt())] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [tt()] 899.06/297.05 899.06/297.05 [a__U31(X1, X2)] = [1] X1 + [0] 899.06/297.05 ? [1] X1 + [7] 899.06/297.05 = [U31(X1, X2)] 899.06/297.05 899.06/297.05 [a__U31(tt(), N)] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [mark(N)] 899.06/297.05 899.06/297.05 [mark(tt())] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [tt()] 899.06/297.05 899.06/297.05 [mark(s(X))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [s(mark(X))] 899.06/297.05 899.06/297.05 [mark(0())] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [0()] 899.06/297.05 899.06/297.05 [mark(plus(X1, X2))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__plus(mark(X1), mark(X2))] 899.06/297.05 899.06/297.05 [mark(U11(X1, X2))] = [0] 899.06/297.05 ? [1] 899.06/297.05 = [a__U11(mark(X1), X2)] 899.06/297.05 899.06/297.05 [mark(U12(X))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U12(mark(X))] 899.06/297.05 899.06/297.05 [mark(isNat(X))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__isNat(X)] 899.06/297.05 899.06/297.05 [mark(U21(X))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U21(mark(X))] 899.06/297.05 899.06/297.05 [mark(U31(X1, X2))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U31(mark(X1), X2)] 899.06/297.05 899.06/297.05 [mark(U41(X1, X2, X3))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U41(mark(X1), X2, X3)] 899.06/297.05 899.06/297.05 [mark(U42(X1, X2, X3))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U42(mark(X1), X2, X3)] 899.06/297.05 899.06/297.05 [a__U41(X1, X2, X3)] = [1] X1 + [0] 899.06/297.05 ? [1] X1 + [7] 899.06/297.05 = [U41(X1, X2, X3)] 899.06/297.05 899.06/297.05 [a__U41(tt(), M, N)] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U42(a__isNat(N), M, N)] 899.06/297.05 899.06/297.05 [a__U42(X1, X2, X3)] = [1] X1 + [0] 899.06/297.05 ? [1] X1 + [7] 899.06/297.05 = [U42(X1, X2, X3)] 899.06/297.05 899.06/297.05 [a__U42(tt(), M, N)] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [s(a__plus(mark(N), mark(M)))] 899.06/297.05 899.06/297.05 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.05 ? [1] X1 + [1] X2 + [7] 899.06/297.05 = [plus(X1, X2)] 899.06/297.05 899.06/297.05 [a__plus(N, s(M))] = [1] N + [1] M + [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U41(a__isNat(M), M, N)] 899.06/297.05 899.06/297.05 [a__plus(N, 0())] = [1] N + [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U31(a__isNat(N), N)] 899.06/297.05 899.06/297.05 899.06/297.05 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.05 899.06/297.05 We are left with following problem, upon which TcT provides the 899.06/297.05 certificate MAYBE. 899.06/297.05 899.06/297.05 Strict Trs: 899.06/297.05 { a__U12(X) -> U12(X) 899.06/297.05 , a__U12(tt()) -> tt() 899.06/297.05 , a__isNat(X) -> isNat(X) 899.06/297.05 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.05 , a__isNat(0()) -> tt() 899.06/297.05 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.05 , a__U21(X) -> U21(X) 899.06/297.05 , a__U21(tt()) -> tt() 899.06/297.05 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.05 , a__U31(tt(), N) -> mark(N) 899.06/297.05 , mark(tt()) -> tt() 899.06/297.05 , mark(s(X)) -> s(mark(X)) 899.06/297.05 , mark(0()) -> 0() 899.06/297.05 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.05 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.05 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.05 , mark(isNat(X)) -> a__isNat(X) 899.06/297.05 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.05 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.05 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.05 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.05 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.05 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.05 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.05 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) 899.06/297.05 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.05 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.05 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.05 Weak Trs: 899.06/297.05 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.05 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) } 899.06/297.05 Obligation: 899.06/297.05 innermost runtime complexity 899.06/297.05 Answer: 899.06/297.05 MAYBE 899.06/297.05 899.06/297.05 The weightgap principle applies (using the following nonconstant 899.06/297.05 growth matrix-interpretation) 899.06/297.05 899.06/297.05 The following argument positions are usable: 899.06/297.05 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.05 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.05 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.05 899.06/297.05 TcT has computed the following matrix interpretation satisfying 899.06/297.05 not(EDA) and not(IDA(1)). 899.06/297.05 899.06/297.05 [a__U11](x1, x2) = [1] x1 + [4] 899.06/297.05 899.06/297.05 [tt] = [0] 899.06/297.05 899.06/297.05 [a__U12](x1) = [1] x1 + [1] 899.06/297.05 899.06/297.05 [a__isNat](x1) = [0] 899.06/297.05 899.06/297.05 [a__U21](x1) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [a__U31](x1, x2) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [mark](x1) = [0] 899.06/297.05 899.06/297.05 [a__U41](x1, x2, x3) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [a__U42](x1, x2, x3) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [s](x1) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [a__plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.05 899.06/297.05 [0] = [0] 899.06/297.05 899.06/297.05 [plus](x1, x2) = [1] x1 + [1] x2 + [7] 899.06/297.05 899.06/297.05 [U11](x1, x2) = [1] x1 + [3] 899.06/297.05 899.06/297.05 [U12](x1) = [1] x1 + [0] 899.06/297.05 899.06/297.05 [isNat](x1) = [7] 899.06/297.05 899.06/297.05 [U21](x1) = [1] x1 + [7] 899.06/297.05 899.06/297.05 [U31](x1, x2) = [1] x1 + [7] 899.06/297.05 899.06/297.05 [U41](x1, x2, x3) = [1] x1 + [7] 899.06/297.05 899.06/297.05 [U42](x1, x2, x3) = [1] x1 + [7] 899.06/297.05 899.06/297.05 The order satisfies the following ordering constraints: 899.06/297.05 899.06/297.05 [a__U11(X1, X2)] = [1] X1 + [4] 899.06/297.05 > [1] X1 + [3] 899.06/297.05 = [U11(X1, X2)] 899.06/297.05 899.06/297.05 [a__U11(tt(), V2)] = [4] 899.06/297.05 > [1] 899.06/297.05 = [a__U12(a__isNat(V2))] 899.06/297.05 899.06/297.05 [a__U12(X)] = [1] X + [1] 899.06/297.05 > [1] X + [0] 899.06/297.05 = [U12(X)] 899.06/297.05 899.06/297.05 [a__U12(tt())] = [1] 899.06/297.05 > [0] 899.06/297.05 = [tt()] 899.06/297.05 899.06/297.05 [a__isNat(X)] = [0] 899.06/297.05 ? [7] 899.06/297.05 = [isNat(X)] 899.06/297.05 899.06/297.05 [a__isNat(s(V1))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U21(a__isNat(V1))] 899.06/297.05 899.06/297.05 [a__isNat(0())] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [tt()] 899.06/297.05 899.06/297.05 [a__isNat(plus(V1, V2))] = [0] 899.06/297.05 ? [4] 899.06/297.05 = [a__U11(a__isNat(V1), V2)] 899.06/297.05 899.06/297.05 [a__U21(X)] = [1] X + [0] 899.06/297.05 ? [1] X + [7] 899.06/297.05 = [U21(X)] 899.06/297.05 899.06/297.05 [a__U21(tt())] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [tt()] 899.06/297.05 899.06/297.05 [a__U31(X1, X2)] = [1] X1 + [0] 899.06/297.05 ? [1] X1 + [7] 899.06/297.05 = [U31(X1, X2)] 899.06/297.05 899.06/297.05 [a__U31(tt(), N)] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [mark(N)] 899.06/297.05 899.06/297.05 [mark(tt())] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [tt()] 899.06/297.05 899.06/297.05 [mark(s(X))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [s(mark(X))] 899.06/297.05 899.06/297.05 [mark(0())] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [0()] 899.06/297.05 899.06/297.05 [mark(plus(X1, X2))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__plus(mark(X1), mark(X2))] 899.06/297.05 899.06/297.05 [mark(U11(X1, X2))] = [0] 899.06/297.05 ? [4] 899.06/297.05 = [a__U11(mark(X1), X2)] 899.06/297.05 899.06/297.05 [mark(U12(X))] = [0] 899.06/297.05 ? [1] 899.06/297.05 = [a__U12(mark(X))] 899.06/297.05 899.06/297.05 [mark(isNat(X))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__isNat(X)] 899.06/297.05 899.06/297.05 [mark(U21(X))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U21(mark(X))] 899.06/297.05 899.06/297.05 [mark(U31(X1, X2))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U31(mark(X1), X2)] 899.06/297.05 899.06/297.05 [mark(U41(X1, X2, X3))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U41(mark(X1), X2, X3)] 899.06/297.05 899.06/297.05 [mark(U42(X1, X2, X3))] = [0] 899.06/297.05 >= [0] 899.06/297.05 = [a__U42(mark(X1), X2, X3)] 899.06/297.05 899.06/297.06 [a__U41(X1, X2, X3)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U41(X1, X2, X3)] 899.06/297.06 899.06/297.06 [a__U41(tt(), M, N)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U42(a__isNat(N), M, N)] 899.06/297.06 899.06/297.06 [a__U42(X1, X2, X3)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U42(X1, X2, X3)] 899.06/297.06 899.06/297.06 [a__U42(tt(), M, N)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [s(a__plus(mark(N), mark(M)))] 899.06/297.06 899.06/297.06 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.06 ? [1] X1 + [1] X2 + [7] 899.06/297.06 = [plus(X1, X2)] 899.06/297.06 899.06/297.06 [a__plus(N, s(M))] = [1] N + [1] M + [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U41(a__isNat(M), M, N)] 899.06/297.06 899.06/297.06 [a__plus(N, 0())] = [1] N + [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U31(a__isNat(N), N)] 899.06/297.06 899.06/297.06 899.06/297.06 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.06 899.06/297.06 We are left with following problem, upon which TcT provides the 899.06/297.06 certificate MAYBE. 899.06/297.06 899.06/297.06 Strict Trs: 899.06/297.06 { a__isNat(X) -> isNat(X) 899.06/297.06 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.06 , a__isNat(0()) -> tt() 899.06/297.06 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.06 , a__U21(X) -> U21(X) 899.06/297.06 , a__U21(tt()) -> tt() 899.06/297.06 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.06 , a__U31(tt(), N) -> mark(N) 899.06/297.06 , mark(tt()) -> tt() 899.06/297.06 , mark(s(X)) -> s(mark(X)) 899.06/297.06 , mark(0()) -> 0() 899.06/297.06 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.06 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.06 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.06 , mark(isNat(X)) -> a__isNat(X) 899.06/297.06 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.06 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.06 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.06 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.06 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.06 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.06 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.06 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) 899.06/297.06 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.06 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.06 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.06 Weak Trs: 899.06/297.06 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.06 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.06 , a__U12(X) -> U12(X) 899.06/297.06 , a__U12(tt()) -> tt() } 899.06/297.06 Obligation: 899.06/297.06 innermost runtime complexity 899.06/297.06 Answer: 899.06/297.06 MAYBE 899.06/297.06 899.06/297.06 The weightgap principle applies (using the following nonconstant 899.06/297.06 growth matrix-interpretation) 899.06/297.06 899.06/297.06 The following argument positions are usable: 899.06/297.06 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.06 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.06 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.06 899.06/297.06 TcT has computed the following matrix interpretation satisfying 899.06/297.06 not(EDA) and not(IDA(1)). 899.06/297.06 899.06/297.06 [a__U11](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [tt] = [0] 899.06/297.06 899.06/297.06 [a__U12](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__isNat](x1) = [0] 899.06/297.06 899.06/297.06 [a__U21](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__U31](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [mark](x1) = [0] 899.06/297.06 899.06/297.06 [a__U41](x1, x2, x3) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__U42](x1, x2, x3) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [s](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__plus](x1, x2) = [1] x1 + [1] x2 + [1] 899.06/297.06 899.06/297.06 [0] = [0] 899.06/297.06 899.06/297.06 [plus](x1, x2) = [1] x1 + [1] x2 + [6] 899.06/297.06 899.06/297.06 [U11](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [U12](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [isNat](x1) = [7] 899.06/297.06 899.06/297.06 [U21](x1) = [1] x1 + [7] 899.06/297.06 899.06/297.06 [U31](x1, x2) = [1] x1 + [7] 899.06/297.06 899.06/297.06 [U41](x1, x2, x3) = [1] x1 + [7] 899.06/297.06 899.06/297.06 [U42](x1, x2, x3) = [1] x1 + [7] 899.06/297.06 899.06/297.06 The order satisfies the following ordering constraints: 899.06/297.06 899.06/297.06 [a__U11(X1, X2)] = [1] X1 + [0] 899.06/297.06 >= [1] X1 + [0] 899.06/297.06 = [U11(X1, X2)] 899.06/297.06 899.06/297.06 [a__U11(tt(), V2)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U12(a__isNat(V2))] 899.06/297.06 899.06/297.06 [a__U12(X)] = [1] X + [0] 899.06/297.06 >= [1] X + [0] 899.06/297.06 = [U12(X)] 899.06/297.06 899.06/297.06 [a__U12(tt())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [a__isNat(X)] = [0] 899.06/297.06 ? [7] 899.06/297.06 = [isNat(X)] 899.06/297.06 899.06/297.06 [a__isNat(s(V1))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U21(a__isNat(V1))] 899.06/297.06 899.06/297.06 [a__isNat(0())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [a__isNat(plus(V1, V2))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U11(a__isNat(V1), V2)] 899.06/297.06 899.06/297.06 [a__U21(X)] = [1] X + [0] 899.06/297.06 ? [1] X + [7] 899.06/297.06 = [U21(X)] 899.06/297.06 899.06/297.06 [a__U21(tt())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [a__U31(X1, X2)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U31(X1, X2)] 899.06/297.06 899.06/297.06 [a__U31(tt(), N)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [mark(N)] 899.06/297.06 899.06/297.06 [mark(tt())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [mark(s(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [s(mark(X))] 899.06/297.06 899.06/297.06 [mark(0())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [0()] 899.06/297.06 899.06/297.06 [mark(plus(X1, X2))] = [0] 899.06/297.06 ? [1] 899.06/297.06 = [a__plus(mark(X1), mark(X2))] 899.06/297.06 899.06/297.06 [mark(U11(X1, X2))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U11(mark(X1), X2)] 899.06/297.06 899.06/297.06 [mark(U12(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U12(mark(X))] 899.06/297.06 899.06/297.06 [mark(isNat(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__isNat(X)] 899.06/297.06 899.06/297.06 [mark(U21(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U21(mark(X))] 899.06/297.06 899.06/297.06 [mark(U31(X1, X2))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U31(mark(X1), X2)] 899.06/297.06 899.06/297.06 [mark(U41(X1, X2, X3))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U41(mark(X1), X2, X3)] 899.06/297.06 899.06/297.06 [mark(U42(X1, X2, X3))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U42(mark(X1), X2, X3)] 899.06/297.06 899.06/297.06 [a__U41(X1, X2, X3)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U41(X1, X2, X3)] 899.06/297.06 899.06/297.06 [a__U41(tt(), M, N)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U42(a__isNat(N), M, N)] 899.06/297.06 899.06/297.06 [a__U42(X1, X2, X3)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U42(X1, X2, X3)] 899.06/297.06 899.06/297.06 [a__U42(tt(), M, N)] = [0] 899.06/297.06 ? [1] 899.06/297.06 = [s(a__plus(mark(N), mark(M)))] 899.06/297.06 899.06/297.06 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [1] 899.06/297.06 ? [1] X1 + [1] X2 + [6] 899.06/297.06 = [plus(X1, X2)] 899.06/297.06 899.06/297.06 [a__plus(N, s(M))] = [1] N + [1] M + [1] 899.06/297.06 > [0] 899.06/297.06 = [a__U41(a__isNat(M), M, N)] 899.06/297.06 899.06/297.06 [a__plus(N, 0())] = [1] N + [1] 899.06/297.06 > [0] 899.06/297.06 = [a__U31(a__isNat(N), N)] 899.06/297.06 899.06/297.06 899.06/297.06 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.06 899.06/297.06 We are left with following problem, upon which TcT provides the 899.06/297.06 certificate MAYBE. 899.06/297.06 899.06/297.06 Strict Trs: 899.06/297.06 { a__isNat(X) -> isNat(X) 899.06/297.06 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.06 , a__isNat(0()) -> tt() 899.06/297.06 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.06 , a__U21(X) -> U21(X) 899.06/297.06 , a__U21(tt()) -> tt() 899.06/297.06 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.06 , a__U31(tt(), N) -> mark(N) 899.06/297.06 , mark(tt()) -> tt() 899.06/297.06 , mark(s(X)) -> s(mark(X)) 899.06/297.06 , mark(0()) -> 0() 899.06/297.06 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.06 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.06 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.06 , mark(isNat(X)) -> a__isNat(X) 899.06/297.06 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.06 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.06 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.06 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.06 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.06 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.06 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.06 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) 899.06/297.06 , a__plus(X1, X2) -> plus(X1, X2) } 899.06/297.06 Weak Trs: 899.06/297.06 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.06 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.06 , a__U12(X) -> U12(X) 899.06/297.06 , a__U12(tt()) -> tt() 899.06/297.06 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.06 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.06 Obligation: 899.06/297.06 innermost runtime complexity 899.06/297.06 Answer: 899.06/297.06 MAYBE 899.06/297.06 899.06/297.06 The weightgap principle applies (using the following nonconstant 899.06/297.06 growth matrix-interpretation) 899.06/297.06 899.06/297.06 The following argument positions are usable: 899.06/297.06 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.06 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.06 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.06 899.06/297.06 TcT has computed the following matrix interpretation satisfying 899.06/297.06 not(EDA) and not(IDA(1)). 899.06/297.06 899.06/297.06 [a__U11](x1, x2) = [1] x1 + [4] 899.06/297.06 899.06/297.06 [tt] = [0] 899.06/297.06 899.06/297.06 [a__U12](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__isNat](x1) = [0] 899.06/297.06 899.06/297.06 [a__U21](x1) = [1] x1 + [4] 899.06/297.06 899.06/297.06 [a__U31](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [mark](x1) = [0] 899.06/297.06 899.06/297.06 [a__U41](x1, x2, x3) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__U42](x1, x2, x3) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [s](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.06 899.06/297.06 [0] = [0] 899.06/297.06 899.06/297.06 [plus](x1, x2) = [1] x1 + [1] x2 + [7] 899.06/297.06 899.06/297.06 [U11](x1, x2) = [1] x1 + [3] 899.06/297.06 899.06/297.06 [U12](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [isNat](x1) = [7] 899.06/297.06 899.06/297.06 [U21](x1) = [1] x1 + [3] 899.06/297.06 899.06/297.06 [U31](x1, x2) = [1] x1 + [7] 899.06/297.06 899.06/297.06 [U41](x1, x2, x3) = [1] x1 + [7] 899.06/297.06 899.06/297.06 [U42](x1, x2, x3) = [1] x1 + [7] 899.06/297.06 899.06/297.06 The order satisfies the following ordering constraints: 899.06/297.06 899.06/297.06 [a__U11(X1, X2)] = [1] X1 + [4] 899.06/297.06 > [1] X1 + [3] 899.06/297.06 = [U11(X1, X2)] 899.06/297.06 899.06/297.06 [a__U11(tt(), V2)] = [4] 899.06/297.06 > [0] 899.06/297.06 = [a__U12(a__isNat(V2))] 899.06/297.06 899.06/297.06 [a__U12(X)] = [1] X + [0] 899.06/297.06 >= [1] X + [0] 899.06/297.06 = [U12(X)] 899.06/297.06 899.06/297.06 [a__U12(tt())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [a__isNat(X)] = [0] 899.06/297.06 ? [7] 899.06/297.06 = [isNat(X)] 899.06/297.06 899.06/297.06 [a__isNat(s(V1))] = [0] 899.06/297.06 ? [4] 899.06/297.06 = [a__U21(a__isNat(V1))] 899.06/297.06 899.06/297.06 [a__isNat(0())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [a__isNat(plus(V1, V2))] = [0] 899.06/297.06 ? [4] 899.06/297.06 = [a__U11(a__isNat(V1), V2)] 899.06/297.06 899.06/297.06 [a__U21(X)] = [1] X + [4] 899.06/297.06 > [1] X + [3] 899.06/297.06 = [U21(X)] 899.06/297.06 899.06/297.06 [a__U21(tt())] = [4] 899.06/297.06 > [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [a__U31(X1, X2)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U31(X1, X2)] 899.06/297.06 899.06/297.06 [a__U31(tt(), N)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [mark(N)] 899.06/297.06 899.06/297.06 [mark(tt())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [mark(s(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [s(mark(X))] 899.06/297.06 899.06/297.06 [mark(0())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [0()] 899.06/297.06 899.06/297.06 [mark(plus(X1, X2))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__plus(mark(X1), mark(X2))] 899.06/297.06 899.06/297.06 [mark(U11(X1, X2))] = [0] 899.06/297.06 ? [4] 899.06/297.06 = [a__U11(mark(X1), X2)] 899.06/297.06 899.06/297.06 [mark(U12(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U12(mark(X))] 899.06/297.06 899.06/297.06 [mark(isNat(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__isNat(X)] 899.06/297.06 899.06/297.06 [mark(U21(X))] = [0] 899.06/297.06 ? [4] 899.06/297.06 = [a__U21(mark(X))] 899.06/297.06 899.06/297.06 [mark(U31(X1, X2))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U31(mark(X1), X2)] 899.06/297.06 899.06/297.06 [mark(U41(X1, X2, X3))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U41(mark(X1), X2, X3)] 899.06/297.06 899.06/297.06 [mark(U42(X1, X2, X3))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U42(mark(X1), X2, X3)] 899.06/297.06 899.06/297.06 [a__U41(X1, X2, X3)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U41(X1, X2, X3)] 899.06/297.06 899.06/297.06 [a__U41(tt(), M, N)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U42(a__isNat(N), M, N)] 899.06/297.06 899.06/297.06 [a__U42(X1, X2, X3)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U42(X1, X2, X3)] 899.06/297.06 899.06/297.06 [a__U42(tt(), M, N)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [s(a__plus(mark(N), mark(M)))] 899.06/297.06 899.06/297.06 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.06 ? [1] X1 + [1] X2 + [7] 899.06/297.06 = [plus(X1, X2)] 899.06/297.06 899.06/297.06 [a__plus(N, s(M))] = [1] N + [1] M + [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U41(a__isNat(M), M, N)] 899.06/297.06 899.06/297.06 [a__plus(N, 0())] = [1] N + [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U31(a__isNat(N), N)] 899.06/297.06 899.06/297.06 899.06/297.06 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.06 899.06/297.06 We are left with following problem, upon which TcT provides the 899.06/297.06 certificate MAYBE. 899.06/297.06 899.06/297.06 Strict Trs: 899.06/297.06 { a__isNat(X) -> isNat(X) 899.06/297.06 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.06 , a__isNat(0()) -> tt() 899.06/297.06 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.06 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.06 , a__U31(tt(), N) -> mark(N) 899.06/297.06 , mark(tt()) -> tt() 899.06/297.06 , mark(s(X)) -> s(mark(X)) 899.06/297.06 , mark(0()) -> 0() 899.06/297.06 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.06 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.06 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.06 , mark(isNat(X)) -> a__isNat(X) 899.06/297.06 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.06 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.06 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.06 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.06 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.06 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.06 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.06 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) 899.06/297.06 , a__plus(X1, X2) -> plus(X1, X2) } 899.06/297.06 Weak Trs: 899.06/297.06 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.06 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.06 , a__U12(X) -> U12(X) 899.06/297.06 , a__U12(tt()) -> tt() 899.06/297.06 , a__U21(X) -> U21(X) 899.06/297.06 , a__U21(tt()) -> tt() 899.06/297.06 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.06 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.06 Obligation: 899.06/297.06 innermost runtime complexity 899.06/297.06 Answer: 899.06/297.06 MAYBE 899.06/297.06 899.06/297.06 The weightgap principle applies (using the following nonconstant 899.06/297.06 growth matrix-interpretation) 899.06/297.06 899.06/297.06 The following argument positions are usable: 899.06/297.06 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.06 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.06 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.06 899.06/297.06 TcT has computed the following matrix interpretation satisfying 899.06/297.06 not(EDA) and not(IDA(1)). 899.06/297.06 899.06/297.06 [a__U11](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [tt] = [0] 899.06/297.06 899.06/297.06 [a__U12](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__isNat](x1) = [0] 899.06/297.06 899.06/297.06 [a__U21](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__U31](x1, x2) = [1] x1 + [1] 899.06/297.06 899.06/297.06 [mark](x1) = [0] 899.06/297.06 899.06/297.06 [a__U41](x1, x2, x3) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__U42](x1, x2, x3) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [s](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.06 899.06/297.06 [0] = [1] 899.06/297.06 899.06/297.06 [plus](x1, x2) = [1] x1 + [1] x2 + [7] 899.06/297.06 899.06/297.06 [U11](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [U12](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [isNat](x1) = [7] 899.06/297.06 899.06/297.06 [U21](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [U31](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [U41](x1, x2, x3) = [1] x1 + [7] 899.06/297.06 899.06/297.06 [U42](x1, x2, x3) = [1] x1 + [7] 899.06/297.06 899.06/297.06 The order satisfies the following ordering constraints: 899.06/297.06 899.06/297.06 [a__U11(X1, X2)] = [1] X1 + [0] 899.06/297.06 >= [1] X1 + [0] 899.06/297.06 = [U11(X1, X2)] 899.06/297.06 899.06/297.06 [a__U11(tt(), V2)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U12(a__isNat(V2))] 899.06/297.06 899.06/297.06 [a__U12(X)] = [1] X + [0] 899.06/297.06 >= [1] X + [0] 899.06/297.06 = [U12(X)] 899.06/297.06 899.06/297.06 [a__U12(tt())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [a__isNat(X)] = [0] 899.06/297.06 ? [7] 899.06/297.06 = [isNat(X)] 899.06/297.06 899.06/297.06 [a__isNat(s(V1))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U21(a__isNat(V1))] 899.06/297.06 899.06/297.06 [a__isNat(0())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [a__isNat(plus(V1, V2))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U11(a__isNat(V1), V2)] 899.06/297.06 899.06/297.06 [a__U21(X)] = [1] X + [0] 899.06/297.06 >= [1] X + [0] 899.06/297.06 = [U21(X)] 899.06/297.06 899.06/297.06 [a__U21(tt())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [a__U31(X1, X2)] = [1] X1 + [1] 899.06/297.06 > [1] X1 + [0] 899.06/297.06 = [U31(X1, X2)] 899.06/297.06 899.06/297.06 [a__U31(tt(), N)] = [1] 899.06/297.06 > [0] 899.06/297.06 = [mark(N)] 899.06/297.06 899.06/297.06 [mark(tt())] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [tt()] 899.06/297.06 899.06/297.06 [mark(s(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [s(mark(X))] 899.06/297.06 899.06/297.06 [mark(0())] = [0] 899.06/297.06 ? [1] 899.06/297.06 = [0()] 899.06/297.06 899.06/297.06 [mark(plus(X1, X2))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__plus(mark(X1), mark(X2))] 899.06/297.06 899.06/297.06 [mark(U11(X1, X2))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U11(mark(X1), X2)] 899.06/297.06 899.06/297.06 [mark(U12(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U12(mark(X))] 899.06/297.06 899.06/297.06 [mark(isNat(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__isNat(X)] 899.06/297.06 899.06/297.06 [mark(U21(X))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U21(mark(X))] 899.06/297.06 899.06/297.06 [mark(U31(X1, X2))] = [0] 899.06/297.06 ? [1] 899.06/297.06 = [a__U31(mark(X1), X2)] 899.06/297.06 899.06/297.06 [mark(U41(X1, X2, X3))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U41(mark(X1), X2, X3)] 899.06/297.06 899.06/297.06 [mark(U42(X1, X2, X3))] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U42(mark(X1), X2, X3)] 899.06/297.06 899.06/297.06 [a__U41(X1, X2, X3)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U41(X1, X2, X3)] 899.06/297.06 899.06/297.06 [a__U41(tt(), M, N)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U42(a__isNat(N), M, N)] 899.06/297.06 899.06/297.06 [a__U42(X1, X2, X3)] = [1] X1 + [0] 899.06/297.06 ? [1] X1 + [7] 899.06/297.06 = [U42(X1, X2, X3)] 899.06/297.06 899.06/297.06 [a__U42(tt(), M, N)] = [0] 899.06/297.06 >= [0] 899.06/297.06 = [s(a__plus(mark(N), mark(M)))] 899.06/297.06 899.06/297.06 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.06 ? [1] X1 + [1] X2 + [7] 899.06/297.06 = [plus(X1, X2)] 899.06/297.06 899.06/297.06 [a__plus(N, s(M))] = [1] N + [1] M + [0] 899.06/297.06 >= [0] 899.06/297.06 = [a__U41(a__isNat(M), M, N)] 899.06/297.06 899.06/297.06 [a__plus(N, 0())] = [1] N + [1] 899.06/297.06 >= [1] 899.06/297.06 = [a__U31(a__isNat(N), N)] 899.06/297.06 899.06/297.06 899.06/297.06 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.06 899.06/297.06 We are left with following problem, upon which TcT provides the 899.06/297.06 certificate MAYBE. 899.06/297.06 899.06/297.06 Strict Trs: 899.06/297.06 { a__isNat(X) -> isNat(X) 899.06/297.06 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.06 , a__isNat(0()) -> tt() 899.06/297.06 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.06 , mark(tt()) -> tt() 899.06/297.06 , mark(s(X)) -> s(mark(X)) 899.06/297.06 , mark(0()) -> 0() 899.06/297.06 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.06 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.06 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.06 , mark(isNat(X)) -> a__isNat(X) 899.06/297.06 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.06 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.06 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.06 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.06 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.06 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.06 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.06 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) 899.06/297.06 , a__plus(X1, X2) -> plus(X1, X2) } 899.06/297.06 Weak Trs: 899.06/297.06 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.06 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.06 , a__U12(X) -> U12(X) 899.06/297.06 , a__U12(tt()) -> tt() 899.06/297.06 , a__U21(X) -> U21(X) 899.06/297.06 , a__U21(tt()) -> tt() 899.06/297.06 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.06 , a__U31(tt(), N) -> mark(N) 899.06/297.06 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.06 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.06 Obligation: 899.06/297.06 innermost runtime complexity 899.06/297.06 Answer: 899.06/297.06 MAYBE 899.06/297.06 899.06/297.06 The weightgap principle applies (using the following nonconstant 899.06/297.06 growth matrix-interpretation) 899.06/297.06 899.06/297.06 The following argument positions are usable: 899.06/297.06 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.06 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.06 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.06 899.06/297.06 TcT has computed the following matrix interpretation satisfying 899.06/297.06 not(EDA) and not(IDA(1)). 899.06/297.06 899.06/297.06 [a__U11](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [tt] = [0] 899.06/297.06 899.06/297.06 [a__U12](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__isNat](x1) = [0] 899.06/297.06 899.06/297.06 [a__U21](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__U31](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [mark](x1) = [0] 899.06/297.06 899.06/297.06 [a__U41](x1, x2, x3) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__U42](x1, x2, x3) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [s](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [a__plus](x1, x2) = [1] x1 + [1] x2 + [1] 899.06/297.06 899.06/297.06 [0] = [0] 899.06/297.06 899.06/297.06 [plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.06 899.06/297.06 [U11](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [U12](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [isNat](x1) = [7] 899.06/297.06 899.06/297.06 [U21](x1) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [U31](x1, x2) = [1] x1 + [0] 899.06/297.06 899.06/297.06 [U41](x1, x2, x3) = [1] x1 + [7] 899.06/297.06 899.06/297.06 [U42](x1, x2, x3) = [1] x1 + [7] 899.06/297.06 899.06/297.06 The order satisfies the following ordering constraints: 899.06/297.06 899.06/297.06 [a__U11(X1, X2)] = [1] X1 + [0] 899.06/297.06 >= [1] X1 + [0] 899.06/297.07 = [U11(X1, X2)] 899.06/297.07 899.06/297.07 [a__U11(tt(), V2)] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U12(a__isNat(V2))] 899.06/297.07 899.06/297.07 [a__U12(X)] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [U12(X)] 899.06/297.07 899.06/297.07 [a__U12(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__isNat(X)] = [0] 899.06/297.07 ? [7] 899.06/297.07 = [isNat(X)] 899.06/297.07 899.06/297.07 [a__isNat(s(V1))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U21(a__isNat(V1))] 899.06/297.07 899.06/297.07 [a__isNat(0())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__isNat(plus(V1, V2))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U11(a__isNat(V1), V2)] 899.06/297.07 899.06/297.07 [a__U21(X)] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [U21(X)] 899.06/297.07 899.06/297.07 [a__U21(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__U31(X1, X2)] = [1] X1 + [0] 899.06/297.07 >= [1] X1 + [0] 899.06/297.07 = [U31(X1, X2)] 899.06/297.07 899.06/297.07 [a__U31(tt(), N)] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [mark(N)] 899.06/297.07 899.06/297.07 [mark(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [mark(s(X))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [s(mark(X))] 899.06/297.07 899.06/297.07 [mark(0())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [0()] 899.06/297.07 899.06/297.07 [mark(plus(X1, X2))] = [0] 899.06/297.07 ? [1] 899.06/297.07 = [a__plus(mark(X1), mark(X2))] 899.06/297.07 899.06/297.07 [mark(U11(X1, X2))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U11(mark(X1), X2)] 899.06/297.07 899.06/297.07 [mark(U12(X))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U12(mark(X))] 899.06/297.07 899.06/297.07 [mark(isNat(X))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__isNat(X)] 899.06/297.07 899.06/297.07 [mark(U21(X))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U21(mark(X))] 899.06/297.07 899.06/297.07 [mark(U31(X1, X2))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U31(mark(X1), X2)] 899.06/297.07 899.06/297.07 [mark(U41(X1, X2, X3))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U41(mark(X1), X2, X3)] 899.06/297.07 899.06/297.07 [mark(U42(X1, X2, X3))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U42(mark(X1), X2, X3)] 899.06/297.07 899.06/297.07 [a__U41(X1, X2, X3)] = [1] X1 + [0] 899.06/297.07 ? [1] X1 + [7] 899.06/297.07 = [U41(X1, X2, X3)] 899.06/297.07 899.06/297.07 [a__U41(tt(), M, N)] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U42(a__isNat(N), M, N)] 899.06/297.07 899.06/297.07 [a__U42(X1, X2, X3)] = [1] X1 + [0] 899.06/297.07 ? [1] X1 + [7] 899.06/297.07 = [U42(X1, X2, X3)] 899.06/297.07 899.06/297.07 [a__U42(tt(), M, N)] = [0] 899.06/297.07 ? [1] 899.06/297.07 = [s(a__plus(mark(N), mark(M)))] 899.06/297.07 899.06/297.07 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [1] 899.06/297.07 > [1] X1 + [1] X2 + [0] 899.06/297.07 = [plus(X1, X2)] 899.06/297.07 899.06/297.07 [a__plus(N, s(M))] = [1] N + [1] M + [1] 899.06/297.07 > [0] 899.06/297.07 = [a__U41(a__isNat(M), M, N)] 899.06/297.07 899.06/297.07 [a__plus(N, 0())] = [1] N + [1] 899.06/297.07 > [0] 899.06/297.07 = [a__U31(a__isNat(N), N)] 899.06/297.07 899.06/297.07 899.06/297.07 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.07 899.06/297.07 We are left with following problem, upon which TcT provides the 899.06/297.07 certificate MAYBE. 899.06/297.07 899.06/297.07 Strict Trs: 899.06/297.07 { a__isNat(X) -> isNat(X) 899.06/297.07 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.07 , a__isNat(0()) -> tt() 899.06/297.07 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.07 , mark(tt()) -> tt() 899.06/297.07 , mark(s(X)) -> s(mark(X)) 899.06/297.07 , mark(0()) -> 0() 899.06/297.07 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.07 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.07 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.07 , mark(isNat(X)) -> a__isNat(X) 899.06/297.07 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.07 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.07 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.07 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.07 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.07 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.07 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.07 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) } 899.06/297.07 Weak Trs: 899.06/297.07 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.07 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.07 , a__U12(X) -> U12(X) 899.06/297.07 , a__U12(tt()) -> tt() 899.06/297.07 , a__U21(X) -> U21(X) 899.06/297.07 , a__U21(tt()) -> tt() 899.06/297.07 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.07 , a__U31(tt(), N) -> mark(N) 899.06/297.07 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.07 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.07 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.07 Obligation: 899.06/297.07 innermost runtime complexity 899.06/297.07 Answer: 899.06/297.07 MAYBE 899.06/297.07 899.06/297.07 The weightgap principle applies (using the following nonconstant 899.06/297.07 growth matrix-interpretation) 899.06/297.07 899.06/297.07 The following argument positions are usable: 899.06/297.07 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.07 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.07 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.07 899.06/297.07 TcT has computed the following matrix interpretation satisfying 899.06/297.07 not(EDA) and not(IDA(1)). 899.06/297.07 899.06/297.07 [a__U11](x1, x2) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [tt] = [0] 899.06/297.07 899.06/297.07 [a__U12](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__isNat](x1) = [0] 899.06/297.07 899.06/297.07 [a__U21](x1) = [1] x1 + [4] 899.06/297.07 899.06/297.07 [a__U31](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [mark](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 [a__U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 [s](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [0] = [0] 899.06/297.07 899.06/297.07 [plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [U11](x1, x2) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [U12](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [isNat](x1) = [1] 899.06/297.07 899.06/297.07 [U21](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [U31](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 [U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 The order satisfies the following ordering constraints: 899.06/297.07 899.06/297.07 [a__U11(X1, X2)] = [1] X1 + [0] 899.06/297.07 >= [1] X1 + [0] 899.06/297.07 = [U11(X1, X2)] 899.06/297.07 899.06/297.07 [a__U11(tt(), V2)] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U12(a__isNat(V2))] 899.06/297.07 899.06/297.07 [a__U12(X)] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [U12(X)] 899.06/297.07 899.06/297.07 [a__U12(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__isNat(X)] = [0] 899.06/297.07 ? [1] 899.06/297.07 = [isNat(X)] 899.06/297.07 899.06/297.07 [a__isNat(s(V1))] = [0] 899.06/297.07 ? [4] 899.06/297.07 = [a__U21(a__isNat(V1))] 899.06/297.07 899.06/297.07 [a__isNat(0())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__isNat(plus(V1, V2))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U11(a__isNat(V1), V2)] 899.06/297.07 899.06/297.07 [a__U21(X)] = [1] X + [4] 899.06/297.07 > [1] X + [0] 899.06/297.07 = [U21(X)] 899.06/297.07 899.06/297.07 [a__U21(tt())] = [4] 899.06/297.07 > [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__U31(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [0] 899.06/297.07 = [U31(X1, X2)] 899.06/297.07 899.06/297.07 [a__U31(tt(), N)] = [1] N + [0] 899.06/297.07 >= [1] N + [0] 899.06/297.07 = [mark(N)] 899.06/297.07 899.06/297.07 [mark(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [mark(s(X))] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [s(mark(X))] 899.06/297.07 899.06/297.07 [mark(0())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [0()] 899.06/297.07 899.06/297.07 [mark(plus(X1, X2))] = [1] X1 + [1] X2 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [0] 899.06/297.07 = [a__plus(mark(X1), mark(X2))] 899.06/297.07 899.06/297.07 [mark(U11(X1, X2))] = [1] X1 + [0] 899.06/297.07 >= [1] X1 + [0] 899.06/297.07 = [a__U11(mark(X1), X2)] 899.06/297.07 899.06/297.07 [mark(U12(X))] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [a__U12(mark(X))] 899.06/297.07 899.06/297.07 [mark(isNat(X))] = [1] 899.06/297.07 > [0] 899.06/297.07 = [a__isNat(X)] 899.06/297.07 899.06/297.07 [mark(U21(X))] = [1] X + [0] 899.06/297.07 ? [1] X + [4] 899.06/297.07 = [a__U21(mark(X))] 899.06/297.07 899.06/297.07 [mark(U31(X1, X2))] = [1] X1 + [1] X2 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [0] 899.06/297.07 = [a__U31(mark(X1), X2)] 899.06/297.07 899.06/297.07 [mark(U41(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 = [a__U41(mark(X1), X2, X3)] 899.06/297.07 899.06/297.07 [mark(U42(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 = [a__U42(mark(X1), X2, X3)] 899.06/297.07 899.06/297.07 [a__U41(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 = [U41(X1, X2, X3)] 899.06/297.07 899.06/297.07 [a__U41(tt(), M, N)] = [1] N + [1] M + [0] 899.06/297.07 >= [1] N + [1] M + [0] 899.06/297.07 = [a__U42(a__isNat(N), M, N)] 899.06/297.07 899.06/297.07 [a__U42(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 = [U42(X1, X2, X3)] 899.06/297.07 899.06/297.07 [a__U42(tt(), M, N)] = [1] N + [1] M + [0] 899.06/297.07 >= [1] N + [1] M + [0] 899.06/297.07 = [s(a__plus(mark(N), mark(M)))] 899.06/297.07 899.06/297.07 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [0] 899.06/297.07 = [plus(X1, X2)] 899.06/297.07 899.06/297.07 [a__plus(N, s(M))] = [1] N + [1] M + [0] 899.06/297.07 >= [1] N + [1] M + [0] 899.06/297.07 = [a__U41(a__isNat(M), M, N)] 899.06/297.07 899.06/297.07 [a__plus(N, 0())] = [1] N + [0] 899.06/297.07 >= [1] N + [0] 899.06/297.07 = [a__U31(a__isNat(N), N)] 899.06/297.07 899.06/297.07 899.06/297.07 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.07 899.06/297.07 We are left with following problem, upon which TcT provides the 899.06/297.07 certificate MAYBE. 899.06/297.07 899.06/297.07 Strict Trs: 899.06/297.07 { a__isNat(X) -> isNat(X) 899.06/297.07 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.07 , a__isNat(0()) -> tt() 899.06/297.07 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.07 , mark(tt()) -> tt() 899.06/297.07 , mark(s(X)) -> s(mark(X)) 899.06/297.07 , mark(0()) -> 0() 899.06/297.07 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.07 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.07 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.07 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.07 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.07 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.07 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.07 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.07 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.07 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.07 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) } 899.06/297.07 Weak Trs: 899.06/297.07 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.07 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.07 , a__U12(X) -> U12(X) 899.06/297.07 , a__U12(tt()) -> tt() 899.06/297.07 , a__U21(X) -> U21(X) 899.06/297.07 , a__U21(tt()) -> tt() 899.06/297.07 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.07 , a__U31(tt(), N) -> mark(N) 899.06/297.07 , mark(isNat(X)) -> a__isNat(X) 899.06/297.07 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.07 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.07 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.07 Obligation: 899.06/297.07 innermost runtime complexity 899.06/297.07 Answer: 899.06/297.07 MAYBE 899.06/297.07 899.06/297.07 The weightgap principle applies (using the following nonconstant 899.06/297.07 growth matrix-interpretation) 899.06/297.07 899.06/297.07 The following argument positions are usable: 899.06/297.07 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.07 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.07 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.07 899.06/297.07 TcT has computed the following matrix interpretation satisfying 899.06/297.07 not(EDA) and not(IDA(1)). 899.06/297.07 899.06/297.07 [a__U11](x1, x2) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [tt] = [0] 899.06/297.07 899.06/297.07 [a__U12](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__isNat](x1) = [0] 899.06/297.07 899.06/297.07 [a__U21](x1) = [1] x1 + [4] 899.06/297.07 899.06/297.07 [a__U31](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [mark](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 [a__U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 [s](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [0] = [4] 899.06/297.07 899.06/297.07 [plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [U11](x1, x2) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [U12](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [isNat](x1) = [4] 899.06/297.07 899.06/297.07 [U21](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [U31](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [4] 899.06/297.07 899.06/297.07 [U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 The order satisfies the following ordering constraints: 899.06/297.07 899.06/297.07 [a__U11(X1, X2)] = [1] X1 + [0] 899.06/297.07 >= [1] X1 + [0] 899.06/297.07 = [U11(X1, X2)] 899.06/297.07 899.06/297.07 [a__U11(tt(), V2)] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U12(a__isNat(V2))] 899.06/297.07 899.06/297.07 [a__U12(X)] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [U12(X)] 899.06/297.07 899.06/297.07 [a__U12(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__isNat(X)] = [0] 899.06/297.07 ? [4] 899.06/297.07 = [isNat(X)] 899.06/297.07 899.06/297.07 [a__isNat(s(V1))] = [0] 899.06/297.07 ? [4] 899.06/297.07 = [a__U21(a__isNat(V1))] 899.06/297.07 899.06/297.07 [a__isNat(0())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__isNat(plus(V1, V2))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U11(a__isNat(V1), V2)] 899.06/297.07 899.06/297.07 [a__U21(X)] = [1] X + [4] 899.06/297.07 > [1] X + [0] 899.06/297.07 = [U21(X)] 899.06/297.07 899.06/297.07 [a__U21(tt())] = [4] 899.06/297.07 > [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__U31(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [0] 899.06/297.07 = [U31(X1, X2)] 899.06/297.07 899.06/297.07 [a__U31(tt(), N)] = [1] N + [0] 899.06/297.07 >= [1] N + [0] 899.06/297.07 = [mark(N)] 899.06/297.07 899.06/297.07 [mark(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [mark(s(X))] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [s(mark(X))] 899.06/297.07 899.06/297.07 [mark(0())] = [4] 899.06/297.07 >= [4] 899.06/297.07 = [0()] 899.06/297.07 899.06/297.07 [mark(plus(X1, X2))] = [1] X1 + [1] X2 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [0] 899.06/297.07 = [a__plus(mark(X1), mark(X2))] 899.06/297.07 899.06/297.07 [mark(U11(X1, X2))] = [1] X1 + [0] 899.06/297.07 >= [1] X1 + [0] 899.06/297.07 = [a__U11(mark(X1), X2)] 899.06/297.07 899.06/297.07 [mark(U12(X))] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [a__U12(mark(X))] 899.06/297.07 899.06/297.07 [mark(isNat(X))] = [4] 899.06/297.07 > [0] 899.06/297.07 = [a__isNat(X)] 899.06/297.07 899.06/297.07 [mark(U21(X))] = [1] X + [0] 899.06/297.07 ? [1] X + [4] 899.06/297.07 = [a__U21(mark(X))] 899.06/297.07 899.06/297.07 [mark(U31(X1, X2))] = [1] X1 + [1] X2 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [0] 899.06/297.07 = [a__U31(mark(X1), X2)] 899.06/297.07 899.06/297.07 [mark(U41(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [4] 899.06/297.07 > [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 = [a__U41(mark(X1), X2, X3)] 899.06/297.07 899.06/297.07 [mark(U42(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 = [a__U42(mark(X1), X2, X3)] 899.06/297.07 899.06/297.07 [a__U41(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 ? [1] X1 + [1] X2 + [1] X3 + [4] 899.06/297.07 = [U41(X1, X2, X3)] 899.06/297.07 899.06/297.07 [a__U41(tt(), M, N)] = [1] N + [1] M + [0] 899.06/297.07 >= [1] N + [1] M + [0] 899.06/297.07 = [a__U42(a__isNat(N), M, N)] 899.06/297.07 899.06/297.07 [a__U42(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.07 = [U42(X1, X2, X3)] 899.06/297.07 899.06/297.07 [a__U42(tt(), M, N)] = [1] N + [1] M + [0] 899.06/297.07 >= [1] N + [1] M + [0] 899.06/297.07 = [s(a__plus(mark(N), mark(M)))] 899.06/297.07 899.06/297.07 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.07 >= [1] X1 + [1] X2 + [0] 899.06/297.07 = [plus(X1, X2)] 899.06/297.07 899.06/297.07 [a__plus(N, s(M))] = [1] N + [1] M + [0] 899.06/297.07 >= [1] N + [1] M + [0] 899.06/297.07 = [a__U41(a__isNat(M), M, N)] 899.06/297.07 899.06/297.07 [a__plus(N, 0())] = [1] N + [4] 899.06/297.07 > [1] N + [0] 899.06/297.07 = [a__U31(a__isNat(N), N)] 899.06/297.07 899.06/297.07 899.06/297.07 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.07 899.06/297.07 We are left with following problem, upon which TcT provides the 899.06/297.07 certificate MAYBE. 899.06/297.07 899.06/297.07 Strict Trs: 899.06/297.07 { a__isNat(X) -> isNat(X) 899.06/297.07 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.07 , a__isNat(0()) -> tt() 899.06/297.07 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.07 , mark(tt()) -> tt() 899.06/297.07 , mark(s(X)) -> s(mark(X)) 899.06/297.07 , mark(0()) -> 0() 899.06/297.07 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.07 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.07 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.07 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.07 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.07 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.07 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.07 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.07 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.07 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) } 899.06/297.07 Weak Trs: 899.06/297.07 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.07 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.07 , a__U12(X) -> U12(X) 899.06/297.07 , a__U12(tt()) -> tt() 899.06/297.07 , a__U21(X) -> U21(X) 899.06/297.07 , a__U21(tt()) -> tt() 899.06/297.07 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.07 , a__U31(tt(), N) -> mark(N) 899.06/297.07 , mark(isNat(X)) -> a__isNat(X) 899.06/297.07 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.07 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.07 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.07 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.07 Obligation: 899.06/297.07 innermost runtime complexity 899.06/297.07 Answer: 899.06/297.07 MAYBE 899.06/297.07 899.06/297.07 The weightgap principle applies (using the following nonconstant 899.06/297.07 growth matrix-interpretation) 899.06/297.07 899.06/297.07 The following argument positions are usable: 899.06/297.07 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.07 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.07 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.07 899.06/297.07 TcT has computed the following matrix interpretation satisfying 899.06/297.07 not(EDA) and not(IDA(1)). 899.06/297.07 899.06/297.07 [a__U11](x1, x2) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [tt] = [0] 899.06/297.07 899.06/297.07 [a__U12](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__isNat](x1) = [0] 899.06/297.07 899.06/297.07 [a__U21](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__U31](x1, x2) = [1] x1 + [1] x2 + [4] 899.06/297.07 899.06/297.07 [mark](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 [a__U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 [s](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [a__plus](x1, x2) = [1] x1 + [1] x2 + [4] 899.06/297.07 899.06/297.07 [0] = [4] 899.06/297.07 899.06/297.07 [plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [U11](x1, x2) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [U12](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [isNat](x1) = [0] 899.06/297.07 899.06/297.07 [U21](x1) = [1] x1 + [0] 899.06/297.07 899.06/297.07 [U31](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.07 899.06/297.07 [U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.07 899.06/297.07 [U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [1] 899.06/297.07 899.06/297.07 The order satisfies the following ordering constraints: 899.06/297.07 899.06/297.07 [a__U11(X1, X2)] = [1] X1 + [0] 899.06/297.07 >= [1] X1 + [0] 899.06/297.07 = [U11(X1, X2)] 899.06/297.07 899.06/297.07 [a__U11(tt(), V2)] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U12(a__isNat(V2))] 899.06/297.07 899.06/297.07 [a__U12(X)] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [U12(X)] 899.06/297.07 899.06/297.07 [a__U12(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__isNat(X)] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [isNat(X)] 899.06/297.07 899.06/297.07 [a__isNat(s(V1))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U21(a__isNat(V1))] 899.06/297.07 899.06/297.07 [a__isNat(0())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__isNat(plus(V1, V2))] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [a__U11(a__isNat(V1), V2)] 899.06/297.07 899.06/297.07 [a__U21(X)] = [1] X + [0] 899.06/297.07 >= [1] X + [0] 899.06/297.07 = [U21(X)] 899.06/297.07 899.06/297.07 [a__U21(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.07 899.06/297.07 [a__U31(X1, X2)] = [1] X1 + [1] X2 + [4] 899.06/297.07 > [1] X1 + [1] X2 + [0] 899.06/297.07 = [U31(X1, X2)] 899.06/297.07 899.06/297.07 [a__U31(tt(), N)] = [1] N + [4] 899.06/297.07 > [1] N + [0] 899.06/297.07 = [mark(N)] 899.06/297.07 899.06/297.07 [mark(tt())] = [0] 899.06/297.07 >= [0] 899.06/297.07 = [tt()] 899.06/297.08 899.06/297.08 [mark(s(X))] = [1] X + [0] 899.06/297.08 >= [1] X + [0] 899.06/297.08 = [s(mark(X))] 899.06/297.08 899.06/297.08 [mark(0())] = [4] 899.06/297.08 >= [4] 899.06/297.08 = [0()] 899.06/297.08 899.06/297.08 [mark(plus(X1, X2))] = [1] X1 + [1] X2 + [0] 899.06/297.08 ? [1] X1 + [1] X2 + [4] 899.06/297.08 = [a__plus(mark(X1), mark(X2))] 899.06/297.08 899.06/297.08 [mark(U11(X1, X2))] = [1] X1 + [0] 899.06/297.08 >= [1] X1 + [0] 899.06/297.08 = [a__U11(mark(X1), X2)] 899.06/297.08 899.06/297.08 [mark(U12(X))] = [1] X + [0] 899.06/297.08 >= [1] X + [0] 899.06/297.08 = [a__U12(mark(X))] 899.06/297.08 899.06/297.08 [mark(isNat(X))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__isNat(X)] 899.06/297.08 899.06/297.08 [mark(U21(X))] = [1] X + [0] 899.06/297.08 >= [1] X + [0] 899.06/297.08 = [a__U21(mark(X))] 899.06/297.08 899.06/297.08 [mark(U31(X1, X2))] = [1] X1 + [1] X2 + [0] 899.06/297.08 ? [1] X1 + [1] X2 + [4] 899.06/297.08 = [a__U31(mark(X1), X2)] 899.06/297.08 899.06/297.08 [mark(U41(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 = [a__U41(mark(X1), X2, X3)] 899.06/297.08 899.06/297.08 [mark(U42(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [1] 899.06/297.08 > [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 = [a__U42(mark(X1), X2, X3)] 899.06/297.08 899.06/297.08 [a__U41(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 = [U41(X1, X2, X3)] 899.06/297.08 899.06/297.08 [a__U41(tt(), M, N)] = [1] N + [1] M + [0] 899.06/297.08 >= [1] N + [1] M + [0] 899.06/297.08 = [a__U42(a__isNat(N), M, N)] 899.06/297.08 899.06/297.08 [a__U42(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 ? [1] X1 + [1] X2 + [1] X3 + [1] 899.06/297.08 = [U42(X1, X2, X3)] 899.06/297.08 899.06/297.08 [a__U42(tt(), M, N)] = [1] N + [1] M + [0] 899.06/297.08 ? [1] N + [1] M + [4] 899.06/297.08 = [s(a__plus(mark(N), mark(M)))] 899.06/297.08 899.06/297.08 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [4] 899.06/297.08 > [1] X1 + [1] X2 + [0] 899.06/297.08 = [plus(X1, X2)] 899.06/297.08 899.06/297.08 [a__plus(N, s(M))] = [1] N + [1] M + [4] 899.06/297.08 > [1] N + [1] M + [0] 899.06/297.08 = [a__U41(a__isNat(M), M, N)] 899.06/297.08 899.06/297.08 [a__plus(N, 0())] = [1] N + [8] 899.06/297.08 > [1] N + [4] 899.06/297.08 = [a__U31(a__isNat(N), N)] 899.06/297.08 899.06/297.08 899.06/297.08 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.08 899.06/297.08 We are left with following problem, upon which TcT provides the 899.06/297.08 certificate MAYBE. 899.06/297.08 899.06/297.08 Strict Trs: 899.06/297.08 { a__isNat(X) -> isNat(X) 899.06/297.08 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.08 , a__isNat(0()) -> tt() 899.06/297.08 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.08 , mark(tt()) -> tt() 899.06/297.08 , mark(s(X)) -> s(mark(X)) 899.06/297.08 , mark(0()) -> 0() 899.06/297.08 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.08 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.08 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.08 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.08 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.08 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.08 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.08 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) 899.06/297.08 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) } 899.06/297.08 Weak Trs: 899.06/297.08 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.08 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.08 , a__U12(X) -> U12(X) 899.06/297.08 , a__U12(tt()) -> tt() 899.06/297.08 , a__U21(X) -> U21(X) 899.06/297.08 , a__U21(tt()) -> tt() 899.06/297.08 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.08 , a__U31(tt(), N) -> mark(N) 899.06/297.08 , mark(isNat(X)) -> a__isNat(X) 899.06/297.08 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.08 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.08 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.08 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.08 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.08 Obligation: 899.06/297.08 innermost runtime complexity 899.06/297.08 Answer: 899.06/297.08 MAYBE 899.06/297.08 899.06/297.08 The weightgap principle applies (using the following nonconstant 899.06/297.08 growth matrix-interpretation) 899.06/297.08 899.06/297.08 The following argument positions are usable: 899.06/297.08 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.08 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.08 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.08 899.06/297.08 TcT has computed the following matrix interpretation satisfying 899.06/297.08 not(EDA) and not(IDA(1)). 899.06/297.08 899.06/297.08 [a__U11](x1, x2) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [tt] = [1] 899.06/297.08 899.06/297.08 [a__U12](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [a__isNat](x1) = [0] 899.06/297.08 899.06/297.08 [a__U21](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [a__U31](x1, x2) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [mark](x1) = [0] 899.06/297.08 899.06/297.08 [a__U41](x1, x2, x3) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [a__U42](x1, x2, x3) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [s](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [a__plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.08 899.06/297.08 [0] = [0] 899.06/297.08 899.06/297.08 [plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.08 899.06/297.08 [U11](x1, x2) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [U12](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [isNat](x1) = [7] 899.06/297.08 899.06/297.08 [U21](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [U31](x1, x2) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [U41](x1, x2, x3) = [1] x1 + [7] 899.06/297.08 899.06/297.08 [U42](x1, x2, x3) = [1] x1 + [7] 899.06/297.08 899.06/297.08 The order satisfies the following ordering constraints: 899.06/297.08 899.06/297.08 [a__U11(X1, X2)] = [1] X1 + [0] 899.06/297.08 >= [1] X1 + [0] 899.06/297.08 = [U11(X1, X2)] 899.06/297.08 899.06/297.08 [a__U11(tt(), V2)] = [1] 899.06/297.08 > [0] 899.06/297.08 = [a__U12(a__isNat(V2))] 899.06/297.08 899.06/297.08 [a__U12(X)] = [1] X + [0] 899.06/297.08 >= [1] X + [0] 899.06/297.08 = [U12(X)] 899.06/297.08 899.06/297.08 [a__U12(tt())] = [1] 899.06/297.08 >= [1] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [a__isNat(X)] = [0] 899.06/297.08 ? [7] 899.06/297.08 = [isNat(X)] 899.06/297.08 899.06/297.08 [a__isNat(s(V1))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U21(a__isNat(V1))] 899.06/297.08 899.06/297.08 [a__isNat(0())] = [0] 899.06/297.08 ? [1] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [a__isNat(plus(V1, V2))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U11(a__isNat(V1), V2)] 899.06/297.08 899.06/297.08 [a__U21(X)] = [1] X + [0] 899.06/297.08 >= [1] X + [0] 899.06/297.08 = [U21(X)] 899.06/297.08 899.06/297.08 [a__U21(tt())] = [1] 899.06/297.08 >= [1] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [a__U31(X1, X2)] = [1] X1 + [0] 899.06/297.08 >= [1] X1 + [0] 899.06/297.08 = [U31(X1, X2)] 899.06/297.08 899.06/297.08 [a__U31(tt(), N)] = [1] 899.06/297.08 > [0] 899.06/297.08 = [mark(N)] 899.06/297.08 899.06/297.08 [mark(tt())] = [0] 899.06/297.08 ? [1] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [mark(s(X))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [s(mark(X))] 899.06/297.08 899.06/297.08 [mark(0())] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [0()] 899.06/297.08 899.06/297.08 [mark(plus(X1, X2))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__plus(mark(X1), mark(X2))] 899.06/297.08 899.06/297.08 [mark(U11(X1, X2))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U11(mark(X1), X2)] 899.06/297.08 899.06/297.08 [mark(U12(X))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U12(mark(X))] 899.06/297.08 899.06/297.08 [mark(isNat(X))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__isNat(X)] 899.06/297.08 899.06/297.08 [mark(U21(X))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U21(mark(X))] 899.06/297.08 899.06/297.08 [mark(U31(X1, X2))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U31(mark(X1), X2)] 899.06/297.08 899.06/297.08 [mark(U41(X1, X2, X3))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U41(mark(X1), X2, X3)] 899.06/297.08 899.06/297.08 [mark(U42(X1, X2, X3))] = [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U42(mark(X1), X2, X3)] 899.06/297.08 899.06/297.08 [a__U41(X1, X2, X3)] = [1] X1 + [0] 899.06/297.08 ? [1] X1 + [7] 899.06/297.08 = [U41(X1, X2, X3)] 899.06/297.08 899.06/297.08 [a__U41(tt(), M, N)] = [1] 899.06/297.08 > [0] 899.06/297.08 = [a__U42(a__isNat(N), M, N)] 899.06/297.08 899.06/297.08 [a__U42(X1, X2, X3)] = [1] X1 + [0] 899.06/297.08 ? [1] X1 + [7] 899.06/297.08 = [U42(X1, X2, X3)] 899.06/297.08 899.06/297.08 [a__U42(tt(), M, N)] = [1] 899.06/297.08 > [0] 899.06/297.08 = [s(a__plus(mark(N), mark(M)))] 899.06/297.08 899.06/297.08 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.08 >= [1] X1 + [1] X2 + [0] 899.06/297.08 = [plus(X1, X2)] 899.06/297.08 899.06/297.08 [a__plus(N, s(M))] = [1] N + [1] M + [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U41(a__isNat(M), M, N)] 899.06/297.08 899.06/297.08 [a__plus(N, 0())] = [1] N + [0] 899.06/297.08 >= [0] 899.06/297.08 = [a__U31(a__isNat(N), N)] 899.06/297.08 899.06/297.08 899.06/297.08 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.08 899.06/297.08 We are left with following problem, upon which TcT provides the 899.06/297.08 certificate MAYBE. 899.06/297.08 899.06/297.08 Strict Trs: 899.06/297.08 { a__isNat(X) -> isNat(X) 899.06/297.08 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.08 , a__isNat(0()) -> tt() 899.06/297.08 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.08 , mark(tt()) -> tt() 899.06/297.08 , mark(s(X)) -> s(mark(X)) 899.06/297.08 , mark(0()) -> 0() 899.06/297.08 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.08 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.08 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.08 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.08 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.08 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.08 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) } 899.06/297.08 Weak Trs: 899.06/297.08 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.08 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.08 , a__U12(X) -> U12(X) 899.06/297.08 , a__U12(tt()) -> tt() 899.06/297.08 , a__U21(X) -> U21(X) 899.06/297.08 , a__U21(tt()) -> tt() 899.06/297.08 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.08 , a__U31(tt(), N) -> mark(N) 899.06/297.08 , mark(isNat(X)) -> a__isNat(X) 899.06/297.08 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.08 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.08 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.08 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) 899.06/297.08 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.08 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.08 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.08 Obligation: 899.06/297.08 innermost runtime complexity 899.06/297.08 Answer: 899.06/297.08 MAYBE 899.06/297.08 899.06/297.08 The weightgap principle applies (using the following nonconstant 899.06/297.08 growth matrix-interpretation) 899.06/297.08 899.06/297.08 The following argument positions are usable: 899.06/297.08 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.08 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.08 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.08 899.06/297.08 TcT has computed the following matrix interpretation satisfying 899.06/297.08 not(EDA) and not(IDA(1)). 899.06/297.08 899.06/297.08 [a__U11](x1, x2) = [1] x1 + [4] 899.06/297.08 899.06/297.08 [tt] = [4] 899.06/297.08 899.06/297.08 [a__U12](x1) = [1] x1 + [4] 899.06/297.08 899.06/297.08 [a__isNat](x1) = [0] 899.06/297.08 899.06/297.08 [a__U21](x1) = [1] x1 + [4] 899.06/297.08 899.06/297.08 [a__U31](x1, x2) = [1] x1 + [1] x2 + [4] 899.06/297.08 899.06/297.08 [mark](x1) = [1] x1 + [2] 899.06/297.08 899.06/297.08 [a__U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.08 899.06/297.08 [a__U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.08 899.06/297.08 [s](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [a__plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.08 899.06/297.08 [0] = [4] 899.06/297.08 899.06/297.08 [plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.08 899.06/297.08 [U11](x1, x2) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [U12](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [isNat](x1) = [2] 899.06/297.08 899.06/297.08 [U21](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [U31](x1, x2) = [1] x1 + [1] x2 + [2] 899.06/297.08 899.06/297.08 [U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.08 899.06/297.08 [U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [2] 899.06/297.08 899.06/297.08 The order satisfies the following ordering constraints: 899.06/297.08 899.06/297.08 [a__U11(X1, X2)] = [1] X1 + [4] 899.06/297.08 > [1] X1 + [0] 899.06/297.08 = [U11(X1, X2)] 899.06/297.08 899.06/297.08 [a__U11(tt(), V2)] = [8] 899.06/297.08 > [4] 899.06/297.08 = [a__U12(a__isNat(V2))] 899.06/297.08 899.06/297.08 [a__U12(X)] = [1] X + [4] 899.06/297.08 > [1] X + [0] 899.06/297.08 = [U12(X)] 899.06/297.08 899.06/297.08 [a__U12(tt())] = [8] 899.06/297.08 > [4] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [a__isNat(X)] = [0] 899.06/297.08 ? [2] 899.06/297.08 = [isNat(X)] 899.06/297.08 899.06/297.08 [a__isNat(s(V1))] = [0] 899.06/297.08 ? [4] 899.06/297.08 = [a__U21(a__isNat(V1))] 899.06/297.08 899.06/297.08 [a__isNat(0())] = [0] 899.06/297.08 ? [4] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [a__isNat(plus(V1, V2))] = [0] 899.06/297.08 ? [4] 899.06/297.08 = [a__U11(a__isNat(V1), V2)] 899.06/297.08 899.06/297.08 [a__U21(X)] = [1] X + [4] 899.06/297.08 > [1] X + [0] 899.06/297.08 = [U21(X)] 899.06/297.08 899.06/297.08 [a__U21(tt())] = [8] 899.06/297.08 > [4] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [a__U31(X1, X2)] = [1] X1 + [1] X2 + [4] 899.06/297.08 > [1] X1 + [1] X2 + [2] 899.06/297.08 = [U31(X1, X2)] 899.06/297.08 899.06/297.08 [a__U31(tt(), N)] = [1] N + [8] 899.06/297.08 > [1] N + [2] 899.06/297.08 = [mark(N)] 899.06/297.08 899.06/297.08 [mark(tt())] = [6] 899.06/297.08 > [4] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [mark(s(X))] = [1] X + [2] 899.06/297.08 >= [1] X + [2] 899.06/297.08 = [s(mark(X))] 899.06/297.08 899.06/297.08 [mark(0())] = [6] 899.06/297.08 > [4] 899.06/297.08 = [0()] 899.06/297.08 899.06/297.08 [mark(plus(X1, X2))] = [1] X1 + [1] X2 + [2] 899.06/297.08 ? [1] X1 + [1] X2 + [4] 899.06/297.08 = [a__plus(mark(X1), mark(X2))] 899.06/297.08 899.06/297.08 [mark(U11(X1, X2))] = [1] X1 + [2] 899.06/297.08 ? [1] X1 + [6] 899.06/297.08 = [a__U11(mark(X1), X2)] 899.06/297.08 899.06/297.08 [mark(U12(X))] = [1] X + [2] 899.06/297.08 ? [1] X + [6] 899.06/297.08 = [a__U12(mark(X))] 899.06/297.08 899.06/297.08 [mark(isNat(X))] = [4] 899.06/297.08 > [0] 899.06/297.08 = [a__isNat(X)] 899.06/297.08 899.06/297.08 [mark(U21(X))] = [1] X + [2] 899.06/297.08 ? [1] X + [6] 899.06/297.08 = [a__U21(mark(X))] 899.06/297.08 899.06/297.08 [mark(U31(X1, X2))] = [1] X1 + [1] X2 + [4] 899.06/297.08 ? [1] X1 + [1] X2 + [6] 899.06/297.08 = [a__U31(mark(X1), X2)] 899.06/297.08 899.06/297.08 [mark(U41(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [2] 899.06/297.08 >= [1] X1 + [1] X2 + [1] X3 + [2] 899.06/297.08 = [a__U41(mark(X1), X2, X3)] 899.06/297.08 899.06/297.08 [mark(U42(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [4] 899.06/297.08 > [1] X1 + [1] X2 + [1] X3 + [2] 899.06/297.08 = [a__U42(mark(X1), X2, X3)] 899.06/297.08 899.06/297.08 [a__U41(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 = [U41(X1, X2, X3)] 899.06/297.08 899.06/297.08 [a__U41(tt(), M, N)] = [1] N + [1] M + [4] 899.06/297.08 > [1] N + [1] M + [0] 899.06/297.08 = [a__U42(a__isNat(N), M, N)] 899.06/297.08 899.06/297.08 [a__U42(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 ? [1] X1 + [1] X2 + [1] X3 + [2] 899.06/297.08 = [U42(X1, X2, X3)] 899.06/297.08 899.06/297.08 [a__U42(tt(), M, N)] = [1] N + [1] M + [4] 899.06/297.08 >= [1] N + [1] M + [4] 899.06/297.08 = [s(a__plus(mark(N), mark(M)))] 899.06/297.08 899.06/297.08 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.08 >= [1] X1 + [1] X2 + [0] 899.06/297.08 = [plus(X1, X2)] 899.06/297.08 899.06/297.08 [a__plus(N, s(M))] = [1] N + [1] M + [0] 899.06/297.08 >= [1] N + [1] M + [0] 899.06/297.08 = [a__U41(a__isNat(M), M, N)] 899.06/297.08 899.06/297.08 [a__plus(N, 0())] = [1] N + [4] 899.06/297.08 >= [1] N + [4] 899.06/297.08 = [a__U31(a__isNat(N), N)] 899.06/297.08 899.06/297.08 899.06/297.08 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.08 899.06/297.08 We are left with following problem, upon which TcT provides the 899.06/297.08 certificate MAYBE. 899.06/297.08 899.06/297.08 Strict Trs: 899.06/297.08 { a__isNat(X) -> isNat(X) 899.06/297.08 , a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.08 , a__isNat(0()) -> tt() 899.06/297.08 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.08 , mark(s(X)) -> s(mark(X)) 899.06/297.08 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.08 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.08 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.08 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.08 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.08 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.08 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) } 899.06/297.08 Weak Trs: 899.06/297.08 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.08 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.08 , a__U12(X) -> U12(X) 899.06/297.08 , a__U12(tt()) -> tt() 899.06/297.08 , a__U21(X) -> U21(X) 899.06/297.08 , a__U21(tt()) -> tt() 899.06/297.08 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.08 , a__U31(tt(), N) -> mark(N) 899.06/297.08 , mark(tt()) -> tt() 899.06/297.08 , mark(0()) -> 0() 899.06/297.08 , mark(isNat(X)) -> a__isNat(X) 899.06/297.08 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.08 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.08 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.08 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) 899.06/297.08 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.08 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.08 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.08 Obligation: 899.06/297.08 innermost runtime complexity 899.06/297.08 Answer: 899.06/297.08 MAYBE 899.06/297.08 899.06/297.08 The weightgap principle applies (using the following nonconstant 899.06/297.08 growth matrix-interpretation) 899.06/297.08 899.06/297.08 The following argument positions are usable: 899.06/297.08 Uargs(a__U11) = {1}, Uargs(a__U12) = {1}, Uargs(a__U21) = {1}, 899.06/297.08 Uargs(a__U31) = {1}, Uargs(a__U41) = {1}, Uargs(a__U42) = {1}, 899.06/297.08 Uargs(s) = {1}, Uargs(a__plus) = {1, 2} 899.06/297.08 899.06/297.08 TcT has computed the following matrix interpretation satisfying 899.06/297.08 not(EDA) and not(IDA(1)). 899.06/297.08 899.06/297.08 [a__U11](x1, x2) = [1] x1 + [4] 899.06/297.08 899.06/297.08 [tt] = [7] 899.06/297.08 899.06/297.08 [a__U12](x1) = [1] x1 + [7] 899.06/297.08 899.06/297.08 [a__isNat](x1) = [4] 899.06/297.08 899.06/297.08 [a__U21](x1) = [1] x1 + [4] 899.06/297.08 899.06/297.08 [a__U31](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.08 899.06/297.08 [mark](x1) = [1] x1 + [1] 899.06/297.08 899.06/297.08 [a__U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.08 899.06/297.08 [a__U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [1] 899.06/297.08 899.06/297.08 [s](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [a__plus](x1, x2) = [1] x1 + [1] x2 + [6] 899.06/297.08 899.06/297.08 [0] = [2] 899.06/297.08 899.06/297.08 [plus](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.08 899.06/297.08 [U11](x1, x2) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [U12](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [isNat](x1) = [3] 899.06/297.08 899.06/297.08 [U21](x1) = [1] x1 + [0] 899.06/297.08 899.06/297.08 [U31](x1, x2) = [1] x1 + [1] x2 + [0] 899.06/297.08 899.06/297.08 [U41](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 899.06/297.08 899.06/297.08 [U42](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [4] 899.06/297.08 899.06/297.08 The order satisfies the following ordering constraints: 899.06/297.08 899.06/297.08 [a__U11(X1, X2)] = [1] X1 + [4] 899.06/297.08 > [1] X1 + [0] 899.06/297.08 = [U11(X1, X2)] 899.06/297.08 899.06/297.08 [a__U11(tt(), V2)] = [11] 899.06/297.08 >= [11] 899.06/297.08 = [a__U12(a__isNat(V2))] 899.06/297.08 899.06/297.08 [a__U12(X)] = [1] X + [7] 899.06/297.08 > [1] X + [0] 899.06/297.08 = [U12(X)] 899.06/297.08 899.06/297.08 [a__U12(tt())] = [14] 899.06/297.08 > [7] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [a__isNat(X)] = [4] 899.06/297.08 > [3] 899.06/297.08 = [isNat(X)] 899.06/297.08 899.06/297.08 [a__isNat(s(V1))] = [4] 899.06/297.08 ? [8] 899.06/297.08 = [a__U21(a__isNat(V1))] 899.06/297.08 899.06/297.08 [a__isNat(0())] = [4] 899.06/297.08 ? [7] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [a__isNat(plus(V1, V2))] = [4] 899.06/297.08 ? [8] 899.06/297.08 = [a__U11(a__isNat(V1), V2)] 899.06/297.08 899.06/297.08 [a__U21(X)] = [1] X + [4] 899.06/297.08 > [1] X + [0] 899.06/297.08 = [U21(X)] 899.06/297.08 899.06/297.08 [a__U21(tt())] = [11] 899.06/297.08 > [7] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [a__U31(X1, X2)] = [1] X1 + [1] X2 + [0] 899.06/297.08 >= [1] X1 + [1] X2 + [0] 899.06/297.08 = [U31(X1, X2)] 899.06/297.08 899.06/297.08 [a__U31(tt(), N)] = [1] N + [7] 899.06/297.08 > [1] N + [1] 899.06/297.08 = [mark(N)] 899.06/297.08 899.06/297.08 [mark(tt())] = [8] 899.06/297.08 > [7] 899.06/297.08 = [tt()] 899.06/297.08 899.06/297.08 [mark(s(X))] = [1] X + [1] 899.06/297.08 >= [1] X + [1] 899.06/297.08 = [s(mark(X))] 899.06/297.08 899.06/297.08 [mark(0())] = [3] 899.06/297.08 > [2] 899.06/297.08 = [0()] 899.06/297.08 899.06/297.08 [mark(plus(X1, X2))] = [1] X1 + [1] X2 + [1] 899.06/297.08 ? [1] X1 + [1] X2 + [8] 899.06/297.08 = [a__plus(mark(X1), mark(X2))] 899.06/297.08 899.06/297.08 [mark(U11(X1, X2))] = [1] X1 + [1] 899.06/297.08 ? [1] X1 + [5] 899.06/297.08 = [a__U11(mark(X1), X2)] 899.06/297.08 899.06/297.08 [mark(U12(X))] = [1] X + [1] 899.06/297.08 ? [1] X + [8] 899.06/297.08 = [a__U12(mark(X))] 899.06/297.08 899.06/297.08 [mark(isNat(X))] = [4] 899.06/297.08 >= [4] 899.06/297.08 = [a__isNat(X)] 899.06/297.08 899.06/297.08 [mark(U21(X))] = [1] X + [1] 899.06/297.08 ? [1] X + [5] 899.06/297.08 = [a__U21(mark(X))] 899.06/297.08 899.06/297.08 [mark(U31(X1, X2))] = [1] X1 + [1] X2 + [1] 899.06/297.08 >= [1] X1 + [1] X2 + [1] 899.06/297.08 = [a__U31(mark(X1), X2)] 899.06/297.08 899.06/297.08 [mark(U41(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [1] 899.06/297.08 >= [1] X1 + [1] X2 + [1] X3 + [1] 899.06/297.08 = [a__U41(mark(X1), X2, X3)] 899.06/297.08 899.06/297.08 [mark(U42(X1, X2, X3))] = [1] X1 + [1] X2 + [1] X3 + [5] 899.06/297.08 > [1] X1 + [1] X2 + [1] X3 + [2] 899.06/297.08 = [a__U42(mark(X1), X2, X3)] 899.06/297.08 899.06/297.08 [a__U41(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 >= [1] X1 + [1] X2 + [1] X3 + [0] 899.06/297.08 = [U41(X1, X2, X3)] 899.06/297.08 899.06/297.08 [a__U41(tt(), M, N)] = [1] N + [1] M + [7] 899.06/297.08 > [1] N + [1] M + [5] 899.06/297.08 = [a__U42(a__isNat(N), M, N)] 899.06/297.08 899.06/297.08 [a__U42(X1, X2, X3)] = [1] X1 + [1] X2 + [1] X3 + [1] 899.06/297.08 ? [1] X1 + [1] X2 + [1] X3 + [4] 899.06/297.08 = [U42(X1, X2, X3)] 899.06/297.08 899.06/297.08 [a__U42(tt(), M, N)] = [1] N + [1] M + [8] 899.06/297.08 >= [1] N + [1] M + [8] 899.06/297.08 = [s(a__plus(mark(N), mark(M)))] 899.06/297.08 899.06/297.08 [a__plus(X1, X2)] = [1] X1 + [1] X2 + [6] 899.06/297.08 > [1] X1 + [1] X2 + [0] 899.06/297.08 = [plus(X1, X2)] 899.06/297.08 899.06/297.08 [a__plus(N, s(M))] = [1] N + [1] M + [6] 899.06/297.08 > [1] N + [1] M + [4] 899.06/297.08 = [a__U41(a__isNat(M), M, N)] 899.06/297.08 899.06/297.08 [a__plus(N, 0())] = [1] N + [8] 899.06/297.08 > [1] N + [4] 899.06/297.08 = [a__U31(a__isNat(N), N)] 899.06/297.08 899.06/297.08 899.06/297.08 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 899.06/297.08 899.06/297.08 We are left with following problem, upon which TcT provides the 899.06/297.08 certificate MAYBE. 899.06/297.08 899.06/297.08 Strict Trs: 899.06/297.08 { a__isNat(s(V1)) -> a__U21(a__isNat(V1)) 899.06/297.08 , a__isNat(0()) -> tt() 899.06/297.08 , a__isNat(plus(V1, V2)) -> a__U11(a__isNat(V1), V2) 899.06/297.08 , mark(s(X)) -> s(mark(X)) 899.06/297.08 , mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 899.06/297.08 , mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 899.06/297.08 , mark(U12(X)) -> a__U12(mark(X)) 899.06/297.08 , mark(U21(X)) -> a__U21(mark(X)) 899.06/297.08 , mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 899.06/297.08 , a__U41(X1, X2, X3) -> U41(X1, X2, X3) 899.06/297.08 , a__U42(X1, X2, X3) -> U42(X1, X2, X3) } 899.06/297.08 Weak Trs: 899.06/297.08 { a__U11(X1, X2) -> U11(X1, X2) 899.06/297.08 , a__U11(tt(), V2) -> a__U12(a__isNat(V2)) 899.06/297.08 , a__U12(X) -> U12(X) 899.06/297.08 , a__U12(tt()) -> tt() 899.06/297.08 , a__isNat(X) -> isNat(X) 899.06/297.08 , a__U21(X) -> U21(X) 899.06/297.08 , a__U21(tt()) -> tt() 899.06/297.08 , a__U31(X1, X2) -> U31(X1, X2) 899.06/297.08 , a__U31(tt(), N) -> mark(N) 899.06/297.08 , mark(tt()) -> tt() 899.06/297.08 , mark(0()) -> 0() 899.06/297.08 , mark(isNat(X)) -> a__isNat(X) 899.06/297.08 , mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 899.06/297.08 , mark(U42(X1, X2, X3)) -> a__U42(mark(X1), X2, X3) 899.06/297.08 , a__U41(tt(), M, N) -> a__U42(a__isNat(N), M, N) 899.06/297.08 , a__U42(tt(), M, N) -> s(a__plus(mark(N), mark(M))) 899.06/297.08 , a__plus(X1, X2) -> plus(X1, X2) 899.06/297.08 , a__plus(N, s(M)) -> a__U41(a__isNat(M), M, N) 899.06/297.08 , a__plus(N, 0()) -> a__U31(a__isNat(N), N) } 899.06/297.08 Obligation: 899.06/297.08 innermost runtime complexity 899.06/297.08 Answer: 899.06/297.08 MAYBE 899.06/297.08 899.06/297.08 None of the processors succeeded. 899.06/297.08 899.06/297.08 Details of failed attempt(s): 899.06/297.08 ----------------------------- 899.06/297.08 1) 'empty' failed due to the following reason: 899.06/297.08 899.06/297.08 Empty strict component of the problem is NOT empty. 899.06/297.08 899.06/297.08 2) 'With Problem ...' failed due to the following reason: 899.06/297.08 899.06/297.08 None of the processors succeeded. 899.06/297.08 899.06/297.08 Details of failed attempt(s): 899.06/297.08 ----------------------------- 899.06/297.08 1) 'empty' failed due to the following reason: 899.06/297.08 899.06/297.08 Empty strict component of the problem is NOT empty. 899.06/297.08 899.06/297.08 2) 'Fastest' failed due to the following reason: 899.06/297.08 899.06/297.08 None of the processors succeeded. 899.06/297.08 899.06/297.08 Details of failed attempt(s): 899.06/297.08 ----------------------------- 899.06/297.08 1) 'With Problem ...' failed due to the following reason: 899.06/297.08 899.06/297.08 None of the processors succeeded. 899.06/297.08 899.06/297.08 Details of failed attempt(s): 899.06/297.08 ----------------------------- 899.06/297.08 1) 'empty' failed due to the following reason: 899.06/297.08 899.06/297.08 Empty strict component of the problem is NOT empty. 899.06/297.08 899.06/297.08 2) 'With Problem ...' failed due to the following reason: 899.06/297.08 899.06/297.08 None of the processors succeeded. 899.06/297.08 899.06/297.08 Details of failed attempt(s): 899.06/297.08 ----------------------------- 899.06/297.08 1) 'empty' failed due to the following reason: 899.06/297.08 899.06/297.08 Empty strict component of the problem is NOT empty. 899.06/297.08 899.06/297.08 2) 'With Problem ...' failed due to the following reason: 899.06/297.08 899.06/297.08 None of the processors succeeded. 899.06/297.08 899.06/297.08 Details of failed attempt(s): 899.06/297.08 ----------------------------- 899.06/297.08 1) 'empty' failed due to the following reason: 899.06/297.08 899.06/297.08 Empty strict component of the problem is NOT empty. 899.06/297.08 899.06/297.08 2) 'With Problem ...' failed due to the following reason: 899.06/297.08 899.06/297.08 Empty strict component of the problem is NOT empty. 899.06/297.08 899.06/297.08 899.06/297.08 899.06/297.08 899.06/297.08 2) 'With Problem ...' failed due to the following reason: 899.06/297.08 899.06/297.08 None of the processors succeeded. 899.06/297.08 899.06/297.08 Details of failed attempt(s): 899.06/297.08 ----------------------------- 899.06/297.08 1) 'empty' failed due to the following reason: 899.06/297.08 899.06/297.08 Empty strict component of the problem is NOT empty. 899.06/297.08 899.06/297.08 2) 'With Problem ...' failed due to the following reason: 899.06/297.08 899.06/297.08 Empty strict component of the problem is NOT empty. 899.06/297.08 899.06/297.08 899.06/297.08 899.06/297.08 899.06/297.08 899.06/297.08 2) 'Best' failed due to the following reason: 899.06/297.08 899.06/297.08 None of the processors succeeded. 899.06/297.08 899.06/297.08 Details of failed attempt(s): 899.06/297.08 ----------------------------- 899.06/297.08 1) 'bsearch-popstar (timeout of 297 seconds)' failed due to the 899.06/297.08 following reason: 899.06/297.08 899.06/297.08 The input cannot be shown compatible 899.06/297.08 899.06/297.08 2) 'Polynomial Path Order (PS) (timeout of 297 seconds)' failed due 899.06/297.08 to the following reason: 899.06/297.08 899.06/297.08 The input cannot be shown compatible 899.06/297.08 899.06/297.08 899.06/297.08 3) 'Fastest (timeout of 24 seconds) (timeout of 297 seconds)' 899.06/297.08 failed due to the following reason: 899.06/297.08 899.06/297.08 None of the processors succeeded. 899.06/297.08 899.06/297.08 Details of failed attempt(s): 899.06/297.08 ----------------------------- 899.06/297.08 1) 'Bounds with minimal-enrichment and initial automaton 'match'' 899.06/297.08 failed due to the following reason: 899.06/297.08 899.06/297.08 match-boundness of the problem could not be verified. 899.06/297.08 899.06/297.08 2) 'Bounds with perSymbol-enrichment and initial automaton 'match'' 899.06/297.08 failed due to the following reason: 899.06/297.08 899.06/297.08 match-boundness of the problem could not be verified. 899.06/297.08 899.06/297.08 899.06/297.08 899.06/297.08 899.06/297.08 899.06/297.08 Arrrr.. 900.75/298.62 EOF