From ec161a20a983a95ef1b06406cf218f77ac9a3375 Mon Sep 17 00:00:00 2001 From: Robbert Krebbers <mail@robbertkrebbers.nl> Date: Thu, 6 Jun 2019 14:46:28 +0200 Subject: [PATCH] Fix issue w.r.t. overly eager TC resolution introduced in !254. --- theories/proofmode/ltac_tactics.v | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/theories/proofmode/ltac_tactics.v b/theories/proofmode/ltac_tactics.v index 755952256..b349b8914 100644 --- a/theories/proofmode/ltac_tactics.v +++ b/theories/proofmode/ltac_tactics.v @@ -740,10 +740,11 @@ Tactic Notation "iPoseProofCoreLem" try iSolveTC. (** There is some hacky stuff going on here: because of Coq bug #6583, unresolved -type classes in the arguments `xs` are resolved at arbitrary moments. Tactics -like `apply`, `split` and `eexists` wrongly trigger type class search to resolve -these holes. To avoid TC being triggered too eagerly, this tactic uses `refine` -at most places instead of `apply`. *) +type classes in e.g. the arguments [xs] of [iSpecializeArgs_go] are resolved at +arbitrary moments. That is because tactics like [apply], [split] and [eexists] +wrongly trigger type class search. To avoid TC being triggered too eagerly, the +tactics below use [notypeclasses refine] instead of [apply], [split] and +[eexists]. *) Local Ltac iSpecializeArgs_go H xs := lazymatch xs with | hnil => idtac @@ -866,7 +867,7 @@ Ltac iSpecializePat_go H1 pats := let Hs' := iMissingHyps Hs' in fail "iSpecialize: hypotheses" Hs' "not found" | _ => - split; + notypeclasses refine (conj _ _); [iFrame Hs_frame; solve_done d (*goal*) |iSpecializePat_go H1 pats] end] -- GitLab