DynamicBounds.jl: Validated Bounds and Relaxations of Differential Equations
Linux/OS/Windows  Coverage  Persistent DOI 

To Be Added (Zenodo) 
This package provides
An abstraction layer for constructing valid relaxations
and bounds on the solution sets (and numerical solutions of) parametric ODEs,
and DAEs. Evaluations of the parametric ODES/DAEs are made available by linking
the specific integrator
to an equivalent evaluation using solvers present in
DifferentialEquations.jl.
Example Usage
The DynamicBounds.jl abstraction layer.
The abstraction layer for DynamicBounds is divided into three major parts. First, there are problems (<:
) which hold all the information required to define a wellposed parametric differential equation problem. Second, there are integrators (<:
) which hold all the information require to compute relaxations of the problem or integrate
the parametric differential equation problem at a particular parameter value.
Integrators available
 DifferentialInequality: Provides valid bounds and relaxations of the numerical solutions of systems of ODEs via secondorder implicit methods.
 DiscretizeRelax: Provides valid bounds and relaxations of the numerical solutions of systems of ODEs via secondorder implicit methods.
 Wilhelm2019: Provides valid bounds and relaxations of the numerical solutions of systems of ODEs via secondorder implicit methods.
 Wilhelm2019: Provides valid bounds and relaxations of the numerical solutions of systems of ODEs via secondorder implicit methods.
Adding new problems/integrators
Adding new integrators
 Define the new integrator structure and extend make.
 The integrator should be an abstract subtype of
AbstractODERelaxIntegator
for parametric systems of ODEs.  The integrator should be an abstract subtype of
AbstractDAERelaxIntegator
for parametric systems of DAEs.  Otherwise, it should be a subtype of abstract subtype of
AbstractDERelaxIntegator
associated with a specific problem form.
 The integrator should be an abstract subtype of
 Extend relax!
 Extend integrate!
 Extend the support/set/get/get!/getall! for all supported attributes
 Fully extending these functions for each attribute is desirable but also can
be a burden. We recommend the following as a minimal extension:
 For intervalonly methods:
 get!(integrator, Value{Nominal}(), value)
 get!(integrator, Gradient{Nominal}(), value)
 get!(integrator, Gradient{Nominal}(), value)

For relaxation methods:
 set!(integator, Gradient())
 set!(integrator, Value{Nominal}())
 For intervalonly methods:
 Fully extending these functions for each attribute is desirable but also can
be a burden. We recommend the following as a minimal extension:
 Define new problems by adding a structure
<: AbstractDERelaxProblem
 Add a corresponding structure
<: AbstractRelaxationAttribute
to hold the solution information.  The extend the support and get functions for all supported attributes
References
Related Packages
 ReachabilityAnalysis.jl: A welldeveloped package in Julia for novel reachability approaches. There is some overlap between the functionality enclosed in this package and DynamicBounds.jl. Both packages provide methods for performing reachability analysis. However, DynamicBounds.jl is meant to provide a specialized interface to additionally query dynamic relaxations and supply optimization problems with a structured abstraction layer such that optimizers may be written in a reachability (or relaxation) algorithm agnostic fashion.