sig
  type t = Mpzf.t
  val pp : Format.formatter -> ZZ.t -> unit
  val show : ZZ.t -> string
  val compare : ZZ.t -> ZZ.t -> int
  val equal : ZZ.t -> ZZ.t -> bool
  val leq : ZZ.t -> ZZ.t -> bool
  val lt : ZZ.t -> ZZ.t -> bool
  val hash : ZZ.t -> int
  val add : ZZ.t -> ZZ.t -> ZZ.t
  val mul : ZZ.t -> ZZ.t -> ZZ.t
  val zero : ZZ.t
  val one : ZZ.t
  val negate : ZZ.t -> ZZ.t
  val sub : ZZ.t -> ZZ.t -> ZZ.t
  val div : ZZ.t -> ZZ.t -> ZZ.t
  val modulo : ZZ.t -> ZZ.t -> ZZ.t
  val gcd : ZZ.t -> ZZ.t -> ZZ.t
  val lcm : ZZ.t -> ZZ.t -> ZZ.t
  val max : ZZ.t -> ZZ.t -> ZZ.t
  val min : ZZ.t -> ZZ.t -> ZZ.t
  val abs : ZZ.t -> ZZ.t
  val of_int : int -> ZZ.t
  val of_string : string -> ZZ.t
  val to_int : ZZ.t -> int option
end