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) Arctic Interpretation Processor: dimension: 1 interpretation: [mark#](x0) = x0 + 0, [a__f#](x0, x1) = 1x0 + x1 + 0, [f](x0, x1) = 1x0 + x1, [mark](x0) = x0, [a__f](x0, x1) = 1x0 + x1, [g](x0) = x0 + 0 orientation: a__f#(g(X),Y) = 1X + Y + 1 >= X + 0 = mark#(X) a__f#(g(X),Y) = 1X + Y + 1 >= 1X + Y + 1 = a__f#(mark(X),f(g(X),Y)) mark#(f(X1,X2)) = 1X1 + X2 + 0 >= X1 + 0 = mark#(X1) mark#(f(X1,X2)) = 1X1 + X2 + 0 >= 1X1 + X2 + 0 = a__f#(mark(X1),X2) mark#(g(X)) = X + 0 >= X + 0 = mark#(X) a__f(g(X),Y) = 1X + Y + 1 >= 1X + Y + 1 = a__f(mark(X),f(g(X),Y)) mark(f(X1,X2)) = 1X1 + X2 >= 1X1 + X2 = a__f(mark(X1),X2) mark(g(X)) = X + 0 >= X + 0 = g(mark(X)) a__f(X1,X2) = 1X1 + X2 >= 1X1 + X2 = f(X1,X2) problem: DPs: 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) SCC Processor: #sccs: 2 #rules: 3 #arcs: 13/16 DPs: mark#(f(X1,X2)) -> mark#(X1) 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) Subterm Criterion Processor: simple projection: pi(mark#) = 0 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 DPs: 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) Arctic Interpretation Processor: dimension: 1 interpretation: [a__f#](x0, x1) = 1x0 + x1 + 0, [f](x0, x1) = x0 + 0, [mark](x0) = 2x0 + 0, [a__f](x0, x1) = x0 + 0, [g](x0) = 3x0 + 2 orientation: a__f#(g(X),Y) = 4X + Y + 3 >= 3X + 2 = a__f#(mark(X),f(g(X),Y)) a__f(g(X),Y) = 3X + 2 >= 2X + 0 = a__f(mark(X),f(g(X),Y)) mark(f(X1,X2)) = 2X1 + 2 >= 2X1 + 0 = a__f(mark(X1),X2) mark(g(X)) = 5X + 4 >= 5X + 3 = g(mark(X)) a__f(X1,X2) = X1 + 0 >= X1 + 0 = 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