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

Strict Trs:
  { half(0()) -> 0()
  , half(s(0())) -> 0()
  , half(s(s(x))) -> s(half(x))
  , lastbit(0()) -> 0()
  , lastbit(s(0())) -> s(0())
  , lastbit(s(s(x))) -> lastbit(x)
  , conv(0()) -> cons(nil(), 0())
  , conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

The weightgap principle applies (using the following nonconstant
growth matrix-interpretation)

The following argument positions are usable:
  Uargs(s) = {1}, Uargs(conv) = {1}, Uargs(cons) = {1, 2}

TcT has computed the following matrix interpretation satisfying
not(EDA) and not(IDA(1)).

      [half](x1) = [0]                  
                                        
             [0] = [0]                  
                                        
         [s](x1) = [1] x1 + [0]         
                                        
   [lastbit](x1) = [4]                  
                                        
      [conv](x1) = [1] x1 + [0]         
                                        
  [cons](x1, x2) = [1] x1 + [1] x2 + [0]
                                        
           [nil] = [0]                  

The order satisfies the following ordering constraints:

         [half(0())] =  [0]                                    
                     >= [0]                                    
                     =  [0()]                                  
                                                               
      [half(s(0()))] =  [0]                                    
                     >= [0]                                    
                     =  [0()]                                  
                                                               
     [half(s(s(x)))] =  [0]                                    
                     >= [0]                                    
                     =  [s(half(x))]                           
                                                               
      [lastbit(0())] =  [4]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
   [lastbit(s(0()))] =  [4]                                    
                     >  [0]                                    
                     =  [s(0())]                               
                                                               
  [lastbit(s(s(x)))] =  [4]                                    
                     >= [4]                                    
                     =  [lastbit(x)]                           
                                                               
         [conv(0())] =  [0]                                    
                     >= [0]                                    
                     =  [cons(nil(), 0())]                     
                                                               
        [conv(s(x))] =  [1] x + [0]                            
                     ?  [4]                                    
                     =  [cons(conv(half(s(x))), lastbit(s(x)))]
                                                               

Further, it can be verified that all rules not oriented are covered by the weightgap condition.

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

Strict Trs:
  { half(0()) -> 0()
  , half(s(0())) -> 0()
  , half(s(s(x))) -> s(half(x))
  , lastbit(s(s(x))) -> lastbit(x)
  , conv(0()) -> cons(nil(), 0())
  , conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) }
Weak Trs:
  { lastbit(0()) -> 0()
  , lastbit(s(0())) -> s(0()) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

The weightgap principle applies (using the following nonconstant
growth matrix-interpretation)

The following argument positions are usable:
  Uargs(s) = {1}, Uargs(conv) = {1}, Uargs(cons) = {1, 2}

TcT has computed the following matrix interpretation satisfying
not(EDA) and not(IDA(1)).

      [half](x1) = [0]                  
                                        
             [0] = [1]                  
                                        
         [s](x1) = [1] x1 + [1]         
                                        
   [lastbit](x1) = [1] x1 + [7]         
                                        
      [conv](x1) = [1] x1 + [0]         
                                        
  [cons](x1, x2) = [1] x1 + [1] x2 + [0]
                                        
           [nil] = [7]                  

The order satisfies the following ordering constraints:

         [half(0())] = [0]                                    
                     ? [1]                                    
                     = [0()]                                  
                                                              
      [half(s(0()))] = [0]                                    
                     ? [1]                                    
                     = [0()]                                  
                                                              
     [half(s(s(x)))] = [0]                                    
                     ? [1]                                    
                     = [s(half(x))]                           
                                                              
      [lastbit(0())] = [8]                                    
                     > [1]                                    
                     = [0()]                                  
                                                              
   [lastbit(s(0()))] = [9]                                    
                     > [2]                                    
                     = [s(0())]                               
                                                              
  [lastbit(s(s(x)))] = [1] x + [9]                            
                     > [1] x + [7]                            
                     = [lastbit(x)]                           
                                                              
         [conv(0())] = [1]                                    
                     ? [8]                                    
                     = [cons(nil(), 0())]                     
                                                              
        [conv(s(x))] = [1] x + [1]                            
                     ? [1] x + [8]                            
                     = [cons(conv(half(s(x))), lastbit(s(x)))]
                                                              

Further, it can be verified that all rules not oriented are covered by the weightgap condition.

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

Strict Trs:
  { half(0()) -> 0()
  , half(s(0())) -> 0()
  , half(s(s(x))) -> s(half(x))
  , conv(0()) -> cons(nil(), 0())
  , conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) }
