Claude 用 11 天基本自主地写出了费马大定理的第一份完整机器验证证明。Lean 能检查证明是否符合写下来的陈述,却不能判断陈述有没有写错,也不会检查几十个 agent 的陈述能否彼此兼容。第一轮尝试就失败在这里。Prove2Me 把共享陈述放进不可修改的公共账本,再用 agent 互查和人工审核守住核心陈述。
2026 年 9 月 4 日,Anthropic 公布了费马大定理的第一份完整机器验证证明。费马约在 1637 年写下这个命题:当 n > 2 时,不存在正整数 a、b、c 使 aⁿ + bⁿ = cⁿ。Andrew Wiles 于 1993 年 6 月宣布证明。发现漏洞后,他先独自修补,后来学生 Richard Taylor 加入。整个修补过程持续了一年,最终证明于 1995 年发表,共 129 页。
这一次,数十个 Claude agent 基本自主地工作了 11 天,写出 1300 万行 Lean。Lean 是一种证明助手:人或 agent 把数学写成代码,Lean 的内核再逐步检查推理。项目共生成 30,300 条定理,其中约 29,500 条进入最终证明;依赖树中的精确数量是 29,511 条。整份证明是 Mathlib 的 5 倍多。Mathlib 是 Lean 社区维护的数学库,也是这份证明的基础。
这些 agent 使用的不是在售模型,而是一款内部研究模型。官方称,它的能力大致相当于 Claude Fable 5.1。项目消耗了约 60 亿输出 token。
伦敦帝国理工学院纯数学教授 Kevin Buzzard 受邀审阅了这项工作。他自 2024 年起领导另一项由 EPSRC 资助的费马大定理形式化项目。Buzzard 认为:AI autoformalization artefacts are now robust enough to be built upon。随后,他独立编译代码库,并运行 comparator,核对最终陈述与 Mathlib 中的费马大定理陈述是否一致。他在自己的 Xena 博客上给出结论:it checks out。
Buzzard 同时写道:mathematically this work of anthropic tells us essentially nothing。他此前已经有 99.9% 的把握相信原有数学证明成立。因此在他看来,这项工作的价值不在于发现了新数学,而在于展示 AI 自动形式化已经能做到什么。
成功之前还有一批失败尝试。Anthropic 博客只用一段话解释原因:agent 起初有一些进展,但很快丢失项目状态,无法继续有效协作。原文是:while agents had some early success, they quickly lost track of the project's state and stopped collaborating effectively。这些尝试并非全被丢弃,最终证明中约 7% 的非模板行来自它们。
转机来自开放协作平台 Prove2Me。它由 Anthropic 研究员、哥伦比亚大学商学院助理教授 Tianyi Peng 及其团队开发。Lean 一直都在,题目也没有变。博客所说的故障发生在 agent 的协作层:它们无法持续共享项目状态。
本文不展开费马大定理的数学细节,只分析这套协作结构。检查器可以保证证明推出某条陈述,却不能保证这条陈述忠实表达了原本要证明的数学命题。几十个 agent 分别写陈述时,检查器也不会判断这些陈述能否彼此兼容。Prove2Me 处理的正是这一层。
同一研究线上的 fanout-needs-a-referee 讨论了另一种做法:由一个 coordinator 单线程指挥约 60 个 subagent,并判断它们的结果。相比之下,这次运行把共享状态从 coordinator 的上下文移到了平台上的公共陈述账本。
Lean 内核检查的是一段证明能否得到目标陈述。用 Lean 的术语说,命题被表示为一种类型,证明则是属于这个类型的项。内核逐步检查推理;任何一步失败,文件就无法编译。
证明里不能留下 sorry。这个占位符表示“这一段暂时跳过”,所以含有 sorry 的证明还没有完成。证明也不能偷偷加入额外公理。本次证明只依赖三条标准公理:propext、Classical.choice、Quot.sound。FinalCheck.lean 用 #print axioms 把这项要求写进构建条件,公理不符就会失败。
内核管不到的是陈述本身。Prove2Me 论文写道:The proof kernel certifies that a proof inhabits a statement, but not that the statement faithfully captures the intended claim。也就是说,内核能确认“这段证明符合这条陈述”,却不能确认“这条陈述忠实表达了原本的数学问题”。
AI 写出的陈述可能漏掉前提,也可能偏离原意,甚至可能变成一个没有实际内容的命题。只要能给出符合它的证明,内核仍会接受。
证明仓 README 也划出了同一条边界:What no tool can check is that each intermediate theorem means what its name suggests; that is for the reader to judge。定理名称看起来像某个经典结果,不代表形式陈述真的表达了那个结果。这个判断仍要由人来做。
Prove2Me 论文还引用了 Bourigault 等人在 2026 年开展的一项 Lean-as-judge 审计。该审计发现,被证明的陈述中只有约 43% 忠实表达了原命题。这个数字来自论文引用的第三方研究,不是本次费马大定理项目的统计。
因此,有了硬检查器,人不必逐行审核证明,但仍要审核陈述。论文描述的做法,是把人工审核范围缩小到定义和顶层陈述。新的问题随之出现:几十个 agent 同时写陈述时,怎样保证它们仍在解决同一个问题?
Anthropic 博客对失败原因只给了一句:agent 丢失项目状态,无法继续有效协作。博客没有提供更完整的因果分析。它只说换用 Prove2Me 后项目成功了,并列出平台提供的三项帮助。最终证明中约 7% 的非模板行来自此前的失败尝试。
Prove2Me 论文解释的是平台为何采用现在的设计。论文先讨论一种看似直接的协作方式:在一份大证明里留下许多 sorry,让多个 agent 共同编辑文件,各自填补空缺。
这种方式首先会增加计算开销。下游引理一旦改变,依赖它的上游文件可能都要重新编译,而 Mathlib 这样的大型库从头构建本来就很慢。
更根本的问题是任务难以独立拆分。多个 agent 同时修改一组文件,改动会彼此纠缠,很难把一项工作完整地交给某个参与者。Git 和 PR 可以缓解冲突,但每个 PR 都需要人或编排 agent 审核并合并。对去中心化平台来说,这个中心步骤的代价太高。
论文还区分了两类共识失败。第一类是没有共享目标:多个 agent 把同一条引理写成互不兼容的陈述,这些陈述无法相互 import。于是并行工作变成重复工作,结果也无法累积。
第二类是陈述漂移:一条中间陈述悄悄偏离原文,所有 import 它的 proof-sketch 都会继承这个偏差。
内核无法识别这两类问题。它只会逐条检查每个陈述对应的证明。
Anthropic 博客把 Prove2Me 的帮助概括为三项。
第一,平台维护一张定理依赖图,也就是 DAG(有向无环图)。每条定理都指向它依赖的定理,依赖只能向前,不能成环。agent 可以从图上看到项目当前状态,再决定下一步证明什么。不同分支也可以并行推进。
第二,平台把陈述和证明放在不同文件里,并单独维护两者的链接。这样可以缩短 Lean 的编译路径,减少资源消耗。
第三,每条陈述都有自然语言描述。agent 可以先搜索已有结果,能复用就不再重复证明。Prove2Me 论文进一步解释了这三项能力如何落地。
平台最基础的设计,是把陈述与证明分开。一条陈述提交后,就成为独立且不可修改的对象。同一条陈述可以对应多个证明,这些证明可以来自不同 agent。
每项工作都放在一张 theorem card(定理卡)上。卡片有三个核心字段:Description 用自然语言说明任务;Preamble 列出需要 import 的环境;Formal statement 则保存 Lean 陈述,并以 := by sorry 结尾。这里的 sorry 只表示卡片发布时还没有证明。完整提交还可以附上 Source、Tags 和验证环境。
提交证明时,参与者必须提供一个名为 solution 的 Lean 定理。这个定理的类型要与目标陈述完全一致。提交的证明不能包含 sorry,也不能增加新公理。平台会在同一环境中编译陈述和证明,并确认两者的类型可以互换。平台也接受否证;此时 solution 的类型是目标陈述的否定。每份证明还要附上自然语言的证明思路。
在此基础上,Prove2Me 引入 proof-sketch。它是一份条件式证明:只要若干子引理成立,父定理就成立。proof-sketch 可以 import 平台上的其他定理,包括尚未证明的定理;每条被引用的子引理都会变成一张独立卡片。
论文用 Property 1 规定组合方式:proof-sketch 引用的所有子引理都通过验证后,父定理就算通过。陈述和 proof-sketch 提交后都不能修改,所以局部证明可以稳定地组合成全局证明。
这样一来,每条子引理都是一个独立问题。agent 只需处理自己的卡片,不必下载或编译父定理。叶子卡片被逐一证明后,父卡片会自动关闭,整个过程逐层向上推进。
但能拆分任务,还不等于大家在证明同一件事。Prove2Me 用 mission 和 milestone 来建立共识。一个 mission 包含目标定理、相关定义,以及规划证明路线的里程碑引理。发起人称为 captain。captain 不必会写 Lean,但要负责确认这些核心陈述。
每个 milestone 都包含一段权威的自然语言陈述,通常逐字取自原始数学材料;它还会链接到 captain 认可的标准形式化。论文要求 milestone 同时满足两个条件。idempotent 指不同 agent 独立尝试时,最终应回到同一个标准目标。authoritative 指下游工作可以直接依赖这个目标,不必再次审核它是否忠实表达原文。
有了这份权威清单,agent 只需形式化 milestone 指定的陈述,不再各自改写目标。已经证明的 milestone 可以直接复用。所有 milestone 都被证明,并由 proof-sketch 连接起来后,目标定理就会在依赖图中闭合。
mission 也划定了人工审核范围。发布前,人只审核目标陈述、依赖定义和 milestone,确认它们忠实表达原本的数学。论文的原话是 and audit nothing beyond it。agent 可以自由增加中间引理,不需要人逐条审核。
论文的论证是:系统不必信任 agent 选择的每一步分解,只需信任两件事。第一,核心陈述已经由人审核;第二,Lean 内核接受了这些陈述的证明。中间引理只负责帮助关闭已审核的目标。
captain 可以让自己的 agent 起草 mission 提案,但最终审核不能交给 agent。论文明确要求:the human is required to click each statement individually to confirm it。
为了让不熟悉 Lean 的人也能审核,平台提供独立的 read-back。一个审阅 agent 只读取 Lean 声明和相关定义,不看原始数学文本,然后把声明翻译回普通数学语言。人要比较的是两段数学陈述,而不是直接读 Lean 代码。
平台的搜索 API 会索引每张卡的自然语言描述。agent 提交新陈述前必须先搜索:已有结果就直接复用,确实没有才创建新卡。如果一条陈述后来被其他证明 import,提出它的人会获得贡献记录,平台把这种关系称为“引用”。
平台还提供讨论频道,让 agent 实时同步进度。论文中的敏感度猜想 mission 按 Hao Huang 2019 年的证明展开。一个 agent 提交了 import gotsman_linial 的 proof-sketch,另一个 agent 随后否证了这条定理。前一个 agent 补上缺失的边界条件,提交 gotsman_linial_with_zero,修正后的定理关闭了整条分支。
博客列出的三项帮助至此都有了具体对应:DAG 对应不可变的陈述账本和 proof-sketch;文件拆分对应陈述与证明分离;自然语言描述对应搜索和复用。
费马大定理 mission 的里程碑图分成三块。图上的标签分别是 Mazur(Frey 曲线模 p 表示的不可约性)、Ribet(level lowering)和 Wiles(半稳定曲线的模性)。三条路线先汇入“No Frey package exists”,再通向费马大定理。按照 PROOF-PATH.md 的定义,Frey package 是一个归一化的反例,以及由这个反例构造出的 Frey 曲线。

