diff --git a/barrier/lifting.v b/barrier/lifting.v index 0e0dd24fc8130381614cb1a04a3aba34d1b5fe70..6f831b50d5dee2948c25c90a68f2b0553e89b36e 100644 --- a/barrier/lifting.v +++ b/barrier/lifting.v @@ -164,11 +164,9 @@ Proof. rewrite right_id. done. Qed. -Lemma wp_rec' E e v P Q : - P ⊑ wp (Σ:=Σ) E (e.[Rec e, v2e v /]) Q → - ▷P ⊑ wp (Σ:=Σ) E (App (Rec e) (v2e v)) Q. +Lemma wp_rec' E e v Q : + ▷wp (Σ:=Σ) E (e.[Rec e, v2e v /]) Q ⊑ wp (Σ:=Σ) E (App (Rec e) (v2e v)) Q. Proof. - intros HP. etransitivity; last eapply wp_lift_pure_step with (φ := λ e', e' = e.[Rec e, v2e v /]); last first. - intros ? ? ? ? Hstep. inversion_clear Hstep. done. @@ -178,11 +176,10 @@ Proof. apply const_elim_l=>->. done. Qed. -Lemma wp_lam E e v P Q : - P ⊑ wp (Σ:=Σ) E (e.[v2e v/]) Q → - ▷P ⊑ wp (Σ:=Σ) E (App (Lam e) (v2e v)) Q. +Lemma wp_lam E e v Q : + ▷wp (Σ:=Σ) E (e.[v2e v/]) Q ⊑ wp (Σ:=Σ) E (App (Lam e) (v2e v)) Q. Proof. - intros HP. rewrite -wp_rec'; first (intros; apply later_mono; eassumption). + rewrite -wp_rec'. (* RJ: This pulls in functional extensionality. If that bothers us, we have to talk to the Autosubst guys. *) by asimpl. diff --git a/barrier/tests.v b/barrier/tests.v index ee8aeeffff233b346bc2b46e87dadb430f846773..2981f323537e5c937cbabc63312dba9707cf3af1 100644 --- a/barrier/tests.v +++ b/barrier/tests.v @@ -40,7 +40,7 @@ Module LiftingTests. rewrite -(wp_bind _ _ (LetCtx EmptyCtx e2)). rewrite -wp_mono. { eapply wp_alloc; done. } move=>v; apply exist_elim=>l. apply const_elim_l; move=>[-> _] {v}. - rewrite (later_intro (ownP _)); apply wp_lam. asimpl. + rewrite -wp_lam -later_intro. asimpl. rewrite -(wp_bind _ _ (SeqCtx (StoreRCtx (LocV _) (PlusLCtx EmptyCtx _)) (Load (Loc _)))). rewrite -wp_mono. @@ -52,7 +52,7 @@ Module LiftingTests. rewrite -wp_mono. { eapply wp_store; first reflexivity. apply: lookup_insert. } move=>v; apply const_elim_l; move=>-> {v}. - rewrite (later_intro (ownP _)); apply wp_lam. asimpl. + rewrite -wp_lam -later_intro. asimpl. rewrite -wp_mono. { eapply wp_load. apply: lookup_insert. } move=>v; apply const_elim_l; move=>-> {v}.