YES Problem: active(f(f(X))) -> mark(c(f(g(f(X))))) active(c(X)) -> mark(d(X)) active(h(X)) -> mark(c(d(X))) mark(f(X)) -> active(f(mark(X))) mark(c(X)) -> active(c(X)) mark(g(X)) -> active(g(X)) mark(d(X)) -> active(d(X)) mark(h(X)) -> active(h(mark(X))) f(mark(X)) -> f(X) f(active(X)) -> f(X) c(mark(X)) -> c(X) c(active(X)) -> c(X) g(mark(X)) -> g(X) g(active(X)) -> g(X) d(mark(X)) -> d(X) d(active(X)) -> d(X) h(mark(X)) -> h(X) h(active(X)) -> h(X) Proof: Arctic Interpretation Processor: dimension: 1 interpretation: [h](x0) = 1x0, [d](x0) = x0, [mark](x0) = x0, [c](x0) = x0, [g](x0) = x0, [active](x0) = x0, [f](x0) = x0 orientation: active(f(f(X))) = X >= X = mark(c(f(g(f(X))))) active(c(X)) = X >= X = mark(d(X)) active(h(X)) = 1X >= X = mark(c(d(X))) mark(f(X)) = X >= X = active(f(mark(X))) mark(c(X)) = X >= X = active(c(X)) mark(g(X)) = X >= X = active(g(X)) mark(d(X)) = X >= X = active(d(X)) mark(h(X)) = 1X >= 1X = active(h(mark(X))) f(mark(X)) = X >= X = f(X) f(active(X)) = X >= X = f(X) c(mark(X)) = X >= X = c(X) c(active(X)) = X >= X = c(X) g(mark(X)) = X >= X = g(X) g(active(X)) = X >= X = g(X) d(mark(X)) = X >= X = d(X) d(active(X)) = X >= X = d(X) h(mark(X)) = 1X >= 1X = h(X) h(active(X)) = 1X >= 1X = h(X) problem: active(f(f(X))) -> mark(c(f(g(f(X))))) active(c(X)) -> mark(d(X)) mark(f(X)) -> active(f(mark(X))) mark(c(X)) -> active(c(X)) mark(g(X)) -> active(g(X)) mark(d(X)) -> active(d(X)) mark(h(X)) -> active(h(mark(X))) f(mark(X)) -> f(X) f(active(X)) -> f(X) c(mark(X)) -> c(X) c(active(X)) -> c(X) g(mark(X)) -> g(X) g(active(X)) -> g(X) d(mark(X)) -> d(X) d(active(X)) -> d(X) h(mark(X)) -> h(X) h(active(X)) -> h(X) String Reversal Processor: f(f(active(X))) -> f(g(f(c(mark(X))))) c(active(X)) -> d(mark(X)) f(mark(X)) -> mark(f(active(X))) c(mark(X)) -> c(active(X)) g(mark(X)) -> g(active(X)) d(mark(X)) -> d(active(X)) h(mark(X)) -> mark(h(active(X))) mark(f(X)) -> f(X) active(f(X)) -> f(X) mark(c(X)) -> c(X) active(c(X)) -> c(X) mark(g(X)) -> g(X) active(g(X)) -> g(X) mark(d(X)) -> d(X) active(d(X)) -> d(X) mark(h(X)) -> h(X) active(h(X)) -> h(X) Matrix Interpretation Processor: dim=3 interpretation: [1 1 0] [0] [h](x0) = [1 0 1]x0 + [0] [0 0 0] [1], [1 0 0] [d](x0) = [0 0 0]x0 [0 0 0] , [1 0 1] [0] [mark](x0) = [0 1 0]x0 + [1] [0 0 0] [1], [1 0 1] [c](x0) = [0 0 0]x0 [0 0 0] , [1 0 0] [g](x0) = [0 0 0]x0 [0 0 0] , [active](x0) = x0 , [1 1 1] [0] [f](x0) = [1 0 1]x0 + [0] [0 0 0] [1] orientation: [2 1 2] [1] [1 0 1] [1] f(f(active(X))) = [1 1 1]X + [1] >= [1 0 1]X + [1] = f(g(f(c(mark(X))))) [0 0 0] [1] [0 0 0] [1] [1 0 1] [1 0 1] c(active(X)) = [0 0 0]X >= [0 0 0]X = d(mark(X)) [0 0 0] [0 0 0] [1 1 1] [2] [1 1 1] [1] f(mark(X)) = [1 0 1]X + [1] >= [1 0 1]X + [1] = mark(f(active(X))) [0 0 0] [1] [0 0 0] [1] [1 0 1] [1] [1 0 1] c(mark(X)) = [0 0 0]X + [0] >= [0 0 0]X = c(active(X)) [0 0 0] [0] [0 0 0] [1 0 1] [1 0 0] g(mark(X)) = [0 0 0]X >= [0 0 0]X = g(active(X)) [0 0 0] [0 0 0] [1 0 1] [1 0 0] d(mark(X)) = [0 0 0]X >= [0 0 0]X = d(active(X)) [0 0 0] [0 0 0] [1 1 1] [1] [1 1 0] [1] h(mark(X)) = [1 0 1]X + [1] >= [1 0 1]X + [1] = mark(h(active(X))) [0 0 0] [1] [0 0 0] [1] [1 1 1] [1] [1 1 1] [0] mark(f(X)) = [1 0 1]X + [1] >= [1 0 1]X + [0] = f(X) [0 0 0] [1] [0 0 0] [1] [1 1 1] [0] [1 1 1] [0] active(f(X)) = [1 0 1]X + [0] >= [1 0 1]X + [0] = f(X) [0 0 0] [1] [0 0 0] [1] [1 0 1] [0] [1 0 1] mark(c(X)) = [0 0 0]X + [1] >= [0 0 0]X = c(X) [0 0 0] [1] [0 0 0] [1 0 1] [1 0 1] active(c(X)) = [0 0 0]X >= [0 0 0]X = c(X) [0 0 0] [0 0 0] [1 0 0] [0] [1 0 0] mark(g(X)) = [0 0 0]X + [1] >= [0 0 0]X = g(X) [0 0 0] [1] [0 0 0] [1 0 0] [1 0 0] active(g(X)) = [0 0 0]X >= [0 0 0]X = g(X) [0 0 0] [0 0 0] [1 0 0] [0] [1 0 0] mark(d(X)) = [0 0 0]X + [1] >= [0 0 0]X = d(X) [0 0 0] [1] [0 0 0] [1 0 0] [1 0 0] active(d(X)) = [0 0 0]X >= [0 0 0]X = d(X) [0 0 0] [0 0 0] [1 1 0] [1] [1 1 0] [0] mark(h(X)) = [1 0 1]X + [1] >= [1 0 1]X + [0] = h(X) [0 0 0] [1] [0 0 0] [1] [1 1 0] [0] [1 1 0] [0] active(h(X)) = [1 0 1]X + [0] >= [1 0 1]X + [0] = h(X) [0 0 0] [1] [0 0 0] [1] problem: f(f(active(X))) -> f(g(f(c(mark(X))))) c(active(X)) -> d(mark(X)) g(mark(X)) -> g(active(X)) d(mark(X)) -> d(active(X)) h(mark(X)) -> mark(h(active(X))) active(f(X)) -> f(X) mark(c(X)) -> c(X) active(c(X)) -> c(X) mark(g(X)) -> g(X) active(g(X)) -> g(X) mark(d(X)) -> d(X) active(d(X)) -> d(X) active(h(X)) -> h(X) String Reversal Processor: active(f(f(X))) -> mark(c(f(g(f(X))))) active(c(X)) -> mark(d(X)) mark(g(X)) -> active(g(X)) mark(d(X)) -> active(d(X)) mark(h(X)) -> active(h(mark(X))) f(active(X)) -> f(X) c(mark(X)) -> c(X) c(active(X)) -> c(X) g(mark(X)) -> g(X) g(active(X)) -> g(X) d(mark(X)) -> d(X) d(active(X)) -> d(X) h(active(X)) -> h(X) Matrix Interpretation Processor: dim=3 interpretation: [1 1 1] [1] [h](x0) = [0 0 0]x0 + [0] [1 1 1] [1], [1 0 0] [1] [d](x0) = [0 0 0]x0 + [0] [0 0 0] [1], [1 0 1] [mark](x0) = [1 0 1]x0 [0 0 0] , [1 0 0] [0] [c](x0) = [0 0 0]x0 + [1] [1 0 0] [0], [1 0 0] [1] [g](x0) = [1 0 0]x0 + [0] [1 0 0] [1], [1 1 0] [1] [active](x0) = [0 1 1]x0 + [1] [0 0 0] [0], [1 0 0] [0] [f](x0) = [1 0 0]x0 + [1] [1 0 0] [0] orientation: [2 0 0] [2] [2 0 0] [2] active(f(f(X))) = [2 0 0]X + [2] >= [2 0 0]X + [2] = mark(c(f(g(f(X))))) [0 0 0] [0] [0 0 0] [0] [1 0 0] [2] [1 0 0] [2] active(c(X)) = [1 0 0]X + [2] >= [1 0 0]X + [2] = mark(d(X)) [0 0 0] [0] [0 0 0] [0] [2 0 0] [2] [2 0 0] [2] mark(g(X)) = [2 0 0]X + [2] >= [2 0 0]X + [2] = active(g(X)) [0 0 0] [0] [0 0 0] [0] [1 0 0] [2] [1 0 0] [2] mark(d(X)) = [1 0 0]X + [2] >= [0 0 0]X + [2] = active(d(X)) [0 0 0] [0] [0 0 0] [0] [2 2 2] [2] [2 0 2] [2] mark(h(X)) = [2 2 2]X + [2] >= [2 0 2]X + [2] = active(h(mark(X))) [0 0 0] [0] [0 0 0] [0] [1 1 0] [1] [1 0 0] [0] f(active(X)) = [1 1 0]X + [2] >= [1 0 0]X + [1] = f(X) [1 1 0] [1] [1 0 0] [0] [1 0 1] [0] [1 0 0] [0] c(mark(X)) = [0 0 0]X + [1] >= [0 0 0]X + [1] = c(X) [1 0 1] [0] [1 0 0] [0] [1 1 0] [1] [1 0 0] [0] c(active(X)) = [0 0 0]X + [1] >= [0 0 0]X + [1] = c(X) [1 1 0] [1] [1 0 0] [0] [1 0 1] [1] [1 0 0] [1] g(mark(X)) = [1 0 1]X + [0] >= [1 0 0]X + [0] = g(X) [1 0 1] [1] [1 0 0] [1] [1 1 0] [2] [1 0 0] [1] g(active(X)) = [1 1 0]X + [1] >= [1 0 0]X + [0] = g(X) [1 1 0] [2] [1 0 0] [1] [1 0 1] [1] [1 0 0] [1] d(mark(X)) = [0 0 0]X + [0] >= [0 0 0]X + [0] = d(X) [0 0 0] [1] [0 0 0] [1] [1 1 0] [2] [1 0 0] [1] d(active(X)) = [0 0 0]X + [0] >= [0 0 0]X + [0] = d(X) [0 0 0] [1] [0 0 0] [1] [1 2 1] [3] [1 1 1] [1] h(active(X)) = [0 0 0]X + [0] >= [0 0 0]X + [0] = h(X) [1 2 1] [3] [1 1 1] [1] problem: active(f(f(X))) -> mark(c(f(g(f(X))))) active(c(X)) -> mark(d(X)) mark(g(X)) -> active(g(X)) mark(d(X)) -> active(d(X)) mark(h(X)) -> active(h(mark(X))) c(mark(X)) -> c(X) g(mark(X)) -> g(X) d(mark(X)) -> d(X) String Reversal Processor: f(f(active(X))) -> f(g(f(c(mark(X))))) c(active(X)) -> d(mark(X)) g(mark(X)) -> g(active(X)) d(mark(X)) -> d(active(X)) h(mark(X)) -> mark(h(active(X))) mark(c(X)) -> c(X) mark(g(X)) -> g(X) mark(d(X)) -> d(X) Bounds Processor: bound: 2 enrichment: match automaton: final states: {8} transitions: d1(30) -> 31* d1(47) -> 48* d1(21) -> 22* g1(45) -> 46* g1(28) -> 29* g1(18) -> 19* c1(39) -> 40* c1(16) -> 17* mark1(15) -> 16* mark1(37) -> 38* h1(36) -> 37* active1(27) -> 28* active1(54) -> 55* f1(17) -> 18* f1(19) -> 20* d2(119) -> 120* d2(74) -> 75* d2(111) -> 112* d2(113) -> 114* d2(68) -> 69* f0(8) -> 8* g2(99) -> 100* g2(101) -> 102* g2(61) -> 62* active0(8) -> 8* c2(93) -> 94* g0(8) -> 8* active2(60) -> 61* active2(67) -> 68* c0(8) -> 8* mark0(8) -> 8* d0(8) -> 8* h0(8) -> 8* 8 -> 47,45,39,27,15 15 -> 67* 16 -> 21* 20 -> 8* 21 -> 119* 22 -> 94,40,8 28 -> 101,36,30 29 -> 100,46,8 30 -> 111* 31 -> 114,48,8 37 -> 60,54 38 -> 8* 39 -> 93* 40 -> 8* 45 -> 99* 46 -> 8* 47 -> 113* 48 -> 8* 55 -> 28* 61 -> 74* 62 -> 100,16,21,119,46,8 69 -> 120,22 75 -> 114,48,8,45,27,15,39,47 94 -> 16,21 100 -> 16,21 102 -> 16,21 112 -> 16,21 114 -> 16,21 120 -> 16,21 problem: Qed