RedexprInterpretation layer of redexprs such as hnf, cbv, etc.
type red_expr = (EConstr.constr, Evaluable.t, Pattern.constr_pattern, int) Genredexpr.red_expr_genval out_occurrences : Locus.occurrences_expr -> Locus.occurrencesval out_with_occurrences : 'a Locus.with_occurrences_expr -> 'a Locus.with_occurrencesval eval_red_expr : Environ.env -> red_expr -> red_expr_valval reduction_of_red_expr_val : ?occs:(Locus.occurrences * int) -> red_expr_val -> Reductionops.e_reduction_function * Constr.cast_kindval reduction_of_red_expr : Environ.env -> red_expr -> Reductionops.e_reduction_function * Constr.cast_kindComposition of reduction_of_red_expr_val with eval_red_expr
true if we should use the vm to verify the reduction
val declare_reduction : string -> Reductionops.reduction_function -> unitAdding a custom reduction (function to be use at the ML level) NB: the effect is permanent.
val declare_red_expr : bool -> string -> red_expr -> unitAdding a custom reduction (function to be called a vernac command). The boolean flag is the locality.
Opaque and Transparent commands.
val set_strategy : bool -> (Conv_oracle.level * Evaluable.t list) list -> unitSets the expansion strategy of a constant. When the boolean is true, the effect is non-synchronous (i.e. it does not survive section and module closure).
val cbv_vm : Reductionops.reduction_functioncall by value normalisation function using the virtual machine
val subst_red_expr : Mod_subst.substitution -> red_expr -> red_exprsubst_red_expr sub c performs the substitution sub on all kernel names appearing in c
val wit_red_expr : (Genredexpr.raw_red_expr, Genredexpr.glob_red_expr, red_expr) Genarg.genarg_typemodule Intern : sig ... endmodule Interp : sig ... endval interp_redexp_no_ltac : Environ.env -> Evd.evar_map -> Genredexpr.raw_red_expr -> Evd.evar_map * red_expr