Compositional and Automated Verification of Distributed Systems
Loading...
Date
Authors
Wilcox, James Rasmussen
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
Distributed systems provide the backbone for modern computer systems,from cloud computing to air-traffic control. These complex systems
execute concurrently in unreliable environments and are expected to
tolerate various faults. Such environments are notoriously difficult
to adequately model with testing, but because of the critical
importance of these systems, it is essential that they are correct. It
thus makes sense to turn to more rigorous methods of ensuring
correctness, such as formal verification. Applying formal methods is
not a panacea, however, due to the complexity of the systems involved.
It is not uncommon, e.g., for a distributed file system to coordinate
thousands of machines using a combination of several different
protocols to ensure consistency, fault tolerance, and high
performance. Verifying such a system requires breaking the problem
down into individually verifiable parts, and leveraging automation
whenever possible. This dissertation describes programming languages techniques forverifying distributed systems compositionally and automatically.
First, we present Verdi, a framework for verifying distributed systems
that reasons about fault tolerance mechanisms as transformers between
fault models. Second, we detail DiSeL, a concurrent separation logic
for distributed systems whose key insight is to treat the network as
analogous to the heap in sequential programming. Finally, we report on
mypyvy, a domain-specific language for symbolic transition systems in
first-order logic, which supports a variety of automated reasoning
tools to analyze systems.
Description
Thesis (Ph.D.)--University of Washington, 2021
