论文标题

复杂逻辑的简明概述:TADA的证明轮廓检查器(完整纸)

Concise Outlines for a Complex Logic: A Proof Outline Checker for TaDA (Full Paper)

论文作者

Wolf, Felix A., Schwerhoff, Malte, Müller, Peter

论文摘要

现代分离逻辑允许人们证明复杂代码的丰富属性,例如非阻止并发代码的功能正确性和线性化性。但是,这种表达性导致了使这些逻辑难以应用的复杂性。交互式定理弃权中的手动证明或证明由大量步骤组成,通常具有微妙的侧面条件。另一方面,使用专用验证器的自动化通常需要特定于给定程序逻辑的复杂证明搜索算法,从而产生有限的工具支持,这使得很难尝试使用程序逻辑,例如。学习,改进或比较它们时。证明轮廓填补此空白。他们的输入是一个以最重要的证明步骤注释的程序,就像论文中通常呈现的证明大概一样。然后,该工具会自动检查该轮廓是否代表程序逻辑中的有效证明。在本文中,我们系统地为TADA逻辑开发了一个证明大纲检查器,该检查器将检查降低到更简单的验证问题,并为其存在自动化工具。我们的方法导致证明大纲检查器比交互式抛弃提供了更大的自动化,但比自定义自动验证器要简单得多。

Modern separation logics allow one to prove rich properties of intricate code, e.g. functional correctness and linearizability of non-blocking concurrent code. However, this expressiveness leads to a complexity that makes these logics difficult to apply. Manual proofs or proofs in interactive theorem provers consist of a large number of steps, often with subtle side conditions. On the other hand, automation with dedicated verifiers typically requires sophisticated proof search algorithms that are specific to the given program logic, resulting in limited tool support that makes it difficult to experiment with program logics, e.g. when learning, improving, or comparing them. Proof outline checkers fill this gap. Their input is a program annotated with the most essential proof steps, just like the proof outlines typically presented in papers. The tool then checks automatically that this outline represents a valid proof in the program logic. In this paper, we systematically develop a proof outline checker for the TaDA logic, which reduces the checking to a simpler verification problem, for which automated tools exist. Our approach leads to proof outline checkers that provide substantially more automation than interactive provers, but are much simpler to develop than custom automatic verifiers.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源