YES Problem: a__f(f(a())) -> c(f(g(f(a())))) mark(f(X)) -> a__f(mark(X)) mark(a()) -> a() mark(c(X)) -> c(X) mark(g(X)) -> g(mark(X)) a__f(X) -> f(X) Proof: DP Processor: DPs: mark#(f(X)) -> mark#(X) mark#(f(X)) -> a__f#(mark(X)) mark#(g(X)) -> mark#(X) TRS: a__f(f(a())) -> c(f(g(f(a())))) mark(f(X)) -> a__f(mark(X)) mark(a()) -> a() mark(c(X)) -> c(X) mark(g(X)) -> g(mark(X)) a__f(X) -> f(X) Matrix Interpretation Processor: dim=1 interpretation: [mark#](x0) = 3x0 + 6, [a__f#](x0) = x0 + 7, [mark](x0) = 3x0 + 7, [c](x0) = x0 + 1, [g](x0) = x0 + 3, [a__f](x0) = x0 + 7, [f](x0) = x0 + 3, [a] = 6 orientation: mark#(f(X)) = 3X + 15 >= 3X + 6 = mark#(X) mark#(f(X)) = 3X + 15 >= 3X + 14 = a__f#(mark(X)) mark#(g(X)) = 3X + 15 >= 3X + 6 = mark#(X) a__f(f(a())) = 16 >= 16 = c(f(g(f(a())))) mark(f(X)) = 3X + 16 >= 3X + 14 = a__f(mark(X)) mark(a()) = 25 >= 6 = a() mark(c(X)) = 3X + 10 >= X + 1 = c(X) mark(g(X)) = 3X + 16 >= 3X + 10 = g(mark(X)) a__f(X) = X + 7 >= X + 3 = f(X) problem: DPs: TRS: a__f(f(a())) -> c(f(g(f(a())))) mark(f(X)) -> a__f(mark(X)) mark(a()) -> a() mark(c(X)) -> c(X) mark(g(X)) -> g(mark(X)) a__f(X) -> f(X) Qed