*** 1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        conv(0()) -> cons(nil(),0())
        conv(s(x)) -> cons(conv(half(s(x))),lastbit(s(x)))
        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)
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {conv/1,half/1,lastbit/1} / {0/0,cons/2,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {conv,half,lastbit}/{0,cons,nil,s}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      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) = {1,2},
          uargs(conv) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [8]                   
             p(cons) = [1] x1 + [1] x2 + [10]
             p(conv) = [1] x1 + [8]          
             p(half) = [1] x1 + [12]         
          p(lastbit) = [0]                   
              p(nil) = [8]                   
                p(s) = [1] x1 + [0]          
        
        Following rules are strictly oriented:
           half(0()) = [20]
                     > [8] 
                     = 0() 
        
        half(s(0())) = [20]
                     > [8] 
                     = 0() 
        
        
        Following rules are (at-least) weakly oriented:
               conv(0()) =  [16]                 
                         >= [26]                 
                         =  cons(nil(),0())      
        
              conv(s(x)) =  [1] x + [8]          
                         >= [1] x + [30]         
                         =  cons(conv(half(s(x)))
                                ,lastbit(s(x)))  
        
           half(s(s(x))) =  [1] x + [12]         
                         >= [1] x + [12]         
                         =  s(half(x))           
        
            lastbit(0()) =  [0]                  
                         >= [8]                  
                         =  0()                  
        
         lastbit(s(0())) =  [0]                  
                         >= [8]                  
                         =  s(0())               
        
        lastbit(s(s(x))) =  [0]                  
                         >= [0]                  
                         =  lastbit(x)           
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        conv(0()) -> cons(nil(),0())
        conv(s(x)) -> cons(conv(half(s(x))),lastbit(s(x)))
        half(s(s(x))) -> s(half(x))
        lastbit(0()) -> 0()
        lastbit(s(0())) -> s(0())
        lastbit(s(s(x))) -> lastbit(x)
      Weak DP Rules:
        
      Weak TRS Rules:
        half(0()) -> 0()
        half(s(0())) -> 0()
      Signature:
        {conv/1,half/1,lastbit/1} / {0/0,cons/2,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {conv,half,lastbit}/{0,cons,nil,s}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      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) = {1,2},
          uargs(conv) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [0]                  
             p(cons) = [1] x1 + [1] x2 + [0]
             p(conv) = [1] x1 + [12]        
             p(half) = [0]                  
          p(lastbit) = [1] x1 + [10]        
              p(nil) = [2]                  
                p(s) = [1] x1 + [8]         
        
        Following rules are strictly oriented:
               conv(0()) = [12]           
                         > [2]            
                         = cons(nil(),0())
        
            lastbit(0()) = [10]           
                         > [0]            
                         = 0()            
        
         lastbit(s(0())) = [18]           
                         > [8]            
                         = s(0())         
        
        lastbit(s(s(x))) = [1] x + [26]   
                         > [1] x + [10]   
                         = lastbit(x)     
        
        
        Following rules are (at-least) weakly oriented:
           conv(s(x)) =  [1] x + [20]         
                      >= [1] x + [30]         
                      =  cons(conv(half(s(x)))
                             ,lastbit(s(x)))  
        
            half(0()) =  [0]                  
                      >= [0]                  
                      =  0()                  
        
         half(s(0())) =  [0]                  
                      >= [0]                  
                      =  0()                  
        
        half(s(s(x))) =  [0]                  
                      >= [8]                  
                      =  s(half(x))           
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        conv(s(x)) -> cons(conv(half(s(x))),lastbit(s(x)))
        half(s(s(x))) -> s(half(x))
      Weak DP Rules:
        
      Weak TRS Rules:
        conv(0()) -> cons(nil(),0())
        half(0()) -> 0()
        half(s(0())) -> 0()
        lastbit(0()) -> 0()
        lastbit(s(0())) -> s(0())
        lastbit(s(s(x))) -> lastbit(x)
      Signature:
        {conv/1,half/1,lastbit/1} / {0/0,cons/2,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {conv,half,lastbit}/{0,cons,nil,s}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      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) = {1,2},
          uargs(conv) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [0]                  
             p(cons) = [1] x1 + [1] x2 + [1]
             p(conv) = [1] x1 + [5]         
             p(half) = [1] x1 + [0]         
          p(lastbit) = [9]                  
              p(nil) = [3]                  
                p(s) = [1] x1 + [8]         
        
        Following rules are strictly oriented:
        half(s(s(x))) = [1] x + [16]
                      > [1] x + [8] 
                      = s(half(x))  
        
        
        Following rules are (at-least) weakly oriented:
               conv(0()) =  [5]                  
                         >= [4]                  
                         =  cons(nil(),0())      
        
              conv(s(x)) =  [1] x + [13]         
                         >= [1] x + [23]         
                         =  cons(conv(half(s(x)))
                                ,lastbit(s(x)))  
        
               half(0()) =  [0]                  
                         >= [0]                  
                         =  0()                  
        
            half(s(0())) =  [8]                  
                         >= [0]                  
                         =  0()                  
        
            lastbit(0()) =  [9]                  
                         >= [0]                  
                         =  0()                  
        
         lastbit(s(0())) =  [9]                  
                         >= [8]                  
                         =  s(0())               
        
        lastbit(s(s(x))) =  [9]                  
                         >= [9]                  
                         =  lastbit(x)           
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        conv(s(x)) -> cons(conv(half(s(x))),lastbit(s(x)))
      Weak DP Rules:
        
      Weak TRS Rules:
        conv(0()) -> cons(nil(),0())
        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)
      Signature:
        {conv/1,half/1,lastbit/1} / {0/0,cons/2,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {conv,half,lastbit}/{0,cons,nil,s}
    Applied Processor:
      NaturalMI {miDimension = 4, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy}
    Proof:
      We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 3 non-zero interpretation-entries in the diagonal of the component-wise maxima):
      The following argument positions are considered usable:
        uargs(cons) = {1,2},
        uargs(conv) = {1},
        uargs(s) = {1}
      
      Following symbols are considered usable:
        {conv,half,lastbit}
      TcT has computed the following interpretation:
              p(0) = [0]                  
                     [0]                  
                     [0]                  
                     [0]                  
           p(cons) = [1 0 0 0]      [1 0 0
                     0]      [0]          
                     [0 0 0 1] x1 + [0 0 1
                     0] x2 + [0]          
                     [0 0 0 0]      [0 0 0
                     0]      [0]          
                     [0 0 0 0]      [0 0 0
                     0]      [0]          
           p(conv) = [1 1 0 0]      [0]   
                     [1 0 1 0] x1 + [1]   
                     [0 0 0 0]      [0]   
                     [0 0 1 0]      [0]   
           p(half) = [0 0 0 0]      [0]   
                     [1 0 1 0] x1 + [0]   
                     [0 0 0 1]      [0]   
                     [0 0 0 1]      [0]   
        p(lastbit) = [0 0 0 0]      [0]   
                     [0 0 0 0] x1 + [1]   
                     [1 0 0 0]      [0]   
                     [0 0 0 0]      [1]   
            p(nil) = [0]                  
                     [0]                  
                     [0]                  
                     [1]                  
              p(s) = [1 0 0 0]      [0]   
                     [0 0 0 1] x1 + [1]   
                     [0 0 0 1]      [0]   
                     [0 0 0 1]      [1]   
      
      Following rules are strictly oriented:
      conv(s(x)) = [1 0 0 1]     [1]    
                   [1 0 0 1] x + [1]    
                   [0 0 0 0]     [0]    
                   [0 0 0 1]     [0]    
                 > [1 0 0 1]     [0]    
                   [1 0 0 1] x + [1]    
                   [0 0 0 0]     [0]    
                   [0 0 0 0]     [0]    
                 = cons(conv(half(s(x)))
                       ,lastbit(s(x)))  
      
      
      Following rules are (at-least) weakly oriented:
             conv(0()) =  [0]              
                          [1]              
                          [0]              
                          [0]              
                       >= [0]              
                          [1]              
                          [0]              
                          [0]              
                       =  cons(nil(),0())  
      
             half(0()) =  [0]              
                          [0]              
                          [0]              
                          [0]              
                       >= [0]              
                          [0]              
                          [0]              
                          [0]              
                       =  0()              
      
          half(s(0())) =  [0]              
                          [0]              
                          [1]              
                          [1]              
                       >= [0]              
                          [0]              
                          [0]              
                          [0]              
                       =  0()              
      
         half(s(s(x))) =  [0 0 0 0]     [0]
                          [1 0 0 1] x + [1]
                          [0 0 0 1]     [2]
                          [0 0 0 1]     [2]
                       >= [0 0 0 0]     [0]
                          [0 0 0 1] x + [1]
                          [0 0 0 1]     [0]
                          [0 0 0 1]     [1]
                       =  s(half(x))       
      
          lastbit(0()) =  [0]              
                          [1]              
                          [0]              
                          [1]              
                       >= [0]              
                          [0]              
                          [0]              
                          [0]              
                       =  0()              
      
       lastbit(s(0())) =  [0]              
                          [1]              
                          [0]              
                          [1]              
                       >= [0]              
                          [1]              
                          [0]              
                          [1]              
                       =  s(0())           
      
      lastbit(s(s(x))) =  [0 0 0 0]     [0]
                          [0 0 0 0] x + [1]
                          [1 0 0 0]     [0]
                          [0 0 0 0]     [1]
                       >= [0 0 0 0]     [0]
                          [0 0 0 0] x + [1]
                          [1 0 0 0]     [0]
                          [0 0 0 0]     [1]
                       =  lastbit(x)       
      
*** 1.1.1.1.1 Progress [(O(1),O(1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        conv(0()) -> cons(nil(),0())
        conv(s(x)) -> cons(conv(half(s(x))),lastbit(s(x)))
        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)
      Signature:
        {conv/1,half/1,lastbit/1} / {0/0,cons/2,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {conv,half,lastbit}/{0,cons,nil,s}
    Applied Processor:
      EmptyProcessor
    Proof:
      The problem is already closed. The intended complexity is O(1).