Skip to content
Snippets Groups Projects
Commit 59fbf603 authored by Hai Dang's avatar Hai Dang
Browse files

update README description

parent d4bad9e5
No related branches found
No related tags found
No related merge requests found
Pipeline #12658 passed
# LAMBDA-RUST COQ DEVELOPMENT
# RMRM (RustBelt Meets Relaxed Memory) COQ DEVELOPMENT
This is the Coq development accompanying lambda-Rust.
This is the Coq development accompanying RMRM.
## Prerequisites
This version is known to compile with:
- Coq 8.7.2 / 8.8.0
- A development version of [GPFSL](https://gitlab.mpi-sws.org/FP/gpfsl/)
- A development version of [GPFSL].
The easiest way to install the correct versions of the dependencies is through
opam (1.2.2 or newer). You will need the Coq and Iris opam repositories:
......@@ -31,14 +31,15 @@ CPU cores.
## Structure
* The folder [lang](theories/lang) contains the formalization of the lambda-Rust
core language, including the theorem showing that programs with data races get
stuck.
* The folder [lang](theories/lang) contains the formalization of abstract specifications for several data structures in the [ORC11] relaxed memory semantics. These data structures are the building blocks for the RMRM's version of Rust libraries.
* The repository [ORC11] formalizes the operational relaxed memory semantics employed by RMRM.
* The repository [GPFSL] formalizes the actual language of RMRM, as well as the logic for general verification of programs written that language. The language combines ORC11 with an CPS-style expression language (following that of lambda-Rust).
* The folder [lifetime](theories/lifetime) proves the rules of the lifetime
logic, including derived constructions like (non-)atomic persistent borrows.
* The subfolder [model](theories/lifetime/model) proves the core rules, which
are then sealed behind a module signature in
[lifetime.v](theories/lifetime/lifetime.v).
* The folder [logic](theories/logic) proves the surface-level rules of [GPFSL]. These rules are the combined version of [GPFSL]'s raw rules with the lifetime logic or the view-dependent invariants.
* The folder [typing](theories/typing) defines the domain of semantic types,
interpretations of all the judgments, as well as proofs of all typing rules.
* [type.v](theories/typing/type.v) contains the definition of a semantic type.
......@@ -93,7 +94,7 @@ borrows" in the Coq development.
| F-endlft | programs.v | type_endlft |
| F-call | function.v | type_call' |
Some of these lemmas are called `something'` because the version without the `'` is a derived, more speicalized form used together with our eauto-based `solve_typing` tactic. You can see this tactic in action in the [examples](theories/typing/examples) subfolder.
Some of these lemmas are called `something'` because the version without the `'` is a derived, more specialized form used together with our eauto-based `solve_typing` tactic. You can see this tactic in action in the [examples](theories/typing/examples) subfolder.
### Lifetime Logic Rules
......@@ -125,11 +126,14 @@ then sealed behind a module signature in
| LftL-bor-na | na_borrow.v | bor_na |
| LftL-na-acc | na_borrow.v | na_bor_acc |
## For Developers: How to update the Iris dependency
## For Developers: How to update the GPFSL dependency
* Do the change in Iris, push it.
* Do the change in [GPFSL], push it.
* Wait for CI to publish a new Iris version on the opam archive.
* In lambdaRust, change opam to depend on the new version.
* Run `make build-dep` (in lambdaRust) to install the new version of Iris.
* In RMRM, change opam to depend on the new version.
* Run `make build-dep` (in RMRM) to install the new version of Iris.
* You may have to do `make clean` as Coq will likely complain about .vo file
mismatches.
[GPFSL]: https://gitlab.mpi-sws.org/FP/gpfsl/
[ORC11]: https://gitlab.mpi-sws.org/FP/orc11/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment