sig
type 'a gen = unit -> 'a
val fg : float gen
val cg : char gen
val nng : int gen
val uig : int gen
val pg : 'a gen -> 'b gen -> ('a * 'b) gen
val tg : 'a gen -> 'b gen -> 'c gen -> ('a * 'b * 'c) gen
val lg : 'a gen -> ?size_gen:int gen -> 'a list gen
val sg : ?char_gen:char gen -> ?size_gen:int gen -> string gen
val always : 'a -> 'a gen
val laws : int -> 'a gen -> ('a -> bool) -> 'a option
val laws_exn : string -> int -> 'a gen -> ('a -> bool) -> unit
val repeat : int -> ('a -> unit) -> 'a gen -> unit
end