package coq-core
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
md5=5d1187d5e44ed0163f76fb12dabf012e
    
    
  sha512=91bc81530fa4f6498961583ad51eac5001f139881788b88e360a866ad8e2a6e2c5bce86d1a580ab4cd4782bf49d48318767df82471ce33ba3ac143e5569ad33c
    
    
  doc/coq-core.pretyping/Reductionops/index.html
Module ReductionopsSource
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.tMachinery 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) ->
  unitval reduction_effect_hook : 
  Environ.env ->
  Evd.evar_map ->
  Names.Constant.t ->
  Constr.constr Lazy.t ->
  unittype e_reduction_function =
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  Evd.evar_map * EConstr.constrtype stack_reduction_function =
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr * EConstr.constr listGeneric 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.constrval hnf_prod_appvect : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr array ->
  EConstr.constrval hnf_prod_applist : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr list ->
  EConstr.constrval hnf_lam_app : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr ->
  EConstr.constrval hnf_lam_appvect : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr array ->
  EConstr.constrval hnf_lam_applist : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr list ->
  EConstr.constrval whd_decompose_prod : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.types ->
  (Names.Name.t Context.binder_annot * EConstr.constr) list * EConstr.typesDecompose 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 Context.binder_annot * EConstr.constr) list * EConstr.constrDecompose 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.typesDecompose 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 Context.binder_annot * EConstr.constr) list * EConstr.typesLike 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 Context.binder_annot * EConstr.constr) list * EConstr.constrLike 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 Context.binder_annot * EConstr.constr) list * EConstr.ESorts.tDecompose an arity reducing let-ins; Raises Reduction.NotArity
val dest_arity : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.rel_context * EConstr.ESorts.tDecompose 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.typesExtract 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.typesExtract 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.constrExtract 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)
    Constr.kind_of_termQuerying 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 ->
  boolval is_conv_leq : 
  ?reds:TransparentState.t ->
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr ->
  boolval is_fconv : 
  ?reds:TransparentState.t ->
  Evd.conv_pb ->
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr ->
  boolval check_conv : 
  ?pb:Evd.conv_pb ->
  ?ts:TransparentState.t ->
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr ->
  boolcheck_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 optioninfer_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 optionval vm_infer_conv : 
  ?pb:Evd.conv_pb ->
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr ->
  Evd.evar_map optionConversion 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 optionval infer_conv_gen : 
  (Evd.conv_pb ->
    l2r:bool ->
    Evd.evar_map ->
    TransparentState.t ->
    Environ.env ->
    Evd.evar_map Conversion.generic_conversion_function) ->
  ?catch_incon:bool ->
  ?pb:Evd.conv_pb ->
  ?ts:TransparentState.t ->
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.constr ->
  Evd.evar_map optioninfer_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 ->
  unitTypeops.check_hyps_inclusion but handles evars in the environment.
Heuristic for Conversion with Evar
val meta_instance : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr Evd.freelisted ->
  EConstr.constrMeta-related reduction functions
Deprecated
val splay_prod : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  (Names.Name.t Context.binder_annot * EConstr.constr) list * EConstr.constrval splay_lam : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  (Names.Name.t Context.binder_annot * EConstr.constr) list * EConstr.constrval splay_prod_assum : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  EConstr.rel_context * EConstr.constrval splay_prod_n : 
  Environ.env ->
  Evd.evar_map ->
  int ->
  EConstr.constr ->
  EConstr.rel_context * EConstr.constrval splay_lam_n : 
  Environ.env ->
  Evd.evar_map ->
  int ->
  EConstr.constr ->
  EConstr.rel_context * EConstr.constrRe-deprecated in 8.19
val hnf_decompose_prod : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.types ->
  (Names.Name.t Context.binder_annot * EConstr.constr) list * EConstr.typesval hnf_decompose_lambda : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.constr ->
  (Names.Name.t Context.binder_annot * EConstr.constr) list * EConstr.constrval hnf_decompose_prod_decls : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.types ->
  EConstr.rel_context * EConstr.typesval hnf_decompose_prod_n_decls : 
  Environ.env ->
  Evd.evar_map ->
  int ->
  EConstr.types ->
  EConstr.rel_context * EConstr.typesval hnf_decompose_lambda_n_assum : 
  Environ.env ->
  Evd.evar_map ->
  int ->
  EConstr.constr ->
  EConstr.rel_context * EConstr.constr