X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fng_kernel%2FnCic.ml;h=4fd950af0f80c51d0be583080a04993dad576a05;hb=b7535cd20248c564e942cc4e9058d34fbb062c6f;hp=19a8a227b9cf8dfe49af5a3b41431d4f4c1c2d9a;hpb=f67ba2fcc539161947b5cdde1b9516a3817115d6;p=helm.git diff --git a/helm/software/components/ng_kernel/nCic.ml b/helm/software/components/ng_kernel/nCic.ml index 19a8a227b..4fd950af0 100644 --- a/helm/software/components/ng_kernel/nCic.ml +++ b/helm/software/components/ng_kernel/nCic.ml @@ -29,8 +29,10 @@ type sort = Prop | Set | Type of int | CProp type implicit_annotation = [ `Closed | `Type | `Hole | `Term ] -type local_context = int * (term list) option (* shift (0 -> no shift), - subst (None means id) *) +type lc_kind = Irl of int | Ctx of term list + +and local_context = int * lc_kind (* shift (0 -> no shift), + subst (None means id) *) and term = | Rel of int (* DeBruijn index, 1 based *) | Meta of int * local_context @@ -61,7 +63,9 @@ type conjecture = int * string option * context * term type metasenv = conjecture list -type substitution = (int * (string option * context * term * term)) list +type subst_entry = string option * context * term * term + +type substitution = (int * subst_entry) list (******************************** OBJECTS **********************************) @@ -86,10 +90,11 @@ type def_pragma = (* pragmatic of the object *) | `Projection (* record projection *) | `InversionPrinciple (* inversion principle *) | `Variant - | `Local ] (* Local = hidden technicality *) + | `Local + | `Regular ] (* Local = hidden technicality *) type ind_pragma = (* pragmatic of the object *) - [ `Record of (string * bool * int) list ] + [ `Record of (string * bool * int) list | `Regular ] (* inductive type that encodes a record; the arguments are the record * fields names and if they are coercions and then the coercion arity *) @@ -103,7 +108,9 @@ type i_attr = generated * ind_pragma type obj_kind = | Constant of relevance * string * term option * term * c_attr | Fixpoint of bool * inductiveFun list * f_attr + (* true -> fix, funcs, arrts *) | Inductive of bool * int * inductiveType list * i_attr - (* (co)inductive, leftno, types *) + (* true -> inductive, leftno, types *) + (* the int must be 0 if the object has no body *) type obj = NUri.uri * int * metasenv * substitution * obj_kind