*** 1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
        top(sent(x)) -> top(check(rest(x)))
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
      Obligation:
        Full
        basic terms: {check,rest,top}/{cons,nil,sent}
    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:
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
          p(check) = [1] x1 + [0]         
           p(cons) = [1] x1 + [1] x2 + [5]
            p(nil) = [0]                  
           p(rest) = [1] x1 + [0]         
           p(sent) = [1] x1 + [5]         
            p(top) = [1] x1 + [0]         
        
        Following rules are strictly oriented:
        top(sent(x)) = [1] x + [5]        
                     > [1] x + [0]        
                     = top(check(rest(x)))
        
        
        Following rules are (at-least) weakly oriented:
        check(cons(x,y)) =  [1] x + [1] y + [5]
                         >= [1] x + [1] y + [5]
                         =  cons(x,y)          
        
        check(cons(x,y)) =  [1] x + [1] y + [5]
                         >= [1] x + [1] y + [5]
                         =  cons(x,check(y))   
        
        check(cons(x,y)) =  [1] x + [1] y + [5]
                         >= [1] x + [1] y + [5]
                         =  cons(check(x),y)   
        
          check(rest(x)) =  [1] x + [0]        
                         >= [1] x + [0]        
                         =  rest(check(x))     
        
          check(sent(x)) =  [1] x + [5]        
                         >= [1] x + [5]        
                         =  sent(check(x))     
        
         rest(cons(x,y)) =  [1] x + [1] y + [5]
                         >= [1] y + [5]        
                         =  sent(y)            
        
             rest(nil()) =  [0]                
                         >= [5]                
                         =  sent(nil())        
        
      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:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
      Weak DP Rules:
        
      Weak TRS Rules:
        top(sent(x)) -> top(check(rest(x)))
      Signature:
        {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
      Obligation:
        Full
        basic terms: {check,rest,top}/{cons,nil,sent}
    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:
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
          p(check) = [1] x1 + [0]         
           p(cons) = [1] x1 + [1] x2 + [1]
            p(nil) = [9]                  
           p(rest) = [1] x1 + [0]         
           p(sent) = [1] x1 + [0]         
            p(top) = [1] x1 + [0]         
        
        Following rules are strictly oriented:
        rest(cons(x,y)) = [1] x + [1] y + [1]
                        > [1] y + [0]        
                        = sent(y)            
        
        
        Following rules are (at-least) weakly oriented:
        check(cons(x,y)) =  [1] x + [1] y + [1]
                         >= [1] x + [1] y + [1]
                         =  cons(x,y)          
        
        check(cons(x,y)) =  [1] x + [1] y + [1]
                         >= [1] x + [1] y + [1]
                         =  cons(x,check(y))   
        
        check(cons(x,y)) =  [1] x + [1] y + [1]
                         >= [1] x + [1] y + [1]
                         =  cons(check(x),y)   
        
          check(rest(x)) =  [1] x + [0]        
                         >= [1] x + [0]        
                         =  rest(check(x))     
        
          check(sent(x)) =  [1] x + [0]        
                         >= [1] x + [0]        
                         =  sent(check(x))     
        
             rest(nil()) =  [9]                
                         >= [9]                
                         =  sent(nil())        
        
            top(sent(x)) =  [1] x + [0]        
                         >= [1] x + [0]        
                         =  top(check(rest(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:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(nil()) -> sent(nil())
      Weak DP Rules:
        
      Weak TRS Rules:
        rest(cons(x,y)) -> sent(y)
        top(sent(x)) -> top(check(rest(x)))
      Signature:
        {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
      Obligation:
        Full
        basic terms: {check,rest,top}/{cons,nil,sent}
    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:
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
          p(check) = [1] x1 + [8]         
           p(cons) = [1] x1 + [1] x2 + [8]
            p(nil) = [1]                  
           p(rest) = [1] x1 + [0]         
           p(sent) = [1] x1 + [8]         
            p(top) = [1] x1 + [8]         
        
        Following rules are strictly oriented:
        check(cons(x,y)) = [1] x + [1] y + [16]
                         > [1] x + [1] y + [8] 
                         = cons(x,y)           
        
        
        Following rules are (at-least) weakly oriented:
        check(cons(x,y)) =  [1] x + [1] y + [16]
                         >= [1] x + [1] y + [16]
                         =  cons(x,check(y))    
        
        check(cons(x,y)) =  [1] x + [1] y + [16]
                         >= [1] x + [1] y + [16]
                         =  cons(check(x),y)    
        
          check(rest(x)) =  [1] x + [8]         
                         >= [1] x + [8]         
                         =  rest(check(x))      
        
          check(sent(x)) =  [1] x + [16]        
                         >= [1] x + [16]        
                         =  sent(check(x))      
        
         rest(cons(x,y)) =  [1] x + [1] y + [8] 
                         >= [1] y + [8]         
                         =  sent(y)             
        
             rest(nil()) =  [1]                 
                         >= [9]                 
                         =  sent(nil())         
        
            top(sent(x)) =  [1] x + [16]        
                         >= [1] x + [16]        
                         =  top(check(rest(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:
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(nil()) -> sent(nil())
      Weak DP Rules:
        
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        rest(cons(x,y)) -> sent(y)
        top(sent(x)) -> top(check(rest(x)))
      Signature:
        {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
      Obligation:
        Full
        basic terms: {check,rest,top}/{cons,nil,sent}
    Applied Processor:
      NaturalMI {miDimension = 2, miDegree = 2, 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:
      
      Following symbols are considered usable:
        {}
      TcT has computed the following interpretation:
        p(check) = [1 1] x1 + [0]           
                   [0 1]      [0]           
         p(cons) = [1 0] x1 + [1 4] x2 + [4]
                   [0 1]      [0 1]      [1]
          p(nil) = [0]                      
                   [0]                      
         p(rest) = [1 0] x1 + [0]           
                   [0 2]      [0]           
         p(sent) = [1 2] x1 + [0]           
                   [0 1]      [0]           
          p(top) = [4 0] x1 + [0]           
                   [4 0]      [2]           
      
      Following rules are strictly oriented:
      check(cons(x,y)) = [1 1] x + [1 5] y + [5]
                         [0 1]     [0 1]     [1]
                       > [1 0] x + [1 5] y + [4]
                         [0 1]     [0 1]     [1]
                       = cons(x,check(y))       
      
      check(cons(x,y)) = [1 1] x + [1 5] y + [5]
                         [0 1]     [0 1]     [1]
                       > [1 1] x + [1 4] y + [4]
                         [0 1]     [0 1]     [1]
                       = cons(check(x),y)       
      
      
      Following rules are (at-least) weakly oriented:
      check(cons(x,y)) =  [1 1] x + [1 5] y + [5]
                          [0 1]     [0 1]     [1]
                       >= [1 0] x + [1 4] y + [4]
                          [0 1]     [0 1]     [1]
                       =  cons(x,y)              
      
        check(rest(x)) =  [1 2] x + [0]          
                          [0 2]     [0]          
                       >= [1 1] x + [0]          
                          [0 2]     [0]          
                       =  rest(check(x))         
      
        check(sent(x)) =  [1 3] x + [0]          
                          [0 1]     [0]          
                       >= [1 3] x + [0]          
                          [0 1]     [0]          
                       =  sent(check(x))         
      
       rest(cons(x,y)) =  [1 0] x + [1 4] y + [4]
                          [0 2]     [0 2]     [2]
                       >= [1 2] y + [0]          
                          [0 1]     [0]          
                       =  sent(y)                
      
           rest(nil()) =  [0]                    
                          [0]                    
                       >= [0]                    
                          [0]                    
                       =  sent(nil())            
      
          top(sent(x)) =  [4 8] x + [0]          
                          [4 8]     [2]          
                       >= [4 8] x + [0]          
                          [4 8]     [2]          
                       =  top(check(rest(x)))    
      
*** 1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(nil()) -> sent(nil())
      Weak DP Rules:
        
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        rest(cons(x,y)) -> sent(y)
        top(sent(x)) -> top(check(rest(x)))
      Signature:
        {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
      Obligation:
        Full
        basic terms: {check,rest,top}/{cons,nil,sent}
    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):
      
      Following symbols are considered usable:
        {}
      TcT has computed the following interpretation:
        p(check) = [1 0 0 0]      [0]   
                   [0 0 1 0] x1 + [0]   
                   [0 1 0 0]      [0]   
                   [0 0 0 0]      [0]   
         p(cons) = [1 0 0 1]      [1 1 1
                   0]      [1]          
                   [0 0 0 0] x1 + [0 0 0
                   1] x2 + [0]          
                   [0 0 0 0]      [0 0 0
                   1]      [0]          
                   [0 0 0 0]      [0 0 0
                   0]      [0]          
          p(nil) = [0]                  
                   [0]                  
                   [0]                  
                   [1]                  
         p(rest) = [1 0 0 1]      [0]   
                   [0 1 0 1] x1 + [0]   
                   [0 0 1 0]      [0]   
                   [0 0 0 0]      [0]   
         p(sent) = [1 1 1 0]      [0]   
                   [0 0 0 1] x1 + [0]   
                   [0 0 0 0]      [0]   
                   [0 0 0 0]      [0]   
          p(top) = [1 1 0 0]      [0]   
                   [0 0 0 0] x1 + [0]   
                   [0 0 0 0]      [0]   
                   [1 1 0 0]      [0]   
      
      Following rules are strictly oriented:
      rest(nil()) = [1]        
                    [1]        
                    [0]        
                    [0]        
                  > [0]        
                    [1]        
                    [0]        
                    [0]        
                  = sent(nil())
      
      
      Following rules are (at-least) weakly oriented:
      check(cons(x,y)) =  [1 0 0 1]     [1 1 1 0]     [1]
                          [0 0 0 0] x + [0 0 0 1] y + [0]
                          [0 0 0 0]     [0 0 0 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 0 1]     [1 1 1 0]     [1]
                          [0 0 0 0] x + [0 0 0 1] y + [0]
                          [0 0 0 0]     [0 0 0 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       =  cons(x,y)                      
      
      check(cons(x,y)) =  [1 0 0 1]     [1 1 1 0]     [1]
                          [0 0 0 0] x + [0 0 0 1] y + [0]
                          [0 0 0 0]     [0 0 0 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 0 1]     [1 1 1 0]     [1]
                          [0 0 0 0] x + [0 0 0 0] y + [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       =  cons(x,check(y))               
      
      check(cons(x,y)) =  [1 0 0 1]     [1 1 1 0]     [1]
                          [0 0 0 0] x + [0 0 0 1] y + [0]
                          [0 0 0 0]     [0 0 0 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 0 0]     [1 1 1 0]     [1]
                          [0 0 0 0] x + [0 0 0 1] y + [0]
                          [0 0 0 0]     [0 0 0 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       =  cons(check(x),y)               
      
        check(rest(x)) =  [1 0 0 1]     [0]              
                          [0 0 1 0] x + [0]              
                          [0 1 0 1]     [0]              
                          [0 0 0 0]     [0]              
                       >= [1 0 0 0]     [0]              
                          [0 0 1 0] x + [0]              
                          [0 1 0 0]     [0]              
                          [0 0 0 0]     [0]              
                       =  rest(check(x))                 
      
        check(sent(x)) =  [1 1 1 0]     [0]              
                          [0 0 0 0] x + [0]              
                          [0 0 0 1]     [0]              
                          [0 0 0 0]     [0]              
                       >= [1 1 1 0]     [0]              
                          [0 0 0 0] x + [0]              
                          [0 0 0 0]     [0]              
                          [0 0 0 0]     [0]              
                       =  sent(check(x))                 
      
       rest(cons(x,y)) =  [1 0 0 1]     [1 1 1 0]     [1]
                          [0 0 0 0] x + [0 0 0 1] y + [0]
                          [0 0 0 0]     [0 0 0 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 1 1 0]     [0]              
                          [0 0 0 1] y + [0]              
                          [0 0 0 0]     [0]              
                          [0 0 0 0]     [0]              
                       =  sent(y)                        
      
          top(sent(x)) =  [1 1 1 1]     [0]              
                          [0 0 0 0] x + [0]              
                          [0 0 0 0]     [0]              
                          [1 1 1 1]     [0]              
                       >= [1 0 1 1]     [0]              
                          [0 0 0 0] x + [0]              
                          [0 0 0 0]     [0]              
                          [1 0 1 1]     [0]              
                       =  top(check(rest(x)))            
      
*** 1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
      Weak DP Rules:
        
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
        top(sent(x)) -> top(check(rest(x)))
      Signature:
        {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
      Obligation:
        Full
        basic terms: {check,rest,top}/{cons,nil,sent}
    Applied Processor:
      NaturalMI {miDimension = 4, miDegree = 4, 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:
      
      Following symbols are considered usable:
        {}
      TcT has computed the following interpretation:
        p(check) = [1 0 1 0]      [0]   
                   [0 0 1 0] x1 + [0]   
                   [0 0 1 0]      [0]   
                   [0 0 0 0]      [0]   
         p(cons) = [1 0 1 0]      [1 0 1
                   1]      [0]          
                   [0 0 0 0] x1 + [0 0 1
                   1] x2 + [1]          
                   [0 0 1 0]      [0 0 1
                   1]      [1]          
                   [0 0 0 0]      [0 0 0
                   0]      [0]          
          p(nil) = [1]                  
                   [1]                  
                   [0]                  
                   [1]                  
         p(rest) = [1 0 0 0]      [1]   
                   [0 1 0 1] x1 + [0]   
                   [0 0 1 1]      [0]   
                   [0 0 0 0]      [0]   
         p(sent) = [1 0 1 1]      [0]   
                   [0 0 1 1] x1 + [1]   
                   [0 0 1 0]      [1]   
                   [0 0 0 0]      [0]   
          p(top) = [1 1 0 0]      [1]   
                   [0 0 0 0] x1 + [0]   
                   [0 0 0 0]      [0]   
                   [1 1 0 0]      [1]   
      
      Following rules are strictly oriented:
      check(sent(x)) = [1 0 2 1]     [1]
                       [0 0 1 0] x + [1]
                       [0 0 1 0]     [1]
                       [0 0 0 0]     [0]
                     > [1 0 2 0]     [0]
                       [0 0 1 0] x + [1]
                       [0 0 1 0]     [1]
                       [0 0 0 0]     [0]
                     = sent(check(x))   
      
      
      Following rules are (at-least) weakly oriented:
      check(cons(x,y)) =  [1 0 2 0]     [1 0 2 2]     [1]
                          [0 0 1 0] x + [0 0 1 1] y + [1]
                          [0 0 1 0]     [0 0 1 1]     [1]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 1 0]     [1 0 1 1]     [0]
                          [0 0 0 0] x + [0 0 1 1] y + [1]
                          [0 0 1 0]     [0 0 1 1]     [1]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       =  cons(x,y)                      
      
      check(cons(x,y)) =  [1 0 2 0]     [1 0 2 2]     [1]
                          [0 0 1 0] x + [0 0 1 1] y + [1]
                          [0 0 1 0]     [0 0 1 1]     [1]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 1 0]     [1 0 2 0]     [0]
                          [0 0 0 0] x + [0 0 1 0] y + [1]
                          [0 0 1 0]     [0 0 1 0]     [1]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       =  cons(x,check(y))               
      
      check(cons(x,y)) =  [1 0 2 0]     [1 0 2 2]     [1]
                          [0 0 1 0] x + [0 0 1 1] y + [1]
                          [0 0 1 0]     [0 0 1 1]     [1]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 2 0]     [1 0 1 1]     [0]
                          [0 0 0 0] x + [0 0 1 1] y + [1]
                          [0 0 1 0]     [0 0 1 1]     [1]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       =  cons(check(x),y)               
      
        check(rest(x)) =  [1 0 1 1]     [1]              
                          [0 0 1 1] x + [0]              
                          [0 0 1 1]     [0]              
                          [0 0 0 0]     [0]              
                       >= [1 0 1 0]     [1]              
                          [0 0 1 0] x + [0]              
                          [0 0 1 0]     [0]              
                          [0 0 0 0]     [0]              
                       =  rest(check(x))                 
      
       rest(cons(x,y)) =  [1 0 1 0]     [1 0 1 1]     [1]
                          [0 0 0 0] x + [0 0 1 1] y + [1]
                          [0 0 1 0]     [0 0 1 1]     [1]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 1 1]     [0]              
                          [0 0 1 1] y + [1]              
                          [0 0 1 0]     [1]              
                          [0 0 0 0]     [0]              
                       =  sent(y)                        
      
           rest(nil()) =  [2]                            
                          [2]                            
                          [1]                            
                          [0]                            
                       >= [2]                            
                          [2]                            
                          [1]                            
                          [0]                            
                       =  sent(nil())                    
      
          top(sent(x)) =  [1 0 2 2]     [2]              
                          [0 0 0 0] x + [0]              
                          [0 0 0 0]     [0]              
                          [1 0 2 2]     [2]              
                       >= [1 0 2 2]     [2]              
                          [0 0 0 0] x + [0]              
                          [0 0 0 0]     [0]              
                          [1 0 2 2]     [2]              
                       =  top(check(rest(x)))            
      
*** 1.1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        check(rest(x)) -> rest(check(x))
      Weak DP Rules:
        
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
        top(sent(x)) -> top(check(rest(x)))
      Signature:
        {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
      Obligation:
        Full
        basic terms: {check,rest,top}/{cons,nil,sent}
    Applied Processor:
      NaturalMI {miDimension = 4, miDegree = 4, 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:
      
      Following symbols are considered usable:
        {}
      TcT has computed the following interpretation:
        p(check) = [1 0 1 0]      [0]   
                   [0 0 1 0] x1 + [0]   
                   [0 0 1 0]      [0]   
                   [0 0 0 0]      [0]   
         p(cons) = [1 0 0 0]      [1 0 1
                   0]      [1]          
                   [0 0 0 0] x1 + [0 0 1
                   1] x2 + [0]          
                   [0 0 1 0]      [0 0 1
                   1]      [0]          
                   [0 0 0 0]      [0 0 0
                   0]      [0]          
          p(nil) = [0]                  
                   [0]                  
                   [0]                  
                   [1]                  
         p(rest) = [1 0 0 1]      [0]   
                   [0 1 0 1] x1 + [1]   
                   [0 0 1 0]      [1]   
                   [0 0 0 0]      [0]   
         p(sent) = [1 0 1 0]      [1]   
                   [0 0 1 1] x1 + [1]   
                   [0 0 1 0]      [1]   
                   [0 0 0 0]      [0]   
          p(top) = [1 1 0 0]      [1]   
                   [0 0 0 0] x1 + [1]   
                   [0 0 1 0]      [0]   
                   [0 1 1 0]      [1]   
      
      Following rules are strictly oriented:
      check(rest(x)) = [1 0 1 1]     [1]
                       [0 0 1 0] x + [1]
                       [0 0 1 0]     [1]
                       [0 0 0 0]     [0]
                     > [1 0 1 0]     [0]
                       [0 0 1 0] x + [1]
                       [0 0 1 0]     [1]
                       [0 0 0 0]     [0]
                     = rest(check(x))   
      
      
      Following rules are (at-least) weakly oriented:
      check(cons(x,y)) =  [1 0 1 0]     [1 0 2 1]     [1]
                          [0 0 1 0] x + [0 0 1 1] y + [0]
                          [0 0 1 0]     [0 0 1 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 0 0]     [1 0 1 0]     [1]
                          [0 0 0 0] x + [0 0 1 1] y + [0]
                          [0 0 1 0]     [0 0 1 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       =  cons(x,y)                      
      
      check(cons(x,y)) =  [1 0 1 0]     [1 0 2 1]     [1]
                          [0 0 1 0] x + [0 0 1 1] y + [0]
                          [0 0 1 0]     [0 0 1 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 0 0]     [1 0 2 0]     [1]
                          [0 0 0 0] x + [0 0 1 0] y + [0]
                          [0 0 1 0]     [0 0 1 0]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       =  cons(x,check(y))               
      
      check(cons(x,y)) =  [1 0 1 0]     [1 0 2 1]     [1]
                          [0 0 1 0] x + [0 0 1 1] y + [0]
                          [0 0 1 0]     [0 0 1 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 1 0]     [1 0 1 0]     [1]
                          [0 0 0 0] x + [0 0 1 1] y + [0]
                          [0 0 1 0]     [0 0 1 1]     [0]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       =  cons(check(x),y)               
      
        check(sent(x)) =  [1 0 2 0]     [2]              
                          [0 0 1 0] x + [1]              
                          [0 0 1 0]     [1]              
                          [0 0 0 0]     [0]              
                       >= [1 0 2 0]     [1]              
                          [0 0 1 0] x + [1]              
                          [0 0 1 0]     [1]              
                          [0 0 0 0]     [0]              
                       =  sent(check(x))                 
      
       rest(cons(x,y)) =  [1 0 0 0]     [1 0 1 0]     [1]
                          [0 0 0 0] x + [0 0 1 1] y + [1]
                          [0 0 1 0]     [0 0 1 1]     [1]
                          [0 0 0 0]     [0 0 0 0]     [0]
                       >= [1 0 1 0]     [1]              
                          [0 0 1 1] y + [1]              
                          [0 0 1 0]     [1]              
                          [0 0 0 0]     [0]              
                       =  sent(y)                        
      
           rest(nil()) =  [1]                            
                          [2]                            
                          [1]                            
                          [0]                            
                       >= [1]                            
                          [2]                            
                          [1]                            
                          [0]                            
                       =  sent(nil())                    
      
          top(sent(x)) =  [1 0 2 1]     [3]              
                          [0 0 0 0] x + [1]              
                          [0 0 1 0]     [1]              
                          [0 0 2 1]     [3]              
                       >= [1 0 2 1]     [3]              
                          [0 0 0 0] x + [1]              
                          [0 0 1 0]     [1]              
                          [0 0 2 0]     [3]              
                       =  top(check(rest(x)))            
      
*** 1.1.1.1.1.1.1.1 Progress [(O(1),O(1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
        top(sent(x)) -> top(check(rest(x)))
      Signature:
        {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
      Obligation:
        Full
        basic terms: {check,rest,top}/{cons,nil,sent}
    Applied Processor:
      EmptyProcessor
    Proof:
      The problem is already closed. The intended complexity is O(1).