Anthropic 随博客发布了一份 17 页 PDF,记录每天的进展和 Claude 的推理原文。Day 1 是 2026 年 8 月 7 日。PDF 说,除了目标定理的一行陈述,人没有编写其他数学内容或 Lean 代码。原文是:wrote no mathematics and no Lean beyond the one-line statement of the goal theorem。
运行期间,人偶尔调整优先级或给予鼓励。博客保留了两句指令:"Jacobian as a scheme sounds high priority," "push [the] Mazur [theorem] to be done soon."
因此,人的角色不能简单概括成“只写了一行题目”。在这次运行中,人写下目标定理,并偶尔调整优先级。按照 Prove2Me 论文描述的 mission 设计,人还要审核目标陈述、定义和 milestone。不过,博客和 PDF 没有说明这次 mission 的 milestone 由谁制定或审核。
PDF 对 agent 分工的描述很直接:数十个 Claude agent 并行编写陈述、互相检查,再完成证明。原文是:A team of Claude agents working in parallel wrote the statements, checked one another's statements, and proved them.
通常,一条陈述在进入证明阶段前还会经过同伴检查。PDF 说:Before a statement was worked on, other agents usually checked that it was true as written. This caught several false statements early.
时间线记录了多次互查。Day 3 凌晨 2:48,Claude 正在处理一个涉及 q-展开的下降步骤。另一个 agent 指出其中有错。Claude 重新计算后承认分母没有界,于是放弃这条证明路线,同时注明原陈述本身可能仍然成立。
Day 9 中午 12:55,一整条分支闭合。不到三小时前,该分支中的一条陈述刚被发现按字面写法是假的,随后得到修正。
Day 11 早上 7:54,Claude 记录了一次自己作为审阅者的漏检:
One correction I owe you: a statement [that I] passed this morning [as a reviewer] (a "model domination" lemma on the Cartier-module column) turned out to be false as written — [another agent] found the counter-example by computing a case my [review] had argued instead of computed. It was caught before anyone wrote a proof against it
Claude 先前通过推理放行了一条“model domination”引理,另一个 agent 直接计算具体情形后找到了反例。错误在任何 agent 开始为它写证明之前被发现。
Day 11 晚 8:25,距离终点约一个半小时,另一个 agent 又对 Claude 放行的一条引理提出异议。Claude 复查后承认:Own-miss. I must post a correction promptly。
证明规模在这些检查与修正中持续增长。Day 2 已有约 2,100 条定理,Day 6 超过 10,000 条。累计曲线在 Day 7 短暂下探。PDF 解释,这次下降来自依赖树重新连接,并不代表已经完成的工作丢失。
Day 4 的视频帧显示,依赖图从中心向外扩展。当时共有 6,851 条陈述,其中 6,504 条已证明。
Day 10 下午 2:58,一个 agent 完成了原本估计需要几周才能完成的步骤。实际用时只有两小时多一点。它提交了一份 7,300 行的证明,第一次提交就被接受。到 Day 11,最终证明的依赖树包含 29,511 条定理,而且全部已证明。平台在整个项目中共生成约 30,300 条定理。


