On Automated Lemma Generation for Separation Logic with Inductive Definitions

Separation Logic with inductive definitions is a well-known approach for deductive verification of programs that manipulate dynamic data structures. Deciding verification conditions in this context is usually based on user-provided lemmas relating the inductive definitions. We propose a novel approach for generating these lemmas automatically which is based on simple syntactic criteria and deterministic strategies for applying them. Our approach focuses on iterative programs, although it can be applied to recursive programs as well, and specifications that describe not only the shape of the data structures, but also their content or their size. Empirically, we find that our approach is powerful enough to deal with sophisticated benchmarks, e.g., iterative procedures for searching, inserting, or deleting elements in sorted lists, binary search tress, red-black trees, and AVL trees, in a very efficient way.

[1]  Radu Iosif,et al.  The Tree Width of Separation Logic with Recursive Definitions , 2013, CADE.

[2]  Shengchao Qin,et al.  Automated Verification of Shape, Size and Bag Properties , 2007, ICECCS.

[3]  James Brotherston,et al.  Automated Cyclic Entailment Proofs in Separation Logic , 2011, CADE.

[4]  Joël Ouaknine,et al.  Tractable Reasoning in a Fragment of Separation Logic , 2011, CONCUR.

[5]  Xiaokang Qiu,et al.  Natural proofs for data structure manipulation in C using separation logic , 2014, PLDI.

[6]  David I. August,et al.  Shape analysis with inductive recursion synthesis , 2007, PLDI '07.

[7]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[8]  Peter W. O'Hearn,et al.  Symbolic Execution with Separation Logic , 2005, APLAS.

[9]  Viktor Kuncak,et al.  Full functional verification of linked data structures , 2008, PLDI '08.

[10]  Wei-Ngan Chin,et al.  Enhancing Program Verification with Lemmas , 2008, CAV.

[11]  Ruzica Piskac,et al.  Automating Separation Logic with Trees and Data , 2014, CAV.

[12]  Parosh Aziz Abdulla,et al.  Verification of heap manipulating programs with ordered data by extended forest automata , 2015, Acta Informatica.

[13]  Joxan Jaffar,et al.  Automating Proofs of Data-Structure Properties in Imperative Programs , 2014, ArXiv.

[14]  Ruzica Piskac,et al.  Automating Separation Logic Using SMT , 2013, CAV.

[15]  Xiaokang Qiu,et al.  Natural proofs for structure, data, and separation , 2013, PLDI.

[16]  Constantin Enea,et al.  Compositional entailment checking for a fragment of separation logic , 2014, Formal Methods in System Design.

[17]  Neil Immerman,et al.  Modular reasoning about heap paths via effectively propositional formulas , 2014, POPL.

[18]  Amir Pnueli,et al.  Shape Analysis by Predicate Abstraction , 2005, VMCAI.

[19]  Tomás Vojnar,et al.  Deciding Entailments in Inductive Separation Logic with Tree Automata , 2014, ATVA.

[20]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[21]  Alan J. Hu,et al.  An Inference-Rule-Based Decision Procedure for Verification of Heap-Manipulating Programs with Mutable Data and Cyclic Data Structures , 2007, VMCAI.

[22]  Joël Ouaknine,et al.  Foundations for Decision Problems in Separation Logic with General Inductive Predicates , 2014, FoSSaCS.

[23]  Adam Chlipala,et al.  Mostly-automated verification of low-level programs in computational separation logic , 2011, PLDI '11.