sig
  type t = Int | Real | Nonint
  val eq : Dom.t -> Dom.t -> bool
  val cmp : Dom.t -> Dom.t -> int
  val sub : Dom.t -> Dom.t -> bool
  val disjoint : Dom.t -> Dom.t -> bool
  val union : Dom.t -> Dom.t -> Dom.t
  exception Empty
  val inter : Dom.t -> Dom.t -> Dom.t
  val inj : Dom.t -> Dom.t option
  val multq : Mpa.Q.t -> Dom.t -> Dom.t
  val add : Dom.t -> Dom.t -> Dom.t
  val addl : Dom.t list -> Dom.t
  val expt : int -> Dom.t -> Dom.t
  val mult : Dom.t -> Dom.t -> Dom.t
  val multl : Dom.t list -> Dom.t
  val of_q : Mpa.Q.t -> Dom.t
  val mem : Mpa.Q.t -> Dom.t -> bool
  val pp : Dom.t Pretty.printer
  val to_string : Dom.t -> string
end