* Step 1: Sum WORST_CASE(Omega(n^1),O(n^2))
    + Considered Problem:
        - Strict TRS:
            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:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        Sum {left = someStrategy, right = someStrategy}
    + Details:
        ()
** Step 1.a:1: DecreasingLoops WORST_CASE(Omega(n^1),?)
    + Considered Problem:
        - Strict TRS:
            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:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        DecreasingLoops {bound = AnyLoop, narrow = 10}
    + Details:
        The system has following decreasing Loops:
          check(y){y -> cons(x,y)} =
            check(cons(x,y)) ->^+ cons(x,check(y))
              = C[check(y) = check(y){}]

** Step 1.b:1: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            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:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          
          Following symbols are considered usable:
            all
          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.
** Step 1.b:2: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            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 TRS:
            top(sent(x)) -> top(check(rest(x)))
        - Signature:
            {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          
          Following symbols are considered usable:
            all
          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.
** Step 1.b:3: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            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 TRS:
            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:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          
          Following symbols are considered usable:
            all
          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.
** Step 1.b:4: MI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            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 TRS:
            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:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity Nothing)), miDimension = 2, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity Nothing)):
        
        
        Following symbols are considered usable:
          {check,rest,top}
        TcT has computed the following interpretation:
          p(check) = [1 1] x_1 + [0]            
                     [0 1]       [0]            
           p(cons) = [1 0] x_1 + [1 3] x_2 + [0]
                     [0 1]       [0 1]       [1]
            p(nil) = [0]                        
                     [0]                        
           p(rest) = [1 0] x_1 + [0]            
                     [0 2]       [0]            
           p(sent) = [1 2] x_1 + [0]            
                     [0 1]       [0]            
            p(top) = [4 0] x_1 + [6]            
                     [0 0]       [0]            
        
        Following rules are strictly oriented:
        check(cons(x,y)) = [1 1] x + [1 4] y + [1]
                           [0 1]     [0 1]     [1]
                         > [1 0] x + [1 4] y + [0]
                           [0 1]     [0 1]     [1]
                         = cons(x,check(y))       
        
        check(cons(x,y)) = [1 1] x + [1 4] y + [1]
                           [0 1]     [0 1]     [1]
                         > [1 1] x + [1 3] y + [0]
                           [0 1]     [0 1]     [1]
                         = cons(check(x),y)       
        
        
        Following rules are (at-least) weakly oriented:
        check(cons(x,y)) =  [1 1] x + [1 4] y + [1]
                            [0 1]     [0 1]     [1]
                         >= [1 0] x + [1 3] y + [0]
                            [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 3] y + [0]
                            [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 + [6]          
                            [0 0]     [0]          
                         >= [4 8] x + [6]          
                            [0 0]     [0]          
                         =  top(check(rest(x)))    
        
** Step 1.b:5: MI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            check(rest(x)) -> rest(check(x))
            check(sent(x)) -> sent(check(x))
            rest(nil()) -> sent(nil())
        - Weak TRS:
            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:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity (Just 3))), miDimension = 4, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity (Just 3))):
        
        
        Following symbols are considered usable:
          {check,rest,top}
        TcT has computed the following interpretation:
          p(check) = [1 0 0 0]       [0]                
                     [0 1 0 0] x_1 + [0]                
                     [0 1 0 0]       [0]                
                     [0 0 0 0]       [0]                
           p(cons) = [1 2 0 1]       [1 2 0 0]       [0]
                     [0 1 0 0] x_1 + [0 0 0 1] x_2 + [0]
                     [0 0 0 0]       [0 0 0 1]       [0]
                     [0 0 0 0]       [0 0 0 0]       [0]
            p(nil) = [2]                                
                     [0]                                
                     [2]                                
                     [2]                                
           p(rest) = [1 0 0 2]       [0]                
                     [0 2 0 0] x_1 + [0]                
                     [0 0 2 0]       [0]                
                     [0 0 0 0]       [0]                
           p(sent) = [1 2 0 0]       [0]                
                     [0 0 0 0] x_1 + [0]                
                     [0 0 0 2]       [0]                
                     [0 0 0 0]       [0]                
            p(top) = [2 0 2 0]       [0]                
                     [0 0 0 0] x_1 + [0]                
                     [2 0 2 1]       [0]                
                     [1 0 1 0]       [0]                
        
        Following rules are strictly oriented:
        rest(nil()) = [6]        
                      [0]        
                      [4]        
                      [0]        
                    > [2]        
                      [0]        
                      [4]        
                      [0]        
                    = sent(nil())
        
        
        Following rules are (at-least) weakly oriented:
        check(cons(x,y)) =  [1 2 0 1]     [1 2 0 0]     [0]
                            [0 1 0 0] x + [0 0 0 1] y + [0]
                            [0 1 0 0]     [0 0 0 1]     [0]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 2 0 1]     [1 2 0 0]     [0]
                            [0 1 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 2 0 1]     [1 2 0 0]     [0]
                            [0 1 0 0] x + [0 0 0 1] y + [0]
                            [0 1 0 0]     [0 0 0 1]     [0]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 2 0 1]     [1 2 0 0]     [0]
                            [0 1 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 2 0 1]     [1 2 0 0]     [0]
                            [0 1 0 0] x + [0 0 0 1] y + [0]
                            [0 1 0 0]     [0 0 0 1]     [0]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 2 0 0]     [1 2 0 0]     [0]
                            [0 1 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 2]     [0]              
                            [0 2 0 0] x + [0]              
                            [0 2 0 0]     [0]              
                            [0 0 0 0]     [0]              
                         >= [1 0 0 0]     [0]              
                            [0 2 0 0] x + [0]              
                            [0 2 0 0]     [0]              
                            [0 0 0 0]     [0]              
                         =  rest(check(x))                 
        
          check(sent(x)) =  [1 2 0 0]     [0]              
                            [0 0 0 0] x + [0]              
                            [0 0 0 0]     [0]              
                            [0 0 0 0]     [0]              
                         >= [1 2 0 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 2 0 1]     [1 2 0 0]     [0]
                            [0 2 0 0] x + [0 0 0 2] y + [0]
                            [0 0 0 0]     [0 0 0 2]     [0]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 2 0 0]     [0]              
                            [0 0 0 0] y + [0]              
                            [0 0 0 2]     [0]              
                            [0 0 0 0]     [0]              
                         =  sent(y)                        
        
            top(sent(x)) =  [2 4 0 4]     [0]              
                            [0 0 0 0] x + [0]              
                            [2 4 0 4]     [0]              
                            [1 2 0 2]     [0]              
                         >= [2 4 0 4]     [0]              
                            [0 0 0 0] x + [0]              
                            [2 4 0 4]     [0]              
                            [1 2 0 2]     [0]              
                         =  top(check(rest(x)))            
        
