aboutsummaryrefslogtreecommitdiff
path: root/pretyping
diff options
context:
space:
mode:
authorMatthieu Sozeau2014-09-01 15:59:34 +0200
committerMatthieu Sozeau2014-09-01 16:01:54 +0200
commita4d454beaafd030a5564a395d380748cf90e1b75 (patch)
treeca19efa9da4c6c811c9787789b16b21abe4b2cc5 /pretyping
parent14e6dc5800a28d49dcdb714b06c02fced7b9fdaf (diff)
In evarconv, do first-order unification of LetIn's properly, ensuring we compare bodies
of convertible types! Bug found by B. Ziliani.
Diffstat (limited to 'pretyping')
-rw-r--r--pretyping/evarconv.ml5
1 files changed, 3 insertions, 2 deletions
diff --git a/pretyping/evarconv.ml b/pretyping/evarconv.ml
index 627a954f9d..edd1080713 100644
--- a/pretyping/evarconv.ml
+++ b/pretyping/evarconv.ml
@@ -483,10 +483,11 @@ and evar_eqappr_x ?(rhs_is_already_stuck = false) ts env evd pbty
| MaybeFlexible (v1,sk1'), MaybeFlexible (v2,sk2') -> begin
match kind_of_term term1, kind_of_term term2 with
- | LetIn (na,b1,t1,c'1), LetIn (_,b2,_,c'2) ->
+ | LetIn (na,b1,t1,c'1), LetIn (_,b2,t2,c'2) ->
let f1 i =
ise_and i
- [(fun i -> evar_conv_x ts env i CONV b1 b2);
+ [(fun i -> evar_conv_x ts env i CONV t1 t2);
+ (fun i -> evar_conv_x ts env i CONV b1 b2);
(fun i ->
let b = nf_evar i b1 in
let t = nf_evar i t1 in