This repository contains the Coq development of Simuliris (paper presented at POPL22: https://iris-project.org/pdfs/2022-popl-simuliris.pdf).
## Setup
This project is known to build with [Coq](https://coq.inria.fr/) 8.18.0.
It depends on recent development versions of [std++](https://gitlab.mpi-sws.org/iris/stdpp) and [Iris](https://gitlab.mpi-sws.org/iris/iris), as well as [coq-equations](https://github.com/mattam82/Coq-Equations).
## Prerequisites
This version is known to compile with:
- Coq 8.18.0
- A development version of [Iris](https://gitlab.mpi-sws.org/iris/iris)
- A recent version of [Coq-Equations](https://github.com/mattam82/Coq-Equations)
## Building from source
We recommend using [opam](https://opam.ocaml.org/)(version >= 2.0, tested on 2.0.8) for the installation.
When building from source, we recommend to use opam (2.0.0 or newer) for
installing the dependencies. This requires the following two repositories:
Please execute the following instructions in the folder containing this README, replacing `N` with the number of jobs you'd like to use for compilation.
Once you got opam set up, run `make build-dep` to install the right versions
of the dependencies.
## Structure
The project follows the following structure below the `theories` folder:
-`logic` and `base_logic` contain libraries for defining fixpoints as well as general ghost state constructions.
-`simulation` contains the language-generic parts of the framework, in particular the definition of the simulation relation and the general adequacy proof.
...
...
@@ -64,9 +67,11 @@ The project follows the following structure below the `theories` folder:
## Theorems, definitions, and examples referenced in the paper
We list the relevant theorems and definitions mentioned in the paper by section.
@@ -153,5 +163,6 @@ The optimizations ported and extended to concurrency from the original Stacked B
*`theories/stacked_borrows/examples/opt3_down.v`
### Section 8
As mentioned in the related work section, we have verified the reorderings and eliminations by [Ševčík, 2011]. They can be found in file `theories/simulang/na_inv/examples/program_transformations_in_weak_memory_models.v`.
For further information on this, we refer to Section 5 of the technical appendix.