NeFut Logo NeFut
EN 管理员登录

[AI学术] 已验证但空洞:LLM 驱动的验证代码生成的三类失效面

发布于:2026-11-05 22:00 最后更新:2026-11-07 12:32
#Machine Learning #LLM #Artificial Intelligence

在评估 LLM 生成代码的“验证”意义时,常见的做法是给出一个单一的验证率。我们认为这会把三种本质不同的属性混为一谈,这三种属性在一次条件审计序列中分别对应:

实验一(A ≠ B):使用 Li@Opus(在 Claude Opus 4.7 上复现 \citet{li2025dafny} 的 Dafny‑IR 流水线)对三个 Python 基准进行测试。HumanEval 上的验证器接受率达到 99.1%,但仅有 1.9% 的样本能够得到绑定到规格谓词的证书,说明高接受率并不等同于规格绑定。

实验二(B ≠ C):在 Rust 基准上使用我们内部实现的 VCG(同样基于 Dafny‑IR)进行评估。Rust 目标能够强制每个组件以 Dafny 证书形式输出,保证结构上通过绑定门。即便如此,结构上通过验证的样本中仍有 11.48%(MBPP‑Rust)和 14.82%(VeriContest LC slice)在隐藏测试中失败,表明规格本身未能完整捕获需求。

在 VeriContest 的 LC 切片上,VCG 报告的端到端成功率为 7.79%(535/6870),而外部报告的 GPT‑5.5 为 5.51%,单次 Opus 4.7 为 1.88%。两者之间的差异分别为 2.3 个百分点和 $4.14\times$,但任务预算、修复策略和评测框架的差异阻止了直接的性能对比。

点评:这三层失效面提醒我们,在追求 LLM 生成代码的形式化验证时,不能仅关注验证器的通过率,而必须同步检查规格绑定和规格的语义完整性,否则所谓的“验证”可能只是表面的合规。

原文链接: https://arxiv.org/abs/2611.05590

[h] 返回首页