skip to main content
10.1145/2364527.2364531acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
research-article

Verified heap theorem prover by paramodulation

Published:09 September 2012Publication History

ABSTRACT

We 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 equipped with efficient theorem provers are now within the reach of formal methods. As a pair, VeriStar and VeriSmall represent the first application of the Verified Software Toolchain [4], a tightly integrated collection of machine-verified program logics and compilers giving foundational correctness guarantees.

VeriStar is (1) purely functional, (2) machine-checked, (3) end-to-end, (4) efficient and (5) modular. By purely functional, we mean it is implemented in Gallina, the pure functional programming language embedded in the Coq theorem prover. By machine-checked, we mean it has a proof in Coq that when the prover says "valid", the checked entailment holds in a proved-sound separation logic for C minor. By end-to-end, we mean that when the static analysis+theorem prover says a C minor program is safe, the program will be compiled to a semantically equivalent assembly program that runs on real hardware. By efficient, we mean that the prover implements a state-of-the-art algorithm for deciding heap entailments and uses highly tuned verified functional data structures. By modular, we mean that VeriStar can be retrofitted to other static analyses as a plug-compatible entailment checker and its soundness proof can easily be ported to other separation logics.

References

  1. URL http://www.cs.princeton.edu/~jsseven/p/veristar.Google ScholarGoogle Scholar
  2. A. W. Appel. Foundational proof-carrying code. In LICS, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. A. W. Appel. VeriSmall: Verified Smallfoot shape analysis. In First International Conf. on Certified Programs and Proofs, Dec. 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. A. W. Appel. Verified Software Toolchain. In ESOP, pages 1--17, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. M. Armand, G. Faure, B. Grégoire, C. Keller, L. Théry, and B. Werner. A modular integration of SAT/SMT solvers to Coq through proof witnesses. In First International Conf. on Certified Programs and Proofs, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. R. Atkey. Amortised resource analysis with separation logic. Logical Methods in Computer Science, 7 (2:17), 2011.Google ScholarGoogle ScholarCross RefCross Ref
  7. L. Bachmair and H. Ganzinger. Equational Reasoning in Saturation-Based Theorem Proving. In W. Bibel and P. Schmitt, editors, Automated Deduction - A Basis for Applications, volume I, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. L. Bentley. Writing Efficient Programs. Prentice-Hall, 1982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. J. Berdine, C. Calcagno, and P. W. O'Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In Formal Methods for Components and Objects, pages 115--135, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. J. Berdine, B. Cook, and S. Ishtiaq. SLAyer: Memory safety for systems-level code. In CAV, pages 178--183, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. F. Besson, P.-E. Cornilleau, and D. Pichardie. Modular SMT proofs for fast reflexive checking inside Coq. In First International Conf. on Certified Programs and Proofs, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. T. Braibant and D. Pous. Tactics for reasoning modulo AC in Coq. In First International Conf. on Certified Programs and Proofs, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. J. Brotherston, D. Distefano, and R. L. Petersen. Automated cyclic entailment proofs in separation logic. In Proceedings of CADE-23, pages 131--146, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. C. Calcagno and D. Distefano. Infer: an automatic program verifier for memory safety of C programs. In Third International Conference on NASA Formal Methods, pages 459--465, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. C. Calcagno, D. Distefano, P. O'Hearn, and H. Yang. Compositional shape analysis by means of bi-abduction. SIGPLAN Not., 44: 289--300, January 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. B.-Y. E. Chang and X. Rival. Relational inductive shape analysis. In POPL, pages 247--260, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. A. Chlipala. Mostly-automated verification of low-level programs in computational separation logic. In PLDI'11, pages 234--245, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. L. M. de Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. D. Distefano and M. J. Parkinson J. jStar: Towards practical verification for Java. In OOPSLA, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. R. Dockins, A. Hobor, and A. W. Appel. A fresh look at separation algebras and share accounting. In APLAS: 7th Asian Symposium on Programming Languages and Systems, pages 161--177, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. S. L. Graham, P. B. Kessler, and M. K. McKusick. Gprof: A call graph execution profiler. In Proc. SIGPLAN '82 Symp. on Compiler Construction, SIGPLAN Notices, pages 120--126. ACM Press, 1982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. A. Hobor, A. W. Appel, and F. Zappa Nardelli. Oracle Semantics for Concurrent Separation Logic. In ESOP, pages 353--367, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. X. Leroy. A formally verified compiler back-end. Journal of Automated Reasoning, 43 (4): 363--446, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. B. Löchner and S. Schulz. An evaluation of shared rewriting. In Proceedings of the Second International Workshop on Implementation of Logics, Technical Report MPI-I-2001-2-006, pages 33--48, 2001.Google ScholarGoogle Scholar
  25. S. Magill, A. Nanevski, E. Clarke, and P. Lee. Inferring invariants in separation logic for imperative list-processing programs. In Third Workshop on Semantics, Program Analysis, and Computing Environments for Memory Management (SPACE), 2006.Google ScholarGoogle Scholar
  26. J. A. Navarro Pérez and A. Rybalchenko. Separation logic + superposition calculus = heap theorem prover. In PLDI, pages 556--566, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. G. Necula. Proof-carrying code. In POPL, pages 106--119, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. G. C. Necula and P. Lee. Efficient representation and validation of proofs. In LICS, pages 93--104, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. G. C. Necula and S. P. Rahul. Oracle-based checking of untrusted software. In POPL, pages 142--154, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. H. H. Nguyen and W.-N. Chin. Enhancing program verification with lemmas. In CAV, pages 355--369, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. H. H. Nguyen, C. David, S. Qin, and W.-N. Chin. Automated verification of shape and size properties via separation logic. In VMCAI, pages 251--266, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. R. Nieuwenhuis and A. Rubio. Paramodulation-based theorem proving. In A. Robinson and A. Voronkov, editors, Handbook of Automated Reasoning, 2001.Google ScholarGoogle ScholarCross RefCross Ref
  33. T. Tuerk. A formalisation of Smallfoot in HOL. In Theorem Proving in Higher Order Logics, pages 469--484, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Verified heap theorem prover by paramodulation

    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
    • Published in

      cover image ACM Conferences
      ICFP '12: Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
      September 2012
      392 pages
      ISBN:9781450310543
      DOI:10.1145/2364527
      • cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 47, Issue 9
        ICFP '12
        September 2012
        368 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2398856
        Issue’s Table of Contents

      Copyright © 2012 ACM

      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: 9 September 2012

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      ICFP '12 Paper Acceptance Rate32of88submissions,36%Overall Acceptance Rate333of1,064submissions,31%

      Upcoming Conference

      ICFP '24

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader