Module Mod_subst
Mod_subst
Delta resolver
val empty_delta_resolver : delta_resolver
val add_mp_delta_resolver : Names.ModPath.t -> Names.ModPath.t -> delta_resolver -> delta_resolver
val add_kn_delta_resolver : Names.KerName.t -> Names.KerName.t -> delta_resolver -> delta_resolver
val add_inline_delta_resolver : Names.KerName.t -> (int * Constr.constr Univ.univ_abstracted option) -> delta_resolver -> delta_resolver
val add_delta_resolver : delta_resolver -> delta_resolver -> delta_resolver
val mp_of_delta : delta_resolver -> Names.ModPath.t -> Names.ModPath.t
val kn_of_delta : delta_resolver -> Names.KerName.t -> Names.KerName.t
val constant_of_delta_kn : delta_resolver -> Names.KerName.t -> Names.Constant.t
val constant_of_deltas_kn : delta_resolver -> delta_resolver -> Names.KerName.t -> Names.Constant.t
val mind_of_delta_kn : delta_resolver -> Names.KerName.t -> Names.MutInd.t
val mind_of_deltas_kn : delta_resolver -> delta_resolver -> Names.KerName.t -> Names.MutInd.t
val inline_of_delta : int option -> delta_resolver -> (int * Names.KerName.t) list
Extract the set of inlined constant in the resolver
val mp_in_delta : Names.ModPath.t -> delta_resolver -> bool
val con_in_delta : Names.Constant.t -> delta_resolver -> bool
val mind_in_delta : Names.MutInd.t -> delta_resolver -> bool
Substitution
val empty_subst : substitution
val is_empty_subst : substitution -> bool
val add_mbid : Names.MBId.t -> Names.ModPath.t -> delta_resolver -> substitution -> substitution
add_* add
arg2/arg1
{arg3} to the substitution with no sequential composition. Most often this is not what you want. For sequential composition, tryjoin (map_mbid mp delta) subs
*
val add_mp : Names.ModPath.t -> Names.ModPath.t -> delta_resolver -> substitution -> substitution
val map_mbid : Names.MBId.t -> Names.ModPath.t -> delta_resolver -> substitution
map_* create a new substitution
arg2/arg1
{arg3}
val map_mp : Names.ModPath.t -> Names.ModPath.t -> delta_resolver -> substitution
val join : substitution -> substitution -> substitution
sequential composition:
substitute (join sub1 sub2) t = substitute sub2 (substitute sub1 t)
val subst_dom_delta_resolver : substitution -> delta_resolver -> delta_resolver
Apply the substitution on the domain of the resolver
val subst_codom_delta_resolver : substitution -> delta_resolver -> delta_resolver
Apply the substitution on the codomain of the resolver
val subst_dom_codom_delta_resolver : substitution -> delta_resolver -> delta_resolver
val from_val : 'a -> 'a substituted
val force : (substitution -> 'a -> 'a) -> 'a substituted -> 'a
val subst_substituted : substitution -> 'a substituted -> 'a substituted
val subst_mp : substitution -> Names.ModPath.t -> Names.ModPath.t
val subst_mind : substitution -> Names.MutInd.t -> Names.MutInd.t
val subst_ind : substitution -> Names.inductive -> Names.inductive
val subst_pind : substitution -> Constr.pinductive -> Constr.pinductive
val subst_kn : substitution -> Names.KerName.t -> Names.KerName.t
val subst_con : substitution -> Names.Constant.t -> Names.Constant.t * Constr.constr Univ.univ_abstracted option
val subst_pcon : substitution -> Constr.pconstant -> Constr.pconstant
val subst_constant : substitution -> Names.Constant.t -> Names.Constant.t
val subst_proj_repr : substitution -> Names.Projection.Repr.t -> Names.Projection.Repr.t
val subst_proj : substitution -> Names.Projection.t -> Names.Projection.t
val subst_retro_action : substitution -> Retroknowledge.action -> Retroknowledge.action
val subst_evaluable_reference : substitution -> Names.evaluable_global_reference -> Names.evaluable_global_reference
Here the semantics is completely unclear. What does "Hint Unfold t" means when "t" is a parameter? Does the user mean "Unfold X.t" or does she mean "Unfold y" where X.t is later on instantiated with y? I choose the first interpretation (i.e. an evaluable reference is never expanded).
val replace_mp_in_kn : Names.ModPath.t -> Names.ModPath.t -> Names.KerName.t -> Names.KerName.t
replace_mp_in_con mp mp' con
replacesmp
withmp'
incon
val subst_mps : substitution -> Constr.constr -> Constr.constr
subst_mps sub c
performs the substitutionsub
on all kernel names appearing inc
val repr_substituted : 'a substituted -> substitution list option * 'a
val force_constr : Constr.constr substituted -> Constr.constr
val subst_constr : substitution -> Constr.constr substituted -> Constr.constr substituted