当前位置: X-MOL 学术arXiv.cs.PL › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Abstraction Logic: The Marriage of Contextual Refinement and Separation Logic
arXiv - CS - Programming Languages Pub Date : 2021-09-07 , DOI: arxiv-2109.02991
Youngju Song, Minki Cho, Dongjae Lee, Chung-Kil Hur

Contextual refinement and separation logics are successful verification techniques that are very different in nature. First, the former guarantees behavioral refinement between a concrete program and an abstract program while the latter guarantees safety of a concrete program under certain conditions (expressed in terms of pre and post conditions). Second, the former does not allow any assumption about the context when locally reasoning about a module while the latter allows rich assumptions. In this paper, we present a new verification technique, called abstraction logic (AL), that inherently combines contextual refinement and separation logics such as Iris and VST, thereby taking the advantages of both. Specifically, AL allows us to locally verify a concrete module against an abstract module under separation-logic-style pre and post conditions about external modules. AL are fully formalized in Coq and provides a proof mode that supports a combination of simulation-style reasoning using our own tactics and SL-style reasoning using IPM (Iris Proof Mode). Using the proof mode, we verified various examples to demonstrate reasoning about ownership (based on partial commutative monoids) and purity ($i.e.$, termination with no system call), cyclic and higher-order reasoning about mutual recursion and function pointers, and reusable and gradual verification via intermediate abstractions. Also, the verification results are combined with CompCert, so that we formally establish behavioral refinement from top-level abstract programs, all the way down to their assembly code.

中文翻译:

抽象逻辑:上下文细化与分离逻辑的结合

上下文细化和分离逻辑是本质上非常不同的成功验证技术。首先,前者保证了具体程序和抽象程序之间的行为细化,而后者保证了具体程序在一定条件下(用前置条件和后置条件表示)的安全性。其次,前者在对模块进行局部推理时不允许对上下文进行任何假设,而后者允许丰富的假设。在本文中,我们提出了一种新的验证技术,称为抽象逻辑 (AL),它本质上结合了上下文细化和分离逻辑,例如 Iris 和 VST,从而利用了两者的优点。具体来说,AL 允许我们在关于外部模块的分离逻辑样式的前后条件下针对抽象模块在本地验证具体模块。AL 在 Coq 中完全形式化,并提供了一种证明模式,该模式支持使用我们自己的策略的模拟式推理和使用 IPM(虹膜证明模式)的 SL 式推理的组合。使用证明模式,我们验证了各种例子来演示关于所有权(基于部分可交换幺半群)和纯度($ie$,没有系统调用的终止)的推理,关于相互递归和函数指针的循环和高阶推理,以及可重用并通过中间抽象逐步验证。另外,验证结果结合CompCert,让我们从顶级抽象程序正式建立行为细化,
更新日期:2021-09-08
down
wechat
bug