Problem:
 top(sent(x)) -> top(check(rest(x)))
 rest(nil()) -> sent(nil())
 rest(cons(x,y)) -> sent(y)
 check(sent(x)) -> sent(check(x))
 check(rest(x)) -> rest(check(x))
 check(cons(x,y)) -> cons(check(x),y)
 check(cons(x,y)) -> cons(x,check(y))
 check(cons(x,y)) -> cons(x,y)

Proof:
 Complexity Transformation Processor:
  strict:
   top(sent(x)) -> top(check(rest(x)))
   rest(nil()) -> sent(nil())
   rest(cons(x,y)) -> sent(y)
   check(sent(x)) -> sent(check(x))
   check(rest(x)) -> rest(check(x))
   check(cons(x,y)) -> cons(check(x),y)
   check(cons(x,y)) -> cons(x,check(y))
   check(cons(x,y)) -> cons(x,y)
  weak:
   
  Matrix Interpretation Processor:
   dimension: 1
   max_matrix:
    1
    interpretation:
     [cons](x0, x1) = x0 + x1,
     
     [nil] = 0,
     
     [check](x0) = x0 + 15,
     
     [rest](x0) = x0 + 1,
     
     [top](x0) = x0,
     
     [sent](x0) = x0 + 8
    orientation:
     top(sent(x)) = x + 8 >= x + 16 = top(check(rest(x)))
     
     rest(nil()) = 1 >= 8 = sent(nil())
     
     rest(cons(x,y)) = x + y + 1 >= y + 8 = sent(y)
     
     check(sent(x)) = x + 23 >= x + 23 = sent(check(x))
     
     check(rest(x)) = x + 16 >= x + 16 = rest(check(x))
     
     check(cons(x,y)) = x + y + 15 >= x + y + 15 = cons(check(x),y)
     
     check(cons(x,y)) = x + y + 15 >= x + y + 15 = cons(x,check(y))
     
     check(cons(x,y)) = x + y + 15 >= x + y = cons(x,y)
    problem:
     strict:
      top(sent(x)) -> top(check(rest(x)))
      rest(nil()) -> sent(nil())
      rest(cons(x,y)) -> sent(y)
      check(sent(x)) -> sent(check(x))
      check(rest(x)) -> rest(check(x))
      check(cons(x,y)) -> cons(check(x),y)
      check(cons(x,y)) -> cons(x,check(y))
     weak:
      check(cons(x,y)) -> cons(x,y)
    Matrix Interpretation Processor:
     dimension: 1
     max_matrix:
      1
      interpretation:
       [cons](x0, x1) = x0 + x1,
       
       [nil] = 0,
       
       [check](x0) = x0,
       
       [rest](x0) = x0,
       
       [top](x0) = x0 + 6,
       
       [sent](x0) = x0 + 2
      orientation:
       top(sent(x)) = x + 8 >= x + 6 = top(check(rest(x)))
       
       rest(nil()) = 0 >= 2 = sent(nil())
       
       rest(cons(x,y)) = x + y >= y + 2 = sent(y)
       
       check(sent(x)) = x + 2 >= x + 2 = sent(check(x))
       
       check(rest(x)) = x >= x = rest(check(x))
       
       check(cons(x,y)) = x + y >= x + y = cons(check(x),y)
       
       check(cons(x,y)) = x + y >= x + y = cons(x,check(y))
       
       check(cons(x,y)) = x + y >= x + y = cons(x,y)
      problem:
       strict:
        rest(nil()) -> sent(nil())
        rest(cons(x,y)) -> sent(y)
        check(sent(x)) -> sent(check(x))
        check(rest(x)) -> rest(check(x))
        check(cons(x,y)) -> cons(check(x),y)
        check(cons(x,y)) -> cons(x,check(y))
       weak:
        top(sent(x)) -> top(check(rest(x)))
        check(cons(x,y)) -> cons(x,y)
      Matrix Interpretation Processor:
       dimension: 1
       max_matrix:
        1
        interpretation:
         [cons](x0, x1) = x0 + x1 + 6,
         
         [nil] = 0,
         
         [check](x0) = x0,
         
         [rest](x0) = x0,
         
         [top](x0) = x0 + 8,
         
         [sent](x0) = x0 + 4
        orientation:
         rest(nil()) = 0 >= 4 = sent(nil())
         
         rest(cons(x,y)) = x + y + 6 >= y + 4 = sent(y)
         
         check(sent(x)) = x + 4 >= x + 4 = sent(check(x))
         
         check(rest(x)) = x >= x = rest(check(x))
         
         check(cons(x,y)) = x + y + 6 >= x + y + 6 = cons(check(x),y)
         
         check(cons(x,y)) = x + y + 6 >= x + y + 6 = cons(x,check(y))
         
         top(sent(x)) = x + 12 >= x + 8 = top(check(rest(x)))
         
         check(cons(x,y)) = x + y + 6 >= x + y + 6 = cons(x,y)
        problem:
         strict:
          rest(nil()) -> sent(nil())
          check(sent(x)) -> sent(check(x))
          check(rest(x)) -> rest(check(x))
          check(cons(x,y)) -> cons(check(x),y)
          check(cons(x,y)) -> cons(x,check(y))
         weak:
          rest(cons(x,y)) -> sent(y)
          top(sent(x)) -> top(check(rest(x)))
          check(cons(x,y)) -> cons(x,y)
        Splitting Processor:
         strict:
          check(cons(x,y)) -> cons(x,check(y))
         weak:
          rest(cons(x,y)) -> sent(y)
          top(sent(x)) -> top(check(rest(x)))
          check(cons(x,y)) -> cons(x,y)
          rest(nil()) -> sent(nil())
          check(sent(x)) -> sent(check(x))
          check(rest(x)) -> rest(check(x))
          check(cons(x,y)) -> cons(check(x),y)
         Matrix Interpretation Processor:
          dimension: 4
          max_matrix:
           [1 1 1 1]
           [0 1 0 0]
           [0 0 0 0]
           [0 0 0 0]
           interpretation:
                             [1 0 0 1]     [1 1 1 0]     [1]
                             [0 1 0 0]     [0 1 0 0]     [1]
            [cons](x0, x1) = [0 0 0 0]x0 + [0 0 0 0]x1 + [0]
                             [0 0 0 0]     [0 0 0 0]     [0],
            
                    [0]
                    [0]
            [nil] = [0]
                    [0],
            
                          [1 1 0 0]  
                          [0 1 0 0]  
            [check](x0) = [0 0 0 0]x0
                          [0 0 0 0]  ,
            
                         [1 0 0 0]  
                         [0 1 0 0]  
            [rest](x0) = [0 0 0 0]x0
                         [0 0 0 0]  ,
            
                        [1 1 0 0]     [0]
                        [0 0 0 0]     [0]
            [top](x0) = [0 0 0 0]x0 + [0]
                        [0 0 0 0]     [1],
            
                         [1 1 1 0]  
                         [0 1 0 0]  
            [sent](x0) = [0 0 0 0]x0
                         [0 0 0 0]  
           orientation:
                          [0]    [0]              
                          [0]    [0]              
            rest(nil()) = [0] >= [0] = sent(nil())
                          [0]    [0]              
            
                             [1 2 1 0]     [1 2 0 0]                  
                             [0 1 0 0]     [0 1 0 0]                  
            check(sent(x)) = [0 0 0 0]x >= [0 0 0 0]x = sent(check(x))
                             [0 0 0 0]     [0 0 0 0]                  
            
                             [1 1 0 0]     [1 1 0 0]                  
                             [0 1 0 0]     [0 1 0 0]                  
            check(rest(x)) = [0 0 0 0]x >= [0 0 0 0]x = rest(check(x))
                             [0 0 0 0]     [0 0 0 0]                  
            
                               [1 1 0 1]    [1 2 1 0]    [2]    [1 1 0 0]    [1 1 1 0]    [1]                   
                               [0 1 0 0]    [0 1 0 0]    [1]    [0 1 0 0]    [0 1 0 0]    [1]                   
            check(cons(x,y)) = [0 0 0 0]x + [0 0 0 0]y + [0] >= [0 0 0 0]x + [0 0 0 0]y + [0] = cons(check(x),y)
                               [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0 0 0 0]    [0]                   
            
                               [1 1 0 1]    [1 2 1 0]    [2]    [1 0 0 1]    [1 2 0 0]    [1]                   
                               [0 1 0 0]    [0 1 0 0]    [1]    [0 1 0 0]    [0 1 0 0]    [1]                   
            check(cons(x,y)) = [0 0 0 0]x + [0 0 0 0]y + [0] >= [0 0 0 0]x + [0 0 0 0]y + [0] = cons(x,check(y))
                               [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0 0 0 0]    [0]                   
            
                              [1 0 0 1]    [1 1 1 0]    [1]    [1 1 1 0]           
                              [0 1 0 0]    [0 1 0 0]    [1]    [0 1 0 0]           
            rest(cons(x,y)) = [0 0 0 0]x + [0 0 0 0]y + [0] >= [0 0 0 0]y = sent(y)
                              [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]           
            
                           [1 2 1 0]    [0]    [1 2 0 0]    [0]                      
                           [0 0 0 0]    [0]    [0 0 0 0]    [0]                      
            top(sent(x)) = [0 0 0 0]x + [0] >= [0 0 0 0]x + [0] = top(check(rest(x)))
                           [0 0 0 0]    [1]    [0 0 0 0]    [1]                      
            
                               [1 1 0 1]    [1 2 1 0]    [2]    [1 0 0 1]    [1 1 1 0]    [1]            
                               [0 1 0 0]    [0 1 0 0]    [1]    [0 1 0 0]    [0 1 0 0]    [1]            
            check(cons(x,y)) = [0 0 0 0]x + [0 0 0 0]y + [0] >= [0 0 0 0]x + [0 0 0 0]y + [0] = cons(x,y)
                               [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0 0 0 0]    [0]            
           problem:
            strict:
             rest(nil()) -> sent(nil())
             check(sent(x)) -> sent(check(x))
             check(rest(x)) -> rest(check(x))
            weak:
             check(cons(x,y)) -> cons(check(x),y)
             check(cons(x,y)) -> cons(x,check(y))
             rest(cons(x,y)) -> sent(y)
             top(sent(x)) -> top(check(rest(x)))
             check(cons(x,y)) -> cons(x,y)
           Splitting Processor:
            strict:
             rest(nil()) -> sent(nil())
            weak:
             check(cons(x,y)) -> cons(check(x),y)
             check(cons(x,y)) -> cons(x,check(y))
             rest(cons(x,y)) -> sent(y)
             top(sent(x)) -> top(check(rest(x)))
             check(cons(x,y)) -> cons(x,y)
             check(sent(x)) -> sent(check(x))
             check(rest(x)) -> rest(check(x))
            Splitting Processor:
             strict:
              check(sent(x)) -> sent(check(x))
             weak:
              rest(nil()) -> sent(nil())
              check(cons(x,y)) -> cons(check(x),y)
              check(cons(x,y)) -> cons(x,check(y))
              rest(cons(x,y)) -> sent(y)
              top(sent(x)) -> top(check(rest(x)))
              check(cons(x,y)) -> cons(x,y)
              check(rest(x)) -> rest(check(x))
             Matrix Interpretation Processor:
              dimension: 4
              max_matrix:
               [1 1 1 1]
               [0 0 1 1]
               [0 0 1 1]
               [0 0 0 0]
               interpretation:
                                 [1 0 0 0]     [1 0 1 0]     [1]
                                 [0 0 1 0]     [0 0 0 1]     [0]
                [cons](x0, x1) = [0 0 1 0]x0 + [0 0 1 1]x1 + [0]
                                 [0 0 0 0]     [0 0 0 0]     [0],
                
                        [0]
                        [0]
                [nil] = [0]
                        [1],
                
                              [1 0 1 0]  
                              [0 0 1 0]  
                [check](x0) = [0 0 1 0]x0
                              [0 0 0 0]  ,
                
                             [1 0 0 1]     [0]
                             [0 0 1 1]     [1]
                [rest](x0) = [0 0 1 0]x0 + [1]
                             [0 0 0 0]     [0],
                
                            [1 1 0 0]     [0]
                            [0 0 1 0]     [1]
                [top](x0) = [0 0 1 0]x0 + [0]
                            [0 0 0 0]     [0],
                
                             [1 0 1 0]     [1]
                             [0 0 1 1]     [1]
                [sent](x0) = [0 0 1 0]x0 + [1]
                             [0 0 0 0]     [0]
               orientation:
                                 [1 0 2 0]    [2]    [1 0 2 0]    [1]                 
                                 [0 0 1 0]    [1]    [0 0 1 0]    [1]                 
                check(sent(x)) = [0 0 1 0]x + [1] >= [0 0 1 0]x + [1] = sent(check(x))
                                 [0 0 0 0]    [0]    [0 0 0 0]    [0]                 
                
                              [1]    [1]              
                              [2]    [2]              
                rest(nil()) = [1] >= [1] = sent(nil())
                              [0]    [0]              
                
                                   [1 0 1 0]    [1 0 2 1]    [1]    [1 0 1 0]    [1 0 1 0]    [1]                   
                                   [0 0 1 0]    [0 0 1 1]    [0]    [0 0 1 0]    [0 0 0 1]    [0]                   
                check(cons(x,y)) = [0 0 1 0]x + [0 0 1 1]y + [0] >= [0 0 1 0]x + [0 0 1 1]y + [0] = cons(check(x),y)
                                   [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0 0 0 0]    [0]                   
                
                                   [1 0 1 0]    [1 0 2 1]    [1]    [1 0 0 0]    [1 0 2 0]    [1]                   
                                   [0 0 1 0]    [0 0 1 1]    [0]    [0 0 1 0]    [0 0 0 0]    [0]                   
                check(cons(x,y)) = [0 0 1 0]x + [0 0 1 1]y + [0] >= [0 0 1 0]x + [0 0 1 0]y + [0] = cons(x,check(y))
                                   [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0 0 0 0]    [0]                   
                
                                  [1 0 0 0]    [1 0 1 0]    [1]    [1 0 1 0]    [1]          
                                  [0 0 1 0]    [0 0 1 1]    [1]    [0 0 1 1]    [1]          
                rest(cons(x,y)) = [0 0 1 0]x + [0 0 1 1]y + [1] >= [0 0 1 0]y + [1] = sent(y)
                                  [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0]          
                
                               [1 0 2 1]    [2]    [1 0 2 1]    [2]                      
                               [0 0 1 0]    [2]    [0 0 1 0]    [2]                      
                top(sent(x)) = [0 0 1 0]x + [1] >= [0 0 1 0]x + [1] = top(check(rest(x)))
                               [0 0 0 0]    [0]    [0 0 0 0]    [0]                      
                
                                   [1 0 1 0]    [1 0 2 1]    [1]    [1 0 0 0]    [1 0 1 0]    [1]            
                                   [0 0 1 0]    [0 0 1 1]    [0]    [0 0 1 0]    [0 0 0 1]    [0]            
                check(cons(x,y)) = [0 0 1 0]x + [0 0 1 1]y + [0] >= [0 0 1 0]x + [0 0 1 1]y + [0] = cons(x,y)
                                   [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0 0 0 0]    [0]            
                
                                 [1 0 1 1]    [1]    [1 0 1 0]    [0]                 
                                 [0 0 1 0]    [1]    [0 0 1 0]    [1]                 
                check(rest(x)) = [0 0 1 0]x + [1] >= [0 0 1 0]x + [1] = rest(check(x))
                                 [0 0 0 0]    [0]    [0 0 0 0]    [0]                 
               problem:
                strict:
                 
                weak:
                 check(sent(x)) -> sent(check(x))
                 rest(nil()) -> sent(nil())
                 check(cons(x,y)) -> cons(check(x),y)
                 check(cons(x,y)) -> cons(x,check(y))
                 rest(cons(x,y)) -> sent(y)
                 top(sent(x)) -> top(check(rest(x)))
                 check(cons(x,y)) -> cons(x,y)
                 check(rest(x)) -> rest(check(x))
               Qed
              
              strict:
               check(rest(x)) -> rest(check(x))
              weak:
               check(sent(x)) -> sent(check(x))
               rest(nil()) -> sent(nil())
               check(cons(x,y)) -> cons(check(x),y)
               check(cons(x,y)) -> cons(x,check(y))
               rest(cons(x,y)) -> sent(y)
               top(sent(x)) -> top(check(rest(x)))
               check(cons(x,y)) -> cons(x,y)
              Matrix Interpretation Processor:
               dimension: 4
               max_matrix:
                [1 1 1 1]
                [0 0 1 1]
                [0 0 1 1]
                [0 0 0 0]
                interpretation:
                                  [1 0 0 0]     [1 0 1 0]     [1]
                                  [0 0 0 0]     [0 0 1 0]     [0]
                 [cons](x0, x1) = [0 0 1 0]x0 + [0 0 1 1]x1 + [0]
                                  [0 0 0 0]     [0 0 0 0]     [0],
                 
                         [0]
                         [0]
                 [nil] = [0]
                         [1],
                 
                               [1 0 1 0]  
                               [0 0 1 0]  
                 [check](x0) = [0 0 1 0]x0
                               [0 0 0 0]  ,
                 
                              [1 0 0 1]     [0]
                              [0 0 1 1]     [1]
                 [rest](x0) = [0 0 1 0]x0 + [1]
                              [0 0 0 0]     [0],
                 
                             [1 1 0 0]  
                             [0 0 0 0]  
                 [top](x0) = [0 0 0 0]x0
                             [0 0 0 0]  ,
                 
                              [1 0 1 0]     [1]
                              [0 0 1 1]     [1]
                 [sent](x0) = [0 0 1 0]x0 + [1]
                              [0 0 0 0]     [0]
                orientation:
                                  [1 0 1 1]    [1]    [1 0 1 0]    [0]                 
                                  [0 0 1 0]    [1]    [0 0 1 0]    [1]                 
                 check(rest(x)) = [0 0 1 0]x + [1] >= [0 0 1 0]x + [1] = rest(check(x))
                                  [0 0 0 0]    [0]    [0 0 0 0]    [0]                 
                 
                                  [1 0 2 0]    [2]    [1 0 2 0]    [1]                 
                                  [0 0 1 0]    [1]    [0 0 1 0]    [1]                 
                 check(sent(x)) = [0 0 1 0]x + [1] >= [0 0 1 0]x + [1] = sent(check(x))
                                  [0 0 0 0]    [0]    [0 0 0 0]    [0]                 
                 
                               [1]    [1]              
                               [2]    [2]              
                 rest(nil()) = [1] >= [1] = sent(nil())
                               [0]    [0]              
                 
                                    [1 0 1 0]    [1 0 2 1]    [1]    [1 0 1 0]    [1 0 1 0]    [1]                   
                                    [0 0 1 0]    [0 0 1 1]    [0]    [0 0 0 0]    [0 0 1 0]    [0]                   
                 check(cons(x,y)) = [0 0 1 0]x + [0 0 1 1]y + [0] >= [0 0 1 0]x + [0 0 1 1]y + [0] = cons(check(x),y)
                                    [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0 0 0 0]    [0]                   
                 
                                    [1 0 1 0]    [1 0 2 1]    [1]    [1 0 0 0]    [1 0 2 0]    [1]                   
                                    [0 0 1 0]    [0 0 1 1]    [0]    [0 0 0 0]    [0 0 1 0]    [0]                   
                 check(cons(x,y)) = [0 0 1 0]x + [0 0 1 1]y + [0] >= [0 0 1 0]x + [0 0 1 0]y + [0] = cons(x,check(y))
                                    [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0 0 0 0]    [0]                   
                 
                                   [1 0 0 0]    [1 0 1 0]    [1]    [1 0 1 0]    [1]          
                                   [0 0 1 0]    [0 0 1 1]    [1]    [0 0 1 1]    [1]          
                 rest(cons(x,y)) = [0 0 1 0]x + [0 0 1 1]y + [1] >= [0 0 1 0]y + [1] = sent(y)
                                   [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0]          
                 
                                [1 0 2 1]    [2]    [1 0 2 1]    [2]                      
                                [0 0 0 0]    [0]    [0 0 0 0]    [0]                      
                 top(sent(x)) = [0 0 0 0]x + [0] >= [0 0 0 0]x + [0] = top(check(rest(x)))
                                [0 0 0 0]    [0]    [0 0 0 0]    [0]                      
                 
                                    [1 0 1 0]    [1 0 2 1]    [1]    [1 0 0 0]    [1 0 1 0]    [1]            
                                    [0 0 1 0]    [0 0 1 1]    [0]    [0 0 0 0]    [0 0 1 0]    [0]            
                 check(cons(x,y)) = [0 0 1 0]x + [0 0 1 1]y + [0] >= [0 0 1 0]x + [0 0 1 1]y + [0] = cons(x,y)
                                    [0 0 0 0]    [0 0 0 0]    [0]    [0 0 0 0]    [0 0 0 0]    [0]            
                problem:
                 strict:
                  
                 weak:
                  check(rest(x)) -> rest(check(x))
                  check(sent(x)) -> sent(check(x))
                  rest(nil()) -> sent(nil())
                  check(cons(x,y)) -> cons(check(x),y)
                  check(cons(x,y)) -> cons(x,check(y))
                  rest(cons(x,y)) -> sent(y)
                  top(sent(x)) -> top(check(rest(x)))
                  check(cons(x,y)) -> cons(x,y)
                Qed
             
             strict:
              check(sent(x)) -> sent(check(x))
              check(rest(x)) -> rest(check(x))
             weak:
              rest(nil()) -> sent(nil())
              check(cons(x,y)) -> cons(check(x),y)
              check(cons(x,y)) -> cons(x,check(y))
              rest(cons(x,y)) -> sent(y)
              top(sent(x)) -> top(check(rest(x)))
              check(cons(x,y)) -> cons(x,y)
             Matrix Interpretation Processor:
              dimension: 4
              max_matrix:
               [1 1 1 1]
               [0 0 1 1]
               [0 0 1 1]
               [0 0 0 0]
               interpretation:
                                 [1 0 0 0]     [1 0 1 1]  
                                 [0 0 0 0]     [0 0 0 0]  
                [cons](x0, x1) = [0 0 0 0]x0 + [0 0 1 1]x1
                                 [0 0 0 0]     [0 0 0 0]  ,
                
                        [0]
                        [0]
                [nil] = [0]
                        [1],
                
                              [1 0 0 0]  
                              [0 0 1 0]  
                [check](x0) = [0 0 1 0]x0
                              [0 0 0 0]  ,
                
                             [1 0 0 1]  
                             [0 0 1 1]  
                [rest](x0) = [0 0 1 0]x0
                             [0 0 0 0]  ,
                
                            [1 1 0 0]     [0]
                            [0 0 0 0]     [0]
                [top](x0) = [0 0 0 0]x0 + [1]
                            [0 0 0 0]     [0],
                
                             [1 0 1 0]  
                             [0 0 0 1]  
                [sent](x0) = [0 0 0 0]x0
                             [0 0 0 0]  
               orientation:
                              [1]    [0]              
                              [1]    [1]              
                rest(nil()) = [0] >= [0] = sent(nil())
                              [0]    [0]              
                
                                   [1 0 0 0]    [1 0 1 1]     [1 0 0 0]    [1 0 1 1]                    
                                   [0 0 0 0]    [0 0 1 1]     [0 0 0 0]    [0 0 0 0]                    
                check(cons(x,y)) = [0 0 0 0]x + [0 0 1 1]y >= [0 0 0 0]x + [0 0 1 1]y = cons(check(x),y)
                                   [0 0 0 0]    [0 0 0 0]     [0 0 0 0]    [0 0 0 0]                    
                
                                   [1 0 0 0]    [1 0 1 1]     [1 0 0 0]    [1 0 1 0]                    
                                   [0 0 0 0]    [0 0 1 1]     [0 0 0 0]    [0 0 0 0]                    
                check(cons(x,y)) = [0 0 0 0]x + [0 0 1 1]y >= [0 0 0 0]x + [0 0 1 0]y = cons(x,check(y))
                                   [0 0 0 0]    [0 0 0 0]     [0 0 0 0]    [0 0 0 0]                    
                
                                  [1 0 0 0]    [1 0 1 1]     [1 0 1 0]           
                                  [0 0 0 0]    [0 0 1 1]     [0 0 0 1]           
                rest(cons(x,y)) = [0 0 0 0]x + [0 0 1 1]y >= [0 0 0 0]y = sent(y)
                                  [0 0 0 0]    [0 0 0 0]     [0 0 0 0]           
                
                               [1 0 1 1]    [0]    [1 0 1 1]    [0]                      
                               [0 0 0 0]    [0]    [0 0 0 0]    [0]                      
                top(sent(x)) = [0 0 0 0]x + [1] >= [0 0 0 0]x + [1] = top(check(rest(x)))
                               [0 0 0 0]    [0]    [0 0 0 0]    [0]                      
                
                                   [1 0 0 0]    [1 0 1 1]     [1 0 0 0]    [1 0 1 1]             
                                   [0 0 0 0]    [0 0 1 1]     [0 0 0 0]    [0 0 0 0]             
                check(cons(x,y)) = [0 0 0 0]x + [0 0 1 1]y >= [0 0 0 0]x + [0 0 1 1]y = cons(x,y)
                                   [0 0 0 0]    [0 0 0 0]     [0 0 0 0]    [0 0 0 0]             
                
                                 [1 0 1 0]     [1 0 1 0]                  
                                 [0 0 0 0]     [0 0 0 0]                  
                check(sent(x)) = [0 0 0 0]x >= [0 0 0 0]x = sent(check(x))
                                 [0 0 0 0]     [0 0 0 0]                  
                
                                 [1 0 0 1]     [1 0 0 0]                  
                                 [0 0 1 0]     [0 0 1 0]                  
                check(rest(x)) = [0 0 1 0]x >= [0 0 1 0]x = rest(check(x))
                                 [0 0 0 0]     [0 0 0 0]                  
               problem:
                strict:
                 
                weak:
                 rest(nil()) -> sent(nil())
                 check(cons(x,y)) -> cons(check(x),y)
                 check(cons(x,y)) -> cons(x,check(y))
                 rest(cons(x,y)) -> sent(y)
                 top(sent(x)) -> top(check(rest(x)))
                 check(cons(x,y)) -> cons(x,y)
                 check(sent(x)) -> sent(check(x))
                 check(rest(x)) -> rest(check(x))
               Qed
            
            strict:
             rest(nil()) -> sent(nil())
             check(sent(x)) -> sent(check(x))
             check(rest(x)) -> rest(check(x))
             check(cons(x,y)) -> cons(check(x),y)
            weak:
             check(cons(x,y)) -> cons(x,check(y))
             rest(cons(x,y)) -> sent(y)
             top(sent(x)) -> top(check(rest(x)))
             check(cons(x,y)) -> cons(x,y)
            Matrix Interpretation Processor:
             dimension: 3
             max_matrix:
              [1 0 1]
              [0 0 0]
              [0 0 1]
              interpretation:
                                [1 0 0]     [1 0 1]     [0]
               [cons](x0, x1) = [0 0 0]x0 + [0 0 0]x1 + [0]
                                [0 0 1]     [0 0 1]     [1],
               
                       [1]
               [nil] = [0]
                       [0],
               
                             [1 0 1]     [0]
               [check](x0) = [0 0 0]x0 + [1]
                             [0 0 1]     [0],
               
                            [1 0 0]     [0]
               [rest](x0) = [0 0 0]x0 + [1]
                            [0 0 1]     [0],
               
                           [1 0 0]  
               [top](x0) = [0 0 0]x0
                           [0 0 1]  ,
               
                            [1 0 1]     [0]
               [sent](x0) = [0 0 0]x0 + [1]
                            [0 0 1]     [0]
              orientation:
                                  [1 0 1]    [1 0 2]    [1]    [1 0 0]    [1 0 2]    [0]                   
               check(cons(x,y)) = [0 0 0]x + [0 0 0]y + [1] >= [0 0 0]x + [0 0 0]y + [0] = cons(x,check(y))
                                  [0 0 1]    [0 0 1]    [1]    [0 0 1]    [0 0 1]    [1]                   
               
                                 [1 0 0]    [1 0 1]    [0]    [1 0 1]    [0]          
               rest(cons(x,y)) = [0 0 0]x + [0 0 0]y + [1] >= [0 0 0]y + [1] = sent(y)
                                 [0 0 1]    [0 0 1]    [1]    [0 0 1]    [0]          
               
                              [1 0 1]     [1 0 1]                       
               top(sent(x)) = [0 0 0]x >= [0 0 0]x = top(check(rest(x)))
                              [0 0 1]     [0 0 1]                       
               
                                  [1 0 1]    [1 0 2]    [1]    [1 0 0]    [1 0 1]    [0]            
               check(cons(x,y)) = [0 0 0]x + [0 0 0]y + [1] >= [0 0 0]x + [0 0 0]y + [0] = cons(x,y)
                                  [0 0 1]    [0 0 1]    [1]    [0 0 1]    [0 0 1]    [1]            
               
                             [1]    [1]              
               rest(nil()) = [1] >= [1] = sent(nil())
                             [0]    [0]              
               
                                [1 0 2]    [0]    [1 0 2]    [0]                 
               check(sent(x)) = [0 0 0]x + [1] >= [0 0 0]x + [1] = sent(check(x))
                                [0 0 1]    [0]    [0 0 1]    [0]                 
               
                                [1 0 1]    [0]    [1 0 1]    [0]                 
               check(rest(x)) = [0 0 0]x + [1] >= [0 0 0]x + [1] = rest(check(x))
                                [0 0 1]    [0]    [0 0 1]    [0]                 
               
                                  [1 0 1]    [1 0 2]    [1]    [1 0 1]    [1 0 1]    [0]                   
               check(cons(x,y)) = [0 0 0]x + [0 0 0]y + [1] >= [0 0 0]x + [0 0 0]y + [0] = cons(check(x),y)
                                  [0 0 1]    [0 0 1]    [1]    [0 0 1]    [0 0 1]    [1]                   
              problem:
               strict:
                
               weak:
                check(cons(x,y)) -> cons(x,check(y))
                rest(cons(x,y)) -> sent(y)
                top(sent(x)) -> top(check(rest(x)))
                check(cons(x,y)) -> cons(x,y)
                rest(nil()) -> sent(nil())
                check(sent(x)) -> sent(check(x))
                check(rest(x)) -> rest(check(x))
                check(cons(x,y)) -> cons(check(x),y)
              Qed