package rocq-runtime
Install
Dune Dependency
Authors
Maintainers
Sources
md5=8d522602d23e7a665631826dab9aa92b
sha512=f4f76a6a178e421c99ee7a331a2fd97a06e9c5d0168d7e60c44e3820d8e1a124370ea104ad90c7f87a9a1e9d87b2d0d7d2d387c998feeaed4a75ed04e176a4be
doc/rocq-runtime.kernel/Mod_subst/index.html
Module Mod_subst
Source
Mod_subst
Delta resolver
A delta_resolver maps name (constant, inductive, module_path) to canonical name
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 UVars.univ_abstracted option) ->
delta_resolver ->
delta_resolver
Effect of a delta_resolver
on a module path, on a kernel name
Build a constant whose canonical part is obtained via a resolver
Same, but a 2nd resolver is tried if the 1st one had no effect
val constant_of_deltas_kn :
delta_resolver ->
delta_resolver ->
Names.KerName.t ->
Names.Constant.t
Same for inductive names
Extract the set of inlined constant in the resolver
Does a delta_resolver
contains a mp
, a constant, an inductive ?
Substitution
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, try join (map_mbid mp delta) subs
*
val add_mp :
Names.ModPath.t ->
Names.ModPath.t ->
delta_resolver ->
substitution ->
substitution
map_* create a new substitution arg2/arg1
{arg3}
sequential composition: substitute (join sub1 sub2) t = substitute sub2 (substitute sub1 t)
Apply the substitution on the domain of the resolver
Apply the substitution on the codomain of the resolver
subst_mp sub mp
guarantees that whenever the result of the substitution is structutally equal mp
, it is equal by pointers as well ==
val subst_con :
substitution ->
Names.Constant.t ->
Names.Constant.t * Constr.constr UVars.univ_abstracted option
val replace_mp_in_kn :
Names.ModPath.t ->
Names.ModPath.t ->
Names.KerName.t ->
Names.KerName.t
replace_mp_in_con mp mp' con
replaces mp
with mp'
in con
subst_mps sub c
performs the substitution sub
on all kernel names appearing in c