print · login   

Benchmarks for Mealy Machines (FSMs)

Downloads:

The archive also contains a README with urls to some sources. All models are complete (or input-enabled), deterministic and minimal (or reduced). The benchmarks are in .dot format, where the from-state of the first transition is always the initial state. If you find any problems, unclarities or have a different format for FSMs, don't hesitate to contact us!

Summary of the benchmarks (the ones indicated TODO are in the archive, but not yet described below):

Models of bank card protocols

Bank cards (or debit cards) are smart cards used for payment systems. All smart cards follow the ISO/IEC 7816 standard. Here communication is in host-client mode: the terminal sends a command to the card, and the card returns a response, after which the terminal can send another command, etc. Commands and responses are simply sequences of bytes with a fixed format and meaning. Most smart cards issued by banks or credit cards companies adhere to the EMV (Europay-MasterCard-Visa) standard. This standard is defined on top of ISO/IEC 7816.

We have learned models for several client implementations, i.e. real bank cards from different banks. Access to the smart cards was realised via a standard smart card reader. The models might be incorrect, but already showed reproducible bugs in some cases.

See BenchmarkBankcard? for more information.

Benchmark NameModelInputs/OutputsStatesTransitionsPublications
MAESTROdot-file14 / 10684[ARP13]
MAESTRO (ASN)dot-file14 / 10684[ARP13]
MAESTRO (Rabo)dot-file14 / 10684[ARP13]
MAESTRO (Volksbank)dot-file14 / 11798[ARP13]
MasterCarddot-file14 / 9684[ARP13]
MasterCarddot-file15 / 9575[ARP13]
PINdot-file14 / 10684[ARP13]
SecureCodedot-file14 / 9456[ARP13]
SecureCode (ASN)dot-file14 / 9456[ARP13]
SecureCode (Rabo)dot-file15 / 12690[ARP13]
VISAdot-file15 / 119135[ARP13]

Learned models of the e.dentifier2

The e.dentifier2 is a hand-held smart card reader with a small display, a numeric keyboard, and OK and Cancel buttons. It is used for Internet banking in combination with a bank card and a PIN code. The e.dentifier2 appear to be based on EMV-CAP, a proprietary standard by MasterCard, which in turn is based on the EMV standard implemented in most bank cards.

Benchmark NameModelInputs/OutputsStatesTransitionsPublications
New (small alphabet)dot-file5 / 4315[CPPR14]
New (random)dot-file8 / 91188[CPPR14]
New (W-method)dot-file8 / 8864[CPPR14]
Old (small alphabet)dot-file5 / 4420[CPPR14]
Old (random)dot-file8 / 922176[CPPR14]

Circuits

The logic synthesis workshops (LGSynth89, LGSynth91 and LGSynth93) provide 59 behavioural models for circuit synthesis. More background information can be found on the Benchmark Archives at CBL. These models can be seen as Mealy machines, (in several ways). The models are given as kiss2 files which consist of a list of transitions. As an example we consider a transition "01-- s1 s2 0-". Here "01--" is the input bit vector, "s1", "s2" are the source, target states resp. and "0-" is the output bit vector. A dash "-" means "don't care". In this example all the bit vectors "0100", "0101", "0110" and "0111" will trigger the transition. For the output we can interpret the meaning of don't care bits in (at least) two ways:

  • Don't cares are observable. This means that "0-", "00" and "01" are three distinct values. This does not correspond to the physical behaviour of circuits.
  • Don't cares keep the output bit unchanged. In this semantics an initial output bit vector is assumed (all zeroes) and "0-" will either output "00" or "01" depending on the state of the output bit vector.

In both cases, the models are deterministic, possibly partial Mealy machines. We consider two ways of completing the models:

  • Self-loops. Whenever a transition is missing, remain in the same state and output "--" of correct length.
  • Sink-state. Whenever a transition is missing, go to a sink (or crash) state with output "--" of correct length.

