skip to main content
research-article

Separation logic + superposition calculus = heap theorem prover

Published:04 June 2011Publication History
Skip Abstract Section

Abstract

Program analysis and verification tools crucially depend on the ability to symbolically describe and reason about sets of program behaviors. Separation logic provides a promising foundation for dealing with heap manipulating programs, while the development of practical automated deduction/satisfiability checking tools for separation logic is a challenging problem. In this paper, we present an efficient, sound and complete automated theorem prover for checking validity of entailments between separation logic formulas with list segment predicates. Our theorem prover integrates separation logic inference rules that deal with list segments and a superposition calculus to deal with equality/aliasing between memory locations. The integration follows a modular combination approach that allows one to directly incorporate existing advanced techniques for first-order reasoning with equality, as well as account for additional theories, e.g., linear arithmetic, using extensions of superposition. An experimental evaluation of our entailment prover indicates speedups of several orders of magnitude with respect to the available state-of-the-art tools.

References

  1. T. Ball, R. Majumdar, T. D. Millstein, and S. K. Rajamani. Automatic predicate abstraction of c programs. In PLDI, pages 203--213, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. C. Barrett and C. Tinelli. CVC3. In CAV, pages 298--302, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. P. Baumgartner and U. Waldmann. Superposition and model evolution combined. In CADE, pages 17--34, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. J. Berdine, C. Calcagno, and P. W. O'Hearn. A decidable fragment of separation logic. In FSTTCS, number 3328 in LNCS, pages 97--109, 2004. Google ScholarGoogle Scholar
  5. J. Berdine, C. Calcagno, and P. W. O'Hearn. Symbolic execution with separation logic. In APLAS, pages 52--68, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. J. Berdine, C. Calcagno, and P. W. O'Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In FMCO, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J. Berdine, C. Calcagno, B. Cook, D. Distefano, P. W. O'Hearn, T. Wies, and H. Yang. Shape analysis for composite data structures. In CAV, pages 178--192, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. B. Blanchet, P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. A static analyzer for large safety-critical software. In PLDI, pages 196--207, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. C. Bouillaguet, V. Kuncak, T. Wies, K. Zee, and M. C. Rinard. Using first-order theorem provers in the Jahob data structure verification system. In VMCAI, pages 74--88, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. R. Bruttomesso, A. Cimatti, A. Franzén, A. Griggio, and R. Sebastiani. The MathSAT 4SMT solver. In CAV, pages 299--303, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. C. Calcagno, M. Parkinson, and V. Vafeiadis. SmallfootRG. In SAS, pages 233--238, 2007.Google ScholarGoogle Scholar
  12. C. Calcagno, D. Distefano, P. O'Hearn, and H. Yang. Compositional shape analysis by means of bi-abduction. In POPL, pages 289--300, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. B.-Y. E. Chang and X. Rival. Relational inductive shape analysis. In POPL, pages 247--260, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. L. M. de Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. L. M. de Moura and N. Bjørner. Tapas theory combinations and practical applications. In FORMATS, 2009.Google ScholarGoogle Scholar
  16. D. Distefano and M. Parkinson. jStar: Towards practical verification for Java. In OOPSLA, pages 213--226, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. D. Distefano, P. W. O'Hearn, and H. Yang. A local shape analysis based on separation logic. In TACAS, pages 287--302, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. R. Dockins, A. Hobor, and A. W. Appel. A fresh look at separation algebras and share accounting. In APLAS, pages 161--177, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. B. Dutertre and L. D. Moura. The Yices SMT solver. Technical report, Computer Science Laboratory, SRI International, 2006.Google ScholarGoogle Scholar
  20. C. Flanagan, K. R. M. Leino, M. Lillibridge, G. Nelson, J. B. Saxe, and R. Stata. Extended static checking for Java. In PLDI, pages 234--245, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. D. Gay and A. Aiken. Memory management with explicit regions. In PLDI, pages 313--323, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In POPL, pages 58--70, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. B. Jacobs and F. Piessens. The VeriFast program verifier. Technical Report CW-520, Katholieke Universiteit Leuven, Belgium, 2008.Google ScholarGoogle Scholar
  24. K. Korovin and A. Voronkov. Integrating linear arithmetic into superposition calculus. In Computer Science Logic (CSL'07), volume 4646 of Lecture Notes in Computer Science, pages 223--237. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. N. Marti and R. Affeldt. A certified verifier for a fragment of separation logic. Computer Software, 25 (3): 135--147, 2008.Google ScholarGoogle Scholar
  26. M. Méndez-Lojo and M. V. Hermenegildo. Precise set sharing analysis for Java-style programs. In VMCAI, pages 172--187, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. A. Møller and M. I. Schwartzbach. The pointer assertion logic engine. In PLDI, pages 221--231, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. A. Nanevski, G. Morrisett, A. Shinnar, P. Govereau, and L. Birkedal. Ynot: Dependent types for imperative programs. In ICFP, pages 229--240, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. H. H. Nguyen, V. Kuncak, and W.-N. Chin. Runtime checking for separation logic. In VMCAI, pages 203--217, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. R. Nieuwenhuis and A. Rubio. Paramodulation-based theorem proving. In J. A. Robinson and A. Voronkov, editors, Handbook of Automated Reasoning, volume I, chapter 7, pages 371--443. Elsevier, 2001.Google ScholarGoogle ScholarCross RefCross Ref
  31. A. Podelski and T. Wies. Boolean heaps. In SAS, pages 268--283, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. A. Podelski and T. Wies. Counterexample-guided focus. In POPL, pages 249--260, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. J. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS, pages 55--74, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. M. C. Rinard. Integrated reasoning and proof choice point selection in the Jahob system -- mechanisms for program survival. In CADE, pages 1--16, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. S. Sagiv, T. W. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic. ACM Trans. Program. Lang. Syst., 24 (3): 217--298, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. J. Villard, É. Lozes, and C. Calcagno. Tracking heaps that hop with Heap-Hop. In TACAS, pages 275--279, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. H. Yang. An example of local reasoning in bi pointer logic: the schorr-waite graph marking algorithm. In SPACE workshop, 2001.Google ScholarGoogle Scholar
  38. H. Yang, O. Lee, J. Berdine, C. Calcagno, B. Cook, D. Distefano, and P. W. O'Hearn. Scalable shape analysis for systems code. In CAV, pages 385--398, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Separation logic + superposition calculus = heap theorem prover

              Recommendations

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in

              Full Access

              • Published in

                cover image ACM SIGPLAN Notices
                ACM SIGPLAN Notices  Volume 46, Issue 6
                PLDI '11
                June 2011
                652 pages
                ISSN:0362-1340
                EISSN:1558-1160
                DOI:10.1145/1993316
                Issue’s Table of Contents
                • cover image ACM Conferences
                  PLDI '11: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation
                  June 2011
                  668 pages
                  ISBN:9781450306638
                  DOI:10.1145/1993498
                  • General Chair:
                  • Mary Hall,
                  • Program Chair:
                  • David Padua

                Copyright © 2011 ACM

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 4 June 2011

                Check for updates

                Qualifiers

                • research-article

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader
              About Cookies On This Site

              We use cookies to ensure that we give you the best experience on our website.

              Learn more

              Got it!