Abstract E ects and Concurrency

We describe a denotational semantics for an abstract e ect system for a higher-order, shared-variable concurrent programming language. We prove the soundness of a number of general e ectbased program equivalences, including a parallelization equation that specifies su cient conditions for replacing sequential composition with parallel composition. We also exploit the structure given by e ect annotations and abstract locations to show the soundness of some operations on fine-grained concurrent data structures, such as Michael-Scott queues, that allow concurrent access to di erent parts of mutable data structures. Our semantics is based on refining a trace-based semantics for first-order programs due to Brookes. By moving from concrete to

[1]  Xinyu Feng,et al.  A rely-guarantee-based simulation for verifying concurrent program transformations , 2012, POPL '12.

[2]  Martín Abadi,et al.  The existence of refinement mappings , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[3]  Gordon D. Plotkin,et al.  The category-theoretic solution of recursive domain equations , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[4]  Lars Birkedal,et al.  From region inference to von Neumann machines via region representation inference , 1996, POPL '96.

[5]  Martin Hofmann,et al.  Reading, Writing and Relations , 2006, APLAS.

[6]  Lars Birkedal,et al.  A kripke logical relation for effect-based program transformations , 2011, ICFP '11.

[7]  Nancy A. Lynch,et al.  Forward and Backward Simulations, II: Timing-Based Systems , 1996, Inf. Comput..

[8]  Nick Benton,et al.  Compiling standard ML to Java bytecodes , 1998, ICFP '98.

[9]  Martin Hofmann,et al.  Abstract effects and proof-relevant logical relations , 2014, POPL.

[10]  Martin Hofmann,et al.  Relational semantics for effect-based program transformations: higher-order store , 2009, PPDP '09.

[11]  David Sands,et al.  Flow Locks: Towards a Core Calculus for Dynamic Flow Policies , 2006, ESOP.

[12]  Maged M. Michael,et al.  Nonblocking Algorithms and Preemption-Safe Locking on Multiprogrammed Shared Memory Multiprocessors , 1998, J. Parallel Distributed Comput..

[13]  Derek Dreyer,et al.  State-dependent representation independence , 2009, POPL '09.

[14]  Cormac Flanagan,et al.  A type and effect system for atomicity , 2003, PLDI.

[15]  Nick Benton,et al.  Semantics of an effect analysis for exceptions , 2007, TLDI '07.

[16]  David K. Gifford,et al.  Integrating functional and imperative programming , 1986, LFP '86.

[17]  Ohad Kammar,et al.  Algebraic foundations for effect-dependent optimisations , 2012, POPL '12.

[18]  Cliff B. Jones,et al.  A Structural Proof of the Soundness of Rely/guarantee Rules , 2007, J. Log. Comput..

[19]  Aaron Turon,et al.  A separation logic for refining concurrent objects , 2011, POPL '11.

[20]  Martín Abadi,et al.  Types for safe locking: Static race detection for Java , 2006, TOPL.

[21]  Rocco De Nicola,et al.  Testing Equivalence for Processes , 1983, ICALP.

[22]  Lars Birkedal,et al.  A Concurrent Logical Relation , 2012, CSL.

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

[24]  Samson Abramsky,et al.  Domain theory , 1995, LICS 1995.

[25]  Luca Cardelli,et al.  Subtyping recursive types , 1993 .

[26]  François Pessaux,et al.  Type-based analysis of uncaught exceptions , 1999, POPL '99.

[27]  Gordon D. Plotkin,et al.  A Powerdomain Construction , 1976, SIAM J. Comput..

[28]  Flemming Nielson,et al.  Type and effect systems - behaviours for concurrency , 1999 .

[29]  Lars Birkedal,et al.  Logical relations for fine-grained concurrency , 2013, POPL.

[30]  Nancy A. Lynch,et al.  Forward and backward simulations, part II: timing-based systems , 1993 .