In both cases we will obtain a deterministic, complete Mealy machine. We provide all 4 semantics (2*2 combinations of above). If two or more semantics give bisimilar results, we only use one of them in the benchmark suite.

These models are used as benchmarks in papers by Hierons and Turker (TODO: provide references). They choose a semantics with observable don't cares and self-loops (with a distinct null output instead of a don't care output).

TODO: create a table with the list.

Model of the ESM controller

The Mealy machine "ESM Controller" is based on the RRRT-model as described in the [SMVJ15] paper. It is flattened to be a Mealy machine. In addition, an equivalent model was learned. The table below also lists different runs of the learning algorithm used in [SMVJ15] and contain all the hypotheses. This gives a nice sequence of machines, growing in size (Learning runs contain in total 207 models).

Moreover, two incorrect hypotheses are provided where we attempted to learn an extended model. Due to resource constraints we were never able to learn the proper models for this extension. These benchmarks are by far the biggest (finite) Mealy machines of real-world software we currently have.

See BenchmarkESMcontroller? for more information.

Benchmark NameModelInputs/OutputsStatesTransitionsPublications
ESM Controller?Model Δ78 / 1513410265980[SMVJ15]
ESM Learning Run 1Model Δ78 / (145-151)546-341042588-265980[SMVJ15]
ESM Learning Run 2Model Δ78 / (145-151)557-334143212-265980[SMVJ15]
ESM Learning Run 3Model Δ78 / (145-151)576-341344694-265980[SMVJ15]
ESM extended 1 (incorrect)TODO96 / 1508644829824 
ESM extended 2 (incorrect)TODO96 / 15110010960960 

Mealy machines created by flattening basic register automata

On can obtain a Mealy machine (FSM) by taking a register automata (or EFSM), by restricting the data domain to a fixed finite set.

Alternating Bit Protocol

Benchmark NameDomainModelInputs/OutputsStatesTransitionsPublications
ABP Channel0-1dot-file6 / 6530[AHKOV12][Aarts14]
ABP Channel0-2dot-file11 / 1110110[AHKOV12][Aarts14]
ABP Channel0-3dot-file18 / 1817306[AHKOV12][Aarts14]
ABP Channel0-4dot-file27 / 2726702[AHKOV12][Aarts14]
ABP Channel0-5dot-file38 / 38371406[AHKOV12][Aarts14]
ABP Channel0-6dot-file51 / 51502550[AHKOV12][Aarts14]
ABP Channel0-7dot-file66 / 66654290[AHKOV12][Aarts14]
ABP Channel0-8dot-file83 / 83826806[AHKOV12][Aarts14]
ABP Channel0-9dot-file102 / 10210110302[AHKOV12][Aarts14]
ABP Channel0-10dot-file123 / 12312215006[AHKOV12][Aarts14]
ABP Receiver0-1dot-file5 / 5420[AHKOV12][Aarts14]
ABP Receiver0-2dot-file10 / 6440[AHKOV12][Aarts14]
ABP Receiver0-3dot-file17 / 7468[AHKOV12][Aarts14]
ABP Receiver0-4dot-file26 / 84104[AHKOV12][Aarts14]
ABP Receiver0-5dot-file37 / 94148[AHKOV12][Aarts14]
ABP Receiver0-6dot-file50 / 104200[AHKOV12][Aarts14]
ABP Receiver0-7dot-file65 / 114260[AHKOV12][Aarts14]
ABP Receiver0-8dot-file82 / 124328[AHKOV12][Aarts14]
ABP Receiver0-9dot-file101 / 134404[AHKOV12][Aarts14]
ABP Receiver0-10dot-file122 / 144488[AHKOV12][Aarts14]
ABP Sender0-1dot-file5 / 61155[AHKOV12][Aarts14]
ABP Sender0-2dot-file7 / 815105[AHKOV12][Aarts14]
ABP Sender0-3dot-file9 / 1019171[AHKOV12][Aarts14]
ABP Sender0-4dot-file11 / 1223253[AHKOV12][Aarts14]
ABP Sender0-5dot-file13 / 1427351[AHKOV12][Aarts14]
ABP Sender0-6dot-file15 / 1631465[AHKOV12][Aarts14]
ABP Sender0-7dot-file17 / 1835595[AHKOV12][Aarts14]
ABP Sender0-8dot-file19 / 2039741[AHKOV12][Aarts14]
ABP Sender0-9dot-file21 / 2243903[AHKOV12][Aarts14]
ABP Sender0-10dot-file23 / 24471081[AHKOV12][Aarts14]

