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
Currently, Tomte can learn SUTs that can be modeled by extended finite state machines with data parameters, a finite number of state variables over which guards and actions are defined. We restrict operations in these machines to assignments, and guards to just predicates testing for equality. We are not able yet to learn timed systems nor can we infer more complex predicates or operations (for example, increments). As of recent, we can learn systems that generate random output values. We suggest the most recent publication, for an up to date descriptions of these models.
Figure 1 shows an example model of the alternating bit protocol receiver that conforms to our syntax.
In addition to modelling the system, we require a number of declarations (added in the 'Declarations' section in UPPAAL), which are
For the alternating bit protocol receiver model shown above, the declarations are as follows:
const int zero = 0; const int one = 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'.
Below is an model of a Multi-Login System which uses fresh output values to generate password. Notice the random function used to define the OOK transition, which carries a single fresh output value as parameter.