Fresheningtype subst = tval empty : tval is_empty : t -> boolval add_variable : t -> Variable.t -> Variable.t * tval add_variables' : t -> Variable.t list -> Variable.t list * tval add_variables : t -> (Variable.t * 'a) list -> (Variable.t * 'a) list * tval add_mutable_variable : t -> Mutable_variable.t -> Mutable_variable.t * tval add_static_exception : t -> Static_exception.t -> Static_exception.t * tval apply_variable : t -> Variable.t -> Variable.tval apply_mutable_variable : t -> Mutable_variable.t -> Mutable_variable.tval apply_static_exception : t -> Static_exception.t -> Static_exception.tval rewrite_recursive_calls_with_symbols :
t ->
Flambda.function_declarations ->
make_closure_symbol:(Closure_id.t -> Symbol.t) ->
Flambda.function_declarationsmodule Project_var : sig ... endval apply_function_decls_and_free_vars :
t ->
(Flambda.specialised_to * 'a) Variable.Map.t ->
Flambda.function_declarations ->
only_freshen_parameters:bool ->
(Flambda.specialised_to * 'a) Variable.Map.t
* Flambda.function_declarations
* t
* Project_var.tval does_not_freshen : t -> Variable.t list -> boolval print : Format.formatter -> t -> unitval freshen_projection_relation :
Flambda.specialised_to Variable.Map.t ->
freshening:t ->
closure_freshening:Project_var.t ->
Flambda.specialised_to Variable.Map.tval freshen_projection_relation' :
(Flambda.specialised_to * 'a) Variable.Map.t ->
freshening:t ->
closure_freshening:Project_var.t ->
(Flambda.specialised_to * 'a) Variable.Map.t