type instance
= t array
type instance_list
= t list
type substl
= t list
val lift : int -> t -> t
val liftn : int -> int -> t -> t
val substnl : substl -> int -> t -> t
val substl : substl -> t -> t
val subst1 : t -> t -> t
val substnl_decl : substl -> int -> rel_declaration -> rel_declaration
val substl_decl : substl -> rel_declaration -> rel_declaration
val subst1_decl : t -> rel_declaration -> rel_declaration
val replace_vars : Evd.evar_map -> (Names.Id.t * t) list -> t -> t
val substn_vars : Evd.evar_map -> int -> Names.Id.t list -> t -> t
val subst_vars : Evd.evar_map -> Names.Id.t list -> t -> t
val subst_var : Evd.evar_map -> Names.Id.t -> t -> t
val noccurn : Evd.evar_map -> int -> t -> bool
val noccur_between : Evd.evar_map -> int -> int -> t -> bool
val closedn : Evd.evar_map -> int -> t -> bool
val closed0 : Evd.evar_map -> t -> bool
val subst_univs_level_constr : UVars.sort_level_subst -> t -> t
val subst_instance_context : UVars.Instance.t -> rel_context -> rel_context
val subst_instance_constr : UVars.Instance.t -> t -> t
val subst_of_rel_context_instance : rel_context -> instance -> substl
val subst_of_rel_context_instance_list : rel_context -> instance_list -> substl
val liftn_rel_context : int -> int -> rel_context -> rel_context
val lift_rel_context : int -> rel_context -> rel_context
val substnl_rel_context : substl -> int -> rel_context -> rel_context
val substl_rel_context : substl -> rel_context -> rel_context
val smash_rel_context : rel_context -> rel_context
val esubst : (int -> 'a -> t) -> 'a Esubst.subs -> t -> t
type substituend
val make_substituend : t -> substituend
val lift_substituend : int -> substituend -> t