A Coq framework for implementing and formally verifying distributed systems with support for multiple fault models.
Verdi is a framework for formally verifying distributed systems implementations using the Coq proof assistant. It allows developers to write distributed algorithms and prove their correctness properties, such as safety and liveness, under various fault models. The framework includes verified system transformers that encapsulate common fault tolerance techniques, enabling proofs in idealized models to carry over to more realistic environments.
Researchers and engineers working on distributed systems who need strong correctness guarantees through formal verification, particularly those familiar with Coq and theorem proving.
Verdi provides a unified framework for both implementing and verifying distributed systems, with reusable verified components that reduce verification effort. Its support for multiple fault models and verified system transformers allows developers to build complex, fault-tolerant systems with proven correctness.
A framework for formally verifying distributed systems implementations in Coq
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Verdi enables proving safety and liveness properties in Coq, as demonstrated by examples like LockServ with verified mutual exclusion.
It supports verification across idealistic to realistic fault models, allowing proofs to transfer via verified system transformers, enhancing fault tolerance.
VSTs encapsulate techniques like sequence numbering and primary-backup replication, enabling proof reuse, as seen in LockServSeqNum and VarDPrimaryBackup.
Systems can be extracted to OCaml and linked with runtime libraries for real hardware execution, though this requires additional setup steps.
Installation involves multiple Coq packages and dependencies like InfSeqExt and StructTact, and manual building requires running `make` with Coq compatibility constraints.
Requires in-depth knowledge of Coq and theorem proving, making it inaccessible to developers without formal methods background.
Documentation is sparse, relying on external projects like Verdi LockServ for guidance, and the community is niche compared to mainstream distributed systems tools.