(***********************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* loc | RVar (loc,_) -> loc | REvar (loc,_) -> loc | RMeta (loc,_) -> loc | RApp (loc,_,_) -> loc | RLambda (loc,_,_,_) -> loc | RProd (loc,_,_,_) -> loc | RLetIn (loc,_,_,_) -> loc | RCases (loc,_,_,_,_) -> loc | ROldCase (loc,_,_,_,_) -> loc | RRec (loc,_,_,_,_) -> loc | RSort (loc,_) -> loc | RHole (loc,_) -> loc | RCast (loc,_,_) -> loc | RDynamic (loc,_) -> loc let set_loc_of_rawconstr loc = function | RRef (_,a) -> RRef (loc,a) | RVar (_,a) -> RVar (loc,a) | REvar (_,a) -> REvar (loc,a) | RMeta (_,a) -> RMeta (loc,a) | RApp (_,a,b) -> RApp (loc,a,b) | RLambda (_,a,b,c) -> RLambda (loc,a,b,c) | RProd (_,a,b,c) -> RProd (loc,a,b,c) | RLetIn (_,a,b,c) -> RLetIn (loc,a,b,c) | RCases (_,a,b,c,d) -> RCases (loc,a,b,c,d) | ROldCase (_,a,b,c,d) -> ROldCase (loc,a,b,c,d) | RRec (_,a,b,c,d) -> RRec (loc,a,b,c,d) | RSort (_,a) -> RSort (loc,a) | RHole (_,a) -> RHole (loc,a) | RCast (_,a,b) -> RCast (loc,a,b) | RDynamic (_,d) -> RDynamic (loc,d) let join_loc (deb1,_) (_,fin2) = (deb1,fin2) type 'a raw_red_flag = { rBeta : bool; rIota : bool; rZeta : bool; rDelta : bool; (* true = delta all but rConst; false = delta only on rConst*) rConst : 'a list } type ('a,'b) red_expr_gen = | Red of bool | Hnf | Simpl | Cbv of 'b raw_red_flag | Lazy of 'b raw_red_flag | Unfold of (int list * 'b) list | Fold of 'a list | Pattern of (int list * 'a) list | ExtraRedExpr of string * 'a type 'a or_metanum = AN of loc * 'a | MetaNum of loc * int type 'a may_eval = | ConstrTerm of 'a | ConstrEval of ('a, qualid or_metanum) red_expr_gen * 'a | ConstrContext of (loc * identifier) * 'a | ConstrTypeOf of 'a