YES(?,O(n^3))

Problem:
 active(f(x)) -> mark(x)
 top(active(c())) -> top(mark(c()))
 top(mark(x)) -> top(check(x))
 check(f(x)) -> f(check(x))
 check(x) -> start(match(f(X()),x))
 match(f(x),f(y)) -> f(match(x,y))
 match(X(),x) -> proper(x)
 proper(c()) -> ok(c())
 proper(f(x)) -> f(proper(x))
 f(ok(x)) -> ok(f(x))
 start(ok(x)) -> found(x)
 f(found(x)) -> found(f(x))
 top(found(x)) -> top(active(x))
 active(f(x)) -> f(active(x))
 f(mark(x)) -> mark(f(x))

Proof:
 Complexity Transformation Processor:
  strict:
   active(f(x)) -> mark(x)
   top(active(c())) -> top(mark(c()))
   top(mark(x)) -> top(check(x))
   check(f(x)) -> f(check(x))
   check(x) -> start(match(f(X()),x))
   match(f(x),f(y)) -> f(match(x,y))
   match(X(),x) -> proper(x)
   proper(c()) -> ok(c())
   proper(f(x)) -> f(proper(x))
   f(ok(x)) -> ok(f(x))
   start(ok(x)) -> found(x)
   f(found(x)) -> found(f(x))
   top(found(x)) -> top(active(x))
   active(f(x)) -> f(active(x))
   f(mark(x)) -> mark(f(x))
  weak:
   
  Matrix Interpretation Processor:
   dimension: 1
   max_matrix:
    1
    interpretation:
     [found](x0) = x0 + 1,
     
     [ok](x0) = x0,
     
     [proper](x0) = x0,
     
     [start](x0) = x0 + 1,
     
     [match](x0, x1) = x0 + x1,
     
     [X] = 0,
     
     [check](x0) = x0,
     
     [top](x0) = x0,
     
     [c] = 0,
     
     [mark](x0) = x0 + 1,
     
     [active](x0) = x0,
     
     [f](x0) = x0
    orientation:
     active(f(x)) = x >= x + 1 = mark(x)
     
     top(active(c())) = 0 >= 1 = top(mark(c()))
     
     top(mark(x)) = x + 1 >= x = top(check(x))
     
     check(f(x)) = x >= x = f(check(x))
     
     check(x) = x >= x + 1 = start(match(f(X()),x))
     
     match(f(x),f(y)) = x + y >= x + y = f(match(x,y))
     
     match(X(),x) = x >= x = proper(x)
     
     proper(c()) = 0 >= 0 = ok(c())
     
     proper(f(x)) = x >= x = f(proper(x))
     
     f(ok(x)) = x >= x = ok(f(x))
     
     start(ok(x)) = x + 1 >= x + 1 = found(x)
     
     f(found(x)) = x + 1 >= x + 1 = found(f(x))
     
     top(found(x)) = x + 1 >= x = top(active(x))
     
     active(f(x)) = x >= x = f(active(x))
     
     f(mark(x)) = x + 1 >= x + 1 = mark(f(x))
    problem:
     strict:
      active(f(x)) -> mark(x)
      top(active(c())) -> top(mark(c()))
      check(f(x)) -> f(check(x))
      check(x) -> start(match(f(X()),x))
      match(f(x),f(y)) -> f(match(x,y))
      match(X(),x) -> proper(x)
      proper(c()) -> ok(c())
      proper(f(x)) -> f(proper(x))
      f(ok(x)) -> ok(f(x))
      start(ok(x)) -> found(x)
      f(found(x)) -> found(f(x))
      active(f(x)) -> f(active(x))
      f(mark(x)) -> mark(f(x))
     weak:
      top(mark(x)) -> top(check(x))
      top(found(x)) -> top(active(x))
    Matrix Interpretation Processor:
     dimension: 1
     max_matrix:
      1
      interpretation:
       [found](x0) = x0,
       
       [ok](x0) = x0 + 1,
       
       [proper](x0) = x0,
       
       [start](x0) = x0 + 1,
       
       [match](x0, x1) = x0 + x1,
       
       [X] = 0,
       
       [check](x0) = x0,
       
       [top](x0) = x0,
       
       [c] = 1,
       
       [mark](x0) = x0,
       
       [active](x0) = x0,
       
       [f](x0) = x0
      orientation:
       active(f(x)) = x >= x = mark(x)
       
       top(active(c())) = 1 >= 1 = top(mark(c()))
       
       check(f(x)) = x >= x = f(check(x))
       
       check(x) = x >= x + 1 = start(match(f(X()),x))
       
       match(f(x),f(y)) = x + y >= x + y = f(match(x,y))
       
       match(X(),x) = x >= x = proper(x)
       
       proper(c()) = 1 >= 2 = ok(c())
       
       proper(f(x)) = x >= x = f(proper(x))
       
       f(ok(x)) = x + 1 >= x + 1 = ok(f(x))
       
       start(ok(x)) = x + 2 >= x = found(x)
       
       f(found(x)) = x >= x = found(f(x))
       
       active(f(x)) = x >= x = f(active(x))
       
       f(mark(x)) = x >= x = mark(f(x))
       
       top(mark(x)) = x >= x = top(check(x))
       
       top(found(x)) = x >= x = top(active(x))
      problem:
       strict:
        active(f(x)) -> mark(x)
        top(active(c())) -> top(mark(c()))
        check(f(x)) -> f(check(x))
        check(x) -> start(match(f(X()),x))
        match(f(x),f(y)) -> f(match(x,y))
        match(X(),x) -> proper(x)
        proper(c()) -> ok(c())
        proper(f(x)) -> f(proper(x))
        f(ok(x)) -> ok(f(x))
        f(found(x)) -> found(f(x))
        active(f(x)) -> f(active(x))
        f(mark(x)) -> mark(f(x))
       weak:
        start(ok(x)) -> found(x)
        top(mark(x)) -> top(check(x))
        top(found(x)) -> top(active(x))
      Matrix Interpretation Processor:
       dimension: 1
       max_matrix:
        1
        interpretation:
         [found](x0) = x0,
         
         [ok](x0) = x0,
         
         [proper](x0) = x0,
         
         [start](x0) = x0 + 1,
         
         [match](x0, x1) = x0 + x1,
         
         [X] = 1,
         
         [check](x0) = x0,
         
         [top](x0) = x0,
         
         [c] = 0,
         
         [mark](x0) = x0,
         
         [active](x0) = x0,
         
         [f](x0) = x0
        orientation:
         active(f(x)) = x >= x = mark(x)
         
         top(active(c())) = 0 >= 0 = top(mark(c()))
         
         check(f(x)) = x >= x = f(check(x))
         
         check(x) = x >= x + 2 = start(match(f(X()),x))
         
         match(f(x),f(y)) = x + y >= x + y = f(match(x,y))
         
         match(X(),x) = x + 1 >= x = proper(x)
         
         proper(c()) = 0 >= 0 = ok(c())
         
         proper(f(x)) = x >= x = f(proper(x))
         
         f(ok(x)) = x >= x = ok(f(x))
         
         f(found(x)) = x >= x = found(f(x))
         
         active(f(x)) = x >= x = f(active(x))
         
         f(mark(x)) = x >= x = mark(f(x))
         
         start(ok(x)) = x + 1 >= x = found(x)
         
         top(mark(x)) = x >= x = top(check(x))
         
         top(found(x)) = x >= x = top(active(x))
        problem:
         strict:
          active(f(x)) -> mark(x)
          top(active(c())) -> top(mark(c()))
          check(f(x)) -> f(check(x))
          check(x) -> start(match(f(X()),x))
          match(f(x),f(y)) -> f(match(x,y))
          proper(c()) -> ok(c())
          proper(f(x)) -> f(proper(x))
          f(ok(x)) -> ok(f(x))
          f(found(x)) -> found(f(x))
          active(f(x)) -> f(active(x))
          f(mark(x)) -> mark(f(x))
         weak:
          match(X(),x) -> proper(x)
          start(ok(x)) -> found(x)
          top(mark(x)) -> top(check(x))
          top(found(x)) -> top(active(x))
        Matrix Interpretation Processor:
         dimension: 1
         max_matrix:
          1
          interpretation:
           [found](x0) = x0 + 1,
           
           [ok](x0) = x0,
           
           [proper](x0) = x0 + 1,
           
           [start](x0) = x0 + 1,
           
           [match](x0, x1) = x0 + x1 + 1,
           
           [X] = 0,
           
           [check](x0) = x0,
           
           [top](x0) = x0,
           
           [c] = 0,
           
           [mark](x0) = x0,
           
           [active](x0) = x0,
           
           [f](x0) = x0
          orientation:
           active(f(x)) = x >= x = mark(x)
           
           top(active(c())) = 0 >= 0 = top(mark(c()))
           
           check(f(x)) = x >= x = f(check(x))
           
           check(x) = x >= x + 2 = start(match(f(X()),x))
           
           match(f(x),f(y)) = x + y + 1 >= x + y + 1 = f(match(x,y))
           
           proper(c()) = 1 >= 0 = ok(c())
           
           proper(f(x)) = x + 1 >= x + 1 = f(proper(x))
           
           f(ok(x)) = x >= x = ok(f(x))
           
           f(found(x)) = x + 1 >= x + 1 = found(f(x))
           
           active(f(x)) = x >= x = f(active(x))
           
           f(mark(x)) = x >= x = mark(f(x))
           
           match(X(),x) = x + 1 >= x + 1 = proper(x)
           
           start(ok(x)) = x + 1 >= x + 1 = found(x)
           
           top(mark(x)) = x >= x = top(check(x))
           
           top(found(x)) = x + 1 >= x = top(active(x))
          problem:
           strict:
            active(f(x)) -> mark(x)
            top(active(c())) -> top(mark(c()))
            check(f(x)) -> f(check(x))
            check(x) -> start(match(f(X()),x))
            match(f(x),f(y)) -> f(match(x,y))
            proper(f(x)) -> f(proper(x))
            f(ok(x)) -> ok(f(x))
            f(found(x)) -> found(f(x))
            active(f(x)) -> f(active(x))
            f(mark(x)) -> mark(f(x))
           weak:
            proper(c()) -> ok(c())
            match(X(),x) -> proper(x)
            start(ok(x)) -> found(x)
            top(mark(x)) -> top(check(x))
            top(found(x)) -> top(active(x))
          Matrix Interpretation Processor:
           dimension: 1
           max_matrix:
            1
            interpretation:
             [found](x0) = x0 + 1,
             
             [ok](x0) = x0,
             
             [proper](x0) = x0 + 1,
             
             [start](x0) = x0 + 1,
             
             [match](x0, x1) = x0 + x1 + 1,
             
             [X] = 0,
             
             [check](x0) = x0,
             
             [top](x0) = x0 + 1,
             
             [c] = 1,
             
             [mark](x0) = x0,
             
             [active](x0) = x0 + 1,
             
             [f](x0) = x0
            orientation:
             active(f(x)) = x + 1 >= x = mark(x)
             
             top(active(c())) = 3 >= 2 = top(mark(c()))
             
             check(f(x)) = x >= x = f(check(x))
             
             check(x) = x >= x + 2 = start(match(f(X()),x))
             
             match(f(x),f(y)) = x + y + 1 >= x + y + 1 = f(match(x,y))
             
             proper(f(x)) = x + 1 >= x + 1 = f(proper(x))
             
             f(ok(x)) = x >= x = ok(f(x))
             
             f(found(x)) = x + 1 >= x + 1 = found(f(x))
             
             active(f(x)) = x + 1 >= x + 1 = f(active(x))
             
             f(mark(x)) = x >= x = mark(f(x))
             
             proper(c()) = 2 >= 1 = ok(c())
             
             match(X(),x) = x + 1 >= x + 1 = proper(x)
             
             start(ok(x)) = x + 1 >= x + 1 = found(x)
             
             top(mark(x)) = x + 1 >= x + 1 = top(check(x))
             
             top(found(x)) = x + 2 >= x + 2 = top(active(x))
            problem:
             strict:
              check(f(x)) -> f(check(x))
              check(x) -> start(match(f(X()),x))
              match(f(x),f(y)) -> f(match(x,y))
              proper(f(x)) -> f(proper(x))
              f(ok(x)) -> ok(f(x))
              f(found(x)) -> found(f(x))
              active(f(x)) -> f(active(x))
              f(mark(x)) -> mark(f(x))
             weak:
              active(f(x)) -> mark(x)
              top(active(c())) -> top(mark(c()))
              proper(c()) -> ok(c())
              match(X(),x) -> proper(x)
              start(ok(x)) -> found(x)
              top(mark(x)) -> top(check(x))
              top(found(x)) -> top(active(x))
            Matrix Interpretation Processor:
             dimension: 1
             max_matrix:
              1
              interpretation:
               [found](x0) = x0,
               
               [ok](x0) = x0,
               
               [proper](x0) = x0,
               
               [start](x0) = x0,
               
               [match](x0, x1) = x0 + x1 + 1,
               
               [X] = 1,
               
               [check](x0) = x0,
               
               [top](x0) = x0 + 1,
               
               [c] = 1,
               
               [mark](x0) = x0,
               
               [active](x0) = x0,
               
               [f](x0) = x0 + 1
              orientation:
               check(f(x)) = x + 1 >= x + 1 = f(check(x))
               
               check(x) = x >= x + 3 = start(match(f(X()),x))
               
               match(f(x),f(y)) = x + y + 3 >= x + y + 2 = f(match(x,y))
               
               proper(f(x)) = x + 1 >= x + 1 = f(proper(x))
               
               f(ok(x)) = x + 1 >= x + 1 = ok(f(x))
               
               f(found(x)) = x + 1 >= x + 1 = found(f(x))
               
               active(f(x)) = x + 1 >= x + 1 = f(active(x))
               
               f(mark(x)) = x + 1 >= x + 1 = mark(f(x))
               
               active(f(x)) = x + 1 >= x = mark(x)
               
               top(active(c())) = 2 >= 2 = top(mark(c()))
               
               proper(c()) = 1 >= 1 = ok(c())
               
               match(X(),x) = x + 2 >= x = proper(x)
               
               start(ok(x)) = x >= x = found(x)
               
               top(mark(x)) = x + 1 >= x + 1 = top(check(x))
               
               top(found(x)) = x + 1 >= x + 1 = top(active(x))
              problem:
               strict:
                check(f(x)) -> f(check(x))
                check(x) -> start(match(f(X()),x))
                proper(f(x)) -> f(proper(x))
                f(ok(x)) -> ok(f(x))
                f(found(x)) -> found(f(x))
                active(f(x)) -> f(active(x))
                f(mark(x)) -> mark(f(x))
               weak:
                match(f(x),f(y)) -> f(match(x,y))
                active(f(x)) -> mark(x)
                top(active(c())) -> top(mark(c()))
                proper(c()) -> ok(c())
                match(X(),x) -> proper(x)
                start(ok(x)) -> found(x)
                top(mark(x)) -> top(check(x))
                top(found(x)) -> top(active(x))
              Matrix Interpretation Processor:
               dimension: 2
               max_matrix:
                [1 1]
                [0 1]
                interpretation:
                                 
                 [found](x0) = x0,
                 
                              
                 [ok](x0) = x0,
                 
                                  
                 [proper](x0) = x0,
                 
                                 
                 [start](x0) = x0,
                 
                                   [1 0]       
                 [match](x0, x1) = [0 0]x0 + x1,
                 
                       [0]
                 [X] = [0],
                 
                                 
                 [check](x0) = x0,
                 
                             [1 0]  
                 [top](x0) = [0 0]x0,
                 
                       [0]
                 [c] = [0],
                 
                                   [0]
                 [mark](x0) = x0 + [1],
                 
                                  
                 [active](x0) = x0,
                 
                           [1 1]     [0]
                 [f](x0) = [0 1]x0 + [1]
                orientation:
                               [1 1]    [0]    [1 1]    [0]              
                 check(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(check(x))
                 
                                                           
                 check(x) = x >= x = start(match(f(X()),x))
                 
                                [1 1]    [0]    [1 1]    [0]               
                 proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x))
                 
                            [1 1]    [0]    [1 1]    [0]           
                 f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x))
                 
                               [1 1]    [0]    [1 1]    [0]              
                 f(found(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(f(x))
                 
                                [1 1]    [0]    [1 1]    [0]               
                 active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x))
                 
                              [1 1]    [1]    [1 1]    [0]             
                 f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x))
                 
                                    [1 1]    [1 1]    [0]    [1 0]    [1 1]    [0]                
                 match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y))
                 
                                [1 1]    [0]        [0]          
                 active(f(x)) = [0 1]x + [1] >= x + [1] = mark(x)
                 
                                    [0]    [0]                 
                 top(active(c())) = [0] >= [0] = top(mark(c()))
                 
                               [0]    [0]          
                 proper(c()) = [0] >= [0] = ok(c())
                 
                                                  
                 match(X(),x) = x >= x = proper(x)
                 
                                                 
                 start(ok(x)) = x >= x = found(x)
                 
                                [1 0]     [1 0]                 
                 top(mark(x)) = [0 0]x >= [0 0]x = top(check(x))
                 
                                 [1 0]     [1 0]                  
                 top(found(x)) = [0 0]x >= [0 0]x = top(active(x))
                problem:
                 strict:
                  check(f(x)) -> f(check(x))
                  check(x) -> start(match(f(X()),x))
                  proper(f(x)) -> f(proper(x))
                  f(ok(x)) -> ok(f(x))
                  f(found(x)) -> found(f(x))
                  active(f(x)) -> f(active(x))
                 weak:
                  f(mark(x)) -> mark(f(x))
                  match(f(x),f(y)) -> f(match(x,y))
                  active(f(x)) -> mark(x)
                  top(active(c())) -> top(mark(c()))
                  proper(c()) -> ok(c())
                  match(X(),x) -> proper(x)
                  start(ok(x)) -> found(x)
                  top(mark(x)) -> top(check(x))
                  top(found(x)) -> top(active(x))
                Matrix Interpretation Processor:
                 dimension: 2
                 max_matrix:
                  [1 1]
                  [0 1]
                  interpretation:
                                      [0]
                   [found](x0) = x0 + [1],
                   
                                
                   [ok](x0) = x0,
                   
                                    
                   [proper](x0) = x0,
                   
                                      [0]
                   [start](x0) = x0 + [1],
                   
                                     [1 0]       
                   [match](x0, x1) = [0 0]x0 + x1,
                   
                         [0]
                   [X] = [0],
                   
                                 [1 1]     [0]
                   [check](x0) = [0 1]x0 + [1],
                   
                               [1 0]  
                   [top](x0) = [0 0]x0,
                   
                         [0]
                   [c] = [0],
                   
                                [1 1]     [0]
                   [mark](x0) = [0 1]x0 + [1],
                   
                                    
                   [active](x0) = x0,
                   
                             [1 1]     [0]
                   [f](x0) = [0 1]x0 + [1]
                  orientation:
                                 [1 2]    [1]    [1 2]    [1]              
                   check(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(check(x))
                   
                              [1 1]    [0]        [0]                         
                   check(x) = [0 1]x + [1] >= x + [1] = start(match(f(X()),x))
                   
                                  [1 1]    [0]    [1 1]    [0]               
                   proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x))
                   
                              [1 1]    [0]    [1 1]    [0]           
                   f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x))
                   
                                 [1 1]    [1]    [1 1]    [0]              
                   f(found(x)) = [0 1]x + [2] >= [0 1]x + [2] = found(f(x))
                   
                                  [1 1]    [0]    [1 1]    [0]               
                   active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x))
                   
                                [1 2]    [1]    [1 2]    [1]             
                   f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x))
                   
                                      [1 1]    [1 1]    [0]    [1 0]    [1 1]    [0]                
                   match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y))
                   
                                  [1 1]    [0]    [1 1]    [0]          
                   active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x)
                   
                                      [0]    [0]                 
                   top(active(c())) = [0] >= [0] = top(mark(c()))
                   
                                 [0]    [0]          
                   proper(c()) = [0] >= [0] = ok(c())
                   
                                                    
                   match(X(),x) = x >= x = proper(x)
                   
                                      [0]        [0]           
                   start(ok(x)) = x + [1] >= x + [1] = found(x)
                   
                                  [1 1]     [1 1]                 
                   top(mark(x)) = [0 0]x >= [0 0]x = top(check(x))
                   
                                   [1 0]     [1 0]                  
                   top(found(x)) = [0 0]x >= [0 0]x = top(active(x))
                  problem:
                   strict:
                    check(f(x)) -> f(check(x))
                    check(x) -> start(match(f(X()),x))
                    proper(f(x)) -> f(proper(x))
                    f(ok(x)) -> ok(f(x))
                    active(f(x)) -> f(active(x))
                   weak:
                    f(found(x)) -> found(f(x))
                    f(mark(x)) -> mark(f(x))
                    match(f(x),f(y)) -> f(match(x,y))
                    active(f(x)) -> mark(x)
                    top(active(c())) -> top(mark(c()))
                    proper(c()) -> ok(c())
                    match(X(),x) -> proper(x)
                    start(ok(x)) -> found(x)
                    top(mark(x)) -> top(check(x))
                    top(found(x)) -> top(active(x))
                  Matrix Interpretation Processor:
                   dimension: 2
                   max_matrix:
                    [1 1]
                    [0 1]
                    interpretation:
                                     
                     [found](x0) = x0,
                     
                                  
                     [ok](x0) = x0,
                     
                                      
                     [proper](x0) = x0,
                     
                                     
                     [start](x0) = x0,
                     
                                       [1 0]       
                     [match](x0, x1) = [0 0]x0 + x1,
                     
                           [0]
                     [X] = [0],
                     
                                   [1 1]  
                     [check](x0) = [0 1]x0,
                     
                                 [1 0]     [0]
                     [top](x0) = [0 0]x0 + [1],
                     
                           [0]
                     [c] = [0],
                     
                                  [1 1]     [0]
                     [mark](x0) = [0 1]x0 + [1],
                     
                                      
                     [active](x0) = x0,
                     
                               [1 1]     [0]
                     [f](x0) = [0 1]x0 + [1]
                    orientation:
                                   [1 2]    [1]    [1 2]    [0]              
                     check(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(check(x))
                     
                                [1 1]                               
                     check(x) = [0 1]x >= x = start(match(f(X()),x))
                     
                                    [1 1]    [0]    [1 1]    [0]               
                     proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x))
                     
                                [1 1]    [0]    [1 1]    [0]           
                     f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x))
                     
                                    [1 1]    [0]    [1 1]    [0]               
                     active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x))
                     
                                   [1 1]    [0]    [1 1]    [0]              
                     f(found(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(f(x))
                     
                                  [1 2]    [1]    [1 2]    [1]             
                     f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x))
                     
                                        [1 1]    [1 1]    [0]    [1 0]    [1 1]    [0]                
                     match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y))
                     
                                    [1 1]    [0]    [1 1]    [0]          
                     active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x)
                     
                                        [0]    [0]                 
                     top(active(c())) = [1] >= [1] = top(mark(c()))
                     
                                   [0]    [0]          
                     proper(c()) = [0] >= [0] = ok(c())
                     
                                                      
                     match(X(),x) = x >= x = proper(x)
                     
                                                     
                     start(ok(x)) = x >= x = found(x)
                     
                                    [1 1]    [0]    [1 1]    [0]                
                     top(mark(x)) = [0 0]x + [1] >= [0 0]x + [1] = top(check(x))
                     
                                     [1 0]    [0]    [1 0]    [0]                 
                     top(found(x)) = [0 0]x + [1] >= [0 0]x + [1] = top(active(x))
                    problem:
                     strict:
                      check(x) -> start(match(f(X()),x))
                      proper(f(x)) -> f(proper(x))
                      f(ok(x)) -> ok(f(x))
                      active(f(x)) -> f(active(x))
                     weak:
                      check(f(x)) -> f(check(x))
                      f(found(x)) -> found(f(x))
                      f(mark(x)) -> mark(f(x))
                      match(f(x),f(y)) -> f(match(x,y))
                      active(f(x)) -> mark(x)
                      top(active(c())) -> top(mark(c()))
                      proper(c()) -> ok(c())
                      match(X(),x) -> proper(x)
                      start(ok(x)) -> found(x)
                      top(mark(x)) -> top(check(x))
                      top(found(x)) -> top(active(x))
                    Matrix Interpretation Processor:
                     dimension: 2
                     max_matrix:
                      [1 1]
                      [0 1]
                      interpretation:
                                       
                       [found](x0) = x0,
                       
                                    
                       [ok](x0) = x0,
                       
                                      [1 1]  
                       [proper](x0) = [0 1]x0,
                       
                                          [0]
                       [start](x0) = x0 + [1],
                       
                                         [1 0]     [1 1]  
                       [match](x0, x1) = [0 0]x0 + [0 1]x1,
                       
                             [0]
                       [X] = [0],
                       
                                     [1 1]     [0]
                       [check](x0) = [0 1]x0 + [1],
                       
                                   [1 0]  
                       [top](x0) = [0 0]x0,
                       
                             [0]
                       [c] = [0],
                       
                                    [1 1]     [0]
                       [mark](x0) = [0 1]x0 + [1],
                       
                                        
                       [active](x0) = x0,
                       
                                 [1 1]     [0]
                       [f](x0) = [0 1]x0 + [1]
                      orientation:
                                  [1 1]    [0]    [1 1]    [0]                         
                       check(x) = [0 1]x + [1] >= [0 1]x + [1] = start(match(f(X()),x))
                       
                                      [1 2]    [1]    [1 2]    [0]               
                       proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x))
                       
                                  [1 1]    [0]    [1 1]    [0]           
                       f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x))
                       
                                      [1 1]    [0]    [1 1]    [0]               
                       active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x))
                       
                                     [1 2]    [1]    [1 2]    [1]              
                       check(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(check(x))
                       
                                     [1 1]    [0]    [1 1]    [0]              
                       f(found(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(f(x))
                       
                                    [1 2]    [1]    [1 2]    [1]             
                       f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x))
                       
                                          [1 1]    [1 2]    [1]    [1 0]    [1 2]    [0]                
                       match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y))
                       
                                      [1 1]    [0]    [1 1]    [0]          
                       active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x)
                       
                                          [0]    [0]                 
                       top(active(c())) = [0] >= [0] = top(mark(c()))
                       
                                     [0]    [0]          
                       proper(c()) = [0] >= [0] = ok(c())
                       
                                      [1 1]     [1 1]             
                       match(X(),x) = [0 1]x >= [0 1]x = proper(x)
                       
                                          [0]                
                       start(ok(x)) = x + [1] >= x = found(x)
                       
                                      [1 1]     [1 1]                 
                       top(mark(x)) = [0 0]x >= [0 0]x = top(check(x))
                       
                                       [1 0]     [1 0]                  
                       top(found(x)) = [0 0]x >= [0 0]x = top(active(x))
                      problem:
                       strict:
                        check(x) -> start(match(f(X()),x))
                        f(ok(x)) -> ok(f(x))
                        active(f(x)) -> f(active(x))
                       weak:
                        proper(f(x)) -> f(proper(x))
                        check(f(x)) -> f(check(x))
                        f(found(x)) -> found(f(x))
                        f(mark(x)) -> mark(f(x))
                        match(f(x),f(y)) -> f(match(x,y))
                        active(f(x)) -> mark(x)
                        top(active(c())) -> top(mark(c()))
                        proper(c()) -> ok(c())
                        match(X(),x) -> proper(x)
                        start(ok(x)) -> found(x)
                        top(mark(x)) -> top(check(x))
                        top(found(x)) -> top(active(x))
                      Matrix Interpretation Processor:
                       dimension: 2
                       max_matrix:
                        [1 1]
                        [0 1]
                        interpretation:
                                       [1 1]     [0]
                         [found](x0) = [0 1]x0 + [1],
                         
                                      
                         [ok](x0) = x0,
                         
                                          
                         [proper](x0) = x0,
                         
                                       [1 1]     [0]
                         [start](x0) = [0 1]x0 + [1],
                         
                                           [1 0]       
                         [match](x0, x1) = [0 0]x0 + x1,
                         
                               [0]
                         [X] = [0],
                         
                                       [1 1]     [0]
                         [check](x0) = [0 1]x0 + [1],
                         
                                     [1 0]  
                         [top](x0) = [0 0]x0,
                         
                               [0]
                         [c] = [0],
                         
                                      [1 1]     [0]
                         [mark](x0) = [0 1]x0 + [1],
                         
                                        [1 1]  
                         [active](x0) = [0 1]x0,
                         
                                   [1 1]     [0]
                         [f](x0) = [0 1]x0 + [1]
                        orientation:
                                    [1 1]    [0]    [1 1]    [0]                         
                         check(x) = [0 1]x + [1] >= [0 1]x + [1] = start(match(f(X()),x))
                         
                                    [1 1]    [0]    [1 1]    [0]           
                         f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x))
                         
                                        [1 2]    [1]    [1 2]    [0]               
                         active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x))
                         
                                        [1 1]    [0]    [1 1]    [0]               
                         proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x))
                         
                                       [1 2]    [1]    [1 2]    [1]              
                         check(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(check(x))
                         
                                       [1 2]    [1]    [1 2]    [1]              
                         f(found(x)) = [0 1]x + [2] >= [0 1]x + [2] = found(f(x))
                         
                                      [1 2]    [1]    [1 2]    [1]             
                         f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x))
                         
                                            [1 1]    [1 1]    [0]    [1 0]    [1 1]    [0]                
                         match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y))
                         
                                        [1 2]    [1]    [1 1]    [0]          
                         active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x)
                         
                                            [0]    [0]                 
                         top(active(c())) = [0] >= [0] = top(mark(c()))
                         
                                       [0]    [0]          
                         proper(c()) = [0] >= [0] = ok(c())
                         
                                                          
                         match(X(),x) = x >= x = proper(x)
                         
                                        [1 1]    [0]    [1 1]    [0]           
                         start(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(x)
                         
                                        [1 1]     [1 1]                 
                         top(mark(x)) = [0 0]x >= [0 0]x = top(check(x))
                         
                                         [1 1]     [1 1]                  
                         top(found(x)) = [0 0]x >= [0 0]x = top(active(x))
                        problem:
                         strict:
                          check(x) -> start(match(f(X()),x))
                          f(ok(x)) -> ok(f(x))
                         weak:
                          active(f(x)) -> f(active(x))
                          proper(f(x)) -> f(proper(x))
                          check(f(x)) -> f(check(x))
                          f(found(x)) -> found(f(x))
                          f(mark(x)) -> mark(f(x))
                          match(f(x),f(y)) -> f(match(x,y))
                          active(f(x)) -> mark(x)
                          top(active(c())) -> top(mark(c()))
                          proper(c()) -> ok(c())
                          match(X(),x) -> proper(x)
                          start(ok(x)) -> found(x)
                          top(mark(x)) -> top(check(x))
                          top(found(x)) -> top(active(x))
                        Matrix Interpretation Processor:
                         dimension: 2
                         max_matrix:
                          [1 1]
                          [0 1]
                          interpretation:
                                           
                           [found](x0) = x0,
                           
                                           [0]
                           [ok](x0) = x0 + [1],
                           
                                          [1 1]     [0]
                           [proper](x0) = [0 1]x0 + [1],
                           
                                           
                           [start](x0) = x0,
                           
                                             [1 0]     [1 1]     [0]
                           [match](x0, x1) = [0 0]x0 + [0 1]x1 + [1],
                           
                                 [0]
                           [X] = [0],
                           
                                         [1 1]     [0]
                           [check](x0) = [0 1]x0 + [1],
                           
                                       [1 0]  
                           [top](x0) = [0 0]x0,
                           
                                 [0]
                           [c] = [0],
                           
                                        [1 1]     [0]
                           [mark](x0) = [0 1]x0 + [1],
                           
                                            
                           [active](x0) = x0,
                           
                                     [1 1]     [0]
                           [f](x0) = [0 1]x0 + [1]
                          orientation:
                                      [1 1]    [0]    [1 1]    [0]                         
                           check(x) = [0 1]x + [1] >= [0 1]x + [1] = start(match(f(X()),x))
                           
                                      [1 1]    [1]    [1 1]    [0]           
                           f(ok(x)) = [0 1]x + [2] >= [0 1]x + [2] = ok(f(x))
                           
                                          [1 1]    [0]    [1 1]    [0]               
                           active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x))
                           
                                          [1 2]    [1]    [1 2]    [1]               
                           proper(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(proper(x))
                           
                                         [1 2]    [1]    [1 2]    [1]              
                           check(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(check(x))
                           
                                         [1 1]    [0]    [1 1]    [0]              
                           f(found(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(f(x))
                           
                                        [1 2]    [1]    [1 2]    [1]             
                           f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x))
                           
                                              [1 1]    [1 2]    [1]    [1 0]    [1 2]    [1]                
                           match(f(x),f(y)) = [0 0]x + [0 1]y + [2] >= [0 0]x + [0 1]y + [2] = f(match(x,y))
                           
                                          [1 1]    [0]    [1 1]    [0]          
                           active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x)
                           
                                              [0]    [0]                 
                           top(active(c())) = [0] >= [0] = top(mark(c()))
                           
                                         [0]    [0]          
                           proper(c()) = [1] >= [1] = ok(c())
                           
                                          [1 1]    [0]    [1 1]    [0]            
                           match(X(),x) = [0 1]x + [1] >= [0 1]x + [1] = proper(x)
                           
                                              [0]                
                           start(ok(x)) = x + [1] >= x = found(x)
                           
                                          [1 1]     [1 1]                 
                           top(mark(x)) = [0 0]x >= [0 0]x = top(check(x))
                           
                                           [1 0]     [1 0]                  
                           top(found(x)) = [0 0]x >= [0 0]x = top(active(x))
                          problem:
                           strict:
                            check(x) -> start(match(f(X()),x))
                           weak:
                            f(ok(x)) -> ok(f(x))
                            active(f(x)) -> f(active(x))
                            proper(f(x)) -> f(proper(x))
                            check(f(x)) -> f(check(x))
                            f(found(x)) -> found(f(x))
                            f(mark(x)) -> mark(f(x))
                            match(f(x),f(y)) -> f(match(x,y))
                            active(f(x)) -> mark(x)
                            top(active(c())) -> top(mark(c()))
                            proper(c()) -> ok(c())
                            match(X(),x) -> proper(x)
                            start(ok(x)) -> found(x)
                            top(mark(x)) -> top(check(x))
                            top(found(x)) -> top(active(x))
                          Matrix Interpretation Processor:
                           dimension: 3
                           max_matrix:
                            [1 1 1]
                            [0 1 0]
                            [0 0 1]
                            interpretation:
                                           [1 1 1]     [0]
                             [found](x0) = [0 0 0]x0 + [0]
                                           [0 0 0]     [1],
                             
                                          
                             [ok](x0) = x0
                                          ,
                             
                                            [1 0 0]     [0]
                             [proper](x0) = [0 0 0]x0 + [1]
                                            [0 0 1]     [0],
                             
                                           [1 1 1]     [0]
                             [start](x0) = [0 0 0]x0 + [0]
                                           [0 0 0]     [1],
                             
                                               [1 0 0]     [1 0 0]  
                             [match](x0, x1) = [0 1 0]x0 + [0 0 0]x1
                                               [0 0 0]     [0 0 1]  ,
                             
                                   [0]
                             [X] = [1]
                                   [0],
                             
                                           [1 0 1]     [1]
                             [check](x0) = [0 0 0]x0 + [0]
                                           [0 0 0]     [1],
                             
                                         [1 1 0]     [0]
                             [top](x0) = [0 0 0]x0 + [1]
                                         [0 0 0]     [0],
                             
                                   [1]
                             [c] = [1]
                                   [0],
                             
                                          [1 0 1]     [1]
                             [mark](x0) = [0 0 0]x0 + [0]
                                          [0 0 0]     [1],
                             
                                            [1 0 1]     [0]
                             [active](x0) = [0 1 0]x0 + [0]
                                            [0 0 0]     [1],
                             
                                       [1 0 1]     [0]
                             [f](x0) = [0 0 0]x0 + [0]
                                       [0 0 0]     [1]
                            orientation:
                                        [1 0 1]    [1]    [1 0 1]    [0]                         
                             check(x) = [0 0 0]x + [0] >= [0 0 0]x + [0] = start(match(f(X()),x))
                                        [0 0 0]    [1]    [0 0 0]    [1]                         
                             
                                        [1 0 1]    [0]    [1 0 1]    [0]           
                             f(ok(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = ok(f(x))
                                        [0 0 0]    [1]    [0 0 0]    [1]           
                             
                                            [1 0 1]    [1]    [1 0 1]    [1]               
                             active(f(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = f(active(x))
                                            [0 0 0]    [1]    [0 0 0]    [1]               
                             
                                            [1 0 1]    [0]    [1 0 1]    [0]               
                             proper(f(x)) = [0 0 0]x + [1] >= [0 0 0]x + [0] = f(proper(x))
                                            [0 0 0]    [1]    [0 0 0]    [1]               
                             
                                           [1 0 1]    [2]    [1 0 1]    [2]              
                             check(f(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = f(check(x))
                                           [0 0 0]    [1]    [0 0 0]    [1]              
                             
                                           [1 1 1]    [1]    [1 0 1]    [1]              
                             f(found(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = found(f(x))
                                           [0 0 0]    [1]    [0 0 0]    [1]              
                             
                                          [1 0 1]    [2]    [1 0 1]    [2]             
                             f(mark(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = mark(f(x))
                                          [0 0 0]    [1]    [0 0 0]    [1]             
                             
                                                [1 0 1]    [1 0 1]    [0]    [1 0 0]    [1 0 1]    [0]                
                             match(f(x),f(y)) = [0 0 0]x + [0 0 0]y + [0] >= [0 0 0]x + [0 0 0]y + [0] = f(match(x,y))
                                                [0 0 0]    [0 0 0]    [1]    [0 0 0]    [0 0 0]    [1]                
                             
                                            [1 0 1]    [1]    [1 0 1]    [1]          
                             active(f(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = mark(x)
                                            [0 0 0]    [1]    [0 0 0]    [1]          
                             
                                                [2]    [2]                 
                             top(active(c())) = [1] >= [1] = top(mark(c()))
                                                [0]    [0]                 
                             
                                           [1]    [1]          
                             proper(c()) = [1] >= [1] = ok(c())
                                           [0]    [0]          
                             
                                            [1 0 0]    [0]    [1 0 0]    [0]            
                             match(X(),x) = [0 0 0]x + [1] >= [0 0 0]x + [1] = proper(x)
                                            [0 0 1]    [0]    [0 0 1]    [0]            
                             
                                            [1 1 1]    [0]    [1 1 1]    [0]           
                             start(ok(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = found(x)
                                            [0 0 0]    [1]    [0 0 0]    [1]           
                             
                                            [1 0 1]    [1]    [1 0 1]    [1]                
                             top(mark(x)) = [0 0 0]x + [1] >= [0 0 0]x + [1] = top(check(x))
                                            [0 0 0]    [0]    [0 0 0]    [0]                
                             
                                             [1 1 1]    [0]    [1 1 1]    [0]                 
                             top(found(x)) = [0 0 0]x + [1] >= [0 0 0]x + [1] = top(active(x))
                                             [0 0 0]    [0]    [0 0 0]    [0]                 
                            problem:
                             strict:
                              
                             weak:
                              check(x) -> start(match(f(X()),x))
                              f(ok(x)) -> ok(f(x))
                              active(f(x)) -> f(active(x))
                              proper(f(x)) -> f(proper(x))
                              check(f(x)) -> f(check(x))
                              f(found(x)) -> found(f(x))
                              f(mark(x)) -> mark(f(x))
                              match(f(x),f(y)) -> f(match(x,y))
                              active(f(x)) -> mark(x)
                              top(active(c())) -> top(mark(c()))
                              proper(c()) -> ok(c())
                              match(X(),x) -> proper(x)
                              start(ok(x)) -> found(x)
                              top(mark(x)) -> top(check(x))
                              top(found(x)) -> top(active(x))
                            Qed