package coq-core
Install
Dune Dependency
Authors
Maintainers
Sources
md5=66e57ea55275903bef74d5bf36fbe0f1
sha512=1a7eac6e2f58724a3f9d68bbb321e4cfe963ba1a5551b9b011db4b3f559c79be433d810ff262593d753770ee41ea68fbd6a60daa1e2319ea00dff64c8851d70b
doc/coq-core.tactics/Ind_tables/index.html
Module Ind_tables
Source
This module provides support for registering inductive scheme builders, declaring schemes and generating schemes on demand
A scheme is either a "mutual scheme_kind" or an "individual scheme_kind"
type scheme_dependency =
| SchemeMutualDep of Names.MutInd.t * mutual scheme_kind
| SchemeIndividualDep of Names.inductive * individual scheme_kind
type mutual_scheme_object_function =
Environ.env ->
handle ->
Names.MutInd.t ->
Constr.constr array Evd.in_evar_universe_context
type individual_scheme_object_function =
Environ.env ->
handle ->
Names.inductive ->
Constr.constr Evd.in_evar_universe_context
Main functions to register a scheme builder. Note these functions are not safe to be used by plugins as their effects won't be undone on backtracking.
In declare_X_scheme_object key ?suff ?deps f
, key
is the name of the scheme kind. It must be unique across the Coq process's lifetime. It is used to generate scheme_kind
in a marshal-stable way and as the scheme name in Register Scheme.
suff
defaults to key
, generated schemes which aren't given an explicit name will be named "ind_suff" where "ind" is the inductive's name.
val declare_mutual_scheme_object :
string ->
?suff:string ->
?deps:(Environ.env -> Names.MutInd.t -> scheme_dependency list) ->
mutual_scheme_object_function ->
mutual scheme_kind
val declare_individual_scheme_object :
string ->
?suff:string ->
?deps:(Environ.env -> Names.inductive -> scheme_dependency list) ->
individual_scheme_object_function ->
individual scheme_kind
Is the string used as the name of a scheme_kind
?
Name of a scheme_kind
. Can be used to register with DeclareScheme.
Force generation of a (mutually) scheme with possibly user-level names
val define_individual_scheme :
?loc:Loc.t ->
individual scheme_kind ->
Names.Id.t option ->
Names.inductive ->
unit
val define_mutual_scheme :
?locmap:Locmap.t ->
mutual scheme_kind ->
(int * Names.Id.t) list ->
Names.MutInd.t ->
unit
Main function to retrieve a scheme in the cache or to generate it
Like find_scheme
but does not generate a constant on the fly
val local_lookup_scheme :
handle ->
'a scheme_kind ->
Names.inductive ->
Names.Constant.t option
To be used by scheme-generating functions when looking for a subscheme.
val declare_definition_scheme :
(internal:bool ->
univs:UState.named_universes_entry ->
role:Evd.side_effect_role ->
name:Names.Id.t ->
?loc:Loc.t ->
Constr.t ->
Names.Constant.t * Evd.side_effects)
ref