Weak Trs:
  { lastbit(0()) -> 0()
  , lastbit(s(0())) -> s(0())
  , lastbit(s(s(x))) -> lastbit(x) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

The weightgap principle applies (using the following nonconstant
growth matrix-interpretation)

The following argument positions are usable:
  Uargs(s) = {1}, Uargs(conv) = {1}, Uargs(cons) = {1, 2}

TcT has computed the following matrix interpretation satisfying
not(EDA) and not(IDA(1)).

      [half](x1) = [1]                  
                                        
             [0] = [0]                  
                                        
         [s](x1) = [1] x1 + [0]         
                                        
   [lastbit](x1) = [7]                  
                                        
      [conv](x1) = [1] x1 + [0]         
                                        
  [cons](x1, x2) = [1] x1 + [1] x2 + [1]
                                        
           [nil] = [3]                  

The order satisfies the following ordering constraints:

         [half(0())] =  [1]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
      [half(s(0()))] =  [1]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
     [half(s(s(x)))] =  [1]                                    
                     >= [1]                                    
                     =  [s(half(x))]                           
                                                               
      [lastbit(0())] =  [7]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
   [lastbit(s(0()))] =  [7]                                    
                     >  [0]                                    
                     =  [s(0())]                               
                                                               
  [lastbit(s(s(x)))] =  [7]                                    
                     >= [7]                                    
                     =  [lastbit(x)]                           
                                                               
         [conv(0())] =  [0]                                    
                     ?  [4]                                    
                     =  [cons(nil(), 0())]                     
                                                               
        [conv(s(x))] =  [1] x + [0]                            
                     ?  [9]                                    
                     =  [cons(conv(half(s(x))), lastbit(s(x)))]
                                                               

Further, it can be verified that all rules not oriented are covered by the weightgap condition.

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

Strict Trs:
  { half(s(s(x))) -> s(half(x))
  , conv(0()) -> cons(nil(), 0())
  , conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) }
Weak Trs:
  { half(0()) -> 0()
  , half(s(0())) -> 0()
  , lastbit(0()) -> 0()
  , lastbit(s(0())) -> s(0())
  , lastbit(s(s(x))) -> lastbit(x) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

The weightgap principle applies (using the following nonconstant
growth matrix-interpretation)

The following argument positions are usable:
  Uargs(s) = {1}, Uargs(conv) = {1}, Uargs(cons) = {1, 2}

TcT has computed the following matrix interpretation satisfying
not(EDA) and not(IDA(1)).

      [half](x1) = [1] x1 + [1]         
                                        
             [0] = [0]                  
                                        
         [s](x1) = [1] x1 + [0]         
                                        
   [lastbit](x1) = [6]                  
                                        
      [conv](x1) = [1] x1 + [1]         
                                        
  [cons](x1, x2) = [1] x1 + [1] x2 + [0]
                                        
           [nil] = [0]                  

The order satisfies the following ordering constraints:

         [half(0())] =  [1]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
      [half(s(0()))] =  [1]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
     [half(s(s(x)))] =  [1] x + [1]                            
                     >= [1] x + [1]                            
                     =  [s(half(x))]                           
                                                               
      [lastbit(0())] =  [6]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
   [lastbit(s(0()))] =  [6]                                    
                     >  [0]                                    
                     =  [s(0())]                               
                                                               
  [lastbit(s(s(x)))] =  [6]                                    
                     >= [6]                                    
                     =  [lastbit(x)]                           
                                                               
         [conv(0())] =  [1]                                    
                     >  [0]                                    
                     =  [cons(nil(), 0())]                     
                                                               
        [conv(s(x))] =  [1] x + [1]                            
                     ?  [1] x + [8]                            
                     =  [cons(conv(half(s(x))), lastbit(s(x)))]
                                                               

Further, it can be verified that all rules not oriented are covered by the weightgap condition.

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

Strict Trs:
  { half(s(s(x))) -> s(half(x))
  , conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) }
