(*i $Id$ i*) (*i*) open Names open Sign open Term (*i*) (* Untyped intermediate terms, after ASTs and before constr. *) type loc = int * int (* locs here refers to the ident's location, not whole pat *) (* the last argument of PatCstr is a possible alias ident for the pattern *) type cases_pattern = | PatVar of loc * name | PatCstr of loc * (constructor_path * identifier list) * cases_pattern list * name type rawsort = RProp of Term.contents | RType type binder_kind = BProd | BLambda | BLetIn type 'ctxt reference = | RConst of section_path * 'ctxt | RInd of inductive_path * 'ctxt | RConstruct of constructor_path * 'ctxt | RVar of identifier | REVar of int * 'ctxt type rawconstr = | RRef of loc * global_reference | RVar of loc * identifier | REvar of loc * existential_key | RMeta of loc * int | RApp of loc * rawconstr * rawconstr list | RLambda of loc * name * rawconstr * rawconstr | RProd of loc * name * rawconstr * rawconstr | RLetIn of loc * name * rawconstr * rawconstr | RCases of loc * Term.case_style * rawconstr option * rawconstr list * (identifier list * cases_pattern list * rawconstr) list | ROldCase of loc * bool * rawconstr option * rawconstr * rawconstr array | RRec of loc * fix_kind * identifier array * rawconstr array * rawconstr array | RSort of loc * rawsort | RHole of loc option | RCast of loc * rawconstr * rawconstr (*i - if PRec (_, names, arities, bodies) is in env then arities are typed in env too and bodies are typed in env enriched by the arities incrementally lifted [On pourrait plutot mettre les arités aves le type qu'elles auront dans le contexte servant à typer les body ???] - boolean in POldCase means it is recursive - option in PHole tell if the "?" was apparent or has been implicitely added i*) val dummy_loc : loc val loc_of_rawconstr : rawconstr -> loc val set_loc_of_rawconstr : loc -> rawconstr -> rawconstr val join_loc : loc -> loc -> loc