Error-awareness Accelerates Active Automata Learning
Organizations: Institute for Computing and Information Sciences, Radboud University, Nijmegen, the Netherlands
Abstract
Active automata learning (AAL) algorithms can learn a behavioral model of a system from interacting with it. The primary challenge remains scaling to larger models, in particular in the presence of many possible inputs to the system. Modern AAL algorithms fail to scale even if, in every state, most inputs lead to errors. In various challenging problems from the literature, these errors are observable, i.e., they emit a known error output. Motivated by these problems, we study learning these systems more efficiently. Further, we consider various degrees of knowledge about which inputs are non-error producing at which state. For each level of knowledge, we provide a matching adaptation of the state-of-the-art AAL algorithm L# to make the most of this domain knowledge. Our empirical evaluation demonstrates that the methods accelerate learning by orders of magnitude with strong but realistic domain knowledge to a single order of magnitude with limited domain knowledge.
Figures & tables
| Test suite | Sec. | Explanation | Alg. | Sec. | Explanation |
|---|---|---|---|---|---|
| 3.1 | Test suite w persistent errors | 4.1 | ( [ 32 ] ) w persistent errors | ||
| 3.2 | Sound test suite | 4.2 | + ( [ 19 ] ) w arbitrary reference | ||
| 3.2 | Distribution over test suites ( [ 18 ] ) | 4.3 | w sound reference | ||
| 4.4 | w sound and complete reference |
| Algorithm | |||
|---|---|---|---|
| Reference | Incorrect(Violations) | Incorrect(Violations) | Incorrect(Violations) |
| 0 | 55.6(0) | 100(100) | |
| 0 | 87.1(0) | 95.1(85.3) | |
| 0 | 0 | 100(100) | |
| 0 | 0 | 0 |
Appendix figures & tables12 assets
Supplementary material from the paper’s appendix.
Appendix
| model | m54 | m41 | m199 | m196 | m158 | m159 | m76 | m45 | m164 | m106 | m34 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| states | 27 | 25 | 27 | 81 | 28 | 30 | 210 | 184 | 43 | 79 | 115 |
| reference states | 16 | 24 | 25 | 38 | 18 | 19 | 57 | 47 | 14 | 65 | 74 |
| model | parameters | horizon | states | inputs | reference states |
|---|---|---|---|---|---|
| airportA-3 | DMAX=3PMAX=3 | 8 | 61 | 18 | 13 |
| airportA-3 | DMAX=3PMAX=3 | 9 | 56 | 18 | 14 |
| airportA-7 | DMAX=3PMAX=3 | 8 | 46 | 18 | 16 |
| airportA-7 | DMAX=3PMAX=3 | 9 | 50 | 18 | 16 |
| airportB-3 | DMAX=3PMAX=3 | 8 | 70 | 18 | 14 |
| airportB-3 | DMAX=3PMAX=3 | 9 | 59 | 18 | 13 |
| model | states | inputs | reference | reference states | sound | sound & complete |
|---|---|---|---|---|---|---|
| GnuTLS_3.3.12_client_full | 8 | 12 | chat | 8 | False | False |
| GnuTLS_3.3.12_client_full | 8 | 12 | domain | 7 | True | False |
| GnuTLS_3.3.12_client_full | 8 | 12 | passive | 7 | False | False |
| GnuTLS_3.3.12_client_full | 8 | 12 | sound & complete | 8 | True | True |
| GnuTLS_3.3.12_server_full | 9 | 12 | chat | 9 | False | False |
| GnuTLS_3.3.12_server_full | 9 | 12 | domain | 9 | True | False |
| model | states | inputs | reference | reference states | sound | sound & complete |
|---|---|---|---|---|---|---|
| GnuTLS_3.3.8_server_regular | 11 | 8 | chat | 7 | False | False |
| GnuTLS_3.3.8_server_regular | 11 | 8 | domain | 6 | True | False |
| GnuTLS_3.3.8_server_regular | 11 | 8 | passive | 8 | False | False |
| GnuTLS_3.3.8_server_regular | 11 | 8 | sound & complete | 10 | True | True |
| OpenSSL_1.0.1g_client_regular | 9 | 7 | chat | 7 | False | False |
| OpenSSL_1.0.1g_client_regular | 9 | 7 | domain | 5 | True | False |
| Model | States | Inputs | Algorithm | Learned | Learned States | Learn Symbols | Conformance Symbols | Total Symbols | Total Symbols Median | Total Symbols Std |
|---|---|---|---|---|---|---|---|---|---|---|
| m54 | 27 | 10 | 100.0% | 27 | 7018 | 135744 | 142762 | 127074 | 74596 | |
| m54 | 27 | 10 | 100.0% | 27 | 1575 | 11235 | 12810 | 12204 | 2762 | |
| m54 | 27 | 10 | 100.0% | 27 | 329 | 0 | 329 | 329 | 0 | |
| m41 | 25 | 47 | 46.7% | 24 | 47049 | 799740 | 846789 | 1000000 | 213277 | |
| m41 | 25 | 47 | 100.0% | 25 | 5819 | 24487 | 30306 | 22943 | 19536 | |
| m41 | 25 | 47 | 100.0% | 25 | 423 | 0 | 423 | 423 | 0 |
| Name | Horizon | Parameters | States | Inputs | Algorithm | Learned | Learned States | Learn Symbols | Conformance Symbols | Total Symbols | Total Symbols Median | Total Symbols Std |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| airportA-7 | 8 | (’DMAX=3’, ’PMAX=3’) | 46 | 18 | 0.0% | 29 | 33140 | 966866 | 1000006 | 1000007 | 4 | |
| airportA-7 | 8 | (’DMAX=3’, ’PMAX=3’) | 46 | 18 | 100.0% | 46 | 5384 | 59066 | 64450 | 59911 | 18270 | |
| airportA-7 | 8 | (’DMAX=3’, ’PMAX=3’) | 46 | 18 | 100.0% | 46 | 1404 | 6530 | 7934 | 7571 | 4846 | |
| airportB-7 | 8 | (’DMAX=3’, ’PMAX=3’) | 46 | 18 | 0.0% | 29 | 34165 | 965840 | 1000005 | 1000005 | 5 | |
| airportB-7 | 8 | (’DMAX=3’, ’PMAX=3’) | 46 | 18 | 100.0% | 46 | 7072 | 85688 | 92760 | 88113 | 27382 | |
| airportB-7 | 8 | (’DMAX=3’, ’PMAX=3’) | 46 | 18 | 100.0% | 46 | 1478 | 7700 | 9178 | 8409 | 3799 |
| Model | States | Inputs | Reference | Learned | Learned States | Learn Symbols | Conformance Symbols | Total Symbols | Total Symbols Median | Total Symbols Std |
|---|---|---|---|---|---|---|---|---|---|---|
| OpenSSL_1.0.1j_client_regular.dot | 6 | 7 | 100.0% | 6 | 295 | 1731 | 2027 | 833 | 2298 | |
| OpenSSL_1.0.1j_client_regular.dot | 6 | 7 | 100.0% | 6 | 229 | 0 | 229 | 227 | 5 | |
| OpenSSL_1.0.1j_client_regular.dot | 6 | 7 | 100.0% | 6 | 215 | 174 | 390 | 373 | 71 | |
| OpenSSL_1.0.1j_client_regular.dot | 6 | 7 | 100.0% | 6 | 191 | 204 | 395 | 381 | 83 | |
| OpenSSL_1.0.1j_client_regular.dot | 6 | 7 | 100.0% | 6 | 140 | 85 | 225 | 223 | 29 | |
| OpenSSL_1.0.1j_client_regular.dot | 6 | 7 | 100.0% | 6 | 41 | 0 | 41 | 41 | 0 |
| Model | States | Algorithm | Reference Type | Correct (%) | Incorrect (%) | Violation (%) | Learned States | Learn Symbols | Conformance Symbols | Total Symbols | Total Symbols Median | Total Symbols Std |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| GnuTLS_3.3.8_client_regular.dot | 6 | 100 | 0 | 0 | 6 | 255 | 371 | 627 | 598 | 176 | ||
| GnuTLS_3.3.8_client_regular.dot | 6 | 100 | 0 | 0 | 6 | 282 | 197 | 479 | 435 | 144 | ||
| GnuTLS_3.3.8_client_regular.dot | 6 | 100 | 0 | 0 | 6 | 269 | 283 | 552 | 515 | 130 | ||
| GnuTLS_3.3.8_client_regular.dot | 6 | 100 | 0 | 0 | 6 | 305 | 0 | 305 | 302 | 10 | ||
| GnuTLS_3.3.8_client_regular.dot | 6 | 100 | 0 | 0 | 6 | 123 | 30 | 153 | 147 | 24 | ||
| GnuTLS_3.3.8_client_regular.dot | 6 | 0 | 100 | 0 | 8 | 175 | 33 | 208 | 206 | 23 |
| Model | States | Algorithm | Reference Type | Correct (%) | Incorrect (%) | Violation (%) | Learned States | Learn Symbols | Conformance Symbols | Total Symbols | Total Symbols Median | Total Symbols Std |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| GnuTLS_3.3.12_client_full.dot | 8 | 100 | 0 | 0 | 8 | 470 | 83 | 553 | 532 | 63 | ||
| GnuTLS_3.3.12_client_full.dot | 8 | 100 | 0 | 0 | 8 | 424 | 329 | 753 | 730 | 157 | ||
| GnuTLS_3.3.12_client_full.dot | 8 | 100 | 0 | 0 | 8 | 366 | 667 | 1033 | 1014 | 266 | ||
| GnuTLS_3.3.12_client_full.dot | 8 | 100 | 0 | 0 | 8 | 460 | 0 | 460 | 462 | 17 | ||
| GnuTLS_3.3.12_client_full.dot | 8 | 100 | 0 | 0 | 8 | 100 | 66 | 166 | 154 | 56 | ||
| GnuTLS_3.3.12_client_full.dot | 8 | 0 | 100 | 0 | 6 | 58 | 0 | 58 | 58 | 0 |