X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fcic%2Fcic.ml;h=5dd8455ea7a29cb1e7b6a067066f1933b119d164;hb=6e2d3b0cabf805137a08f969840da05f8aba0adb;hp=20a6cb457dec63c700283ac952204357c38ab0de;hpb=9c9e979d4c45cf3b1ee01688b2c36fe49190ce98;p=helm.git diff --git a/helm/software/components/cic/cic.ml b/helm/software/components/cic/cic.ml index 20a6cb457..5dd8455ea 100644 --- a/helm/software/components/cic/cic.ml +++ b/helm/software/components/cic/cic.ml @@ -57,6 +57,7 @@ type name = type object_flavour = [ `Definition + | `MutualDefinition | `Fact | `Lemma | `Remark @@ -66,13 +67,15 @@ type object_flavour = ] type object_class = - [ `Coercion + [ `Coercion of int | `Elim of sort (** elimination principle; if sort is Type, the universe is * not relevant *) - | `Record of (string * bool) list (** + | `Record of (string * bool * int) list (** inductive type that encodes a record; the arguments are - the record fields names and if they are coercions *) + the record fields names and if they are coercions and + then the coercion arity *) | `Projection (** record projection *) + | `InversionPrinciple (** inversion principle *) ] type attribute = @@ -92,7 +95,7 @@ type term = | Cast of term * term (* value, type *) | Prod of name * term * term (* binder, source, target *) | Lambda of name * term * term (* binder, source, target *) - | LetIn of name * term * term (* binder, term, target *) + | LetIn of name * term * term * term (* binder, term, type, target *) | Appl of term list (* arguments *) | Const of UriManager.uri * (* uri, *) term explicit_named_substitution (* explicit named subst. *) @@ -156,7 +159,7 @@ and annterm = | ACast of id * annterm * annterm (* value, type *) | AProd of id * name * annterm * annterm (* binder, source, target *) | ALambda of id * name * annterm * annterm (* binder, source, target *) - | ALetIn of id * name * annterm * annterm (* binder, term, target *) + | ALetIn of id * name * annterm * annterm * annterm (* binder, term, type, target *) | AAppl of id * annterm list (* arguments *) | AConst of id * UriManager.uri * (* uri, *) annterm explicit_named_substitution (* explicit named subst. *) @@ -202,7 +205,7 @@ and annotation = and context_entry = (* A declaration or definition *) Decl of term - | Def of term * term option (* body, type (if known) *) + | Def of term * term (* body, type *) and hypothesis = (name * context_entry) option (* None means no more accessible *) @@ -211,7 +214,7 @@ and context = hypothesis list and anncontext_entry = (* A declaration or definition *) ADecl of annterm - | ADef of annterm + | ADef of annterm * annterm and annhypothesis = id * (name * anncontext_entry) option (* None means no more accessible *)