Characterizing Progress Properties of Concurrent Objects via Contextual Refinements

Implementations of concurrent objects should guarantee linearizability and a progress property such as wait-freedom, lock-freedom, obstruction-freedom, starvation-freedom, or deadlock-freedom. Conventional informal or semi-formal definitions of these progress properties describe conditions under which a method call is guaranteed to complete, but it is unclear how these definitions can be utilized to formally verify system software in a layered and modular way. In this paper, we propose a unified framework based on contextual refinements to show exactly how progress properties affect the behaviors of client programs. We give formal operational definitions of all common progress properties and prove that for linearizable objects, each progress property is equivalent to a specific type of contextual refinement that preserves termination. The equivalence ensures that verification of such a contextual refinement for a concurrent object guarantees both linearizability and the corresponding progress property. Contextual refinement also enables us to verify safety and liveness properties of client programs at a high abstraction level by soundly replacing concrete method implementations with abstract atomic operations.

[1]  Maurice Herlihy,et al.  Obstruction-free synchronization: double-ended queues as an example , 2003, 23rd International Conference on Distributed Computing Systems, 2003. Proceedings..

[2]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[3]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[4]  Erez Petrank,et al.  Progress guarantee for parallel programs via bounded lock-freedom , 2009, PLDI '09.

[5]  Brijesh Dongol Formalising Progress Properties of Non-blocking Programs , 2006, ICFEM.

[6]  Hongseok Yang,et al.  Liveness-Preserving Atomicity Abstraction , 2011, ICALP.

[7]  Luca Bortolussi,et al.  Fluid Model Checking , 2012, CONCUR.

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

[9]  Maurice Herlihy,et al.  On the Nature of Progress , 2011, OPODIS.

[10]  Ajitha Rajan,et al.  Requirements Coverage as an Adequacy Measure for Conformance Testing , 2008, ICFEM.

[11]  Nobuko Yoshida,et al.  Intensional and Extensional Characterisation of Global Progress in the π-Calculus , 2012, CONCUR.

[12]  Maurice Herlihy,et al.  The art of multiprocessor programming , 2020, PODC '06.

[13]  Maurice Herlihy,et al.  Wait-free data structures in the asynchronous PRAM model , 1990, SPAA '90.

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

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

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

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