Shared_ast.Renamingval default_config : configval unbind_in : 
  context ->
  ('e, 'b) Bindlib.binder ->
  ('e, _) Catala_utils.Mark.ed Var.t * 'b * contextval unmbind_in : 
  context ->
  ('e, 'b) Bindlib.mbinder ->
  ('e, _) Catala_utils.Mark.ed Var.t Stdlib.Array.t * 'b * contextval set_rewriters : 
  ?scopes:
    (Shared_ast__.Definitions.ScopeName.t ->
      Shared_ast__.Definitions.ScopeName.t) ->
  ?topdefs:
    (Shared_ast__.Definitions.TopdefName.t ->
      Shared_ast__.Definitions.TopdefName.t) ->
  ?structs:
    (Shared_ast__.Definitions.StructName.t ->
      Shared_ast__.Definitions.StructName.t) ->
  ?fields:
    (Shared_ast__.Definitions.StructField.t ->
      Shared_ast__.Definitions.StructField.t) ->
  ?enums:
    (Shared_ast__.Definitions.EnumName.t ->
      Shared_ast__.Definitions.EnumName.t) ->
  ?constrs:
    (Shared_ast__.Definitions.EnumConstructor.t ->
      Shared_ast__.Definitions.EnumConstructor.t) ->
  context ->
  contextval typ : 
  context ->
  Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
  Shared_ast__.Definitions.naked_typ Catala_utils.Mark.posval expr : 
  context ->
  (('a Shared_ast__.Definitions.any, 'a Shared_ast__.Definitions.any, 'm)
     Shared_ast__.Definitions.base_gexpr,
    'm Shared_ast__.Definitions.mark)
    Catala_utils.Mark.ed ->
  (('a, 'a, 'm) Shared_ast__.Definitions.base_gexpr Bindlib.box,
    'm Shared_ast__.Definitions.mark)
    Catala_utils.Mark.edDisambiguates all variable names in e, and renames structs, fields, enums and constrs according to the given context configuration
val scope_name : 
  context ->
  Shared_ast__.Definitions.ScopeName.t ->
  Shared_ast__.Definitions.ScopeName.tval topdef_name : 
  context ->
  Shared_ast__.Definitions.TopdefName.t ->
  Shared_ast__.Definitions.TopdefName.tval struct_name : 
  context ->
  Shared_ast__.Definitions.StructName.t ->
  Shared_ast__.Definitions.StructName.tval enum_name : 
  context ->
  Shared_ast__.Definitions.EnumName.t ->
  Shared_ast__.Definitions.EnumName.tval code_items : 
  context ->
  (Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
    Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos) ->
  (((_ Shared_ast__.Definitions.any, _ Shared_ast__.Definitions.any, 'm)
      Shared_ast__.Definitions.base_gexpr,
     'm Shared_ast__.Definitions.mark)
     Catala_utils.Mark.ed as 'e,
    (((_ Shared_ast__.Definitions.any, _ Shared_ast__.Definitions.any, 'm)
        Shared_ast__.Definitions.base_gexpr,
       'm Shared_ast__.Definitions.mark)
       Catala_utils.Mark.ed as 'e)
      Shared_ast__.Definitions.code_item,
    (Shared_ast__.Definitions.code_export_kind
     * (((_ Shared_ast__.Definitions.any, _ Shared_ast__.Definitions.any, 'm)
           Shared_ast__.Definitions.base_gexpr,
          'm Shared_ast__.Definitions.mark)
          Catala_utils.Mark.ed as 'e))
      list)
    Shared_ast__.Definitions.bound_list ->
  ('e,
    'e Shared_ast__.Definitions.code_item,
    (Shared_ast__.Definitions.code_export_kind * 'e) list)
    Shared_ast__.Definitions.bound_list
  * contextval program : 
  reserved:string list ->
  skip_constant_binders:bool ->
  constant_binder_name:string option ->
  namespaced_fields:bool ->
  namespaced_constrs:bool ->
  prefix_module:bool ->
  modnames_conflict:bool ->
  ?f_var:(string -> string) ->
  ?f_struct:(string -> string) ->
  ?f_field:(string -> string) ->
  ?f_enum:(string -> string) ->
  ?f_constr:(string -> string) ->
  unit ->
  tRenames all idents (variables, types, struct and enum names, fields and constructors) to dispel ambiguities in the target language. Names in reserved, typically keywords and built-ins, will be avoided ; the meaning of the following three flags is described in Bindlib.Renaming.
if namespaced_fields (resp. _constrs) is true, then struct fields (resp. enum constructors) can reuse names from other fields/constructors or other idents.
if prefix_module is true, the qualifying module name is inserted within the ident string, separated with a . dot. This happens before sanitization.
if modnames_conflict is true, module names can conflict with type names, constructors and fields, and they will be avoided when renaming those.
The f_* optional arguments sanitize the different kinds of ids. The default is what is used for OCaml: project to ASCII, capitalise structs, enums (both modules in the backend) and constructors, lowercase fields, and rewrite variables to snake case.
In the returned program, it is safe to directly use `Bindlib.name_of` on variables for printing. The same is true for `StructName.get_info` etc.
val default : tBasic defaults for minimal renaming, without any reserved keywords, intended for printing intermediate ASTs