Skip to content
Verifying concurrent crash-safe systems
Coq Python Haskell Shell Makefile CSS
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add Lily to commit emails Oct 9, 2019
artifact Add a note about the rename to the artifact Sep 3, 2019
etc timing: don't drop ident column Jun 30, 2019
external Bump Iris Sep 19, 2019
replicated-disk Bump stack version Sep 19, 2019
scripts Add skeleton for replicated disk extraction Aug 30, 2019
src typo Oct 7, 2019
vendor Upgrade record-update Sep 19, 2019
.gitmodules Switch to external transitions library Apr 26, 2019
LICENSE Update and conveniently anonymize license file Nov 16, 2018
Makefile Make clean target standard Sep 20, 2019 Add link to the SOSP paper PDF Sep 11, 2019
_CoqExt Add dependencies for iris/stdpp, delete broken files. Nov 22, 2018
libname Rename Armada to Perennial Sep 3, 2019 Rename Armada to Perennial Sep 3, 2019

Verifying concurrent, crash-safe systems

Build Status

Verifying refinement for systems with both concurrency and crash-safety requirements, including recovery procedures. For example, think of file systems, concurrent write-ahead logging like Linux's jbd2 layer, and persistent key-value stores like RocksDB.


We develop Perennial using Coq master. We also maintain compatibility with Coq v8.9.1, which is tested as part of continuous integration.

This project uses git submodules to include several dependencies. You can either use git clone --recurse-submodules or (after cloning) git submodule update --init --recursive to set that up.

We compile with, a Python wrapper around coqc to get timing information; due to limitations in the Makefile, this wrapper is required to pass the right flags to Coq even if not using the timing information. You'll need Python3 and the argparse library (pip3 install argparse) to run the wrapper.

To compile just run make with Coq on your $PATH.


Perennial is described in an upcoming SOSP paper, "Verifying concurrent, crash-safe systems with Perennial".

You can’t perform that action at this time.