← 最新论文
🤖 AI

Goedel-Code-Prover: Hierarchical Proof Search for Open State-of-the-Art Code Verification

本文提出了名为 Goedel-Code-Prover 的层次化证明搜索框架,通过结合构造性理由与结构有效性的分解评分机制,训练了一个统一的 8B 参数模型,在 Lean 4 代码验证任务中以显著优于更大规模基线的成功率实现了高效的自动化形式化验证。

原作者: Zenan Li (Mike), Ziran Yang (Mike), Deyuan (Mike), He, Haoyu Zhao, Andrew Zhao, Shange Tang, Kaiyu Yang, Aarti Gupta, Zhendong Su, Chi Jin

发布于 2026-03-23
📖 1 分钟阅读☕ 轻松阅读

原作者: Zenan Li (Mike), Ziran Yang (Mike), Deyuan (Mike), He, Haoyu Zhao, Andrew Zhao, Shange Tang, Kaiyu Yang, Aarti Gupta, Zhendong Su, Chi Jin

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文介绍了一个名为 Goedel-Code-Prover 的新系统,它的核心任务是教人工智能如何像人类专家一样,用数学证明的方式去“严格检查”电脑代码是否正确

为了让你更容易理解,我们可以把这件事想象成建造一座摩天大楼,而 AI 就是那个负责检查大楼是否安全的“超级工程师”。

1. 为什么需要这个系统?(背景)

现在的 AI(大语言模型)写代码很厉害,就像是一个才华横溢但有点粗心的建筑设计师。它能画出很漂亮的图纸,也能写出能跑通的代码。

  • 问题:AI 写的代码通常只能“看起来能跑”,但无法保证在极端情况下(比如输入了奇怪的数据)不会崩溃或出错。就像设计师画了图,但没经过严格的力学计算,万一遇到地震怎么办?
  • 传统方法:以前,要证明代码绝对安全,需要人类专家手写“数学证明”。这就像让一位老工匠拿着尺子和计算器,花几个月时间去计算每一根梁的承重,非常累,而且很难普及。
  • AI 的尝试:最近,AI 开始尝试自己写这些“数学证明”。但在数学题上 AI 表现很好,一旦到了写代码这个领域,AI 就经常“翻车”。

2. AI 为什么在代码验证上会“翻车”?(核心难点)

论文指出了两个主要“水土不服”的原因:

  • 原因一:没有“教科书”可以抄(无根基的分解)
    • 数学界:AI 在训练时读过无数本数学书、竞赛题解。当遇到难题时,它知道怎么把大问题拆成小问题(比如“先证明 A,再证明 B,最后得出 C"),因为它见过类似的套路。
    • 代码界:代码世界没有这种“通用套路”。每个程序都是独特的,就像每栋大楼的结构都不同。AI 以前没见过这种特定的“大楼结构”,所以它瞎拆出来的“小问题”往往是错的,或者拆了个寂寞(并没有变简单)。
  • 原因二:工具包不匹配(战术错位)
    • 数学证明:主要靠代数运算、公式推导。
    • 代码证明:需要处理具体的逻辑,比如“列表里有没有重复元素”、“循环会不会死锁”。这需要完全不同的“工具”(就像修水管和修电路用的工具不一样)。AI 如果只学过数学,拿到代码题就会拿着“数学尺子”去量“电路”,怎么量都不对。

3. Goedel-Code-Prover 是怎么解决的?(核心创新)

为了解决这个问题,作者设计了一个**“分层级”的搜索框架**,就像是一个**“总指挥 + 特种部队”**的协作模式。

第一步:聪明的“总指挥”(分层分解)

系统不再让 AI 直接去证明整个大定理(就像不让新手直接去盖整栋楼)。

  • 策略:AI 先当“总指挥”,把那个巨大的、复杂的验证目标,拆解成一系列更小、更简单的“子任务”(子引理)。
  • 比喻:就像盖大楼,总指挥先说:“我们要先打地基,再建框架,最后装修。”它把“盖大楼”这个大目标,拆成了“打地基”、“建框架”等小目标。
  • 关键创新(打分机制):怎么知道拆得对不对呢?系统发明了一个**“智能打分器”**。
    • 如果拆出来的小任务逻辑不通(比如“证明 1+1=3"),直接打 0 分扔掉。
    • 如果拆出来的小任务虽然对,但比原题还难,也打低分。
    • 只有那些逻辑通顺明显变简单的拆解,才会得到高分。这个分数既是训练时的“奖励”,也是搜索时的“导航仪”。

第二步:专业的“特种部队”(逐个击破)

一旦“总指挥”把大任务拆好了,剩下的就是“特种部队”(AI 模型)的工作了。

  • 策略:针对每一个小任务,AI 利用 Lean 4(一种像编译器一样的数学工具)提供的实时反馈,一步步写出证明代码。
  • 比喻:就像建筑工人拿着图纸,每砌一块砖,系统就检查一次:“这块砖稳不稳?”如果不稳,系统会报错,工人就马上修改,直到这块砖完美为止。

4. 训练方法:怎么教 AI 学会这一套?

作者没有让 AI 从头学,而是用了**“先模仿,后实战”**的混合训练法:

  1. 模仿学习(SFT):先用顶级 AI 生成的“完美拆解案例”教它,让它学会基本的拆解思路。
  2. 强化学习(RL):让 AI 自己去尝试拆解。
    • 如果它拆得好(得分高),就给它奖励。
    • 如果它拆得不好,就让它重来。
    • 关键点:为了解决“拆解”和“证明”奖励不一致的问题(拆解有连续分数,证明只有成功/失败),作者设计了一种混合机制,既鼓励它去探索新的拆解方式,又保证它能把证明写对。

5. 结果如何?(战绩)

  • 以小博大:作者训练了一个只有 80 亿参数(8B)的模型。
  • 吊打对手:这个“小个子”模型在三个代码验证测试集上,成功证明了 62% 的代码任务。
  • 对比:这个成绩比目前最强的其他 AI 模型(有些甚至大了 84 倍,有几百亿参数)还要好 2.6 倍
  • 越练越强:给这个模型更多的计算时间和尝试次数,它的成功率还会稳步上升,说明它真的学会了“思考”和“规划”,而不是死记硬背。

总结

这篇论文的核心思想就是:不要指望 AI 一下子就能解决所有复杂的代码安全问题。

我们要教 AI 像人类专家一样,先学会“拆解问题”(把大象装进冰箱分几步),再学会“逐个解决”。通过一个聪明的**“打分机制”**来指导 AI 如何拆解,最终让一个小小的 AI 模型,也能完成以前只有超级计算机或人类专家才能完成的代码安全验证工作。

这就好比,以前我们以为只有大力士(超大模型)才能搬动巨石,现在发现,只要给小个子(8B 模型)配上一套聪明的杠杆和滑轮组(分层分解 + 打分机制),它也能轻松把巨石搬走。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →