Abstraction and Refinement for Local Reasoning

Local reasoning has become a well-established technique in program verification, which has been shown to be useful at many different levels of abstraction. In separation logic, we use a low-level abstraction that is close to how the machine sees the program state. In context logic, we work with high-level abstractions that are close to how the clients of modules see the program state. We apply program refinement to local reasoning, demonstrating that high-level local reasoning is sound for module implementations. We consider two approaches: one that preserves the high-level locality at the low level; and one that breaks the high-level 'fiction' of locality.

[1]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[2]  C. A. R. Hoare,et al.  Data Refinement Refined , 1986, ESOP.

[3]  Peter W. O'Hearn,et al.  Refinement and Separation Contexts , 2004, FSTTCS.

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

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

[6]  Philippa Gardner,et al.  Footprints in Local Reasoning , 2009, Log. Methods Comput. Sci..

[7]  John C. Mitchell,et al.  Abstract types have existential types , 1985, POPL.

[8]  Philippa Gardner,et al.  Small Specifications for Tree Update , 2009, WS-FM.

[9]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

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

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

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

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

[14]  Philippa Gardner,et al.  Local Hoare reasoning about DOM , 2008, PODS.

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

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

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

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

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

[20]  Peter W. O'Hearn,et al.  Blaming the client: on data refinement in the presence of pointers , 2009, Formal Aspects of Computing.

[21]  Kousha Etessami,et al.  Verifying Probabilistic Procedural Programs , 2004, FSTTCS.

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

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

[24]  Kai Engelhardt,et al.  Data Refinement: Model-Oriented Proof Methods and their Comparison , 1998 .

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

[26]  Robin Milner,et al.  A Type Discipline for Program Modules , 1987, TAPSOFT, Vol.2.

[27]  Robin Milner,et al.  Fully Abstract Models of Typed lambda-Calculi , 1977, Theor. Comput. Sci..