An implementation of a distributed aggregation protocol, verified in Coq using the Verdi framework.
Definitions and proofs:
Coq 8.6Verdimath-comp(ssreflect,fingroup,algebra)StructTactInfSeqExtAAC_tacticsCheeriosverdi-cheerios
Executable code:
Integration testing of executable code:
Unit testing of unverified code:
First, make sure the PortAudio library is installed on the system; on Ubuntu and Debian systems, the package is called portaudio19-dev.
The recommended way to install the OCaml and Coq dependencies of Verdi Aggregation is via OPAM:
opam repo add coq-released https://coq.inria.fr/opam/released
opam repo add distributedcomponents-dev http://opam-dev.distributedcomponents.net
opam install coq-mathcomp-ssreflect coq-mathcomp-fingroup coq-mathcomp-algebra coq-aac-tactics \
verdi StructTact InfSeqExt cheerios verdi-cheerios verdi-runtime uuidm portaudio
Then, run ./configure in the root directory. This will check for the appropriate version of Coq and ensure all necessary dependencies can be located.
By default, the script assumes that Verdi, StructTact, InfSeqExt, Cheerios, and VerdiCheerios are installed in Coq's user-contrib directory, but this can be overridden by setting the Verdi_PATH, StructTact_PATH, InfSeqExt_PATH, Cheerios_PATH, and VerdiCheerios_PATH environment variables.
Finally, run make in the root directory.