Impredicative Concurrent Abstract Predicates

We present impredicative concurrent abstract predicates --- iCAP --- a program logic for modular reasoning about concurrent, higher-order, reentrant, imperative code. Building on earlier work, iCAP uses protocols to reason about shared mutable state. A key novel feature of iCAP is the ability to define impredicative protocols; protocols that are parameterized on arbitrary predicates, including predicates that themselves refer to protocols. We demonstrate the utility of impredicative protocols through a series of examples, including the specification and verification, in the logic, of a spin-lock, a reentrant event loop, and a concurrent bag implemented using cooperation, against modular specifications.

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

[2]  Lars Birkedal,et al.  Joins: A Case Study in Modular Specification of a Concurrent Reentrant Higher-Order Library , 2013, ECOOP.

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

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

[5]  Andrew W. Appel,et al.  Oracle Semantics for Concurrent Separation Logic , 2008, ESOP.

[6]  Claudio V. Russo The Joins Concurrency Library , 2007, PADL.

[7]  Lars Birkedal,et al.  Charge! - A Framework for Higher-Order Separation Logic in Coq , 2012, ITP.

[8]  Andrew W. Appel,et al.  A very modal model of a modern, major, general type system , 2007, POPL '07.

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

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

[11]  Suresh Jagannathan,et al.  Modular reasoning for deterministic parallelism , 2011, POPL '11.

[12]  Susan S. Owicki,et al.  Axiomatic Proof Techniques for Parallel Programs , 1975, Outstanding Dissertations in the Computer Sciences.

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

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

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

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

[17]  D. M. Hutton,et al.  The Art of Multiprocessor Programming , 2008 .

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

[19]  Giuseppe Castagna ECOOP 2013 – Object-Oriented Programming , 2013, Lecture Notes in Computer Science.

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

[21]  Rasmus Ejlers Møgelberg,et al.  First Steps in Synthetic Guarded Domain Theory: Step-Indexing in the Topos of Trees , 2011, 2011 IEEE 26th Annual Symposium on Logic in Computer Science.

[22]  Lars Birkedal,et al.  The impact of higher-order state and control effects on local relational reasoning , 2012, J. Funct. Program..

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

[24]  Lars Birkedal,et al.  Modular Reasoning about Separation of Concurrent Data Structures , 2013, ESOP.

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

[26]  Lars Birkedal,et al.  Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency , 2013, ICFP.