YES
Time: 0.115996
TRS:
 {      g(x, s y) -> g(f(x, y), 0()),
  g(0(), f(x, x)) -> x,
  g(f(x, y), 0()) -> f(g(x, 0()), g(y, 0())),
        g(s x, y) -> g(f(x, y), 0())}
 DP:
  DP:
   {      g#(x, s y) -> g#(f(x, y), 0()),
    g#(f(x, y), 0()) -> g#(x, 0()),
    g#(f(x, y), 0()) -> g#(y, 0()),
          g#(s x, y) -> g#(f(x, y), 0())}
  TRS:
  {      g(x, s y) -> g(f(x, y), 0()),
   g(0(), f(x, x)) -> x,
   g(f(x, y), 0()) -> f(g(x, 0()), g(y, 0())),
         g(s x, y) -> g(f(x, y), 0())}
  UR:
   {}
   EDG:
    {(g#(f(x, y), 0()) -> g#(x, 0()), g#(s x, y) -> g#(f(x, y), 0()))
     (g#(f(x, y), 0()) -> g#(x, 0()), g#(f(x, y), 0()) -> g#(y, 0()))
     (g#(f(x, y), 0()) -> g#(x, 0()), g#(f(x, y), 0()) -> g#(x, 0()))
     (g#(s x, y) -> g#(f(x, y), 0()), g#(f(x, y), 0()) -> g#(y, 0()))
     (g#(s x, y) -> g#(f(x, y), 0()), g#(f(x, y), 0()) -> g#(x, 0()))
     (g#(f(x, y), 0()) -> g#(y, 0()), g#(f(x, y), 0()) -> g#(x, 0()))
     (g#(f(x, y), 0()) -> g#(y, 0()), g#(f(x, y), 0()) -> g#(y, 0()))
     (g#(f(x, y), 0()) -> g#(y, 0()), g#(s x, y) -> g#(f(x, y), 0()))
     (g#(x, s y) -> g#(f(x, y), 0()), g#(f(x, y), 0()) -> g#(x, 0()))
     (g#(x, s y) -> g#(f(x, y), 0()), g#(f(x, y), 0()) -> g#(y, 0()))}
    STATUS:
     arrows: 0.375000
     SCCS (1):
      Scc:
       {g#(f(x, y), 0()) -> g#(x, 0()),
        g#(f(x, y), 0()) -> g#(y, 0()),
              g#(s x, y) -> g#(f(x, y), 0())}
      
      
      SCC (3):
       Strict:
        {g#(f(x, y), 0()) -> g#(x, 0()),
         g#(f(x, y), 0()) -> g#(y, 0()),
               g#(s x, y) -> g#(f(x, y), 0())}
       Weak:
       {      g(x, s y) -> g(f(x, y), 0()),
        g(0(), f(x, x)) -> x,
        g(f(x, y), 0()) -> f(g(x, 0()), g(y, 0())),
              g(s x, y) -> g(f(x, y), 0())}
       POLY:
        Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true
        Interpretation:
         [g](x0, x1) = 0,
         
         [f](x0, x1) = x0 + x1,
         
         [s](x0) = x0 + 1,
         
         [0] = 0,
         
         [g#](x0, x1) = x0 + x1
        Strict:
         g#(s x, y) -> g#(f(x, y), 0())
         1 + 1x + 1y >= 0 + 1x + 1y
         g#(f(x, y), 0()) -> g#(y, 0())
         0 + 1x + 1y >= 0 + 1y
         g#(f(x, y), 0()) -> g#(x, 0())
         0 + 1x + 1y >= 0 + 1x
        Weak:
         g(s x, y) -> g(f(x, y), 0())
         0 + 0x + 0y >= 0 + 0x + 0y
         g(f(x, y), 0()) -> f(g(x, 0()), g(y, 0()))
         0 + 0x + 0y >= 0 + 0x + 0y
         g(0(), f(x, x)) -> x
         0 + 0x >= 1x
         g(x, s y) -> g(f(x, y), 0())
         0 + 0x + 0y >= 0 + 0x + 0y
       SCCS (1):
        Scc:
         {g#(f(x, y), 0()) -> g#(x, 0()),
          g#(f(x, y), 0()) -> g#(y, 0())}
        
        SCC (2):
         Strict:
          {g#(f(x, y), 0()) -> g#(x, 0()),
           g#(f(x, y), 0()) -> g#(y, 0())}
         Weak:
         {      g(x, s y) -> g(f(x, y), 0()),
          g(0(), f(x, x)) -> x,
          g(f(x, y), 0()) -> f(g(x, 0()), g(y, 0())),
                g(s x, y) -> g(f(x, y), 0())}
         POLY:
          Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true
          Interpretation:
           [g](x0, x1) = 0,
           
           [f](x0, x1) = x0 + x1 + 1,
           
           [s](x0) = 0,
           
           [0] = 1,
           
           [g#](x0, x1) = x0 + x1
          Strict:
           g#(f(x, y), 0()) -> g#(y, 0())
           2 + 1x + 1y >= 1 + 1y
           g#(f(x, y), 0()) -> g#(x, 0())
           2 + 1x + 1y >= 1 + 1x
          Weak:
           g(s x, y) -> g(f(x, y), 0())
           0 + 0x + 0y >= 0 + 0x + 0y
           g(f(x, y), 0()) -> f(g(x, 0()), g(y, 0()))
           0 + 0x + 0y >= 1 + 0x + 0y
           g(0(), f(x, x)) -> x
           0 + 0x >= 1x
           g(x, s y) -> g(f(x, y), 0())
           0 + 0x + 0y >= 0 + 0x + 0y
         Qed