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