functor (X : Map.OrderedType->
  sig
    type elt = X.t
    type t
    val size : t -> int
    val cardinal : t -> Z.t
    val empty : t
    val is_empty : t -> bool
    val mem : t -> elt -> bool
    val find : t -> elt -> Z.t
    val singleton : elt -> t
    val doubleton : elt -> elt -> t
    val add : t -> elt -> t
    val add_coeff : t -> elt -> Z.t -> t
    val union : t -> t -> t
    val intersection : t -> t -> t
    val sum : t -> t -> t
    val difference : t -> t -> t
    val product : Z.t -> t -> t
    val filter : (elt -> Z.t -> bool) -> t -> t
    val map : (elt -> elt) -> t -> t
    val map_coeff : (elt -> Z.t -> Z.t) -> t -> t
    val filter_map : (elt -> Z.t -> (elt * Z.t) option) -> t -> t
    val flat_map : (elt -> t) -> t -> t
    module Seq :
      sig
        val of_seq : t -> elt Sequence.t -> t
        val to_seq : t -> elt Sequence.t
        val of_coeffs : t -> (elt * Z.t) Sequence.t -> t
        val to_coeffs : t -> (elt * Z.t) Sequence.t
      end
    val iter : (elt -> unit) -> t -> unit
    val fold : ('-> elt -> 'a) -> '-> t -> 'a
    val iter_coeffs : (elt -> Z.t -> unit) -> t -> unit
    val fold_coeffs : ('-> elt -> Z.t -> 'a) -> '-> t -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val choose : t -> elt
    val of_list : elt list -> t
    val of_coeffs : (elt * Z.t) list -> t
    val of_iarray : elt IArray.t -> t
    val of_array : elt array -> t
    val to_list : t -> (elt * Z.t) list
    val eq : t -> t -> bool
    val cancel : t -> t -> t * t
    val compare : t -> t -> int
    val compare_partial :
      (elt -> elt -> Comparison.t) -> t -> t -> Comparison.t
    val is_max : (elt -> elt -> Comparison.t) -> elt -> t -> bool
    val max : (elt -> elt -> Comparison.t) -> t -> t
    val max_seq : (elt -> elt -> Comparison.t) -> t -> (elt, Z.t) Sequence.t2
    val max_l : (elt -> elt -> Comparison.t) -> elt list -> elt list
    val compare_partial_l :
      (elt -> elt -> Comparison.t) -> elt list -> elt list -> Comparison.t
    val pp : elt CCFormat.printer -> t CCFormat.printer
  end