From beac140c3970826bdfa104642301b9cee7530a97 Mon Sep 17 00:00:00 2001 From: herbelin Date: Thu, 18 May 2000 08:01:53 +0000 Subject: Restructuration des outils pour les inductifs. - Les déclarations (mutual_inductive_packet et mutual_inductive_body), utilisisées dans Environ vont dans Constant - Instantiations du context local (mind_specif), instantiation des paramètres globaux (inductive_family) et instantiation complète (inductive_type, nouveau nom de inductive_summary) vont dans Inductive qui est déplacé après réduction - Certaines fonctions de Typeops et celle traitant des inductifs dans Reduction sont regroupées dans Inductive git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@438 85f007b7-540e-0410-9357-904b9bb8a0f7 --- kernel/constant.ml | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'kernel/constant.ml') diff --git a/kernel/constant.ml b/kernel/constant.ml index dda7274af6..7f45aae570 100644 --- a/kernel/constant.ml +++ b/kernel/constant.ml @@ -7,6 +7,8 @@ open Generic open Term open Sign +(* Constant entries *) + type lazy_constant_value = | Cooked of constr | Recipe of (unit -> constr) @@ -34,3 +36,41 @@ type constant_entry = { const_entry_body : lazy_constant_value; const_entry_type : constr option } +(* Inductive entries *) + +type recarg = + | Param of int + | Norec + | Mrec of int + | Imbr of inductive_path * recarg list + +type mutual_inductive_packet = { + mind_consnames : identifier array; + mind_typename : identifier; + mind_lc : constr; + mind_arity : typed_type; + mind_sort : sorts; + mind_nrealargs : int; + mind_kelim : sorts list; + mind_listrec : (recarg list) array; + mind_finite : bool } + +type mutual_inductive_body = { + mind_kind : path_kind; + mind_ntypes : int; + mind_hyps : typed_type signature; + mind_packets : mutual_inductive_packet array; + mind_constraints : constraints; + mind_singl : constr option; + mind_nparams : int } + +let mind_type_finite mib i = mib.mind_packets.(i).mind_finite + +(*s Declaration. *) + +type mutual_inductive_entry = { + mind_entry_nparams : int; + mind_entry_finite : bool; + mind_entry_inds : (identifier * constr * identifier list * constr) list } + +let mind_nth_type_packet mib n = mib.mind_packets.(n) -- cgit v1.2.3