【24h】

Natural Proofs for Structure, Data, and Separation

机译:结构,数据和分离的自然证明

获取原文

摘要

We propose natural proofs for reasoning with programs that manipulate data-structures against specifications that describe the structure of the heap, the data stored within it, and separation and framing of sub-structures. Natural proofs are a subclass of proofs that are amenable to completely automated reasoning, that provide sound but incomplete procedures, and that capture common reasoning tactics in program verification. We develop a dialect of separation logic over heaps, called DRYAD, with recursive definitions that avoids explicit quantification. We develop ways to reason with heaplets using classical logic over the theory of sets, and develop natural proofs for reasoning using proof tactics involving disciplined unfoldings and formula abstractions. Natural proofs are encoded into decidable theories of first-order logic so as to be discharged using SMT solvers. We also implement the technique and show that a large class of more than 100 correct programs that manipulate data-structures are amenable to full functional correctness using the proposed natural proof method. These programs are drawn from a variety of sources including standard data-structures, the Schorr-Waite algorithm for garbage collection, a large number of low-level C routines from the Glib library and OpenBSD library, the Linux kernel, and routines from a secure verified OS-browser project. Our work is the first that we know of that can handle such a wide range of full functional verification properties of heaps automatically, given pre/post and loop invariant annotations. We believe that this work paves the way for deductive verification technology to be used by programmers who do not (and need not) understand the internals of the underlying logic solvers, significantly increasing their applicability in building reliable systems.
机译:我们提出了用于处理数据结构的程序的自然证据,该程序针对描述堆结构的规范,存储在其内的数据,以及子结构的分离和分离和框架。自然证明是一种证据的子类,可完全自动推理,提供声音但不完整的程序,并在节目核查中捕获共同的推理策略。我们在堆积的分离逻辑方面,称为Dryad,避免了显式量化的递归定义。我们使用古典逻辑在集合理论上使用古典逻辑的推理方式开发方法,并使用涉及纪律展开和公式抽象的校正策略来制定推理的自然证据。自然证据被编码成一阶逻辑的可判定理论,以便使用SMT溶剂来排出。我们还实现了该技术,并表明使用所提出的自然证明方法操纵数据结构的大量超过100种正确的程序,这些程序可用于全功能正确性。这些程序是从各种来源中汲取的,包括标准数据结构,垃圾收集的SchorR-upite算法,来自GLIB库和OpenBSD库,Linux内核和来自安全的例程的大量低级C例程已验证的操作系统浏览器项目。我们的工作首先,我们知道这可以自动处理堆的这种广泛的全功能验证属性,给定预/帖子和循环不变注释。我们认为,这项工作为不(并且不需要)了解潜在逻辑求解器的内部,显着提高其在建立可靠系统中的适用性方面,为演绎验证技术铺平了演绎验证技术。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号