Tasks in Modular Proofs of Concurrent Algorithms
Abstract
Proving correctness of distributed or concurrent algorithms is a mind-challenging and complex process. Slight errors in the reasoning are difficult to find, calling for computer-checked proof systems. In order to build computer-checked proofs with usual tools, such as Coq or TLA+, having sequential specifications of all base objects that are used as building blocks in a given algorithm is a requisite to provide a modular proof built by composition. Alas, many concurrent objects do not have a sequential specification. This article describes a systematic method to transform any task, a specification method that captures concurrent one-shot distributed problems, into a sequential specification involving two calls, Set and Get. This transformation allows system designers to compose proofs, thus providing a framework for modular computer-checked proofs of algorithms designed using tasks and sequential objects as building blocks. The Moir&Anderson implementation of renaming using splitters is an iconic example of such algorithms designed by composition.
Cite
@article{arxiv.1909.05537,
title = {Tasks in Modular Proofs of Concurrent Algorithms},
author = {Armando Castañeda and Aurélie Hurault and Philippe Quéinnec and Matthieu Roy},
journal= {arXiv preprint arXiv:1909.05537},
year = {2019}
}
Comments
Long version of paper in 21st International Symposium on Stabilization, Safety, and Security of Distributed Systems (SSS 2019)