sig
  val map_type :
    (Flx_ast.typecode_t -> Flx_ast.typecode_t) ->
    Flx_ast.typecode_t -> Flx_ast.typecode_t
  val map_b0type :
    (Flx_types.b0typecode_t -> Flx_types.b0typecode_t) ->
    Flx_types.b0typecode_t -> Flx_types.b0typecode_t
  val map_btype :
    (Flx_types.btypecode_t -> Flx_types.btypecode_t) ->
    Flx_types.btypecode_t -> Flx_types.btypecode_t
  val iter_b0type :
    (Flx_types.b0typecode_t -> unit) -> Flx_types.b0typecode_t -> unit
  val iter_btype :
    (Flx_types.btypecode_t -> unit) -> Flx_types.btypecode_t -> unit
  val iter_tbexpr :
    (Flx_ast.bid_t -> unit) ->
    (Flx_types.tbexpr_t -> unit) ->
    (Flx_types.btypecode_t -> unit) -> Flx_types.tbexpr_t -> unit
  val map_expr :
    (Flx_ast.expr_t -> Flx_ast.expr_t) -> Flx_ast.expr_t -> Flx_ast.expr_t
  val map_tbexpr :
    (Flx_ast.bid_t -> Flx_ast.bid_t) ->
    (Flx_types.tbexpr_t -> Flx_types.tbexpr_t) ->
    (Flx_types.btypecode_t -> Flx_types.btypecode_t) ->
    Flx_types.tbexpr_t -> Flx_types.tbexpr_t
  val iter_bexe :
    (Flx_ast.bid_t -> unit) ->
    (Flx_types.tbexpr_t -> unit) ->
    (Flx_types.btypecode_t -> unit) ->
    (string -> unit) -> (string -> unit) -> Flx_types.bexe_t -> unit
  val map_bexe :
    (Flx_ast.bid_t -> Flx_ast.bid_t) ->
    (Flx_types.tbexpr_t -> Flx_types.tbexpr_t) ->
    (Flx_types.btypecode_t -> Flx_types.btypecode_t) ->
    (string -> string) ->
    (string -> string) -> Flx_types.bexe_t -> Flx_types.bexe_t
  val reduce_tbexpr :
    Flx_types.fully_bound_symbol_table_t ->
    Flx_types.tbexpr_t -> Flx_types.tbexpr_t
  val reduce_bexe :
    Flx_types.fully_bound_symbol_table_t ->
    Flx_types.bexe_t -> Flx_types.bexe_t
  val reduce_type : Flx_types.btypecode_t -> Flx_types.btypecode_t
end