123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121(************************************************************************)(* * 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_entryofUniv.ContextSet.t|Polymorphic_entryofName.tarray*Univ.UContext.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:universes_entry;mind_entry_template:bool;(* Use template polymorphism *)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;(* State id on which the completion of type checking is reported *)const_entry_feedback:Stateid.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_feedback:Stateid.toption;secdef_type:typesoption;}type'aopaque_entry={opaque_entry_body:'a;(* List of section variables *)opaque_entry_secctx:Id.Set.t;(* State id on which the completion of type checking is reported *)opaque_entry_feedback:Stateid.toption;opaque_entry_type:types;opaque_entry_universes:universes_entry;}typeinline=intoption(* inlining level, None for no inlining *)typeparameter_entry=Id.Set.toption*typesin_universes_entry*inlinetypeprimitive_entry={prim_entry_type:typesin_universes_entryoption;prim_entry_content:CPrimitives.op_or_type;}type'aproof_output=constrUniv.in_universe_context_set*'atype'aconst_entry_body='aproof_outputFuture.computationtypeconstant_entry=|DefinitionEntry:definition_entry->constant_entry|ParameterEntry:parameter_entry->constant_entry|PrimitiveEntry:primitive_entry->constant_entry(** {6 Modules } *)typemodule_struct_entry=Declarations.module_alg_exprtypemodule_params_entry=(MBId.t*module_struct_entry)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