aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Herbelin2015-10-19 16:06:46 +0200
committerHugo Herbelin2015-10-19 16:08:17 +0200
commitc3967bd7a71df53a004478d23b072309f13f2ff5 (patch)
tree4af71612aa02f318d1d7b1a7d0ba2738bdb7966b
parent70d3ad33f6ba7a1c6b1fb93aadd5c05d7e9c03b8 (diff)
Turning anomaly into error for #4372 (weakness of inversion in the
presence of dependent types with only superficial dependency). See discussion at https://coq.inria.fr/bugs/show_bug.cgi?id=4372.
-rw-r--r--tactics/equality.ml9
1 files changed, 8 insertions, 1 deletions
diff --git a/tactics/equality.ml b/tactics/equality.ml
index 5ed9ac2ba0..bc711b81ef 100644
--- a/tactics/equality.ml
+++ b/tactics/equality.ml
@@ -1126,7 +1126,14 @@ let sig_clausal_form env sigma sort_of_ty siglen ty dflt =
applist(exist_term,[a;p_i_minus_1;w;tuple_tail])
else
error "Cannot solve a unification problem."
- | None -> anomaly (Pp.str "Not enough components to build the dependent tuple")
+ | None ->
+ (* This at least happens if what has been detected as a
+ dependency is not one; use an evasive error message;
+ even if the problem is upwards: unification should be
+ tried in the first place in make_iterated_tuple instead
+ of approximatively computing the free rels; then
+ unsolved evars would mean not binding rel *)
+ error "Cannot solve a unification problem."
in
let scf = sigrec_clausal_form siglen ty in
!evdref, Evarutil.nf_evar !evdref scf