skip to main content
research-article

A proof system for separation logic with magic wand

Published: 08 January 2014 Publication History

Abstract

Separation logic is an extension of Hoare logic which is acknowledged as an enabling technology for large-scale program verification. It features two new logical connectives, separating conjunction and separating implication, but most of the applications of separation logic have exploited only separating conjunction without considering separating implication. Nevertheless the power of separating implication has been well recognized and there is a growing interest in its use for program verification. This paper develops a proof system for full separation logic which supports not only separating conjunction but also separating implication. The proof system is developed in the style of sequent calculus and satisfies the admissibility of cut. The key challenge in the development is to devise a set of inference rules for manipulating heap structures that ensure the completeness of the proof system with respect to separation logic. We show that our proof of completeness directly translates to a proof search strategy.

Supplementary Material

JPG File (d2_left_t12.jpg)
MP4 File (d2_left_t12.mp4)

References

[1]
Josh Berdine, Cristiano Calcagno, Byron Cook, Dino Distefano, Peter W. O'Hearn, Thomas Wies, and Hongseok Yang. Shape analysis for composite data structures. In Proc. CAV, pages 178--192, 2007.
[2]
Josh Berdine, Cristiano Calcagno, and Peter W. O'Hearn. A decidable fragment of separation logic. In Proc. FSTTCS, pages 97--109, 2004.
[3]
Josh Berdine, Cristiano Calcagno, and Peter W. O'Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In Proc. FMCO, pages 115--137, 2005.
[4]
Josh Berdine, Cristiano Calcagno, and Peter W. O'Hearn. Symbolic execution with separation logic. In Proc. APLAS, pages 52--68, 2005.
[5]
Rémi Brochenin, Stéphane Demri, and Etienne Lozes. On the almighty wand. Information and Computation, 211:106--137, 2012.
[6]
James Brotherston and Max Kanovich. Undecidability of propositional separation logic and its neighbours. In Proc. LICS, pages 130--139, 2010.
[7]
Cristiano Calcagno and Dino Distefano. Infer: an automatic program verifier for memory safety of C programs. In Proceedings of the Third international conference on NASA Formal methods, pages 459--465, 2011.
[8]
Cristiano Calcagno, Philippa Gardner, and Matthew Hague. From separation logic to first-order logic. In Proc. FOSSACS, pages 395--409, 2005.
[9]
Cristiano Calcagno, Hongseok Yang, and Peter W. O'Hearn. Computability and complexity results for a spatial assertion language for data structures. In Proceedings of the 21st Conference on Foundations of Software Technology and Theoretical Computer Science, pages 108--119, 2001.
[10]
Bor-Yuh Evan Chang and Xavier Rival. Relational inductive shape analysis. In Proc. POPL, pages 247--260, 2008.
[11]
Dino Distefano, Peter W. O'Hearn, and Hongseok Yang. A local shape analysis based on separation logic. In Proc. TACAS, pages 287--302, 2006.
[12]
Dino Distefano and Matthew J. Parkinson. jStar: towards practical verification for Java. In Proc. OOPSLA, pages 213--226, 2008.
[13]
Robert Dockins, Aquinas Hobor, and Andrew W. Appel. A fresh lookat separation algebras and share accounting. In Proc. APLAS, pages 161--177, 2009.
[14]
Kamil Dudka, Petr Müller, Petr Peringer, and Tomáš Vojnar. Predator: a tool for verification of low-level list manipulation. In Proc. TACAS, pages 627--629, 2013.
[15]
Didier Galmiche and Daniel Méry. Tableaux and resource graphs for separation logic. Journal of Logic and Computation, 20:189--231, 2010.
[16]
Christoph Haase, Samin Ishtiaq, Joël Ouaknine, and Matthew J. Parkinson. SeLoger: A tool for graph-based reasoning in separation logic. In Proc. CAV, pages 790--795, 2013.
[17]
Aquinas Hobor and Jules Villard. The ramifications of sharing in data structures. In Proc. POPL, pages 523--536, 2013.
[18]
Samin S. Ishtiaq and Peter W. O'Hearn. BI as an assertion language for mutable data structures. In Proc. POPL, pages 14--26, 2001.
[19]
Bart Jacobs, Jan Smans, and Frank Piessens. VeriFast: Imperative programs as proofs. In Proc. VSTTE, pages 59--68, 2010.
[20]
Neelakantan R. Krishnaswami. Reasoning about iterators with separation logic. In Proc. SAVCBS, pages 83--86, 2006.
[21]
Dominique Larchey-Wendling and Didier Galmiche. The undecidability of boolean BI through phase semantics. In Proc. LICS, pages 140--149, 2010.
[22]
Toshiyuki Maeda, Haruki Sato, and Akinori Yonezawa. Extended alias type system using separating implication. In Proc. TLDI, pages 29--42, 2011.
[23]
Stephen Magill, Josh Berdine, Edmund M. Clarke, and Byron Cook. Arithmetic strengthening for shape analysis. In Proc. SAS, pages 419--436, 2007.
[24]
Juan Antonio Navarro Pérez and Andrey Rybalchenko. Separation logic + superposition calculus = heap theorem prover. In Proc. PLDI, pages 556--566, 2011.
[25]
Huu Hai Nguyen andWei-Ngan Chin. Enhancing program verification with lemmas. In Proc. CAV, pages 355--369, 2008.
[26]
Jonghyun Park, Jeongbong Seo, and Sungwoo Park. A theorem prover for Boolean BI. In Proc. POPL, pages 219--232, 2013.
[27]
Matthew J. Parkinson and Alexander J. Summers. The relationship between separation logic and implicit dynamic frames. In Proc. ESOP, pages 439--458, 2011.
[28]
John C. Reynolds. Separation logic: A logic for shared mutable data structures. In Proc. LICS, pages 55--74, 2002.
[29]
Hongseok Yang. An example of local reasoning in BI pointer logic: the Schorr-Waite graph marking algorithm. In Proceedings of the 1st Workshop on Semantics, Program Analysis, and Computing Environments for Memory Management, pages 41--68, 2001.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 49, Issue 1
POPL '14
January 2014
661 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/2578855
Issue’s Table of Contents
  • cover image ACM Conferences
    POPL '14: Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
    January 2014
    702 pages
    ISBN:9781450325448
    DOI:10.1145/2535838
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 08 January 2014
Published in SIGPLAN Volume 49, Issue 1

Check for updates

Author Tags

  1. proof system
  2. separation logic
  3. theorem prover

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)24
  • Downloads (Last 6 weeks)5
Reflects downloads up to 25 Dec 2024

Other Metrics

Citations

Cited By

View all

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media