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