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: Matrix Interpretation Processor: dim=3 interpretation: [1 1 0] [1 0 0] [f](x0, x1) = [0 0 1]x0 + [0 0 0]x1 [0 0 0] [0 0 0] , [1 1 0] [mark](x0) = [0 0 0]x0 [0 0 1] , [1 1 0] [0] [g](x0) = [1 1 0]x0 + [0] [1 1 1] [1], [1 1 0] [active](x0) = [0 0 0]x0 [0 0 1] orientation: [3 3 1] [1 0 0] [1] [3 3 1] [1 0 0] active(f(g(X),Y)) = [0 0 0]X + [0 0 0]Y + [0] >= [0 0 0]X + [0 0 0]Y = mark(f(X,f(g(X),Y))) [0 0 0] [0 0 0] [0] [0 0 0] [0 0 0] [1 1 1] [1 0 0] [1 1 1] [1 0 0] mark(f(X1,X2)) = [0 0 0]X1 + [0 0 0]X2 >= [0 0 0]X1 + [0 0 0]X2 = active(f(mark(X1),X2)) [0 0 0] [0 0 0] [0 0 0] [0 0 0] [2 2 0] [0] [2 2 0] [0] mark(g(X)) = [0 0 0]X + [0] >= [0 0 0]X + [0] = active(g(mark(X))) [1 1 1] [1] [1 1 1] [1] [1 1 0] [1 0 0] [1 1 0] [1 0 0] f(mark(X1),X2) = [0 0 1]X1 + [0 0 0]X2 >= [0 0 1]X1 + [0 0 0]X2 = f(X1,X2) [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1 1 0] [1 1 0] [1 1 0] [1 0 0] f(X1,mark(X2)) = [0 0 1]X1 + [0 0 0]X2 >= [0 0 1]X1 + [0 0 0]X2 = f(X1,X2) [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1 1 0] [1 0 0] [1 1 0] [1 0 0] f(active(X1),X2) = [0 0 1]X1 + [0 0 0]X2 >= [0 0 1]X1 + [0 0 0]X2 = f(X1,X2) [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1 1 0] [1 1 0] [1 1 0] [1 0 0] f(X1,active(X2)) = [0 0 1]X1 + [0 0 0]X2 >= [0 0 1]X1 + [0 0 0]X2 = f(X1,X2) [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1 1 0] [0] [1 1 0] [0] g(mark(X)) = [1 1 0]X + [0] >= [1 1 0]X + [0] = g(X) [1 1 1] [1] [1 1 1] [1] [1 1 0] [0] [1 1 0] [0] g(active(X)) = [1 1 0]X + [0] >= [1 1 0]X + [0] = g(X) [1 1 1] [1] [1 1 1] [1] problem: 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=1 interpretation: [f](x0, x1) = 2x0 + 4x1 + 2, [mark](x0) = 2x0, [g](x0) = 4x0, [active](x0) = x0 orientation: mark(f(X1,X2)) = 4X1 + 8X2 + 4 >= 4X1 + 4X2 + 2 = active(f(mark(X1),X2)) mark(g(X)) = 8X >= 8X = active(g(mark(X))) f(mark(X1),X2) = 4X1 + 4X2 + 2 >= 2X1 + 4X2 + 2 = f(X1,X2) f(X1,mark(X2)) = 2X1 + 8X2 + 2 >= 2X1 + 4X2 + 2 = f(X1,X2) f(active(X1),X2) = 2X1 + 4X2 + 2 >= 2X1 + 4X2 + 2 = f(X1,X2) f(X1,active(X2)) = 2X1 + 4X2 + 2 >= 2X1 + 4X2 + 2 = f(X1,X2) g(mark(X)) = 8X >= 4X = g(X) g(active(X)) = 4X >= 4X = g(X) problem: 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=1 interpretation: [f](x0, x1) = 4x0 + 3x1 + 2, [mark](x0) = 3x0 + 5, [g](x0) = 2x0 + 6, [active](x0) = x0 + 7 orientation: mark(g(X)) = 6X + 23 >= 6X + 23 = active(g(mark(X))) f(mark(X1),X2) = 12X1 + 3X2 + 22 >= 4X1 + 3X2 + 2 = f(X1,X2) f(X1,mark(X2)) = 4X1 + 9X2 + 17 >= 4X1 + 3X2 + 2 = f(X1,X2) f(active(X1),X2) = 4X1 + 3X2 + 30 >= 4X1 + 3X2 + 2 = f(X1,X2) f(X1,active(X2)) = 4X1 + 3X2 + 23 >= 4X1 + 3X2 + 2 = f(X1,X2) g(mark(X)) = 6X + 16 >= 2X + 6 = g(X) g(active(X)) = 2X + 20 >= 2X + 6 = g(X) problem: mark(g(X)) -> active(g(mark(X))) Matrix Interpretation Processor: dim=3 interpretation: [1 1 1] [mark](x0) = [0 0 0]x0 [1 1 0] , [1 1 0] [0] [g](x0) = [0 0 1]x0 + [0] [0 0 0] [1], [1 0 0] [active](x0) = [0 0 0]x0 [1 0 0] orientation: [1 1 1] [1] [1 1 1] mark(g(X)) = [0 0 0]X + [0] >= [0 0 0]X = active(g(mark(X))) [1 1 1] [0] [1 1 1] problem: Qed