sig
  module type T =
    sig
      type t
      val invalid : Id.T.t
      val is_valid : Id.T.t -> bool
      val equal : Id.T.t -> Id.T.t -> bool
      val hash : Id.T.t -> int
      val compare : Id.T.t -> Id.T.t -> int
    end
  module type Generator =
    sig
      type t
      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 -> Id.Generator.generator
      val fresh : Id.Generator.generator -> t
      val count : Id.Generator.generator -> int
      val iter : (t -> unit) -> Id.Generator.generator -> unit
      val fold : ('-> t -> 'a) -> '-> Id.Generator.generator -> 'a
    end
  module Nat :
    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
    end
  module Nat_generator :
    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 : ('-> t -> 'a) -> '-> generator -> 'a
    end
end

Hosted by the SourceForge.net Logo* web site.
*Other names and brands may be claimed as the property of others.