aboutsummaryrefslogtreecommitdiff
path: root/kernel/entries.mli
diff options
context:
space:
mode:
authorEmilio Jesus Gallego Arias2017-07-25 15:11:22 +0200
committerEmilio Jesus Gallego Arias2017-07-25 16:02:32 +0200
commitb6f3c8e4f173e3f272f966e1061e7112bf5d1b4a (patch)
tree0a13e6970482cb16a9e01f96703625552398ed22 /kernel/entries.mli
parentc0fdb912c5e63bb43d6e8dd320e9f5613c6237ff (diff)
[api] Put modules in order in API.{mli,ml}
We sort the dependency graph of API by following a logical declaration order in `API.{ml,mli}` related to the actual dependency order of Coq modules. Things are a bit tricky here as Coq itself relies on the fact that OCaml treats module interface and implementation separately dependency-wise; however, when resorting module alias the design seems to become more coupled. Currently, API exposes both "namespaces", asserting a large number of type equality between them, however the `API` namespace is not self-contained. In particular, this is a first step to solve problems such as `Summary.frozen` being used in `API.mli` but not declared by the `API.Summary` module, etc... In general we follow the invariant that a type used in `API` must have been declared before. Keep in mind that OCaml upstream has warned that it maybe tricky to alias objects in this way. In particular, after API the old `mli` only files have become full compilation units so we may want to be more careful here. The more "correct" declaration order allows us to remove the `API.Prelude` module, as well as some other declarations that I consider as spurious. We still maintain the large number of type aliases which will be removed in a future patch. We follow linking order except for files in `intf`, which are conceptually wrongly placed in the linking hierarchy but this doesn't matter as the files don't contain any implementation. We also move a couple of `.mli` only files to `.ml` so we are consistent, and correct their linking order in `mllib`, even if that doesn't matter as such `.ml`-only files contain no implementations.
Diffstat (limited to 'kernel/entries.mli')
-rw-r--r--kernel/entries.mli121
1 files changed, 0 insertions, 121 deletions
diff --git a/kernel/entries.mli b/kernel/entries.mli
deleted file mode 100644
index 3fa25c142a..0000000000
--- a/kernel/entries.mli
+++ /dev/null
@@ -1,121 +0,0 @@
-(************************************************************************)
-(* v * The Coq Proof Assistant / The Coq Development Team *)
-(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2017 *)
-(* \VV/ **************************************************************)
-(* // * This file is distributed under the terms of the *)
-(* * GNU Lesser General Public License Version 2.1 *)
-(************************************************************************)
-
-open Names
-open Term
-
-(** This module defines the entry types for global declarations. This
- information is entered in the environments. This includes global
- constants/axioms, mutual inductive definitions, modules and module
- types *)
-
-
-(** {6 Local entries } *)
-
-type local_entry =
- | LocalDefEntry of constr
- | LocalAssumEntry of constr
-
-
-(** {6 Declaration of inductive types. } *)
-
-(** Assume the following definition in concrete syntax:
-{v Inductive I1 (x1:X1) ... (xn:Xn) : A1 := c11 : T11 | ... | c1n1 : T1n1
-...
-with Ip (x1:X1) ... (xn:Xn) : Ap := cp1 : Tp1 | ... | cpnp : Tpnp. v}
-
-then, in i{^ th} block, [mind_entry_params] is [xn:Xn;...;x1:X1];
-[mind_entry_arity] is [Ai], defined in context [x1:X1;...;xn:Xn];
-[mind_entry_lc] is [Ti1;...;Tini], defined in context [[A'1;...;A'p;x1:X1;...;xn:Xn]] where [A'i] is [Ai] generalized over [[x1:X1;...;xn:Xn]].
-*)
-
-type inductive_universes =
- | Monomorphic_ind_entry of Univ.universe_context
- | Polymorphic_ind_entry of Univ.universe_context
- | Cumulative_ind_entry of Univ.cumulativity_info
-
-type one_inductive_entry = {
- mind_entry_typename : Id.t;
- mind_entry_arity : constr;
- mind_entry_template : bool; (* Use template polymorphism *)
- mind_entry_consnames : Id.t list;
- mind_entry_lc : constr list }
-
-type mutual_inductive_entry = {
- mind_entry_record : (Id.t option) option;
- (** Some (Some id): primitive record with id the binder name of the record
- in projections.
- Some None: non-primitive record *)
- mind_entry_finite : Decl_kinds.recursivity_kind;
- mind_entry_params : (Id.t * local_entry) list;
- mind_entry_inds : one_inductive_entry list;
- mind_entry_universes : inductive_universes;
- (* universe constraints and the constraints for subtyping of
- inductive types in the block. *)
- mind_entry_private : bool option;
-}
-
-(** {6 Constants (Definition/Axiom) } *)
-type 'a proof_output = constr Univ.in_universe_context_set * 'a
-type 'a const_entry_body = 'a proof_output Future.computation
-
-type 'a definition_entry = {
- const_entry_body : 'a const_entry_body;
- (* List of section variables *)
- const_entry_secctx : Context.Named.t option;
- (* State id on which the completion of type checking is reported *)
- const_entry_feedback : Stateid.t option;
- const_entry_type : types option;
- const_entry_polymorphic : bool;
- const_entry_universes : Univ.universe_context;
- const_entry_opaque : bool;
- const_entry_inline_code : bool }
-
-type inline = int option (* inlining level, None for no inlining *)
-
-type parameter_entry =
- Context.Named.t option * bool * types Univ.in_universe_context * inline
-
-type projection_entry = {
- proj_entry_ind : mutual_inductive;
- proj_entry_arg : int }
-
-type 'a constant_entry =
- | DefinitionEntry of 'a definition_entry
- | ParameterEntry of parameter_entry
- | ProjectionEntry of projection_entry
-
-(** {6 Modules } *)
-
-type module_struct_entry = Declarations.module_alg_expr
-
-type module_params_entry =
- (MBId.t * module_struct_entry) list (** older first *)
-
-type module_type_entry = module_params_entry * module_struct_entry
-
-type module_entry =
- | MType of module_params_entry * module_struct_entry
- | MExpr of
- module_params_entry * module_struct_entry * module_struct_entry option
-
-
-type seff_env =
- [ `Nothing
- (* The proof term and its universes.
- Same as the constant_body's but not in an ephemeron *)
- | `Opaque of Constr.t * Univ.universe_context_set ]
-
-type side_eff =
- | SEsubproof of constant * Declarations.constant_body * seff_env
- | SEscheme of (inductive * constant * Declarations.constant_body * seff_env) list * string
-
-type side_effect = {
- from_env : Declarations.structure_body CEphemeron.key;
- eff : side_eff;
-}