sig
  module type Number =
    sig
      type t
      val equal : QCheck2.Shrink.Number.t -> QCheck2.Shrink.Number.t -> bool
      val div :
        QCheck2.Shrink.Number.t ->
        QCheck2.Shrink.Number.t -> QCheck2.Shrink.Number.t
      val add :
        QCheck2.Shrink.Number.t ->
        QCheck2.Shrink.Number.t -> QCheck2.Shrink.Number.t
      val sub :
        QCheck2.Shrink.Number.t ->
        QCheck2.Shrink.Number.t -> QCheck2.Shrink.Number.t
      val of_int : int -> QCheck2.Shrink.Number.t
    end
  val number_towards :
    (module QCheck2.Shrink.Number with type t = 'a) ->
    destination:'-> '-> 'Stdlib.Seq.t
  val int_towards : int -> int -> int Stdlib.Seq.t
  val int32_towards : int32 -> int32 -> int32 Stdlib.Seq.t
  val int64_towards : int64 -> int64 -> int64 Stdlib.Seq.t
  val float_towards : float -> float -> float Stdlib.Seq.t
  val int_aggressive_towards : int -> int -> int Stdlib.Seq.t
  val int_aggressive : int -> int Stdlib.Seq.t
end