sig
  type t
  type delayed = unit -> Typeable.TypeRep.t
  val compare : Typeable.TypeRep.t -> Typeable.TypeRep.t -> int
  val eq : Typeable.TypeRep.t -> Typeable.TypeRep.t -> bool
  val mkFresh :
    string -> Typeable.TypeRep.delayed list -> Typeable.TypeRep.delayed
  val mkTuple : Typeable.TypeRep.delayed list -> Typeable.TypeRep.delayed
  val mkPolyv :
    (string * Typeable.TypeRep.delayed option) list ->
    Typeable.TypeRep.delayed list -> Typeable.TypeRep.delayed
end