YES

Problem:
 minus(X,s(Y)) -> pred(minus(X,Y))
 minus(X,0()) -> X
 pred(s(X)) -> X
 le(s(X),s(Y)) -> le(X,Y)
 le(s(X),0()) -> false()
 le(0(),Y) -> true()
 gcd(0(),Y) -> 0()
 gcd(s(X),0()) -> s(X)
 gcd(s(X),s(Y)) -> if(le(Y,X),s(X),s(Y))
 if(true(),s(X),s(Y)) -> gcd(minus(X,Y),s(Y))
 if(false(),s(X),s(Y)) -> gcd(minus(Y,X),s(X))

Proof:
 DP Processor:
  DPs:
   minus#(X,s(Y)) -> minus#(X,Y)
   minus#(X,s(Y)) -> pred#(minus(X,Y))
   le#(s(X),s(Y)) -> le#(X,Y)
   gcd#(s(X),s(Y)) -> le#(Y,X)
   gcd#(s(X),s(Y)) -> if#(le(Y,X),s(X),s(Y))
   if#(true(),s(X),s(Y)) -> minus#(X,Y)
   if#(true(),s(X),s(Y)) -> gcd#(minus(X,Y),s(Y))
   if#(false(),s(X),s(Y)) -> minus#(Y,X)
   if#(false(),s(X),s(Y)) -> gcd#(minus(Y,X),s(X))
  TRS:
   minus(X,s(Y)) -> pred(minus(X,Y))
   minus(X,0()) -> X
   pred(s(X)) -> X
   le(s(X),s(Y)) -> le(X,Y)
   le(s(X),0()) -> false()
   le(0(),Y) -> true()
   gcd(0(),Y) -> 0()
   gcd(s(X),0()) -> s(X)
   gcd(s(X),s(Y)) -> if(le(Y,X),s(X),s(Y))
   if(true(),s(X),s(Y)) -> gcd(minus(X,Y),s(Y))
   if(false(),s(X),s(Y)) -> gcd(minus(Y,X),s(X))
  Usable Rule Processor:
   DPs:
    minus#(X,s(Y)) -> minus#(X,Y)
    minus#(X,s(Y)) -> pred#(minus(X,Y))
    le#(s(X),s(Y)) -> le#(X,Y)
    gcd#(s(X),s(Y)) -> le#(Y,X)
    gcd#(s(X),s(Y)) -> if#(le(Y,X),s(X),s(Y))
    if#(true(),s(X),s(Y)) -> minus#(X,Y)
    if#(true(),s(X),s(Y)) -> gcd#(minus(X,Y),s(Y))
    if#(false(),s(X),s(Y)) -> minus#(Y,X)
    if#(false(),s(X),s(Y)) -> gcd#(minus(Y,X),s(X))
   TRS:
    minus(X,s(Y)) -> pred(minus(X,Y))
    minus(X,0()) -> X
    pred(s(X)) -> X
    le(s(X),s(Y)) -> le(X,Y)
    le(s(X),0()) -> false()
    le(0(),Y) -> true()
   Matrix Interpretation Processor: dim=1
    
    usable rules:
     minus(X,s(Y)) -> pred(minus(X,Y))
     minus(X,0()) -> X
     pred(s(X)) -> X
     le(s(X),s(Y)) -> le(X,Y)
     le(s(X),0()) -> false()
     le(0(),Y) -> true()
    interpretation:
     [if#](x0, x1, x2) = x0 + 2x1 + 3/2x2 + 3/2,
     
     [gcd#](x0, x1) = 3x0 + 3/2x1 + 3,
     
     [le#](x0, x1) = 1/2x1 + 2,
     
     [pred#](x0) = 0,
     
     [minus#](x0, x1) = 1/2x1 + 1,
     
     [true] = 1/2,
     
     [false] = 1/2,
     
     [le](x0, x1) = 2x1 + 3/2,
     
     [0] = 3/2,
     
     [pred](x0) = 1/2x0,
     
     [minus](x0, x1) = x0,
     
     [s](x0) = 3x0 + 1
    orientation:
     minus#(X,s(Y)) = 3/2Y + 3/2 >= 1/2Y + 1 = minus#(X,Y)
     
     minus#(X,s(Y)) = 3/2Y + 3/2 >= 0 = pred#(minus(X,Y))
     
     le#(s(X),s(Y)) = 3/2Y + 5/2 >= 1/2Y + 2 = le#(X,Y)
     
     gcd#(s(X),s(Y)) = 9X + 9/2Y + 15/2 >= 1/2X + 2 = le#(Y,X)
     
     gcd#(s(X),s(Y)) = 9X + 9/2Y + 15/2 >= 8X + 9/2Y + 13/2 = if#(le(Y,X),s(X),s(Y))
     
     if#(true(),s(X),s(Y)) = 6X + 9/2Y + 11/2 >= 1/2Y + 1 = minus#(X,Y)
     
     if#(true(),s(X),s(Y)) = 6X + 9/2Y + 11/2 >= 3X + 9/2Y + 9/2 = gcd#(minus(X,Y),s(Y))
     
     if#(false(),s(X),s(Y)) = 6X + 9/2Y + 11/2 >= 1/2X + 1 = minus#(Y,X)
     
     if#(false(),s(X),s(Y)) = 6X + 9/2Y + 11/2 >= 9/2X + 3Y + 9/2 = gcd#(minus(Y,X),s(X))
     
     minus(X,s(Y)) = X >= 1/2X = pred(minus(X,Y))
     
     minus(X,0()) = X >= X = X
     
     pred(s(X)) = 3/2X + 1/2 >= X = X
     
     le(s(X),s(Y)) = 6Y + 7/2 >= 2Y + 3/2 = le(X,Y)
     
     le(s(X),0()) = 9/2 >= 1/2 = false()
     
     le(0(),Y) = 2Y + 3/2 >= 1/2 = true()
    problem:
     DPs:
      
     TRS:
      minus(X,s(Y)) -> pred(minus(X,Y))
      minus(X,0()) -> X
      pred(s(X)) -> X
      le(s(X),s(Y)) -> le(X,Y)
      le(s(X),0()) -> false()
      le(0(),Y) -> true()
    Qed