aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/names.ml6
-rw-r--r--kernel/names.mli3
2 files changed, 6 insertions, 3 deletions
diff --git a/kernel/names.ml b/kernel/names.ml
index c9a1aa2ae8..78d39b6a07 100644
--- a/kernel/names.ml
+++ b/kernel/names.ml
@@ -143,9 +143,6 @@ let add_mbid = Umap.add
let map_msid msid mp = add_msid msid mp empty_subst
let map_mbid mbid mp = add_msid mbid mp empty_subst
-let join subst =
- Umap.fold Umap.add subst
-
let list_contents sub =
let one_pair uid mp l =
(string_of_uid uid, string_of_mp mp)::l
@@ -176,6 +173,9 @@ let rec subst_mp sub mp = (* 's like subst *)
MPdot (mp1',l)
| _ -> mp
+let join subst1 subst2 =
+ let subst = Umap.map (subst_mp subst2) subst1 in
+ Umap.fold Umap.add subst2 subst
let rec occur_in_path uid = function
| MPself sid -> sid = uid
diff --git a/kernel/names.mli b/kernel/names.mli
index 2ecdd602d8..89c90fef1a 100644
--- a/kernel/names.mli
+++ b/kernel/names.mli
@@ -96,6 +96,9 @@ val add_mbid :
val map_msid : mod_self_id -> module_path -> substitution
val map_mbid : mod_bound_id -> module_path -> substitution
+(* sequential composition:
+ [substitute (join sub1 sub2) t = substitute sub2 (substitute sub1 t)]
+*)
val join : substitution -> substitution -> substitution
(*i debugging *)