YES(?,O(n^3)) 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: Complexity Transformation Processor: strict: 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)) weak: Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [found](x0) = x0 + 1, [ok](x0) = x0, [proper](x0) = x0, [start](x0) = x0 + 1, [match](x0, x1) = x0 + x1, [X] = 0, [check](x0) = x0, [top](x0) = x0, [c] = 0, [mark](x0) = x0 + 1, [active](x0) = x0, [f](x0) = x0 orientation: active(f(x)) = x >= x + 1 = mark(x) top(active(c())) = 0 >= 1 = top(mark(c())) top(mark(x)) = x + 1 >= x = top(check(x)) check(f(x)) = x >= x = f(check(x)) check(x) = x >= x + 1 = start(match(f(X()),x)) match(f(x),f(y)) = x + y >= x + y = f(match(x,y)) match(X(),x) = x >= x = proper(x) proper(c()) = 0 >= 0 = ok(c()) proper(f(x)) = x >= x = f(proper(x)) f(ok(x)) = x >= x = ok(f(x)) start(ok(x)) = x + 1 >= x + 1 = found(x) f(found(x)) = x + 1 >= x + 1 = found(f(x)) top(found(x)) = x + 1 >= x = top(active(x)) active(f(x)) = x >= x = f(active(x)) f(mark(x)) = x + 1 >= x + 1 = mark(f(x)) problem: strict: active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) 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)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) weak: top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [found](x0) = x0, [ok](x0) = x0 + 1, [proper](x0) = x0, [start](x0) = x0 + 1, [match](x0, x1) = x0 + x1, [X] = 0, [check](x0) = x0, [top](x0) = x0, [c] = 1, [mark](x0) = x0, [active](x0) = x0, [f](x0) = x0 orientation: active(f(x)) = x >= x = mark(x) top(active(c())) = 1 >= 1 = top(mark(c())) check(f(x)) = x >= x = f(check(x)) check(x) = x >= x + 1 = start(match(f(X()),x)) match(f(x),f(y)) = x + y >= x + y = f(match(x,y)) match(X(),x) = x >= x = proper(x) proper(c()) = 1 >= 2 = ok(c()) proper(f(x)) = x >= x = f(proper(x)) f(ok(x)) = x + 1 >= x + 1 = ok(f(x)) start(ok(x)) = x + 2 >= x = found(x) f(found(x)) = x >= x = found(f(x)) active(f(x)) = x >= x = f(active(x)) f(mark(x)) = x >= x = mark(f(x)) top(mark(x)) = x >= x = top(check(x)) top(found(x)) = x >= x = top(active(x)) problem: strict: active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) 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)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) weak: start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [found](x0) = x0, [ok](x0) = x0, [proper](x0) = x0, [start](x0) = x0 + 1, [match](x0, x1) = x0 + x1, [X] = 1, [check](x0) = x0, [top](x0) = x0, [c] = 0, [mark](x0) = x0, [active](x0) = x0, [f](x0) = x0 orientation: active(f(x)) = x >= x = mark(x) top(active(c())) = 0 >= 0 = top(mark(c())) check(f(x)) = x >= x = f(check(x)) check(x) = x >= x + 2 = start(match(f(X()),x)) match(f(x),f(y)) = x + y >= x + y = f(match(x,y)) match(X(),x) = x + 1 >= x = proper(x) proper(c()) = 0 >= 0 = ok(c()) proper(f(x)) = x >= x = f(proper(x)) f(ok(x)) = x >= x = ok(f(x)) f(found(x)) = x >= x = found(f(x)) active(f(x)) = x >= x = f(active(x)) f(mark(x)) = x >= x = mark(f(x)) start(ok(x)) = x + 1 >= x = found(x) top(mark(x)) = x >= x = top(check(x)) top(found(x)) = x >= x = top(active(x)) problem: strict: active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) match(f(x),f(y)) -> f(match(x,y)) proper(c()) -> ok(c()) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) f(found(x)) -> found(f(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) weak: match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [found](x0) = x0 + 1, [ok](x0) = x0, [proper](x0) = x0 + 1, [start](x0) = x0 + 1, [match](x0, x1) = x0 + x1 + 1, [X] = 0, [check](x0) = x0, [top](x0) = x0, [c] = 0, [mark](x0) = x0, [active](x0) = x0, [f](x0) = x0 orientation: active(f(x)) = x >= x = mark(x) top(active(c())) = 0 >= 0 = top(mark(c())) check(f(x)) = x >= x = f(check(x)) check(x) = x >= x + 2 = start(match(f(X()),x)) match(f(x),f(y)) = x + y + 1 >= x + y + 1 = f(match(x,y)) proper(c()) = 1 >= 0 = ok(c()) proper(f(x)) = x + 1 >= x + 1 = f(proper(x)) f(ok(x)) = x >= x = ok(f(x)) f(found(x)) = x + 1 >= x + 1 = found(f(x)) active(f(x)) = x >= x = f(active(x)) f(mark(x)) = x >= x = mark(f(x)) match(X(),x) = x + 1 >= x + 1 = proper(x) start(ok(x)) = x + 1 >= x + 1 = found(x) top(mark(x)) = x >= x = top(check(x)) top(found(x)) = x + 1 >= x = top(active(x)) problem: strict: active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) match(f(x),f(y)) -> f(match(x,y)) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) f(found(x)) -> found(f(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) weak: proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [found](x0) = x0 + 1, [ok](x0) = x0, [proper](x0) = x0 + 1, [start](x0) = x0 + 1, [match](x0, x1) = x0 + x1 + 1, [X] = 0, [check](x0) = x0, [top](x0) = x0 + 1, [c] = 1, [mark](x0) = x0, [active](x0) = x0 + 1, [f](x0) = x0 orientation: active(f(x)) = x + 1 >= x = mark(x) top(active(c())) = 3 >= 2 = top(mark(c())) check(f(x)) = x >= x = f(check(x)) check(x) = x >= x + 2 = start(match(f(X()),x)) match(f(x),f(y)) = x + y + 1 >= x + y + 1 = f(match(x,y)) proper(f(x)) = x + 1 >= x + 1 = f(proper(x)) f(ok(x)) = x >= x = ok(f(x)) f(found(x)) = x + 1 >= x + 1 = found(f(x)) active(f(x)) = x + 1 >= x + 1 = f(active(x)) f(mark(x)) = x >= x = mark(f(x)) proper(c()) = 2 >= 1 = ok(c()) match(X(),x) = x + 1 >= x + 1 = proper(x) start(ok(x)) = x + 1 >= x + 1 = found(x) top(mark(x)) = x + 1 >= x + 1 = top(check(x)) top(found(x)) = x + 2 >= x + 2 = top(active(x)) problem: strict: check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) match(f(x),f(y)) -> f(match(x,y)) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) f(found(x)) -> found(f(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) weak: active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [found](x0) = x0, [ok](x0) = x0, [proper](x0) = x0, [start](x0) = x0, [match](x0, x1) = x0 + x1 + 1, [X] = 1, [check](x0) = x0, [top](x0) = x0 + 1, [c] = 1, [mark](x0) = x0, [active](x0) = x0, [f](x0) = x0 + 1 orientation: check(f(x)) = x + 1 >= x + 1 = f(check(x)) check(x) = x >= x + 3 = start(match(f(X()),x)) match(f(x),f(y)) = x + y + 3 >= x + y + 2 = f(match(x,y)) proper(f(x)) = x + 1 >= x + 1 = f(proper(x)) f(ok(x)) = x + 1 >= x + 1 = ok(f(x)) f(found(x)) = x + 1 >= x + 1 = found(f(x)) active(f(x)) = x + 1 >= x + 1 = f(active(x)) f(mark(x)) = x + 1 >= x + 1 = mark(f(x)) active(f(x)) = x + 1 >= x = mark(x) top(active(c())) = 2 >= 2 = top(mark(c())) proper(c()) = 1 >= 1 = ok(c()) match(X(),x) = x + 2 >= x = proper(x) start(ok(x)) = x >= x = found(x) top(mark(x)) = x + 1 >= x + 1 = top(check(x)) top(found(x)) = x + 1 >= x + 1 = top(active(x)) problem: strict: check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) f(found(x)) -> found(f(x)) active(f(x)) -> f(active(x)) f(mark(x)) -> mark(f(x)) weak: match(f(x),f(y)) -> f(match(x,y)) active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [found](x0) = x0, [ok](x0) = x0, [proper](x0) = x0, [start](x0) = x0, [1 0] [match](x0, x1) = [0 0]x0 + x1, [0] [X] = [0], [check](x0) = x0, [1 0] [top](x0) = [0 0]x0, [0] [c] = [0], [0] [mark](x0) = x0 + [1], [active](x0) = x0, [1 1] [0] [f](x0) = [0 1]x0 + [1] orientation: [1 1] [0] [1 1] [0] check(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(check(x)) check(x) = x >= x = start(match(f(X()),x)) [1 1] [0] [1 1] [0] proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x)) [1 1] [0] [1 1] [0] f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x)) [1 1] [0] [1 1] [0] f(found(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(f(x)) [1 1] [0] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x)) [1 1] [1] [1 1] [0] f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x)) [1 1] [1 1] [0] [1 0] [1 1] [0] match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y)) [1 1] [0] [0] active(f(x)) = [0 1]x + [1] >= x + [1] = mark(x) [0] [0] top(active(c())) = [0] >= [0] = top(mark(c())) [0] [0] proper(c()) = [0] >= [0] = ok(c()) match(X(),x) = x >= x = proper(x) start(ok(x)) = x >= x = found(x) [1 0] [1 0] top(mark(x)) = [0 0]x >= [0 0]x = top(check(x)) [1 0] [1 0] top(found(x)) = [0 0]x >= [0 0]x = top(active(x)) problem: strict: check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) f(found(x)) -> found(f(x)) active(f(x)) -> f(active(x)) weak: f(mark(x)) -> mark(f(x)) match(f(x),f(y)) -> f(match(x,y)) active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [0] [found](x0) = x0 + [1], [ok](x0) = x0, [proper](x0) = x0, [0] [start](x0) = x0 + [1], [1 0] [match](x0, x1) = [0 0]x0 + x1, [0] [X] = [0], [1 1] [0] [check](x0) = [0 1]x0 + [1], [1 0] [top](x0) = [0 0]x0, [0] [c] = [0], [1 1] [0] [mark](x0) = [0 1]x0 + [1], [active](x0) = x0, [1 1] [0] [f](x0) = [0 1]x0 + [1] orientation: [1 2] [1] [1 2] [1] check(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(check(x)) [1 1] [0] [0] check(x) = [0 1]x + [1] >= x + [1] = start(match(f(X()),x)) [1 1] [0] [1 1] [0] proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x)) [1 1] [0] [1 1] [0] f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x)) [1 1] [1] [1 1] [0] f(found(x)) = [0 1]x + [2] >= [0 1]x + [2] = found(f(x)) [1 1] [0] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x)) [1 2] [1] [1 2] [1] f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x)) [1 1] [1 1] [0] [1 0] [1 1] [0] match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y)) [1 1] [0] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x) [0] [0] top(active(c())) = [0] >= [0] = top(mark(c())) [0] [0] proper(c()) = [0] >= [0] = ok(c()) match(X(),x) = x >= x = proper(x) [0] [0] start(ok(x)) = x + [1] >= x + [1] = found(x) [1 1] [1 1] top(mark(x)) = [0 0]x >= [0 0]x = top(check(x)) [1 0] [1 0] top(found(x)) = [0 0]x >= [0 0]x = top(active(x)) problem: strict: check(f(x)) -> f(check(x)) check(x) -> start(match(f(X()),x)) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) active(f(x)) -> f(active(x)) weak: f(found(x)) -> found(f(x)) f(mark(x)) -> mark(f(x)) match(f(x),f(y)) -> f(match(x,y)) active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [found](x0) = x0, [ok](x0) = x0, [proper](x0) = x0, [start](x0) = x0, [1 0] [match](x0, x1) = [0 0]x0 + x1, [0] [X] = [0], [1 1] [check](x0) = [0 1]x0, [1 0] [0] [top](x0) = [0 0]x0 + [1], [0] [c] = [0], [1 1] [0] [mark](x0) = [0 1]x0 + [1], [active](x0) = x0, [1 1] [0] [f](x0) = [0 1]x0 + [1] orientation: [1 2] [1] [1 2] [0] check(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(check(x)) [1 1] check(x) = [0 1]x >= x = start(match(f(X()),x)) [1 1] [0] [1 1] [0] proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x)) [1 1] [0] [1 1] [0] f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x)) [1 1] [0] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x)) [1 1] [0] [1 1] [0] f(found(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(f(x)) [1 2] [1] [1 2] [1] f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x)) [1 1] [1 1] [0] [1 0] [1 1] [0] match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y)) [1 1] [0] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x) [0] [0] top(active(c())) = [1] >= [1] = top(mark(c())) [0] [0] proper(c()) = [0] >= [0] = ok(c()) match(X(),x) = x >= x = proper(x) start(ok(x)) = x >= x = found(x) [1 1] [0] [1 1] [0] top(mark(x)) = [0 0]x + [1] >= [0 0]x + [1] = top(check(x)) [1 0] [0] [1 0] [0] top(found(x)) = [0 0]x + [1] >= [0 0]x + [1] = top(active(x)) problem: strict: check(x) -> start(match(f(X()),x)) proper(f(x)) -> f(proper(x)) f(ok(x)) -> ok(f(x)) active(f(x)) -> f(active(x)) weak: check(f(x)) -> f(check(x)) f(found(x)) -> found(f(x)) f(mark(x)) -> mark(f(x)) match(f(x),f(y)) -> f(match(x,y)) active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [found](x0) = x0, [ok](x0) = x0, [1 1] [proper](x0) = [0 1]x0, [0] [start](x0) = x0 + [1], [1 0] [1 1] [match](x0, x1) = [0 0]x0 + [0 1]x1, [0] [X] = [0], [1 1] [0] [check](x0) = [0 1]x0 + [1], [1 0] [top](x0) = [0 0]x0, [0] [c] = [0], [1 1] [0] [mark](x0) = [0 1]x0 + [1], [active](x0) = x0, [1 1] [0] [f](x0) = [0 1]x0 + [1] orientation: [1 1] [0] [1 1] [0] check(x) = [0 1]x + [1] >= [0 1]x + [1] = start(match(f(X()),x)) [1 2] [1] [1 2] [0] proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x)) [1 1] [0] [1 1] [0] f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x)) [1 1] [0] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x)) [1 2] [1] [1 2] [1] check(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(check(x)) [1 1] [0] [1 1] [0] f(found(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(f(x)) [1 2] [1] [1 2] [1] f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x)) [1 1] [1 2] [1] [1 0] [1 2] [0] match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y)) [1 1] [0] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x) [0] [0] top(active(c())) = [0] >= [0] = top(mark(c())) [0] [0] proper(c()) = [0] >= [0] = ok(c()) [1 1] [1 1] match(X(),x) = [0 1]x >= [0 1]x = proper(x) [0] start(ok(x)) = x + [1] >= x = found(x) [1 1] [1 1] top(mark(x)) = [0 0]x >= [0 0]x = top(check(x)) [1 0] [1 0] top(found(x)) = [0 0]x >= [0 0]x = top(active(x)) problem: strict: check(x) -> start(match(f(X()),x)) f(ok(x)) -> ok(f(x)) active(f(x)) -> f(active(x)) weak: proper(f(x)) -> f(proper(x)) check(f(x)) -> f(check(x)) f(found(x)) -> found(f(x)) f(mark(x)) -> mark(f(x)) match(f(x),f(y)) -> f(match(x,y)) active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [1 1] [0] [found](x0) = [0 1]x0 + [1], [ok](x0) = x0, [proper](x0) = x0, [1 1] [0] [start](x0) = [0 1]x0 + [1], [1 0] [match](x0, x1) = [0 0]x0 + x1, [0] [X] = [0], [1 1] [0] [check](x0) = [0 1]x0 + [1], [1 0] [top](x0) = [0 0]x0, [0] [c] = [0], [1 1] [0] [mark](x0) = [0 1]x0 + [1], [1 1] [active](x0) = [0 1]x0, [1 1] [0] [f](x0) = [0 1]x0 + [1] orientation: [1 1] [0] [1 1] [0] check(x) = [0 1]x + [1] >= [0 1]x + [1] = start(match(f(X()),x)) [1 1] [0] [1 1] [0] f(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = ok(f(x)) [1 2] [1] [1 2] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x)) [1 1] [0] [1 1] [0] proper(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(proper(x)) [1 2] [1] [1 2] [1] check(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(check(x)) [1 2] [1] [1 2] [1] f(found(x)) = [0 1]x + [2] >= [0 1]x + [2] = found(f(x)) [1 2] [1] [1 2] [1] f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x)) [1 1] [1 1] [0] [1 0] [1 1] [0] match(f(x),f(y)) = [0 0]x + [0 1]y + [1] >= [0 0]x + [0 1]y + [1] = f(match(x,y)) [1 2] [1] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x) [0] [0] top(active(c())) = [0] >= [0] = top(mark(c())) [0] [0] proper(c()) = [0] >= [0] = ok(c()) match(X(),x) = x >= x = proper(x) [1 1] [0] [1 1] [0] start(ok(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(x) [1 1] [1 1] top(mark(x)) = [0 0]x >= [0 0]x = top(check(x)) [1 1] [1 1] top(found(x)) = [0 0]x >= [0 0]x = top(active(x)) problem: strict: check(x) -> start(match(f(X()),x)) f(ok(x)) -> ok(f(x)) weak: active(f(x)) -> f(active(x)) proper(f(x)) -> f(proper(x)) check(f(x)) -> f(check(x)) f(found(x)) -> found(f(x)) f(mark(x)) -> mark(f(x)) match(f(x),f(y)) -> f(match(x,y)) active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [found](x0) = x0, [0] [ok](x0) = x0 + [1], [1 1] [0] [proper](x0) = [0 1]x0 + [1], [start](x0) = x0, [1 0] [1 1] [0] [match](x0, x1) = [0 0]x0 + [0 1]x1 + [1], [0] [X] = [0], [1 1] [0] [check](x0) = [0 1]x0 + [1], [1 0] [top](x0) = [0 0]x0, [0] [c] = [0], [1 1] [0] [mark](x0) = [0 1]x0 + [1], [active](x0) = x0, [1 1] [0] [f](x0) = [0 1]x0 + [1] orientation: [1 1] [0] [1 1] [0] check(x) = [0 1]x + [1] >= [0 1]x + [1] = start(match(f(X()),x)) [1 1] [1] [1 1] [0] f(ok(x)) = [0 1]x + [2] >= [0 1]x + [2] = ok(f(x)) [1 1] [0] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = f(active(x)) [1 2] [1] [1 2] [1] proper(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(proper(x)) [1 2] [1] [1 2] [1] check(f(x)) = [0 1]x + [2] >= [0 1]x + [2] = f(check(x)) [1 1] [0] [1 1] [0] f(found(x)) = [0 1]x + [1] >= [0 1]x + [1] = found(f(x)) [1 2] [1] [1 2] [1] f(mark(x)) = [0 1]x + [2] >= [0 1]x + [2] = mark(f(x)) [1 1] [1 2] [1] [1 0] [1 2] [1] match(f(x),f(y)) = [0 0]x + [0 1]y + [2] >= [0 0]x + [0 1]y + [2] = f(match(x,y)) [1 1] [0] [1 1] [0] active(f(x)) = [0 1]x + [1] >= [0 1]x + [1] = mark(x) [0] [0] top(active(c())) = [0] >= [0] = top(mark(c())) [0] [0] proper(c()) = [1] >= [1] = ok(c()) [1 1] [0] [1 1] [0] match(X(),x) = [0 1]x + [1] >= [0 1]x + [1] = proper(x) [0] start(ok(x)) = x + [1] >= x = found(x) [1 1] [1 1] top(mark(x)) = [0 0]x >= [0 0]x = top(check(x)) [1 0] [1 0] top(found(x)) = [0 0]x >= [0 0]x = top(active(x)) problem: strict: check(x) -> start(match(f(X()),x)) weak: f(ok(x)) -> ok(f(x)) active(f(x)) -> f(active(x)) proper(f(x)) -> f(proper(x)) check(f(x)) -> f(check(x)) f(found(x)) -> found(f(x)) f(mark(x)) -> mark(f(x)) match(f(x),f(y)) -> f(match(x,y)) active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Matrix Interpretation Processor: dimension: 3 max_matrix: [1 1 1] [0 1 0] [0 0 1] interpretation: [1 1 1] [0] [found](x0) = [0 0 0]x0 + [0] [0 0 0] [1], [ok](x0) = x0 , [1 0 0] [0] [proper](x0) = [0 0 0]x0 + [1] [0 0 1] [0], [1 1 1] [0] [start](x0) = [0 0 0]x0 + [0] [0 0 0] [1], [1 0 0] [1 0 0] [match](x0, x1) = [0 1 0]x0 + [0 0 0]x1 [0 0 0] [0 0 1] , [0] [X] = [1] [0], [1 0 1] [1] [check](x0) = [0 0 0]x0 + [0] [0 0 0] [1], [1 1 0] [0] [top](x0) = [0 0 0]x0 + [1] [0 0 0] [0], [1] [c] = [1] [0], [1 0 1] [1] [mark](x0) = [0 0 0]x0 + [0] [0 0 0] [1], [1 0 1] [0] [active](x0) = [0 1 0]x0 + [0] [0 0 0] [1], [1 0 1] [0] [f](x0) = [0 0 0]x0 + [0] [0 0 0] [1] orientation: [1 0 1] [1] [1 0 1] [0] check(x) = [0 0 0]x + [0] >= [0 0 0]x + [0] = start(match(f(X()),x)) [0 0 0] [1] [0 0 0] [1] [1 0 1] [0] [1 0 1] [0] f(ok(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = ok(f(x)) [0 0 0] [1] [0 0 0] [1] [1 0 1] [1] [1 0 1] [1] active(f(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = f(active(x)) [0 0 0] [1] [0 0 0] [1] [1 0 1] [0] [1 0 1] [0] proper(f(x)) = [0 0 0]x + [1] >= [0 0 0]x + [0] = f(proper(x)) [0 0 0] [1] [0 0 0] [1] [1 0 1] [2] [1 0 1] [2] check(f(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = f(check(x)) [0 0 0] [1] [0 0 0] [1] [1 1 1] [1] [1 0 1] [1] f(found(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = found(f(x)) [0 0 0] [1] [0 0 0] [1] [1 0 1] [2] [1 0 1] [2] f(mark(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = mark(f(x)) [0 0 0] [1] [0 0 0] [1] [1 0 1] [1 0 1] [0] [1 0 0] [1 0 1] [0] match(f(x),f(y)) = [0 0 0]x + [0 0 0]y + [0] >= [0 0 0]x + [0 0 0]y + [0] = f(match(x,y)) [0 0 0] [0 0 0] [1] [0 0 0] [0 0 0] [1] [1 0 1] [1] [1 0 1] [1] active(f(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = mark(x) [0 0 0] [1] [0 0 0] [1] [2] [2] top(active(c())) = [1] >= [1] = top(mark(c())) [0] [0] [1] [1] proper(c()) = [1] >= [1] = ok(c()) [0] [0] [1 0 0] [0] [1 0 0] [0] match(X(),x) = [0 0 0]x + [1] >= [0 0 0]x + [1] = proper(x) [0 0 1] [0] [0 0 1] [0] [1 1 1] [0] [1 1 1] [0] start(ok(x)) = [0 0 0]x + [0] >= [0 0 0]x + [0] = found(x) [0 0 0] [1] [0 0 0] [1] [1 0 1] [1] [1 0 1] [1] top(mark(x)) = [0 0 0]x + [1] >= [0 0 0]x + [1] = top(check(x)) [0 0 0] [0] [0 0 0] [0] [1 1 1] [0] [1 1 1] [0] top(found(x)) = [0 0 0]x + [1] >= [0 0 0]x + [1] = top(active(x)) [0 0 0] [0] [0 0 0] [0] problem: strict: weak: check(x) -> start(match(f(X()),x)) f(ok(x)) -> ok(f(x)) active(f(x)) -> f(active(x)) proper(f(x)) -> f(proper(x)) check(f(x)) -> f(check(x)) f(found(x)) -> found(f(x)) f(mark(x)) -> mark(f(x)) match(f(x),f(y)) -> f(match(x,y)) active(f(x)) -> mark(x) top(active(c())) -> top(mark(c())) proper(c()) -> ok(c()) match(X(),x) -> proper(x) start(ok(x)) -> found(x) top(mark(x)) -> top(check(x)) top(found(x)) -> top(active(x)) Qed