Skip to content

runtimeverification/vlsm

Repository files navigation

VLSM

Docker CI coqdoc

The theory of Validating Labelled State transition and Message production systems (VLSMs) enables describing and proving properties of distributed systems executing in the presence of faults. This project contains a formalization of this theory in the Coq proof assistant along with several examples of distributed protocols modeled and verified using VLSMs, including the ELMO (Equivocation-Limited Message Observer) family of message validating protocols and the Paxos protocol for crash-tolerant distributed consensus.

Meta

Building instructions

We recommend using opam to install project dependencies. Besides the basic building instructions below, we also provide a more detailed building guide, with special recommendations for Windows users.

To install the project dependencies via opam, do:

opam repo add coq-released https://coq.inria.fr/opam/released
opam install coq.8.18.0 coq-stdpp.1.9.0 coq-itauto coq-equations

To build the project when you have all dependencies installed, do:

git clone https://github.com/runtimeverification/vlsm.git
cd vlsm
make   # or make -j <number-of-cores-on-your-machine>

Documentation

File organization

Source documentation

VLSM tutorials

VLSM application: ELMO

ELMO (Equivocation-Limited Message Observer) is a family of protocols that demonstrates gradual refinement of a specification to make it validating for increasingly more complex constraints.

  • BaseELMO: basic definitions and results related to ELMO.
  • UMO: definition and properties of UMO (Unvalidating Message Observer) components and the UMO protocol.
  • MO: definition and properties of MO (Message Observer) components and the MO protocol.
  • ELMO: definition and properties of ELMO components and the ELMO protocol.

VLSM application: Paxos

Paxos is a protocol for achieving distributed consensus among network nodes in the presence of crash faults and message loss.