Prosa v0.6: The aRSA Edition

Prosa v0.6 is the first release of Prosa with RTAs for non-ideal processor types, based on a novel abstract Restricted Supply Analysis (aRSA, developed by Sergey Bozhko).

Download

Download the release here: prosa-v0.6.tar.bz2

Reading Prosa

The v0.6 release of Prosa uses CoqdocJS to obtain a prettier spec.

Alternatively, there is also a plain coqdoc version without proofs (which is better suited for printing to PDF).

Organization

The directory and module structure is organized as follows. First, the main parts, of which there are currently six.

Installing Prosa

With OPAM

Prosa can be installed using the OPAM package manager (>= 2.0).

opam repo add rocq-released https://rocq-prover.org/opam/released
opam update
opam install "rocq-prosa>=0.6"

If you plan on using POET, also install the rocq-prosa-refinements package.

opam install "rocq-prosa-refinements>=0.6"

From Sources with opam

OPAM can also be used to install a local checkout. For example, this is done in the CI setup (see .gitlab-ci.yaml).

opam repo add rocq-released https://rocq-prover.org/opam/released
opam update
opam pin add -n -y -k path rocq-prosa .
opam pin add -n -y -k path rocq-prosa-refinements .
opam install rocq-prosa rocq-prosa-refinements

Manually From Sources

Dependencies

Besides on Coq itself, Prosa depends on

  1. the ssreflect library of the Mathematical Components project,
  2. the Micromega support for the Mathematical Components library provided by mczify, and
  3. the The Coq Effective Algebra Library (optional, needed only for POET-related refinements).

Prosa v0.6 is known to work with Rocq 9.0.0, MathComp 2.4.0, mczify 1.5.0, and CoqEAL 2.1.0.

These dependencies can be easily installed with OPAM.

opam install -y rocq-mathcomp-ssreflect coq-mathcomp-zify coq-coqeal

Compiling Prosa

Assuming all dependencies are available (either via OPAM or compiled from source), compile Prosa simply via the provided Makefile:

make -j

To also compile the refinements needed by POET, run instead:

make -j all