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

Strict Trs:
  { shuffle(Cons(x, xs)) -> Cons(x, shuffle(reverse(xs)))
  , shuffle(Nil()) -> Nil()
  , reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys
  , goal(xs) -> shuffle(xs) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^3))

We add the following dependency tuples:

Strict DPs:
  { shuffle^#(Cons(x, xs)) ->
    c_1(shuffle^#(reverse(xs)), reverse^#(xs))
  , shuffle^#(Nil()) -> c_2()
  , reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
  , reverse^#(Nil()) -> c_4()
  , append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys))
  , append^#(Nil(), ys) -> c_6()
  , goal^#(xs) -> c_7(shuffle^#(xs)) }

and mark the set of starting terms.

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

Strict DPs:
  { shuffle^#(Cons(x, xs)) ->
    c_1(shuffle^#(reverse(xs)), reverse^#(xs))
  , shuffle^#(Nil()) -> c_2()
  , reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
  , reverse^#(Nil()) -> c_4()
  , append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys))
  , append^#(Nil(), ys) -> c_6()
  , goal^#(xs) -> c_7(shuffle^#(xs)) }
Weak Trs:
  { shuffle(Cons(x, xs)) -> Cons(x, shuffle(reverse(xs)))
  , shuffle(Nil()) -> Nil()
  , reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys
  , goal(xs) -> shuffle(xs) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^3))

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

  DPs:
    { 1: shuffle^#(Cons(x, xs)) ->
         c_1(shuffle^#(reverse(xs)), reverse^#(xs))
    , 2: shuffle^#(Nil()) -> c_2()
    , 3: reverse^#(Cons(x, xs)) ->
         c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
    , 4: reverse^#(Nil()) -> c_4()
    , 5: append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys))
    , 6: append^#(Nil(), ys) -> c_6()
    , 7: goal^#(xs) -> c_7(shuffle^#(xs)) }

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

Strict DPs:
  { shuffle^#(Cons(x, xs)) ->
    c_1(shuffle^#(reverse(xs)), reverse^#(xs))
  , reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
  , append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys))
  , goal^#(xs) -> c_7(shuffle^#(xs)) }
Weak DPs:
  { shuffle^#(Nil()) -> c_2()
  , reverse^#(Nil()) -> c_4()
  , append^#(Nil(), ys) -> c_6() }
Weak Trs:
  { shuffle(Cons(x, xs)) -> Cons(x, shuffle(reverse(xs)))
  , shuffle(Nil()) -> Nil()
  , reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys
  , goal(xs) -> shuffle(xs) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^3))

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

{ shuffle^#(Nil()) -> c_2()
, reverse^#(Nil()) -> c_4()
, append^#(Nil(), ys) -> c_6() }

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

Strict DPs:
  { shuffle^#(Cons(x, xs)) ->
    c_1(shuffle^#(reverse(xs)), reverse^#(xs))
  , reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
  , append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys))
  , goal^#(xs) -> c_7(shuffle^#(xs)) }
Weak Trs:
  { shuffle(Cons(x, xs)) -> Cons(x, shuffle(reverse(xs)))
  , shuffle(Nil()) -> Nil()
  , reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys
  , goal(xs) -> shuffle(xs) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^3))

Consider the dependency graph

  1: shuffle^#(Cons(x, xs)) ->
     c_1(shuffle^#(reverse(xs)), reverse^#(xs))
     -->_2 reverse^#(Cons(x, xs)) ->
           c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs)) :2
     -->_1 shuffle^#(Cons(x, xs)) ->
           c_1(shuffle^#(reverse(xs)), reverse^#(xs)) :1
  
  2: reverse^#(Cons(x, xs)) ->
     c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
     -->_1 append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) :3
     -->_2 reverse^#(Cons(x, xs)) ->
           c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs)) :2
  
  3: append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys))
     -->_1 append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) :3
  
  4: goal^#(xs) -> c_7(shuffle^#(xs))
     -->_1 shuffle^#(Cons(x, xs)) ->
           c_1(shuffle^#(reverse(xs)), reverse^#(xs)) :1
  

Following roots of the dependency graph are removed, as the
considered set of starting terms is closed under reduction with
respect to these rules (modulo compound contexts).

  { goal^#(xs) -> c_7(shuffle^#(xs)) }


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

Strict DPs:
  { shuffle^#(Cons(x, xs)) ->
    c_1(shuffle^#(reverse(xs)), reverse^#(xs))
  , reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
  , append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) }
Weak Trs:
  { shuffle(Cons(x, xs)) -> Cons(x, shuffle(reverse(xs)))
  , shuffle(Nil()) -> Nil()
  , reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys
  , goal(xs) -> shuffle(xs) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^3))

We replace rewrite rules by usable rules:

  Weak Usable Rules:
    { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
    , reverse(Nil()) -> Nil()
    , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
    , append(Nil(), ys) -> ys }

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

Strict DPs:
  { shuffle^#(Cons(x, xs)) ->
    c_1(shuffle^#(reverse(xs)), reverse^#(xs))
  , reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
  , append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) }
Weak Trs:
  { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^3))

