skip to main content
research-article
Open Access
Artifacts Available
Artifacts Evaluated & Functional

MoSeL: a general, extensible modal framework for interactive proofs in separation logic

Published:30 July 2018Publication History
Skip Abstract Section

Abstract

A number of tools have been developed for carrying out separation-logic proofs mechanically using an interactive proof assistant. One of the most advanced such tools is the Iris Proof Mode (IPM) for Coq, which offers a rich set of tactics for making separation-logic proofs look and feel like ordinary Coq proofs. However, IPM is tied to a particular separation logic (namely, Iris), thus limiting its applicability.

In this paper, we propose MoSeL, a general and extensible Coq framework that brings the benefits of IPM to a much larger class of separation logics. Unlike IPM, MoSeL is applicable to both affine and linear separation logics (and combinations thereof), and provides generic tactics that can be easily extended to account for the bespoke connectives of the logics with which it is instantiated. To demonstrate the effectiveness of MoSeL, we have instantiated it to provide effective tactical support for interactive and semi-automated proofs in six very different separation logics.

Skip Supplemental Material Section

Supplemental Material

a77-krebbers.webm

webm

85.3 MB

References

  1. Andrew W. Appel. 2006. Tactics for separation logic. Available at http://www.cs.princeton.edu/~appel/papers/septacs.pdf .Google ScholarGoogle Scholar
  2. Robert Atkey. 2011. Amortised resource analysis with separation logic. LMCS 7, 2 (2011).Google ScholarGoogle Scholar
  3. Jesper Bengtson, Jonas Braband Jensen, and Lars Birkedal. 2012. Charge! - A framework for higher-order separation logic in Coq. In ITP (LNCS), Vol. 7406. 315–331.Google ScholarGoogle Scholar
  4. Josh Berdine, Cristiano Calcagno, and Peter W. O’Hearn. 2004. A decidable fragment of separation logic. In FSTTCS. 97–109. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Josh Berdine, Cristiano Calcagno, and Peter W. O’Hearn. 2005. Smallfoot: Modular automatic assertion checking with separation logic. In FMCO. 115–137. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Aleš Bizjak and Lars Birkedal. 2018. On models of higher-order separation logic. ENTCS 336 (2018), 57–78.Google ScholarGoogle ScholarCross RefCross Ref
  7. Stephen Brookes. 2007. A semantics for concurrent separation logic. TCS 375, 1-3 (2007), 227–270. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Cristiano Calcagno, Peter W. O’Hearn, and Hongseok Yang. 2007. Local action and abstract separation logic. In LICS. 366–378. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Qinxiang Cao, Lennart Beringer, Samuel Gruetter, Josiah Dodds, and Andrew W. Appel. 2018. VST-Floyd: A separation logic tool to verify correctness of C programs. JAR 61, 1-4 (2018), 367–422. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Qinxiang Cao, Santiago Cuellar, and Andrew W. Appel. 2017. Bringing order to the separation logic jungle. In APLAS (LNCS), Vol. 10695. 190–211.Google ScholarGoogle Scholar
  11. Arthur Charguéraud. 2011. Characteristic formulae for the verification of imperative programs. In ICFP. 418–430.Google ScholarGoogle Scholar
  12. Arthur Charguéraud. 2018. CFML 2.0. http://www.chargueraud.org/softs/cfml/ .Google ScholarGoogle Scholar
  13. Arthur Charguéraud and François Pottier. 2017. Temporary read-only permissions for separation logic. In ESOP (LNCS), Vol. 10201. 260–286.Google ScholarGoogle Scholar
  14. Haogang Chen, Daniel Ziegler, Tej Chajed, Adam Chlipala, M. Frans Kaashoek, and Nickolai Zeldovich. 2015. Using Crash Hoare logic for certifying the FSCQ file system. In SOSP. 18–37. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Adam Chlipala. 2013. The Bedrock structured programming system: combining generative metaprogramming and Hoare logic in an extensible program verifier. In ICFP. 391–402. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Jean-René Courtault, Didier Galmiche, and David J. Pym. 2016. A logic of separating modalities. TCS 637 (2016), 30–58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Pedro da Rocha Pinto, Thomas Dinsdale-Young, and Philippa Gardner. 2014. TaDA: A logic for time and data abstraction. In ECOOP (LNCS), Vol. 8586. 207–231. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. David Delahaye. 2000. A tactic language for the system Coq. In LPAR (LNCS), Vol. 1955. 85–95. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Robert Dockins, Andrew W. Appel, and Aquinas Hobor. 2008. Multimodal separation logic for reasoning about operational semantics. In MFPS. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Robert Dockins, Aquinas Hobor, and Andrew W. Appel. 2009. A fresh look at separation algebras and share accounting. In APLAS (LNCS), Vol. 5904. 161–177. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. François Garillot, Georges Gonthier, Assia Mahboubi, and Laurence Rideau. 2009. Packaging mathematical structures. In TPHOLs (LNCS), Vol. 5674. 327–342. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Aquinas Hobor and Jules Villard. 2013. The ramifications of sharing in data structures. In POPL. 523–536. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Jonas Braband Jensen, Nick Benton, and Andrew Kennedy. 2013. High-level separation logic for low-level code. In POPL. 301–314. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Ralf Jung, Jacques-Henri Jourdan, Robbert Krebbers, and Derek Dreyer. 2018a. Rustbelt: Securing the foundations of the Rust programming language. PACMPL 2, POPL, 66:1–66:34. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Ralf Jung, Robbert Krebbers, Lars Birkedal, and Derek Dreyer. 2016. Higher-order ghost state. In ICFP. 256–269. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Ralf Jung, Robbert Krebbers, Jacques-Henri Jourdan, Aleš Bizjak, Lars Birkedal, and Derek Dreyer. 2018b. Iris from the ground up: A modular foundation for higher-order concurrent separation logic. Accepted for publication in JFP (2018).Google ScholarGoogle Scholar
  27. Ralf Jung, David Swasey, Filip Sieczkowski, Kasper Svendsen, Aaron Turon, Lars Birkedal, and Derek Dreyer. 2015. Iris: Monoids and invariants as an orthogonal basis for concurrent reasoning. In POPL. 637–650. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Jan-Oliver Kaiser, Hoang-Hai Dang, Derek Dreyer, Ori Lahav, and Viktor Vafeiadis. 2017. Strong logic for weak memory: Reasoning about release-acquire consistency in Iris. In ECOOP (LIPIcs), Vol. 74. 17:1–17:29.Google ScholarGoogle Scholar
  29. Robbert Krebbers. 2015. The C standard formalized in Coq. Ph.D. Dissertation. Radboud University.Google ScholarGoogle Scholar
  30. Robbert Krebbers, Jacques-Henri Jourdan, Ralf Jung, Joseph Tassarotti, Jan-Oliver Kaiser, Amin Timany, Arthur Charguéraud, and Derek Dreyer. 2018. Coq repository for MoSeL. http://iris- project.org/mosel/ .Google ScholarGoogle Scholar
  31. Robbert Krebbers, Ralf Jung, Aleš Bizjak, Jacques-Henri Jourdan, Derek Dreyer, and Lars Birkedal. 2017a. The essence of higher-order concurrent separation logic. In ESOP (LNCS), Vol. 10201. 696–723. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Robbert Krebbers, Amin Timany, and Lars Birkedal. 2017b. Interactive proofs in higher-order concurrent separation logic. In POPL. 205–217. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Daniel J. Lehmann, Amir Pnueli, and Jonathan Stavi. 1981. Impartiality, justice and fairness: The ethics of concurrent termination. In Automata, Languages and Programming. 264–277. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Andrew McCreight. 2009. Practical tactics for separation logic. In TPHOLs (LNCS), Vol. 5674. 343–358. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Aleksandar Nanevski, Viktor Vafeiadis, and Josh Berdine. 2010. Structuring the verification of heap-manipulating programs. In POPL. 261–274. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Peter W. O’Hearn. 2007. Resources, concurrency, and local reasoning. TCS 375, 1 (2007), 271–307. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Peter W. O’Hearn and David J. Pym. 1999. The logic of bunched implications. Bulletin of Symbolic Logic 5, 2 (1999), 215–244.Google ScholarGoogle ScholarCross RefCross Ref
  38. Peter W. O’Hearn, John C. Reynolds, and Hongseok Yang. 2001. Local reasoning about programs that alter data structures. In CSL (LNCS), Vol. 2142. 1–18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. François Pottier. 2013. Syntactic soundness proof of a type-and-capability system with hidden state. JFP 23, 1 (2013), 38–144. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. David J. Pym. 2002. The semantics and proof theory of the logic of bunched implications. Springer.Google ScholarGoogle Scholar
  41. David J. Pym, Peter W. O’Hearn, and Hongseok Yang. 2004. Possible worlds and resources: the semantics of BI. TCS 315, 1 (2004), 257–305. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. John C. Reynolds. 2000. Intuitionistic reasoning about shared mutable data structure. In Millennial Perspectives in Computer Science. 303–321.Google ScholarGoogle Scholar
  43. John C. Reynolds. 2002. Separation logic: A logic for shared mutable data structures. In LICS. 55–74. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Ilya Sergey, Aleksandar Nanevski, and Anindya Banerjee. 2015a. Mechanized verification of fine-grained concurrent programs. In PLDI. 77–87. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Ilya Sergey, Aleksandar Nanevski, and Anindya Banerjee. 2015b. Specifying and verifying concurrent algorithms with histories and subjectivity. In ESOP. 333–358. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Matthieu Sozeau and Nicolas Oury. 2008. First-class type classes. In TPHOLs (LNCS), Vol. 5170. 278–293. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Bas Spitters and Eelis van der Weegen. 2011. Type classes for mathematics in type theory. MSCS 21, 4 (2011), 795–825.Google ScholarGoogle Scholar
  48. David Swasey, Deepak Garg, and Derek Dreyer. 2017. Robust and compositional verification of object capability patterns. PACMPL 1, OOPSLA (2017), 89:1–89:26. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Joseph Tassarotti, Ralf Jung, and Robert Harper. 2017. A higher-order logic for concurrent termination-preserving refinement. In ESOP (LNCS), Vol. 10201. 909–936. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Amin Timany, Léo Stefanesco, Morten Krogh-Jespersen, and Lars Birkedal. 2018. A logical relation for monadic encapsulation of state: Proving contextual equivalences in the presence of runST. PACMPL 2, POPL (2018), 64:1–64:28. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Harvey Tuch, Gerwin Klein, and Michael Norrish. 2007. Types, bytes, and separation logic. In POPL. 97–108. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Aaron Turon, Derek Dreyer, and Lars Birkedal. 2013. Unifying refinement and Hoare-style reasoning in a logic for higher-order concurrency. In ICFP. 377–390. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Viktor Vafeiadis and Matthew J. Parkinson. 2007. A marriage of rely/guarantee and separation logic. In CONCUR (LNCS), Vol. 4703. 256–271. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. MoSeL: a general, extensible modal framework for interactive proofs in separation logic

        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

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader