sig
  type !'a t
  val make : unit -> 'Type.Id.t
  val uid : 'Type.Id.t -> int
  val provably_equal :
    'Type.Id.t -> 'Type.Id.t -> ('a, 'b) Type.eq option
end