aboutsummaryrefslogtreecommitdiffhomepage
path: root/checker/cic.mli
diff options
context:
space:
mode:
authorGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2014-09-05 16:52:38 +0200
committerGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2014-09-05 16:53:56 +0200
commit901ff5c7cb30165ccf5a8e8d62eb3e775d3e962c (patch)
treed6a68322929e833aae615e4cefb698f42f81b7ad /checker/cic.mli
parent581cbe36191901f1dc234fe77d619abfe7b8de34 (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.mli10
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 *)