Optional Features
This section summarizes each optional dependency and the features available when used together with LazySets.jl
. Internally, optional dependencies in Julia are handled with the package Requires.jl.
Installing all dependencies
Use the following command to install all optional dependencies. Installing all optional dependencies is required if you want to run the full test suite and build the documentation locally.
julia> import Pkg; Pkg.add(["CDDLib",
"Distributions",
"Documenter",
"Expokit",
"ExponentialUtilities",
"IntervalMatrices",
"Makie",
"Optim",
"Polyhedra",
"RecipesBase",
"StaticArrays",
"Symbolics",
"TaylorModels"])
Documentation
To build the project's documentation locally you need to install Documenter.jl.
Dependency | Features |
---|---|
Documenter | Building the package's documentation. |
LaTeXStrings | Input and display of LaTeX equation strings, used in plots. |
Exponential backends
Exponential backends are used to compute the action of matrix exponentials over sets lazily, e.g. $\rho(d, e^{A \delta} X)$ for $A$ large and sparse.
Dependency | Features |
---|---|
ExponentialUtilities | Utility functions for exponential integrators from the SciML scientific machine learning ecosystem. |
Expokit | Julia implementation of EXPOKIT routines. |
Interval methods
For validated numerics, we build upon the Julia ecosystem JuliaIntervals. The package IntervalArithmetic.jl, which is a hard dependency of LazySets, implements rigorous floating-point calculations using interval arithmetic in Julia and is the basis for the implementation of Interval
. There are other interval packages that can also be used in conjunction with LazySets and provide additional functionality.
The package IntervalLinearAlgebra
is not an optional dependency of LazySets, but these packages can be used in conjunction to compute solution sets of interval linear systems.
Dependency | Features |
---|---|
IntervalConstraintProgramming | Conservative polyhedral approximation of a region defined implicitly via nonlinear constraints. |
IntervalMatrices | Set operations that involve matrices whose coefficients are intervals. |
TaylorModels | Taylor expansion of functions with rigorous interval remainder. |
Optimization algorithms
Some computations require use of external numerical optimization solvers. The modeling language JuMP
is loaded by default, together with the GLPK solver for linear programs (LPs). Other solvers can be loaded on-demand, even commercial ones, provided that you have the appropriate license. See JuMP's documentation page on supported solvers for further details.
For other uses, such as line search methods to compute the support function of lazy intersections of certain sets, Optim
can be optionally loaded.
Dependency | Features |
---|---|
Optim | Optimization package in pure Julia. |
Polyhedral computations
The optional package Polyhedra.jl is required whenever you want to work with concrete polyhedra representations in dimension higher than 2, e.g. to solve the vertex enumeration problem (converting from constraint to vertex representation of a polytope). While Polyhedra implements its own default backend, it is also possible to load external ones, such as cdd through CDDLib.jl. For a list of available polyhedra backends, see the website of the JuliaPolyhedra ecosystem.
Dependency | Features |
---|---|
Polyhedra | Concrete polyhedra library. |
CDDLib | Polyhedral computations backend. |
Random sampling and triangulation
Dependency | Features |
---|---|
Distributions | Random sampling. |
MiniQhull | Voronoi-Delaunay triangulation of LazySets types. |
Special array types
Dependency | Features |
---|---|
StaticArrays | Statically defined arrays. |
Symbolic utilities
Dependency | Features |
---|---|
Symbolics | Create sets using symbolic expressions. |
Visualization
As in other Julia packages, the user has to manually install and load the package Plots
in order to produce visual results. As a plotting backend we recommend using GR, which is the default backend and is automatically installed together with Plots.
Dependency | Features |
---|---|
Makie | Mainly for 3D and interactive plots. |
Plots | Mainly 2D plots. |