Weak Trs:
  { half(0()) -> 0()
  , half(s(0())) -> 0()
  , lastbit(0()) -> 0()
  , lastbit(s(0())) -> s(0())
  , lastbit(s(s(x))) -> lastbit(x)
  , conv(0()) -> cons(nil(), 0()) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

The weightgap principle applies (using the following nonconstant
growth matrix-interpretation)

The following argument positions are usable:
  Uargs(s) = {1}, Uargs(conv) = {1}, Uargs(cons) = {1, 2}

TcT has computed the following matrix interpretation satisfying
not(EDA) and not(IDA(1)).

      [half](x1) = [1] x1 + [1]         
                                        
             [0] = [0]                  
                                        
         [s](x1) = [1] x1 + [4]         
                                        
   [lastbit](x1) = [6]                  
                                        
      [conv](x1) = [1] x1 + [1]         
                                        
  [cons](x1, x2) = [1] x1 + [1] x2 + [0]
                                        
           [nil] = [0]                  

The order satisfies the following ordering constraints:

         [half(0())] =  [1]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
      [half(s(0()))] =  [5]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
     [half(s(s(x)))] =  [1] x + [9]                            
                     >  [1] x + [5]                            
                     =  [s(half(x))]                           
                                                               
      [lastbit(0())] =  [6]                                    
                     >  [0]                                    
                     =  [0()]                                  
                                                               
   [lastbit(s(0()))] =  [6]                                    
                     >  [4]                                    
                     =  [s(0())]                               
                                                               
  [lastbit(s(s(x)))] =  [6]                                    
                     >= [6]                                    
                     =  [lastbit(x)]                           
                                                               
         [conv(0())] =  [1]                                    
                     >  [0]                                    
                     =  [cons(nil(), 0())]                     
                                                               
        [conv(s(x))] =  [1] x + [5]                            
                     ?  [1] x + [12]                           
                     =  [cons(conv(half(s(x))), lastbit(s(x)))]
                                                               

Further, it can be verified that all rules not oriented are covered by the weightgap condition.

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

Strict Trs: { conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) }
Weak Trs:
  { half(0()) -> 0()
  , half(s(0())) -> 0()
  , half(s(s(x))) -> s(half(x))
  , lastbit(0()) -> 0()
  , lastbit(s(0())) -> s(0())
  , lastbit(s(s(x))) -> lastbit(x)
  , conv(0()) -> cons(nil(), 0()) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

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

Trs: { conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) }

The induced complexity on above rules (modulo remaining rules) is
YES(?,O(n^1)) . These rules are moved into the corresponding weak
component(s).

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(s) = {1}, Uargs(conv) = {1}, Uargs(cons) = {1, 2}
  
  TcT has computed the following constructor-based matrix
  interpretation satisfying not(EDA) and not(IDA(1)).
  
        [half](x1) = [1 0] x1 + [0]           
                     [1 0]      [1]           
                                              
               [0] = [0]                      
                     [1]                      
                                              
           [s](x1) = [1 0] x1 + [2]           
                     [1 0]      [5]           
                                              
     [lastbit](x1) = [0 0] x1 + [2]           
                     [1 0]      [7]           
                                              
        [conv](x1) = [1 2] x1 + [0]           
                     [1 0]      [3]           
                                              
    [cons](x1, x2) = [1 0] x1 + [1 0] x2 + [1]
                     [0 0]      [0 0]      [0]
                                              
             [nil] = [1]                      
                     [0]                      
  
  The order satisfies the following ordering constraints:
  
           [half(0())] =  [0]                                    
                          [1]                                    
                       >= [0]                                    
                          [1]                                    
                       =  [0()]                                  
                                                                 
        [half(s(0()))] =  [2]                                    
                          [3]                                    
                       >  [0]                                    
                          [1]                                    
                       =  [0()]                                  
                                                                 
       [half(s(s(x)))] =  [1 0] x + [4]                          
                          [1 0]     [5]                          
                       >  [1 0] x + [2]                          
                          [1 0]     [5]                          
                       =  [s(half(x))]                           
                                                                 
        [lastbit(0())] =  [2]                                    
                          [7]                                    
                       >  [0]                                    
                          [1]                                    
                       =  [0()]                                  
                                                                 
     [lastbit(s(0()))] =  [2]                                    
                          [9]                                    
                       >= [2]                                    
                          [5]                                    
                       =  [s(0())]                               
                                                                 
    [lastbit(s(s(x)))] =  [0 0] x + [2]                          
                          [1 0]     [11]                         
                       >= [0 0] x + [2]                          
                          [1 0]     [7]                          
                       =  [lastbit(x)]                           
                                                                 
           [conv(0())] =  [2]                                    
                          [3]                                    
                       >= [2]                                    
                          [0]                                    
                       =  [cons(nil(), 0())]                     
                                                                 
          [conv(s(x))] =  [3 0] x + [12]                         
                          [1 0]     [5]                          
                       >  [3 0] x + [11]                         
                          [0 0]     [0]                          
                       =  [cons(conv(half(s(x))), lastbit(s(x)))]
                                                                 

We return to the main proof.

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

Weak Trs:
  { half(0()) -> 0()
  , half(s(0())) -> 0()
  , half(s(s(x))) -> s(half(x))
  , lastbit(0()) -> 0()
  , lastbit(s(0())) -> s(0())
  , lastbit(s(s(x))) -> lastbit(x)
  , conv(0()) -> cons(nil(), 0())
  , conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(1))

Empty rules are trivially bounded

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