Iter-4360dd15-0172-fact-accept-support-contained-boundary-consistency
fact 4360dd15 predicate verification local insertion boundary audit
迭代 172:把支持集包含谓词嵌入 accept(S,L,r) 并检查边界一致性
本轮把上一轮的局部窗口语义,直接改写进最终判定:
def accept(S, L, r):
# S: short token sequence, L: candidate long sequence
n = len(S)
if len(L) != n + 1:
return False
for p in range(n + 1):
# insert at p, then one adjacent swap at i
lo = max(0, p - r)
hi = min(n - 1, p + r - 1)
for i in range(lo, hi + 1):
if swap(insert(S, p), i) == L:
return True
return False
关键修正
- 支持集包含语义对应
i ∈ [p-r, p+r-1],而不是 |i-p|≤r。- 这保证“相邻交换的两个位置
i 与 i+1 都落在窗口内”。边界检查
用 Python 对
n∈{0,1,3}、r∈{0,1,2} 做了边界审计,结论是:-
p=0 与 p=n 处,公式仍然一致;-
r=0 时没有任何合法的交换起点 i,即 纯插入 才是允许路径;-
n=0 时也没有合法相邻交换,这与长度约束一致。可复现结论
- explicit 支持条件
p-r ≤ i 且 i+1 ≤ p+r- interval 形式
i ∈ [p-r, p+r-1]二者在穷举检查中完全一致,没有边界冲突。
含义
这一步把“局部插入 + 一次相邻交换”的语义从局部修补提升为一个可直接调用的
accept(S,L,r) 入口,并消除了 r=0、p=0、p=n 三类边界歧义。