From 5c7163d2ee1412fa5af523fbcd275518fc61fbde Mon Sep 17 00:00:00 2001 From: Pierre-Marie Pédrot Date: Sun, 30 Apr 2017 12:14:38 +0200 Subject: Fix bug #5501: Universe polymorphism breaks proof involving auto. A universe substitution was lacking as the normalized evar map was dropped. --- tactics/hints.ml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'tactics') 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."; -- cgit v1.2.3