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