functor (X : HashedType->
  sig
    type elt = X.t
    val hashcons : elt -> elt
    val mem : elt -> bool
    val fresh_unique_id : unit -> int
    val stats : unit -> int * int * int * int * int * int
  end