diff options
| -rw-r--r-- | engine/eConstr.ml | 3 | ||||
| -rw-r--r-- | engine/eConstr.mli | 1 | ||||
| -rw-r--r-- | vernac/comHints.ml | 11 |
3 files changed, 8 insertions, 7 deletions
diff --git a/engine/eConstr.ml b/engine/eConstr.ml index bb2873b486..0c84dee572 100644 --- a/engine/eConstr.ml +++ b/engine/eConstr.ml @@ -628,6 +628,9 @@ let subst_var subst c = of_constr (Vars.subst_var subst (to_constr c)) let subst_univs_level_constr subst c = of_constr (Vars.subst_univs_level_constr subst (to_constr c)) +let subst_univs_constr subst c = + of_constr (UnivSubst.subst_univs_constr subst (to_constr c)) + (** Operations that dot NOT commute with evar-normalization *) let noccurn sigma n term = let rec occur_rec n c = match kind sigma c with diff --git a/engine/eConstr.mli b/engine/eConstr.mli index a018f4064f..882dfe2848 100644 --- a/engine/eConstr.mli +++ b/engine/eConstr.mli @@ -295,6 +295,7 @@ val closedn : Evd.evar_map -> int -> t -> bool val closed0 : Evd.evar_map -> t -> bool val subst_univs_level_constr : Univ.universe_level_subst -> t -> t +val subst_univs_constr : Univ.universe_subst -> t -> t val subst_of_rel_context_instance : rel_context -> t list -> t list diff --git a/vernac/comHints.ml b/vernac/comHints.ml index 0d32f28d79..f642411fa4 100644 --- a/vernac/comHints.ml +++ b/vernac/comHints.ml @@ -101,13 +101,10 @@ let interp_hints ~poly h = let () = warn_deprecated_hint_constr () in let env = Global.env () in let sigma = Evd.from_env env in - let sigma, c = Constrintern.interp_open_constr env sigma c in - let sigma = Typeclasses.resolve_typeclasses ~fail:false env sigma in - let sigma, _ = Evd.nf_univ_variables sigma in - let c = Evarutil.nf_evar sigma c in - let c = Termops.drop_extra_implicit_args sigma c in - let () = Pretyping.check_evars env sigma c in - let diff = Evd.universe_context_set sigma in + let c, uctx = Constrintern.interp_constr env sigma c in + let subst, uctx = UState.normalize_variables uctx in + let c = EConstr.Vars.subst_univs_constr subst c in + let diff = UState.context_set uctx in let c = if poly then (c, Some diff) else |
