Previously, ShrinkStrategy::compute_shrink_sizes(abs1, abs2) computed the new
size for abs2 independently of the size of abs1, always shrinking down to the
"balanced size" (= \sqrt(max_states)), thus possibly wasting space when abs2 was
bigger than this balanced size, but abs1 was very small.
We want to change this to be symmetric, i.e. whenever one of the two
abstractions' sizes is below the balanced size, the other one may use the
remaining space. If both abstractions are too big, both are shrunk to the
balanced size. This may be not space-optimal in certain cases.
|