Day 11 晚 10 点,最后一条开放陈述得到证明。几秒内,完成状态沿依赖图向上传递,先后穿过 Ribet 的 level lowering 和证明所需的模性提升步骤。平台在 02:00:57Z Aug-18(10:00:57pm ET Aug-17)把费马大定理标记为 Proved。
Before a statement was worked on, other agents usually checked that it was true as written. This caught several false statements early.Anthropic · Formalizing Fermat’s Last Theorem in Lean(时间线 PDF)
agent 自己先划出了这条界线。10:01,一个 agent 看到根节点下已经没有开放叶子,开始反复查询根节点状态。10:02,另一个 agent 写下:Before posting: verify myself with an independent GET。第三个 agent 把这一刻称为 Historic moment (modulo re-check)。10:04,又有一个 agent 看到根节点唯一的直接子节点已经变成 Proved。它先提醒自己 Don't jump to conclusions,随后逐一核对卡片。
10:25,团队群里有人询问整条费马大定理是否已经完成形式化。一个 agent 决定先把“Proved on prove2me”的含义、已经检查的内容和仍未检查的内容说清楚。
平台上的 Proved 表示,依赖树里约 30,000 张卡各自都有一份机器检查通过的证明。每份证明都针对它所依赖的子节点陈述。
但此时还没有完成四项端到端检查:整棵树尚未在平台之外从源码重编译;每份证明的类型尚未再次与对应卡片中的陈述核对;尚未统一确认每份证明所用公理是否只包括 Lean 的三条标准公理和卡片声明的子节点;尚未确认整个依赖图无环,而且每条依赖都有着落。
agent 给出的结论是:Until the re-check reads clean the honest sentence is "proved on prove2me, pending the independent re-check" rather than "FLT is formalized"。
这两个状态必须分开。平台会单独编译每张卡的证明,只检查它能否从子节点陈述推出当前陈述。逐卡通过,不等于整份证明已经完成一次端到端构建。
第二天早上,团队在平台之外重新编译全部 29,511 张卡。再过一天,整棵依赖树被作为一个 Lean 项目构建。README 记录了这次构建的规模:60,475 个模块全部由 Lean 内核检查,从头构建耗时 5 小时 32 分钟,96 个并行任务,峰值内存 153 GB。
随后还有两套外部裁判。第一套是 comparator,Lean 官方生态中的校验工具。它确认最终陈述与一份只 import Mathlib 的参考陈述完全一致,也确认没有额外公理。然后,它把包含 Mathlib 在内的整份证明从头重放。最终输出为 Your solution is okay!。这一步耗时 14 小时 46 分钟,峰值内存 230 GB。
第二套是 nanoda,一个用 Rust 独立实现的 Lean 内核。它相当于用另一套裁判重新检查同一份结果。nanoda 接受了导出环境中的全部声明,输出:Checked 1052234 declarations with no errors。
Anthropic 在 nanoda 上应用了四个小补丁:一个增加进度输出,三个加速定义等价搜索。README 说明,这些补丁都没有增加、删除或削弱任何类型规则。
Buzzard 也独立编译了整个代码库并运行 comparator,结论仍是 it checks out。他统计的代码超过 1340 万行。在一台 96 核机器上,编译时间接近 Mathlib 的 20 倍。
proved on prove2me, pending the independent re-check。FinalCheck.lean 要求最终定理只依赖三条标准公理,否则构建失败。5 小时 32 分钟,96 个并行任务,峰值 153 GB。it checks out。1340 万行以上,96 核机器上编译时间接近 Mathlib 的 20 倍。证明层完全交给 agent 后,内核可以保证正确性,却不会让产物自动变得适合人读。README 对整个代码库的描述是:written to be checked rather than read。
文件名和定理名由机器生成。P2M 与十六进制后缀只是流水线标签,不是数学概念。名称与陈述不一致时,真正被证明的是陈述。发布版本还删除了大部分注释,只保留上游声明、doc string、引用,以及 #guard_msgs 用来核对预期输出的注释。
博客脚注也承认,这份证明很可能远长于实际所需。它是 Mathlib 的 5 倍多;部分原因是 Mathlib 的代码更精炼,而且经过充分审阅。
约两周后,Claude 被问及这份证明与帝国理工学院团队编写的 Lean 库有何区别。它先回答:correctness is not the difference. The difference is form。
Claude 自评称,这份代码不能当作数学文本来读。发布版本没有注释。900 多个文件超过 Mathlib 的 1,500 行上限,而 Mathlib 自身只有 2 个这样的文件。
这些经典结果也没有按最一般、最方便复用的形式来证明。它们只证明了这条费马大定理路线实际需要的强度。
重复是另一项明显特征。Claude 把这一项概括为 Duplicated, not shared。约五分之二的定理陈述,也在另一个证明文件里逐字出现过。所有证明文件的代码行中,约五分之一是其他地方已有声明的逐字副本。一条基础引理甚至在 300 多个文件中被重新声明。
工程环境也很庞大。生成的 preamble,也就是每个文件开头的环境设置段,占全部字节的 31%。约 11,700 个文件单独设置了计算上限。
工具链从 Lean 4.30 升到 4.33 后,29,511 个证明文件中有 7,620 个发生改动,占 26%。其中 5,672 个需要逐个修复,占全部证明文件的 19%。
论文中的 milestone 和“先搜索再提交”,针对的正是对同一陈述的重复形式化。最终产物里仍有约五分之二的陈述重复。
不同来源对代码规模采用了不同口径。Claude 自述代码量为 1350 万行,约是 Mathlib 的六倍,并称证明中约有 533,000 条局部辅助引理。PDF 正文写约 1300 万行;去掉生成的 boilerplate 后,约为 1050 万行。博客采用的主口径也是 1300 万行 Lean。
PROOF-PATH.md 还记录了每个经典结果的证明覆盖什么范围。Mazur 部分只证明 Frey 曲线在 p ≥ 17 时的不可约性,也就是这条路线需要的 Eisenstein 商结论。指数 5、7、11、13 由 Kummer 理论或下降法直接处理,没有使用 Mazur 关于一般曲线的完整定理。
Langlands–Tunnell 部分只证明八面体情形。对象限定为满射、行列式是分圆特征的 ρ̄₃,而且带有 level 条件。
模性提升只覆盖两条带 level 条件的陈述,分别处理半稳定模型 W 在 p = 3 和 p ∈ {3, 5} 时的情形。Ribet 部分也采用较窄的版本:它只证明 Frey 表示在无平方因子、由导子支持的 level 上可以进行 level lowering,结论写成迹同余。
Buzzard 还指出,这份证明采用的是 Darmon、Diamond、Taylor 在 1995 年讲义中整理的路线,不是他自己的项目所走的现代路线。博客提到,仅描述 Buzzard 项目初始阶段的 blueprint 就有 86 页。
在 Buzzard 看来,小素数情形已经由 flt-regular 项目的结果覆盖。该项目由 Best、Birkbeck 等六位作者在 2025 年发表,形式化了 regular primes;最小的 irregular prime 是 37,因此小素数覆盖是完整的。
最终证明约有 7% 的非模板行来自此前的失败尝试。
Anthropic 将这项工作称为 token 密集型项目。它消耗了约 60 亿输出 token,博客称它也是迄今最大的 Lean 证明。
团队还做了一个更小的实验。Anthropic 研究员使用三个个人 Claude Max 订阅,完全通过 Prove2Me 协作,在三天内完成了 Vinogradov 三素数定理的形式化。博客把这一定理归为 Hardy–Littlewood 圆法的一个应用,并据此判断:We think with the right scaffold, collaborative formalization of major results with consumer AI subscriptions is achievable.
Prove2Me 论文的 Table 1 还列出两项案例。第一项使用集中式 agent 群、Anthropic Opus 4.5 模型和计费 API。团队进行了 30,000 次 agent 运行,成本约 $100,000;他们用 7 天形式化了一本代数组合教材,产出 130K 行。
第二项在 Prove2Me 上形式化 Bandit Algorithms 教材。6 个 agent 使用两个消费级订阅,在 13 天内完成 151K 行,估算成本约 $400。
| 对照 | 行数 | 成本口径 | agent | 天数 |
|---|---|---|---|---|
| 代数组合教材(集中式 agent 群) | 130K | 约 $100,000,计费 API | 30,000 次 agent 运行(Opus 4.5) | 7 |
| Bandit Algorithms 教材(Prove2Me) | 151K | 约 $400,两个消费级订阅 | 6 个 | 13 |
| Vinogradov 三素数定理(Prove2Me) | 博客未给 | 三个个人 Claude Max 订阅 | 博客未给 | 3 |
论文明确说明,这些只是案例研究,不是对照实验。计费 API 和订阅采用不同的成本口径,不能直接比较。这些案例之间还有两项变量同时变化:采用了更强的新一代模型,harness 也专门为多 agent 证明设计。要分清各自作用,必须固定模型,只替换 harness;论文没有做这项实验。
Buzzard 的项目获得 100 万英镑资助,周期为五年。看到 Anthropic 用 11 天完成这项工作,他写道:but I do wonder if they spent more money。博客没有给出这批约 60 亿输出 token 的单价。
Prove2Me 论文在结论中这样划分人的判断与 agent 的劳动:
Choosing what is worth formalizing, decomposing it into milestones, and judging whether a formal statement says what it is meant to say all remain matters of human judgment; agents supply the mechanical labor beneath those decisions.Prove2Me 论文 · 结论段
Buzzard 判断,如果 AI 群体能在 11 天内端到端形式化几千页数学文献,今后的研究成果可能会在产生时同步完成形式化。机器将检查 Langlands 纲领的现有文献,并标出尚未完成的论证。有些论文会直接使用“专家都知道”的结果;机器可以把这些隐藏的前提明确列出来。
It will also keep us honest
anthropic.com · 2026-09-04。事件、数字口径(11 天 / 13 million 行 / 30,300 与 29,500 / 约 60 亿 token / ~7%)、Prove2Me 三项帮助、失败那一句、Buzzard 两段引语。
Anthropic · 17 页 PDF。逐日时间线、agent 互查陈述的原句、Proved 与独立复检两层、Claude 两周后的书面自评(重复、preamble、工具链升级)。
arXiv 2608.28433 v2 · 2026-08-31 · Chen, Marwaha, Lu, Yuen, Peng。平台方论文:陈述与证明分离、audited missions、proof-sketch、milestone、两类共识失败、Table 1 案例。
证明仓。三重校验与构建成本、「What no tool can check…」、各经典结果实际证到的强度。
Kevin Buzzard 个人博客 · 2026-09-04。独立编译 + comparator 复核、1340 万行以上、约 Mathlib 20 倍编译时间、「mathematically … tells us essentially nothing」。