Skip to content

Commit 922a754

Browse files
committed
CORA v2025.1.0
- contDynamics/nrOfDims: added, renamed from nrOfStates - contDynamics/printSystem: bug fix, function handles not printed correctly - contSet/contains: major improvements, now also provides a certificate on its result - contSet/plot: bug fix, better handling of (partially) transparent colors - ellipsoid/zonotope: bug fix for 'inner:norm', returned zonotope now always has the desired number of generators - neuralNetwork/computePGDAttack: bug fix, no upper and lower bound is set per default (apart from the epsilon radius) - nonlinearSys/reach: fixes for special approximative reachability - global/codingConventions: harmonized code writing throughout CORA - global/macros/CORAGITBRANCH: added, returns the current git branch name - global/printMatrix: bug fix, clearline flag was ignored if matrix has all zeros - polygon/compact: bugfix for Douglas Peuker algorithm - polyZonotope/exponentMatrix/id: improved merging of redundant exponents and ids - polyZonotope/polyMap: bug fix, E with all-zero columns - zonotope/reduce: added order reduction method from the Sadraddini-Tedrake paper
1 parent 65e77e4 commit 922a754

File tree

997 files changed

+20160
-15374
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

997 files changed

+20160
-15374
lines changed

README.md

Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
1-
<img src="./app/images/coraLogo_readme.svg" alt="CORA"/>
2-
3-
A Tool for COntinuous Reachability Analysis.
4-
5-
<a href='https://cora.in.tum.de' target='_blank'>cora.in.tum.de</a> - <a href='https://cora.in.tum.de/manual' target='_blank'>Manual</a>
6-
7-
![TUMcps - CORA](https://img.shields.io/static/v1?label=TUMcps&message=CORA&color=4596FF&logo=github&link=https://github.com/TUMcps/CORA)
8-
![CORA version](https://img.shields.io/github/tag/TUMcps/CORA?include_prereleases=&sort=semver&color=4596FF&link=https://github.com/TUMcps/CORA/tags/)
9-
![CORA CI:passing](https://img.shields.io/static/v1?label=CI&message=passing&color=78C57F)
10-
11-
<hr style="height: 1px;">
12-
13-
The COntinuous Reachability Analyzer (CORA) is a collection of MATLAB classes for the formal verification of cyber-physical systems using reachability analysis. CORA integrates various vector and matrix set representations and operations on them as well as reachability algorithms of various dynamic system classes. The software is designed such that set representations can be exchanged without having to modify the code for reachability analysis. CORA is designed using the object-oriented paradigm, such that users can safely use methods without concerning themselves with detailed information hidden inside the objects. Since the toolbox is written in MATLAB, the installation and use is platform independent. From Release 2018 on, the direct import of SpaceEx models into CORA is also supported. The following points summarize the main capabilities of the CORA toolbox:
14-
15-
16-
### Reachability Analysis for Continuous Systems
17-
18-
CORA computes reachable sets for linear systems, nonlinear systems as well as for systems with constraints. Continuous as well as discrete-time models are supported. Uncertainty in the system inputs as well as uncertainty in the model parameters can be explicitly considered. In addition, CORA also provides capabilities for the simulation of dynamical models.
19-
20-
21-
### Reachability Analysis for Hybrid Systems
22-
23-
The toolbox is also capable of computing the reachable sets for hybrid systems. All implemented dynamic system classes can be used to describe the different continuous flows for the discrete system states. Furthermore, various methods for the calculation of the intersections with guard sets are implemented in CORA.
24-
25-
26-
### Geometric Sets
27-
28-
CORA has a modular design, making it possible to use the capabilities of the various set representations for other purposes besides reachability analysis. The toolbox implements vector set representation, e.g., zonotopes, Taylor models and intervals, as well as matrix set representations such as matrix zonotope and interval matrices.
29-
30-
31-
### Installation
32-
33-
Please check Section 1.3 in the <a target='_blank' href="https://cora.in.tum.de/manual">CORA manual</a>.
34-
35-
Furthermore, if you clone CORA using git, please also install git lfs (large file storage) and run the command `git lfs pull` to ensure all data files are downloaded correctly.
36-
37-
### Folder Structure
38-
39-
| Folder | Description |
40-
|---|---|
41-
|`./app` | CORA app, graphical user interface |
42-
| `./contDynamics`| continuous dynamics classes |
43-
| `./contSet`| continuous set classes and operations |
44-
| `./converter`| converter from various formats to CORA |
45-
| `./discrDynamics`| discrete dynamics |
46-
| `./examples`| examples demonstrating the capabilities of CORA |
47-
| `./global`| global classes, functions, and macros |
48-
| `./hybridDynamics`| hybrid dynamics classes |
49-
| `./matrixSet`| matrix set classes |
50-
| `./models`| model files |
51-
| `./nn`| neural network verification and robust training |
52-
| `./specification`| specification classes for verification |
53-
| `./unitTests`| unit tests |
54-
55-
<hr style="height: 1px;">
56-
1+
<img src="./app/images/coraLogo_readme.svg" alt="CORA"/>
2+
3+
A Tool for COntinuous Reachability Analysis.
4+
5+
<a href='https://cora.in.tum.de' target='_blank'>cora.in.tum.de</a> - <a href='https://cora.in.tum.de/manual' target='_blank'>Manual</a>
6+
7+
![TUMcps - CORA](https://img.shields.io/static/v1?label=TUMcps&message=CORA&color=4596FF&logo=github&link=https://github.com/TUMcps/CORA)
8+
![CORA version](https://img.shields.io/github/tag/TUMcps/CORA?include_prereleases=&sort=semver&color=4596FF&link=https://github.com/TUMcps/CORA/tags/)
9+
![CORA CI:passing](https://img.shields.io/static/v1?label=CI&message=passing&color=78C57F)
10+
11+
<hr style="height: 1px;">
12+
13+
The COntinuous Reachability Analyzer (CORA) is a collection of MATLAB classes for the formal verification of cyber-physical systems using reachability analysis. CORA integrates various vector and matrix set representations and operations on them as well as reachability algorithms of various dynamic system classes. The software is designed such that set representations can be exchanged without having to modify the code for reachability analysis. CORA is designed using the object-oriented paradigm, such that users can safely use methods without concerning themselves with detailed information hidden inside the objects. Since the toolbox is written in MATLAB, the installation and use is platform independent. From Release 2018 on, the direct import of SpaceEx models into CORA is also supported. The following points summarize the main capabilities of the CORA toolbox:
14+
15+
16+
### Reachability Analysis for Continuous Systems
17+
18+
CORA computes reachable sets for linear systems, nonlinear systems as well as for systems with constraints. Continuous as well as discrete-time models are supported. Uncertainty in the system inputs as well as uncertainty in the model parameters can be explicitly considered. In addition, CORA also provides capabilities for the simulation of dynamical models.
19+
20+
21+
### Reachability Analysis for Hybrid Systems
22+
23+
The toolbox is also capable of computing the reachable sets for hybrid systems. All implemented dynamic system classes can be used to describe the different continuous flows for the discrete system states. Furthermore, various methods for the calculation of the intersections with guard sets are implemented in CORA.
24+
25+
26+
### Geometric Sets
27+
28+
CORA has a modular design, making it possible to use the capabilities of the various set representations for other purposes besides reachability analysis. The toolbox implements vector set representation, e.g., zonotopes, Taylor models and intervals, as well as matrix set representations such as matrix zonotope and interval matrices.
29+
30+
31+
### Installation
32+
33+
Please check Section 1.3 in the <a target='_blank' href="https://cora.in.tum.de/manual">CORA manual</a>.
34+
35+
Furthermore, if you clone CORA using git, please also install git lfs (large file storage) and run the command `git lfs pull` to ensure all data files are downloaded correctly.
36+
37+
### Folder Structure
38+
39+
| Folder | Description |
40+
|---|---|
41+
|`./app` | CORA app, graphical user interface |
42+
| `./contDynamics`| continuous dynamics classes |
43+
| `./contSet`| continuous set classes and operations |
44+
| `./converter`| converter from various formats to CORA |
45+
| `./discrDynamics`| discrete dynamics |
46+
| `./examples`| examples demonstrating the capabilities of CORA |
47+
| `./global`| global classes, functions, and macros |
48+
| `./hybridDynamics`| hybrid dynamics classes |
49+
| `./matrixSet`| matrix set classes |
50+
| `./models`| model files |
51+
| `./nn`| neural network verification and robust training |
52+
| `./specification`| specification classes for verification |
53+
| `./unitTests`| unit tests |
54+
55+
<hr style="height: 1px;">
56+
5757
<img src="./app/images/coraLogo_readme.svg"/>

app/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Execute
66
coraApp
77

88
in the MATLAB console to start defining your dynamic graphically.
9-
Check Section 8 in the <a target='_blank' href="https://tumcps.github.io/CORA/manual">CORA manual</a> for more information.
9+
Check Section 8 in the <a target='_blank' href="https://cora.in.tum.de/manual">CORA manual</a> for more information.
1010

1111

1212
<hr style="height: 1px;">

app/auxiliary/dynamics_equation_nonlinear

Lines changed: 0 additions & 1 deletion
This file was deleted.

app/auxiliary/dynamics_equation_nonlinear.m

Lines changed: 0 additions & 3 deletions
This file was deleted.

app/auxiliary/infoBox.m

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,40 @@
11
function varargout = infoBox(varargin)
2-
% GUI to display information to inform the user with a picture
3-
% ------------------------------------------------------------------
2+
% infoBox - GUI to display information to inform the user with a picture
3+
%
44
% This file is part of the MORLAB_GUI, a Model Order Reduction and
55
% System Analysis Toolbox developed at the
66
% Institute of Automatic Control, Technische Universitaet Muenchen
77
% For updates and further information please visit www.rt.mw.tum.de
8-
% ------------------------------------------------------------------
9-
% Input Argument: Cell array with one cell containing the path to
10-
% the picture that should be displayed on the
11-
% Info Box
12-
% ------------------------------------------------------------------
13-
% Authors: Niklas Kochdumper
14-
% Last Change: 13 Feb 2015
15-
% ------------------------------------------------------------------
8+
%
9+
% Syntax:
10+
% varargout = infoBox(varargin)
11+
%
12+
% Inputs:
13+
% varargin - Cell array with one cell containing the path to
14+
% the picture that should be displayed on the Info Box
15+
%
16+
% Outputs:
17+
% varargout - ???
18+
%
19+
% Other m-files required: none
20+
% Subfunctions: none
21+
% MAT-files required: none
22+
%
23+
% See also: -
24+
25+
% Authors: Niklas Kochdumper
26+
% Written: ???
27+
% Last update: 13-February-2015
28+
% Last revision: ---
29+
30+
% ------------------------------ BEGIN CODE -------------------------------
1631

1732
% Begin initialization code - DO NOT EDIT
1833
gui_Singleton = 1;
1934
gui_State = struct('gui_Name', mfilename, ...
2035
'gui_Singleton', gui_Singleton, ...
21-
'gui_OpeningFcn', @infoBox_OpeningFcn, ...
22-
'gui_OutputFcn', @infoBox_OutputFcn, ...
36+
'gui_OpeningFcn', @aux_infoBox_OpeningFcn, ...
37+
'gui_OutputFcn', @aux_infoBox_OutputFcn, ...
2338
'gui_LayoutFcn', [] , ...
2439
'gui_Callback', []);
2540
if nargin && ischar(varargin{1})
@@ -34,7 +49,9 @@
3449
% End initialization code - DO NOT EDIT
3550

3651

37-
function infoBox_OpeningFcn(hObject, eventdata, handles, varargin)
52+
% Auxiliary functions -----------------------------------------------------
53+
54+
function aux_infoBox_OpeningFcn(hObject, eventdata, handles, varargin)
3855

3956
% Choose default command line output for infoBox
4057
handles.output = hObject;
@@ -46,16 +63,17 @@ function infoBox_OpeningFcn(hObject, eventdata, handles, varargin)
4663
errordlg('Wrong number of input arguments','Error Dialog','modal');
4764
end
4865

49-
path = cell2mat(varargin{1,1});
50-
51-
h = imread(path);
52-
66+
% position ok panel
5367
set(handles.ok_panel,'Units','pixels');
5468
ok_panel_pos = get(handles.ok_panel, 'Position');
5569

5670
set(hObject,'Units','pixels');
5771
pos = get(hObject,'Position');
5872

73+
% position image
74+
path = cell2mat(varargin{1,1});
75+
h = imread(path);
76+
5977
if size(h,1) > 700
6078
pos(1,3) = size(h,2)/1.5;
6179
pos(1,4) = size(h,1)/1.5;
@@ -67,6 +85,7 @@ function infoBox_OpeningFcn(hObject, eventdata, handles, varargin)
6785
set(hObject,'Position',pos+50);
6886
set(hObject,'Units','characters');
6987

88+
% set axes
7089
posAxes = pos;
7190
posAxes(1,1) = 25;
7291
posAxes(1,2) = ok_panel_pos(1,4)+5;
@@ -76,32 +95,35 @@ function infoBox_OpeningFcn(hObject, eventdata, handles, varargin)
7695
set(handles.axes,'Units','pixels');
7796
set(handles.axes,'Position',posAxes);
7897

98+
% set axes ok panel
7999
set(handles.axes,'Units','characters');
80100
set(handles.ok_panel,'Position',ok_panel_pos);
81101
set(handles.ok_panel,'Units','characters');
82102

83-
103+
% set axes pb
84104
set(handles.pb,'Units','pixels');
85105
posPb = get(handles.pb,'Position');
86106
posPb(1,1) = round((pos(1,3) - posPb(1,3))/2)+20;
87107
set(handles.pb,'Position',posPb);
88108
set(handles.pb,'Units','characters');
89109
imshow(h);
90110

111+
% turn off ticks
91112
set(handles.axes,'XTick',[]);
92113
set(handles.axes,'YTick',[]);
93114

94115

95-
function varargout = infoBox_OutputFcn(hObject, eventdata, handles)
116+
function varargout = aux_infoBox_OutputFcn(hObject, eventdata, handles)
117+
% output function
96118
varargout{1} = handles.output;
97119

98120

99-
function pb_Callback(hObject, eventdata, handles)
121+
function aux_pb_Callback(hObject, eventdata, handles)
100122
delete(handles.infoBox)
101123

102124

103125
% --- Executes on slider movement.
104-
function slider1_Callback(hObject, eventdata, handles)
126+
function aux_slider1_Callback(hObject, eventdata, handles)
105127
% hObject handle to slider1 (see GCBO)
106128
% eventdata reserved - to be defined in a future version of MATLAB
107129
% handles structure with handles and user data (see GUIDATA)
@@ -111,7 +133,7 @@ function slider1_Callback(hObject, eventdata, handles)
111133

112134

113135
% --- Executes during object creation, after setting all properties.
114-
function slider1_CreateFcn(hObject, eventdata, handles)
136+
function aux_slider1_CreateFcn(hObject, eventdata, handles)
115137
% hObject handle to slider1 (see GCBO)
116138
% eventdata reserved - to be defined in a future version of MATLAB
117139
% handles empty - handles not created until after all CreateFcns called
@@ -120,3 +142,5 @@ function slider1_CreateFcn(hObject, eventdata, handles)
120142
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
121143
set(hObject,'BackgroundColor',[.9 .9 .9]);
122144
end
145+
146+
% ------------------------------ END OF CODE ------------------------------

app/auxiliary/inputArgsLength_app.m

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
function [count,out] = inputArgsLength_app(f,varargin)
22
% inputArgsLength_app - computes the number of inputs of a function handle
33
%
4-
% Syntax:
4+
% Syntax:
55
% [count,out] = inputArgsLength_app(f)
66
% [count,out] = inputArgsLength_app(f,inpArgs)
77
%
@@ -23,12 +23,12 @@
2323
%
2424
% See also: nonlinearSys
2525

26-
% Author: Victor Gassmann
27-
% Written: 11-September-2020
28-
% Last update: ---
29-
% Last revision:---
26+
% Authors: Victor Gassmann
27+
% Written: 11-September-2020
28+
% Last update: ---
29+
% Last revision: ---
3030

31-
%------------- BEGIN CODE --------------
31+
% ------------------------------ BEGIN CODE -------------------------------
3232

3333
% parse input arguments: number of input arguments to function handle
3434
narginf = setDefaultValues({nargin(f)},varargin);
@@ -154,4 +154,4 @@
154154
maxVal = maxVal + 3;
155155
end
156156

157-
%------------- END OF CODE --------------
157+
% ------------------------------ END OF CODE ------------------------------

0 commit comments

Comments
 (0)