diff options
author | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2018-05-23 21:38:08 +0200 |
---|---|---|
committer | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2018-05-23 21:41:43 +0200 |
commit | 98814890466b2ee4b72235a2591ecd150bff08e7 (patch) | |
tree | 60d86d2d8c79153aa4e1dcabb5da180cabc87315 | |
parent | b74d9500e5943317f1baf4f36b3d979d40f6105f (diff) |
Fix #7586: Anomaly "Uncaught exception Not_found".
The old unification engine was using the unfiltered environment when a
context had been cleared, leading to an ill-typed goal.
-rw-r--r-- | pretyping/unification.ml | 2 | ||||
-rw-r--r-- | test-suite/bugs/closed/7392.v | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/pretyping/unification.ml b/pretyping/unification.ml index 62bee5a36..b9678fa10 100644 --- a/pretyping/unification.ml +++ b/pretyping/unification.ml @@ -1391,7 +1391,7 @@ let w_merge env with_types flags (evd,metas,evars : subst0) = and mimick_undefined_evar evd flags hdc nargs sp = let ev = Evd.find_undefined evd sp in - let sp_env = Global.env_of_context ev.evar_hyps in + let sp_env = Global.env_of_context (evar_filtered_hyps ev) in let (evd', c) = applyHead sp_env evd nargs hdc in let (evd'',mc,ec) = unify_0 sp_env evd' CUMUL flags diff --git a/test-suite/bugs/closed/7392.v b/test-suite/bugs/closed/7392.v new file mode 100644 index 000000000..cf465c658 --- /dev/null +++ b/test-suite/bugs/closed/7392.v @@ -0,0 +1,9 @@ +Inductive R : nat -> Prop := ER : forall n, R n -> R (S n). + +Goal (forall (n : nat), R n -> False) -> True -> False. +Proof. +intros H0 H1. +eapply H0. +clear H1. +apply ER. +simpl. |