aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Sozeau2014-09-15 12:10:57 +0200
committerMatthieu Sozeau2014-09-15 12:16:52 +0200
commit92682297f528c3570dc8449118d2f2cd2be7cc53 (patch)
treeb5e956779cea608343b5f1d5a07b9354a231a0c2
parentd4edff8e7a070151da6536a9674b15993cc273b5 (diff)
Fix bug #3610, allowing betaiotadelta reduction while unifying types of
records in unification.ml.
-rw-r--r--pretyping/unification.ml7
1 files changed, 5 insertions, 2 deletions
diff --git a/pretyping/unification.ml b/pretyping/unification.ml
index b07bf4f924..937d84972b 100644
--- a/pretyping/unification.ml
+++ b/pretyping/unification.ml
@@ -512,7 +512,7 @@ let eta_constructor_app env f l1 term =
| _ -> assert false)
| _ -> assert false
-let unify_0_with_initial_metas (sigma,ms,es as subst) conv_at_top env cv_pb flags m n =
+let rec unify_0_with_initial_metas (sigma,ms,es as subst) conv_at_top env cv_pb flags m n =
let rec unirec_rec (curenv,nb as curenvnb) pb b wt ((sigma,metasubst,evarsubst) as substn) curm curn =
let cM = Evarutil.whd_head_evar sigma curm
and cN = Evarutil.whd_head_evar sigma curn in
@@ -675,7 +675,10 @@ let unify_0_with_initial_metas (sigma,ms,es as subst) conv_at_top env cv_pb flag
try (* Force unification of the types to fill in parameters *)
let ty1 = get_type_of curenv ~lax:true sigma c1 in
let ty2 = get_type_of curenv ~lax:true sigma c2 in
- unirec_rec curenvnb CONV true false substn ty1 ty2
+ unify_0_with_initial_metas substn true env cv_pb
+ { flags with modulo_delta = full_transparent_state;
+ modulo_betaiota = true }
+ ty1 ty2
with RetypeError _ -> substn
with ex when precatchable_exception ex ->
unify_not_same_head curenvnb pb b wt substn cM cN