** Step 1.b:6: MI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            check(rest(x)) -> rest(check(x))
            check(sent(x)) -> sent(check(x))
        - Weak TRS:
            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:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity (Just 3))), miDimension = 4, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity (Just 3))):
        
        
        Following symbols are considered usable:
          {check,rest,top}
        TcT has computed the following interpretation:
          p(check) = [1 2 0 0]       [0]                
                     [0 1 0 0] x_1 + [0]                
                     [0 1 0 0]       [0]                
                     [0 0 0 0]       [0]                
           p(cons) = [1 1 0 3]       [1 3 0 0]       [0]
                     [0 1 0 1] x_1 + [0 1 0 3] x_2 + [1]
                     [0 0 0 0]       [0 0 0 3]       [1]
                     [0 0 0 0]       [0 0 0 0]       [0]
            p(nil) = [2]                                
                     [0]                                
                     [0]                                
                     [2]                                
           p(rest) = [1 0 0 0]       [1]                
                     [0 1 0 1] x_1 + [0]                
                     [0 0 1 3]       [0]                
                     [0 0 0 0]       [0]                
           p(sent) = [1 3 0 0]       [1]                
                     [0 1 0 0] x_1 + [1]                
                     [0 0 0 3]       [0]                
                     [0 0 0 0]       [0]                
            p(top) = [2 0 2 0]       [0]                
                     [0 0 0 0] x_1 + [2]                
                     [0 0 0 0]       [1]                
                     [0 0 0 0]       [0]                
        
        Following rules are strictly oriented:
        check(sent(x)) = [1 5 0 0]     [3]
                         [0 1 0 0] x + [1]
                         [0 1 0 0]     [1]
                         [0 0 0 0]     [0]
                       > [1 5 0 0]     [1]
                         [0 1 0 0] x + [1]
                         [0 0 0 0]     [0]
                         [0 0 0 0]     [0]
                       = sent(check(x))   
        
        
        Following rules are (at-least) weakly oriented:
        check(cons(x,y)) =  [1 3 0 5]     [1 5 0 6]     [2]
                            [0 1 0 1] x + [0 1 0 3] y + [1]
                            [0 1 0 1]     [0 1 0 3]     [1]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 1 0 3]     [1 3 0 0]     [0]
                            [0 1 0 1] x + [0 1 0 3] y + [1]
                            [0 0 0 0]     [0 0 0 3]     [1]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         =  cons(x,y)                      
        
        check(cons(x,y)) =  [1 3 0 5]     [1 5 0 6]     [2]
                            [0 1 0 1] x + [0 1 0 3] y + [1]
                            [0 1 0 1]     [0 1 0 3]     [1]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 1 0 3]     [1 5 0 0]     [0]
                            [0 1 0 1] x + [0 1 0 0] y + [1]
                            [0 0 0 0]     [0 0 0 0]     [1]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         =  cons(x,check(y))               
        
        check(cons(x,y)) =  [1 3 0 5]     [1 5 0 6]     [2]
                            [0 1 0 1] x + [0 1 0 3] y + [1]
                            [0 1 0 1]     [0 1 0 3]     [1]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 3 0 0]     [1 3 0 0]     [0]
                            [0 1 0 0] x + [0 1 0 3] y + [1]
                            [0 0 0 0]     [0 0 0 3]     [1]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         =  cons(check(x),y)               
        
          check(rest(x)) =  [1 2 0 2]     [1]              
                            [0 1 0 1] x + [0]              
                            [0 1 0 1]     [0]              
                            [0 0 0 0]     [0]              
                         >= [1 2 0 0]     [1]              
                            [0 1 0 0] x + [0]              
                            [0 1 0 0]     [0]              
                            [0 0 0 0]     [0]              
                         =  rest(check(x))                 
        
         rest(cons(x,y)) =  [1 1 0 3]     [1 3 0 0]     [1]
                            [0 1 0 1] x + [0 1 0 3] y + [1]
                            [0 0 0 0]     [0 0 0 3]     [1]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 3 0 0]     [1]              
                            [0 1 0 0] y + [1]              
                            [0 0 0 3]     [0]              
                            [0 0 0 0]     [0]              
                         =  sent(y)                        
        
             rest(nil()) =  [3]                            
                            [2]                            
                            [6]                            
                            [0]                            
                         >= [3]                            
                            [1]                            
                            [6]                            
                            [0]                            
                         =  sent(nil())                    
        
            top(sent(x)) =  [2 6 0 6]     [2]              
                            [0 0 0 0] x + [2]              
                            [0 0 0 0]     [1]              
                            [0 0 0 0]     [0]              
                         >= [2 6 0 6]     [2]              
                            [0 0 0 0] x + [2]              
                            [0 0 0 0]     [1]              
                            [0 0 0 0]     [0]              
                         =  top(check(rest(x)))            
        
