Automated Parameterized Verification of CRDTs

  title={Automated Parameterized Verification of CRDTs},
  author={Kartik Nagar and Suresh Jagannathan},
Maintaining multiple replicas of data is crucial to achieving scalability, availability and low latency in distributed applications. Conflict-free Replicated Data Types (CRDTs) are important building blocks in this domain because they are designed to operate correctly under the myriad behaviors possible in a weakly-consistent distributed setting. Because of the possibility of concurrent updates to the same object at different replicas, and the absence of any ordering guarantees on these updates… 
Certified Mergeable Replicated Data Types
Peepul is developed as an F* library that discharges proof obligations to an SMT solver that verified efficient RDTs are extracted as OCaml code and used in Irmin, a Git-like distributed database.
Semantics, Specification, and Bounded Verification of Concurrent Libraries in Replicated Systems
This paper proposes appropriate semantics and specifications for highly-concurrent libraries in a weakly-consistent, replicated setting and develops a static analysis framework that can automatically detect correctness violations of library implementations parameterized with respect to the different consistency policies provided by the underlying system.
Verified Causal Broadcast with Liquid Haskell
This work implemented a standard causal broadcast protocol in Haskell and used the Liquid Haskell solver-aided verification system to express and mechanically prove that messages will never be delivered to a process in an order that violates causality, resulting in the first machine-checked proof of correctness of an executable causal broadcast implementation.
Abstraction for conflict-free replicated data types
The Abstraction theorem shows that ACC is equivalent to contextual refinement, linking the verification of CRDT implementations and clients together to derive functional correctness of whole programs.
Verifying replicated data types with typeclass refinements in Liquid Haskell
This paper presents an extension to Liquid Haskell that facilitates stating and semi-automatically proving properties of typeclasses, and implements a framework for programming distributed applications based on replicated data types (RDTs).


Conflict-Free Replicated Data Types
This paper formalises two popular approaches (state- and operation-based) and their relevant sufficient conditions and studies a number of useful CRDTs, such as sets with clean semantics, supporting both add and remove operations, and considers in depth the more complex Graph data type.
Safe replication through bounded concurrency verification
A novel programming framework for replicated data types (RDTs) equipped with an automatic (bounded) verification technique that discovers and fixes weak consistency anomalies and shows that in practice, proving bounded safety guarantees typically generalize to the unbounded case.
Verifying strong eventual consistency in distributed systems
This work develops a modular and reusable framework in the Isabelle/HOL interactive proof assistant for verifying the correctness of CRDT algorithms, and obtains the first machine-checked correctness theorems for three concrete CRDTs.
Hamsaz: replication coordination analysis and synthesis
This work presents novel coordination protocols that are parametric in terms of the analysis results and provide the well-coordination requirements and implemented a tool called Hamsaz that can automatically analyze the given object, instantiate the protocols and synthesize replicated objects.
A comprehensive study of Convergent and Commutative Replicated Data Types
This paper formalises asynchronous object replication, either state based or operation based, and provides a sufficient condition appropriate for each case, and describes several useful CRDTs, including container data types supporting bothadd and remove operations with clean semantics, and more complex types such as graphs, montonic DAGs, and sequences.
Formal Specification and Verification of CRDTs
A formal framework for the analysis and verification of CRDTs is developed within the interactive theorem prover Isabelle/HOL and it is shown how CRDT implementations can be expressed in this framework and present a general strategy for verifying CR DTs.
Don't settle for eventual: scalable causal consistency for wide-area storage with COPS
This paper identifies and defines a consistency model---causal consistency with convergent conflict handling, or causal+---that is the strongest achieved under these constraints and presents the design and implementation of COPS, a key-value store that delivers this consistency model across the wide-area.
Replicated data types: specification, verification, optimality
This work proposes a framework for specifying replicated data types using relations over events and verifying their implementations using replication-aware simulations, and shows how to specify consistency of replicated stores with multiple objects axiomatically, in analogy to prior work on weak memory models.
'Cause I'm strong enough: Reasoning about consistency choices in distributed systems
This work proposes the first proof rule for establishing that a particular choice of consistency guarantees for various operations on a replicated database is enough to ensure the preservation of a given data integrity invariant.
Automated Detection of Serializability Violations under Weak Consistency
This work combines a dependency graph-based characterization of serializability and the framework of abstract executions to develop a fully-automated approach for statically finding boundedserializability violations under any weak consistency model.