OpSets: Sequential Specifications for Replicated Datatypes (Extended Version)

05/11/2018
by   Martin Kleppmann, et al.
0

We introduce OpSets, an executable framework for specifying and reasoning about the semantics of replicated datatypes that provide eventual consistency in a distributed system, and for mechanically verifying algorithms that implement these datatypes. Our approach is simple but expressive, allowing us to succinctly specify a variety of abstract datatypes, including maps, sets, lists, text, graphs, trees, and registers. Our datatypes are also composable, enabling the construction of complex data structures. To demonstrate the utility of OpSets for analysing replication algorithms, we highlight an important correctness property for collaborative text editing that has traditionally been overlooked; algorithms that do not satisfy this property can exhibit awkward interleaving of text. We use OpSets to specify this correctness property and prove that although one existing replication algorithm satisfies this property, several other published algorithms do not. We also show how OpSets can be used to develop new replicated datatypes: we provide a simple specification of an atomic move operation for trees, an operation that had previously been thought to be impossible to implement without locking. We use the Isabelle/HOL proof assistant to formalise the OpSets approach and produce mechanised proofs of correctness of the main claims in this paper, thereby eliminating the ambiguity of previous informal approaches, and ruling out reasoning errors that could occur in handwritten proofs.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/30/2023

The Art of the Fugue: Minimizing Interleaving in Collaborative Text Editing

Existing algorithms for replicated lists, which are widely used in colla...
research
03/28/2022

Certified Mergeable Replicated Data Types

Replicated data types (RDTs) are data structures that permit concurrent ...
research
09/12/2019

Tasks in Modular Proofs of Concurrent Algorithms

Proving correctness of distributed or concurrent algorithms is a mind-ch...
research
03/15/2019

Replication-Aware Linearizability

Geo-distributed systems often replicate data at multiple locations to ac...
research
06/02/2023

Specifying and Verifying Persistent Libraries

We present a general framework for specifying and verifying persistent l...
research
03/08/2018

Redundancy in Distributed Proofs

Distributed proofs are mechanisms enabling the nodes of a network to col...
research
05/21/2020

Repairing and Mechanising the JavaScript Relaxed Memory Model

Modern JavaScript includes the SharedArrayBuffer feature, which provides...

Please sign up or login with your details

Forgot password? Click here to reset