diff --git a/theories/tree_borrows/README.md b/theories/tree_borrows/README.md index 45d7947c4e82291592818942729fa6686edff39a..21b6a45396333d9839fff62c2aac129a497bb121 100644 --- a/theories/tree_borrows/README.md +++ b/theories/tree_borrows/README.md @@ -23,9 +23,9 @@ In addition, `read_read_reorder/` provides proofs of simple reorderings (swapping adjacent operations in a sequential setting) directly against the operational semantics. It is subdivided into - * `refinement_def.v`: definition of a simple notion of program equivalence for a sequential setting. + * `equivalence_def.v`: definition of a simple notion of program equivalence for a sequential setting. * `low_level.v`: lemmas against the operational semantics. - * `refinement.v`: actual proof of bisimulation between two programs in which adjacent reads have been swapped. + * `read_reorder.v`: actual proof of equivalence between two programs in which adjacent reads have been swapped. (Example 18) ## Correspondence with Section 5 @@ -45,12 +45,12 @@ The only difference is that `f` and `g` have an extra argument in Coq, which cor ### Paragraph 4: Reordering Reads (Example 18) -This is proven in `read_read_reorder`, particularly in `refinement.v`. +This is proven in `read_read_reorder`, particularly in `read_reorder.v`. These proofs do not use the `simuliris` library, but instead they do a much simpler equivalence proof directly against the operational semantics. This is because these proofs only hold for a non-concurrent language. We suspect that they also hold in a concurrent setting, but this would require data race reasoning, and thus we have not proven that. -Specifically, the simple notion of "equivalence after a few steps" is in `refinement_def.v`. +Specifically, the simple notion of "equivalence after a few steps" is in `equivalence_def.v`. The proof that the two reads can be reordered is in `read_reorder.v`. The file `low_level.v` contains low-level lemmas used in `read_reorder.v`