Enhancing Program Verification with Lemmas

One promising approach to verifying heap-manipulating programs is based on user-definedinductive predicates in separation logic. This approach can describe data structures with complex invariants and sound reasoning based on unfold/fold. However, an important component towards more expressive program verification is the use of lemmasthat can soundly relate predicates beyond their original definitions. This paper outlines a new automaticmechanism for proving and applying user-specified lemmasunder separation logic.

[1]  Yu Guo,et al.  Certifying Low-Level Programs with Hardware Interrupts and Preemptive Threads , 2009, Journal of Automated Reasoning.

[2]  Peter W. O'Hearn,et al.  Modular verification of a non-blocking stack , 2007, POPL '07.

[3]  Peter W. O'Hearn,et al.  Smallfoot: Modular Automatic Assertion Checking with Separation Logic , 2005, FMCO.

[4]  Shmuel Sagiv Thread-Modular Shape Analysis , 2009, VMCAI.

[5]  James Brotherston Formalised Inductive Reasoning in the Logic of Bunched Implications , 2007, SAS.

[6]  William Pugh,et al.  The Omega test: A fast and practical integer programming algorithm for dependence analysis , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[7]  William Pugh,et al.  A practical algorithm for exact array dependence analysis , 1992, CACM.

[8]  Akinori Yonezawa,et al.  Formal Verification of the Heap Manager of an Operating System Using Separation Logic , 2006, ICFEM.

[9]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[10]  Tobias Nipkow,et al.  A Proof Assistant for Higher-Order Logic , 2002 .

[11]  Ajitha Rajan,et al.  Requirements Coverage as an Adequacy Measure for Conformance Testing , 2008, ICFEM.

[12]  David L. Dill,et al.  CVC: A Cooperating Validity Checker , 2002, CAV.

[13]  Bor-Yuh Evan Chang,et al.  Relational inductive shape analysis , 2008, POPL '08.

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

[15]  Natarajan Shankar,et al.  PVS: An Experience Report , 1998, FM-Trends.

[16]  Shengchao Qin,et al.  Automated Verification of Shape and Size Properties Via Separation Logic , 2007, VMCAI.

[17]  Alexey Gotsman,et al.  Interprocedural Shape Analysis with Separated Heap Abstractions , 2006, SAS.

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

[19]  Hongseok Yang,et al.  Automatic Verification of Pointer Programs Using Grammar-Based Shape Analysis , 2005, ESOP.

[20]  James Brotherston,et al.  Complete Sequent Calculi for Induction and Infinite Descent , 2007, 22nd Annual IEEE Symposium on Logic in Computer Science (LICS 2007).

[21]  Viorel Preoteasa,et al.  Mechanical Verification of Recursive Procedures Manipulating Pointers Using Separation Logic , 2006, FM.

[22]  Tobias Nipkow,et al.  FM 2006: Formal Methods, 14th International Symposium on Formal Methods, Hamilton, Canada, August 21-27, 2006, Proceedings , 2006, FM.

[23]  David Walker,et al.  ILC: A Foundation for Automated Reasoning About Pointer Programs , 2006, ESOP.

[24]  Peter W. O'Hearn,et al.  Automatic Termination Proofs for Programs with Shape-Shifting Heaps , 2006, CAV.

[25]  Chiyan Chen,et al.  Combining programming with theorem proving , 2005, ICFP '05.

[26]  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.

[27]  Peter W. O'Hearn,et al.  A Local Shape Analysis Based on Separation Logic , 2006, TACAS.

[28]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[29]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.