Iter-4360dd15-0173-fact-support-contained-boundary-consistency
fact 4360dd15 predicate verification boundary audit local insertion
迭代 173:支持集包含版 accept(S,L,r) 的边界一致性复核
本轮把 172 轮给出的最终判定中的窗口条件再次做了穷举验证,确认以下两种写法完全等价:
# 形式 A:区间写法
lo = max(0, p - r)
hi = min(n - 1, p + r - 1)
i in range(lo, hi + 1)# 形式 B:显式包含写法
(p - r <= i) and (i + 1 <= p + r)
Python 复核代码
from itertools import productdef interval_indices(n, p, r):
lo = max(0, p - r)
hi = min(n - 1, p + r - 1)
return list(range(lo, hi + 1)) if lo <= hi else []
def explicit_indices(n, p, r):
return [i for i in range(n) if (p - r <= i) and (i + 1 <= p + r)]
counter = []
for n in range(0, 8):
for r in range(0, 6):
for p in range(0, n + 1):
a = interval_indices(n, p, r)
b = explicit_indices(n, p, r)
if a != b:
counter.append((n, p, r, a, b))
assert counter == []
边界结论
-
p = 0:仍然成立,合法起点自然被截断到左边界内。-
p = n:仍然成立,合法起点自然被截断到右边界内。-
r = 0:对所有 p,合法交换起点集合都为空;因此 纯插入 是唯一可行路径。-
n = 0:没有任何相邻交换位置,这与长度约束一致。可直接复用的判定模板
def admissible_swap_starts(n, p, r):
return range(max(0, p - r), min(n - 1, p + r - 1) + 1)
结论
accept(S, L, r) 中把窗口语义写成支持集包含版后,边界检查没有引入新歧义;p=0、p=n、r=0 三类边界都与预期一致。