Union
Binary set union (UnionSet)
LazySets.UnionSet — TypeUnionSet{N, S1<:LazySet{N}, S2<:LazySet{N}} <: LazySet{N}Type that represents the set union of two sets.
Fields
X– setY– set
Notes
The union of convex sets is typically not convex.
The convenience alias ∪ can be typed by \cup<tab>.
LazySets.swap — Methodswap(cup::UnionSet)Return a new UnionSet object with the arguments swapped.
Input
cup– union of two sets
Output
A new UnionSet object with the arguments swapped.
LazySets.API.dim — Methoddim(cup::UnionSet)Return the dimension of the union of two sets.
Input
cup– union of two sets
Output
The ambient dimension of the union of two sets.
LazySets.API.σ — Methodσ(d::AbstractVector, cup::UnionSet; [algorithm]="support_vector")Return a support vector of the union of two sets in a given direction.
Input
d– directioncup– union of two setsalgorithm– (optional, default: "supportvector"): the algorithm to compute the support vector; if "supportvector", use the support vector of each argument; if "support_function" use the support function of each argument and evaluate the support vector of only one of them
Output
A support vector in the given direction.
Algorithm
The support vector of the union of two sets $X$ and $Y$ can be obtained as the vector that maximizes the support function of either $X$ or $Y$, i.e., it is sufficient to find the $\argmax(ρ(d, X), ρ(d, Y)])$ and evaluate its support vector.
The default implementation, with option algorithm="support_vector", computes the support vector of $X$ and $Y$ and then compares the support function using a dot product.
If the support function can be computed more efficiently, the alternative implementation algorithm="support_function" can be used, which evaluates the support function of each set directly and then calls only the support vector of either $X$ or $Y$.
LazySets.API.ρ — Methodρ(d::AbstractVector, cup::UnionSet)Evaluate the support function of the union of two sets in a given direction.
Input
d– directioncup– union of two sets
Output
The evaluation of the support function in the given direction.
Algorithm
The support function of the union of two sets $X$ and $Y$ evaluates to the maximum of the support-function evaluations of $X$ and $Y$.
LazySets.API.an_element — Methodan_element(cup::UnionSet)Return some element of the union of two sets.
Input
cup– union of two sets
Output
An element in the union of two sets.
Algorithm
We use an_element on the first non-empty wrapped set.
Base.:∈ — Method∈(x::AbstractVector, cup::UnionSet)Check whether a given point is contained in the union of two sets.
Input
x– point/vectorcup– union of two sets
Output
true iff $x ∈ cup$.
Base.isempty — Methodisempty(cup::UnionSet)Check whether the union of two sets is empty.
Input
cup– union of two sets
Output
true iff the union is empty.
LazySets.API.isbounded — Methodisbounded(cup::UnionSet)Check whether the union of two sets is bounded.
Input
cup– union of two sets
Output
true iff the union is bounded.
LazySets.API.vertices_list — Methodvertices_list(cup::UnionSet; [apply_convex_hull]::Bool=false,
[backend]=nothing)Return the list of vertices of the union of two sets.
Input
cup– union of two setsapply_convex_hull– (optional, default:false) iftrue, post-process the vertices using a convex-hull algorithmbackend– (optional, default:nothing) backend for computing the convex hull (see argumentapply_convex_hull)
Output
The list of vertices, possibly reduced to the list of vertices of the convex hull.
$n$-ary set union (UnionSetArray)
LazySets.UnionSetArray — TypeUnionSetArray{N, S<:LazySet{N}} <: LazySet{N}
Type that represents the set union of a finite number of sets.
Fields
array– array of sets
Notes
The union of convex sets is typically not convex.
LazySets.UnionSet! — FunctionUnionSet!(X, Y)Convenience function to compute the lazy union and modify UnionSetArrays in-place.
LazySets.API.dim — Methoddim(cup::UnionSetArray)
Return the dimension of the union of a finite number of sets.
Input
cup– union of a finite number of sets
Output
The ambient dimension of the union of a finite number of sets, or 0 if there is no set in the array.
LazySets.array — Methodarray(cup::UnionSetArray)
Return the array of the union of a finite number of sets.
Input
cup– union of a finite number of sets
Output
The array of the union.
LazySets.API.σ — Methodσ(d::AbstractVector, cup::UnionSetArray; [algorithm]="support_vector")
Return a support vector of the union of a finite number of sets in a given direction.
Input
d– directioncup– union of a finite number of setsalgorithm– (optional, default: "supportvector"): the algorithm to compute the support vector; if "supportvector", use the support vector of each argument; if "support_function", use the support function of each argument and evaluate the support vector of only one of them
Output
A support vector in the given direction.
Algorithm
The support vector of the union of a finite number of sets $X₁, X₂, ...$ can be obtained as the vector that maximizes the support function, i.e., it is sufficient to find the $\argmax([ρ(d, X₂), ρ(d, X₂), ...])$ and evaluate its support vector.
The default implementation, with option algorithm="support_vector", computes the support vector of all $X₁, X₂, ...$ and then compares the support function using the dot product.
If the support function can be computed more efficiently, the alternative implementation algorithm="support_function" can be used, which evaluates the support function of each set directly and then calls only the support vector of one of the $Xᵢ$.
LazySets.API.ρ — Methodρ(d::AbstractVector, cup::UnionSetArray)
Evaluate the support function of the union of a finite number of sets in a given direction.
Input
d– directioncup– union of a finite number of sets
Output
The evaluation of the support function in the given direction.
Algorithm
The support function of the union of a finite number of sets $X₁, X₂, ...$ can be obtained as the maximum of $ρ(d, X₂), ρ(d, X₂), ...$.
LazySets.API.an_element — Methodan_element(cup::UnionSetArray)
Return some element of the union of a finite number of sets.
Input
cup– union of a finite number of sets
Output
An element in the union of a finite number of sets.
Algorithm
We use an_element on the first non-empty wrapped set.
Base.:∈ — Method∈(x::AbstractVector, cup::UnionSetArray)
Check whether a given point is contained in the union of a finite number of sets.
Input
x– point/vectorcup– union of a finite number of sets
Output
true iff $x ∈ cup$.
Base.isempty — Methodisempty(cup::UnionSetArray)
Check whether the union of a finite number of sets is empty.
Input
cup– union of a finite number of sets
Output
true iff the union is empty.
LazySets.API.isbounded — Methodisbounded(cup::UnionSetArray)
Check whether the union of a finite number of sets is bounded.
Input
cup– union of a finite number of sets
Output
true iff the union is bounded.
LazySets.API.vertices_list — Methodvertices_list(cup::UnionSetArray; [apply_convex_hull]::Bool=false,
[backend]=nothing)Return a list of vertices of the union of a finite number of sets.
Input
cup– union of a finite number of setsapply_convex_hull– (optional, default:false) iftrue, post-process the vertices using a convex-hull algorithmbackend– (optional, default:nothing) backend for computing the convex hull (see argumentapply_convex_hull)
Output
A list of vertices, possibly reduced to the list of vertices of the convex hull.