123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125(************************************************************************)(* * The Coq Proof Assistant / The Coq Development Team *)(* v * Copyright INRIA, CNRS and contributors *)(* <O___,, * (see version control and CREDITS file for authors & dates) *)(* \VV/ **************************************************************)(* // * This file is distributed under the terms of the *)(* * GNU Lesser General Public License Version 2.1 *)(* * (see LICENSE file for the text of the license) *)(************************************************************************)openNamesopenConstr(** 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 *)typeuniverses_entry=|Monomorphic_entry|Polymorphic_entryofUniv.UContext.ttypeinductive_universes_entry=|Monomorphic_ind_entry|Polymorphic_ind_entryofUniv.UContext.t|Template_ind_entryofUniv.ContextSet.ttypevariance_entry=Univ.Variance.toptionarraytype'ain_universes_entry='a*universes_entry(** {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]].
*)typeone_inductive_entry={mind_entry_typename:Id.t;mind_entry_arity:constr;mind_entry_consnames:Id.tlist;mind_entry_lc:constrlist;}typemutual_inductive_entry={mind_entry_record:(Id.tarrayoption)option;(** Some (Some ids): primitive records with ids the binder name of each
record in their respective projections. Not used by the kernel.
Some None: non-primitive record *)mind_entry_finite:Declarations.recursivity_kind;mind_entry_params:Constr.rel_context;mind_entry_inds:one_inductive_entrylist;mind_entry_universes:inductive_universes_entry;mind_entry_variance:variance_entryoption;(* [None] if non-cumulative, otherwise associates each universe of
the entry to [None] if to be inferred or [Some v] if to be
checked. *)mind_entry_private:booloption;}(** {6 Constants (Definition/Axiom) } *)typedefinition_entry={const_entry_body:constr;(* List of section variables *)const_entry_secctx:Id.Set.toption;const_entry_type:typesoption;const_entry_universes:universes_entry;const_entry_inline_code:bool;}typesection_def_entry={secdef_body:constr;secdef_secctx:Id.Set.toption;secdef_type:typesoption;}type'aopaque_entry={opaque_entry_body:'a;(* List of section variables *)opaque_entry_secctx:Id.Set.t;opaque_entry_type:types;opaque_entry_universes:universes_entry;}typeinline=intoption(* inlining level, None for no inlining *)typeparameter_entry={parameter_entry_secctx:Id.Set.toption;parameter_entry_type:types;parameter_entry_universes:universes_entry;parameter_entry_inline_code:inline;}typeprimitive_entry={prim_entry_type:typesin_universes_entryoption;prim_entry_content:CPrimitives.op_or_type;}type'aproof_output=constrUniv.in_universe_context_set*'atypeconstant_entry=|DefinitionEntry:definition_entry->constant_entry|ParameterEntry:parameter_entry->constant_entry|PrimitiveEntry:primitive_entry->constant_entry(** {6 Modules } *)typemodule_struct_entry=(constr*Univ.AbstractContext.toption)Declarations.module_alg_exprtypemodule_params_entry=(MBId.t*module_struct_entry*inline)list(** older first *)typemodule_type_entry=module_params_entry*module_struct_entrytypemodule_entry=|MTypeofmodule_params_entry*module_struct_entry|MExprofmodule_params_entry*module_struct_entry*module_struct_entryoption