aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel/esubst.mli
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2018-05-22 08:58:53 +0200
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2018-06-17 11:23:16 +0200
commit9953fc3c125d0bdd39e3bd5801040f406f2e708f (patch)
tree11271e6cf966a915541f0fe7a33552e0ce3e6fa9 /kernel/esubst.mli
parentdfbfa6abc74199d88747430bdfc78f6ebda09dcb (diff)
Faster and cleaner fconstr-to-constr conversion function.
We untangle the implementation in several ways. - No higher-order self argument function as there is only one caller. - Compute composition of lifts + substitution on terms using a dedicated function instead of mk_clos followed by to_constr. - Take more advantage of identity substitutions.
Diffstat (limited to 'kernel/esubst.mli')
-rw-r--r--kernel/esubst.mli7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/esubst.mli b/kernel/esubst.mli
index a674c425a..475b64f47 100644
--- a/kernel/esubst.mli
+++ b/kernel/esubst.mli
@@ -72,3 +72,10 @@ val el_liftn : int -> lift -> lift
val el_lift : lift -> lift
val reloc_rel : int -> lift -> int
val is_lift_id : lift -> bool
+
+(** Lift applied to substitution: [lift_subst mk_clos el s] computes a
+ substitution equivalent to applying el then s. Argument
+ mk_clos is used when a closure has to be created, i.e. when
+ el is applied on an element of s.
+*)
+val lift_subst : (lift -> 'a -> 'b) -> lift -> 'a subs -> 'b subs