Identifiers have abstract types, but are comparable so they can be used as keys in maps or sets. Their underlying information can be retrieved at any time.

type t
type info
val fresh : info -> t
val get_info : t -> info
val compare : t -> t -> int
val format_t : Format.formatter -> t -> unit
val hash : t -> int