aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2018-05-23 21:38:08 +0200
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2018-05-23 21:41:43 +0200
commit98814890466b2ee4b72235a2591ecd150bff08e7 (patch)
tree60d86d2d8c79153aa4e1dcabb5da180cabc87315
parentb74d9500e5943317f1baf4f36b3d979d40f6105f (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.ml2
-rw-r--r--test-suite/bugs/closed/7392.v9
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.