diff options
author | Matthieu Sozeau <matthieu.sozeau@inria.fr> | 2014-09-05 16:52:38 +0200 |
---|---|---|
committer | Matthieu Sozeau <matthieu.sozeau@inria.fr> | 2014-09-05 16:53:56 +0200 |
commit | 901ff5c7cb30165ccf5a8e8d62eb3e775d3e962c (patch) | |
tree | d6a68322929e833aae615e4cefb698f42f81b7ad /checker/cic.mli | |
parent | 581cbe36191901f1dc234fe77d619abfe7b8de34 (diff) |
Rename eta_expand_ind_stacks, fix the one from the checker and adapt
it to the new representation of projections and the new mind_finite
type.
Diffstat (limited to 'checker/cic.mli')
-rw-r--r-- | checker/cic.mli | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/checker/cic.mli b/checker/cic.mli index cd6d0afee..c1d7b0d73 100644 --- a/checker/cic.mli +++ b/checker/cic.mli @@ -196,6 +196,7 @@ type projection_body = { proj_npars : int; proj_arg : int; proj_type : constr; (* Type under params *) + proj_eta : constr * constr; (* Eta-expanded term and type *) proj_body : constr; (* For compatibility, the match version *) } @@ -232,6 +233,11 @@ type regular_inductive_arity = { mind_sort : sorts; } +type recursivity_kind = + | Finite (** = inductive *) + | CoFinite (** = coinductive *) + | BiFinite (** = non-recursive, like in "Record" definitions *) + type inductive_arity = (regular_inductive_arity, template_arity) declaration_arity type one_inductive_body = { @@ -283,11 +289,11 @@ type mutual_inductive_body = { mind_packets : one_inductive_body array; (** The component of the mutual inductive block *) - mind_record : (constr * constant array) option; + mind_record : (constant array * projection_body array) option; (** Whether the inductive type has been declared as a record, In that case we get its canonical eta-expansion and list of projections. *) - mind_finite : bool; (** Whether the type is inductive or coinductive *) + mind_finite : recursivity_kind; (** Whether the type is inductive or coinductive *) mind_ntypes : int; (** Number of types in the block *) |