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.
- T. Ball, R. Majumdar, T. D. Millstein, and S. K. Rajamani. Automatic predicate abstraction of c programs. In PLDI, pages 203--213, 2001. Google Scholar
Digital Library
- C. Barrett and C. Tinelli. CVC3. In CAV, pages 298--302, 2007. Google Scholar
Digital Library
- P. Baumgartner and U. Waldmann. Superposition and model evolution combined. In CADE, pages 17--34, 2009. Google Scholar
Digital Library
- 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 Scholar
- J. Berdine, C. Calcagno, and P. W. O'Hearn. Symbolic execution with separation logic. In APLAS, pages 52--68, 2005. Google Scholar
Digital Library
- J. Berdine, C. Calcagno, and P. W. O'Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In FMCO, 2006. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- R. Bruttomesso, A. Cimatti, A. Franzén, A. Griggio, and R. Sebastiani. The MathSAT 4SMT solver. In CAV, pages 299--303, 2008. Google Scholar
Digital Library
- C. Calcagno, M. Parkinson, and V. Vafeiadis. SmallfootRG. In SAS, pages 233--238, 2007.Google Scholar
- 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 Scholar
Digital Library
- B.-Y. E. Chang and X. Rival. Relational inductive shape analysis. In POPL, pages 247--260, 2008. Google Scholar
Digital Library
- L. M. de Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS, 2008. Google Scholar
Digital Library
- L. M. de Moura and N. Bjørner. Tapas theory combinations and practical applications. In FORMATS, 2009.Google Scholar
- D. Distefano and M. Parkinson. jStar: Towards practical verification for Java. In OOPSLA, pages 213--226, 2008. Google Scholar
Digital Library
- D. Distefano, P. W. O'Hearn, and H. Yang. A local shape analysis based on separation logic. In TACAS, pages 287--302, 2006. Google Scholar
Digital Library
- R. Dockins, A. Hobor, and A. W. Appel. A fresh look at separation algebras and share accounting. In APLAS, pages 161--177, 2009. Google Scholar
Digital Library
- B. Dutertre and L. D. Moura. The Yices SMT solver. Technical report, Computer Science Laboratory, SRI International, 2006.Google Scholar
- 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 Scholar
Digital Library
- D. Gay and A. Aiken. Memory management with explicit regions. In PLDI, pages 313--323, 1998. Google Scholar
Digital Library
- T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In POPL, pages 58--70, 2002. Google Scholar
Digital Library
- B. Jacobs and F. Piessens. The VeriFast program verifier. Technical Report CW-520, Katholieke Universiteit Leuven, Belgium, 2008.Google Scholar
- 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 Scholar
Digital Library
- N. Marti and R. Affeldt. A certified verifier for a fragment of separation logic. Computer Software, 25 (3): 135--147, 2008.Google Scholar
- M. Méndez-Lojo and M. V. Hermenegildo. Precise set sharing analysis for Java-style programs. In VMCAI, pages 172--187, 2008. Google Scholar
Digital Library
- A. Møller and M. I. Schwartzbach. The pointer assertion logic engine. In PLDI, pages 221--231, 2001. Google Scholar
Digital Library
- A. Nanevski, G. Morrisett, A. Shinnar, P. Govereau, and L. Birkedal. Ynot: Dependent types for imperative programs. In ICFP, pages 229--240, 2008. Google Scholar
Digital Library
- H. H. Nguyen, V. Kuncak, and W.-N. Chin. Runtime checking for separation logic. In VMCAI, pages 203--217, 2008. Google Scholar
Digital Library
- 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 Scholar
Cross Ref
- A. Podelski and T. Wies. Boolean heaps. In SAS, pages 268--283, 2005. Google Scholar
Digital Library
- A. Podelski and T. Wies. Counterexample-guided focus. In POPL, pages 249--260, 2010. Google Scholar
Digital Library
- J. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS, pages 55--74, 2002. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- J. Villard, É. Lozes, and C. Calcagno. Tracking heaps that hop with Heap-Hop. In TACAS, pages 275--279, 2010. Google Scholar
Digital Library
- H. Yang. An example of local reasoning in bi pointer logic: the schorr-waite graph marking algorithm. In SPACE workshop, 2001.Google Scholar
- 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 Scholar
Digital Library
Index Terms
Separation logic + superposition calculus = heap theorem prover
Recommendations
Separation logic + superposition calculus = heap theorem prover
PLDI '11: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and ImplementationProgram 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 ...
Verified heap theorem prover by paramodulation
ICFP '12We present VeriStar, a verified theorem prover for a decidable subset of separation logic. Together with VeriSmall [3], a proved-sound Smallfoot-style program analysis for C minor, VeriStar demonstrates that fully machine-checked static analyses ...
Verified heap theorem prover by paramodulation
ICFP '12: Proceedings of the 17th ACM SIGPLAN international conference on Functional programmingWe present VeriStar, a verified theorem prover for a decidable subset of separation logic. Together with VeriSmall [3], a proved-sound Smallfoot-style program analysis for C minor, VeriStar demonstrates that fully machine-checked static analyses ...







Comments