We decompose the input problem according to the dependency graph
into the upper component

  { shuffle^#(Cons(x, xs)) ->
    c_1(shuffle^#(reverse(xs)), reverse^#(xs)) }

and lower component

  { reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
  , append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) }

Further, following extension rules are added to the lower
component.

{ shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
, shuffle^#(Cons(x, xs)) -> reverse^#(xs) }

TcT solves the upper component with certificate YES(O(1),O(n^1)).

Sub-proof:
----------
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(n^1)).
  
  Strict DPs:
    { shuffle^#(Cons(x, xs)) ->
      c_1(shuffle^#(reverse(xs)), reverse^#(xs)) }
  Weak Trs:
    { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
    , reverse(Nil()) -> Nil()
    , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
    , append(Nil(), ys) -> ys }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(n^1))
  
  We use the processor 'matrix interpretation of dimension 1' to
  orient following rules strictly.
  
  DPs:
    { 1: shuffle^#(Cons(x, xs)) ->
         c_1(shuffle^#(reverse(xs)), reverse^#(xs)) }
  Trs: { reverse(Nil()) -> Nil() }
  
  Sub-proof:
  ----------
    The following argument positions are usable:
      Uargs(c_1) = {1}
    
    TcT has computed the following constructor-based matrix
    interpretation satisfying not(EDA).
    
        [Cons](x1, x2) = [1] x2 + [7]         
                                              
         [reverse](x1) = [1] x1 + [2]         
                                              
      [append](x1, x2) = [1] x1 + [1] x2 + [0]
                                              
                 [Nil] = [0]                  
                                              
       [shuffle^#](x1) = [1] x1 + [7]         
                                              
         [c_1](x1, x2) = [1] x1 + [4] x2 + [0]
                                              
       [reverse^#](x1) = [1]                  
    
    The order satisfies the following ordering constraints:
    
         [reverse(Cons(x, xs))] =  [1] xs + [9]                                
                                >= [1] xs + [9]                                
                                =  [append(reverse(xs), Cons(x, Nil()))]       
                                                                               
               [reverse(Nil())] =  [2]                                         
                                >  [0]                                         
                                =  [Nil()]                                     
                                                                               
      [append(Cons(x, xs), ys)] =  [1] xs + [1] ys + [7]                       
                                >= [1] xs + [1] ys + [7]                       
                                =  [Cons(x, append(xs, ys))]                   
                                                                               
            [append(Nil(), ys)] =  [1] ys + [0]                                
                                >= [1] ys + [0]                                
                                =  [ys]                                        
                                                                               
       [shuffle^#(Cons(x, xs))] =  [1] xs + [14]                               
                                >  [1] xs + [13]                               
                                =  [c_1(shuffle^#(reverse(xs)), reverse^#(xs))]
                                                                               
  
  The strictly oriented rules are moved into the weak component.
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(1)).
  
  Weak DPs:
    { shuffle^#(Cons(x, xs)) ->
      c_1(shuffle^#(reverse(xs)), reverse^#(xs)) }
  Weak Trs:
    { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
    , reverse(Nil()) -> Nil()
    , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
    , append(Nil(), ys) -> ys }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(1))
  
  The following weak DPs constitute a sub-graph of the DG that is
  closed under successors. The DPs are removed.
  
  { shuffle^#(Cons(x, xs)) ->
    c_1(shuffle^#(reverse(xs)), reverse^#(xs)) }
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(1)).
  
  Weak Trs:
    { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
    , reverse(Nil()) -> Nil()
    , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
    , append(Nil(), ys) -> ys }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(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(1)).
  
  Rules: Empty
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(1))
  
  Empty rules are trivially bounded

We return to the main proof.

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

Strict DPs:
  { reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
  , append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) }
Weak DPs:
  { shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
  , shuffle^#(Cons(x, xs)) -> reverse^#(xs) }
Weak Trs:
  { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We decompose the input problem according to the dependency graph
into the upper component

  { shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
  , shuffle^#(Cons(x, xs)) -> reverse^#(xs)
  , reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs)) }

and lower component

  { append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) }

Further, following extension rules are added to the lower
component.

{ shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
, shuffle^#(Cons(x, xs)) -> reverse^#(xs)
, reverse^#(Cons(x, xs)) -> reverse^#(xs)
, reverse^#(Cons(x, xs)) -> append^#(reverse(xs), Cons(x, Nil())) }

TcT solves the upper component with certificate YES(O(1),O(n^1)).

Sub-proof:
----------
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(n^1)).
  
  Strict DPs:
    { reverse^#(Cons(x, xs)) ->
      c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs)) }
  Weak DPs:
    { shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
    , shuffle^#(Cons(x, xs)) -> reverse^#(xs) }
  Weak Trs:
    { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
    , reverse(Nil()) -> Nil()
    , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
    , append(Nil(), ys) -> ys }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(n^1))
  
  We use the processor 'matrix interpretation of dimension 1' to
  orient following rules strictly.
  
  DPs:
    { 1: reverse^#(Cons(x, xs)) ->
         c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))
    , 2: shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
    , 3: shuffle^#(Cons(x, xs)) -> reverse^#(xs) }
  
  Sub-proof:
  ----------
    The following argument positions are usable:
      Uargs(c_3) = {1, 2}
    
    TcT has computed the following constructor-based matrix
    interpretation satisfying not(EDA).
    
          [Cons](x1, x2) = [1] x2 + [3]         
                                                
           [reverse](x1) = [1] x1 + [0]         
                                                
        [append](x1, x2) = [1] x1 + [1] x2 + [0]
                                                
                   [Nil] = [0]                  
                                                
         [shuffle^#](x1) = [3] x1 + [3]         
                                                
         [reverse^#](x1) = [2] x1 + [1]         
                                                
           [c_3](x1, x2) = [1] x1 + [1] x2 + [0]
                                                
      [append^#](x1, x2) = [1] x2 + [2]         
    
    The order satisfies the following ordering constraints:
    
         [reverse(Cons(x, xs))] =  [1] xs + [3]                                               
                                >= [1] xs + [3]                                               
                                =  [append(reverse(xs), Cons(x, Nil()))]                      
                                                                                              
               [reverse(Nil())] =  [0]                                                        
                                >= [0]                                                        
                                =  [Nil()]                                                    
                                                                                              
      [append(Cons(x, xs), ys)] =  [1] xs + [1] ys + [3]                                      
                                >= [1] xs + [1] ys + [3]                                      
                                =  [Cons(x, append(xs, ys))]                                  
                                                                                              
            [append(Nil(), ys)] =  [1] ys + [0]                                               
                                >= [1] ys + [0]                                               
                                =  [ys]                                                       
                                                                                              
       [shuffle^#(Cons(x, xs))] =  [3] xs + [12]                                              
                                >  [3] xs + [3]                                               
                                =  [shuffle^#(reverse(xs))]                                   
                                                                                              
       [shuffle^#(Cons(x, xs))] =  [3] xs + [12]                                              
                                >  [2] xs + [1]                                               
                                =  [reverse^#(xs)]                                            
                                                                                              
       [reverse^#(Cons(x, xs))] =  [2] xs + [7]                                               
                                >  [2] xs + [6]                                               
                                =  [c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs))]
                                                                                              
  
  The strictly oriented rules are moved into the weak component.
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(1)).
  
  Weak DPs:
    { shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
    , shuffle^#(Cons(x, xs)) -> reverse^#(xs)
    , reverse^#(Cons(x, xs)) ->
      c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs)) }
  Weak Trs:
    { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
    , reverse(Nil()) -> Nil()
    , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
    , append(Nil(), ys) -> ys }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(1))
  
  The following weak DPs constitute a sub-graph of the DG that is
  closed under successors. The DPs are removed.
  
  { shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
  , shuffle^#(Cons(x, xs)) -> reverse^#(xs)
  , reverse^#(Cons(x, xs)) ->
    c_3(append^#(reverse(xs), Cons(x, Nil())), reverse^#(xs)) }
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(1)).
  
  Weak Trs:
    { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
    , reverse(Nil()) -> Nil()
    , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
    , append(Nil(), ys) -> ys }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(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(1)).
  
  Rules: Empty
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(1))
  
  Empty rules are trivially bounded

We return to the main proof.

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

Strict DPs: { append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) }
Weak DPs:
  { shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
  , shuffle^#(Cons(x, xs)) -> reverse^#(xs)
  , reverse^#(Cons(x, xs)) -> reverse^#(xs)
  , reverse^#(Cons(x, xs)) -> append^#(reverse(xs), Cons(x, Nil())) }
Weak Trs:
  { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

We use the processor 'matrix interpretation of dimension 1' to
orient following rules strictly.

DPs:
  { 1: append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys))
  , 2: shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
  , 3: shuffle^#(Cons(x, xs)) -> reverse^#(xs)
  , 4: reverse^#(Cons(x, xs)) -> reverse^#(xs)
  , 5: reverse^#(Cons(x, xs)) ->
       append^#(reverse(xs), Cons(x, Nil())) }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(c_5) = {1}
  
  TcT has computed the following constructor-based matrix
  interpretation satisfying not(EDA).
  
        [Cons](x1, x2) = [1] x2 + [3]         
                                              
         [reverse](x1) = [1] x1 + [0]         
                                              
      [append](x1, x2) = [1] x1 + [1] x2 + [0]
                                              
                 [Nil] = [0]                  
                                              
       [shuffle^#](x1) = [2] x1 + [0]         
                                              
       [reverse^#](x1) = [2] x1 + [0]         
                                              
    [append^#](x1, x2) = [2] x1 + [1]         
                                              
             [c_5](x1) = [1] x1 + [0]         
  
  The order satisfies the following ordering constraints:
  
         [reverse(Cons(x, xs))] =  [1] xs + [3]                           
                                >= [1] xs + [3]                           
                                =  [append(reverse(xs), Cons(x, Nil()))]  
                                                                          
               [reverse(Nil())] =  [0]                                    
                                >= [0]                                    
                                =  [Nil()]                                
                                                                          
      [append(Cons(x, xs), ys)] =  [1] xs + [1] ys + [3]                  
                                >= [1] xs + [1] ys + [3]                  
                                =  [Cons(x, append(xs, ys))]              
                                                                          
            [append(Nil(), ys)] =  [1] ys + [0]                           
                                >= [1] ys + [0]                           
                                =  [ys]                                   
                                                                          
       [shuffle^#(Cons(x, xs))] =  [2] xs + [6]                           
                                >  [2] xs + [0]                           
                                =  [shuffle^#(reverse(xs))]               
                                                                          
       [shuffle^#(Cons(x, xs))] =  [2] xs + [6]                           
                                >  [2] xs + [0]                           
                                =  [reverse^#(xs)]                        
                                                                          
       [reverse^#(Cons(x, xs))] =  [2] xs + [6]                           
                                >  [2] xs + [0]                           
                                =  [reverse^#(xs)]                        
                                                                          
       [reverse^#(Cons(x, xs))] =  [2] xs + [6]                           
                                >  [2] xs + [1]                           
                                =  [append^#(reverse(xs), Cons(x, Nil()))]
                                                                          
    [append^#(Cons(x, xs), ys)] =  [2] xs + [7]                           
                                >  [2] xs + [1]                           
                                =  [c_5(append^#(xs, ys))]                
                                                                          

The strictly oriented rules are moved into the weak component.

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).

Weak DPs:
  { shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
  , shuffle^#(Cons(x, xs)) -> reverse^#(xs)
  , reverse^#(Cons(x, xs)) -> reverse^#(xs)
  , reverse^#(Cons(x, xs)) -> append^#(reverse(xs), Cons(x, Nil()))
  , append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) }
Weak Trs:
  { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(1))

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

{ shuffle^#(Cons(x, xs)) -> shuffle^#(reverse(xs))
, shuffle^#(Cons(x, xs)) -> reverse^#(xs)
, reverse^#(Cons(x, xs)) -> reverse^#(xs)
, reverse^#(Cons(x, xs)) -> append^#(reverse(xs), Cons(x, Nil()))
, append^#(Cons(x, xs), ys) -> c_5(append^#(xs, ys)) }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).

Weak Trs:
  { reverse(Cons(x, xs)) -> append(reverse(xs), Cons(x, Nil()))
  , reverse(Nil()) -> Nil()
  , append(Cons(x, xs), ys) -> Cons(x, append(xs, ys))
  , append(Nil(), ys) -> ys }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(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(1)).

Rules: Empty
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(1))

Empty rules are trivially bounded

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