当前位置: X-MOL 学术Form. Methods Syst. Des. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Abstraction and subsumption in modular verification of C programs
Formal Methods in System Design ( IF 0.8 ) Pub Date : 2021-03-23 , DOI: 10.1007/s10703-020-00353-1
Lennart Beringer , Andrew W. Appel

The type-theoretic notions of existential abstraction, subtyping, subsumption, and intersection have useful analogues in separation-logic proofs of imperative programs. We have implemented these as an enhancement of the verified software toolchain (VST). VST is an impredicative concurrent separation logic for the C language, implemented in the Coq proof assistant, and proved sound in Coq. For machine-checked functional-correctness verification of software at scale, VST embeds its expressive program logic in dependently typed higher-order logic (CiC). Specifications and proofs in the program logic can leverage the expressiveness of CiC—so users can overcome the abstraction gaps that stand in the way of top-to-bottom verification: gaps between source code verification, compilation, and domain-specific reasoning, and between different analysis techniques or formalisms. Until now, VST has supported the specification of a program as a flat collection of function specifications (in higher-order separation logic)—one proves that each function correctly implements its specification, assuming the specifications of the functions it calls. But what if a function has more than one specification? In this work, we exploit type-theoretic concepts to structure specification interfaces for C code. This brings modularity principles of modern software engineering to concrete program verification. Previous work used representation predicates to enable data abstraction in separation logic. We go further, introducing function-specification subsumption and intersection specifications to organize the multiple specifications that a function is typically associated with. As in type theory, if \(\phi \) is a



中文翻译:

C程序的模块化验证中的抽象和包含

存在抽象,子类型,包含和交集的类型理论概念在命令式程序的分离逻辑证明中具有有用的类比。我们已将它们实现为经过验证的软件工具链(VST)的增强。VST是用于C语言的强制性并发分离逻辑,在Coq证明助手中实现,并在Coq中被证明是合理的。为了进行机器检查的软件的功能正确性验证,VST将其表示性程序逻辑嵌入到依赖类型的高阶逻辑(CiC)中。程序逻辑中的规范和证明可以利用CiC的表达能力-因此用户可以克服从上到下验证的抽象空白:源代码验证,编译和特定于领域的推理之间的空白,以及不同的分析技术或形式主义之间。到目前为止,VST支持将程序规范作为功能规范的统一集合(采用高阶分离逻辑)—证明每个功能都正确实现了其规范,并假定了其调用的功能规范。但是,如果一个功能具有多个规范,该怎么办?在这项工作中,我们利用类型理论的概念来构造C代码的规范接口。这将现代软件工程的模块化原理引入了具体的程序验证。先前的工作使用表示谓词来启用 VST支持将程序规范作为功能规范的统一集合(采用高阶分离逻辑)—证明每个功能均正确实现了其规范,并假定了其调用的功能规范。但是,如果一个功能具有多个规范,该怎么办?在这项工作中,我们利用类型理论的概念来构造C代码的规范接口。这将现代软件工程的模块化原理引入了具体的程序验证。先前的工作使用表示谓词来启用 VST支持将程序规范作为功能规范的统一集合(采用高阶分离逻辑)—证明每个功能均正确实现了其规范,并假定了其调用的功能规范。但是,如果一个功能具有多个规范,该怎么办?在这项工作中,我们利用类型理论的概念来构造C代码的规范接口。这将现代软件工程的模块化原理引入了具体的程序验证。先前的工作使用表示谓词来启用 这将现代软件工程的模块化原理引入了具体的程序验证。先前的工作使用表示谓词来启用 这将现代软件工程的模块化原理引入了具体的程序验证。先前的工作使用表示谓词来启用分离逻辑中的数据抽象。我们进一步介绍了功能规范包含交集规范,以组织功能通常与之关联的多个规范。如类型理论中所述,如果\(\ phi \)是一个

更新日期:2021-03-24
down
wechat
bug