Making
your own SUT
We employ the
UPPAAL
GUI to specify SUTs. However, the syntax we use is
slightly different from the syntax defined by the UPPAAL developers. We
support modelling of locations and transitions, where
- the name of every input event has to start with an 'I'.
Similarly, every output event has to start with an 'O'. We do not allow
synchronizations. So, every event name does not need to end with a '?'
or '!', but with a list of parameter values in parentheses, or empty
parentheses in case of no parameters,
- every transition can have a guard. We allow tests for
equality
(==) or inequality (!=) of parameter values, where different tests can
be concatenated via '&&' or '||'. At the moment we only
allow
comparison of Integer values, and
- every transition can have zero or more update statements to
update the state variables, e.g. by storing parameter values. Every
statement has to end with a semicolon.
Currently, Tomte can learn SUTs that may only remember the last and
first occurrence of a parameter. We are not able yet to learn timed
systems. Figure 2 shows an example model of the alternating bit
protocol receiver that conforms to our syntax.
Figure 2: Example model
of the
alternating bit protocol receiver
In addition to modelling the system, we require a number of
declarations (added in the 'Declarations' section in UPPAAL), which are
- the constants that appear in the system,
- an enumeration of all state variables in the system, and
- an enumeration of all events in the system.
For the alternating bit protocol receiver model shown above, the
declarations are as follows:
constants = 0,1;
int vd;
int vb;
int expectedBit = 0;
void IFrame(int d, int b) {
}
void IPleaseAck() {
}
void OOut(int vd) {
}
void OAck(int vb) {
}
void ONOK() {
}
Finally, copy your file to the subfolder 'models'.