aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--kernel/univ.ml12
-rw-r--r--kernel/univ.mli5
-rw-r--r--pretyping/evd.ml2
3 files changed, 13 insertions, 6 deletions
diff --git a/kernel/univ.ml b/kernel/univ.ml
index 86aebbce9..d3201bcb9 100644
--- a/kernel/univ.ml
+++ b/kernel/univ.ml
@@ -1879,11 +1879,17 @@ struct
let diff (univs, cst) (univs', cst') =
LSet.diff univs univs', Constraint.diff cst cst'
- let add_constraints (univs, cst) cst' =
+ let add_universe u (univs, cst) =
+ LSet.add u univs, cst
+
+ let add_constraints cst' (univs, cst) =
univs, Constraint.union cst cst'
- let add_universes univs ctx =
- union (of_instance univs) ctx
+ let add_instance inst (univs, cst) =
+ let v = Instance.to_array inst in
+ let fold accu u = LSet.add u accu in
+ let univs = Array.fold_left fold univs v in
+ (univs, cst)
let to_context (ctx, cst) =
(Instance.of_array (Array.of_list (LSet.elements ctx)), cst)
diff --git a/kernel/univ.mli b/kernel/univ.mli
index 655f87bb5..3779c055d 100644
--- a/kernel/univ.mli
+++ b/kernel/univ.mli
@@ -340,8 +340,9 @@ sig
val union : t -> t -> t
val diff : t -> t -> t
- val add_constraints : t -> constraints -> t
- val add_universes : Instance.t -> t -> t
+ val add_universe : universe_level -> t -> t
+ val add_constraints : constraints -> t -> t
+ val add_instance : Instance.t -> t -> t
(** Arbitrary choice of linear order of the variables *)
val to_context : t -> universe_context
diff --git a/pretyping/evd.ml b/pretyping/evd.ml
index c60fb2958..c5657cc52 100644
--- a/pretyping/evd.ml
+++ b/pretyping/evd.ml
@@ -989,7 +989,7 @@ let with_context_set rigid d (a, ctx) =
let uctx_new_univ_variable rigid name
({ uctx_local = ctx; uctx_univ_variables = uvars; uctx_univ_algebraic = avars} as uctx) =
let u = Universes.new_univ_level (Global.current_dirpath ()) in
- let ctx' = Univ.ContextSet.union ctx (Univ.ContextSet.singleton u) in
+ let ctx' = Univ.ContextSet.add_universe u ctx in
let uctx' =
match rigid with
| UnivRigid -> uctx