YES Problem: a__f(g(X),Y) -> a__f(mark(X),f(g(X),Y)) mark(f(X1,X2)) -> a__f(mark(X1),X2) mark(g(X)) -> g(mark(X)) a__f(X1,X2) -> f(X1,X2) Proof: DP Processor: DPs: a__f#(g(X),Y) -> mark#(X) a__f#(g(X),Y) -> a__f#(mark(X),f(g(X),Y)) mark#(f(X1,X2)) -> mark#(X1) mark#(f(X1,X2)) -> a__f#(mark(X1),X2) mark#(g(X)) -> mark#(X) TRS: a__f(g(X),Y) -> a__f(mark(X),f(g(X),Y)) mark(f(X1,X2)) -> a__f(mark(X1),X2) mark(g(X)) -> g(mark(X)) a__f(X1,X2) -> f(X1,X2) Matrix Interpretation Processor: dim=1 usable rules: a__f(g(X),Y) -> a__f(mark(X),f(g(X),Y)) mark(f(X1,X2)) -> a__f(mark(X1),X2) mark(g(X)) -> g(mark(X)) a__f(X1,X2) -> f(X1,X2) interpretation: [mark#](x0) = x0 + 4, [a__f#](x0, x1) = x0 + 4, [f](x0, x1) = x0 + 2, [mark](x0) = x0, [a__f](x0, x1) = x0 + 2, [g](x0) = x0 + 1 orientation: a__f#(g(X),Y) = X + 5 >= X + 4 = mark#(X) a__f#(g(X),Y) = X + 5 >= X + 4 = a__f#(mark(X),f(g(X),Y)) mark#(f(X1,X2)) = X1 + 6 >= X1 + 4 = mark#(X1) mark#(f(X1,X2)) = X1 + 6 >= X1 + 4 = a__f#(mark(X1),X2) mark#(g(X)) = X + 5 >= X + 4 = mark#(X) a__f(g(X),Y) = X + 3 >= X + 2 = a__f(mark(X),f(g(X),Y)) mark(f(X1,X2)) = X1 + 2 >= X1 + 2 = a__f(mark(X1),X2) mark(g(X)) = X + 1 >= X + 1 = g(mark(X)) a__f(X1,X2) = X1 + 2 >= X1 + 2 = f(X1,X2) problem: DPs: TRS: a__f(g(X),Y) -> a__f(mark(X),f(g(X),Y)) mark(f(X1,X2)) -> a__f(mark(X1),X2) mark(g(X)) -> g(mark(X)) a__f(X1,X2) -> f(X1,X2) Qed