YES

Problem:
 a__f(X,X) -> a__f(a(),b())
 a__b() -> a()
 mark(f(X1,X2)) -> a__f(mark(X1),X2)
 mark(b()) -> a__b()
 mark(a()) -> a()
 a__f(X1,X2) -> f(X1,X2)
 a__b() -> b()

Proof:
 Matrix Interpretation Processor: dim=3
  
  interpretation:
                     [1]
   [mark](x0) = x0 + [0]
                     [0],
   
                 [1 0 0]     [1 0 0]  
   [f](x0, x1) = [0 1 1]x0 + [1 0 0]x1
                 [0 0 0]     [0 0 0]  ,
   
            [0]
   [a__b] = [0]
            [0],
   
         [0]
   [b] = [0]
         [0],
   
         [0]
   [a] = [0]
         [0],
   
                    [1 0 0]     [1 0 0]  
   [a__f](x0, x1) = [0 1 1]x0 + [1 0 0]x1
                    [0 0 0]     [0 0 0]  
  orientation:
               [2 0 0]     [0]                
   a__f(X,X) = [1 1 1]X >= [0] = a__f(a(),b())
               [0 0 0]     [0]                
   
            [0]    [0]      
   a__b() = [0] >= [0] = a()
            [0]    [0]      
   
                    [1 0 0]     [1 0 0]     [1]    [1 0 0]     [1 0 0]     [1]                    
   mark(f(X1,X2)) = [0 1 1]X1 + [1 0 0]X2 + [0] >= [0 1 1]X1 + [1 0 0]X2 + [0] = a__f(mark(X1),X2)
                    [0 0 0]     [0 0 0]     [0]    [0 0 0]     [0 0 0]     [0]                    
   
               [1]    [0]         
   mark(b()) = [0] >= [0] = a__b()
               [0]    [0]         
   
               [1]    [0]      
   mark(a()) = [0] >= [0] = a()
               [0]    [0]      
   
                 [1 0 0]     [1 0 0]      [1 0 0]     [1 0 0]             
   a__f(X1,X2) = [0 1 1]X1 + [1 0 0]X2 >= [0 1 1]X1 + [1 0 0]X2 = f(X1,X2)
                 [0 0 0]     [0 0 0]      [0 0 0]     [0 0 0]             
   
            [0]    [0]      
   a__b() = [0] >= [0] = b()
            [0]    [0]      
  problem:
   a__f(X,X) -> a__f(a(),b())
   a__b() -> a()
   mark(f(X1,X2)) -> a__f(mark(X1),X2)
   a__f(X1,X2) -> f(X1,X2)
   a__b() -> b()
  Matrix Interpretation Processor: dim=3
   
   interpretation:
                 [1 0 0]  
    [mark](x0) = [1 0 0]x0
                 [0 0 0]  ,
    
                  [1 0 0]     [1 0 0]  
    [f](x0, x1) = [0 0 0]x0 + [1 0 0]x1
                  [0 0 0]     [0 0 0]  ,
    
             [1]
    [a__b] = [0]
             [0],
    
          [0]
    [b] = [0]
          [0],
    
          [0]
    [a] = [0]
          [0],
    
                     [1 0 1]     [1 0 0]  
    [a__f](x0, x1) = [1 0 0]x0 + [1 0 0]x1
                     [0 0 1]     [0 0 0]  
   orientation:
                [2 0 1]     [0]                
    a__f(X,X) = [2 0 0]X >= [0] = a__f(a(),b())
                [0 0 1]     [0]                
    
             [1]    [0]      
    a__b() = [0] >= [0] = a()
             [0]    [0]      
    
                     [1 0 0]     [1 0 0]      [1 0 0]     [1 0 0]                      
    mark(f(X1,X2)) = [1 0 0]X1 + [1 0 0]X2 >= [1 0 0]X1 + [1 0 0]X2 = a__f(mark(X1),X2)
                     [0 0 0]     [0 0 0]      [0 0 0]     [0 0 0]                      
    
                  [1 0 1]     [1 0 0]      [1 0 0]     [1 0 0]             
    a__f(X1,X2) = [1 0 0]X1 + [1 0 0]X2 >= [0 0 0]X1 + [1 0 0]X2 = f(X1,X2)
                  [0 0 1]     [0 0 0]      [0 0 0]     [0 0 0]             
    
             [1]    [0]      
    a__b() = [0] >= [0] = b()
             [0]    [0]      
   problem:
    a__f(X,X) -> a__f(a(),b())
    mark(f(X1,X2)) -> a__f(mark(X1),X2)
    a__f(X1,X2) -> f(X1,X2)
   Matrix Interpretation Processor: dim=3
    
    interpretation:
                  [1 1 0]  
     [mark](x0) = [1 0 1]x0
                  [0 0 1]  ,
     
                        [1 0 0]     [0]
     [f](x0, x1) = x0 + [0 0 0]x1 + [1]
                        [0 0 0]     [1],
     
           [0]
     [b] = [0]
           [0],
     
           [0]
     [a] = [0]
           [0],
     
                           [1 0 0]     [0]
     [a__f](x0, x1) = x0 + [0 0 0]x1 + [1]
                           [0 0 0]     [1]
    orientation:
                 [2 0 0]    [0]    [0]                
     a__f(X,X) = [0 1 0]X + [1] >= [1] = a__f(a(),b())
                 [0 0 1]    [1]    [1]                
     
                      [1 1 0]     [1 0 0]     [1]    [1 1 0]     [1 0 0]     [0]                    
     mark(f(X1,X2)) = [1 0 1]X1 + [1 0 0]X2 + [1] >= [1 0 1]X1 + [0 0 0]X2 + [1] = a__f(mark(X1),X2)
                      [0 0 1]     [0 0 0]     [1]    [0 0 1]     [0 0 0]     [1]                    
     
                        [1 0 0]     [0]         [1 0 0]     [0]           
     a__f(X1,X2) = X1 + [0 0 0]X2 + [1] >= X1 + [0 0 0]X2 + [1] = f(X1,X2)
                        [0 0 0]     [1]         [0 0 0]     [1]           
    problem:
     a__f(X,X) -> a__f(a(),b())
     a__f(X1,X2) -> f(X1,X2)
    Matrix Interpretation Processor: dim=3
     
     interpretation:
                    [1 0 0]     [1 0 0]  
      [f](x0, x1) = [0 0 0]x0 + [0 0 0]x1
                    [0 0 0]     [0 0 0]  ,
      
            [0]
      [b] = [0]
            [0],
      
            [0]
      [a] = [0]
            [0],
      
                       [1 0 0]     [1 0 0]     [1]
      [a__f](x0, x1) = [0 0 0]x0 + [0 0 0]x1 + [0]
                       [0 0 0]     [0 0 0]     [0]
     orientation:
                  [2 0 0]    [1]    [1]                
      a__f(X,X) = [0 0 0]X + [0] >= [0] = a__f(a(),b())
                  [0 0 0]    [0]    [0]                
      
                    [1 0 0]     [1 0 0]     [1]    [1 0 0]     [1 0 0]             
      a__f(X1,X2) = [0 0 0]X1 + [0 0 0]X2 + [0] >= [0 0 0]X1 + [0 0 0]X2 = f(X1,X2)
                    [0 0 0]     [0 0 0]     [0]    [0 0 0]     [0 0 0]             
     problem:
      a__f(X,X) -> a__f(a(),b())
     DP Processor:
      DPs:
       a__f#(X,X) -> a__f#(a(),b())
      TRS:
       a__f(X,X) -> a__f(a(),b())
      EDG Processor:
       DPs:
        a__f#(X,X) -> a__f#(a(),b())
       TRS:
        a__f(X,X) -> a__f(a(),b())
       graph:
        
       Qed