sig
  type state
  val create_state : unit -> ID.Erase.state
  val add_name : ID.Erase.state -> string -> ID.t -> unit
  val to_name :
    ?encode:(ID.t -> string -> string) -> ID.Erase.state -> ID.t -> string
  val of_name : ID.Erase.state -> string -> ID.t
end