Module Lib
val make_oname : Nametab.object_prefix -> Names.Id.t -> Libobject.object_nameval make_foname : Names.Id.t -> Libnames.full_path * Names.KerName.t
type node=|Leaf of Libobject.t|CompilingLibrary of Nametab.object_prefix|OpenedModule of is_type * export * Nametab.object_prefix * Summary.frozen|OpenedSection of Nametab.object_prefix * Summary.frozentype library_segment= (Libobject.object_name * node) listtype lib_atomic_objects= (Names.Id.t * Libobject.obj) listtype lib_objects= (Names.Id.t * Libobject.t) list
Object iteration functions.
val open_atomic_objects : Libobject.open_filter -> int -> Nametab.object_prefix -> lib_atomic_objects -> unitval load_atomic_objects : int -> Nametab.object_prefix -> lib_atomic_objects -> unitval subst_atomic_objects : Mod_subst.substitution -> lib_atomic_objects -> lib_atomic_objectsval classify_segment : library_segment -> lib_objects * lib_objects * Libobject.t listclassify_segment segverifies that there are no OpenedThings, clears ClosedSections and FrozenStates and divides Leafs according to their answers to theclassify_objectfunction in three groups:Substitute,Keep,Anticipaterespectively. The order of each returned list is the same as in the input list.
val segment_of_objects : Nametab.object_prefix -> lib_objects -> library_segmentsegment_of_objects prefix objsforms a list of Leafs
...
val add_entry : Libobject.object_name -> node -> unitval add_anonymous_entry : node -> unit
...
val add_leaf : Names.Id.t -> Libobject.obj -> Libobject.object_nameval add_anonymous_leaf : ?cache_first:bool -> Libobject.obj -> unit
...
val contents : unit -> library_segment
val contents_after : Libobject.object_name -> library_segment
Functions relative to current path
val cwd : unit -> Names.DirPath.tUser-side names
val cwd_except_section : unit -> Names.DirPath.tval current_dirpath : bool -> Names.DirPath.tval make_path : Names.Id.t -> Libnames.full_pathval make_path_except_section : Names.Id.t -> Libnames.full_pathval current_mp : unit -> Names.ModPath.tKernel-side names
val make_kn : Names.Id.t -> Names.KerName.tval sections_are_opened : unit -> boolAre we inside an opened section
val sections_depth : unit -> intval is_module_or_modtype : unit -> boolAre we inside an opened module type
val is_modtype : unit -> boolval is_modtype_strict : unit -> boolval is_module : unit -> boolval current_mod_id : unit -> Names.module_identval find_opening_node : Names.Id.t -> nodeReturns the opening node of a given name
Modules and module types
val start_module : export -> Names.module_ident -> Names.ModPath.t -> Summary.frozen -> Nametab.object_prefixval start_modtype : Names.module_ident -> Names.ModPath.t -> Summary.frozen -> Nametab.object_prefixval end_module : unit -> Libobject.object_name * Nametab.object_prefix * Summary.frozen * library_segmentval end_modtype : unit -> Libobject.object_name * Nametab.object_prefix * Summary.frozen * library_segment
Compilation units
val start_compilation : Names.DirPath.t -> Names.ModPath.t -> unitval end_compilation_checks : Names.DirPath.t -> Libobject.object_nameval end_compilation : Libobject.object_name -> Nametab.object_prefix * library_segmentval library_dp : unit -> Names.DirPath.tThe function
library_dpreturns theDirPath.tof the current compiling library (ordefault_library)
val dp_of_mp : Names.ModPath.t -> Names.DirPath.tExtract the library part of a name even if in a section
val split_modpath : Names.ModPath.t -> Names.DirPath.t * Names.Id.t listval library_part : Names.GlobRef.t -> Names.DirPath.t
Sections
val open_section : Names.Id.t -> unitval close_section : unit -> unit
We can get and set the state of the operations (used in States).
val freeze : unit -> frozenval unfreeze : frozen -> unitval drop_objects : frozen -> frozenKeep only the libobject structure, not the objects themselves
val init : unit -> unitval section_segment_of_constant : Names.Constant.t -> Declarations.abstr_infoSection management for discharge
val section_segment_of_mutual_inductive : Names.MutInd.t -> Declarations.abstr_infoval section_segment_of_reference : Names.GlobRef.t -> Declarations.abstr_infoval variable_section_segment_of_reference : Names.GlobRef.t -> Constr.named_contextval section_instance : Names.GlobRef.t -> Univ.Instance.t * Names.Id.t arrayval is_in_section : Names.GlobRef.t -> boolval replacement_context : unit -> Declarations.work_list
Discharge: decrease the section level if in the current section
val discharge_proj_repr : Names.Projection.Repr.t -> Names.Projection.Repr.tval discharge_abstract_universe_context : Declarations.abstr_info -> Univ.AbstractContext.t -> Univ.universe_level_subst * Univ.AbstractContext.t