fun shrink(value: List<A>): List<List<A>>
Returns the "next level" of shrinks for the given value, or empty list if a "base case" has been reached. For example, to shrink an int k we may decide to return k/2 and k-1.