Conversions between set representations

Conversion between set representations

This section of the manual lists the conversion functions between set representations.

Base.convertMethod.
convert(::Type{HPOLYGON1},
        P::HPOLYGON2) where {HPOLYGON1<:AbstractHPolygon,
                             HPOLYGON2<:AbstractHPolygon}

Convert between polygon types in H-representation.

Input

  • type – target type
  • P – source polygon

Output

The polygon represented as the target type.

Notes

We need the Union type for HPOLYGON1 because the target type must be concrete.

source
Base.convertMethod.
convert(T::Type{HPOLYGON}, P::VPolygon) where {HPOLYGON<:AbstractHPolygon}

Converts a polygon in vertex representation to a polygon in constraint representation.

Input

  • HPOLYGON – type used for dispatch
  • P – polygon in vertex representation

Output

A polygon in constraint representation.

source
Base.convertMethod.
convert(::Type{Hyperrectangle}, H::AbstractHyperrectangle)

Convert a hyperrectangular set to a hyperrectangle.

Input

  • Hyperrectangle – hyperrectangle type, used for dispatch
  • H – hyperrectangular set

Output

A hyperrectangle.

Examples

julia> convert(Hyperrectangle, Interval(0.0, 1.0))
Hyperrectangle{Float64}([0.5], [0.5])
source
Base.convertMethod.
convert(::Type{Interval}, H::AbstractHyperrectangle)

Converts a hyperrectangular set to an interval.

Input

  • Interval – interval type, used for dispatch
  • H – hyperrectangular set

Output

An interval.

Examples

julia> convert(Interval, Hyperrectangle{Float64}([0.5], [0.5]))
Interval{Float64,IntervalArithmetic.Interval{Float64}}([0, 1])
source
Base.convertMethod.
convert(::Type{Interval}, S::LazySet{N}) where {N<:Real}

Converts a convex set to an interval.

Input

  • Interval – interval type, used for dispatch
  • S – convex set

Output

An interval.

source
Base.convertMethod.
convert(::Type{Hyperrectangle},
        cpa::CartesianProductArray{N, HN}) where {N<:Real, HN<:AbstractHyperrectangle{N}}

Converts the cartesian product of a finite number of hyperrectangular sets to a single hyperrectangle.

Input

  • Hyperrectangle – type used for dispatch
  • S – cartesian product array of hyperrectangular set

Output

A hyperrectangle.

Algorithm

This implementation uses the center and radius_hyperrectangle methods of AbstractHyperrectangle.

source
Base.convertMethod.
convert(::Type{Hyperrectangle},
        cpa::CartesianProductArray{N, Interval{N}}) where {N<:Real}

Converts the cartesian product of a finite number of intervals to a single hyperrectangle.

Input

  • Hyperrectangle – type used for dispatch
  • S – cartesian product array of intervals

Output

A hyperrectangle.

Algorithm

