An axiomatic basis for computer programming

We present ribbon proofs, a diagrammatic system for proving program correctness based on separation logic. Ribbon proofs emphasise the structure of a proof, so are intelligible and pedagogical. Because they contain less redundancy than proof outlines, and allow each proof step to be checked locally, they may be more scalable. Where proof outlines are cumbersome to modify, ribbon proofs can be visually manoeuvred to yield proofs of variant programs. This paper introduces the ribbon proof system, proves its soundness and completeness, and outlines a prototype tool for validating the diagrams in Isabelle.

[1]  Robin Milner,et al.  The Space and Motion of Communicating Agents , 2009 .

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

[3]  Peter W. O'Hearn,et al.  Symbolic Execution with Separation Logic , 2005, APLAS.

[4]  R. HoareC.A. Proof of a program , 1971 .

[5]  Christian Urban,et al.  A Formalisation of the Myhill-Nerode Theorem Based on Regular Expressions , 2013, Journal of Automated Reasoning.

[6]  Peter W. O'Hearn,et al.  Resources, concurrency, and local reasoning , 2007 .

[7]  P. Selinger A Survey of Graphical Languages for Monoidal Categories , 2009, 0908.3347.

[8]  Hongseok Yang,et al.  Variables as Resource in Separation Logic , 2005, MFPS.

[9]  Mateja Jamnik,et al.  Diabelli: A Heterogeneous Proof System , 2012, IJCAR.

[10]  Richard Bornat,et al.  Variables as Resource in Hoare Logics , 2006, 21st Annual IEEE Symposium on Logic in Computer Science (LICS'06).

[11]  Georg Struth,et al.  On Locality and the Exchange Law for Concurrent Processes , 2011, CONCUR.

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

[13]  Hongseok Yang,et al.  Views: compositional reasoning for concurrent programs , 2013, POPL.

[14]  Frank Piessens,et al.  Verification of Unloadable Modules , 2011, FM.

[15]  Ross Street,et al.  Traced monoidal categories , 1996 .

[16]  Theo D'Hondt ECOOP 2010 - Object-Oriented Programming, 24th European Conference, Maribor, Slovenia, June 21-25, 2010. Proceedings , 2010, ECOOP.

[17]  Frank Piessens,et al.  VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java , 2011, NASA Formal Methods.

[18]  John Wickerson,et al.  Concurrent verification for sequential programs , 2013 .

[19]  Fred B. Schneider,et al.  On concurrent programming , 1997, CACM.

[20]  Wolfram Schulte,et al.  FM 2011: Formal Methods - 17th International Symposium on Formal Methods, Limerick, Ireland, June 20-24, 2011. Proceedings , 2011, FM.

[21]  Julian Michael Lewis Bean Ribbon Proofs - A Proof System for the Logic of Bunched Implications , 2013 .

[22]  Richard Bornat Barrier logic: a program logic for concurrency on PowerPC , 2012 .

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

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

[25]  Markus Wenzel,et al.  Asynchronous Proof Processing with Isabelle/Scala and Isabelle/jEdit , 2012, UITP.

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

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

[28]  Peter W. O'Hearn,et al.  The Logic of Bunched Implications , 1999, Bulletin of Symbolic Logic.

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

[30]  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.

[31]  Christian Urban,et al.  A Formalisation of the Myhill-Nerode Theorem Based on Regular Expressions (Proof Pearl) , 2011, ITP.

[32]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[33]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

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

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

[36]  Chung-Kil Hur,et al.  Separation Logic in the Presence of Garbage Collection , 2011, 2011 IEEE 26th Annual Symposium on Logic in Computer Science.

[37]  Adam Chlipala,et al.  Mostly-automated verification of low-level programs in computational separation logic , 2011, PLDI '11.

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

[39]  Philippa Gardner,et al.  Automatic Parallelization with Separation Logic , 2009, ESOP.

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

[41]  Larry Wos,et al.  What Is Automated Reasoning? , 1987, J. Autom. Reason..

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

[43]  Patrick Lincoln,et al.  Linear logic , 1992, SIGA.

[44]  Kim G. Larsen,et al.  Memory Efficient Data Structures for Explicit Verification of Timed Systems , 2014, NASA Formal Methods.

[45]  Jules Bean Ribbon Proofs , 2003, MFPS.

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

[47]  Mohammad Raza,et al.  Resource Reasoning and Labelled Separation Logic , 2010 .

[48]  Peter W. O'Hearn,et al.  Smallfoot: Modular Automatic Assertion Checking with Separation Logic , 2005, FMCO.

[49]  Richmond H. Thomason,et al.  Symbolic logic : an introduction , 1969 .