** Step 1.b:7: MI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            check(rest(x)) -> rest(check(x))
        - Weak TRS:
            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:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity (Just 3))), miDimension = 4, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity (Just 3))):
        
        
        Following symbols are considered usable:
          {check,rest,top}
        TcT has computed the following interpretation:
          p(check) = [1 0 2 0]       [0]                
                     [0 0 2 0] x_1 + [0]                
                     [0 0 1 0]       [0]                
                     [0 0 0 0]       [0]                
           p(cons) = [1 0 2 0]       [1 0 3 2]       [3]
                     [0 0 0 0] x_1 + [0 0 2 2] x_2 + [2]
                     [0 0 1 0]       [0 0 1 2]       [2]
                     [0 0 0 0]       [0 0 0 0]       [0]
            p(nil) = [2]                                
                     [0]                                
                     [0]                                
                     [2]                                
           p(rest) = [1 0 0 2]       [0]                
                     [0 1 0 2] x_1 + [2]                
                     [0 0 1 0]       [1]                
                     [0 0 0 0]       [0]                
           p(sent) = [1 0 3 1]       [2]                
                     [0 0 0 2] x_1 + [2]                
                     [0 0 1 0]       [1]                
                     [0 0 0 0]       [0]                
            p(top) = [2 1 0 0]       [1]                
                     [2 1 1 2] x_1 + [0]                
                     [2 1 1 0]       [0]                
                     [0 0 2 0]       [2]                
        
        Following rules are strictly oriented:
        check(rest(x)) = [1 0 2 2]     [2]
                         [0 0 2 0] x + [2]
                         [0 0 1 0]     [1]
                         [0 0 0 0]     [0]
                       > [1 0 2 0]     [0]
                         [0 0 2 0] x + [2]
                         [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 4 0]     [1 0 5 6]     [7]
                            [0 0 2 0] x + [0 0 2 4] y + [4]
                            [0 0 1 0]     [0 0 1 2]     [2]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 0 2 0]     [1 0 3 2]     [3]
                            [0 0 0 0] x + [0 0 2 2] y + [2]
                            [0 0 1 0]     [0 0 1 2]     [2]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         =  cons(x,y)                      
        
        check(cons(x,y)) =  [1 0 4 0]     [1 0 5 6]     [7]
                            [0 0 2 0] x + [0 0 2 4] y + [4]
                            [0 0 1 0]     [0 0 1 2]     [2]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 0 2 0]     [1 0 5 0]     [3]
                            [0 0 0 0] x + [0 0 2 0] y + [2]
                            [0 0 1 0]     [0 0 1 0]     [2]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         =  cons(x,check(y))               
        
        check(cons(x,y)) =  [1 0 4 0]     [1 0 5 6]     [7]
                            [0 0 2 0] x + [0 0 2 4] y + [4]
                            [0 0 1 0]     [0 0 1 2]     [2]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 0 4 0]     [1 0 3 2]     [3]
                            [0 0 0 0] x + [0 0 2 2] y + [2]
                            [0 0 1 0]     [0 0 1 2]     [2]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         =  cons(check(x),y)               
        
          check(sent(x)) =  [1 0 5 1]     [4]              
                            [0 0 2 0] x + [2]              
                            [0 0 1 0]     [1]              
                            [0 0 0 0]     [0]              
                         >= [1 0 5 0]     [2]              
                            [0 0 0 0] x + [2]              
                            [0 0 1 0]     [1]              
                            [0 0 0 0]     [0]              
                         =  sent(check(x))                 
        
         rest(cons(x,y)) =  [1 0 2 0]     [1 0 3 2]     [3]
                            [0 0 0 0] x + [0 0 2 2] y + [4]
                            [0 0 1 0]     [0 0 1 2]     [3]
                            [0 0 0 0]     [0 0 0 0]     [0]
                         >= [1 0 3 1]     [2]              
                            [0 0 0 2] y + [2]              
                            [0 0 1 0]     [1]              
                            [0 0 0 0]     [0]              
                         =  sent(y)                        
        
             rest(nil()) =  [6]                            
                            [6]                            
                            [1]                            
                            [0]                            
                         >= [6]                            
                            [6]                            
                            [1]                            
                            [0]                            
                         =  sent(nil())                    
        
            top(sent(x)) =  [2 0 6 4]     [7]              
                            [2 0 7 4] x + [7]              
                            [2 0 7 4]     [7]              
                            [0 0 2 0]     [4]              
                         >= [2 0 6 4]     [7]              
                            [2 0 7 4] x + [7]              
                            [2 0 7 4]     [7]              
                            [0 0 2 0]     [4]              
                         =  top(check(rest(x)))            
        
** Step 1.b:8: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            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:
            innermost runtime complexity wrt. defined symbols {check,rest,top} and constructors {cons,nil,sent}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(Omega(n^1),O(n^2))