skip to main content
research-article
Open Access

Separation logic for sequential programs (functional pearl)

Published:03 August 2020Publication History
Skip Abstract Section

Abstract

This paper presents a simple mechanized formalization of Separation Logic for sequential programs. This formalization is aimed for teaching the ideas of Separation Logic, including its soundness proof and its recent enhancements. The formalization serves as support for a course that follows the style of the successful Software Foundations series, with all the statement and proofs formalized in Coq. This course only assumes basic knowledge of lambda-calculus, semantics and logics, and therefore should be accessible to a broad audience.

Skip Supplemental Material Section

Supplemental Material

Presentation at ICFP '20

References

  1. Amal Jamil Ahmed. 2004. Semantics of Types for Mutable State. Ph.D. Dissertation. Princeton University.Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Andrew W. Appel. 2011. Verified Software Toolchain. In Proceedings of the 20th European Conference on Programming Languages and Systems: Part of the Joint European Conferences on Theory and Practice of Software (Saarbrücken, Germany) (ESOP'11/ETAPS'11). Springer-Verlag, Berlin, Heidelberg, 1-17. https://doi.org/10.1007/978-3-642-28891-3_2 Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Andrew W Appel. 2014. Program logics for certified compilers. Cambridge University Press. https://doi.org/10.1017/ CBO9781107256552 With Robert Dockins, Aquinas Hobor, Lennart Beringer, Josiah Dodds, Gordon Stewart, Sandrine Blazy, and Xavier Leroy. Google ScholarGoogle ScholarCross RefCross Ref
  4. Andrew W Appel and Sandrine Blazy. 2007. Separation logic for small-step Cminor. In International Conference on Theorem Proving in Higher Order Logics, Klaus Schneider and Jens Brandt (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 5-21. https://doi.org/10.1007/978-3-540-74591-4_3 Google ScholarGoogle ScholarCross RefCross Ref
  5. Andrew W. Appel and Qinxiang Cao. 2020. Verifiable C. Software Foundations, Vol. 5beta. Electronic textbook. http://softwarefoundations.cis.upenn. edu Version 0.9.5.Google ScholarGoogle Scholar
  6. Andrew W. Appel, Robert Dockins, Aquinas Hobor, Lennart Beringer, Josiah Dodds, Gordon Stewart, Sandrine Blazy, and Xavier Leroy. 2014. Program Logics for Certified Compilers. Cambridge University Press, USA. https://doi.org/10.1017/ CBO9781107256552 Google ScholarGoogle ScholarCross RefCross Ref
  7. Andrew W. Appel and David McAllester. 2001. An Indexed Model of Recursive Types for Foundational Proof-Carrying Code. ACM Trans. Program. Lang. Syst. 23, 5 (Sept. 2001 ), 657-683. https://doi.org/10.1145/504709.504712 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Andrew W. Appel, Paul-André Melliès, Christopher D. Richards, and Jérôme Vouillon. 2007. A Very Modal Model of a Modern, Major, General Type System. In Proceedings of the 34th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Nice, France) (POPL '07). Association for Computing Machinery, New York, NY, USA, 109-122. https://doi.org/10.1145/1190216.1190235 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Callum Bannister, Peter Höfner, and Gerwin Klein. 2018. Backwards and Forwards with Separation Logic. In Interactive Theorem Proving, Jeremy Avigad and Assia Mahboubi (Eds.). Springer International Publishing, Cham, 68-87. https: //doi.org/10.1007/978-3-319-94821-8_5 Google ScholarGoogle ScholarCross RefCross Ref
  10. Jesper Bengtson, Jonas Braband Jensen, and Lars Birkedal. 2012. Charge!. In Interactive Theorem Proving, Lennart Beringer and Amy Felty (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 315-331. https://doi.org/10.1007/978-3-642-32347-8_21 Google ScholarGoogle ScholarCross RefCross Ref
  11. Jesper Bengtson, Jonas Braband Jensen, Filip Sieczkowski, and Lars Birkedal. 2011. Verifying Object-Oriented Programs with Higher-Order Separation Logic in Coq. In Interactive Theorem Proving, Marko van Eekelen, Herman Geuvers, Julien Schmaltz, and Freek Wiedijk (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 22-38. https://doi.org/10.1007/978-3-642-22863-6_5 Google ScholarGoogle ScholarCross RefCross Ref
  12. Bodil Biering, Lars Birkedal, and Noah Torp-Smith. 2005. BI Hyperdoctrines and Higher-Order Separation Logic. In Proceedings of the 14th European Conference on Programming Languages and Systems (Edinburgh, UK) (ESOP'05). SpringerVerlag, Berlin, Heidelberg, 233-247. https://doi.org/10.1007/978-3-540-31987-0_17 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Bodil Biering, Lars Birkedal, and Noah Torp-Smith. 2007. BI-Hyperdoctrines, Higher-Order Separation Logic, and Abstraction. ACM Trans. Program. Lang. Syst. 29, 5 (Aug. 2007 ), 24-es. https://doi.org/10.1145/1275497.1275499 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Lars Birkedal and Aleš Bizjak. 2018. Lecture Notes on Iris: Higher-Order Concurrent Separation Logic. https://irisproject.org/tutorial-material.htmlGoogle ScholarGoogle Scholar
  15. Lars Birkedal, Bernhard Reus, Jan Schwinghammer, and Hongseok Yang. 2008. A Simple Model of Separation Logic for Higher-Order Store. In Automata, Languages and Programming (ICALP), Luca Aceto, Ivan Damgård, Leslie Ann Goldberg, Magnús M. Halldórsson, Anna Ingólfsdóttir, and Igor Walukiewicz (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 348-360. https://doi.org/10.1007/978-3-540-70583-3_29 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Lars Birkedal, Noah Torp-Smith, and Hongseok Yang. 2005. Semantics of separation-logic typing and higher-order frame rules. In 20th Annual IEEE Symposium on Logic in Computer Science (LICS'05). IEEE, 260-269. https://doi.org/10.1109/ LICS. 2005.47 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Lars Birkedal, Noah Torp-smith, and Hongseok Yang. 2006. Semantics of separation-logic typing and higher-order frame rules for algol-like languages, PrakashEditor Panangaden (Ed.). Logical Methods in Computer Science 2, 5. https: //doi.org/10.2168/lmcs-2( 5 :1) 2006 Google ScholarGoogle ScholarCross RefCross Ref
  18. Lars Birkedal and Hongseok Yang. 2007. Relational Parametricity and Separation Logic. In Foundations of Software Science and Computational Structures, Helmut Seidl (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 93-107. https: //doi.org/10.1007/978-3-540-71389-0_8 Google ScholarGoogle ScholarCross RefCross Ref
  19. Aleš Bizjak, Daniel Gratzer, Robbert Krebbers, and Lars Birkedal. 2019. Iron: Managing Obligations in Higher-Order Concurrent Separation Logic. Proc. ACM Program. Lang. 3, POPL, Article 65 ( Jan. 2019 ), 30 pages. https://doi.org/10. 1145/3290378 Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. R. M. Burstall. 1972. Some Techniques for Proving Correctness of Programs which Alter Data Structures. In Machine Intelligence 7, B. Meltzer and D. Mitchie (Eds.). Edinburgh University Press, Edinburgh, Scotland., 23-50.Google ScholarGoogle Scholar
  21. Hongxu Cai, Zhong Shao, and Alexander Vaynberg. 2007. Certified Self-Modifying Code. SIGPLAN Not. 42, 6 ( June 2007 ), 66-77. https://doi.org/10.1145/1273442.1250743 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Cristiano Calcagno, Dino Distefano, Jeremy Dubreil, Dominik Gabi, Pieter Hooimeijer, Martino Luca, Peter O'Hearn, Irene Papakonstantinou, Jim Purbrick, and Dulma Rodriguez. 2015. Moving Fast with Software Verification. In NASA Formal Methods, Klaus Havelund, Gerard Holzmann, and Rajeev Joshi (Eds.). Springer International Publishing, Cham, 3-11. https://doi.org/10.1007/978-3-319-17524-9_1 Google ScholarGoogle Scholar
  23. Cristiano Calcagno, Peter W. O'Hearn, and Hongseok Yang. 2007. Local Action and Abstract Separation Logic. In Logic in Computer Science (LICS). 366-378. https://doi.org/10.1109/LICS. 2007.30 Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Qinxiang Cao, Lennart Beringer, Samuel Gruetter, Josiah Dodds, and Andrew W Appel. 2018a. VST-Floyd : A separation logic tool to verify correctness of C programs. Journal of Automated Reasoning 61, 1-4 ( 2018 ), 367-422. https://doi.org/ 10.1007/s10817-018-9457-5 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Qinxiang Cao, Shengyi Wang, Aquinas Hobor, and Andrew W. Appel. 2018b. Proof pearl: Magic wand as frame. Unpublished.Google ScholarGoogle Scholar
  26. Arthur Charguéraud. 2011. Characteristic Formulae for the Verification of Imperative Programs. In International Conference on Functional Programming (Tokyo, Japan) ( ICFP '11). Association for Computing Machinery, New York, NY, USA, 418-430. https://doi.org/10.1145/2034773.2034828 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Arthur Charguéraud and François Pottier. 2015. Machine-Checked Verification of the Correctness and Amortized Complexity of an Eficient Union-Find Implementation. In Interactive Theorem Proving, Christian Urban and Xingyuan Zhang (Eds.). Springer International Publishing, Cham, 137-153. https://doi.org/10.1007/978-3-319-22102-1_9 Google ScholarGoogle ScholarCross RefCross Ref
  28. Arthur Charguéraud and François Pottier. 2019. Verifying the Correctness and Amortized Complexity of a Union-Find Implementation in Separation Logic with Time Credits. Journal of Automated Reasoning (JAR) 62, 3 (March 2019 ), 331-365. https://doi.org/10.1007/s10817-017-9431-7 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Arthur Charguéraud. 2010. Characteristic Formulae for Mechanized Program Verification. Ph.D. Dissertation. Université Paris Diderot. http://www.chargueraud.org/research/2010/thesis/thesis_final.pdfGoogle ScholarGoogle Scholar
  30. Arthur Charguéraud. 2020. Supplementary material. http://www.chargueraud.org/teach/verif/Google ScholarGoogle Scholar
  31. Arthur Charguéraud and François Pottier. 2017. Temporary Read-Only Permissions for Separation Logic. In European Symposium on Programming (ESOP) (Lecture Notes in Computer Science, Vol. 10201 ), Hongseok Yang (Ed.). Springer, 260-286. https://doi.org/10.1007/978-3-662-54434-1_10 Google ScholarGoogle ScholarCross RefCross Ref
  32. 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 Proceedings of the 25th Symposium on Operating Systems Principles (Monterey, California) ( SOSP '15). Association for Computing Machinery, New York, NY, USA, 18-37. https: //doi.org/10.1145/2815400.2815402 Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Adam Chlipala. 2011. Mostly-Automated Verification of Low-Level Programs in Computational Separation Logic. SIGPLAN Not. 46, 6 ( June 2011 ), 234-245. https://doi.org/10.1145/1993316.1993526 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Adam Chlipala. 2013. The Bedrock Structured Programming System: Combining Generative Metaprogramming and Hoare Logic in an Extensible Program Verifier, In Proceedings of the 18th ACM SIGPLAN International conference on Functional programming. SIGPLAN Not. 48, 9, 391-402. https://doi.org/10.1145/2544174.2500592 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Adam Chlipala. 2015. From Network Interface to Multithreaded Web Applications: A Case Study in Modular Program Verification. SIGPLAN Not. 50, 1 (Jan. 2015 ), 609-622. https://doi.org/10.1145/2775051.2677003 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Adam Chlipala. 2018a. Formal reasoning about programs. http://adam.chlipala.net/frap/frap_book. pdf Course notes.Google ScholarGoogle Scholar
  37. Adam Chlipala. 2018b. Formal reasoning about programs, Coq material for Chapter 14. https://github.com/achlipala/frap/ blob/master/SeparationLogic.vGoogle ScholarGoogle Scholar
  38. Adam Chlipala, Gregory Malecha, Greg Morrisett, Avraham Shinnar, and Ryan Wisnesky. 2009. Efective Interactive Proofs for Higher-Order Imperative Programs. In ACM International Conference on Functional Programming ( ICFP) (Edinburgh, Scotland) (ICFP '09). Association for Computing Machinery, New York, NY, USA, 79-90. https://doi.org/10.1145/1596550. 1596565 Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. David Costanzo and Zhong Shao. 2012. A Case for Behavior-Preserving Actions in Separation Logic. In Programming Languages and Systems, Ranjit Jhala and Atsushi Igarashi (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 332-349. https://doi.org/10.1007/978-3-642-35182-2_24 Google ScholarGoogle ScholarCross RefCross Ref
  40. Robert Dockins, Andrew W. Appel, and Aquinas Hobor. 2008. Multimodal Separation Logic for Reasoning About Operational Semantics. Electronic Notes in Theoretical Computer Science 218 ( 2008 ), 5-20. https://doi.org/10.1016/j.entcs. 2008. 10. 002 Proceedings of the 24th Conference on the Mathematical Foundations of Programming Semantics (MFPS XXIV). Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Robert Dockins, Aquinas Hobor, and Andrew W. Appel. 2009. A Fresh Look at Separation Algebras and Share Accounting. In Programming Languages and Systems, Zhenjiang Hu (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 161-177. https://doi.org/10.1007/978-3-642-10672-9_13 Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Xinyu Feng, Zhaozhong Ni, Zhong Shao, and Yu Guo. 2007. An Open Framework for Foundational Proof-Carrying Code. In Proc. 2007 ACM SIGPLAN International Workshop on Types in Language Design and Implementation (TLDI'07) (Nice, France). ACM Press, New York, NY, USA, 67-78. https://doi.org/10.1145/1190315.1190325 Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Robbert Krebbers, Jacques-Henri Jourdan, Ralf Jung, Joseph Tassarotti, Jan-Oliver Kaiser, Amin Timany, Arthur Charguéraud, and Derek Dreyer. 2018. MoSeL: A General, Extensible Modal Framework for Interactive Proofs in Separation Logic. Proc. ACM Program. Lang. 2, ICFP, Article 77 ( July 2018 ), 30 pages. https://doi.org/10.1145/3236772 Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Robbert Krebbers, Ralf Jung, Aleš Bizjak, Jacques-Henri Jourdan, Derek Dreyer, and Lars Birkedal. 2017. The Essence of Higher-Order Concurrent Separation Logic. In Proceedings of the 26th European Symposium on Programming Languages and Systems-Volume 10201. Springer-Verlag, Berlin, Heidelberg, 696-723. https://doi.org/10.1007/978-3-662-54434-1_26 Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Neelakantan R. Krishnaswami. 2012. Verifying Higher-Order Imperative Programs with Higher-Order Separation Logic. Ph.D. Dissertation. USA. Advisor(s) Aldrich, Jonathan. https://doi.org/10.5555/2519942 Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Neelakantan R. Krishnaswami, Jonathan Aldrich, and Lars Birkedal. 2007. Modular verification of the subject-observer pattern via higher-order separation logic. In In Proceedings of Formal Techniques for Java-like Programs (FTfJP).Google ScholarGoogle Scholar
  47. Neel R. Krishnaswami, Lars Birkedal, and Jonathan Aldrich. 2010. Verifying Event-Driven Programs Using Ramified Frame Properties. In Proceedings of the 5th ACM SIGPLAN Workshop on Types in Language Design and Implementation (Madrid, Spain) ( TLDI '10). Association for Computing Machinery, New York, NY, USA, 63-76. https://doi.org/10.1145/1708016. 1708025 Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Ramana Kumar, Magnus O. Myreen, Michael Norrish, and Scott Owens. 2014. CakeML: A Verified Implementation of ML. In Principles of Programming Languages (POPL). ACM Press, 179-191. https://doi.org/10.1145/2535838.2535841 Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Peter Lammich. 2019a. Generating Verified LLVM from Isabelle/HOL. In 10th International Conference on Interactive Theorem Proving, ITP 2019, September 9-12, 2019, Portland, OR, USA (LIPIcs, Vol. 141 ), John Harrison, John O'Leary, and Andrew Tolmach (Eds.). Schloss Dagstuhl-Leibniz-Zentrum für Informatik, 22 : 1-22 : 19. https://doi.org/10.4230/LIPIcs.ITP. 2019.22 Google ScholarGoogle ScholarCross RefCross Ref
  50. Peter Lammich. 2019b. Refinement to Imperative HOL. Journal of Automated Reasoning (JAR) 62, 4 (April 2019 ), 481-503. https://doi.org/10.1007/s10817-017-9437-1 Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Xavier Leroy. 2009. Formal Verification of a Realistic Compiler. Commun. ACM 52, 7 ( July 2009 ), 107-115. https: //doi.org/10.1145/1538788.1538814 Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Nicolas Marti, Reynald Afeldt, and Akinori Yonezawa. 2006. Formal Verification of the Heap Manager of an Operating System Using Separation Logic. In Proceedings of the 8th International Conference on Formal Methods and Software Engineering (Macao, China) (ICFEM'06). Springer-Verlag, Berlin, Heidelberg, 400-419. https://doi.org/10.1007/11901433_22 Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Andrew McCreight, Zhong Shao, Chunxiao Lin, and Long Li. 2007. A General Framework for Certifying Garbage Collectors and Their Mutators. In Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation (San Diego, California, USA) ( PLDI '07). Association for Computing Machinery, New York, NY, USA, 468-479. https://doi.org/10.1145/1250734.1250788 Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Peter Müller, Malte Schwerhof, and Alexander J. Summers. 2016. Viper: A Verification Infrastructure for Permission-Based Reasoning. In Verification, Model Checking, and Abstract Interpretation, Barbara Jobstmann and K. Rustan M. Leino (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 41-62. https://doi.org/10.1007/978-3-662-49122-5_2 Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Magnus O Myreen. 2008. Formal verification of machine-code programs. Ph.D. Dissertation.Google ScholarGoogle Scholar
  56. Magnus O. Myreen and Michael J. C. Gordon. 2007. Hoare Logic for Realistically Modelled Machine Code. In Proceedings of the 13th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (Braga, Portugal) (TACAS'07). Springer-Verlag, Berlin, Heidelberg, 568-582. https://doi.org/10.1007/978-3-540-71209-1_44 Google ScholarGoogle ScholarCross RefCross Ref
  57. Glen Mével, Jacques-Henri Jourdan, and François Pottier. 2019. Time credits and time receipts in Iris. In European Symposium on Programming (ESOP) (Lecture Notes in Computer Science, Vol. 11423 ), Luis Caires (Ed.). Springer, 1-27. https: //doi.org/10.1007/978-3-030-17184-1_1 Google ScholarGoogle ScholarCross RefCross Ref
  58. Aleksandar Nanevski, Greg Morrisett, and Lars Birkedal. 2006. Polymorphism and Separation in Hoare Type Theory. SIGPLAN Not. 41, 9 (Sept. 2006 ), 62-73. https://doi.org/10.1145/1160074.1159812 Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Aleksandar Nanevski, Greg Morrisett, and Lars Birkedal. 2008a. Hoare Type Theory, Polymorphism and Separation. J. Funct. Program. 18, 5-6 ( Sept. 2008 ), 865-911. https://doi.org/10.1017/S0956796808006953 Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Aleksandar Nanevski, Greg Morrisett, Avraham Shinnar, Paul Govereau, and Lars Birkedal. 2008b. Ynot: Dependent Types for Imperative Programs. SIGPLAN Not. 43, 9 (Sept. 2008 ), 229-240. https://doi.org/10.1145/1411203.1411237 Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Zhaozhong Ni and Zhong Shao. 2006. Certified Assembly Programming with Embedded Code Pointers. In Conference Record of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Charleston, South Carolina, USA) ( POPL '06). Association for Computing Machinery, New York, NY, USA, 320-333. https://doi.org/10.1145/1111037.1111066 Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Zhaozhong Ni, Dachuan Yu, and Zhong Shao. 2007. Using XCAP to Certify Realistic Systems Code: Machine Context Management. In Theorem Proving in Higher Order Logics, Klaus Schneider and Jens Brandt (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 189-206. https://doi.org/10.1007/978-3-540-74591-4_15 Google ScholarGoogle ScholarCross RefCross Ref
  63. O'Hearn, Reynolds, and Yang. 2001. Local Reasoning about Programs that Alter Data Structures. In CSL: 15th Workshop on Computer Science Logic. LNCS, Springer-Verlag. https://doi.org/10.1007/3-540-44802-0_1 Google ScholarGoogle ScholarCross RefCross Ref
  64. Peter W. O'Hearn. 2019. Separation logic. Commun. ACM 62, 2 ( 2019 ), 86-95. https://doi.org/10.1145/3211968 The appendix is linked as supplementary material from the ACM digital library. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Peter W. O'Hearn and David J. Pym. 1999. The Logic of Bunched Implications. The Bulletin of Symbolic Logic 5, 2 ( 1999 ), 215-244. http://www.jstor.org/stable/421090Google ScholarGoogle Scholar
  66. Pieter Philippaerts, Jan Tobias Mühlberg, Willem Penninckx, Jan Smans, Bart Jacobs, and Frank Piessens. 2014. Software Verification with VeriFast: Industrial Case Studies. Sci. Comput. Program. 82 (March 2014 ), 77-97. https://doi.org/10. 1016/j.scico. 2013. 01.006 Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Benjamin C. Pierce and many contributors. 2016. Software Foundations. https://softwarefoundations.cis.upenn.edu/Google ScholarGoogle Scholar
  68. François Pottier. 2008. Hiding local state in direct style: a higher-order anti-frame rule. In IEEE Symposium on Logic In Computer Science (LICS). Pittsburgh, Pennsylvania, 331-340. https://doi.org/10.1109/LICS. 2008.16 Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. François Pottier. 2017. Verifying a Hash Table and Its Iterators in Higher-Order Separation Logic. In ACM SIGPLAN Conference on Certified Programs and Proofs (CPP) (Paris, France) (CPP 2017 ). Association for Computing Machinery, New York, NY, USA, 3-16. https://doi.org/10.1145/3018610.3018624 Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Viorel Preoteasa. 2006. Mechanical Verification of Recursive Procedures Manipulating Pointers Using Separation Logic. In FM 2006: Formal Methods, Jayadev Misra, Tobias Nipkow, and Emil Sekerinski (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 508-523. https://doi.org/10.1007/11813040_34 Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Bernhard Reus and Jan Schwinghammer. 2006. Separation Logic for Higher-Order Store. In Computer Science Logic, Zoltán Ésik (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 575-590. https://doi.org/10.1007/11874683_38 Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. John C. Reynolds. 2002. Separation Logic: A Logic for Shared Mutable Data Structures. In Annual IEEE Symposium on Logic in Computer Science (LICS). 55-74. https://doi.org/10.1109/LICS. 2002.1029817 Google ScholarGoogle ScholarCross RefCross Ref
  73. John C Reynolds. 2006. A short course on separation logic. http://cs.ioc.ee/yik/schools/win2006/reynolds/estslides.pdfGoogle ScholarGoogle Scholar
  74. Adam Sandberg Ericsson, Magnus O. Myreen, and Johannes Åman Pohjola. 2019. A Verified Generational Garbage Collector for CakeML. Journal of Automated Reasoning (JAR) 63 ( 2019 ). https://doi.org/10.1007/s10817-018-9487-z Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Jan Schwinghammer, Lars Birkedal, Bernhard Reus, and Hongseok Yang. 2009. Nested Hoare Triples and Frame Rules for Higher-Order Store. In Computer Science Logic, Erich Grädel and Reinhard Kahle (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 440-454. https://doi.org/10.1007/978-3-642-04027-6_32 Google ScholarGoogle ScholarCross RefCross Ref
  76. Jan Schwinghammer, Hongseok Yang, Lars Birkedal, François Pottier, and Bernhard Reus. 2010. A Semantic Foundation for Hidden State. In Foundations of Software Science and Computational Structures, Luke Ong (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 2-17. https://doi.org/10.1007/978-3-642-12032-9_2 Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Kasper Svendsen, Lars Birkedal, and Matthew Parkinson. 2010. Verifying Generics and Delegates. In ECOOP 2010-Object-Oriented Programming, Theo D'Hondt (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 175-199. https: //doi.org/10.1007/978-3-642-14107-2_9 Google ScholarGoogle ScholarCross RefCross Ref
  78. Joseph Tassarotti, Ralf Jung, and Robert Harper. 2017. A Higher-Order Logic for Concurrent Termination-Preserving Refinement. In Programming Languages and Systems, Hongseok Yang (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 909-936. https://doi.org/10.1007/978-3-662-54434-1_34 Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Harvey Tuch, Gerwin Klein, and Michael Norrish. 2007. Types, Bytes, and Separation Logic. SIGPLAN Not. 42, 1 (Jan. 2007 ), 97-108. https://doi.org/10.1145/1190215.1190234 Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Thomas Tuerk. 2010. Local Reasoning about While-Loops. In In International Conference on Verified Software: Theories, Tools and Experiments.Google ScholarGoogle Scholar
  81. Thomas Tuerk. 2011. A separation logic framework for HOL. Technical Report UCAM-CL-TR-799. University of Cambridge, Computer Laboratory. https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-799.pdfGoogle ScholarGoogle Scholar
  82. Viktor Vafeiadis and Matthew Parkinson. 2007. A Marriage of Rely/Guarantee and Separation Logic. In CONCUR 2007-Concurrency Theory, Luís Caires and Vasco T. Vasconcelos (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 256-271. https://doi.org/10.1007/978-3-540-74407-8_18 Google ScholarGoogle ScholarCross RefCross Ref
  83. Carsten Varming and Lars Birkedal. 2008. Higher-Order Separation Logic in Isabelle/HOLCF. Electronic Notes in Theoretical Computer Science 218 ( 2008 ), 371-389. https://doi.org/10.1016/j.entcs. 2008. 10. 022 Proceedings of the 24th Conference on the Mathematical Foundations of Programming Semantics (MFPS XXIV). Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. Wei Wang, Zhong Shao, Xinyu Jiang, and Yu Guo. 2011. A Simple Model for Certifying Assembly Programs with FirstClass Function Pointers. In 5th IEEE International Symposium on Theoretical Aspects of Software Engineering, TASE 2011, Xi'an, China, 29-31 August 2011, Zhenhua Duan and C.-H. Luke Ong (Eds.). IEEE Computer Society, 125-132. https://doi.org/10.1109/TASE. 2011.16 Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Tjark Weber. 2004. Towards Mechanized Program Verification with Separation Logic. In Computer Science Logic, Jerzy Marcinkowski and Andrzej Tarlecki (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 250-264. https://doi.org/10. 1007/978-3-540-30124-0_21 Google ScholarGoogle ScholarCross RefCross Ref
  86. Fengwei Xu, Ming Fu, Xinyu Feng, Xiaoran Zhang, Hui Zhang, and Zhaohui Li. 2016. A practical verification framework for preemptive OS kernels. In International Conference on Computer Aided Verification, Swarat Chaudhuri and Azadeh Farzan (Eds.). Springer, Springer International Publishing, Cham, 59-79. https://doi.org/10.1007/978-3-319-41540-6_4 Google ScholarGoogle ScholarCross RefCross Ref
  87. Dachuan Yu, Nadeem A. Hamid, and Zhong Shao. 2003. Building Certified Libraries for PCC: Dynamic Storage Allocation. In Programming Languages and Systems, Pierpaolo Degano (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 363-379. https://doi.org/10.1007/3-540-36575-3_25 Google ScholarGoogle ScholarCross RefCross Ref
  88. Dachuan Yu, Nadeem A. Hamid, and Zhong Shao. 2004. Building Certified Libraries for PCC: Dynamic Storage Allocation. Science of Computer Programming 50, 1-3 ( 2004 ), 101-127. https://doi.org/10.1007/3-540-36575-3_25 Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Separation logic for sequential programs (functional pearl)

      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 Proceedings of the ACM on Programming Languages
        Proceedings of the ACM on Programming Languages  Volume 4, Issue ICFP
        August 2020
        1070 pages
        EISSN:2475-1421
        DOI:10.1145/3415018
        Issue’s Table of Contents

        Copyright © 2020 Owner/Author

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 3 August 2020
        Published in pacmpl Volume 4, Issue ICFP

        Permissions

        Request permissions about this article.

        Request Permissions

        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!