arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 1703.06368cs.PL
收藏

弱内存程序的自动演绎验证

Automating Deductive Verification for Weak-Memory Programs

Alexander J. Summers, Peter Müller

摘要:

为弱内存模型(如C11内存模型)编写正确的程序是具有挑战性的,因为这些模型提供了弱一致性保证。最近提出了第一个程序逻辑验证这样的程序,但它们的使用一直局限于迄今为止的手动证明。通过一阶求解器在这些逻辑中自动化证明是不平凡的,因为推理功能,如高阶断言,模态和丰富的权限资源。在本文中,我们提供了第一个实现弱内存程序逻辑使用现有的演绎验证工具。我们讨论了三种最新的程序逻辑:放松的分离逻辑和两种形式的围栏分离逻辑,并展示了如何使用Viper验证基础设施对这些逻辑进行编码。在这样做时,我们说明了几种新的编码技术,可用于其他逻辑。我们的工作已经实施,并已从现有的论文以及Facebook的开源Folly库的例子进行了评估。

英文摘要:

Writing correct programs for weak memory models such as the C11 memory model is challenging because of the weak consistency guarantees these models provide. The first program logics for the verification of such programs have recently been proposed, but their usage has been limited thus far to manual proofs. Automating proofs in these logics via first-order solvers is non-trivial, due to reasoning features such as higher-order assertions, modalities and rich permission resources. In this paper, we provide the first implementation of a weak memory program logic using existing deductive verification tools. We tackle three recent program logics: Relaxed Separation Logic and two forms of Fenced Separation Logic, and show how these can be encoded using the Viper verification infrastructure. In doing so, we illustrate several novel encoding techniques which could be employed for other logics. Our work is implemented, and has been evaluated on examples from existing papers as well as the Facebook open-source Folly library.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