Instead of an intersection of HalfSpaces we can often create more efficient set representations, like Hyperrectangles.
In particular, since we add the affine term via a CartesianProduct with a Singleton([1]) to each set in U, one should detect this pattern and simplify (S * H1) ∩ (S * H2) = S * (H1 ∩ H2) = S * Box.
(This is a long-term nice-to-have thing.)
Instead of an intersection of
HalfSpace
s we can often create more efficient set representations, likeHyperrectangle
s.In particular, since we add the affine term via a
CartesianProduct
with aSingleton([1])
to each set inU
, one should detect this pattern and simplify(S * H1) ∩ (S * H2) = S * (H1 ∩ H2) = S * Box
.