YES Problem: top(free(x)) -> top(check(new(x))) new(free(x)) -> free(new(x)) old(free(x)) -> free(old(x)) new(serve()) -> free(serve()) old(serve()) -> free(serve()) check(free(x)) -> free(check(x)) check(new(x)) -> new(check(x)) check(old(x)) -> old(check(x)) check(old(x)) -> old(x) Proof: Matrix Interpretation Processor: dim=1 interpretation: [old](x0) = 4x0, [top](x0) = 2x0 + 1, [check](x0) = x0, [serve] = 4, [free](x0) = 2x0, [new](x0) = 2x0 orientation: top(free(x)) = 4x + 1 >= 4x + 1 = top(check(new(x))) new(free(x)) = 4x >= 4x = free(new(x)) old(free(x)) = 8x >= 8x = free(old(x)) new(serve()) = 8 >= 8 = free(serve()) old(serve()) = 16 >= 8 = free(serve()) check(free(x)) = 2x >= 2x = free(check(x)) check(new(x)) = 2x >= 2x = new(check(x)) check(old(x)) = 4x >= 4x = old(check(x)) check(old(x)) = 4x >= 4x = old(x) problem: top(free(x)) -> top(check(new(x))) new(free(x)) -> free(new(x)) old(free(x)) -> free(old(x)) new(serve()) -> free(serve()) check(free(x)) -> free(check(x)) check(new(x)) -> new(check(x)) check(old(x)) -> old(check(x)) check(old(x)) -> old(x) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [1] [old](x0) = [0 1 0]x0 + [0] [0 0 0] [0], [1 1 1] [top](x0) = [1 0 1]x0 [0 0 0] , [1 0 0] [check](x0) = [0 1 0]x0 [0 0 0] , [0] [serve] = [1] [1], [1 1 0] [0] [free](x0) = [0 0 0]x0 + [1] [0 0 1] [0], [1 0 1] [new](x0) = [0 1 0]x0 [0 0 1] orientation: [1 1 1] [1] [1 1 1] top(free(x)) = [1 1 1]x + [0] >= [1 0 1]x = top(check(new(x))) [0 0 0] [0] [0 0 0] [1 1 1] [0] [1 1 1] [0] new(free(x)) = [0 0 0]x + [1] >= [0 0 0]x + [1] = free(new(x)) [0 0 1] [0] [0 0 1] [0] [1 1 0] [1] [1 1 0] [1] old(free(x)) = [0 0 0]x + [1] >= [0 0 0]x + [1] = free(old(x)) [0 0 0] [0] [0 0 0] [0] [1] [1] new(serve()) = [1] >= [1] = free(serve()) [1] [1] [1 1 0] [0] [1 1 0] [0] check(free(x)) = [0 0 0]x + [1] >= [0 0 0]x + [1] = free(check(x)) [0 0 0] [0] [0 0 0] [0] [1 0 1] [1 0 0] check(new(x)) = [0 1 0]x >= [0 1 0]x = new(check(x)) [0 0 0] [0 0 0] [1 0 0] [1] [1 0 0] [1] check(old(x)) = [0 1 0]x + [0] >= [0 1 0]x + [0] = old(check(x)) [0 0 0] [0] [0 0 0] [0] [1 0 0] [1] [1 0 0] [1] check(old(x)) = [0 1 0]x + [0] >= [0 1 0]x + [0] = old(x) [0 0 0] [0] [0 0 0] [0] problem: new(free(x)) -> free(new(x)) old(free(x)) -> free(old(x)) new(serve()) -> free(serve()) check(free(x)) -> free(check(x)) check(new(x)) -> new(check(x)) check(old(x)) -> old(check(x)) check(old(x)) -> old(x) Matrix Interpretation Processor: dim=3 interpretation: [1 1 0] [old](x0) = [0 1 0]x0 [1 0 0] , [check](x0) = x0 , [0] [serve] = [0] [1], [0] [free](x0) = x0 + [1] [0], [1 1 1] [0] [new](x0) = [0 1 1]x0 + [0] [0 0 0] [1] orientation: [1 1 1] [1] [1 1 1] [0] new(free(x)) = [0 1 1]x + [1] >= [0 1 1]x + [1] = free(new(x)) [0 0 0] [1] [0 0 0] [1] [1 1 0] [1] [1 1 0] [0] old(free(x)) = [0 1 0]x + [1] >= [0 1 0]x + [1] = free(old(x)) [1 0 0] [0] [1 0 0] [0] [1] [0] new(serve()) = [1] >= [1] = free(serve()) [1] [1] [0] [0] check(free(x)) = x + [1] >= x + [1] = free(check(x)) [0] [0] [1 1 1] [0] [1 1 1] [0] check(new(x)) = [0 1 1]x + [0] >= [0 1 1]x + [0] = new(check(x)) [0 0 0] [1] [0 0 0] [1] [1 1 0] [1 1 0] check(old(x)) = [0 1 0]x >= [0 1 0]x = old(check(x)) [1 0 0] [1 0 0] [1 1 0] [1 1 0] check(old(x)) = [0 1 0]x >= [0 1 0]x = old(x) [1 0 0] [1 0 0] problem: check(free(x)) -> free(check(x)) check(new(x)) -> new(check(x)) check(old(x)) -> old(check(x)) check(old(x)) -> old(x) Matrix Interpretation Processor: dim=1 interpretation: [old](x0) = 5x0 + 4, [check](x0) = 6x0 + 5, [free](x0) = 4x0 + 3, [new](x0) = 3x0 + 2 orientation: check(free(x)) = 24x + 23 >= 24x + 23 = free(check(x)) check(new(x)) = 18x + 17 >= 18x + 17 = new(check(x)) check(old(x)) = 30x + 29 >= 30x + 29 = old(check(x)) check(old(x)) = 30x + 29 >= 5x + 4 = old(x) problem: check(free(x)) -> free(check(x)) check(new(x)) -> new(check(x)) check(old(x)) -> old(check(x)) Matrix Interpretation Processor: dim=1 interpretation: [old](x0) = 4x0 + 4, [check](x0) = 4x0 + 4, [free](x0) = x0 + 1, [new](x0) = x0 orientation: check(free(x)) = 4x + 8 >= 4x + 5 = free(check(x)) check(new(x)) = 4x + 4 >= 4x + 4 = new(check(x)) check(old(x)) = 16x + 20 >= 16x + 20 = old(check(x)) problem: check(new(x)) -> new(check(x)) check(old(x)) -> old(check(x)) Matrix Interpretation Processor: dim=1 interpretation: [old](x0) = 5x0 + 3, [check](x0) = 4x0 + 1, [new](x0) = 4x0 + 1 orientation: check(new(x)) = 16x + 5 >= 16x + 5 = new(check(x)) check(old(x)) = 20x + 13 >= 20x + 8 = old(check(x)) problem: check(new(x)) -> new(check(x)) Matrix Interpretation Processor: dim=3 interpretation: [1 1 0] [check](x0) = [0 1 0]x0 [0 0 0] , [1 0 0] [0] [new](x0) = [0 1 0]x0 + [1] [0 0 0] [0] orientation: [1 1 0] [1] [1 1 0] [0] check(new(x)) = [0 1 0]x + [1] >= [0 1 0]x + [1] = new(check(x)) [0 0 0] [0] [0 0 0] [0] problem: Qed