sig
  type namespace = Sort | Term | Attr | Decl | Module of string
  type t = { ns : Id.namespace; name : string; }
  val sort : namespace
  val term : namespace
  val attr : namespace
  val decl : namespace
  val mod_name : string -> namespace
  val hash : Id.t -> int
  val equal : Id.t -> Id.t -> bool
  val compare : Id.t -> Id.t -> int
  val mk : Id.namespace -> string -> Id.t
  val full_name : Id.t -> string
  val pp : Buffer.t -> Id.t -> unit
  val print : Format.formatter -> Id.t -> unit
end