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