From 7cf966c4b3f2f7ca88e087fecfb1889810da8c4b Mon Sep 17 00:00:00 2001 From: Robbert Krebbers <mail@robbertkrebbers.nl> Date: Thu, 25 Aug 2016 15:49:42 +0200 Subject: [PATCH] Make iIntoEntails work when the entails is hidden under a delta. --- proofmode/tactics.v | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/proofmode/tactics.v b/proofmode/tactics.v index ce4c4ca88..8d4dfdade 100644 --- a/proofmode/tactics.v +++ b/proofmode/tactics.v @@ -221,10 +221,12 @@ The tactic instantiates each dependent argument [x_i] with an evar and generates a goal [P] for non-dependent arguments [x_i : P]. *) Tactic Notation "iIntoEntails" open_constr(t) := let rec go t := - lazymatch type of t with + let tT := type of t in + lazymatch eval hnf in tT with | True ⊢ _ => apply t | _ ⊢ _ => apply (uPred.entails_wand _ _ t) - | _ ⊣⊢ _ => apply (uPred.equiv_iff _ _ t) + (* need to use the unfolded version of [⊣⊢] due to the hnf *) + | uPred_equiv' _ _ => apply (uPred.equiv_iff _ _ t) | ?P → ?Q => let H := fresh in assert P as H; [|go uconstr:(t H); clear H] | ∀ _ : ?T, _ => (* Put [T] inside an [id] to avoid TC inference from being invoked. *) -- GitLab