论文
SpecAgent:通过Agentic增强程序验证正式程序规范的综合
SpecAgent: Empowering Program Verification with Agentic Synthesis of Formal Program Specifications
摘要
形式化规范对于演绎程序验证至关重要,为复杂软件的组合验证提供语义抽象。然而,手动构建规范是劳动密集型的,因此需要自动化合成。尽管大语言模型 (LLM) 最近取得了进展,但现有方法通常依赖于仅前向工作流和本地化修复,从而限制了它们在函数和循环之间具有复杂依赖关系的实际程序中的有效性。 验证故障可能源于先前生成的规范,导致局部细化无法解决的级联故障。为了应对这些挑战,我们推出了 SpecAgent,这是一个Agentic框架,用于为现实世界的 C 程序综合高质量的 ACSL 规范。 SpecAgent 集成了四个组件:用于识别规范目标的依赖性感知规划、用于提供相关规范模式和程序上下文的检索增强生成 (RAG)、用于诊断缺陷和重新访问依赖规范的Agentic修复,以及用于评估和完善证明成功之外的语义强度的Agentic批判。我们在规范综合上评估 SpecAgent,并对验证任务进行编程。在来自 14 个真实存储库的 50 个程序中,采用 DeepSeek-V4 的 SpecAgent 在合成正确且强大的规范方面实现了 96.82% 精度和 88.95% 召回率,优于所有基线。在 811 个现实世界的验证目标上,它成功释放了 604 个,也超过了现有基线。这些结果证明了 SpecAgent 在综合高质量规范和促进实际程序验证方面的有效性。
