module ID : sig (** [t] is a ID within a range *) type t val create : int -> t (** [create num] is an ID [t] *) val incr : t -> t (** [incr id] is the next [id] in the sequence *) val to_string : t -> string (** [to_string id] is an string representation of [id] *) val pp : t -> string (** [pp id] is a pretty string representing [id] *) end