package coq-core

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module LibSource

Lib: record of operations, backtrack, low-level sections

This module provides a general mechanism to keep a trace of all operations and to backtrack (undo) those operations. It provides also the section mechanism (at a low level; discharge is not known at this step).

Sourcetype is_type = bool
Sourcetype export_flag =
  1. | Export
  2. | Import
Sourcetype export = (export_flag * Libobject.open_filter) option
Sourcetype 'summary node =
  1. | CompilingLibrary of Nametab.object_prefix
  2. | OpenedModule of is_type * export * Nametab.object_prefix * 'summary
  3. | OpenedSection of Nametab.object_prefix * 'summary
Sourceval node_prefix : 'summary node -> Nametab.object_prefix

Extract the object_prefix component. Note that it is the prefix of the objects *inside* this node, eg in Module M. we have OpenedModule with prefix containing M.

Sourcetype 'summary library_segment = ('summary node * Libobject.t list) list
...

Adding operations (which call the cache method, and getting the current list of operations (most recent ones coming first).

Sourceval add_leaf : Libobject.obj -> unit
...

The function contents gives access to the current entire segment

Functions relative to current path
Sourceval prefix : unit -> Nametab.object_prefix

User-side names

cwd() is (prefix()).obj_dir current_mp() is (prefix()).obj_mp

Inside a library A.B module M section S, we have

  • library_dp = A.B
  • cwd = A.B.M.S
  • cwd_except_section = A.B.M
  • current_dirpath true = M.S
  • current_dirpath false = S
  • current_mp = MPdot(MPfile A.B, M)

make_path (resp make_path_except_section) uses cwd (resp cwd_except_section) make_kn uses current_mp

Sourceval cwd : unit -> Names.DirPath.t
Sourceval cwd_except_section : unit -> Names.DirPath.t
Sourceval current_dirpath : bool -> Names.DirPath.t
Sourceval make_path_except_section : Names.Id.t -> Libnames.full_path
Sourceval current_mp : unit -> Names.ModPath.t

Kernel-side names

Sourceval sections_are_opened : unit -> bool

Are we inside an opened section

Sourceval sections_depth : unit -> int
Sourceval is_module_or_modtype : unit -> bool

Are we inside an opened module type

Sourceval is_modtype : unit -> bool
Sourceval is_modtype_strict : unit -> bool
Sourceval is_module : unit -> bool
Sourcemodule type StagedLibS = sig ... end

The StagedLibS abstraction describes operations and traversal for Lib at a given stage.

We provide two instances of StagedLibS, corresponding to the Synterp and Interp stages.

Compilation units
Sourceval start_compilation : Names.DirPath.t -> Names.ModPath.t -> unit

Finalize the compilation of a library and return respectively the library prefix, the regular objects, and the syntax-related objects.

Sourceval library_dp : unit -> Names.DirPath.t

The function library_dp returns the DirPath.t of the current compiling library (or default_library)

Sourceval split_modpath : Names.ModPath.t -> Names.DirPath.t * Names.Id.t list

Extract the library part of a name even if in a section

Sourceval section_segment_of_constant : Names.Constant.t -> Cooking.cooking_info

Section management for discharge

Sourceval section_segment_of_inductive : Names.MutInd.t -> Cooking.cooking_info
Sourceval section_segment_of_reference : Names.GlobRef.t -> Cooking.cooking_info
Sourceval section_instance : Names.GlobRef.t -> Constr.t array
Sourceval is_in_section : Names.GlobRef.t -> bool
Discharge: decrease the section level if in the current section

discharge_proj_repr p discharges projection p if the associated record was defined in the current section. If that is not the case, it returns p unchanged.

Compatibility layer

Sourceval init : unit -> unit
Sourceval open_section : Names.Id.t -> unit
Sourceval close_section : unit -> unit
OCaml

Innovation. Community. Security.