module Shrink:sig..end
Shrinking is used to reduce the size of a counter-example. It tries
to make the counter-example smaller by decreasing it, or removing
elements, until the property to test holds again; then it returns the
smallest value that still made the test fail.
type'at ='a -> 'a QCheck.Iter.t
val nil : 'a tval unit : unit tval char : char tval int : int t
val option : 'a t -> 'a option t
val string : string t
val int_aggressive : int tval list : ?shrink:'a t -> 'a list tshrink : if provided, will be used to also try to reduce
the elements of the list themselves (e.g. in an int list
one can try to decrease the integers).val array : ?shrink:'a t -> 'a array tshrink : see QCheck.Shrink.listval pair : 'a t -> 'b t -> ('a * 'b) tpair a b uses a to shrink the first element of tuples,
then tries to shrink the second element using b.
It is often better, when generating tuples, to put the "simplest"
element first (atomic type rather than list, etc.) because it will be
shrunk earlier. In particular, putting functions last might help.val triple : 'a t ->
'b t -> 'c t -> ('a * 'b * 'c) tQCheck.Shrink.pairval quad : 'a t ->
'b t ->
'c t ->
'd t -> ('a * 'b * 'c * 'd) tQCheck.Shrink.pair