Skip to content
Snippets Groups Projects
Verified Commit e70f486e authored by Rodolphe Lepigre's avatar Rodolphe Lepigre
Browse files

Fix atomic snapshot example

parent 9fbc1013
No related branches found
No related tags found
1 merge request!15Fix atomic snapshot example
...@@ -9,6 +9,6 @@ build: [make "-j%{jobs}%"] ...@@ -9,6 +9,6 @@ build: [make "-j%{jobs}%"]
install: [make "install"] install: [make "install"]
remove: ["rm" "-rf" "%{lib}%/coq/user-contrib/iris_examples"] remove: ["rm" "-rf" "%{lib}%/coq/user-contrib/iris_examples"]
depends: [ depends: [
"coq-iris" { (= "dev.2019-03-14.3.2d1c8352") | (= "dev") } "coq-iris" { (= "dev.2019-03-26.0.0495f119") | (= "dev") }
"coq-autosubst" { = "dev.coq86" } "coq-autosubst" { = "dev.coq86" }
] ]
...@@ -365,10 +365,10 @@ Section atomic_snapshot. ...@@ -365,10 +365,10 @@ Section atomic_snapshot.
wp_load. eauto. wp_load. eauto.
Qed. Qed.
Definition val_to_bool (v : option val) : bool := Definition val_list_to_bool (v : list val) : bool :=
match v with match v with
| Some (LitV (LitBool b)) => b | LitV (LitBool b) :: _ => b
| _ => false | _ => false
end. end.
Lemma readPair_spec γ p : Lemma readPair_spec γ p :
...@@ -413,7 +413,7 @@ Section atomic_snapshot. ...@@ -413,7 +413,7 @@ Section atomic_snapshot.
iMod "AU" as (xv yv) "[Hpair Hclose]". iMod "AU" as (xv yv) "[Hpair Hclose]".
rewrite /pair_content. rewrite /pair_content.
iDestruct (excl_sync with "Hp⚫ Hpair") as %[= -> ->]. iDestruct (excl_sync with "Hp⚫ Hpair") as %[= -> ->].
destruct (val_to_bool proph_val) eqn:Hproph. destruct (val_list_to_bool proph_val) eqn:Hproph.
- (* prophecy value is predicting that timestamp has not changed, so we commit *) - (* prophecy value is predicting that timestamp has not changed, so we commit *)
(* committing AU *) (* committing AU *)
iMod ("Hclose" with "Hpair") as "HΦ". iMod ("Hclose" with "Hpair") as "HΦ".
...@@ -443,7 +443,7 @@ Section atomic_snapshot. ...@@ -443,7 +443,7 @@ Section atomic_snapshot.
} }
wp_load. wp_let. wp_proj. wp_let. wp_proj. wp_op. wp_load. wp_let. wp_proj. wp_let. wp_proj. wp_op.
case_bool_decide; wp_let; wp_apply (wp_resolve_proph with "Hpr"); case_bool_decide; wp_let; wp_apply (wp_resolve_proph with "Hpr");
iIntros (->); wp_seq; wp_if. iIntros (vs') "[Eq _]"; iDestruct "Eq" as %->; wp_seq; wp_if.
+ inversion H; subst; clear H. wp_pures. + inversion H; subst; clear H. wp_pures.
assert (v_x2 = v_y) as ->. { assert (v_x2 = v_y) as ->. {
assert (v_x2 <= v_y) as vneq. { assert (v_x2 <= v_y) as vneq. {
...@@ -479,7 +479,7 @@ Section atomic_snapshot. ...@@ -479,7 +479,7 @@ Section atomic_snapshot.
} }
wp_load. repeat (wp_let; wp_proj). wp_op. wp_let. wp_load. repeat (wp_let; wp_proj). wp_op. wp_let.
wp_apply (wp_resolve_proph with "Hpr"). wp_apply (wp_resolve_proph with "Hpr").
iIntros (Heq). subst. iIntros (vs') "[Heq _]"; iDestruct "Heq" as %->.
case_bool_decide. case_bool_decide.
+ inversion H; subst; clear H. inversion Hproph. + inversion H; subst; clear H. inversion Hproph.
+ wp_seq. wp_if. iApply "IH"; rewrite /is_pair; eauto. + wp_seq. wp_if. iApply "IH"; rewrite /is_pair; eauto.
......
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