package coq-core
Install
Dune Dependency
Authors
Maintainers
Sources
md5=64b49dbc3205477bd7517642c0b9cbb6
sha512=02fb5b4fb575af79e092492cbec6dc0d15a1d74a07f827f657a72d4e6066532630e5a6d15be4acdb73314bd40b9a321f9ea0584e0ccfe51fd3a56353bd30db9b
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