aboutsummaryrefslogtreecommitdiffhomepage
path: root/engine/eConstr.ml
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2017-08-23 13:06:48 +0200
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2017-09-08 20:47:22 +0200
commit7760c6d58ca35b97b0893dc4911ab22c9a5a49ec (patch)
tree26698f58351feaa25af2aef9ed591d780e22c6b3 /engine/eConstr.ml
parenta9f8fa56e76aa557b1391cb9709cb893a4f602ce (diff)
Normalizing universes before performing term comparison.
This code was probably slightly wrong w.r.t. to a semantics defined as equivalent to first full-blown normalization followed by kernel term equality. Or at least, it was adding redundant constraints.
Diffstat (limited to 'engine/eConstr.ml')
-rw-r--r--engine/eConstr.ml6
1 files changed, 6 insertions, 0 deletions
diff --git a/engine/eConstr.ml b/engine/eConstr.ml
index 66b50fc25..a54c08297 100644
--- a/engine/eConstr.ml
+++ b/engine/eConstr.ml
@@ -573,14 +573,20 @@ let test_constr_universes sigma leq m n =
else
let cstrs = ref Constraints.empty in
let eq_universes strict l l' =
+ let l = EInstance.kind sigma (EInstance.make l) in
+ let l' = EInstance.kind sigma (EInstance.make l') in
cstrs := enforce_eq_instances_univs strict l l' !cstrs; true in
let eq_sorts s1 s2 =
+ let s1 = ESorts.kind sigma (ESorts.make s1) in
+ let s2 = ESorts.kind sigma (ESorts.make s2) in
if Sorts.equal s1 s2 then true
else (cstrs := Constraints.add
(Sorts.univ_of_sort s1,UEq,Sorts.univ_of_sort s2) !cstrs;
true)
in
let leq_sorts s1 s2 =
+ let s1 = ESorts.kind sigma (ESorts.make s1) in
+ let s2 = ESorts.kind sigma (ESorts.make s2) in
if Sorts.equal s1 s2 then true
else
(cstrs := Constraints.add