Katara: Synthesizing CRDTs with Verified Lifting
Shadaj Laddad, Conor Power, Mae Milano, Alvin Cheung, Joseph M., Hellerstein

TL;DR
Katara automates the synthesis of verified CRDTs from sequential data types, simplifying the creation of correct, scalable distributed data structures through formal verification and program synthesis techniques.
Contribution
Introduces Katara, a system that automatically synthesizes verified CRDTs from sequential implementations using formal correctness definitions and SMT-based verification.
Findings
Successfully synthesizes classic and novel CRDTs
Automatically verifies correctness, reducing manual proof effort
Handles a wide variety of scenarios with verified designs
Abstract
Conflict-free replicated data types (CRDTs) are a promising tool for designing scalable, coordination-free distributed systems. However, constructing correct CRDTs is difficult, posing a challenge for even seasoned developers. As a result, CRDT development is still largely the domain of academics, with new designs often awaiting peer review and a manual proof of correctness. In this paper, we present Katara, a program synthesis-based system that takes sequential data type implementations and automatically synthesizes verified CRDT designs from them. Key to this process is a new formal definition of CRDT correctness that combines a reference sequential type with a lightweight ordering constraint that resolves conflicts between non-commutative operations. Our process follows the tradition of work in verified lifting, including an encoding of correctness into SMT logic using synthesized…
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.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsDistributed systems and fault tolerance · Service-Oriented Architecture and Web Services · Model-Driven Software Engineering Techniques
