Evardefineval env_nf_evar : Evd.evar_map -> Environ.env -> Environ.envval env_nf_betaiotaevar : Evd.evar_map -> Environ.env -> Environ.envtype type_constraint = EConstr.types optiontype val_constraint = EConstr.constr optionval empty_tycon : type_constraintval mk_tycon : EConstr.constr -> type_constraintval empty_valcon : val_constraintval mk_valcon : EConstr.constr -> val_constraintval evar_absorb_arguments :
Environ.env ->
Evd.evar_map ->
EConstr.existential ->
EConstr.constr list ->
Evd.evar_map * EConstr.existentialInstantiate 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_constraintIf 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_constraintval lift_tycon : int -> type_constraint -> type_constraintval define_evar_as_product :
Environ.env ->
Evd.evar_map ->
EConstr.existential ->
Evd.evar_map * EConstr.typesval define_evar_as_lambda :
Environ.env ->
Evd.evar_map ->
EConstr.existential ->
Evd.evar_map * EConstr.typesval define_evar_as_sort :
Environ.env ->
Evd.evar_map ->
EConstr.existential ->
Evd.evar_map * EConstr.ESorts.tval pr_tycon : Environ.env -> Evd.evar_map -> type_constraint -> Pp.tval presplit :
Environ.env ->
Evd.evar_map ->
EConstr.t ->
Evd.evar_map * EConstr.tUsed for bidi heuristic when typing lambdas. Transforms an applied evar to an evar with bigger context (ie ?X e to ?X'@{y=e}).