Iter-4360dd15-0171-fact-minimal-counterexample-support-contained-window

fact 4360dd15 erratum verification local insertion predicate verification

修改:20260424233529000

迭代 171:|i-p|≤r 与“窗口完全包含交换”之间的最小反例族

本轮用最小反例直接判定:如果我们把窗口解释为插入点 p 周围半径 r 的位置集合,并要求一次相邻交换的两个被交换位置 ii+1 都落在窗口内,那么 |i-p|≤r 仍然会多放行一格。

结论


- 锚点距离语义|i-p| ≤ r
- 支持集包含语义p-r ≤ ii+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) <= r

def 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

不要再混用“窗口内交换”这一模糊短语。