← 最新论文
💻 computer science

Can Large Language Models Model Programs Formally?

该论文提出了名为 Model-Bench 的基准测试及配套流程,旨在评估并提升大语言模型将 Python 程序转化为可验证模型检查规范的能力,实验结果表明当前大语言模型在此任务上仍存在显著局限。

原作者: Zhiyong Chen, Jialun Cao, Jiarong Wu, Chang Xu, Shing-Chi Cheung

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

原作者: Zhiyong Chen, Jialun Cao, Jiarong Wu, Chang Xu, Shing-Chi Cheung

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

这篇论文就像是在给人工智能(AI)老师出的一道“翻译题”,但这次翻译的不是人类语言,而是把电脑程序翻译成一种极其严谨的“数学说明书”

为了让你轻松理解,我们可以把整个过程想象成**“把乐高积木城堡变成严谨的建筑设计图”**。

1. 背景:为什么我们需要做这件事?

  • 现状:现在的软件(比如手机 App、银行系统)越来越复杂。以前我们靠“测试”来找 bug,就像是在盖好的房子里到处敲敲墙壁,看看有没有裂缝。但这有个大问题:测试只能证明“这里坏了”,不能证明“这里绝对没坏”
  • 目标:我们需要一种叫**“形式化验证”的技术。这就像是要求建筑师在盖房前,必须拿出一份100% 无懈可击的数学证明**,保证房子在任何情况下都不会塌。
  • 难点:这种证明通常有两种写法。一种是“定理证明”(像写数学论文,很难),另一种是“模型检测”(像画状态流程图,把程序的所有可能运行路径都画出来)。
    • 问题在于:让 AI 自动把复杂的 Python 代码(乐高城堡)变成这种严谨的流程图(设计图),非常困难。以前的 AI 要么画错了,要么画得太乱,机器没法检查。

2. 核心工作:Model-Bench(模型考场)

作者们觉得:“既然没人好好研究怎么让 AI 做这个翻译,那我们就自己建个考场吧!”

  • Model-Bench 是什么?
    它是一个专门的测试题库
    • 题目:从 3 个著名的编程题库(HumanEval, MBPP, LiveCodeBench)里挑了 400 道 Python 编程题。
    • 任务:让大语言模型(LLM)把这些 Python 代码,翻译成一种叫 TLA+ 的语言。
    • TLA+ 是什么? 你可以把它想象成**“程序的通用数学语言”**。它不关心代码写得漂不漂亮,只关心逻辑对不对。
    • 考官:有一个叫 TLC 的自动检查器,它会拿着 AI 生成的 TLA+ 图纸,去和原始代码对比,看看逻辑是否一致。

3. 他们做了什么实验?

作者们找了各种大模型(比如 DeepSeek, Qwen, Llama 等),让它们做这个翻译任务,并观察了三个关键点:

A. 直接翻译 vs. 先“预处理”再翻译

  • 直接翻译(零样本/少样本):直接把 Python 代码扔给 AI,让它写 TLA+。
    • 结果:AI 经常“翻车”。生成的图纸要么机器读不懂(语法错),要么逻辑跑不通。
  • 代码转换(预处理):作者发现 Python 代码太灵活了(比如递归、复杂的列表),而 TLA+ 喜欢简单、像状态机一样的结构。
    • 做法:他们先写了一个“转换器”,把 Python 代码强行改写成一种更简单、更像流程图的样子(把复杂的循环变成简单的步骤跳转),然后再让 AI 去翻译。
    • 比喻:就像让 AI 翻译古文。直接让它翻很难,但如果先把古文改成大白话,再让它翻成数学公式,准确率就高多了。
    • 结果:虽然生成的图纸数量稍微少了一点点,但图纸的质量(相似度)大幅提升

B. AI 的表现如何?

  • 好消息:最强的模型(如 DeepSeek-V3)在给了几个例子(Few-shot)后,能成功生成约 66% 能通过检查的图纸。
  • 坏消息:剩下的 34% 还是挂了。而且,如果代码太复杂(比如循环套循环、变量太多),AI 就更容易犯错。
  • 有趣发现:代码越“难”(算法逻辑复杂),AI 不一定翻得越差;反而是代码结构越乱、嵌套越深,AI 越容易晕头转向。

C. AI 常犯什么错?

作者分析了那些“不及格”的作业,发现 AI 主要犯三类错:

  1. 生造词(编译错误):Python 里有 sort 函数,但 TLA+ 里没有,AI 却直接照搬,导致机器报错。
  2. 记性不好(运行时错误):Python 数组从 0 开始数,TLA+ 从 1 开始数。AI 经常搞混,导致“数组越界”。
  3. 太死板(断言错误):有时候 AI 为了“忠实”于原代码,反而漏掉了关键逻辑(比如漏了一个函数调用),或者把变量搞错了。

4. 总结与启示

这篇论文的核心结论可以用三个比喻来概括:

  1. AI 是个天才,但也是个“细节控”:它很擅长模仿和识别模式,但在处理两种完全不同逻辑体系(灵活的 Python vs. 严谨的 TLA+)的转换时,容易在细节上栽跟头。
  2. “先整理,再翻译”是王道:与其指望 AI 直接搞定高难度翻译,不如先帮它把“原材料”(代码)整理成它更容易理解的格式(代码转换),效果会好很多。
  3. 路还很长:虽然 AI 能完成约一半的任务,但离“全自动、零错误”的工业级应用还有距离。特别是对于复杂的、嵌套深的程序,AI 还需要更强的逻辑推理能力。

一句话总结
这篇论文建立了一个**“程序翻译考场”,发现让 AI 把 Python 代码变成严谨的数学证明(TLA+)目前还很难**,但如果我们先把代码“简化”一下再让 AI 去翻,效果会好很多。这为未来让 AI 自动保证软件安全(比如自动驾驶、医疗设备不出错)指明了方向。

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

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

试用 Digest →