On Verifying Causal Consistency
Ahmed Bouajjani, Constantin Enea, Rachid Guerraoui, Jad Hamza

TL;DR
This paper investigates the complexity of verifying causal consistency in distributed data structures, proving NP-completeness for single execution checks and undecidability for universal verification, with practical solutions for data-independent systems.
Contribution
It establishes the computational hardness of verifying causal consistency and introduces conditions under which these problems become tractable.
Findings
Checking a single execution's causal consistency is NP-complete.
Verifying all executions' causal consistency is undecidable.
Data independence allows circumventing negative results in verification.
Abstract
Causal consistency is one of the most adopted consistency criteria for distributed implementations of data structures. It ensures that operations are executed at all sites according to their causal precedence. We address the issue of verifying automatically whether the executions of an implementation of a data structure are causally consistent. We consider two problems: (1) checking whether one single execution is causally consistent, which is relevant for developing testing and bug finding algorithms, and (2) verifying whether all the executions of an implementation are causally consistent. We show that the first problem is NP-complete. This holds even for the read-write memory abstraction, which is a building block of many modern distributed systems. Indeed, such systems often store data in key-value stores, which are instances of the read-write memory abstraction. Moreover, we…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
