Skip to content
Snippets Groups Projects
Commit 8d5768cb authored by Ralf Jung's avatar Ralf Jung
Browse files

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
parents 6396d121 908a83a4
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment