Wang, Jiang, Liu 等(深圳大学)发布VerusEval 论文(接近 60%)
我们花了五十年让证明无法造假。然后我们让编码智能体自己选要证明什么。本月一篇研究论文给出了量化结果。
AI 写形式化规约,AI 写证明,验证器两者都接受。然后人类去读这些规约。接近 60% 的规约证明的东西和作者本意不符。不是错误的证明。是错误的规约。验证器每次都判对了。这才是问题所在。
如果让智能体自己选,它会挑那些容易证明、但对程序毫无意义的性质,而检查器无法区分一个无用的定理和一个有用的定理。我称之为氛围验证:智能体写规约和证明,检查器亮绿灯,没人去读规约。这适用于 Verus、Lean、Bend、TLA+、Dafny,以及你喜欢的任何形式化语言。
举个例子,一个智能体在一件简单到不该出错的事情上失败了:要求做一个经过验证的排序。它写了一条规约说“输出已排序”,然后证明了它。但这条规约从头到尾没说输出和输入包含相同的元素,所以一个返回空列表的函数也能满足它,而验证器接受了这个证明。平凡可满足的规约是默认失败模式,不是边缘情况。
下面是一个真正管用的做法。不要说“对代码库做形式化验证”。要说“证明 [组件] 中的 [性质] 成立”。一个性质是前置条件(进入时为真)、后置条件(退出时为真),或不变量(全程保持为真)。例如,“会话令牌在撤销它的登出之后永远不被接受”就是一个好的不变量。
瓶颈在于从代码评审转向意图评审,而规约就是意图所在的地方。所以:在看代码之前先读规约。写出 3 个它必须接受的输入和 3 个它必须拒绝的输入。以最大的疑心对待模型写的规约,依靠你作为工程师的判断力。
软件的形式化验证不会自动创造信任,它只是把信任从代码转移到规约。如果没有人读过规约,你什么都没验证。你只是氛围验证了一下。关注我,获取更多关于验证和智能体工程的内容。
* Wang、Jiang、Liu 等人,《VerusEval:超越验证器接受度评估 LLM 生成的 Verus 规约》,深圳大学,arXiv 2610.26464,2026 年 10 月
本文由 AI 翻译自英文原帖,技术名词保留英文。
查看 X 原帖