YES

Problem:
 active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
 active(f(X1,X2)) -> f(active(X1),X2)
 active(g(X)) -> g(active(X))
 f(mark(X1),X2) -> mark(f(X1,X2))
 g(mark(X)) -> mark(g(X))
 proper(f(X1,X2)) -> f(proper(X1),proper(X2))
 proper(g(X)) -> g(proper(X))
 f(ok(X1),ok(X2)) -> ok(f(X1,X2))
 g(ok(X)) -> ok(g(X))
 top(mark(X)) -> top(proper(X))
 top(ok(X)) -> top(active(X))

Proof:
 DP Processor:
  DPs:
   active#(f(g(X),Y)) -> f#(X,f(g(X),Y))
   active#(f(X1,X2)) -> active#(X1)
   active#(f(X1,X2)) -> f#(active(X1),X2)
   active#(g(X)) -> active#(X)
   active#(g(X)) -> g#(active(X))
   f#(mark(X1),X2) -> f#(X1,X2)
   g#(mark(X)) -> g#(X)
   proper#(f(X1,X2)) -> proper#(X2)
   proper#(f(X1,X2)) -> proper#(X1)
   proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
   proper#(g(X)) -> proper#(X)
   proper#(g(X)) -> g#(proper(X))
   f#(ok(X1),ok(X2)) -> f#(X1,X2)
   g#(ok(X)) -> g#(X)
   top#(mark(X)) -> proper#(X)
   top#(mark(X)) -> top#(proper(X))
   top#(ok(X)) -> active#(X)
   top#(ok(X)) -> top#(active(X))
  TRS:
   active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
   active(f(X1,X2)) -> f(active(X1),X2)
   active(g(X)) -> g(active(X))
   f(mark(X1),X2) -> mark(f(X1,X2))
   g(mark(X)) -> mark(g(X))
   proper(f(X1,X2)) -> f(proper(X1),proper(X2))
   proper(g(X)) -> g(proper(X))
   f(ok(X1),ok(X2)) -> ok(f(X1,X2))
   g(ok(X)) -> ok(g(X))
   top(mark(X)) -> top(proper(X))
   top(ok(X)) -> top(active(X))
  Usable Rule Processor:
   DPs:
    active#(f(g(X),Y)) -> f#(X,f(g(X),Y))
    active#(f(X1,X2)) -> active#(X1)
    active#(f(X1,X2)) -> f#(active(X1),X2)
    active#(g(X)) -> active#(X)
    active#(g(X)) -> g#(active(X))
    f#(mark(X1),X2) -> f#(X1,X2)
    g#(mark(X)) -> g#(X)
    proper#(f(X1,X2)) -> proper#(X2)
    proper#(f(X1,X2)) -> proper#(X1)
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
    proper#(g(X)) -> proper#(X)
    proper#(g(X)) -> g#(proper(X))
    f#(ok(X1),ok(X2)) -> f#(X1,X2)
    g#(ok(X)) -> g#(X)
    top#(mark(X)) -> proper#(X)
    top#(mark(X)) -> top#(proper(X))
    top#(ok(X)) -> active#(X)
    top#(ok(X)) -> top#(active(X))
   TRS:
    g(mark(X)) -> mark(g(X))
    g(ok(X)) -> ok(g(X))
    f(mark(X1),X2) -> mark(f(X1,X2))
    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
    active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
    active(f(X1,X2)) -> f(active(X1),X2)
    active(g(X)) -> g(active(X))
    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
    proper(g(X)) -> g(proper(X))
   Matrix Interpretation Processor: dim=1
    
    usable rules:
     g(mark(X)) -> mark(g(X))
     g(ok(X)) -> ok(g(X))
     f(mark(X1),X2) -> mark(f(X1,X2))
     f(ok(X1),ok(X2)) -> ok(f(X1,X2))
     active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
     active(f(X1,X2)) -> f(active(X1),X2)
     active(g(X)) -> g(active(X))
     proper(f(X1,X2)) -> f(proper(X1),proper(X2))
     proper(g(X)) -> g(proper(X))
    interpretation:
     [top#](x0) = x0,
     
     [proper#](x0) = x0,
     
     [g#](x0) = x0 + 1,
     
     [f#](x0, x1) = x0 + x1,
     
     [active#](x0) = 2x0 + 2,
     
     [ok](x0) = 2x0 + 4,
     
     [proper](x0) = x0,
     
     [mark](x0) = x0 + 1,
     
     [active](x0) = 2x0 + 1,
     
     [f](x0, x1) = x0 + x1 + 4,
     
     [g](x0) = 4x0 + 4
    orientation:
     active#(f(g(X),Y)) = 8X + 2Y + 18 >= 5X + Y + 8 = f#(X,f(g(X),Y))
     
     active#(f(X1,X2)) = 2X1 + 2X2 + 10 >= 2X1 + 2 = active#(X1)
     
     active#(f(X1,X2)) = 2X1 + 2X2 + 10 >= 2X1 + X2 + 1 = f#(active(X1),X2)
     
     active#(g(X)) = 8X + 10 >= 2X + 2 = active#(X)
     
     active#(g(X)) = 8X + 10 >= 2X + 2 = g#(active(X))
     
     f#(mark(X1),X2) = X1 + X2 + 1 >= X1 + X2 = f#(X1,X2)
     
     g#(mark(X)) = X + 2 >= X + 1 = g#(X)
     
     proper#(f(X1,X2)) = X1 + X2 + 4 >= X2 = proper#(X2)
     
     proper#(f(X1,X2)) = X1 + X2 + 4 >= X1 = proper#(X1)
     
     proper#(f(X1,X2)) = X1 + X2 + 4 >= X1 + X2 = f#(proper(X1),proper(X2))
     
     proper#(g(X)) = 4X + 4 >= X = proper#(X)
     
     proper#(g(X)) = 4X + 4 >= X + 1 = g#(proper(X))
     
     f#(ok(X1),ok(X2)) = 2X1 + 2X2 + 8 >= X1 + X2 = f#(X1,X2)
     
     g#(ok(X)) = 2X + 5 >= X + 1 = g#(X)
     
     top#(mark(X)) = X + 1 >= X = proper#(X)
     
     top#(mark(X)) = X + 1 >= X = top#(proper(X))
     
     top#(ok(X)) = 2X + 4 >= 2X + 2 = active#(X)
     
     top#(ok(X)) = 2X + 4 >= 2X + 1 = top#(active(X))
     
     g(mark(X)) = 4X + 8 >= 4X + 5 = mark(g(X))
     
     g(ok(X)) = 8X + 20 >= 8X + 12 = ok(g(X))
     
     f(mark(X1),X2) = X1 + X2 + 5 >= X1 + X2 + 5 = mark(f(X1,X2))
     
     f(ok(X1),ok(X2)) = 2X1 + 2X2 + 12 >= 2X1 + 2X2 + 12 = ok(f(X1,X2))
     
     active(f(g(X),Y)) = 8X + 2Y + 17 >= 5X + Y + 13 = mark(f(X,f(g(X),Y)))
     
     active(f(X1,X2)) = 2X1 + 2X2 + 9 >= 2X1 + X2 + 5 = f(active(X1),X2)
     
     active(g(X)) = 8X + 9 >= 8X + 8 = g(active(X))
     
     proper(f(X1,X2)) = X1 + X2 + 4 >= X1 + X2 + 4 = f(proper(X1),proper(X2))
     
     proper(g(X)) = 4X + 4 >= 4X + 4 = g(proper(X))
    problem:
     DPs:
      
     TRS:
      g(mark(X)) -> mark(g(X))
      g(ok(X)) -> ok(g(X))
      f(mark(X1),X2) -> mark(f(X1,X2))
      f(ok(X1),ok(X2)) -> ok(f(X1,X2))
      active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
      active(f(X1,X2)) -> f(active(X1),X2)
      active(g(X)) -> g(active(X))
      proper(f(X1,X2)) -> f(proper(X1),proper(X2))
      proper(g(X)) -> g(proper(X))
    Qed