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