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