MathematicalSystems.jl
MathematicalSystems.jl copied to clipboard
Follow-up of @system macro
Originally posted by @ueliwechsler in https://github.com/JuliaReach/MathematicalSystems.jl/pull/125#issuecomment-575240459
The following things can be done in a later PR (in approximately increasing order of work needed):
- [x] add template
f_(x_,u_)
for allowing to write@system(x' = f(x,u_12)
(add one line) (#154) - [ ] ensure that
state≠input≠noise
(~#155~ #164) - [ ] add docstring to all functions
- [ ] make
f_(x_,u_)
andf_(x_,w_)
distinguishable - [x] correct handling for arbitrary order of input set definition + unit_tests (#176)
- [ ] make
@system(x' = x + Bu)
work by extractingstate_dim
fromB
- [ ] add
LazySets.Universe(n)
ornothing
as default cases for undefined sets (a straightforward option would be to handle every set as aConstrained
set with all set asUniverse(n)
by default and if a set definition is provided specify the corresponding set) - [x] Make
@system
macro work without parantheses, e.g.@system x' = A*x
(#156 ) - [ ] Add support for remaining types, e.g.
polynomial
- [ ] Add support for
SystemWithOutput
, e.g.@system(x' = Ax + Bu, y=Bx + Du)
- [ ] Allow arbitrary input for dynamic equations without
*
, e.g.@system(x' = Ax + Bu1)
- [ ] Major revision by using type specific "templates" for each
AbstractSystem
type
from #137:
- [x] allow property initial_state as
state(0) ∈ set
to createIVP
from #139
- [x] consistent type conversion in
x' = -x
andx' = 2x
Additionally, we should try to remove the explicit dependency on MathematicalSystems
in these lines
https://github.com/JuliaReach/MathematicalSystems.jl/blob/641d4f5a067f2bea6fd0dd0de7c2f193a9a8632c/src/macros.jl#L535
https://github.com/JuliaReach/MathematicalSystems.jl/blob/641d4f5a067f2bea6fd0dd0de7c2f193a9a8632c/src/macros.jl#L538
by writing push!(params, I($state_dim), :B)
or something similar.