This implementation uses the min and max methods of Interval to reduce the allocatons and improve performance (see LazySets#1143).

source
Base.convertMethod.
convert(::Type{HPOLYGON}, H::AbstractHyperrectangle) where
    {HPOLYGON<:AbstractHPolygon}

Converts a hyperrectangular set to a polygon in constraint representation.

Input

  • HPOLYGON – type used for dispatch
  • H – hyperrectangular set

Output

A polygon in constraint representation.

source
Base.convertMethod.
convert(::Type{HPOLYGON}, P::HPolytope{N}) where
    {N<:Real, HPOLYGON<:AbstractHPolygon}

Convert from 2D polytope in H-representation to polygon in H-representation.

Input

  • type – target type
  • P – source polytope (must be 2D)

Output

The 2D polytope represented as polygon.

source
Base.convertMethod.
convert(::Type{HPOLYGON}, S::AbstractSingleton{N}
       ) where {N<:Real, HPOLYGON<:AbstractHPolygon}

Convert from singleton to polygon in H-representation.

Input

  • type – target type
  • S – singleton

Output

A polygon in constraint representation with the minimal number of constraints (three).

source
Base.convertMethod.
convert(::Type{HPOLYGON}, L::LineSegment{N}
      ) where {N<:Real, HPOLYGON<:AbstractHPolygon}

Convert from line segment to polygon in H-representation.

Input

  • type – target type
  • L – line segment

Output

A flat polygon in constraint representation with the minimal number of constraints (four).

source
Base.convertMethod.
convert(::Type{HPolyhedron}, P::AbstractPolytope)

Convert a polytopic set to a polyhedron in H-representation.

Input

  • type – target type
  • P – source polytope

Output

The given polytope represented as a polyhedron in constraint representation.

source
Base.convertMethod.
convert(::Type{HPolytope}, P::AbstractHPolygon)

Convert from polygon in H-representation to polytope in H-representation.

Input

  • type – target type
  • P – source polygon

Output

The polygon represented as 2D polytope.

source
Base.convertMethod.
convert(::Type{HPolytope}, H::AbstractHyperrectangle)

Converts a hyperrectangular set to a polytope in constraint representation.

Input

  • HPolytope – type used for dispatch
  • H – hyperrectangular set

Output

A polytope in constraint representation.

source
Base.convertMethod.
convert(::Type{HPolytope}, P::AbstractPolytope)

Convert a polytopic set to a polytope in H-representation.

Input

  • type – target type
  • P – source polytope

Output

The given polytope represented as a polytope in constraint representation.

Algorithm

First the list of constraints of P is computed, then the corresponding HPolytope is created.

source
Base.convertMethod.
convert(::Type{HPolytope}, P::VPolytope)

Convert from polytope in V-representation to polytope in H-representation.

Input

  • type – target type
  • P – source polytope

Output

The polytope in the dual representation.

Algorithm

The tohrep function is invoked. It requires the Polyhedra package.

source
Base.convertMethod.
convert(::Type{VPolygon}, P::AbstractHPolygon)

Converts a polygon in constraint representation to a polygon in vertex representation.

Input

  • VPolygon – type used for dispatch
  • P – polygon in constraint representation

Output

A polygon in vertex representation.

source
Base.convertMethod.
convert(::Type{VPolygon}, P::AbstractPolytope)

Convert polytopic set to polygon in V-representation.

Input

  • type – target type
  • P – source polytope

Output

The 2D polytope represented as a polygon.

source
Base.convertMethod.
convert(::Type{VPolytope}, P::AbstractPolytope)

Convert polytopic type to polytope in V-representation.

Input

  • type – target type
  • P – source polytope

Output

The set P represented as a VPolytope.

source
Base.convertMethod.
convert(::Type{VPolytope}, P::HPolytope)

Convert from polytope in H-representation to polytope in V-representation.

Input

  • type – target type
  • P – source polytope

Output

The polytope in the dual representation.

Algorithm

The tovrep function is invoked. It requires the Polyhedra package.

source
Base.convertMethod.
convert(::Type{Zonotope}, H::AbstractHyperrectangle)

Converts a hyperrectangular set to a zonotope.

Input

  • Zonotope
  • H – hyperrectangular set

Output

A zonotope.

source
Base.convertMethod.
convert(::Type{IntervalArithmetic.IntervalBox}, H::AbstractHyperrectangle)

Converts a hyperrectangular set to an IntervalBox from IntervalArithmetic.

Input

  • IntervalBox – type used for dispatch
  • H – hyperrectangular set

Output

An IntervalBox.

source
Base.convertMethod.
convert(::Type{Hyperrectangle}, IB::IntervalArithmetic.IntervalBox)

Converts an IntervalBox from IntervalArithmetic to a hyperrectangular set.

Input

  • Hyperrectangle – type used for dispatch
  • IB – interval box

Output

A Hyperrectangle.

source
Base.convertMethod.
convert(::Type{Zonotope}, cp::CartesianProduct{N, Zonotope{N}, Zonotope{N}}) where {N<:Real}

Converts the cartesian product of two zonotopes to a new zonotope.

Input

  • Zonotope – type used for dispatch
  • S – cartesian product of two zonotopes

Output

A zonotope.

Algorithm

The cartesian product is obtained by:

  • Concatenating the centers of each input zonotope.
  • Arranging the generators in block-diagional fashion, and filled with zeros in the off-diagonal; for this reason, the generator matrix of the returned zonotope is built as a sparse matrix.
source
Base.convertMethod.
convert(::Type{Hyperrectangle},
        cp::CartesianProduct{N, HN1, HN2}) where {N<:Real, HN1<:AbstractHyperrectangle{N}, HN2<:AbstractHyperrectangle{N}}

Converts the cartesian product of two hyperrectangular sets to a single hyperrectangle.

Input

  • Hyperrectangle – type used for dispatch
  • S – cartesian product of two hyperrectangular sets

Output

A hyperrectangle.

Algorithm

The result is obtained by concatenating the center and radius of each hyperrectangle. This implementation uses the center and radius_hyperrectangle methods of AbstractHyperrectangle.

source
Base.convertMethod.
convert(::Type{Zonotope}, cp::CartesianProduct{N, HN1, HN2}) where {N<:Real,
    HN1<:AbstractHyperrectangle{N}, HN2<:AbstractHyperrectangle{N}}

Converts the cartesian product of two hyperrectangular sets to a zonotope.

Input

  • Zonotope – type, used for dispatch
  • cp – cartesian product of two hyperrectangular sets

Output

This method falls back to the conversion of the cartesian product to a single hyperrectangle, and then from a hyperrectangle to a zonotope.

source
Base.convertMethod.
convert(::Type{Zonotope}, cpa::CartesianProductArray{N, HN})
    where {N<:Real, HN<:AbstractHyperrectangle{N}}

Converts the cartesian product array of hyperrectangular sets to a zonotope.

Input

  • Zonotope – type, used for dispatch
  • cpa – cartesian product array of hyperrectangular sets

Output

A zonotope.

Algorithm

This method falls back to the conversion of the cartesian product to a single hyperrectangle, and then from a hyperrectangle to a zonotope.

source
Base.convertMethod.
convert(::Type{Zonotope},
        S::LinearMap{N, SN}
        ) where {N, SN<:AbstractHyperrectangle{N}}

Converts the lazy linear map of a hyperrectangular set to a zonotope.

Input

  • Zonotope – type, used for dispatch
  • S – linear map of a hyperrectangular set

Output

A zonotope.

Algorithm

This method first converts the hyperrectangular set to a zonotope, and then applies the (concrete) linear map to the zonotope.

source
Base.convertMethod.
convert(::Type{Zonotope}, S::LinearMap{N, CartesianProduct{N, HN1, HN2}}
       ) where {N, HN1<:AbstractHyperrectangle{N},
                HN2<:AbstractHyperrectangle{N}}

Converts the lazy linear map of the cartesian product of two hyperrectangular sets to a zonotope.

Input

  • Zonotope – type, used for dispatch
  • S – linear map of the cartesian product of hyperrectangular sets

Output

A zonotope.

Algorithm

This method first converts the cartesian product to a zonotope, and then applies the (concrete) linear map to the zonotope.

source
Base.convertMethod.
convert(::Type{Zonotope},S::LinearMap{N, CartesianProductArray{N, HN}}
       ) where {N, HN<:AbstractHyperrectangle{N}}

Converts the lazy linear map of the cartesian product of a finite number of hyperrectangular sets to a zonotope.

Input

  • Zonotope – type, used for dispatch
  • S – linear map of a CartesianProductArray of hyperrectangular sets

Output

A zonotope.

Algorithm

This method first converts the cartesian product array to a zonotope, and then applies the (concrete) linear map to the zonotope.

source