Merge branch 'uncurried-specs' into 'master'
Simpler syncer specs This simplifies the syncer specs. The sequential syncer only is slightly improved, by changing ``` Definition synced R (f' f: val) := (□ ∀ P Q (x: val), ({{ R ★ P x }} f x {{ v, R ★ Q x v }}) → ({{ P x }} f' x {{ v, Q x v }}))%I. ``` such that `P`, `Q` don't factor in a dependency on `x` any more. Since all three are quantified at the same time, the two specs are equivalent -- and the one where `P` is not a predicate and `Q` is exactly the postcondition is arguably simpler: ``` Definition synced R (f f': val) := (□ ∀ P Q (x: val), ({{ R ★ P }} f x {{ v, R ★ Q v }}) → ({{ P }} f' x {{ Q }}))%I. ``` For the atomic spec, the changes are deeper. The currying on some location `l` is entirely removed. `is_atomic_syncer` better mirrors `is_syncer` from the sequential version. And finally, we use "original" atomic triples and not some modified version thereof (so `atomic_triple_base` is killed). TODO: Fix `atomic_pcas.v`, it relied on the location currying done by `atomic_sync.v`. However, I don't entirely grok that file. @zhangz could you give that a look? See merge request !1
Showing
- IRIS_VERSION 1 addition, 1 deletionIRIS_VERSION
- atomic.v 7 additions, 13 deletionsatomic.v
- atomic_incr.v 7 additions, 7 deletionsatomic_incr.v
- atomic_pcas.v 5 additions, 4 deletionsatomic_pcas.v
- atomic_sync.v 41 additions, 51 deletionsatomic_sync.v
- flat.v 19 additions, 17 deletionsflat.v
- peritem.v 5 additions, 5 deletionsperitem.v
- simple_sync.v 7 additions, 8 deletionssimple_sync.v
- sync.v 14 additions, 7 deletionssync.v
- treiber.v 21 additions, 21 deletionstreiber.v
Loading
Please register or sign in to comment