Module Flambda2_simplify.Simplify_primitive_result
type t_simplified = private {simplified_named : Flambda2_simplify.Simplified_named.t Flambda2_term_basics.Or_invalid.t;try_reify : bool;dacc : Flambda2_simplify.Downwards_acc.t;
}val create :
Flambda2_terms.Flambda.Named.t ->
try_reify:bool ->
Flambda2_simplify.Downwards_acc.t ->
Flambda2_simplify.Simplify_primitive_result.tval create_simplified :
Flambda2_simplify.Simplified_named.t ->
try_reify:bool ->
Flambda2_simplify.Downwards_acc.t ->
Flambda2_simplify.Simplify_primitive_result.tval create_invalid :
Flambda2_simplify.Downwards_acc.t ->
Flambda2_simplify.Simplify_primitive_result.tval create_unit :
Flambda2_simplify.Downwards_acc.t ->
result_var:Flambda2_bound_identifiers.Bound_var.t ->
original_term:Flambda2_terms.Flambda.Named.t ->
Flambda2_simplify.Simplify_primitive_result.tval create_unknown :
Flambda2_simplify.Downwards_acc.t ->
result_var:Flambda2_bound_identifiers.Bound_var.t ->
Flambda2_kinds.Flambda_kind.t ->
original_term:Flambda2_terms.Flambda.Named.t ->
Flambda2_simplify.Simplify_primitive_result.toriginal_term is in the majority of cases the pre-simplification term corresponding to the primitive, but it is fine for it to be a new term, whose type is unknown.
val create_rewritten :
(body:Flambda2_terms.Flambda.Expr.t -> Flambda2_terms.Flambda.Expr.t) ->
Flambda2_simplify.Simplify_primitive_result.tval is_invalid : Flambda2_simplify.Simplify_primitive_result.t -> bool