The Next 700 Separation Logics - (Invited Paper)

In recent years, separation logic has brought great advances in the world of verification. However, there is a disturbing trend for each new library or concurrency primitive to require a new separation logic. I will argue that we shouldn't be inventing new separation logics, but should find the right logic to reason about interference, and have a powerful abstraction mechanism to enable the library's implementation details to be correctly abstracted. Adding new concurrency libraries should simply be a matter of verification, not of new logics or metatheory.

[1]  Peter W. O'Hearn,et al.  Local Action and Abstract Separation Logic , 2007, 22nd Annual IEEE Symposium on Logic in Computer Science (LICS 2007).

[2]  Cristiano Calcagno,et al.  Proving Copyless Message Passing , 2009, APLAS.

[3]  Hongseok Yang,et al.  Nested Hoare Triples and Frame Rules for Higher-Order Store , 2009, CSL.

[4]  Vincent Danos,et al.  Reversible Communicating Systems , 2004, CONCUR.

[5]  Peter W. O'Hearn,et al.  Resources, Concurrency and Local Reasoning , 2004, CONCUR.

[6]  Long Li,et al.  A general framework for certifying garbage collectors and their mutators , 2007, PLDI '07.

[7]  Lars Birkedal,et al.  BI Hyperdoctrines and Higher-Order Separation Logic , 2005, ESOP.

[8]  Lars Birkedal,et al.  Design patterns in separation logic , 2009, TLDI '09.

[9]  Philippa Gardner,et al.  Local Reasoning about Data Update , 2007, Electron. Notes Theor. Comput. Sci..

[10]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[11]  Alexey Gotsman,et al.  Local Reasoning for Storable Locks and Threads , 2007, APLAS.

[12]  Andrew W. Appel,et al.  Oracle Semantics for Concurrent Separation Logic , 2008, ESOP.

[13]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[14]  John Tang Boyland,et al.  Checking Interference with Fractional Permissions , 2003, SAS.

[15]  Lars Birkedal,et al.  BI-hyperdoctrines, higher-order separation logic, and abstraction , 2007, TOPL.

[16]  Cliff B. Jones,et al.  Tentative steps toward a development method for interfering programs , 1983, TOPL.

[17]  Viktor Vafeiadis,et al.  A Marriage of Rely/Guarantee and Separation Logic , 2007, CONCUR.

[18]  Matthew J. Parkinson,et al.  Explicit Stabilisation for Modular Rely-Guarantee Reasoning , 2010, ESOP.

[19]  Kim G. Larsen,et al.  On Modal Refinement and Consistency , 2007, CONCUR.

[20]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[21]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[22]  Peter W. O'Hearn,et al.  Permission accounting in separation logic , 2005, POPL '05.

[23]  Viktor Vafeiadis,et al.  Modular fine-grained concurrency verification , 2008 .

[24]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[25]  Gavin M. Bierman,et al.  Separation logic and abstraction , 2005, POPL '05.

[26]  Zhong Shao,et al.  Certified self-modifying code , 2007, PLDI '07.

[27]  Lars Birkedal,et al.  Local reasoning about a copying garbage collector , 2008 .

[28]  Peter W. O'Hearn,et al.  Separation and information hiding , 2004, POPL.

[29]  Gavin M. Bierman,et al.  Separation logic, abstraction and inheritance , 2008, POPL '08.

[30]  Alex K. Simpson,et al.  Computational Adequacy in an Elementary Topos , 1998, CSL.

[31]  Cristiano Calcagno,et al.  Tracking Heaps That Hop with Heap-Hop , 2010, TACAS.

[32]  Stephen D. Brookes,et al.  A Semantics for Concurrent Separation Logic , 2004, CONCUR.

[33]  Hongseok Yang,et al.  Semantics of separation-logic typing and higher-order frame rules , 2005, 20th Annual IEEE Symposium on Logic in Computer Science (LICS' 05).

[34]  Hongseok Yang,et al.  A Semantic Foundation for Hidden State , 2010, FoSSaCS.

[35]  Anindya Banerjee,et al.  Dynamic Boundaries: Information Hiding by Second Order Framing with First Order Assertions , 2010, ESOP.

[36]  Peter W. O'Hearn,et al.  BI as an assertion language for mutable data structures , 2001, POPL '01.

[37]  Viktor Vafeiadis,et al.  Concurrent Abstract Predicates , 2010, ECOOP.

[38]  Peter W. O'Hearn,et al.  Separation Logic Semantics for Communicating Processes , 2008, FICS.

[39]  Xinyu Feng,et al.  On the Relationship Between Concurrent Separation Logic and Assume-Guarantee Reasoning , 2007, ESOP.

[40]  Lars Birkedal,et al.  Abstract Predicates and Mutable ADTs in Hoare Type Theory , 2007, ESOP.

[41]  Xinyu Feng Local rely-guarantee reasoning , 2009, POPL '09.

[42]  Hongseok Yang,et al.  An Example of Local Reasoning in BI Pointer Logic: the Schorr−Waite Graph Marking Algorithm , 2001 .

[43]  David Lorge Parnas The Secret History of Information Hiding , 2002, Software Pioneers.

[44]  Matthew J. Parkinson,et al.  Local reasoning for Java , 2005 .

[45]  Susan Owicki,et al.  An axiomatic proof technique for parallel programs I , 1976, Acta Informatica.

[46]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[47]  Yu Guo,et al.  Certifying low-level programs with hardware interrupts and preemptive threads , 2008, PLDI '08.

[48]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[49]  C. A. R. Hoare,et al.  Proof of correctness of data representations , 1972, Acta Informatica.

[50]  Xinyu Feng,et al.  Combining Domain-Specific and Foundational Logics to Verify Complete Software Systems , 2008, VSTTE.

[51]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[52]  Leslie Lamport,et al.  A new solution of Dijkstra's concurrent programming problem , 1974, Commun. ACM.

[53]  Philippa Gardner,et al.  Context logic and tree update , 2005, POPL '05.

[54]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[55]  Marcello M. Bonsangue,et al.  Formal Methods for Components and Objects - 8th International Symposium, FMCO 2009, Eindhoven, The Netherlands, November 4-6, 2009. Revised Selected Papers , 2010, FMCO.

[56]  François Pottier Hiding Local State in Direct Style: A Higher-Order Anti-Frame Rule , 2008, 2008 23rd Annual IEEE Symposium on Logic in Computer Science.

[57]  Lars Birkedal,et al.  Verifying event-driven programs using ramified frame properties , 2010, TLDI '10.

[58]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[59]  Richard Bornat,et al.  Local reasoning, separation and aliasing , 2003 .

[60]  Xinyu Feng,et al.  Deny-Guarantee Reasoning , 2009, ESOP.

[61]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[62]  Andrew W. Appel,et al.  Concurrent Separation Logic for Pipelined Parallelization , 2010, SAS.

[63]  Marieke Huisman,et al.  Reasoning about Java's Reentrant Locks , 2008, APLAS.