YES(O(1),O(n^1)) We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict Trs: { merge(x, nil()) -> x , merge(nil(), y) -> y , merge(++(x, y), ++(u(), v())) -> ++(x, merge(y, ++(u(), v()))) , merge(++(x, y), ++(u(), v())) -> ++(u(), merge(++(x, y), v())) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We add following weak dependency pairs: Strict DPs: { merge^#(x, nil()) -> c_1() , merge^#(nil(), y) -> c_2() , merge^#(++(x, y), ++(u(), v())) -> c_3(merge^#(y, ++(u(), v()))) , merge^#(++(x, y), ++(u(), v())) -> c_4(merge^#(++(x, y), v())) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { merge^#(x, nil()) -> c_1() , merge^#(nil(), y) -> c_2() , merge^#(++(x, y), ++(u(), v())) -> c_3(merge^#(y, ++(u(), v()))) , merge^#(++(x, y), ++(u(), v())) -> c_4(merge^#(++(x, y), v())) } Strict Trs: { merge(x, nil()) -> x , merge(nil(), y) -> y , merge(++(x, y), ++(u(), v())) -> ++(x, merge(y, ++(u(), v()))) , merge(++(x, y), ++(u(), v())) -> ++(u(), merge(++(x, y), v())) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) No rule is usable, rules are removed from the input problem. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { merge^#(x, nil()) -> c_1() , merge^#(nil(), y) -> c_2() , merge^#(++(x, y), ++(u(), v())) -> c_3(merge^#(y, ++(u(), v()))) , merge^#(++(x, y), ++(u(), v())) -> c_4(merge^#(++(x, y), v())) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) The weightgap principle applies (using the following constant growth matrix-interpretation) The following argument positions are usable: Uargs(c_3) = {1} TcT has computed following constructor-restricted matrix interpretation. [nil] = [0] [++](x1, x2) = [2] [u] = [0] [v] = [0] [merge^#](x1, x2) = [2] x2 + [0] [c_1] = [1] [c_2] = [1] [c_3](x1) = [1] x1 + [1] [c_4](x1) = [1] This order satisfies following ordering constraints: Further, it can be verified that all rules not oriented are covered by the weightgap condition. We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { merge^#(x, nil()) -> c_1() , merge^#(nil(), y) -> c_2() , merge^#(++(x, y), ++(u(), v())) -> c_3(merge^#(y, ++(u(), v()))) } Weak DPs: { merge^#(++(x, y), ++(u(), v())) -> c_4(merge^#(++(x, y), v())) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) We estimate the number of application of {1,2} by applications of Pre({1,2}) = {3}. Here rules are labeled as follows: DPs: { 1: merge^#(x, nil()) -> c_1() , 2: merge^#(nil(), y) -> c_2() , 3: merge^#(++(x, y), ++(u(), v())) -> c_3(merge^#(y, ++(u(), v()))) , 4: merge^#(++(x, y), ++(u(), v())) -> c_4(merge^#(++(x, y), v())) } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { merge^#(++(x, y), ++(u(), v())) -> c_3(merge^#(y, ++(u(), v()))) } Weak DPs: { merge^#(x, nil()) -> c_1() , merge^#(nil(), y) -> c_2() , merge^#(++(x, y), ++(u(), v())) -> c_4(merge^#(++(x, y), v())) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { merge^#(x, nil()) -> c_1() , merge^#(nil(), y) -> c_2() , merge^#(++(x, y), ++(u(), v())) -> c_4(merge^#(++(x, y), v())) } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { merge^#(++(x, y), ++(u(), v())) -> c_3(merge^#(y, ++(u(), v()))) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) The input was oriented with the instance of 'Small Polynomial Path Order (PS)' as induced by the safe mapping safe(++) = {1, 2}, safe(u) = {}, safe(v) = {}, safe(merge^#) = {2}, safe(c_3) = {} and precedence empty . Following symbols are considered recursive: {merge^#} The recursion depth is 1. Further, following argument filtering is employed: pi(++) = [1, 2], pi(u) = [], pi(v) = [], pi(merge^#) = [1, 2], pi(c_3) = [1] Usable defined function symbols are a subset of: {merge^#} For your convenience, here are the satisfied ordering constraints: pi(merge^#(++(x, y), ++(u(), v()))) = merge^#(++(; x, y); ++(; u(), v())) > c_3(merge^#(y; ++(; u(), v()));) = pi(c_3(merge^#(y, ++(u(), v())))) Hurray, we answered YES(O(1),O(n^1))