WORST_CASE(?,O(n^2))
* Step 1: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            append(l1,l2) -> append#1(l1,l2)
            append#1(cons(x,xs),l2) -> cons(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) -> cons(node(x,t1,t2),append(l1,l2))
        - Signature:
            {append/2,append#1/2,subtrees/1,subtrees#1/1,subtrees#2/4,subtrees#3/5} / {cons/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {append,append#1,subtrees,subtrees#1,subtrees#2
            ,subtrees#3} and constructors {cons,leaf,nil,node}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(subtrees#2) = {1},
            uargs(subtrees#3) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(append) = [1] x2 + [8]         
              p(append#1) = [1] x2 + [0]         
                  p(cons) = [1] x2 + [3]         
                  p(leaf) = [0]                  
                   p(nil) = [0]                  
                  p(node) = [1] x2 + [1] x3 + [0]
              p(subtrees) = [0]                  
            p(subtrees#1) = [0]                  
            p(subtrees#2) = [1] x1 + [0]         
            p(subtrees#3) = [1] x1 + [1] x2 + [0]
          
          Following rules are strictly oriented:
          append(l1,l2) = [1] l2 + [8]   
                        > [1] l2 + [0]   
                        = append#1(l1,l2)
          
          
          Following rules are (at-least) weakly oriented:
            append#1(cons(x,xs),l2) =  [1] l2 + [0]                       
                                    >= [1] l2 + [11]                      
                                    =  cons(x,append(xs,l2))              
          
                 append#1(nil(),l2) =  [1] l2 + [0]                       
                                    >= [1] l2 + [0]                       
                                    =  l2                                 
          
                        subtrees(t) =  [0]                                
                                    >= [0]                                
                                    =  subtrees#1(t)                      
          
                 subtrees#1(leaf()) =  [0]                                
                                    >= [0]                                
                                    =  nil()                              
          
          subtrees#1(node(x,t1,t2)) =  [0]                                
                                    >= [0]                                
                                    =  subtrees#2(subtrees(t1),t1,t2,x)   
          
             subtrees#2(l1,t1,t2,x) =  [1] l1 + [0]                       
                                    >= [1] l1 + [0]                       
                                    =  subtrees#3(subtrees(t2),l1,t1,t2,x)
          
          subtrees#3(l2,l1,t1,t2,x) =  [1] l1 + [1] l2 + [0]              
                                    >= [1] l2 + [11]                      
                                    =  cons(node(x,t1,t2),append(l1,l2))  
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 2: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            append#1(cons(x,xs),l2) -> cons(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) -> cons(node(x,t1,t2),append(l1,l2))
        - Weak TRS:
            append(l1,l2) -> append#1(l1,l2)
        - Signature:
            {append/2,append#1/2,subtrees/1,subtrees#1/1,subtrees#2/4,subtrees#3/5} / {cons/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {append,append#1,subtrees,subtrees#1,subtrees#2
            ,subtrees#3} and constructors {cons,leaf,nil,node}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(subtrees#2) = {1},
            uargs(subtrees#3) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(append) = [1] x1 + [1] x2 + [0]         
              p(append#1) = [1] x1 + [1] x2 + [0]         
                  p(cons) = [1] x2 + [0]                  
                  p(leaf) = [0]                           
                   p(nil) = [0]                           
                  p(node) = [1] x1 + [1] x2 + [1] x3 + [0]
              p(subtrees) = [0]                           
            p(subtrees#1) = [0]                           
            p(subtrees#2) = [1] x1 + [0]                  
            p(subtrees#3) = [1] x1 + [1] x2 + [1]         
          
          Following rules are strictly oriented:
          subtrees#3(l2,l1,t1,t2,x) = [1] l1 + [1] l2 + [1]            
                                    > [1] l1 + [1] l2 + [0]            
                                    = cons(node(x,t1,t2),append(l1,l2))
          
          
          Following rules are (at-least) weakly oriented:
                      append(l1,l2) =  [1] l1 + [1] l2 + [0]              
                                    >= [1] l1 + [1] l2 + [0]              
                                    =  append#1(l1,l2)                    
          
            append#1(cons(x,xs),l2) =  [1] l2 + [1] xs + [0]              
                                    >= [1] l2 + [1] xs + [0]              
                                    =  cons(x,append(xs,l2))              
          
                 append#1(nil(),l2) =  [1] l2 + [0]                       
                                    >= [1] l2 + [0]                       
                                    =  l2                                 
          
                        subtrees(t) =  [0]                                
                                    >= [0]                                
                                    =  subtrees#1(t)                      
          
                 subtrees#1(leaf()) =  [0]                                
                                    >= [0]                                
                                    =  nil()                              
          
          subtrees#1(node(x,t1,t2)) =  [0]                                
                                    >= [0]                                
                                    =  subtrees#2(subtrees(t1),t1,t2,x)   
          
             subtrees#2(l1,t1,t2,x) =  [1] l1 + [0]                       
                                    >= [1] l1 + [1]                       
                                    =  subtrees#3(subtrees(t2),l1,t1,t2,x)
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 3: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            append#1(cons(x,xs),l2) -> cons(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)
        - Weak TRS:
            append(l1,l2) -> append#1(l1,l2)
            subtrees#3(l2,l1,t1,t2,x) -> cons(node(x,t1,t2),append(l1,l2))
        - Signature:
            {append/2,append#1/2,subtrees/1,subtrees#1/1,subtrees#2/4,subtrees#3/5} / {cons/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {append,append#1,subtrees,subtrees#1,subtrees#2
            ,subtrees#3} and constructors {cons,leaf,nil,node}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(subtrees#2) = {1},
            uargs(subtrees#3) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(append) = [1] x2 + [0]         
              p(append#1) = [1] x2 + [0]         
                  p(cons) = [1] x2 + [0]         
                  p(leaf) = [4]                  
                   p(nil) = [0]                  
                  p(node) = [1] x3 + [0]         
              p(subtrees) = [8]                  
            p(subtrees#1) = [11]                 
            p(subtrees#2) = [1] x1 + [0]         
            p(subtrees#3) = [1] x1 + [1] x2 + [0]
          
          Following rules are strictly oriented:
                 subtrees#1(leaf()) = [11]                            
                                    > [0]                             
                                    = nil()                           
          
          subtrees#1(node(x,t1,t2)) = [11]                            
                                    > [8]                             
                                    = subtrees#2(subtrees(t1),t1,t2,x)
          
          
          Following rules are (at-least) weakly oriented:
                      append(l1,l2) =  [1] l2 + [0]                       
                                    >= [1] l2 + [0]                       
                                    =  append#1(l1,l2)                    
          
            append#1(cons(x,xs),l2) =  [1] l2 + [0]                       
                                    >= [1] l2 + [0]                       
                                    =  cons(x,append(xs,l2))              
          
                 append#1(nil(),l2) =  [1] l2 + [0]                       
                                    >= [1] l2 + [0]                       
                                    =  l2                                 
          
                        subtrees(t) =  [8]                                
                                    >= [11]                               
                                    =  subtrees#1(t)                      
          
             subtrees#2(l1,t1,t2,x) =  [1] l1 + [0]                       
                                    >= [1] l1 + [8]                       
                                    =  subtrees#3(subtrees(t2),l1,t1,t2,x)
          
          subtrees#3(l2,l1,t1,t2,x) =  [1] l1 + [1] l2 + [0]              
                                    >= [1] l2 + [0]                       
                                    =  cons(node(x,t1,t2),append(l1,l2))  
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 4: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            append#1(cons(x,xs),l2) -> cons(x,append(xs,l2))
            append#1(nil(),l2) -> l2
            subtrees(t) -> subtrees#1(t)
            subtrees#2(l1,t1,t2,x) -> subtrees#3(subtrees(t2),l1,t1,t2,x)
        - Weak TRS:
            append(l1,l2) -> append#1(l1,l2)
            subtrees#1(leaf()) -> nil()
            subtrees#1(node(x,t1,t2)) -> subtrees#2(subtrees(t1),t1,t2,x)
            subtrees#3(l2,l1,t1,t2,x) -> cons(node(x,t1,t2),append(l1,l2))
        - Signature:
            {append/2,append#1/2,subtrees/1,subtrees#1/1,subtrees#2/4,subtrees#3/5} / {cons/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {append,append#1,subtrees,subtrees#1,subtrees#2
            ,subtrees#3} and constructors {cons,leaf,nil,node}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(subtrees#2) = {1},
            uargs(subtrees#3) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(append) = [1] x1 + [1] x2 + [1]
              p(append#1) = [1] x1 + [1] x2 + [0]
                  p(cons) = [1] x2 + [1]         
                  p(leaf) = [0]                  
                   p(nil) = [1]                  
                  p(node) = [1] x1 + [1] x2 + [0]
              p(subtrees) = [0]                  
            p(subtrees#1) = [1]                  
            p(subtrees#2) = [1] x1 + [1]         
            p(subtrees#3) = [1] x1 + [1] x2 + [2]
          
          Following rules are strictly oriented:
          append#1(nil(),l2) = [1] l2 + [1]
                             > [1] l2 + [0]
                             = l2          
          
          
          Following rules are (at-least) weakly oriented:
                      append(l1,l2) =  [1] l1 + [1] l2 + [1]              
                                    >= [1] l1 + [1] l2 + [0]              
                                    =  append#1(l1,l2)                    
          
            append#1(cons(x,xs),l2) =  [1] l2 + [1] xs + [1]              
                                    >= [1] l2 + [1] xs + [2]              
                                    =  cons(x,append(xs,l2))              
          
                        subtrees(t) =  [0]                                
                                    >= [1]                                
                                    =  subtrees#1(t)                      
          
                 subtrees#1(leaf()) =  [1]                                
                                    >= [1]                                
                                    =  nil()                              
          
          subtrees#1(node(x,t1,t2)) =  [1]                                
                                    >= [1]                                
                                    =  subtrees#2(subtrees(t1),t1,t2,x)   
          
             subtrees#2(l1,t1,t2,x) =  [1] l1 + [1]                       
                                    >= [1] l1 + [2]                       
                                    =  subtrees#3(subtrees(t2),l1,t1,t2,x)
          
          subtrees#3(l2,l1,t1,t2,x) =  [1] l1 + [1] l2 + [2]              
                                    >= [1] l1 + [1] l2 + [2]              
                                    =  cons(node(x,t1,t2),append(l1,l2))  
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 5: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            append#1(cons(x,xs),l2) -> cons(x,append(xs,l2))
            subtrees(t) -> subtrees#1(t)
            subtrees#2(l1,t1,t2,x) -> subtrees#3(subtrees(t2),l1,t1,t2,x)
        - Weak TRS:
            append(l1,l2) -> append#1(l1,l2)
            append#1(nil(),l2) -> l2
            subtrees#1(leaf()) -> nil()
            subtrees#1(node(x,t1,t2)) -> subtrees#2(subtrees(t1),t1,t2,x)
            subtrees#3(l2,l1,t1,t2,x) -> cons(node(x,t1,t2),append(l1,l2))
        - Signature:
            {append/2,append#1/2,subtrees/1,subtrees#1/1,subtrees#2/4,subtrees#3/5} / {cons/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {append,append#1,subtrees,subtrees#1,subtrees#2
            ,subtrees#3} and constructors {cons,leaf,nil,node}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(subtrees#2) = {1},
            uargs(subtrees#3) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(append) = [1] x2 + [0]
              p(append#1) = [1] x2 + [0]
                  p(cons) = [1] x2 + [0]
                  p(leaf) = [0]         
                   p(nil) = [1]         
                  p(node) = [1] x2 + [1]
              p(subtrees) = [0]         
            p(subtrees#1) = [1]         
            p(subtrees#2) = [1] x1 + [1]
            p(subtrees#3) = [1] x1 + [0]
          
          Following rules are strictly oriented:
          subtrees#2(l1,t1,t2,x) = [1] l1 + [1]                       
                                 > [0]                                
                                 = subtrees#3(subtrees(t2),l1,t1,t2,x)
          
          
          Following rules are (at-least) weakly oriented:
                      append(l1,l2) =  [1] l2 + [0]                     
                                    >= [1] l2 + [0]                     
                                    =  append#1(l1,l2)                  
          
            append#1(cons(x,xs),l2) =  [1] l2 + [0]                     
                                    >= [1] l2 + [0]                     
                                    =  cons(x,append(xs,l2))            
          
                 append#1(nil(),l2) =  [1] l2 + [0]                     
                                    >= [1] l2 + [0]                     
                                    =  l2                               
          
                        subtrees(t) =  [0]                              
                                    >= [1]                              
                                    =  subtrees#1(t)                    
          
                 subtrees#1(leaf()) =  [1]                              
                                    >= [1]                              
                                    =  nil()                            
          
          subtrees#1(node(x,t1,t2)) =  [1]                              
                                    >= [1]                              
                                    =  subtrees#2(subtrees(t1),t1,t2,x) 
          
          subtrees#3(l2,l1,t1,t2,x) =  [1] l2 + [0]                     
                                    >= [1] l2 + [0]                     
                                    =  cons(node(x,t1,t2),append(l1,l2))
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 6: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            append#1(cons(x,xs),l2) -> cons(x,append(xs,l2))
            subtrees(t) -> subtrees#1(t)
        - Weak TRS:
            append(l1,l2) -> append#1(l1,l2)
            append#1(nil(),l2) -> l2
            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) -> cons(node(x,t1,t2),append(l1,l2))
        - Signature:
            {append/2,append#1/2,subtrees/1,subtrees#1/1,subtrees#2/4,subtrees#3/5} / {cons/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {append,append#1,subtrees,subtrees#1,subtrees#2
            ,subtrees#3} and constructors {cons,leaf,nil,node}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(subtrees#2) = {1},
            uargs(subtrees#3) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(append) = [1] x2 + [0]         
              p(append#1) = [1] x2 + [0]         
                  p(cons) = [1] x2 + [0]         
                  p(leaf) = [1]                  
                   p(nil) = [0]                  
                  p(node) = [1] x2 + [1] x3 + [3]
              p(subtrees) = [1] x1 + [1]         
            p(subtrees#1) = [1] x1 + [0]         
            p(subtrees#2) = [1] x1 + [1] x3 + [2]
            p(subtrees#3) = [1] x1 + [1] x2 + [0]
          
          Following rules are strictly oriented:
          subtrees(t) = [1] t + [1]  
                      > [1] t + [0]  
                      = subtrees#1(t)
          
          
          Following rules are (at-least) weakly oriented:
                      append(l1,l2) =  [1] l2 + [0]                       
                                    >= [1] l2 + [0]                       
                                    =  append#1(l1,l2)                    
          
            append#1(cons(x,xs),l2) =  [1] l2 + [0]                       
                                    >= [1] l2 + [0]                       
                                    =  cons(x,append(xs,l2))              
          
                 append#1(nil(),l2) =  [1] l2 + [0]                       
                                    >= [1] l2 + [0]                       
                                    =  l2                                 
          
                 subtrees#1(leaf()) =  [1]                                
                                    >= [0]                                
                                    =  nil()                              
          
          subtrees#1(node(x,t1,t2)) =  [1] t1 + [1] t2 + [3]              
                                    >= [1] t1 + [1] t2 + [3]              
                                    =  subtrees#2(subtrees(t1),t1,t2,x)   
          
             subtrees#2(l1,t1,t2,x) =  [1] l1 + [1] t2 + [2]              
                                    >= [1] l1 + [1] t2 + [1]              
                                    =  subtrees#3(subtrees(t2),l1,t1,t2,x)
          
          subtrees#3(l2,l1,t1,t2,x) =  [1] l1 + [1] l2 + [0]              
                                    >= [1] l2 + [0]                       
                                    =  cons(node(x,t1,t2),append(l1,l2))  
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 7: NaturalMI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            append#1(cons(x,xs),l2) -> cons(x,append(xs,l2))
        - Weak TRS:
            append(l1,l2) -> append#1(l1,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) -> cons(node(x,t1,t2),append(l1,l2))
        - Signature:
            {append/2,append#1/2,subtrees/1,subtrees#1/1,subtrees#2/4,subtrees#3/5} / {cons/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {append,append#1,subtrees,subtrees#1,subtrees#2
            ,subtrees#3} and constructors {cons,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(cons) = {2},
          uargs(subtrees#2) = {1},
          uargs(subtrees#3) = {1}
        
        Following symbols are considered usable:
          {append,append#1,subtrees,subtrees#1,subtrees#2,subtrees#3}
        TcT has computed the following interpretation:
              p(append) = [0 2] x1 + [1 0] x2 + [0]
                          [0 1]      [0 1]      [4]
            p(append#1) = [0 2] x1 + [1 0] x2 + [0]
                          [0 1]      [0 1]      [4]
                p(cons) = [1 0] x2 + [0]           
                          [0 1]      [1]           
                p(leaf) = [3]                      
                          [0]                      
                 p(nil) = [4]                      
                          [0]                      
                p(node) = [1 1] x2 + [1 0] x3 + [4]
                          [0 1]      [0 1]      [5]
            p(subtrees) = [2 0] x1 + [1]           
                          [0 1]      [0]           
          p(subtrees#1) = [2 0] x1 + [1]           
                          [0 1]      [0]           
          p(subtrees#2) = [1 2] x1 + [2 0] x3 + [7]
                          [0 1]      [0 1]      [5]
          p(subtrees#3) = [1 0] x1 + [0 2] x2 + [3]
                          [0 1]      [0 1]      [5]
        
        Following rules are strictly oriented:
        append#1(cons(x,xs),l2) = [1 0] l2 + [0 2] xs + [2]
                                  [0 1]      [0 1]      [5]
                                > [1 0] l2 + [0 2] xs + [0]
                                  [0 1]      [0 1]      [5]
                                = cons(x,append(xs,l2))    
        
        
        Following rules are (at-least) weakly oriented:
                    append(l1,l2) =  [0 2] l1 + [1 0] l2 + [0]          
                                     [0 1]      [0 1]      [4]          
                                  >= [0 2] l1 + [1 0] l2 + [0]          
                                     [0 1]      [0 1]      [4]          
                                  =  append#1(l1,l2)                    
        
               append#1(nil(),l2) =  [1 0] l2 + [0]                     
                                     [0 1]      [4]                     
                                  >= [1 0] l2 + [0]                     
                                     [0 1]      [0]                     
                                  =  l2                                 
        
                      subtrees(t) =  [2 0] t + [1]                      
                                     [0 1]     [0]                      
                                  >= [2 0] t + [1]                      
                                     [0 1]     [0]                      
                                  =  subtrees#1(t)                      
        
               subtrees#1(leaf()) =  [7]                                
                                     [0]                                
                                  >= [4]                                
                                     [0]                                
                                  =  nil()                              
        
        subtrees#1(node(x,t1,t2)) =  [2 2] t1 + [2 0] t2 + [9]          
                                     [0 1]      [0 1]      [5]          
                                  >= [2 2] t1 + [2 0] t2 + [8]          
                                     [0 1]      [0 1]      [5]          
                                  =  subtrees#2(subtrees(t1),t1,t2,x)   
        
           subtrees#2(l1,t1,t2,x) =  [1 2] l1 + [2 0] t2 + [7]          
                                     [0 1]      [0 1]      [5]          
                                  >= [0 2] l1 + [2 0] t2 + [4]          
                                     [0 1]      [0 1]      [5]          
                                  =  subtrees#3(subtrees(t2),l1,t1,t2,x)
        
        subtrees#3(l2,l1,t1,t2,x) =  [0 2] l1 + [1 0] l2 + [3]          
                                     [0 1]      [0 1]      [5]          
                                  >= [0 2] l1 + [1 0] l2 + [0]          
                                     [0 1]      [0 1]      [5]          
                                  =  cons(node(x,t1,t2),append(l1,l2))  
        
* Step 8: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            append(l1,l2) -> append#1(l1,l2)
            append#1(cons(x,xs),l2) -> cons(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) -> cons(node(x,t1,t2),append(l1,l2))
        - Signature:
            {append/2,append#1/2,subtrees/1,subtrees#1/1,subtrees#2/4,subtrees#3/5} / {cons/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {append,append#1,subtrees,subtrees#1,subtrees#2
            ,subtrees#3} and constructors {cons,leaf,nil,node}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(?,O(n^2))