Verifying correctness of persistent concurrent data structures: a sound and complete method
Authors:
Open Access
- 1 August 2021
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in Formal Aspects of Computing
- Vol. 33 (4-5) , 547-573
Abstract
Non-volatile memory (NVM), aka persistent memory, is a new memory paradigm that preserves its contents even after power loss. The expected ubiquity of NVM has stimulated interest in the design of persistent concurrent data structures, together with associated notions of correctness. In this paper, we present a formal proof technique for durable linearizability , which is a correctness criterion that extends linearizability to handle crashes and recovery in the context ofNVM.Our proofs are based on refinement of Input/Output automata (IOA) representations of concurrent data structures. To this end, we develop a generic procedure for transforming any standard sequential data structure into a durable specification and prove that this transformation is both sound and complete. Since the durable specification only exhibits durably linearizable behaviours, it serves as the abstract specification in our refinement proof. We exemplify our technique on a recently proposed persistentmemory queue that builds on Michael and Scott’s lock-free queue. To support the proofs, we describe an automated translation procedure from code to IOA and a thread-local proof technique for verifying correctness of invariants.Keywords
Funding Information
- Engineering and Physical Sciences Research Council (EP/R032351/1)
- Engineering and Physical Sciences Research Council (EP/R032556/1)
- Engineering and Physical Sciences Research Council (EP/R019045/2)
- Deutsche Forschungsgemeinschaft (WE 2290/12-1)
- Deutsche Forschungsgemeinschaft (RE 828/13-2)
This publication has 27 references indexed in Scilit:
- Using Crash Hoare logic for certifying the FSCQ file system2015
- A Sound and Complete Proof Technique for Linearizability of Concurrent Data StructuresACM Transactions on Computational Logic, 2014
- KIV: overview and VerifyThis competitionInternational Journal on Software Tools for Technology Transfer, 2014
- Verifying Linearisability with Potential Linearisation Points2011
- Principles of Transactional MemorySynthesis Lectures on Distributed Computing Theory, 2010
- A Unified Memory Model for PointersLecture Notes in Computer Science, 2005
- Formal Verification of a Practical Lock-Free Queue Algorithm2004
- Forward and Backward SimulationsInformation and Computation, 1995
- Linearizability: a correctness condition for concurrent objectsACM Transactions on Programming Languages and Systems, 1990
- Hierarchical correctness proofs for distributed algorithms1987