sig
type t = int
val invalid : t
val is_valid : t -> bool
val equal : t -> t -> bool
val hash : t -> int
val compare : t -> t -> int
type generator
val new_generator : unit -> generator
val fresh : generator -> t
val count : generator -> int
val iter : (t -> unit) -> generator -> unit
val fold : ('a -> t -> 'a) -> 'a -> generator -> 'a
end