YES Problem: active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) top(mark(x)) -> top(check(x)) check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) match(f(x),f(y)) -> f(match(x,y)) match(X(),x) -> proper(x) proper(c()) -> ok(c()) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) start(ok(x)) -> found(x) f(found(x)) -> found(f(x)) top(found(x)) -> top(active(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) Proof: Matrix Interpretation Processor: dim=3 interpretation: [1 0 1] [0] [top](x0) = [0 0 0]x0 + [0] [0 0 0] [1], [1 0 1] [start](x0) = [1 0 1]x0 [0 0 0] , [1 0 0] [0] [active](x0) = [1 0 0]x0 + [1] [0 0 1] [0], [0] [c] = [0] [1], [1 0 0] [check](x0) = [1 0 0]x0 [0 0 0] , [1 0 0] [ok](x0) = [0 0 0]x0 [0 0 1] , [1 0 0] [f](x0) = [0 0 0]x0 [0 0 0] , [1 0 0] [1 0 0] [0] [match](x0, x1) = [0 0 0]x0 + [0 0 0]x1 + [1] [0 0 1] [0 0 0] [0], [1 0 1] [found](x0) = [0 0 1]x0 [0 0 0] , [1 0 0] [0] [proper](x0) = [0 0 0]x0 + [0] [0 0 0] [1], [0] [X] = [0] [1], [1 0 0] [mark](x0) = [0 0 0]x0 [0 0 0] orientation: [1 0 0] [0] [1 0 0] active(f(x)) = [1 0 0]x + [1] >= [0 0 0]x = mark(x) [0 0 0] [0] [0 0 0] [1] [0] top(active(c())) = [0] >= [0] = top(mark(c())) [1] [1] [1 0 0] [0] [1 0 0] [0] top(mark(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = top(check(x)) [0 0 0] [1] [0 0 0] [1] [1 0 0] [1 0 0] check(f(x)) = [1 0 0]x >= [0 0 0]x = f(check(x)) [0 0 0] [0 0 0] [1 0 0] [1 0 0] check(x) = [1 0 0]x >= [1 0 0]x = start(match(f(X()),x)) [0 0 0] [0 0 0] [1 0 0] [1 0 0] [0] [1 0 0] [1 0 0] match(f(x),f(y)) = [0 0 0]x + [0 0 0]y + [1] >= [0 0 0]x + [0 0 0]y = f(match(x,y)) [0 0 0] [0 0 0] [0] [0 0 0] [0 0 0] [1 0 0] [0] [1 0 0] [0] match(X(),x) = [0 0 0]x + [1] >= [0 0 0]x + [0] = proper(x) [0 0 0] [1] [0 0 0] [1] [0] [0] proper(c()) = [0] >= [0] = ok(c()) [1] [1] [1 0 0] [0] [1 0 0] proper(f(x)) = [0 0 0]x + [0] >= [0 0 0]x = f(proper(x)) [0 0 0] [1] [0 0 0] [1 0 0] [1 0 0] f(ok(x)) = [0 0 0]x >= [0 0 0]x = ok(f(x)) [0 0 0] [0 0 0] [1 0 1] [1 0 1] start(ok(x)) = [1 0 1]x >= [0 0 1]x = found(x) [0 0 0] [0 0 0] [1 0 1] [1 0 0] f(found(x)) = [0 0 0]x >= [0 0 0]x = found(f(x)) [0 0 0] [0 0 0] [1 0 1] [0] [1 0 1] [0] top(found(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = top(active(x)) [0 0 0] [1] [0 0 0] [1] [1 0 0] [0] [1 0 0] active(f(x)) = [1 0 0]x + [1] >= [0 0 0]x = f(active(x)) [0 0 0] [0] [0 0 0] [1 0 0] [1 0 0] f(mark(x)) = [0 0 0]x >= [0 0 0]x = mark(f(x)) [0 0 0] [0 0 0] problem: active(f(x)) -> mark(x) top(mark(x)) -> top(check(x)) check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) match(f(x),f(y)) -> f(match(x,y)) match(X(),x) -> proper(x) proper(c()) -> ok(c()) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) start(ok(x)) -> found(x) f(found(x)) -> found(f(x)) top(found(x)) -> top(active(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [0] [top](x0) = [0 1 0]x0 + [0] [1 0 0] [1], [start](x0) = x0 , [active](x0) = x0 , [0] [c] = [1] [1], [1 1 0] [check](x0) = [0 0 1]x0 [1 1 0] , [1] [ok](x0) = x0 + [0] [0], [1 1 0] [f](x0) = [0 0 1]x0 [1 1 0] , [1 1 0] [match](x0, x1) = x0 + [0 0 1]x1 [1 1 0] , [found](x0) = x0 , [1 1 0] [proper](x0) = [0 0 1]x0 [1 1 0] , [0] [X] = [0] [0], [1 1 0] [mark](x0) = [0 0 1]x0 [1 1 0] orientation: [1 1 0] [1 1 0] active(f(x)) = [0 0 1]x >= [0 0 1]x = mark(x) [1 1 0] [1 1 0] [1 1 0] [0] [1 1 0] [0] top(mark(x)) = [0 0 1]x + [0] >= [0 0 1]x + [0] = top(check(x)) [1 1 0] [1] [1 1 0] [1] [1 1 1] [1 1 1] check(f(x)) = [1 1 0]x >= [1 1 0]x = f(check(x)) [1 1 1] [1 1 1] [1 1 0] [1 1 0] check(x) = [0 0 1]x >= [0 0 1]x = start(match(f(X()),x)) [1 1 0] [1 1 0] [1 1 0] [1 1 1] [1 1 0] [1 1 1] match(f(x),f(y)) = [0 0 1]x + [1 1 0]y >= [0 0 1]x + [1 1 0]y = f(match(x,y)) [1 1 0] [1 1 1] [1 1 0] [1 1 1] [1 1 0] [1 1 0] match(X(),x) = [0 0 1]x >= [0 0 1]x = proper(x) [1 1 0] [1 1 0] [1] [1] proper(c()) = [1] >= [1] = ok(c()) [1] [1] [1 1 1] [1 1 1] proper(f(x)) = [1 1 0]x >= [1 1 0]x = f(proper(x)) [1 1 1] [1 1 1] [1 1 0] [1] [1 1 0] [1] f(ok(x)) = [0 0 1]x + [0] >= [0 0 1]x + [0] = ok(f(x)) [1 1 0] [1] [1 1 0] [0] [1] start(ok(x)) = x + [0] >= x = found(x) [0] [1 1 0] [1 1 0] f(found(x)) = [0 0 1]x >= [0 0 1]x = found(f(x)) [1 1 0] [1 1 0] [1 0 0] [0] [1 0 0] [0] top(found(x)) = [0 1 0]x + [0] >= [0 1 0]x + [0] = top(active(x)) [1 0 0] [1] [1 0 0] [1] [1 1 0] [1 1 0] active(f(x)) = [0 0 1]x >= [0 0 1]x = f(active(x)) [1 1 0] [1 1 0] [1 1 1] [1 1 1] f(mark(x)) = [1 1 0]x >= [1 1 0]x = mark(f(x)) [1 1 1] [1 1 1] problem: active(f(x)) -> mark(x) top(mark(x)) -> top(check(x)) check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) match(f(x),f(y)) -> f(match(x,y)) match(X(),x) -> proper(x) proper(c()) -> ok(c()) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) f(found(x)) -> found(f(x)) top(found(x)) -> top(active(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) Matrix Interpretation Processor: dim=1 interpretation: [top](x0) = 4x0, [start](x0) = x0, [active](x0) = x0, [c] = 4, [check](x0) = 2x0, [ok](x0) = x0, [f](x0) = 2x0, [match](x0, x1) = x0 + 2x1, [found](x0) = x0 + 1, [proper](x0) = x0, [X] = 0, [mark](x0) = 2x0 orientation: active(f(x)) = 2x >= 2x = mark(x) top(mark(x)) = 8x >= 8x = top(check(x)) check(f(x)) = 4x >= 4x = f(check(x)) check(x) = 2x >= 2x = start(match(f(X()),x)) match(f(x),f(y)) = 2x + 4y >= 2x + 4y = f(match(x,y)) match(X(),x) = 2x >= x = proper(x) proper(c()) = 4 >= 4 = ok(c()) proper(f(x)) = 2x >= 2x = f(proper(x)) f(ok(x)) = 2x >= 2x = ok(f(x)) f(found(x)) = 2x + 2 >= 2x + 1 = found(f(x)) top(found(x)) = 4x + 4 >= 4x = top(active(x)) active(f(x)) = 2x >= 2x = f(active(x)) f(mark(x)) = 4x >= 4x = mark(f(x)) problem: active(f(x)) -> mark(x) top(mark(x)) -> top(check(x)) check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) match(f(x),f(y)) -> f(match(x,y)) match(X(),x) -> proper(x) proper(c()) -> ok(c()) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) Matrix Interpretation Processor: dim=1 interpretation: [top](x0) = x0, [start](x0) = 4x0, [active](x0) = 5x0 + 5, [c] = 4, [check](x0) = 4x0, [ok](x0) = x0, [f](x0) = x0, [match](x0, x1) = 2x0 + x1, [proper](x0) = x0, [X] = 0, [mark](x0) = 4x0 + 5 orientation: active(f(x)) = 5x + 5 >= 4x + 5 = mark(x) top(mark(x)) = 4x + 5 >= 4x = top(check(x)) check(f(x)) = 4x >= 4x = f(check(x)) check(x) = 4x >= 4x = start(match(f(X()),x)) match(f(x),f(y)) = 2x + y >= 2x + y = f(match(x,y)) match(X(),x) = x >= x = proper(x) proper(c()) = 4 >= 4 = ok(c()) proper(f(x)) = x >= x = f(proper(x)) f(ok(x)) = x >= x = ok(f(x)) active(f(x)) = 5x + 5 >= 5x + 5 = f(active(x)) f(mark(x)) = 4x + 5 >= 4x + 5 = mark(f(x)) problem: active(f(x)) -> mark(x) check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) match(f(x),f(y)) -> f(match(x,y)) match(X(),x) -> proper(x) proper(c()) -> ok(c()) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [start](x0) = [0 0 0]x0 [0 0 0] , [1] [active](x0) = x0 + [0] [0], [0] [c] = [0] [0], [1 1 1] [0] [check](x0) = [0 1 1]x0 + [0] [0 0 0] [1], [1 0 0] [ok](x0) = [0 0 0]x0 [0 0 0] , [1 0 0] [0] [f](x0) = [0 1 1]x0 + [0] [0 0 0] [1], [1 1 0] [1 1 1] [0] [match](x0, x1) = [0 0 0]x0 + [0 1 1]x1 + [0] [0 0 0] [0 0 0] [1], [1 1 1] [0] [proper](x0) = [0 1 1]x0 + [0] [0 0 0] [1], [0] [X] = [0] [0], [1 0 0] [0] [mark](x0) = [0 1 1]x0 + [0] [0 0 0] [1] orientation: [1 0 0] [1] [1 0 0] [0] active(f(x)) = [0 1 1]x + [0] >= [0 1 1]x + [0] = mark(x) [0 0 0] [1] [0 0 0] [1] [1 1 1] [1] [1 1 1] [0] check(f(x)) = [0 1 1]x + [1] >= [0 1 1]x + [1] = f(check(x)) [0 0 0] [1] [0 0 0] [1] [1 1 1] [0] [1 1 1] check(x) = [0 1 1]x + [0] >= [0 0 0]x = start(match(f(X()),x)) [0 0 0] [1] [0 0 0] [1 1 1] [1 1 1] [1] [1 1 0] [1 1 1] [0] match(f(x),f(y)) = [0 0 0]x + [0 1 1]y + [1] >= [0 0 0]x + [0 1 1]y + [1] = f(match(x,y)) [0 0 0] [0 0 0] [1] [0 0 0] [0 0 0] [1] [1 1 1] [0] [1 1 1] [0] match(X(),x) = [0 1 1]x + [0] >= [0 1 1]x + [0] = proper(x) [0 0 0] [1] [0 0 0] [1] [0] [0] proper(c()) = [0] >= [0] = ok(c()) [1] [0] [1 1 1] [1] [1 1 1] [0] proper(f(x)) = [0 1 1]x + [1] >= [0 1 1]x + [1] = f(proper(x)) [0 0 0] [1] [0 0 0] [1] [1 0 0] [0] [1 0 0] f(ok(x)) = [0 0 0]x + [0] >= [0 0 0]x = ok(f(x)) [0 0 0] [1] [0 0 0] [1 0 0] [1] [1 0 0] [1] active(f(x)) = [0 1 1]x + [0] >= [0 1 1]x + [0] = f(active(x)) [0 0 0] [1] [0 0 0] [1] [1 0 0] [0] [1 0 0] [0] f(mark(x)) = [0 1 1]x + [1] >= [0 1 1]x + [1] = mark(f(x)) [0 0 0] [1] [0 0 0] [1] problem: check(x) -> start(match(f(X()),x)) match(X(),x) -> proper(x) proper(c()) -> ok(c()) f(ok(x)) -> ok(f(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) Matrix Interpretation Processor: dim=1 interpretation: [start](x0) = x0, [active](x0) = 4x0, [c] = 0, [check](x0) = 4x0 + 2, [ok](x0) = 2x0 + 1, [f](x0) = 5x0, [match](x0, x1) = x0 + x1 + 2, [proper](x0) = x0 + 2, [X] = 0, [mark](x0) = 4x0 + 1 orientation: check(x) = 4x + 2 >= x + 2 = start(match(f(X()),x)) match(X(),x) = x + 2 >= x + 2 = proper(x) proper(c()) = 2 >= 1 = ok(c()) f(ok(x)) = 10x + 5 >= 10x + 1 = ok(f(x)) active(f(x)) = 20x >= 20x = f(active(x)) f(mark(x)) = 20x + 5 >= 20x + 1 = mark(f(x)) problem: check(x) -> start(match(f(X()),x)) match(X(),x) -> proper(x) active(f(x)) -> f(active(x)) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [0] [start](x0) = [0 1 0]x0 + [0] [1 0 0] [1], [1 0 0] [0] [active](x0) = [1 0 0]x0 + [1] [0 0 1] [0], [1 0 1] [0] [check](x0) = [0 0 0]x0 + [1] [1 0 0] [1], [1 0 1] [0] [f](x0) = [0 0 0]x0 + [0] [0 0 0] [1], [1 1 0] [1 0 0] [0] [match](x0, x1) = [0 0 0]x0 + [0 0 0]x1 + [1] [0 0 0] [0 0 0] [0], [1 0 0] [proper](x0) = [0 0 0]x0 [0 0 0] , [0] [X] = [1] [0] orientation: [1 0 1] [0] [1 0 0] [0] check(x) = [0 0 0]x + [1] >= [0 0 0]x + [1] = start(match(f(X()),x)) [1 0 0] [1] [1 0 0] [1] [1 0 0] [1] [1 0 0] match(X(),x) = [0 0 0]x + [1] >= [0 0 0]x = proper(x) [0 0 0] [0] [0 0 0] [1 0 1] [0] [1 0 1] [0] active(f(x)) = [1 0 1]x + [1] >= [0 0 0]x + [0] = f(active(x)) [0 0 0] [1] [0 0 0] [1] problem: check(x) -> start(match(f(X()),x)) active(f(x)) -> f(active(x)) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [0] [start](x0) = [0 0 0]x0 + [1] [0 0 0] [0], [1 1 0] [active](x0) = [0 1 0]x0 [0 0 0] , [1 0 0] [0] [check](x0) = [0 0 0]x0 + [1] [0 0 0] [0], [1 0 0] [0] [f](x0) = [0 1 0]x0 + [1] [0 0 0] [0], [1 0 0] [1 0 0] [match](x0, x1) = [0 0 0]x0 + [0 0 0]x1 [0 0 0] [0 0 0] , [0] [X] = [0] [0] orientation: [1 0 0] [0] [1 0 0] [0] check(x) = [0 0 0]x + [1] >= [0 0 0]x + [1] = start(match(f(X()),x)) [0 0 0] [0] [0 0 0] [0] [1 1 0] [1] [1 1 0] [0] active(f(x)) = [0 1 0]x + [1] >= [0 1 0]x + [1] = f(active(x)) [0 0 0] [0] [0 0 0] [0] problem: check(x) -> start(match(f(X()),x)) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [start](x0) = [0 0 0]x0 [0 0 0] , [1 0 0] [1] [check](x0) = [0 0 0]x0 + [0] [0 0 0] [0], [1 0 0] [f](x0) = [0 0 0]x0 [0 0 0] , [1 0 0] [1 0 0] [match](x0, x1) = [0 0 0]x0 + [0 0 0]x1 [0 0 0] [0 0 0] , [0] [X] = [0] [0] orientation: [1 0 0] [1] [1 0 0] check(x) = [0 0 0]x + [0] >= [0 0 0]x = start(match(f(X()),x)) [0 0 0] [0] [0 0 0] problem: Qed