aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pretyping/evarutil.ml6
1 files changed, 3 insertions, 3 deletions
diff --git a/pretyping/evarutil.ml b/pretyping/evarutil.ml
index 2e940583c6..a13c249081 100644
--- a/pretyping/evarutil.ml
+++ b/pretyping/evarutil.ml
@@ -420,7 +420,7 @@ let shrink_context env subst ty =
(* We merge the contexts (optimization) *)
let rec shrink_rel i subst rel_subst rev_rel_sign =
match subst,rev_rel_sign with
- | (id,c)::subst,_::rev_rel_sign when c = mkRel i ->
+ | (id,c)::subst,_::rev_rel_sign when isRel c && destRel c = i ->
shrink_rel (i-1) subst (mkVar id::rel_subst) rev_rel_sign
| _ ->
substl_rel_context rel_subst (List.rev rev_rel_sign),
@@ -428,7 +428,7 @@ let shrink_context env subst ty =
in
let rec shrink_named subst named_subst rev_named_sign =
match subst,rev_named_sign with
- | (id,c)::subst,(id',b',t')::rev_named_sign when c = mkVar id' ->
+ | (id,c)::subst,(id',b',t')::rev_named_sign when isVar c && destVar c = id' ->
shrink_named subst ((id',mkVar id)::named_subst) rev_named_sign
| _::_, [] ->
let nrel = List.length rel_sign in
@@ -928,7 +928,7 @@ let are_canonical_instances args1 args2 env =
let n2 = Array.length args2 in
let rec aux n = function
| (id,_,c)::sign
- when n < n1 && args1.(n) = mkVar id && args1.(n) = args2.(n) ->
+ when n < n1 && isVar args1.(n) && destVar args1.(n) = id && eq_constr args1.(n) args2.(n) ->
aux (n+1) sign
| [] ->
let rec aux2 n =