LazySets.jl
                                
                                 LazySets.jl copied to clipboard
                                
                                    LazySets.jl copied to clipboard
                            
                            
                            
                        Extended functionality for existing set types
This issue collects open tasks for set types that occurred while revisiting them in the course of #3047. This includes:
- implementing a more efficient method to improve a less efficient fallback method
- implementing a new method that is currently missing
- improving an existing implementation
Ball1
- constructor with default center = origin (as for Ellipsoid)
- area
- volume
- radius(B, Inf) = B.radius(for other- pthere should be a default method to call)
- chebyshev_center_radius
- constraints_list: fix case for radius 0 and avoid allocations with- Iterators.product
Ball2
- constructor with default center = origin (as for Ellipsoid)
- radius(B, Inf) = B.radius(for other- pthere should be a default method to call)
- distance
BallInf
- constructor with default center = origin (as for Ellipsoid)
- chebyshev_center_radius
Ballp
- constructor with default center = origin (as for Ellipsoid)
- area
- volumeformula
- chebyshev_center_radius(for- p > 2it is just the same radius; for- p < 2there is a calculation with the norm of- [1, …, 1])
- radius(B, Inf) = B.radius(for other- pthere should be a default method to call)
DensePolynomialZonotope
- minkowski_sum(Eq. (14) in [1])
- quadratic_mapof a- Zonotope(Theorem 1 in [1])
- overapproximatewith a- QuadraticMap(Corollary 1 in [1])
- reduce_order(Proposition 2 in [1])
[1] Reachability analysis of nonlinear systems using conservative polynomialization and non-convex sets
Ellipsoid
- area
- volume
- chebyshev_center_radius
- low/- high
- distance
HParallelotope
- order(=- return 1//1)
- generators
- σ
- ρ
- low/- high
- center(could be more efficient to take the midpoint of- lowand- high)
- ∈(checking each constraint directly should be more efficient)
- vertices_list
- translate
Hyperplane
- _linear_map_hrep_helper
- _σ_hyperplane_halfspacewith- Valarguments
Hyperrectangle
- translate!
Line
- isuniversal(witness case)
Line2D
- ρ(reuse from- Hyperplane, which gives- Infresults instead of errors, also for other default implementations like- low/- high)
- normalize
- distance
- reflect(x, L) = _reflect_point_hyperplane(x, L.a, L.b)
LineSegment
- high
- low
- norm
- radius
- diameter
- chebyshev_center_radius
- rectify
RotatedHyperrectangle
- generators
- rand
- ∈(same as- LinearMap, share the method)
- low/- high
VPolygon
- low/- high/- extremawith dimension argument
VPolytope
- low/- high/- extremawith dimension argument
- an_element(see- VPolygon)
ZeroSet
- low/- high/- extremawith dimension argument
Zonotope
- split!(instead of passing two- similarmatrices and using- copyto!, create a copy directly in- split!; but this is a public function)
- generalized 2D vertices list (see FIXME)
Bloating
- vertices_list(see- constraints_list)
- ∈(see- constraints_listor use- distance)
- isuniversal
- translate
Intersection
- ρ_helper: revisit whether- isemptyis reasonable (because it is expensive the first time)
all lazy operations
- is_polyhedral(see also- #3158)
AbstractSingleton
- extrema(2x)
- order
- radius
- norm
- ρ(d::SingleEntryVector, H)(generalize existing methods for- H::Hyperrectangleand- H::BallInf)
AbstractHyperrectangle
- vertices
box_approximation
- box_approximation(::MinkowskiSum): use- extremaand add the centers and radii
- turn specific methods into extremamethods for the set types instead- afterward let box_approximation(::ConvexHull)only use the"extrema"algorithm (and remove the algorithm argument)
 
- afterward let 
isdisjoint
- Hyperplane/- Hyperplanemethod: faster algorithm:- compare normal vectors (parallel or not); if equivalent, compare the offsets; otherwise they intersect