Skip to main content
QUICK REVIEW

[论文解读] Lemur: Integrating Large Language Models in Automated Program Verification

Haoze Wu, Clark Barrett|arXiv (Cornell University)|Oct 7, 2023
Software Testing and Debugging TechniquesComputer Science被引用 3
一句话总结

Lemur 提出了一套正式框架,将大型语言模型(LLMs)与自动化定理证明器结合用于程序验证,利用 LLM 生成高层次的证明目标(例如不变量),并由验证器进行验证。该方法在具有挑战性的基准测试中取得最先进成果,成功验证了 50 个具有多个循环的复杂 SV-COMP 程序中的 26 个,展示了首个能够扩展至多循环程序的 LLM 驱动验证系统。

ABSTRACT

The demonstrated code-understanding capability of LLMs raises the question of whether they can be used for automated program verification, a task that demands high-level abstract reasoning about program properties that is challenging for verification tools. We propose a general methodology to combine the power of LLMs and automated reasoners for automated program verification. We formally describe this methodology as a set of transition rules and prove its soundness. We instantiate the calculus as a sound automated verification procedure and demonstrate practical improvements on a set of synthetic and competition benchmarks.

研究动机与目标

  • 为解决自动化程序验证的挑战,该挑战需要超越当前形式化工具能力的高层次抽象推理。
  • 形式化 LLM 与自动化推理器在验证中的交互,填补了混合人工智能-形式化方法在理论基础方面的空白。
  • 构建一个实用、正确且可终止的验证系统,利用 LLM 生成不变量,由自动化工具进行验证。
  • 在多样化基准上评估该框架,包括合成程序和具有复杂控制流的真实世界 C 语言竞赛级程序。
  • 探索 LLM 引导的验证在具有多个循环和非平凡数据类型的程序上的可扩展性与鲁棒性。

提出的方法

  • Lemur 使用结合 LLM 提议的证明目标(例如不变量)与自动化验证检查的推导规则,形式化了一套证明系统。
  • 它定义了一个正确的蕴含关系:若在加入假设 q 的程序中 p 保持为不变量,则 q ⇒ p。
  • 该框架使用 LLM 提议子目标(不变量或假设),随后由 esbmc 或 UAutomizer 等自动化推理器进行验证。
  • 一个关键创新是使用假设来模拟条件程序行为,使系统能够探索复杂的控制路径。
  • 系统采用优化技术,包括迭代精炼和提示工程,以提高 LLM 提案质量并减少冗余调用。
  • 实现中使用 GPT-4 生成不变量,并与现有的 C 语言验证器集成,以确保正确性与可终止性。

实验结果

研究问题

  • RQ1LLM 是否能可靠地生成高层次的证明目标(例如不变量),以引导自动化验证器正确完成验证?
  • RQ2是否存在一种形式演算,可确保将 LLM 生成的推理与自动化验证相结合的正确性?
  • RQ3这种混合方法是否能解决当前工具无法验证的、具有多个循环的复杂验证基准?
  • RQ4LLM 引导的验证在标准基准上的性能与纯 AI 方法或纯形式化方法相比如何?
  • RQ5在该混合设置中,LLM 与自动化验证器的实际局限性是什么,如何加以缓解?

主要发现

  • Lemur 在 20 分钟超时内成功验证了 50 个困难 SV-COMP 基准中的 26 个,而 esbmc 和 UAutomizer 均未成功验证任何一项,展现出显著的性能提升。
  • 该系统成功验证了最多包含四个循环的程序,标志着首个 LLM 驱动的方法在如此复杂的控制结构上实现可扩展性。
  • 平均而言,Lemur 每个成功验证的基准需要 9.1 次提案,高于在更简单 Code2Inv 基准上的 4.7 次,表明推理复杂度更高。
  • LLM 生成了不受语法模板限制的深刻不变量,例如 x%4==0,即使源代码中未出现取模运算符。
  • 在多个案例中,LLM 生成了析取性不变量,精确捕捉了循环行为,优于传统谓词抽象技术。
  • 该框架的正确性已通过形式化证明,使其成为首个具备完整形式演算与正确性证明的混合验证系统。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。