We consider the following Problem:

  Strict Trs:
    {  append(@l1, @l2) -> append#1(@l1, @l2)
     , append#1(::(@x, @xs), @l2) -> ::(@x, append(@xs, @l2))
     , append#1(nil(), @l2) -> @l2
     , subtrees(@t) -> subtrees#1(@t)
     , subtrees#1(leaf()) -> nil()
     , subtrees#1(node(@x, @t1, @t2)) ->
       subtrees#2(subtrees(@t1), @t1, @t2, @x)
     , subtrees#2(@l1, @t1, @t2, @x) ->
       subtrees#3(subtrees(@t2), @l1, @t1, @t2, @x)
     , subtrees#3(@l2, @l1, @t1, @t2, @x) ->
       ::(node(@x, @t1, @t2), append(@l1, @l2))}
  StartTerms: basic terms
  Strategy: innermost

Certificate: YES(?,O(n^2))

Proof:
  We consider the following Problem:
  
    Strict Trs:
      {  append(@l1, @l2) -> append#1(@l1, @l2)
       , append#1(::(@x, @xs), @l2) -> ::(@x, append(@xs, @l2))
       , append#1(nil(), @l2) -> @l2
       , subtrees(@t) -> subtrees#1(@t)
       , subtrees#1(leaf()) -> nil()
       , subtrees#1(node(@x, @t1, @t2)) ->
         subtrees#2(subtrees(@t1), @t1, @t2, @x)
       , subtrees#2(@l1, @t1, @t2, @x) ->
         subtrees#3(subtrees(@t2), @l1, @t1, @t2, @x)
       , subtrees#3(@l2, @l1, @t1, @t2, @x) ->
         ::(node(@x, @t1, @t2), append(@l1, @l2))}
    StartTerms: basic terms
    Strategy: innermost
  
  Certificate: YES(?,O(n^2))
  
  Proof:
    The weightgap principle applies, where following rules are oriented strictly:
    
    TRS Component: {subtrees#1(leaf()) -> nil()}
    
    Interpretation of nonconstant growth:
    -------------------------------------
      The following argument positions are usable:
        Uargs(append) = {}, Uargs(append#1) = {}, Uargs(::) = {2},
        Uargs(subtrees) = {}, Uargs(subtrees#1) = {}, Uargs(node) = {},
        Uargs(subtrees#2) = {1}, Uargs(subtrees#3) = {1}
      We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation:
      Interpretation Functions:
       append(x1, x2) = [0 0] x1 + [1 0] x2 + [0]
                        [1 1]      [0 0]      [0]
       append#1(x1, x2) = [0 0] x1 + [1 0] x2 + [1]