sig   type 'a t = Random.State.t -> 'a   val return : '-> 'QCheck.Arbitrary.t   val int : int -> int QCheck.Arbitrary.t   val int_range : start:int -> stop:int -> int QCheck.Arbitrary.t   val ( -- ) : int -> int -> int QCheck.Arbitrary.t   val small_int : int QCheck.Arbitrary.t   val split_int : int QCheck.Arbitrary.t -> (int * int) QCheck.Arbitrary.t   val bool : bool QCheck.Arbitrary.t   val char : char QCheck.Arbitrary.t   val alpha : char QCheck.Arbitrary.t   val float : float -> float QCheck.Arbitrary.t   val string : string QCheck.Arbitrary.t   val string_len : int QCheck.Arbitrary.t -> string QCheck.Arbitrary.t   val map : 'QCheck.Arbitrary.t -> ('-> 'b) -> 'QCheck.Arbitrary.t   val map' : ('-> 'b) -> 'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t   val list :     ?len:int QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t -> 'a list QCheck.Arbitrary.t   val opt : 'QCheck.Arbitrary.t -> 'a option QCheck.Arbitrary.t   val pair :     'QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t -> ('a * 'b) QCheck.Arbitrary.t   val triple :     'QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t -> ('a * 'b * 'c) QCheck.Arbitrary.t   val quad :     'QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t -> ('a * 'b * 'c * 'd) QCheck.Arbitrary.t   val list_repeat :     int -> 'QCheck.Arbitrary.t -> 'a list QCheck.Arbitrary.t   val array :     ?len:int QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t -> 'a array QCheck.Arbitrary.t   val array_repeat :     int -> 'QCheck.Arbitrary.t -> 'a array QCheck.Arbitrary.t   val among : 'a list -> 'QCheck.Arbitrary.t   val among_array : 'a array -> 'QCheck.Arbitrary.t   val shuffle : 'a array -> unit QCheck.Arbitrary.t   val choose : 'QCheck.Arbitrary.t list -> 'QCheck.Arbitrary.t   val ( ||| ) :     'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t   val fix :     ?max:int ->     base:'QCheck.Arbitrary.t ->     ('QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t) -> 'QCheck.Arbitrary.t   val fix_depth :     depth:int QCheck.Arbitrary.t ->     base:'QCheck.Arbitrary.t ->     ('QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t) -> 'QCheck.Arbitrary.t   val fail_fix : unit -> 'a   type 'a recursive_case =       [ `Base of 'QCheck.Arbitrary.t       | `Base_fuel of int -> 'QCheck.Arbitrary.t       | `Rec of (int -> 'a list QCheck.Arbitrary.t) -> 'QCheck.Arbitrary.t       | `Rec1 of 'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t       | `Rec2 of           'QCheck.Arbitrary.t ->           'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t       | `Rec_fuel of           (int -> 'a list QCheck.Arbitrary.t) -> int -> 'QCheck.Arbitrary.t ]   val fix_fuel :     'QCheck.Arbitrary.recursive_case list ->     int -> 'a option QCheck.Arbitrary.t   type ('a, 'state) general_recursive_case =       [ `Base of 'state -> 'QCheck.Arbitrary.t       | `Base_fuel of int -> 'state -> 'QCheck.Arbitrary.t       | `Rec of           (int -> ('state -> 'a) list QCheck.Arbitrary.t) ->           'state -> 'QCheck.Arbitrary.t       | `Rec1 of           ('state -> 'QCheck.Arbitrary.t) ->           'state -> 'QCheck.Arbitrary.t       | `Rec2 of           ('state -> 'QCheck.Arbitrary.t) ->           ('state -> 'QCheck.Arbitrary.t) ->           'state -> 'QCheck.Arbitrary.t       | `Rec_fuel of           (int -> ('state -> 'a) list QCheck.Arbitrary.t) ->           int -> 'state -> 'QCheck.Arbitrary.t ]   val fix_fuel_gen :     ('a, 'state) QCheck.Arbitrary.general_recursive_case list ->     int -> 'state -> 'a option QCheck.Arbitrary.t   val lift : ('-> 'b) -> 'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t   val lift2 :     ('-> '-> 'c) ->     'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t   val lift3 :     ('-> '-> '-> 'd) ->     'QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t   val lift4 :     ('-> '-> '-> '-> 'e) ->     'QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t   val ( >>= ) :     'QCheck.Arbitrary.t ->     ('-> 'QCheck.Arbitrary.t) -> 'QCheck.Arbitrary.t   val ( >|= ) : 'QCheck.Arbitrary.t -> ('-> 'b) -> 'QCheck.Arbitrary.t   val ( <*> ) :     ('-> 'b) QCheck.Arbitrary.t ->     'QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t   val pure : '-> 'QCheck.Arbitrary.t   val retry : 'a option QCheck.Arbitrary.t -> 'QCheck.Arbitrary.t   val generate :     ?n:int -> ?rand:Random.State.t -> 'QCheck.Arbitrary.t -> 'a list end