Module Flambda2_simplify.Simplify_primitive_result
type t_simplified = private {simplified_named : Simplified_named.t Flambda2_term_basics.Or_invalid.t;try_reify : bool;dacc : Downwards_acc.t;
}val create :
Flambda2_terms.Flambda.Named.t ->
try_reify:bool ->
Downwards_acc.t ->
tval create_simplified :
Simplified_named.t ->
try_reify:bool ->
Downwards_acc.t ->
tval create_invalid : Downwards_acc.t -> tval create_unit :
Downwards_acc.t ->
result_var:Flambda2_bound_identifiers.Bound_var.t ->
original_term:Flambda2_terms.Flambda.Named.t ->
tval create_unknown :
Downwards_acc.t ->
result_var:Flambda2_bound_identifiers.Bound_var.t ->
Flambda2_kinds.Flambda_kind.t ->
original_term:Flambda2_terms.Flambda.Named.t ->
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) ->
tval is_invalid : t -> boolval map_dacc : t -> (Downwards_acc.t -> Downwards_acc.t) -> t