CoqlibIndirection between logical names and global references.
This module provides a mechanism to bind “names” to constants and to look up these constants using their names.
The two main functions are register_ref n r which binds the name n to the reference r and lib_ref n which returns the previously registered reference under name n.
The first function is meant to be available through the vernacular command Register r as n, so that plug-ins can refer to a constant without knowing its user-facing name, the precise module path in which it is defined, etc.
For instance, lib_ref "core.eq.type" returns the proper GlobRef.t for the type of the core equality type.
val register_ref : string -> Names.GlobRef.t -> unitRegisters a global reference under the given name.
val lib_ref : string -> Names.GlobRef.tRetrieves the reference bound to the given name (by a previous call to register_ref). Raises NotFoundRef if no reference is bound to this name.
val lib_ref_opt : string -> Names.GlobRef.t optionAs lib_ref but returns None instead of raising.
Checks whether a name refers to a registered constant. For any name n, if has_ref n returns true, lib_ref n will succeed.
val check_ind_ref : string -> Names.inductive -> boolChecks whether a name is bound to a known inductive.
val get_lib_refs : unit -> (string * Names.GlobRef.t) listList of all currently bound names.
type coq_sigma_data = {proj1 : Names.GlobRef.t; |
proj2 : Names.GlobRef.t; |
elim : Names.GlobRef.t; |
intro : Names.GlobRef.t; |
typ : Names.GlobRef.t; |
}val build_sigma_set : coq_sigma_data Util.delayedval build_sigma_type : coq_sigma_data Util.delayedval build_sigma : coq_sigma_data Util.delayedtype coq_eq_data = {eq : Names.GlobRef.t; |
ind : Names.GlobRef.t; |
refl : Names.GlobRef.t; |
sym : Names.GlobRef.t; |
trans : Names.GlobRef.t; |
congr : Names.GlobRef.t; |
}val build_coq_eq_data : coq_eq_data Util.delayedval build_coq_identity_data : coq_eq_data Util.delayedval build_coq_jmeq_data : coq_eq_data Util.delayedAll the functions below are deprecated and should go away in the next coq version ...
val find_reference : string -> string list -> string -> Names.GlobRef.tfind_reference caller_message [dir;subdir;...] s returns a global reference to the name dir.subdir.(...).s; the corresponding module must have been required or in the process of being compiled so that it must be used lazily; it raises an anomaly with the given message if not found
val coq_reference : string -> string list -> string -> Names.GlobRef.tThis just prefixes find_reference with Coq...
val gen_reference_in_modules :
string ->
string list list ->
string ->
Names.GlobRef.tSearch in several modules (not prefixed by "Coq")
val logic_module : Names.ModPath.tModules
val logic_type_module : Names.DirPath.tval id : Names.Constant.tIdentity
val type_of_id : Names.Constant.tNatural numbers
val nat_path : Libnames.full_pathval glob_nat : Names.GlobRef.tval path_of_O : Names.constructorval path_of_S : Names.constructorval glob_O : Names.GlobRef.tval glob_S : Names.GlobRef.tval glob_bool : Names.GlobRef.tBooleans
val path_of_true : Names.constructorval path_of_false : Names.constructorval glob_true : Names.GlobRef.tval glob_false : Names.GlobRef.tval glob_eq : Names.GlobRef.tEquality
val glob_identity : Names.GlobRef.tval glob_jmeq : Names.GlobRef.tConstructions and patterns related to Coq initial state are unknown at compile time. Therefore, we can only provide methods to build them at runtime. This is the purpose of the constr delayed and constr_pattern delayed types. Objects of this time needs to be forced with delayed_force to get the actual constr or pattern at runtime.
type coq_bool_data = {andb : Names.GlobRef.t; |
andb_prop : Names.GlobRef.t; |
andb_true_intro : Names.GlobRef.t; |
}val build_bool_type : coq_bool_data Util.delayedval build_prod : coq_sigma_data Util.delayedNon-dependent pairs in Set from Datatypes
val build_coq_eq : Names.GlobRef.t Util.delayed= (build_coq_eq_data()).eq
val build_coq_eq_refl : Names.GlobRef.t Util.delayed= (build_coq_eq_data()).refl
val build_coq_eq_sym : Names.GlobRef.t Util.delayed= (build_coq_eq_data()).sym
val build_coq_f_equal2 : Names.GlobRef.t Util.delayedData needed for discriminate and injection
type coq_inversion_data = {inv_eq : Names.GlobRef.t; | (* : forall params, args -> Prop *) |
inv_ind : Names.GlobRef.t; | (* : forall params P (H : P params) args, eq params args -> P args *) |
inv_congr : Names.GlobRef.t; | (* : forall params B (f:t->B) args, eq params args -> f params = f args *) |
}val build_coq_inversion_eq_data : coq_inversion_data Util.delayedval build_coq_inversion_identity_data : coq_inversion_data Util.delayedval build_coq_inversion_jmeq_data : coq_inversion_data Util.delayedval build_coq_inversion_eq_true_data : coq_inversion_data Util.delayedval build_coq_sumbool : Names.GlobRef.t Util.delayedSpecif
val build_coq_False : Names.GlobRef.t Util.delayed...
Connectives The False proposition
val build_coq_True : Names.GlobRef.t Util.delayedThe True proposition and its unique proof
val build_coq_I : Names.GlobRef.t Util.delayedval build_coq_not : Names.GlobRef.t Util.delayedNegation
val build_coq_and : Names.GlobRef.t Util.delayedConjunction
val build_coq_conj : Names.GlobRef.t Util.delayedval build_coq_iff : Names.GlobRef.t Util.delayedval build_coq_iff_left_proj : Names.GlobRef.t Util.delayedval build_coq_iff_right_proj : Names.GlobRef.t Util.delayedval build_coq_prod : Names.GlobRef.t Util.delayedPairs
val build_coq_pair : Names.GlobRef.t Util.delayedval build_coq_or : Names.GlobRef.t Util.delayedDisjunction
val build_coq_ex : Names.GlobRef.t Util.delayedExistential quantifier
val coq_eq_ref : Names.GlobRef.t lazy_tval coq_identity_ref : Names.GlobRef.t lazy_tval coq_jmeq_ref : Names.GlobRef.t lazy_tval coq_eq_true_ref : Names.GlobRef.t lazy_tval coq_existS_ref : Names.GlobRef.t lazy_tval coq_existT_ref : Names.GlobRef.t lazy_tval coq_exist_ref : Names.GlobRef.t lazy_tval coq_not_ref : Names.GlobRef.t lazy_tval coq_False_ref : Names.GlobRef.t lazy_tval coq_sumbool_ref : Names.GlobRef.t lazy_tval coq_sig_ref : Names.GlobRef.t lazy_tval coq_or_ref : Names.GlobRef.t lazy_tval coq_iff_ref : Names.GlobRef.t lazy_t