A Program Construction and Verification Tool for Separation Logic

An algebraic approach to the design of program construction and verification tools is applied to separation logic. The control-flow level is modelled by power series with convolution as separating conjunction. A generic construction lifts resource monoids to assertion and predicate transformer quantales. The data domain is captured by concrete store-heap models. These are linked to the separation algebra by soundness proofs. Verification conditions and transformation or refinement laws are derived by equational reasoning within the predicate transformer quantale. This separation of concerns makes an implementation in the Isabelle/HOL proof assistant simple and highly automatic. The resulting tool is itself correct by construction; it is explained on three simple examples.

[1]  M. Droste,et al.  Handbook of Weighted Automata , 2009 .

[2]  Frank Piessens,et al.  VeriFast for Java: A Tutorial , 2013, Aliasing in Object-Oriented Programming.

[3]  Georg Struth,et al.  Lightweight Program Construction and Verification Tools in Isabelle/HOL , 2014, SEFM.

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

[5]  Thomas Tuerk,et al.  A separation logic framework for HOL , 2011 .

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

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

[8]  J. Berstel,et al.  Les séries rationnelles et leurs langages , 1984 .

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

[10]  Peter W. O'Hearn,et al.  A Semantic Basis for Local Reasoning , 2002, FoSSaCS.

[11]  Viorel Preoteasa,et al.  Algebra of Monotonic Boolean Transformers , 2011, SBMF.

[12]  Clare E. Martin,et al.  An Algebraic Construction of Predicate Transformers , 1994, Sci. Comput. Program..

[13]  Georg Struth,et al.  Convolution, Separation and Concurrency , 2014, ArXiv.

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

[15]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

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

[17]  Tomás Vojnar,et al.  Byte-Precise Verification of Low-Level List Manipulation , 2013, SAS.

[18]  Stephan van Staden,et al.  Constructing the Views Framework , 2014, UTP.

[19]  Georg Struth,et al.  Algebraic Principles for Rely-Guarantee Style Concurrency Verification Tools , 2013, FM.

[20]  Matthew J. Parkinson,et al.  jStar: towards practical verification for java , 2008, OOPSLA.

[21]  Han-Hing Dang,et al.  Algebraic separation logic , 2011, J. Log. Algebraic Methods Program..

[22]  Adam Chlipala,et al.  Effective interactive proofs for higher-order imperative programs , 2009, ICFP.

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

[24]  Georg Struth,et al.  Hybrid process algebra , 2005, J. Log. Algebraic Methods Program..

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

[26]  Rafal Kolanski,et al.  Mechanised Separation Algebra , 2012, ITP.

[27]  Tobias Nipkow,et al.  Proving Pointer Programs in Higher-Order Logic , 2003, CADE.

[28]  Dexter Kozen On Hoare logic and Kleene algebra with tests , 2000, TOCL.

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

[30]  Georg Struth,et al.  Automating Algebraic Methods in Isabelle , 2011, ICFEM.

[31]  Han-Hing Dang,et al.  Transitive Separation Logic , 2012, RAMICS.

[32]  A. Blass,et al.  Partition Theorems for Spaces of Variable Words , 1994 .

[33]  J. Isbell,et al.  Reports of the Midwest Category Seminar I , 1967 .

[34]  David A. Naumann,et al.  Beyond Fun: Order and Membership in Polytypic Imperative Programming , 1998, MPC.

[35]  H.-H. Dang,et al.  Concurrency and local reasoning under reverse exchange , 2014, Sci. Comput. Program..

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

[37]  Georg Struth,et al.  Algebras of modal operators and partial correctness , 2006, Theor. Comput. Sci..

[38]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[39]  B. Day On closed categories of functors , 1970 .

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

[41]  Tjark Weber Towards Mechanized Program Verification with Separation Logic , 2004, CSL.