sig
  type 'a t = '-> 'QCheck.Iter.t
  val nil : 'QCheck.Shrink.t
  val unit : unit QCheck.Shrink.t
  val char : char QCheck.Shrink.t
  val char_numeral : char QCheck.Shrink.t
  val char_printable : char QCheck.Shrink.t
  val int : int QCheck.Shrink.t
  val int32 : int32 QCheck.Shrink.t
  val int64 : int64 QCheck.Shrink.t
  val option : 'QCheck.Shrink.t -> 'a option QCheck.Shrink.t
  val bytes : ?shrink:char QCheck.Shrink.t -> bytes QCheck.Shrink.t
  val string : ?shrink:char QCheck.Shrink.t -> string QCheck.Shrink.t
  val filter : ('-> bool) -> 'QCheck.Shrink.t -> 'QCheck.Shrink.t
  val int_aggressive : int QCheck.Shrink.t
  val list : ?shrink:'QCheck.Shrink.t -> 'a list QCheck.Shrink.t
  val list_spine : 'a list QCheck.Shrink.t
  val list_elems : 'QCheck.Shrink.t -> 'a list QCheck.Shrink.t
  val array : ?shrink:'QCheck.Shrink.t -> 'a array QCheck.Shrink.t
  val pair :
    'QCheck.Shrink.t -> 'QCheck.Shrink.t -> ('a * 'b) QCheck.Shrink.t
  val triple :
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t -> ('a * 'b * 'c) QCheck.Shrink.t
  val quad :
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t -> ('a * 'b * 'c * 'd) QCheck.Shrink.t
  val tup2 :
    'QCheck.Shrink.t -> 'QCheck.Shrink.t -> ('a * 'b) QCheck.Shrink.t
  val tup3 :
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t -> ('a * 'b * 'c) QCheck.Shrink.t
  val tup4 :
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t -> ('a * 'b * 'c * 'd) QCheck.Shrink.t
  val tup5 :
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t -> ('a * 'b * 'c * 'd * 'e) QCheck.Shrink.t
  val tup6 :
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t -> ('a * 'b * 'c * 'd * 'e * 'f) QCheck.Shrink.t
  val tup7 :
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t -> ('a * 'b * 'c * 'd * 'e * 'f * 'g) QCheck.Shrink.t
  val tup8 :
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h) QCheck.Shrink.t
  val tup9 :
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    'QCheck.Shrink.t ->
    ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i) QCheck.Shrink.t
end