Abstract

LazySets.jl is a Julia library that provides ways to symbolically represent sets of points as geometric shapes, with a special focus on convex sets and polyhedral approximations. LazySets provides methods to apply common set operations, convert between different set representations, and efficiently compute with sets in high dimensions using specialized algorithms based on the set types. LazySets is the core library of JuliaReach, a cutting-edge software addressing the fundamental problem of reachability analysis: computing the set of states that are reachable by a dynamical system from all initial states and for all admissible inputs and parameters. While the library was originally designed for reachability and formal verification, its scope goes beyond such topics. LazySets is an easy-to-use, general-purpose and scalable library for computations that mix symbolics and numerics. In this article we showcase the basic functionality, highlighting some of the key design choices.

Highlights

  • LazySets.jl is an open-source Julia package for calculus with geometric sets of points in Euclidean space

  • The main advantage of using the support function in LazySets lies in the extensive use of composition rules, as we describe later

  • It is easy to operate with Taylor models in LazySets: Generic numbers and automatic differentiation

Read more

Summary

Introduction

LazySets.jl is an open-source Julia package for calculus with geometric sets of points in Euclidean space. For sets with less structure, e.g., if X is a polytope in half-space representation, its support function can be computed by solving a linear program, for which fast and robust solvers exist. It is easy to operate with Taylor models in LazySets (the definition of vTM for the linear and nonlinear case is given in Appendix C.4): Generic numbers and automatic differentiation. The reachable states are represented using Taylor models, which are approximated with zonotopes for further computations In this case we have exported the LazySets objects to a VTK file using the WriteVTK.jl optional dependency, and rendered the picture with the open-source visualization tool Paraview. The concrete intersection with a hyperrectangular set can be computed very efficiently: This example shows that a 100x speedup is obtained by exploiting structure encoded in the half-space’s type. We can see that it is not necessary to use Julia objects everywhere; NumPy arrays can be used, making the interoperability between Julia and Python effortless

Conclusion and Perspectives
Future work

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.