We are left with following problem, upon which TcT provides the
certificate YES(?,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:
  runtime complexity
Answer:
  YES(?,O(n^1))

The input is overlay and right-linear. Switching to innermost
rewriting.

We are left with following problem, upon which TcT provides the
certificate YES(?,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(n^1))

The input was oriented with the instance of 'Small Polynomial Path
Order (PS)' as induced by the safe mapping

 safe(merge) = {}, safe(nil) = {}, safe(++) = {1, 2}, safe(u) = {},
 safe(v) = {}

and precedence

 empty .

Following symbols are considered recursive:

 {merge}

The recursion depth is 1.

For your convenience, here are the satisfied ordering constraints:

                      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();))
                                                                               

Hurray, we answered YES(?,O(n^1))