JuliaReach / LazySets.jl

Scalable symbolic-numeric set computations in Julia
https://juliareach.github.io/LazySets.jl/
Other
226 stars 32 forks source link

Plot recipe for lazy operations of unions #3475

Open schillic opened 4 months ago

schillic commented 4 months ago

The default plot recipe uses epsilon-close approximation, which only works for nonconvex sets. Currently we only support plotting unions of convex sets like UnionSetArray but not lazy operations of such sets, like a LinearMap{M,UnionSetArray}.

We could add a method for that case, but that would be a lot of work because there are many cases, and since operations can also be arbitrarily nested, this would not be a general solution.

The proposal is to add a function to bring a set to a normal form, which is triggered by the plot recipe when the set is not convex. In this case it should recognize that LinearMap{M,UnionSetArray{N,T}} can be rewritten to UnionSetArray{N,LinearMap{M,T}}, and for such unions there is a plot recipe. Of course in general this function would be called recursively, and maybe combined with flatten. This normalization function does not have to be exported (only supposed to be used internally for plotting). Maybe a name could be _normalize_plot.