YES Problem: g(f(x,y),z) -> f(x,g(y,z)) g(h(x,y),z) -> g(x,f(y,z)) g(x,h(y,z)) -> h(g(x,y),z) Proof: DP Processor: DPs: g#(f(x,y),z) -> g#(y,z) g#(h(x,y),z) -> g#(x,f(y,z)) g#(x,h(y,z)) -> g#(x,y) TRS: g(f(x,y),z) -> f(x,g(y,z)) g(h(x,y),z) -> g(x,f(y,z)) g(x,h(y,z)) -> h(g(x,y),z) Usable Rule Processor: DPs: g#(f(x,y),z) -> g#(y,z) g#(h(x,y),z) -> g#(x,f(y,z)) g#(x,h(y,z)) -> g#(x,y) TRS: Matrix Interpretation Processor: dim=4 usable rules: interpretation: [g#](x0, x1) = [1 1 1 1]x0 + [1 1 0 1]x1, [0 0 0 0] [1 0 1 1] [1] [0 0 0 1] [1 0 1 1] [1] [h](x0, x1) = [0 0 0 0]x0 + [0 1 0 0]x1 + [1] [1 1 1 0] [0 1 1 1] [0], [0 1 1 1] [0 0 0 0] [1] [0 0 1 1] [0 0 0 0] [1] [f](x0, x1) = [0 0 0 0]x0 + [0 1 1 1]x1 + [0] [0 1 0 1] [1 0 0 0] [0] orientation: g#(f(x,y),z) = [0 2 2 3]x + [1 1 1 1]y + [1 1 0 1]z + [2] >= [1 1 1 1]y + [1 1 0 1]z = g#(y,z) g#(h(x,y),z) = [1 1 1 1]x + [2 2 3 3]y + [1 1 0 1]z + [3] >= [1 1 1 1]x + [0 2 2 3]y + [1 0 0 0]z + [2] = g#(x,f(y,z)) g#(x,h(y,z)) = [1 1 1 1]x + [1 1 1 1]y + [2 1 3 3]z + [2] >= [1 1 1 1]x + [1 1 0 1]y = g#(x,y) problem: DPs: TRS: Qed