Poling: SMT Aided Linearizability Proofs

Proofs of linearizability of concurrent data structures generally rely on identifying linearization points to establish a simulation argument between the implementation and the specification. However, for many linearizable data structure operations, the linearization points may not correspond to their internal static code locations; for example, they might reside in the code of another concurrent operation. To overcome this limitation, we identify important program patterns that expose such instances, and describe a tool (Poling) that automatically verifies the linearizability of implementations that conform to these patterns. Open image in new window

[1]  Nir Shavit,et al.  A scalable lock-free stack algorithm , 2010, J. Parallel Distributed Comput..

[2]  Eran Yahav,et al.  Deriving linearizable fine-grained concurrent objects , 2008, PLDI '08.

[3]  Viktor Vafeiadis,et al.  RGSep Action Inference , 2010, VMCAI.

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

[5]  Mark Moir,et al.  Formal Verification of a Practical Lock-Free Queue Algorithm , 2004, FORTE.

[6]  Peter W. O'Hearn,et al.  Abstraction for concurrent objects , 2009, Theor. Comput. Sci..

[7]  Maurice Herlihy,et al.  A Lazy Concurrent List-Based Set Algorithm , 2005, OPODIS.

[8]  Parosh Aziz Abdulla,et al.  Correction to: An integrated specification and verification technique for highly concurrent data structures , 2013, TACAS.

[9]  Nobuko Yoshida,et al.  Compositional Choreographies , 2013, CONCUR.

[10]  Eran Yahav,et al.  Verifying linearizability with hindsight , 2010, PODC.

[11]  Keir Fraser,et al.  A Practical Multi-word Compare-and-Swap Operation , 2002, DISC.

[12]  Thomas A. Henzinger,et al.  Automatic Linearizability Proofs of Concurrent Objects with Cooperating Updates , 2013, CAV.

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

[14]  John Derrick,et al.  How to Prove Algorithms Linearisable , 2012, CAV.

[15]  Maged M. Michael,et al.  Simple, fast, and practical non-blocking and blocking concurrent queue algorithms , 1996, PODC '96.

[16]  Peter W. O'Hearn,et al.  A Local Shape Analysis Based on Separation Logic , 2006, TACAS.

[17]  Thomas A. Henzinger,et al.  Aspect-Oriented Linearizability Proofs , 2013, CONCUR.

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

[19]  Viktor Vafeiadis Automatically Proving Linearizability , 2010, CAV.

[20]  Xinyu Feng,et al.  Modular verification of linearizability with non-fixed linearization points , 2013, PLDI 2013.

[21]  John Derrick,et al.  Verifying Linearisability with Potential Linearisation Points , 2011, FM.

[22]  Xiaokang Qiu,et al.  Natural proofs for structure, data, and separation , 2013, PLDI.

[23]  Eran Yahav,et al.  Comparison Under Abstraction for Verifying Linearizability , 2007, CAV.