Evardefine
val env_nf_evar : Evd.evar_map -> Environ.env -> Environ.env
val env_nf_betaiotaevar : Evd.evar_map -> Environ.env -> Environ.env
type type_constraint = EConstr.types option
type val_constraint = EConstr.constr option
val empty_tycon : type_constraint
val mk_tycon : EConstr.constr -> type_constraint
val empty_valcon : val_constraint
val mk_valcon : EConstr.constr -> val_constraint
val evar_absorb_arguments : Environ.env -> Evd.evar_map -> EConstr.existential -> EConstr.constr list -> Evd.evar_map * EConstr.existential
Instantiate an evar by as many lambda's as needed so that its arguments are moved to the evar substitution (i.e. turn ?x[vars1:=args1] args
into ?y[vars1:=args1,vars:=args]
with vars1 |- ?x:=\vars.?y[vars1:=vars1,vars:=vars]
val split_as_array : Environ.env -> Evd.evar_map -> type_constraint -> Evd.evar_map * type_constraint
If the constraint can be made to look like array A
return A
, otherwise return None
(this makes later coercion possible).
val valcon_of_tycon : type_constraint -> val_constraint
val lift_tycon : int -> type_constraint -> type_constraint
val define_evar_as_product : Environ.env -> Evd.evar_map -> EConstr.existential -> Evd.evar_map * EConstr.types
val define_evar_as_lambda : Environ.env -> Evd.evar_map -> EConstr.existential -> Evd.evar_map * EConstr.types
val define_evar_as_sort : Environ.env -> Evd.evar_map -> EConstr.existential -> Evd.evar_map * Sorts.t
val pr_tycon : Environ.env -> Evd.evar_map -> type_constraint -> Pp.t
val presplit : Environ.env -> Evd.evar_map -> EConstr.t -> Evd.evar_map * EConstr.t
Used for bidi heuristic when typing lambdas. Transforms an applied evar to an evar with bigger context (ie ?X e
to ?X'@{y=e}
).