Mlsem_app.Configinclude module type of struct include Mlsem_system.Config endWhether generalization is restricted to expressions whose evaluation cannot have an effect (cf. Checker.generalize). Disabling it makes inference more permissive but unsound in the presence of mutable state.
Whether the reconstruction should try to infer intersection (overloaded) types for functions, by exploring the branches of a typecase separately even when the scrutinee's type does not decide between them. Disabling it makes inference cheaper and the inferred types simpler.
Whether a branch of an intersection whose exploration failed should be explored again in the other branches' domains. Disabling it makes reconstruction cheaper at the cost of precision.
val normalization_fun : (Mlsem_types.Ty.t -> Mlsem_types.Ty.t) Stdlib.refNormalization applied to a type before its emptiness is tested. It must return a type that is empty if and only if the argument is "empty enough" to be considered uninhabited — which is where assumptions about abstract types are injected (cf. Heuristics.normalize_empty_abstracts). Use Fun.id for no normalization.
val subst_normalization_fun :
(Mlsem_system.Heuristics.tally_context ->
Mlsem_types.Subst.t list ->
Mlsem_types.Subst.t list)
Stdlib.refNormalization applied to the set of solutions of a tallying instance. It may split, reorder or drop solutions, but every returned substitution must be a solution of the instance: the reconstruction relies on them being sound, not on them being complete (cf. Heuristics.normalize_abstract_factors). Use fun _ x -> x for no normalization.
include module type of struct include Mlsem_lang.Config endtype eval_order = Mlsem_lang.Config.eval_order = | LeftToRightEvaluates arguments left-to-right.
*)| RightToLeftEvaluates arguments right-to-left.
*)| UnknownOrderDefault. Evaluation order is unknown (and/or optional). Once started, evaluation cannot be aborted (e.g. Ternary, Join, Meet).
*)| AbortableEvaluation order is unknown (and/or optional). Evaluation can be aborted (e.g. Voidify, Try).
*)val void_ty : Mlsem_types.Ty.t Stdlib.refType given to expressions evaluated only for their effects (statements, loops, assignments).
val app_eval_order : eval_order Stdlib.refOrder in which a function and its argument are evaluated.
val tuple_eval_order : eval_order Stdlib.refval record_eval_order : eval_order Stdlib.refval cons_eval_order : eval_order Stdlib.refval ccustom_eval_order : (string, eval_order) Stdlib.Hashtbl.tEvaluation order of the arguments of a user-defined constructor, by name. Constructors absent from the table default to UnknownOrder.
val type_narrowing : narrowing Stdlib.ref