diff --git a/barrier/barrier.v b/barrier/barrier.v index 661c155b312aca878e45490f6b8c4480fc4fb36b..b9504e56045ea2d726043eb9c302af47cf3bc70d 100644 --- a/barrier/barrier.v +++ b/barrier/barrier.v @@ -284,7 +284,8 @@ Section proof. rewrite /recv /send. rewrite -(exist_intro γ) -(exist_intro P). rewrite -(exist_intro P) -(exist_intro i) -(exist_intro γ). (* This is even more annoying than usually, since rewrite sometimes unfolds stuff... *) - rewrite [barrier_ctx _ _ _]lock !assoc [(_ ★locked _)%I]comm !assoc -lock. + rewrite [barrier_ctx _ _ _]lock !assoc + [(_ ★ locked (barrier_ctx _ _ _))%I]comm !assoc -lock. rewrite -always_sep_dup. (* TODO: This is cancelling below a pvs. *) rewrite [barrier_ctx _ _ _]lock always_and_sep_l -!assoc assoc -lock. @@ -418,8 +419,8 @@ Section proof. rewrite -(waiting_split _ _ _ Q R1 R2); [|done..]. rewrite {1}[saved_prop_own i1 _]always_sep_dup. rewrite {1}[saved_prop_own i2 _]always_sep_dup. - cancel [saved_prop_own i1 R1; saved_prop_own i2 R2; l ↦ '0; - waiting P I; Q -★ R1 ★ R2; saved_prop_own i Q]%I. + ecancel [l ↦ _; saved_prop_own i1 _; saved_prop_own i2 _; waiting _ _; + _ -★ _; saved_prop_own i _]%I. apply wand_intro_l. rewrite !assoc. eapply pvs_wand_r. rewrite /recv. rewrite -(exist_intro γ) -(exist_intro P) -(exist_intro R1) -(exist_intro i1). rewrite -(exist_intro γ) -(exist_intro P) -(exist_intro R2) -(exist_intro i2). @@ -446,8 +447,8 @@ Section proof. rewrite -(ress_split _ _ _ Q R1 R2); [|done..]. rewrite {1}[saved_prop_own i1 _]always_sep_dup. rewrite {1}[saved_prop_own i2 _]always_sep_dup. - cancel [saved_prop_own i1 R1; saved_prop_own i2 R2; l ↦ '1; - Q -★ R1 ★ R2; saved_prop_own i Q; ress I]%I. + ecancel [l ↦ _; saved_prop_own i1 _; saved_prop_own i2 _; ress _; + _ -★ _; saved_prop_own i _]%I. apply wand_intro_l. rewrite !assoc. eapply pvs_wand_r. rewrite /recv. rewrite -(exist_intro γ) -(exist_intro P) -(exist_intro R1) -(exist_intro i1). rewrite -(exist_intro γ) -(exist_intro P) -(exist_intro R2) -(exist_intro i2).