Biometric Passport

Benchmark NameDomainModelInputs/OutputsStatesTransitionsPublications
Biometric Passport?0-1dot-file10 / 2440[AHKOV12][Aarts14][ASV10]
Biometric Passport?0-2dot-file11 / 2444[AHKOV12][Aarts14][ASV10]
Biometric Passport?0-3dot-file12 / 2448[AHKOV12][Aarts14][ASV10]
Biometric Passport?0-4dot-file13 / 2452[AHKOV12][Aarts14][ASV10]
Biometric Passport?0-5dot-file14 / 2456[AHKOV12][Aarts14][ASV10]
Biometric Passport?0-6dot-file15 / 2460[AHKOV12][Aarts14][ASV10]
Biometric Passport?0-7dot-file16 / 2464[AHKOV12][Aarts14][ASV10]
Biometric Passport?0-8dot-file17 / 2468[AHKOV12][Aarts14][ASV10]
Biometric Passport?0-9dot-file18 / 2472[AHKOV12][Aarts14][ASV10]
Biometric Passport?0-10dot-file19 / 2476[AHKOV12][Aarts14][ASV10]

Boundary Retransmission Protocol

On the register automata page of this benchmark there are also mutants listed. You can find Mealy machine versions of these in the archive file containing all benchmarks at the top.

Benchmark NameDomainModelInputs/OutputsStatesTransitionsPublications
BRP0-1dot-file10 / 161561560[DKRT97][HSV93]
BRP0-2dot-file29 / 2241812122[DKRT97][HSV93]
BRP0-3dot-file66 / 2888458344[DKRT97][HSV93]
BRP0-4dot-file127 / 341614204978[DKRT97][HSV93]
BRP0-5dot-file218 / 402668581624[DKRT97][HSV93]

Simple login procedure

Benchmark NameDomainModelInputs/OutputsStatesTransitionsPublications
Login?0-1dot-file9 / 2981[AHKOV12][Aarts14][HSJC12]
Login?0-2dot-file19 / 219361[AHKOV12][Aarts14][HSJC12]
Login?0-3dot-file33 / 2331089[AHKOV12][Aarts14][HSJC12]
Login?0-4dot-file51 / 2512601[AHKOV12][Aarts14][HSJC12]
Login?0-5dot-file73 / 2735329[AHKOV12][Aarts14][HSJC12]
Login?0-6dot-file99 / 2999801[AHKOV12][Aarts14][HSJC12]
Login?0-7dot-file129 / 212916641[AHKOV12][Aarts14][HSJC12]
Login?0-8dot-file163 / 216326569[AHKOV12][Aarts14][HSJC12]
Login?0-9dot-file201 / 220140401[AHKOV12][Aarts14][HSJC12]
Login?0-10dot-file243 / 224359049[AHKOV12][Aarts14][HSJC12]

Palindrom repdigit checker

Benchmark NameDomainModelInputs/OutputsStatesTransitionsPublications
Palindrome0-1dot-file52 / 2152[AHKOV12][Aarts14]
Palindrome0-2dot-file225 / 21225[AHKOV12][Aarts14]
Palindrome0-3dot-file656 / 21656[AHKOV12][Aarts14]
Palindrome0-4dot-file1525 / 211525[AHKOV12][Aarts14]
Palindrome0-5dot-file3060 / 213060[AHKOV12][Aarts14]

Farmer wolf goat cabbage river crossing puzzle

