Reference. Grove: A Separation-Logic Library for Verifying Distributed Systems

Grove is a concurrent separation logic library for verifying distributed systems. Grove is the first to handle time-based leases, including their interaction with reconfiguration, crash recovery, thread-level concurrency, and unreliable networks. This paper uses Grove to verify several distributed system components written in Go, including vKV, a realistic distributed multi-threaded key-value store. vKV supports reconfiguration, primary/backup replication, and crash recovery, and uses leases to execute read-only requests on any replica. vKV achieves high performance (67–73% of Redis on a single core), scales with more cores and more backup replicas (achieving about 2× the throughput when going from 1 to 3 servers), and can safely execute reads while reconfiguring.

Cite

Cite as @sharmaGroveSeparationLogicLibrary2023 (helia, typst) · \cite{sharmaGroveSeparationLogicLibrary2023} (LaTeX)
BibTeX
bibtex · 16 lines
@inproceedings{sharmaGroveSeparationLogicLibrary2023,
 title = {Grove: A {{Separation-Logic Library}} for {{Verifying Distributed Systems}}},
 author = {Sharma, Upamanyu and Jung, Ralf and Tassarotti, Joseph and Kaashoek, Frans and Zeldovich, Nickolai},
 date = {2023-10-23},
 isbn = {9798400702297},
 doi = {10.1145/3600006.3613172},
 url = {https://dl.acm.org/doi/10.1145/3600006.3613172},
 urldate = {2024-01-08},
 booktitle = {Proceedings of the 29th {{Symposium}} on {{Operating Systems Principles}}},
 pages = {113--129},
 publisher = {ACM},
 langid = {english},
 eventtitle = {{{SOSP}} '23: 29th {{Symposium}} on {{Operating Systems Principles}}},
 location = {Koblenz Germany},
 shorttitle = {Grove}
}
hayagriva YAML (typst)
yaml · 28 lines
sharmaGroveSeparationLogicLibrary2023:
  type: article
  title:
    value: 'Grove: A {Separation-Logic Library} for {Verifying Distributed Systems}'
    short: Grove
  author:
  - Sharma, Upamanyu
  - Jung, Ralf
  - Tassarotti, Joseph
  - Kaashoek, Frans
  - Zeldovich, Nickolai
  date: 2023-10-23
  page-range: 113-129
  url:
    value: https://dl.acm.org/doi/10.1145/3600006.3613172
    date: 2024-01-08
  serial-number:
    doi: 10.1145/3600006.3613172
    isbn: '9798400702297'
  language: en-US
  parent:
  - type: proceedings
    title: Proceedings of the 29th {Symposium} on {Operating Systems Principles}
    publisher:
      name: ACM
      location: Koblenz Germany
  - type: conference
    title: '{SOSP} ''23: 29th {Symposium} on {Operating Systems Principles}'
Cited by (3)

Verifying Isolation Levels of Database Implementations for Free Using Separation Logic mathiasen-2026-verifying

Modern databases are highly concurrent and provide transactions as a mean of grouping several database operations into atomically applied units. Database vendors and software engineers use isolation levels to describe the consistency guarantees of transactions. The popular isolation levels give weak guarantees, with intricate semantics, to optimize performance of applications. The problem of assuring that database implementations actually implement the isolation level guarantees that application developers build their systems upon has received a great deal of attention from the testing community. But until now, there exists no method for formally verifying that a database implementation actually implements the isolation level that database vendors says it provides. In this paper, we present a method for verifying that a database implements an isolation level: we derive isolation levels directly, as formalized in transactional consistency models by the database community, from the structure of separation logic specifications. By doing so, we consider all program executions that a database and arbitrary clients of the database could produce. The result is a so-called free theorem meaning that any database implementation, whose operations are verified against a specific set of separation logic specifications, actually implements its isolation level. As all proofs in this paper are mechanized in the Rocq proof assistant and build upon a detailed semantic model of program execution, we believe this contribution raises the bar for the achievable robustness of databases.
arXiv

Reasoning about Weak Isolation Levels in Separation Logic alnormathiasen-2025-reasoning

Consistency guarantees among concurrently executing transactions in local- and distributed systems, commonly referred to as isolation levels, have been formalized in a number of models. Thus far, no model can reason about executable implementations of databases or local transaction libraries providing weak isolation levels. Weak isolation levels are characterized by being highly concurrent and, unlike their stronger counter part serializability, they are not equivalent to the consistency guarantees provided by a transaction library implemented using a global lock. Industrial-strength databases almost exclusively implement weak isolation levels as their default level. This calls for formalism as numerous bugs violating isolation have been detected in these databases. In this paper, we formalize three weak isolation levels in separation logic, namely read uncommitted, read committed, and snapshot isolation. We define modular separation logic specifications that are independent of the underlying transaction library implementation. Historically, isolation levels have been specified using examples of executions between concurrent transactions that are not allowed to occur, and we demonstrate that our specifications correctly prohibit such examples. To show that our specifications are realizable, we formally verify that an executable implementation of a key-value database running the multi-version concurrency control algorithm from the original snapshot isolation paper satisfies our specification of snapshot isolation. Moreover, we prove implications between the specifications—snapshot isolation implies read committed and read committed implies read uncommitted—and thus the verification effort of the database serves as proof that all of our specifications are realizable. All results are mechanized in the Rocq proof assistant on top of the Iris separation logic framework.
PDF · DOI · arXiv · pldb

Verus: A Practical Foundation for Systems Verification lattuada-2024-verus

DOI
Cites 48 works (8 here)
With notes (8)

Verifying Reliable Network Components in a Distributed Separation Logic with Dependent Separation Protocols gondelman-2023-verifying

We present a foundationally verified implementation of a reliable communication library for asynchronous client-server communication, and a stack of formally verified components on top thereof. Our library is implemented in an OCaml-like language on top of UDP and features characteristic traits of existing protocols, such as a simple handshaking protocol, bidirectional channels, and retransmission/acknowledgement mechanisms. We verify the library in the Aneris distributed separation logic using a novel proof pattern—dubbed the session escrow pattern—based on the existing escrow proof pattern and the so-called dependent separation protocols, which hitherto have only been used in a non-distributed concurrent setting. We demonstrate how our specification of the reliable communication library simplifies formal reasoning about applications, such as a remote procedure call library, which we in turn use to verify a lazily replicated key-value store with leader-followers and clients thereof. Our development is highly modular—each component is verified relative to specifications of the components it uses (not the implementation). All our results are formalized in the Coq proof assistant.
PDF · DOI · pldb

Armada: low-effort verification of high-performance concurrent programs lorch-2020-armada

PDF · DOI · pldb

Ivy: A Multi-modal Verification Tool for Distributed Algorithms mcmillanIvyMultimodalVerification2020

Ivy is a multi-modal verification tool for correct design and implementation of distributed protocols and algorithms, supporting modular specification, implementation and proof. Ivy supports proving safety and liveness properties of parameterized and infinite-state systems via three modes: deductive verification using an SMT solver, abstraction and model checking, and manual proofs using natural deduction. It supports light-weight formal methods via compositional specification-based testing and bounded model checking. Ivy can extract executable distributed programs by translation to efficient C++ code. It is designed to support decidable automated reasoning, to improve proof stability and to provide transparency in the case of proof failures. For this purpose, it presents concrete finite counterexamples, automatically audits proofs for decidability of verification conditions, and provides modular hiding of theories.
PDF · DOI · pldb

I4: Incremental inference of inductive invariants for verification of distributed protocols maI4IncrementalInference2019

Designing and implementing distributed systems correctly is a very challenging task. Recently, formal verification has been successfully used to prove the correctness of distributed systems. At the heart of formal verification lies a computerchecked proof with an inductive invariant. Finding this inductive invariant, however, is the most difficult part of the proof. Alas, current proof techniques require inductive invariants to be found manually—and painstakingly—by the developer. In this paper, we present a new approach, Incremental Inference of Inductive Invariants (I4), to automatically generate inductive invariants for distributed protocols. The essence of our idea is simple: the inductive invariant of a finite instance of the protocol can be used to infer a general inductive invariant for the infinite distributed protocol. In I4, we create a finite instance of the protocol; use a model checking tool to automatically derive the inductive invariant for this finite instance; and generalize this invariant to an inductive invariant for the infinite protocol. Our experiments show that I4 can prove the correctness of several distributed protocols like Chord, 2PC and Transaction Chains with little to no human effort.
DOI

Iris from the ground up: A modular foundation for higher-order concurrent separation logic jung_etal_iris_ground_up_2018

Iris is a framework for higher-order concurrent separation logic, which has been implemented in the Coq proof assistant and deployed very effectively in a wide variety of verification projects. Iris was designed with the express goal of simplifying and consolidating the foundations of modern separation logics, but it has evolved over time, and the design and semantic foundations of Iris itself have yet to be fully written down and explained together properly in one place. Here, we attempt to fill this gap, presenting a reasonably complete picture of the latest version of Iris (version 3.1), from first principles and in one coherent narrative.
PDF · DOI · pldb

Interactive proofs in higher-order concurrent separation logic krebbers-2017-interactive

PDF · DOI · pldb

IronFleet: proving practical distributed systems correct hawblitzel-2015-ironfleet

DOI

Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning jung-2015-iris

PDF · DOI · pldb
External (40)
sharmaGroveSeparationLogicLibrary2023 reference entries/refs/sharmaGroveSeparationLogicLibrary2023/sharmaGroveSeparationLogicLibrary2023.hel