aboutsummaryrefslogtreecommitdiffhomepage
path: root/tactics
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2017-04-30 12:14:38 +0200
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2017-04-30 12:16:32 +0200
commit5c7163d2ee1412fa5af523fbcd275518fc61fbde (patch)
treea5399d44b5fd48528851fffeba6ea2008ce5cce2 /tactics
parent991b78fd9627ee76f1a1a39b8460bf361c6af53d (diff)
Fix bug #5501: Universe polymorphism breaks proof involving auto.
A universe substitution was lacking as the normalized evar map was dropped.
Diffstat (limited to 'tactics')
-rw-r--r--tactics/hints.ml7
1 files changed, 2 insertions, 5 deletions
diff --git a/tactics/hints.ml b/tactics/hints.ml
index bcc068d3d..50b811edb 100644
--- a/tactics/hints.ml
+++ b/tactics/hints.ml
@@ -1238,18 +1238,15 @@ let prepare_hint check (poly,local) env init (sigma,c) =
(* We re-abstract over uninstantiated evars and universes.
It is actually a bit stupid to generalize over evars since the first
thing make_resolves will do is to re-instantiate the products *)
- let sigma, subst = Evd.nf_univ_variables sigma in
+ let sigma, _ = Evd.nf_univ_variables sigma in
let c = Evarutil.nf_evar sigma c in
- let c = EConstr.Unsafe.to_constr c in
- let c = CVars.subst_univs_constr subst c in
- let c = EConstr.of_constr c in
let c = drop_extra_implicit_args sigma c in
let vars = ref (collect_vars sigma c) in
let subst = ref [] in
let rec find_next_evar c = match EConstr.kind sigma c with
| Evar (evk,args as ev) ->
(* We skip the test whether args is the identity or not *)
- let t = existential_type sigma ev in
+ let t = Evarutil.nf_evar sigma (existential_type sigma ev) in
let t = List.fold_right (fun (e,id) c -> replace_term sigma e id c) !subst t in
if not (closed0 sigma c) then
error "Hints with holes dependent on a bound variable not supported.";