package coq-core
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha512=9a35311acec2a806730b94ac7dceabc88837f235c52a14c026827d9b89433bd7fa9555a9fc6829aa49edfedb24c8bbaf1411ebf463b74a50aeb17cba47745b6b
    
    
  doc/coq-core.kernel/Mod_subst/index.html
Module Mod_substSource
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_resolverval add_kn_delta_resolver : 
  Names.KerName.t ->
  Names.KerName.t ->
  delta_resolver ->
  delta_resolverval add_inline_delta_resolver : 
  Names.KerName.t ->
  (int * Constr.constr Univ.univ_abstracted option) ->
  delta_resolver ->
  delta_resolverEffect 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.tSame 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 ->
  substitutionadd_* 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 ->
  substitutionmap_* 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 Univ.univ_abstracted optionval replace_mp_in_kn : 
  Names.ModPath.t ->
  Names.ModPath.t ->
  Names.KerName.t ->
  Names.KerName.treplace_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