val apply_on_subexpressions : 
  (Flambda.t -> unit) ->
  (Flambda.named -> unit) ->
  Flambda.t ->
  unitApply the given functions to the immediate subexpressions of the given Flambda expression. For avoidance of doubt, if a subexpression is Expr, it is passed to the function taking Flambda.named, rather than being followed and passed to the function taking Flambda.t.
val map_subexpressions : 
  (Flambda.t -> Flambda.t) ->
  (Variable.t -> Flambda.named -> Flambda.named) ->
  Flambda.t ->
  Flambda.tval iter : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.t -> unitval iter_on_named : 
  (Flambda.t -> unit) ->
  (Flambda.named -> unit) ->
  Flambda.named ->
  unitval iter_named : (Flambda.named -> unit) -> Flambda.t -> unitval iter_named_on_named : (Flambda.named -> unit) -> Flambda.named -> unitval iter_toplevel : 
  (Flambda.t -> unit) ->
  (Flambda.named -> unit) ->
  Flambda.t ->
  unititer_toplevel f t applies f on every toplevel subexpression of t. In particular, it never applies f to the body of a function (which will always be contained within an Set_of_closures expression).
val iter_named_toplevel : 
  (Flambda.t -> unit) ->
  (Flambda.named -> unit) ->
  Flambda.named ->
  unitval iter_on_sets_of_closures : 
  (Flambda.set_of_closures -> unit) ->
  Flambda.t ->
  unitval iter_on_set_of_closures_of_program : 
  Flambda.program ->
  f:(constant:bool -> Flambda.set_of_closures -> unit) ->
  unitval iter_all_immutable_let_bindings : 
  Flambda.t ->
  f:(Variable.t -> Flambda.named -> unit) ->
  unitval iter_all_toplevel_immutable_let_bindings : 
  Flambda.t ->
  f:(Variable.t -> Flambda.named -> unit) ->
  unitval iter_exprs_at_toplevel_of_program : 
  Flambda.program ->
  f:(Flambda.t -> unit) ->
  unitval iter_named_of_program : 
  Flambda.program ->
  f:(Flambda.named -> unit) ->
  unitval iter_constant_defining_values_on_program : 
  Flambda.program ->
  f:(Flambda.constant_defining_value -> unit) ->
  unitval iter_apply_on_program : 
  Flambda.program ->
  f:(Flambda.apply -> unit) ->
  unitval map : 
  (Flambda.t -> Flambda.t) ->
  (Flambda.named -> Flambda.named) ->
  Flambda.t ->
  Flambda.tval map_named : (Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.tval map_toplevel : 
  (Flambda.t -> Flambda.t) ->
  (Flambda.named -> Flambda.named) ->
  Flambda.t ->
  Flambda.tval map_toplevel_named : 
  (Flambda.named -> Flambda.named) ->
  Flambda.t ->
  Flambda.tval map_symbols_on_set_of_closures : 
  Flambda.set_of_closures ->
  f:(Symbol.t -> Symbol.t) ->
  Flambda.set_of_closuresval map_toplevel_sets_of_closures : 
  Flambda.t ->
  f:(Flambda.set_of_closures -> Flambda.set_of_closures) ->
  Flambda.tval map_apply : Flambda.t -> f:(Flambda.apply -> Flambda.apply) -> Flambda.tval map_function_bodies : 
  Flambda.set_of_closures ->
  f:(Flambda.t -> Flambda.t) ->
  Flambda.set_of_closuresval map_sets_of_closures : 
  Flambda.t ->
  f:(Flambda.set_of_closures -> Flambda.set_of_closures) ->
  Flambda.tval map_sets_of_closures_of_program : 
  Flambda.program ->
  f:(Flambda.set_of_closures -> Flambda.set_of_closures) ->
  Flambda.programval map_project_var_to_expr_opt : 
  Flambda.t ->
  f:(Flambda.project_var -> Flambda.t option) ->
  Flambda.tval map_project_var_to_named_opt : 
  Flambda.t ->
  f:(Flambda.project_var -> Flambda.named option) ->
  Flambda.tval map_exprs_at_toplevel_of_program : 
  Flambda.program ->
  f:(Flambda.t -> Flambda.t) ->
  Flambda.programval map_named_of_program : 
  Flambda.program ->
  f:(Variable.t -> Flambda.named -> Flambda.named) ->
  Flambda.programval map_all_immutable_let_and_let_rec_bindings : 
  Flambda.t ->
  f:(Variable.t -> Flambda.named -> Flambda.named) ->
  Flambda.tval fold_function_decls_ignoring_stubs : 
  Flambda.set_of_closures ->
  init:'a ->
  f:
    (fun_var:Variable.t ->
      function_decl:Flambda.function_declaration ->
      'a ->
      'a) ->
  'a
