YES(?,O(n^3)) 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: RT Transformation Processor: strict: 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) weak: Matrix Interpretation Processor: dimension: 1 interpretation: [mark](x0) = x0, [g](x0) = x0, [active](x0) = x0 + 29, [f](x0) = x0, [a] = 2 orientation: active(f(f(a()))) = 31 >= 2 = mark(f(g(f(a())))) mark(f(X)) = X >= X + 29 = active(f(X)) mark(a()) = 2 >= 31 = active(a()) mark(g(X)) = X >= X + 29 = active(g(mark(X))) f(mark(X)) = X >= X = f(X) f(active(X)) = X + 29 >= X = f(X) g(mark(X)) = X >= X = g(X) g(active(X)) = X + 29 >= X = g(X) problem: strict: mark(f(X)) -> active(f(X)) mark(a()) -> active(a()) mark(g(X)) -> active(g(mark(X))) f(mark(X)) -> f(X) g(mark(X)) -> g(X) weak: active(f(f(a()))) -> mark(f(g(f(a())))) f(active(X)) -> f(X) g(active(X)) -> g(X) Matrix Interpretation Processor: dimension: 1 interpretation: [mark](x0) = x0 + 8, [g](x0) = x0 + 2, [active](x0) = x0 + 17, [f](x0) = x0, [a] = 6 orientation: mark(f(X)) = X + 8 >= X + 17 = active(f(X)) mark(a()) = 14 >= 23 = active(a()) mark(g(X)) = X + 10 >= X + 27 = active(g(mark(X))) f(mark(X)) = X + 8 >= X = f(X) g(mark(X)) = X + 10 >= X + 2 = g(X) active(f(f(a()))) = 23 >= 16 = mark(f(g(f(a())))) f(active(X)) = X + 17 >= X = f(X) g(active(X)) = X + 19 >= X + 2 = g(X) problem: strict: mark(f(X)) -> active(f(X)) mark(a()) -> active(a()) mark(g(X)) -> active(g(mark(X))) weak: f(mark(X)) -> f(X) g(mark(X)) -> g(X) active(f(f(a()))) -> mark(f(g(f(a())))) f(active(X)) -> f(X) g(active(X)) -> g(X) Matrix Interpretation Processor: dimension: 2 interpretation: [11] [mark](x0) = x0 + [0 ], [1 0] [3] [g](x0) = [0 0]x0 + [0], [1 2] [active](x0) = [0 1]x0, [1 2] [0] [f](x0) = [0 0]x0 + [5], [0] [a] = [4] orientation: [1 2] [11] [1 2] [10] mark(f(X)) = [0 0]X + [5 ] >= [0 0]X + [5 ] = active(f(X)) [11] [8] mark(a()) = [4 ] >= [4] = active(a()) [1 0] [14] [1 0] [14] mark(g(X)) = [0 0]X + [0 ] >= [0 0]X + [0 ] = active(g(mark(X))) [1 2] [11] [1 2] [0] f(mark(X)) = [0 0]X + [5 ] >= [0 0]X + [5] = f(X) [1 0] [14] [1 0] [3] g(mark(X)) = [0 0]X + [0 ] >= [0 0]X + [0] = g(X) [28] [22] active(f(f(a()))) = [5 ] >= [5 ] = mark(f(g(f(a())))) [1 4] [0] [1 2] [0] f(active(X)) = [0 0]X + [5] >= [0 0]X + [5] = f(X) [1 2] [3] [1 0] [3] g(active(X)) = [0 0]X + [0] >= [0 0]X + [0] = g(X) problem: strict: mark(g(X)) -> active(g(mark(X))) weak: mark(f(X)) -> active(f(X)) mark(a()) -> active(a()) f(mark(X)) -> f(X) g(mark(X)) -> g(X) active(f(f(a()))) -> mark(f(g(f(a())))) f(active(X)) -> f(X) g(active(X)) -> g(X) Matrix Interpretation Processor: dimension: 3 interpretation: [1 4 4] [1] [mark](x0) = [0 0 0]x0 + [0] [0 0 1] [0], [1 4 0] [0] [g](x0) = [0 0 2]x0 + [0] [0 0 1] [1], [1 4 0] [1] [active](x0) = [0 0 0]x0 + [0] [0 0 1] [0], [1 4 0] [f](x0) = [0 0 0]x0 [0 0 0] , [3] [a] = [2] [0] orientation: [1 4 12] [5] [1 4 12] [2] mark(g(X)) = [0 0 0 ]X + [0] >= [0 0 0 ]X + [0] = active(g(mark(X))) [0 0 1 ] [1] [0 0 1 ] [1] [1 4 0] [1] [1 4 0] [1] mark(f(X)) = [0 0 0]X + [0] >= [0 0 0]X + [0] = active(f(X)) [0 0 0] [0] [0 0 0] [0] [12] [12] mark(a()) = [0 ] >= [0 ] = active(a()) [0 ] [0 ] [1 4 4] [1] [1 4 0] f(mark(X)) = [0 0 0]X + [0] >= [0 0 0]X = f(X) [0 0 0] [0] [0 0 0] [1 4 4] [1] [1 4 0] [0] g(mark(X)) = [0 0 2]X + [0] >= [0 0 2]X + [0] = g(X) [0 0 1] [1] [0 0 1] [1] [12] [12] active(f(f(a()))) = [0 ] >= [0 ] = mark(f(g(f(a())))) [0 ] [0 ] [1 4 0] [1] [1 4 0] f(active(X)) = [0 0 0]X + [0] >= [0 0 0]X = f(X) [0 0 0] [0] [0 0 0] [1 4 0] [1] [1 4 0] [0] g(active(X)) = [0 0 2]X + [0] >= [0 0 2]X + [0] = g(X) [0 0 1] [1] [0 0 1] [1] problem: strict: weak: mark(g(X)) -> active(g(mark(X))) mark(f(X)) -> active(f(X)) mark(a()) -> active(a()) f(mark(X)) -> f(X) g(mark(X)) -> g(X) active(f(f(a()))) -> mark(f(g(f(a())))) f(active(X)) -> f(X) g(active(X)) -> g(X) Qed