lang
- The definition of the language.lang/syntax.v
- Syntax of the language.lang/memory.v
- Semantics of the memory subsystem.lang/lang.v
- Semantics of the language.
algebra
- Resource algebras.algebra/view.v
- The resource algebra of views. Used pervasively.
base
- The low-level program logic. The instantiation of the Iris and Perennial program logic, the base post crash modality, etc.base/adequacy.v
- The adequacy result for the recovery weakest precondition of the base logic.base/primitive_laws.v
- Contains, among other things, the state interpretation used in the base logic.
high
- The high-level logic. The definition ofdprop
,wp
, etc.high/dprop.v
- Defines the domain of propositions dProp.high/resources
- Contains some of the resource algebras/CAMERAs used inhigh/recovery_weakestpre.v
- The definition of the recovery weakest precondition in the high-level logic as well as the proof of the idempotence rule.high/weakestpre_na.v
- WP lemmas about non-atomic location.high/weakestpre_at.v
- WP lemmas about atomic location.
extra
.v - Auxiliary definitions and lemmas that are not specific to the logic.examples
- Contains examples.
The rules in Figure 5.
Rule | Coq |
---|---|
lb-knowledge | store_lb_persistent , flush_lb_persistent , persist_lb_persistent |
lb-persistent-flush-store | persist_lb_to_flush_lb and flush_lb_to_store_lb |
obj-noflush-nobuffer | buffer_free_objective and flush_free_objective |
mapsto-store-lb | mapsto_na_store_lb and mapsto_at_store_lb |
mapsto-lb-pers | mapsto_na_persist_lb |
mapsto-na-store-lb | mapsto_na_store_lb_incl |
post-fence-no-flush | post_fence_no_flush |
pfs-pf | post_fenc_sync_post_fence |
rec-in-if-rec | crashed_in_if_rec |
PC-na-mapsto | post_crash_mapsto_na |
PC-at-mapsto | post_crash_mapsto_at |
PC-invariant | post_crash_know_protocol |
PC-PCF | post_crash_flush_post_crash |
PC-persist-lb | post_crash_persist_lb |
PCF-flush-lb | post_crash_flush_flush_lb |
rec-in-agree | crashed_in_agree |
The rules in Figure 6.
Rule | Coq |
---|---|
Ht-flush | wp_flush_lb |
Ht-fence-sync | wp_fence_sync |
Ht-fence | wp_fence and wp_fence_prop |
Ht-na-alloc | wp_alloc_na |
Ht-at-alloc | wp_alloc_at |
Ht-na-read | wp_load_na |
Ht-na-write | wp_store_na |
Ht-at-read | wp_load_at and wp_load_at_simple |
Ht-at-write | wp_store_at |
The main
branch is currently developed using Coq version 8.17.1.
The project uses submodules. To clone it and the associated submodules use the following command:
git submodule update --init --recursive
The dependencies are included as git submodules.
The following git command updates all the dependencies (the option --recursive
may be necessary as well but it seems to not be the case):
git submodule update --remote --merge