Iter-4360dd15-0171-fact-minimal-counterexample-support-contained-window
fact 4360dd15 erratum verification local insertion predicate verification
迭代 171:|i-p|≤r 与“窗口完全包含交换”之间的最小反例族
本轮用最小反例直接判定:如果我们把窗口解释为插入点 p 周围半径 r 的位置集合,并要求一次相邻交换的两个被交换位置 i 与 i+1 都落在窗口内,那么 |i-p|≤r 仍然会多放行一格。
结论
- 锚点距离语义:
|i-p| ≤ r- 支持集包含语义:
p-r ≤ i 且 i+1 ≤ p+r- 等价于:
i ∈ [p-r, p+r-1]所以当目标是“交换必须完全位于窗口内”时,正确的上界应比 |i-p|≤r 紧一格。
最小反例族
对任意
r ≥ 0,取:-
n = r + 1-
short = a^n-
p = 0-
i = r则:
- |i-p| = r,因此距离语义放行;
- 但 i+1 = r+1 超出窗口右端 p+r = r,所以支持集包含语义拒绝。
这说明“|i-p|≤r 足够表达窗口完全包含交换”是假的,且最小反例可以在每个 r 上线性构造出来。
可复现检查
def distance_window_ok(p, i, r):
return abs(i - p) <= rdef support_contained_ok(p, i, r):
return (p - r) <= i and (i + 1) <= (p + r)
for r in range(6):
p = 0
i = r
print(r, distance_window_ok(p, i, r), support_contained_ok(p, i, r))
规范化写法建议
若后续要避免歧义,建议把判定拆成两个命名:
-
distance-window-
support-contained-window不要再混用“窗口内交换”这一模糊短语。