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) TDG 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) graph: mark#(f(X1,X2)) -> mark#(X1) -> mark#(g(X)) -> mark#(X) mark#(f(X1,X2)) -> mark#(X1) -> mark#(f(X1,X2)) -> a__f#(mark(X1),X2) mark#(f(X1,X2)) -> mark#(X1) -> mark#(f(X1,X2)) -> mark#(X1) mark#(f(X1,X2)) -> a__f#(mark(X1),X2) -> a__f#(g(X),Y) -> a__f#(mark(X),f(g(X),Y)) mark#(f(X1,X2)) -> a__f#(mark(X1),X2) -> a__f#(g(X),Y) -> mark#(X) mark#(g(X)) -> mark#(X) -> mark#(g(X)) -> mark#(X) mark#(g(X)) -> mark#(X) -> mark#(f(X1,X2)) -> a__f#(mark(X1),X2) mark#(g(X)) -> mark#(X) -> mark#(f(X1,X2)) -> mark#(X1) a__f#(g(X),Y) -> mark#(X) -> mark#(g(X)) -> mark#(X) a__f#(g(X),Y) -> mark#(X) -> mark#(f(X1,X2)) -> a__f#(mark(X1),X2) a__f#(g(X),Y) -> mark#(X) -> mark#(f(X1,X2)) -> mark#(X1) a__f#(g(X),Y) -> a__f#(mark(X),f(g(X),Y)) -> a__f#(g(X),Y) -> a__f#(mark(X),f(g(X),Y)) a__f#(g(X),Y) -> a__f#(mark(X),f(g(X),Y)) -> a__f#(g(X),Y) -> mark#(X) SCC Processor: #sccs: 1 #rules: 5 #arcs: 13/25 DPs: mark#(f(X1,X2)) -> mark#(X1) mark#(f(X1,X2)) -> a__f#(mark(X1),X2) a__f#(g(X),Y) -> mark#(X) mark#(g(X)) -> mark#(X) a__f#(g(X),Y) -> a__f#(mark(X),f(g(X),Y)) 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: dimension: 1 interpretation: [mark#](x0) = x0, [a__f#](x0, x1) = x0, [f](x0, x1) = x0, [mark](x0) = x0, [a__f](x0, x1) = x0, [g](x0) = x0 + 1 orientation: mark#(f(X1,X2)) = X1 >= X1 = mark#(X1) mark#(f(X1,X2)) = X1 >= X1 = a__f#(mark(X1),X2) a__f#(g(X),Y) = X + 1 >= X = mark#(X) mark#(g(X)) = X + 1 >= X = mark#(X) a__f#(g(X),Y) = X + 1 >= X = a__f#(mark(X),f(g(X),Y)) a__f(g(X),Y) = X + 1 >= X = a__f(mark(X),f(g(X),Y)) mark(f(X1,X2)) = X1 >= X1 = a__f(mark(X1),X2) mark(g(X)) = X + 1 >= X + 1 = g(mark(X)) a__f(X1,X2) = X1 >= X1 = f(X1,X2) problem: DPs: mark#(f(X1,X2)) -> mark#(X1) mark#(f(X1,X2)) -> a__f#(mark(X1),X2) 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: dimension: 1 interpretation: [mark#](x0) = x0, [a__f#](x0, x1) = x0, [f](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [a__f](x0, x1) = x0 + 1, [g](x0) = x0 + 1 orientation: mark#(f(X1,X2)) = X1 + 1 >= X1 = mark#(X1) mark#(f(X1,X2)) = X1 + 1 >= X1 + 1 = a__f#(mark(X1),X2) a__f(g(X),Y) = X + 2 >= 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 + 2 >= X + 2 = g(mark(X)) a__f(X1,X2) = X1 + 1 >= X1 + 1 = f(X1,X2) problem: DPs: mark#(f(X1,X2)) -> a__f#(mark(X1),X2) 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: dimension: 1 interpretation: [mark#](x0) = x0, [a__f#](x0, x1) = 0, [f](x0, x1) = 1, [mark](x0) = x0, [a__f](x0, x1) = 1, [g](x0) = 0 orientation: mark#(f(X1,X2)) = 1 >= 0 = a__f#(mark(X1),X2) a__f(g(X),Y) = 1 >= 1 = a__f(mark(X),f(g(X),Y)) mark(f(X1,X2)) = 1 >= 1 = a__f(mark(X1),X2) mark(g(X)) = 0 >= 0 = g(mark(X)) a__f(X1,X2) = 1 >= 1 = 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