A semantics for concurrent separation logic

We present a trace semantics for a language of parallel programs which share access to mutable data. We introduce a resource-sensitive logic for partial correctness, based on a recent proposal of O'Hearn, adapting separation logic to the concurrent setting. The logic allows proofs of parallel programs in which ''ownership'' of critical data, such as the right to access, update or deallocate a pointer, is transferred dynamically between concurrent processes. We prove soundness of the logic, using a novel ''local'' interpretation of traces which allows accurate reasoning about ownership. We show that every provable program is race-free.

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

[2]  Stephen D. Brookes,et al.  Idealized CSP: combining procedures with communicating processes , 1997, MFPS.

[3]  Amir Pnueli The Temporal Semantics of Concurrent Programs , 1981, Theor. Comput. Sci..

[4]  Lars Birkedal,et al.  Local reasoning about a copying garbage collector , 2004, POPL '04.

[5]  Per Brinch Hansen,et al.  Operating System Principles , 1973 .

[6]  Stephen D. Brookes Full Abstraction for a Shared-Variable Parallel Language , 1996, Inf. Comput..

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

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

[9]  A. W. Roscoe,et al.  Deadlock analysis in networks of communicating processes , 1989, Distributed Computing.

[10]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

[11]  Per Brinch Hansen,et al.  Concurrent Programming Concepts , 1973, CSUR.

[12]  C. A. R. Hoare,et al.  Parallel Programming: An Axiomatic Approach , 1975, Comput. Lang..

[13]  Edsger W. Dijkstra,et al.  The structure of the “THE”-multiprogramming system , 1968, CACM.

[14]  Cliff B. Jones,et al.  Specification and Design of (Parallel) Programs , 1983, IFIP Congress.

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

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

[17]  Cliff B. Jones,et al.  Developing methods for computer programs including a notion of interference , 1981 .

[18]  Gregory R. Andrews,et al.  Concurrent programming - principles and practice , 1991 .

[19]  Charles Antony Richard Hoare Towards a theory of parallel programming , 2002 .

[20]  Per Brinch Hansen,et al.  The programming language Concurrent Pascal , 1975, IEEE Transactions on Software Engineering.

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

[22]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[23]  Leslie Lamport,et al.  Proving Liveness Properties of Concurrent Programs , 1982, TOPL.

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

[25]  K. Mani Chandy,et al.  Proofs of Networks of Processes , 1981, IEEE Transactions on Software Engineering.

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

[27]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[28]  G. K. Smelser The structure of the eye , 1961 .

[29]  David Michael Ritchie Park,et al.  On the Semantics of Fair Parallelism , 1979, Abstract Software Specifications.

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

[31]  C. A. R. Hoare,et al.  A Structured Paging System , 1973, Comput. J..

[32]  Hugh C. Lauer Correctness in operating systems , 1973 .

[33]  Edsger W. Dijkstra,et al.  Cooperating sequential processes , 2002 .

[34]  Stephen D. Brookes The Essence of Parallel Algol , 2002, Inf. Comput..

[35]  Stephen D. Brookes,et al.  Traces, Pomsets, Fairness and Full Abstraction for Communicating Processes , 2002, CONCUR.

[36]  Edsger W. Dijkstra,et al.  Hierarchical ordering of sequential processes , 1971, Acta Informatica.

[37]  Per Brinch Hansen,et al.  Structured multiprogramming , 1972, CACM.

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