package coq-core
Install
Dune Dependency
Authors
Maintainers
Sources
md5=66e57ea55275903bef74d5bf36fbe0f1
sha512=1a7eac6e2f58724a3f9d68bbb321e4cfe963ba1a5551b9b011db4b3f559c79be433d810ff262593d753770ee41ea68fbd6a60daa1e2319ea00dff64c8851d70b
doc/coq-core.pretyping/Reductionops/index.html
Module Reductionops
Source
Reduction Functions.
module CredNative :
Primred.RedNative
with type elem = EConstr.t
and type args = EConstr.t array
and type evd = Evd.evar_map
and type uinstance = EConstr.EInstance.t
Machinery to customize the behavior of the reduction
Support for reduction effects
val declare_reduction_effect :
effect_name ->
(Environ.env -> Evd.evar_map -> Constr.constr -> unit) ->
unit
val reduction_effect_hook :
Environ.env ->
Evd.evar_map ->
Names.Constant.t ->
Constr.constr Lazy.t ->
unit
type e_reduction_function =
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
Evd.evar_map * EConstr.constr
type stack_reduction_function =
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr * EConstr.constr list
Generic Optimized Reduction Function using Closures
Same as (strong whd_beta[delta][iota])
, but much faster on big terms
Lazy strategy, weak head reduction
Removes cast and put into applicative form
Head normal forms
Various reduction functions
val hnf_prod_app :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
EConstr.constr
val hnf_prod_appvect :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr array ->
EConstr.constr
val hnf_prod_applist :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr list ->
EConstr.constr
val hnf_lam_app :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
EConstr.constr
val hnf_lam_appvect :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr array ->
EConstr.constr
val hnf_lam_applist :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr list ->
EConstr.constr
val whd_decompose_prod :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
(Names.Name.t EConstr.binder_annot * EConstr.constr) list * EConstr.types
Decompose a type into a sequence of products and a non-product conclusion in head normal form, using head-reduction to expose the products
val whd_decompose_lambda :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
(Names.Name.t EConstr.binder_annot * EConstr.constr) list * EConstr.constr
Decompose a term into a sequence of lambdas and a non-lambda conclusion in head normal form, using head-reduction to expose the lambdas
val whd_decompose_prod_decls :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
EConstr.rel_context * EConstr.types
Decompose a type into a context and a conclusion not starting with a product or let-in, using head-reduction without zeta to expose the products and let-ins
val whd_decompose_prod_n :
Environ.env ->
Evd.evar_map ->
int ->
EConstr.types ->
(Names.Name.t EConstr.binder_annot * EConstr.constr) list * EConstr.types
Like whd_decompose_prod
but limited at n
products; raises Invalid_argument
if not enough products
val whd_decompose_lambda_n :
Environ.env ->
Evd.evar_map ->
int ->
EConstr.constr ->
(Names.Name.t EConstr.binder_annot * EConstr.constr) list * EConstr.constr
Like whd_decompose_lambda
but limited at n
lambdas; raises Invalid_argument
if not enough lambdas
val splay_arity :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
(Names.Name.t EConstr.binder_annot * EConstr.constr) list * EConstr.ESorts.t
Decompose an arity reducing let-ins; Raises Reduction.NotArity
val dest_arity :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.rel_context * EConstr.ESorts.t
Decompose an arity preserving let-ins; Raises Reduction.NotArity
Raises Reduction.NotArity
val whd_decompose_prod_n_assum :
Environ.env ->
Evd.evar_map ->
int ->
EConstr.types ->
EConstr.rel_context * EConstr.types
Extract the n first products of a type, preserving let-ins (but not counting them); Raises Invalid_argument
if not enough products
val whd_decompose_prod_n_decls :
Environ.env ->
Evd.evar_map ->
int ->
EConstr.types ->
EConstr.rel_context * EConstr.types
Extract the n first products of a type, counting and preserving let-ins; Raises Invalid_argument
if not enough products or let-ins
val whd_decompose_lambda_n_assum :
Environ.env ->
Evd.evar_map ->
int ->
EConstr.constr ->
EConstr.rel_context * EConstr.constr
Extract the n first lambdas of a term, preserving let-ins (but not counting them); Raises Invalid_argument
if not enough lambdas
val find_conclusion :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
(EConstr.constr,
EConstr.constr,
EConstr.ESorts.t,
EConstr.EInstance.t,
EConstr.ERelevance.t)
Constr.kind_of_term
Querying the kernel conversion oracle: opaque/transparent constants
Conversion Functions (uses closures, lazy strategy)
val is_conv :
?reds:TransparentState.t ->
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
bool
val is_conv_leq :
?reds:TransparentState.t ->
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
bool
val is_fconv :
?reds:TransparentState.t ->
Evd.conv_pb ->
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
bool
val check_conv :
?pb:Evd.conv_pb ->
?ts:TransparentState.t ->
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
bool
check_conv
Checks universe constraints only. pb defaults to CUMUL and ts to a full transparent state.
val infer_conv :
?catch_incon:bool ->
?pb:Evd.conv_pb ->
?ts:TransparentState.t ->
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
Evd.evar_map option
infer_conv
Adds necessary universe constraints to the evar map. pb defaults to CUMUL and ts to a full transparent state.
val infer_conv_ustate :
?catch_incon:bool ->
?pb:Evd.conv_pb ->
?ts:TransparentState.t ->
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
UnivProblem.Set.t option
val vm_infer_conv :
?pb:Evd.conv_pb ->
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
Evd.evar_map option
Conversion with inference of universe constraints
val native_infer_conv :
?pb:Evd.conv_pb ->
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
Evd.evar_map option
type genconv = {
genconv : 'a 'err. Evd.conv_pb -> l2r:bool -> Evd.evar_map -> TransparentState.t -> Environ.env -> ('a, 'err) Conversion.generic_conversion_function;
}
val infer_conv_gen :
genconv ->
?catch_incon:bool ->
?pb:Evd.conv_pb ->
?ts:TransparentState.t ->
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
Evd.evar_map option
infer_conv_gen
behaves like infer_conv
but is parametrized by a conversion function. Used to pretype vm and native casts.
val check_hyps_inclusion :
Environ.env ->
Evd.evar_map ->
Names.GlobRef.t ->
Constr.named_context ->
unit
Typeops.check_hyps_inclusion
but handles evars in the environment.
Heuristic for Conversion with Evar
val apply_rules :
(state -> state) ->
Environ.env ->
Evd.evar_map ->
EConstr.EInstance.t ->
Declarations.rewrite_rule list ->
Stack.t ->
Evd.econstr * Stack.t
val meta_instance :
Environ.env ->
Evd.evar_map ->
EConstr.constr Evd.freelisted ->
EConstr.constr
Meta-related reduction functions
val inferred_universes :
(UGraph.t * Univ.Constraints.t, UGraph.univ_inconsistency)
Conversion.universe_compare
Deprecated
val splay_prod :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
(Names.Name.t EConstr.binder_annot * EConstr.constr) list * EConstr.constr
val splay_lam :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
(Names.Name.t EConstr.binder_annot * EConstr.constr) list * EConstr.constr
val splay_prod_assum :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.rel_context * EConstr.constr
val splay_prod_n :
Environ.env ->
Evd.evar_map ->
int ->
EConstr.constr ->
EConstr.rel_context * EConstr.constr
val splay_lam_n :
Environ.env ->
Evd.evar_map ->
int ->
EConstr.constr ->
EConstr.rel_context * EConstr.constr
Re-deprecated in 8.19
val hnf_decompose_prod :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
(Names.Name.t EConstr.binder_annot * EConstr.constr) list * EConstr.types
val hnf_decompose_lambda :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
(Names.Name.t EConstr.binder_annot * EConstr.constr) list * EConstr.constr
val hnf_decompose_prod_decls :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
EConstr.rel_context * EConstr.types
val hnf_decompose_prod_n_decls :
Environ.env ->
Evd.evar_map ->
int ->
EConstr.types ->
EConstr.rel_context * EConstr.types
val hnf_decompose_lambda_n_assum :
Environ.env ->
Evd.evar_map ->
int ->
EConstr.constr ->
EConstr.rel_context * EConstr.constr