Module Reduction

val whd_all : Environ.env -> Constr.constr -> Constr.constr
val beta_applist : Constr.constr -> Constr.constr list -> Constr.constr

Builds an application node, reducing beta redexes it may produce.

val beta_appvect : Constr.constr -> Constr.constr array -> Constr.constr

Builds an application node, reducing beta redexes it may produce.

val beta_app : Constr.constr -> Constr.constr -> Constr.constr

Builds an application node, reducing beta redexe it may produce.

val hnf_prod_applist : Environ.env -> Constr.types -> Constr.constr list -> Constr.types

Pseudo-reduction rule Prod(x,A,B) a --> Bx\a

val hnf_prod_applist_decls : Environ.env -> int -> Constr.types -> Constr.constr list -> Constr.types

In hnf_prod_applist_decls n c args, c is supposed to (whd-)reduce to the form ∀Γ.t with Γ of length n and possibly with let-ins; it returns t with the assumptions of Γ instantiated by args and the local definitions of Γ expanded.

val betazeta_appvect : int -> Constr.constr -> Constr.constr array -> Constr.constr

Compatibility alias for Term.lambda_appvect_decls

val whd_decompose_prod : Environ.env -> Constr.types -> Constr.rel_context * Constr.types
val whd_decompose_prod_decls : Environ.env -> Constr.types -> Constr.rel_context * Constr.types
val whd_decompose_lambda : Environ.env -> Constr.constr -> Constr.rel_context * Constr.constr
val whd_decompose_lambda_decls : Environ.env -> Constr.constr -> Constr.rel_context * Constr.constr
val whd_decompose_lambda_n_assum : Environ.env -> int -> Constr.constr -> Constr.rel_context * Constr.constr

This is typically the function to use to extract the context of a Fix not already in normal form up to and including the decreasing argument, counting as many lambda's as given by the decreasing index + 1

exception NotArity
val dest_arity : Environ.env -> Constr.types -> Term.arity
val is_arity : Environ.env -> Constr.types -> bool
val eta_expand : Environ.env -> Constr.constr -> Constr.types -> Constr.constr
val dest_prod : Environ.env -> Constr.types -> Constr.rel_context * Constr.types
val dest_prod_assum : Environ.env -> Constr.types -> Constr.rel_context * Constr.types
val dest_lam : Environ.env -> Constr.constr -> Constr.rel_context * Constr.constr
val dest_lam_assum : Environ.env -> Constr.constr -> Constr.rel_context * Constr.constr
val hnf_decompose_prod : Environ.env -> Constr.types -> Constr.rel_context * Constr.types
val hnf_decompose_prod_decls : Environ.env -> Constr.types -> Constr.rel_context * Constr.types
val hnf_decompose_lambda : Environ.env -> Constr.constr -> Constr.rel_context * Constr.constr
val hnf_decompose_lambda_decls : Environ.env -> Constr.constr -> Constr.rel_context * Constr.constr
val hnf_decompose_lambda_n_decls : Environ.env -> int -> Constr.constr -> Constr.rel_context * Constr.constr