YES(?,O(n^2))

We are left with following problem, upon which TcT provides the
certificate YES(?,O(n^2)).

Strict Trs:
  { concat(leaf(), Y) -> Y
  , concat(cons(U, V), Y) -> cons(U, concat(V, Y))
  , lessleaves(X, leaf()) -> false()
  , lessleaves(leaf(), cons(W, Z)) -> true()
  , lessleaves(cons(U, V), cons(W, Z)) ->
    lessleaves(concat(U, V), concat(W, Z)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(?,O(n^2))

We add following dependency tuples:

Strict DPs:
  { concat^#(leaf(), Y) -> c_1()
  , concat^#(cons(U, V), Y) -> c_2(concat^#(V, Y))
  , lessleaves^#(X, leaf()) -> c_3()
  , lessleaves^#(leaf(), cons(W, Z)) -> c_4()
  , lessleaves^#(cons(U, V), cons(W, Z)) ->
    c_5(lessleaves^#(concat(U, V), concat(W, Z)),
        concat^#(U, V),
        concat^#(W, Z)) }

and mark the set of starting terms.

We are left with following problem, upon which TcT provides the
certificate YES(?,O(n^2)).

Strict DPs:
  { concat^#(leaf(), Y) -> c_1()
  , concat^#(cons(U, V), Y) -> c_2(concat^#(V, Y))
  , lessleaves^#(X, leaf()) -> c_3()
  , lessleaves^#(leaf(), cons(W, Z)) -> c_4()
  , lessleaves^#(cons(U, V), cons(W, Z)) ->
    c_5(lessleaves^#(concat(U, V), concat(W, Z)),
        concat^#(U, V),
        concat^#(W, Z)) }
Weak Trs:
  { concat(leaf(), Y) -> Y
  , concat(cons(U, V), Y) -> cons(U, concat(V, Y))
  , lessleaves(X, leaf()) -> false()
  , lessleaves(leaf(), cons(W, Z)) -> true()
  , lessleaves(cons(U, V), cons(W, Z)) ->
    lessleaves(concat(U, V), concat(W, Z)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(?,O(n^2))

We estimate the number of application of {1,3,4} by applications of
Pre({1,3,4}) = {2,5}. Here rules are labeled as follows:

  DPs:
    { 1: concat^#(leaf(), Y) -> c_1()
    , 2: concat^#(cons(U, V), Y) -> c_2(concat^#(V, Y))
    , 3: lessleaves^#(X, leaf()) -> c_3()
    , 4: lessleaves^#(leaf(), cons(W, Z)) -> c_4()
    , 5: lessleaves^#(cons(U, V), cons(W, Z)) ->
         c_5(lessleaves^#(concat(U, V), concat(W, Z)),
             concat^#(U, V),
             concat^#(W, Z)) }

We are left with following problem, upon which TcT provides the
certificate YES(?,O(n^2)).

Strict DPs:
  { concat^#(cons(U, V), Y) -> c_2(concat^#(V, Y))
  , lessleaves^#(cons(U, V), cons(W, Z)) ->
    c_5(lessleaves^#(concat(U, V), concat(W, Z)),
        concat^#(U, V),
        concat^#(W, Z)) }
Weak DPs:
  { concat^#(leaf(), Y) -> c_1()
  , lessleaves^#(X, leaf()) -> c_3()
  , lessleaves^#(leaf(), cons(W, Z)) -> c_4() }
Weak Trs:
  { concat(leaf(), Y) -> Y
  , concat(cons(U, V), Y) -> cons(U, concat(V, Y))
  , lessleaves(X, leaf()) -> false()
  , lessleaves(leaf(), cons(W, Z)) -> true()
  , lessleaves(cons(U, V), cons(W, Z)) ->
    lessleaves(concat(U, V), concat(W, Z)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(?,O(n^2))

The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.

{ concat^#(leaf(), Y) -> c_1()
, lessleaves^#(X, leaf()) -> c_3()
, lessleaves^#(leaf(), cons(W, Z)) -> c_4() }

We are left with following problem, upon which TcT provides the
certificate YES(?,O(n^2)).

Strict DPs:
  { concat^#(cons(U, V), Y) -> c_2(concat^#(V, Y))
  , lessleaves^#(cons(U, V), cons(W, Z)) ->
    c_5(lessleaves^#(concat(U, V), concat(W, Z)),
        concat^#(U, V),
        concat^#(W, Z)) }
Weak Trs:
  { concat(leaf(), Y) -> Y
  , concat(cons(U, V), Y) -> cons(U, concat(V, Y))
  , lessleaves(X, leaf()) -> false()
  , lessleaves(leaf(), cons(W, Z)) -> true()
  , lessleaves(cons(U, V), cons(W, Z)) ->
    lessleaves(concat(U, V), concat(W, Z)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(?,O(n^2))

We replace rewrite rules by usable rules:

  Weak Usable Rules:
    { concat(leaf(), Y) -> Y
    , concat(cons(U, V), Y) -> cons(U, concat(V, Y)) }

We are left with following problem, upon which TcT provides the
certificate YES(?,O(n^2)).

Strict DPs:
  { concat^#(cons(U, V), Y) -> c_2(concat^#(V, Y))
  , lessleaves^#(cons(U, V), cons(W, Z)) ->
    c_5(lessleaves^#(concat(U, V), concat(W, Z)),
        concat^#(U, V),
        concat^#(W, Z)) }
Weak Trs:
  { concat(leaf(), Y) -> Y
  , concat(cons(U, V), Y) -> cons(U, concat(V, Y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(?,O(n^2))

The following argument positions are usable:
  Uargs(c_2) = {1}, Uargs(c_5) = {1, 2, 3}

TcT has computed following constructor-based matrix interpretation
satisfying not(EDA).

        [concat](x1, x2) = [2 2] x1 + [2 0] x2 + [0]           
                           [0 1]      [0 1]      [0]           
                                                               
                  [leaf] = [0]                                 
                           [0]                                 
                                                               
          [cons](x1, x2) = [0 0] x1 + [1 0] x2 + [1]           
                           [1 1]      [0 1]      [1]           
                                                               
      [concat^#](x1, x2) = [1 0] x1 + [0]                      
                           [0 0]      [0]                      
                                                               
               [c_2](x1) = [1 0] x1 + [0]                      
                           [0 0]      [0]                      
                                                               
  [lessleaves^#](x1, x2) = [0 2] x1 + [0 1] x2 + [0]           
                           [0 0]      [0 0]      [0]           
                                                               
       [c_5](x1, x2, x3) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [1]
                           [0 0]      [0 0]      [0 0]      [0]

This order satisfies following ordering constraints:

                     [concat(leaf(), Y)] =  [2 0] Y + [0]                                 
                                            [0 1]     [0]                                 
                                         >= [1 0] Y + [0]                                 
                                            [0 1]     [0]                                 
                                         =  [Y]                                           
                                                                                          
                 [concat(cons(U, V), Y)] =  [2 0] Y + [2 2] U + [2 2] V + [4]             
                                            [0 1]     [1 1]     [0 1]     [1]             
                                         >  [2 0] Y + [0 0] U + [2 2] V + [1]             
                                            [0 1]     [1 1]     [0 1]     [1]             
                                         =  [cons(U, concat(V, Y))]                       
                                                                                          
               [concat^#(cons(U, V), Y)] =  [1 0] V + [1]                                 
                                            [0 0]     [0]                                 
                                         >  [1 0] V + [0]                                 
                                            [0 0]     [0]                                 
                                         =  [c_2(concat^#(V, Y))]                         
                                                                                          
  [lessleaves^#(cons(U, V), cons(W, Z))] =  [2 2] U + [0 2] V + [1 1] W + [0 1] Z + [3]   
                                            [0 0]     [0 0]     [0 0]     [0 0]     [0]   
                                         >  [1 2] U + [0 2] V + [1 1] W + [0 1] Z + [1]   
                                            [0 0]     [0 0]     [0 0]     [0 0]     [0]   
                                         =  [c_5(lessleaves^#(concat(U, V), concat(W, Z)),
                                                 concat^#(U, V),                          
                                                 concat^#(W, Z))]                         
                                                                                          

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