package coq-core
Install
Dune Dependency
Authors
Maintainers
Sources
md5=13d2793fc6413aac5168822313e4864e
sha512=ec8379df34ba6e72bcf0218c66fef248b0e4c5c436fb3f2d7dd83a2c5f349dd0874a67484fcf9c0df3e5d5937d7ae2b2a79274725595b4b0065a381f70769b42
doc/coq-core.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