Long-form

谁来验证验证器:Lean 的多事之夏与自动形式化的地基问题

DOC
N°501
DATE
Oct 11, 2026
READ
6 min read
TAGS
Lean, 形式化验证, 自动形式化, 陶哲轩, Thomas Hales, AI 数学

过去两个月,本站连续写过 OpenAI 数学的量产与撤稿、Lean 验证在其中的角色。但有一条主线一直没有展开:当 AI 生成的形式化证明以千万行计的时候,那个负责最终裁决的验证器本身,由谁来验证? 10 月 9 日,陶哲轩的博客刊出一篇客座长文,作者 Thomas Hales——就是那位用计算机证明 Kepler 猜想的数学家——把这个问题摊开在了所有人面前。

一、一篇迟到的必读文献

Hales 这篇文章的标题是「数学家应该了解 Lean 定理证明器的什么:可靠性问题与 AI」。它出现在一个微妙的时点:过去一年自动形式化从理想变成了日常,而这篇文章在提醒大家,地基的验收标准还没人认真讨论过。

文章本身也有个耐人寻味的脚注:它最初用另一种文件格式写成,由 AI 转换成博客可用的格式,陶哲轩特意标注了这一点。一个讲「自动形式化可靠性」的文章用 AI 完成了排版转换——这个时代所有关于信任的讨论,都发生在 AI 已经深度介入工作流之后。

二、自动形式化的 2026:从二十年到十一天

Hales 先给了一组对照数字。他自己的 Kepler 猜想形式化花了约 20 个人年,产出 50 万行证明脚本。而 2026 年发生的事:

  • 2025 年 9 月,Math Inc. 完成素数定理的「准自动形式化」——之所以算「准」,是因为 AI 卡住时仍需人类介入指路;
  • 2026 年 1 月,Urban 发出预印本,两周内自动形式化了 13 万行拓扑学内容,覆盖 Munkres 教材的大部分;
  • 2026 年 3 月,Math Inc. 在宣布完成 8 维球堆积形式化一周后,又完成 24 维球堆积的自动形式化,生成约 50 万行代码,剪枝后剩 20 万行;
  • 2026 年 5 月,Meta 研究院的 ATLAS 项目自动形式化了 26 本数学教科书的大部分;
  • 2026 年 9 月 4 日,Anthropic 宣布完成费马大定理的自动形式化,11 天生成 1300 万行 Lean;
  • 9 月 8 日,OpenAI 宣布带外力的 Navier-Stokes 爆破定理证明时,附带了 Lean 形式化。

支撑这一切的 mathlib 库如今有近 30 万个定理、超过 10 万个定义、250 万行代码、700 多位贡献者。甚至有人发起了「数学自动形式化计划」(MAP),目标直白到吓人:把所有已知数学翻译成形式代码。作为参照,费马大定理那一项目的量级是 1300 万行——「下一个一万亿行代码」的提法已经出现在了正经讨论里。

三、Kernel:几千行 C++ 撑起的一切

Lean 的信任结构其实很清晰:证明脚本经过 elaboration(某种意义上的「数学编译」)之后,交给 kernel 做最终检查。kernel 是几千行 C++ 代码,是整个体系的最终裁判。

Hales 把责任边界划得很清楚:如果 mathlib 那 250 万行里混进了一个无条件为假的证明,那就是 kernel 的失职。反过来,kernel 通过的证明也不应被直接相信——还差一步「陈述保真」的人审:形式化的命题是不是你真正想证的定理?实数、偏导、测度这些定义是否与学界共识一致?这一步对 Navier-Stokes 来说,就是把 Lean 陈述对照千禧年大奖问题的官方表述核一遍,难度远低于检查证明本身,但不可或缺。

四、多事之夏:当 Collatz 被非法反证

然后是今年夏天的主角戏。soundness bug——允许 kernel 接受对 False 的证明的缺陷——是证明助手最灾难的 bug 类型,因为它意味着任何命题都能被「证明」。Hales 本人是这个领域的老猎人:2003 年他在 HOL Light 里发现过 soundness bug,那个内核只有几百行代码,此前七年无人发现。

Lean 4 在 2023 年 9 月发布前修掉两个;2025 年 5 月又报出一个溢出引发的。然后,2026 年春夏之交,业界现在称之为「soundness bugs 之夏」:七八月间多个 soundness bug 集中爆出,其中一个让 Lean 产出了 Collatz 猜想的非法反证——另一个让 Hales 本人在自己的老领域里收获了一份非法的 Kepler 猜想证明。

所有 bug 都被迅速修复,mathlib 已用修复后的 kernel 重新验证。但这件事的真正价值在于暴露了信任结构的细节。

五、三条防御路线与其天花板

Hales 讨论了三条堵漏路线,每一条都有清晰的天花板。

第一条:多内核交叉验证。 社区已经写了约 25 个 Lean 内核。Navier-Stokes 的形式化已被十几个证明检查器确认。但 Hales 用自己的遭遇给出了现成反例:Collatz 非法反证没有被 Nanoda 内核拦下,因为它自己带着另一个无关 bug 照单全收。不同内核可能共享同源缺陷,芯片有软错误、系统有漏洞、编译器会出错。理想状态是「洁净室」内核——实现者不看原版源码,避免把 bug 一起复制过去。

