Module Genredexpr

Reduction expressions

The parsing produces initially a list of red_atom

type 'a red_atom =
| FBeta
| FMatch
| FFix
| FCofix
| FZeta
| FConst of 'a list
| FDeltaBut of 'a list
| FHead

This list of atoms is immediately converted to a glob_red_flag

type strength =
| Norm
| Head
type 'a glob_red_flag = {
rStrength : strength;
rBeta : bool;
rMatch : bool;
rFix : bool;
rCofix : bool;
rZeta : bool;
rDelta : bool;(*

true = delta all but rConst; false = delta only on rConst

*)
rConst : 'a list;
}

Generic kinds of reductions

type ('b, 'c, 'occvar) red_context = ('occvar Locus.occurrences_gen * ('b'c) Util.union) option
type ('a, 'b, 'c, 'occvar, 'flags) red_expr_gen0 =
| Red
| Hnf
| Simpl of 'flags * ('b'c'occvar) red_context
| Cbv of 'flags
| Cbn of 'flags
| Lazy of 'flags
| Unfold of ('occvar Locus.occurrences_gen * 'b) list
| Fold of 'a list
| Pattern of ('occvar Locus.occurrences_gen * 'a) list
| ExtraRedExpr of string
| CbvVm of ('b'c'occvar) red_context
| CbvNative of ('b'c'occvar) red_context
type ('a, 'b, 'c, 'occvar) red_expr_gen = ('a'b'c'occvar'b glob_red_flag) red_expr_gen0
type ('a, 'b, 'c, 'occvar) may_eval =
| ConstrTerm of 'a
| ConstrEval of ('a'b'c'occvar) red_expr_gen * 'a
| ConstrContext of Names.lident * 'a
| ConstrTypeOf of 'a
type raw_red_expr = (r_trmr_cstr_patint Locus.or_var) red_expr_gen
type 'a and_short_name = 'a * Names.lident option
type glob_red_expr = (g_trmg_cstg_trmint Locus.or_var) red_expr_gen