论文

KVerus:为 Rust 代码生成可扩展且有弹性的形式验证证明

KVerus: Scalable and Resilient Formal Verification Proof Generation for Rust Code

上下文与知识检索增强

摘要

形式验证为软件的正确性和安全性提供了最高的保证,但其在大规模、不断发展的系统中的应用仍然是一个重大挑战。虽然 大语言模型 (LLM) 在自动化证明生成方面表现出了希望,但由于无法处理复杂的跨模块依赖项或代码库或验证工具链的更改,它们在现实环境中经常失败。我们将根本问题确定为语义结构差距:LLM 在语义代码模式上运行,而形式验证则受严格的结构依赖性控制,这种脱节会导致脆弱且不可持续的证明。为了弥补这一差距,我们提出了一种新的自适应验证范例,并提出了 KVerus,这是一种基于 Verus 的 Rust 验证的检索增强系统,可以适应不断发展的软件环境。 KVerus 构建了代码元数据、引理语义和工具链细节的动态知识库。通过结合依赖感知程序分析、语义引理索引和错误驱动的自我优化,它可以导航复杂的跨文件依赖关系,以合成证明并在面临常见的进化变化时自动修复证明。在三个单文件基准测试中,KVerus 验证了 80.2% 的任务,其性能优于最先进的 AutoVerus (56.9%),并且在破坏 Verus 更新时性能下降少于 AutoVerus。在具有跨文件依赖关系的三个存储库级基准测试中,KVerus 实现了 51.0% 的成功率,而多轮提示基准的成功率为 4.5%。最后,在 Asterinas Rust OS 内核上,KVerus 生成上游接受的证明,验证内存管理模块中 23 个先前未经验证的函数(证明代码的 21.0%)。 KVerus 代表了使形式验证成为现代安全关键软件的可扩展且可持续实践的重要一步。