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.
Supplemental Material
- 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. Google Scholar
Digital Library
- Josh Berdine, Cristiano Calcagno, and Peter W. O'Hearn. A decidable fragment of separation logic. In Proc. FSTTCS, pages 97--109, 2004. Google Scholar
Digital Library
- Josh Berdine, Cristiano Calcagno, and Peter W. O'Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In Proc. FMCO, pages 115--137, 2005. Google Scholar
Digital Library
- Josh Berdine, Cristiano Calcagno, and Peter W. O'Hearn. Symbolic execution with separation logic. In Proc. APLAS, pages 52--68, 2005. Google Scholar
Digital Library
- Rémi Brochenin, Stéphane Demri, and Etienne Lozes. On the almighty wand. Information and Computation, 211:106--137, 2012. Google Scholar
Digital Library
- James Brotherston and Max Kanovich. Undecidability of propositional separation logic and its neighbours. In Proc. LICS, pages 130--139, 2010. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- Cristiano Calcagno, Philippa Gardner, and Matthew Hague. From separation logic to first-order logic. In Proc. FOSSACS, pages 395--409, 2005. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- Bor-Yuh Evan Chang and Xavier Rival. Relational inductive shape analysis. In Proc. POPL, pages 247--260, 2008. Google Scholar
Digital Library
- Dino Distefano, Peter W. O'Hearn, and Hongseok Yang. A local shape analysis based on separation logic. In Proc. TACAS, pages 287--302, 2006. Google Scholar
Digital Library
- Dino Distefano and Matthew J. Parkinson. jStar: towards practical verification for Java. In Proc. OOPSLA, pages 213--226, 2008. Google Scholar
Digital Library
- Robert Dockins, Aquinas Hobor, and Andrew W. Appel. A fresh lookat separation algebras and share accounting. In Proc. APLAS, pages 161--177, 2009. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- Didier Galmiche and Daniel Méry. Tableaux and resource graphs for separation logic. Journal of Logic and Computation, 20:189--231, 2010. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- Aquinas Hobor and Jules Villard. The ramifications of sharing in data structures. In Proc. POPL, pages 523--536, 2013. Google Scholar
Digital Library
- Samin S. Ishtiaq and Peter W. O'Hearn. BI as an assertion language for mutable data structures. In Proc. POPL, pages 14--26, 2001. Google Scholar
Digital Library
- Bart Jacobs, Jan Smans, and Frank Piessens. VeriFast: Imperative programs as proofs. In Proc. VSTTE, pages 59--68, 2010.Google Scholar
- Neelakantan R. Krishnaswami. Reasoning about iterators with separation logic. In Proc. SAVCBS, pages 83--86, 2006. Google Scholar
Digital Library
- Dominique Larchey-Wendling and Didier Galmiche. The undecidability of boolean BI through phase semantics. In Proc. LICS, pages 140--149, 2010. Google Scholar
Digital Library
- Toshiyuki Maeda, Haruki Sato, and Akinori Yonezawa. Extended alias type system using separating implication. In Proc. TLDI, pages 29--42, 2011. Google Scholar
Digital Library
- Stephen Magill, Josh Berdine, Edmund M. Clarke, and Byron Cook. Arithmetic strengthening for shape analysis. In Proc. SAS, pages 419--436, 2007. Google Scholar
Digital Library
- Juan Antonio Navarro Pérez and Andrey Rybalchenko. Separation logic + superposition calculus = heap theorem prover. In Proc. PLDI, pages 556--566, 2011. Google Scholar
Digital Library
- Huu Hai Nguyen andWei-Ngan Chin. Enhancing program verification with lemmas. In Proc. CAV, pages 355--369, 2008. Google Scholar
Digital Library
- Jonghyun Park, Jeongbong Seo, and Sungwoo Park. A theorem prover for Boolean BI. In Proc. POPL, pages 219--232, 2013. Google Scholar
Digital Library
- Matthew J. Parkinson and Alexander J. Summers. The relationship between separation logic and implicit dynamic frames. In Proc. ESOP, pages 439--458, 2011. Google Scholar
Digital Library
- John C. Reynolds. Separation logic: A logic for shared mutable data structures. In Proc. LICS, pages 55--74, 2002. Google Scholar
Digital Library
- 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.Google Scholar
Index Terms
A proof system for separation logic with magic wand
Recommendations
A proof system for separation logic with magic wand
POPL '14: Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesSeparation 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 ...
Automated mutual induction proof in separation logic
Special Issue on Extended Versions of Papers Presented at FM 2016AbstractWe present a deductive proof system to automatically prove separation logic entailments by mathematical induction. Our technique is called the mutual induction proof. It is an instance of the well-founded induction, a.k.a., Noetherian induction. ...
Interactive proofs in higher-order concurrent separation logic
POPL '17: Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming LanguagesWhen using a proof assistant to reason in an embedded logic -- like separation logic -- one cannot benefit from the proof contexts and basic tactics of the proof assistant. This results in proofs that are at a too low level of abstraction because they ...







Comments