diff --git a/heap_lang/wp_tactics.v b/heap_lang/wp_tactics.v index b233e5ab1c3915903b8e969b4edce3713187483a..93645fda38f1dd26620af31c8c633a134eb312f5 100644 --- a/heap_lang/wp_tactics.v +++ b/heap_lang/wp_tactics.v @@ -119,12 +119,13 @@ Ltac wp_finish := Tactic Notation "wp_rec" ">" := u_löb ltac:((* Find the redex and apply wp_rec *) - idtac; (* FIXME WTF without this, it matches the goal before executing u_löb ?!? *) + idtac; (* <https://coq.inria.fr/bugs/show_bug.cgi?id=4584> *) lazymatch goal with | |- _ ⊑ wp ?E ?e ?Q => reshape_expr e ltac:(fun K e' => match eval cbv in e' with | App (Rec _ _ _) _ => - wp_bind K; etrans; [|eapply wp_rec; reflexivity]; wp_finish + wp_bind K; etrans; [|eapply wp_rec; reflexivity]; + wp_finish end) end). Tactic Notation "wp_rec" := wp_rec>; wp_strip_later.