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