Apply2Isar: Automatically Converting Isabelle/HOL Apply-Style Proofs to Structured Isar

本文介绍了 Apply2Isar 工具,它能够自动将 Isabelle/HOL 中可读性较差的过程式"apply-style"证明脚本转换为更稳健且易读的声明式 Isar 证明,并通过在 Isabelle 形式化证明档案上的大规模评估验证了其有效性。

Sage Binder, Hanna Lachnitt, Katherine Kosaian

发布于 Tue, 10 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一个名为 Apply2Isar 的新工具,它的核心任务可以比喻为:把“乱涂乱画的草稿”自动整理成“工整的正式文档”

为了让你更容易理解,我们可以用**“做菜”或者“写代码”**的比喻来拆解这篇论文。

1. 背景:两种不同的“做菜”方式

在 Isabelle/HOL(一个用于数学证明的超级电脑软件)里,证明一个数学定理就像做一道复杂的菜。用户有两种主要的“烹饪风格”:

  • Apply-style(应用风格/草稿模式):

    • 比喻: 就像你在厨房里手忙脚乱地试菜。你往锅里扔一点盐,尝一口;不行,再扔点糖,再尝一口。你只关心“下一步该放什么”,而不关心“为什么放”。
    • 特点: 这种写法写起来很快,适合快速探索(试错)。但是,它就像一张潦草的笔记。如果以后你想修改食谱(比如把盐换成酱油),你很难知道哪一步会出错,因为步骤之间没有明确的逻辑连接,一旦中间某一步变了,整个菜可能就废了,而且很难找出是哪一步搞砸的。
    • 缺点: 脆弱、难读、难维护。
  • Isar-style(结构化风格/正式文档):

    • 比喻: 就像一本正式的食谱书。每一步都写得清清楚楚:“首先,我们要证明 A 是咸的;然后,基于 A,我们证明 B 是甜的;最后,因为 A 和 B 都成立,所以整道菜是美味的。”
    • 特点: 这种写法读起来非常顺畅,逻辑清晰。即使以后你想改食谱,你也能一眼看出哪一行需要修改,因为它像搭积木一样,每一步都稳稳地建立在下一步的基础上。
    • 缺点: 写起来比较慢,需要更多的思考和规划。

痛点: 很多用户喜欢用“草稿模式”(Apply-style)快速试错,但最后为了长期维护,又不得不把它改写成“正式文档”(Isar)。但这就像要把一堆乱糟糟的草稿手抄成正式文档,非常累人,而且容易抄错。

2. 解决方案:Apply2Isar 工具

Apply2Isar 就是为了解决这个痛点而生的“自动整理机器人”。

  • 它是怎么工作的?
    想象你有一堆乱序的乐高积木(Apply-style 脚本)。Apply2Isar 会:

    1. 重演过程: 它像回放录像一样,重新运行你的草稿,记录下每一步操作后剩下的积木(中间状态)。
    2. 逆向构建: 因为它知道最终要拼成什么,它会从最后一步倒着推回去,把每一步的“积木”(中间目标)和“操作”(证明方法)重新排列。
    3. 生成文档: 它把这些信息自动组装成一本结构清晰的“正式食谱”(Isar 证明)。
  • 它的特点:

    • 忠实还原: 它不会为了“好看”而重新发明你的证明逻辑。它生成的文档可能看起来有点“机械感”(比如会有很多像 h_1_2 这样的临时标签),但它保证逻辑和你原来的草稿一模一样。
    • 自动纠错: 如果原来的草稿里有些步骤太乱(比如同时处理多个目标),它会智能地拆分,确保生成的文档在逻辑上是严丝合缝的。

3. 遇到的挑战(就像翻译中的“方言”问题)

把“草稿”变成“正式文档”并不像简单的翻译,因为两者底层逻辑不同。作者们在开发工具时遇到了一些有趣的难题:

  • 多目标处理: 有时候一个命令能同时解决好几个问题(比如“把锅里的所有菜都炒熟”)。在草稿里这很简单,但在正式文档里,必须把每个菜单独列出来。工具需要聪明地决定是“一次性列出”还是“分步列出”。
  • 变量重名(Shadowing): 就像你在写文章时,前面用了“小明”,后面又定义了一个叫“小明”的人。在草稿里,电脑能分清;但在正式文档里,如果不改名,就会混淆。工具需要自动给变量起新名字(比如“小明_1"),防止搞错。
  • 未知的变量: 有时候证明过程中会出现“待定项”(就像食谱里写着“加适量的盐”)。正式文档通常要求明确,所以工具遇到这种情况时,会暂时保留一小段草稿,或者标记为“部分转换”。

4. 效果如何?

作者们找来了几千个真实的“草稿”证明(来自 Isabelle 的官方档案库)来测试这个工具。

  • 成功率:95% 到 99% 的情况下,工具都能成功把“草稿”转换成“正式文档”。
  • 部分成功: 剩下的少数情况,通常是因为证明太复杂,包含了一些特殊的“待定项”,工具只能转换大部分,留一小段草稿。
  • 结论: 这个工具非常实用,能帮用户节省大量时间,把原本脆弱、难读的证明,变成坚固、易读的文档。

总结

Apply2Isar 就像是一个**“证明文档的自动排版师”**。

它允许你先用最灵活、最快速的方式(Apply-style)去探索数学真理,不用担心写得乱;等你找到答案后,一键点击,它就能帮你把那些凌乱的探索过程,自动整理成一份逻辑严密、清晰易读的正式数学证明(Isar)。这让数学家和程序员既能享受“快速试错”的快感,又能拥有“长期维护”的安心。