sig
  type 'a t
  module Uid : Unique_id_intf.Id
  val uid : 'Type_equal.Id.t -> Uid.t
  val create : name:string -> 'Type_equal.Id.t
  val hash : 'Type_equal.Id.t -> int
  val name : 'Type_equal.Id.t -> string
  val same : 'Type_equal.Id.t -> 'Type_equal.Id.t -> bool
  val same_witness :
    'Type_equal.Id.t ->
    'Type_equal.Id.t -> ('a, 'b) Type_equal.equal Or_error.t
  val same_witness_exn :
    'Type_equal.Id.t -> 'Type_equal.Id.t -> ('a, 'b) Type_equal.equal
  val sexp_of_t :
    ('-> Sexplib.Sexp.t) -> 'Type_equal.Id.t -> Sexplib.Sexp.t
end