Benchmark NameDomainModelInputs/OutputsStatesTransitionsPublications
River0-1dot-file2 / 212[AHKOV12][Aarts14]
River0-2dot-file3 / 213[AHKOV12][Aarts14]
River0-3dot-file4 / 3520[AHKOV12][Aarts14]
River0-4dot-file5 / 4945[AHKOV12][Aarts14]
River0-5dot-file6 / 4954[AHKOV12][Aarts14]
River0-6dot-file7 / 4963[AHKOV12][Aarts14]
River0-7dot-file8 / 4972[AHKOV12][Aarts14]
River0-8dot-file9 / 4981[AHKOV12][Aarts14]
River0-9dot-file10 / 4990[AHKOV12][Aarts14]
River0-10dot-file11 / 4999[AHKOV12][Aarts14]

Session Initiation Protocol

When converting these models to Mealy machines, the result was not a completely specified machine. Self loops with a new output were added in order to complete the machine.

Benchmark NameDomainModelInputs/OutputsStatesTransitionsPublications
SIP0-1dot-file7 / 1418126[AHKOV12][Aarts14][AJU10]
SIP0-2dot-file10 / 2032320[AHKOV12][Aarts14][AJU10]
SIP0-3dot-file13 / 2650650[AHKOV12][Aarts14][AJU10]
SIP0-4dot-file16 / 32721152[AHKOV12][Aarts14][AJU10]
SIP0-5dot-file19 / 38981862[AHKOV12][Aarts14][AJU10]
SIP0-6dot-file22 / 441282816[AHKOV12][Aarts14][AJU10]
SIP0-7dot-file25 / 501624050[AHKOV12][Aarts14][AJU10]
SIP0-8dot-file28 / 562005600[AHKOV12][Aarts14][AJU10]
SIP0-9dot-file31 / 622427502[AHKOV12][Aarts14][AJU10]
SIP0-10dot-file34 / 682889792[AHKOV12][Aarts14][AJU10]

Models of implementations of the TLS protocol

See BenchmarkTLS for more information.

Benchmark NameModelInputs/OutputsStatesTransitionsPublications
GnuTLS 3.3.12 client (full)dot-file12 / 79108[RP15]
GnuTLS 3.3.12 client (regular)dot-file8 / 10756[RP15]
GnuTLS 3.3.12 server (full)dot-file12 / 129108[RP15]
GnuTLS 3.3.12 server (regular)dot-file8 / 10756[RP15]
GnuTLS 3.3.8 client (full)dot-file12 / 815180[RP15]
GnuTLS 3.3.8 client (regular)dot-file8 / 61188[RP15]
GnuTLS 3.3.8 server (full)dot-file11 / 1216176[RP15]
GnuTLS 3.3.8 server (regular)dot-file8 / 101296[RP15]
miTLS 0.1.3 server (regular)dot-file8 / 8648[RP15]
NSS 3.17.4 client (full)dot-file12 / 911132[RP15]
NSS 3.17.4 client (regular)dot-file8 / 7756[RP15]
NSS 3.17.4 server (regular)dot-file8 / 9864[RP15]
OpenSSL 1.0.1g client (regular)dot-file7 / 71070[RP15]
OpenSSL 1.0.1g server (regular)dot-file7 / 1116112[RP15]
OpenSSL 1.0.1j client (regular)dot-file7 / 5642[RP15]
OpenSSL 1.0.1j server (regular)dot-file7 / 91177[RP15]
OpenSSL 1.0.1l client (regular)dot-file7 / 5642[RP15]
OpenSSL 1.0.1l server (regular)dot-file7 / 81070[RP15]
OpenSSL 1.0.2 client (full)dot-file10 / 6990[RP15]
OpenSSL 1.0.2 client (regular)dot-file7 / 5642[RP15]
OpenSSL 1.0.2 server (regular)dot-file7 / 7749[RP15]
RSA BSAFE C 4.0.4 server (regular)dot-file8 / 11972[RP15]
RSA BSAFE Java 6.1.1 server (regular)dot-file8 / 7648[RP15]