Compositional and Automated Verification of Distributed Systems

Loading...
Thumbnail Image

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

Citation

DOI