diff --git a/heap_lang/tests.v b/heap_lang/tests.v index 4bb9ca606519bf9ec7586238e642d6b1983ac895..24374006df8dfbc60abb7403e007bc874b23699c 100644 --- a/heap_lang/tests.v +++ b/heap_lang/tests.v @@ -62,7 +62,7 @@ Section LiftingTests. revert n1; apply löb_all_1=>n1. rewrite (comm uPred_and (■_)%I) assoc; apply const_elim_r=>?. (* first need to do the rec to get a later *) - wp_rec!. + wp_rec>. (* FIXME: ssr rewrite fails with "Error: _pattern_value_ is used in conclusion." *) rewrite ->(later_intro (Q _)); rewrite -!later_and; apply later_mono. wp_rec. wp_bin_op. wp_rec. wp_bin_op=> ?. @@ -74,7 +74,7 @@ Section LiftingTests. Lemma Pred_spec n E Q : ▷ Q (LitV (n - 1)) ⊑ wp E (Pred 'n)%L Q. Proof. - wp_rec!; apply later_mono; wp_bin_op=> ?. + wp_rec>; apply later_mono; wp_bin_op=> ?. - wp_if. wp_un_op. wp_bin_op. wp_focus (FindPred _ _); rewrite -FindPred_spec. apply and_intro; first auto with I omega. diff --git a/heap_lang/wp_tactics.v b/heap_lang/wp_tactics.v index 7d72cbe625f813f870fe36f2cc794b73a760f7b9..c88954726accc39ab818118b13d7235ed685ab5c 100644 --- a/heap_lang/wp_tactics.v +++ b/heap_lang/wp_tactics.v @@ -24,7 +24,7 @@ Tactic Notation "wp_value" := match goal with | |- _ ⊑ wp ?E ?e ?Q => etransitivity; [|eapply wp_value; reflexivity]; simpl end. -Tactic Notation "wp_rec" "!" := +Tactic Notation "wp_rec" ">" := match goal with | |- _ ⊑ wp ?E ?e ?Q => reshape_expr e ltac:(fun K e' => match eval cbv in e' with @@ -32,8 +32,8 @@ Tactic Notation "wp_rec" "!" := wp_bind K; etransitivity; [|eapply wp_rec; reflexivity]; wp_finish end) end. -Tactic Notation "wp_rec" := wp_rec!; wp_strip_later. -Tactic Notation "wp_bin_op" "!" := +Tactic Notation "wp_rec" := wp_rec>; wp_strip_later. +Tactic Notation "wp_bin_op" ">" := match goal with | |- _ ⊑ wp ?E ?e ?Q => reshape_expr e ltac:(fun K e' => match eval cbv in e' with @@ -45,8 +45,8 @@ Tactic Notation "wp_bin_op" "!" := end) end. -Tactic Notation "wp_bin_op" := wp_bin_op!; wp_strip_later. -Tactic Notation "wp_un_op" "!" := +Tactic Notation "wp_bin_op" := wp_bin_op>; wp_strip_later. +Tactic Notation "wp_un_op" ">" := match goal with | |- _ ⊑ wp ?E ?e ?Q => reshape_expr e ltac:(fun K e' => match eval cbv in e' with @@ -54,8 +54,8 @@ Tactic Notation "wp_un_op" "!" := wp_bind K; etransitivity; [|eapply wp_un_op; reflexivity]; wp_finish end) end. -Tactic Notation "wp_un_op" := wp_un_op!; wp_strip_later. -Tactic Notation "wp_if" "!" := +Tactic Notation "wp_un_op" := wp_un_op>; wp_strip_later. +Tactic Notation "wp_if" ">" := try wp_value; match goal with | |- _ ⊑ wp ?E ?e ?Q => reshape_expr e ltac:(fun K e' => @@ -65,7 +65,7 @@ Tactic Notation "wp_if" "!" := etransitivity; [|apply wp_if_true || apply wp_if_false]; wp_finish end) end. -Tactic Notation "wp_if" := wp_if!; wp_strip_later. +Tactic Notation "wp_if" := wp_if>; wp_strip_later. Tactic Notation "wp_focus" open_constr(efoc) := match goal with | |- _ ⊑ wp ?E ?e ?Q => reshape_expr e ltac:(fun K e' =>