第二条:形式化验证 kernel 本身。 天花板是哥德尔第二不完备定理:足够强的系统无法证明自身一致。能做到的最好程度是相对一致性——假定基础系统一致,则 Lean 4 一致。这条路线历史悠久且仍在推进,但它注定是「相对的保证」。

第三条:陈述保真的人审。 前面说过,这是把指数难题压缩成可完成核对的一步,Lean 的 comparator 工具还能辅助检查未授权公理。

六、真正的转折点:AI 站在了验证这一边

这个夏天故事里最值得记住的角色分工,可能被大多数报道错过了。这些 bug 不是黑帽挖出来的,而是前沿模型在安全研究者手里挖出来的:

Collatz bug 的发现者 Ramana Kumar 是 CakeML——端到端经过形式化验证的 ML 编译器——的作者之一;多个其他 bug 由 OpenAI 的 Dan Selsam 协助 Lean FRO 找出,他带去的是一台专攻网络安全的内部 AI,逐个报出 kernel 的编程错误,直到 AI 自己报告「找不到更多问题」才结束合作。de Moura 随后发布了完整的事后分析。

把镜头拉远,这个结构意味深长:生成侧的 AI 十一天写出一千三百万行证明,验证侧的 AI 在同一个夏天给验证器做安全审计。 同一条技术曲线的两端,一边生产信任,一边检测伪信任。Hales 们担心的最坏情形——黑帽用 AI 找到 soundness bug 然后伪造重要定理——没有发生,但攻防双方都换了武器。

七、给工程师的三条提醒

这篇文章虽然是写给数学家的,对做 AI 系统的工程师同样有三条直白的提醒。

第一,「已验证」永远要追问验证器。 形式化验证不是信任的终点,而是信任的转移——从证明转移到 kernel。任何打着「数学上已证明」旗号的 AI 产物,都值得再问一句:哪个 kernel、什么版本、谁审计过陈述。

第二,保真审计不可外包。 证明正确但命题错误的形式化结果是真实存在的风险类别。无论自动形式化流水线跑得多顺,最后一步「确认它证的就是我们要证的」目前仍是人类职责,也是整条链路上性价比最高的一步人工介入。

第三,防御要赌多样性而非单点强度。 25 个内核、多种实现语言、不同硬件、洁净室设计——这套思路与安全工程里的 N 版本编程一脉相承。在 AI 同时武装攻防两端的年代,单点再强也不如异构冗余可靠。

Hales 在文章结尾没有渲染危机,反而把「bug 被找出来的夏天」定性为积极发展。这大概是这篇文章最冷静也最重要的判断:自动形式化的地基没有塌,但它第一次被认真地敲打了一遍——而敲打它的,恰好也是 AI。

Frequently asked questions

Lean 的 soundness bug 到底有多严重?
Soundness bug 是证明助手里最灾难的一类缺陷:kernel 若接受一个对 False 的证明,就能推出任何命题,整个系统的可信度瞬间归零。今夏 Lean 的一个 bug 甚至产出了 Collatz 猜想的非法反证和一份非法的 Kepler 猜想证明。好消息是所有 bug 都被安全研究者而非黑帽发现,且修复后 mathlib 已用新 kernel 重新验证,地基完好。
多内核交叉验证为什么不能消除所有疑虑?
Hales 用 Collatz bug 给出了现成反例:当时的 Nanoda 内核本可以拦下非法反证,但它自己带着另一个无关 bug,照单全收。不同内核可能共享同源缺陷,运行它们的芯片有设计瑕疵、操作系统有漏洞、编译器会出错。交叉验证能显著提高置信度——Navier-Stokes 形式化已被十几个证明检查器确认——但它放大的是检测概率,不等于逻辑上的完备保证。
为什么人审「命题对不对」比审「证明对不对」容易得多?
证明的逐步检查已由 kernel 完成,人只需要确认形式化的陈述就是你想证的定理:实数域、偏导数、测度这些概念在 Lean 里的定义是否符合学界共识。对 Navier-Stokes 这类项目,就是把 Lean 陈述对照 Fefferman 的千禧年大奖问题描述过一遍。Lean 的 comparator 工具还能辅助检查是否混入未授权公理。这把指数级的验证难题压缩成了可完成的人工核对。
哥德尔不完备定理在这里面扮演什么角色?
它封死了「用 Lean 证明 Lean kernel 无 bug」这条路——一个足够强的系统无法证明自身的一致性,这正是哥德尔第二不完备定理。能做到的最好程度是相对一致性证明:假定某基础系统一致,则 Lean 4 一致、不会证出 False。形式化验证 kernel 的路线始终有用,但天花板是相对的,这也解释了为什么多内核、多语言、多硬件的交叉验证仍然是必要的冗余。
这波 soundness bug 对自动形式化是利空吗?
恰恰相反,Hales 认为漏洞被找出是积极信号。今夏的 bug 是前沿模型在安全研究者手里挖出来的,不是黑帽攻击:Collatz bug 的发现者 Ramana Kumar 是端到端验证过的 CakeML 的作者之一,其余多个 bug 由 OpenAI 的 Dan Selsam 用专攻网络安全的内部 AI 找出,直到 AI 报告找不到新问题才收工。发现机制运转良好,说明生态在成熟,而不是地基在塌。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.