(NCic.hypothesis -> 'k -> 'k) -> 'k ->
('k -> 'a -> NCic.term -> 'a * NCic.term) -> 'a -> NCic.term -> 'a * NCic.term
-val map_obj_kind: (NCic.term -> NCic.term) -> NCic.obj_kind -> NCic.obj_kind
+val map_obj_kind:
+ ?skip_body:bool -> (NCic.term -> NCic.term) -> NCic.obj_kind -> NCic.obj_kind
val metas_of_term : NCic.substitution -> NCic.context -> NCic.term -> int list
val mk_appl : NCic.term -> NCic.term list -> NCic.term
-val apply_subst : NCic.substitution -> NCic.term -> NCic.term
+(* the context is needed only to honour Barendregt's naming convention *)
+val apply_subst : NCic.substitution -> NCic.context -> NCic.term -> NCic.term
+val apply_subst_metasenv : NCic.substitution -> NCic.metasenv -> NCic.metasenv