Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
e2c174e
Made RowImpl public to enable access in custom observation table impl…
tupaul Oct 8, 2025
4807bc3
Made several methods of RowImpl public, to enable external access fro…
tupaul Oct 8, 2025
b029c9c
Started with integration of MMLT.
tupaul Oct 9, 2025
de73202
Extended EquivalenceOracle.java with LocalTimerMealyEquivalenceOracle.
tupaul Oct 9, 2025
17ee816
Created module for symbol filters; added tests for counterexample han…
tupaul Oct 9, 2025
2bd8339
Functions for printing stats as JSON/YAML.
tupaul Oct 9, 2025
4d49690
Renamed statsContainer; exporting mmlt caches.
tupaul Oct 9, 2025
d1e6389
Included symbol-filters module in dependency management.
tupaul Oct 9, 2025
f04b72f
Renamed fast cache to cache for MMLTs; added integration tests for MM…
tupaul Oct 9, 2025
3bff48d
Added more test models for the MMLT learner.
tupaul Oct 9, 2025
283b026
Added more test models for the MMLT learner.
tupaul Oct 9, 2025
0ae2318
Added cache consistency test for MMLT learning.
tupaul Oct 9, 2025
0efb484
Removed location type parameter from LocalTimerMealyEquivalenceOracle.
tupaul Oct 10, 2025
6aeeb9d
Cache for MMLTs now inherits LearningCache
tupaul Oct 10, 2025
11aab34
Multiple EQ tests for MMLTs can now respect the provided list of inpu…
tupaul Oct 10, 2025
2cc45ba
Added tests for the cache; cleaned-up some files.
tupaul Oct 10, 2025
93cc1b1
Added tests for the MMLT cache consistency test.
tupaul Oct 10, 2025
86432b5
Made the MMLT SUL an interface with default methods.
tupaul Oct 10, 2025
f60e7f2
Made symbol filters more independent from MMLTs
tupaul Oct 13, 2025
e76e954
StatisticsSymbolFilter has stats container as constructor parameter.
tupaul Oct 13, 2025
61e9b19
Moved several MMLT examples to test-support.
tupaul Oct 13, 2025
be3dac3
Added an example for learning MMLTs; added module info for symbol fil…
tupaul Oct 13, 2025
20e4db1
Added an example for learning MMLTs; added module info for symbol fil…
tupaul Oct 13, 2025
4cf0a0a
Added more descriptions for included MMLT models
tupaul Oct 15, 2025
29c276f
More info on model params
tupaul Oct 15, 2025
2acd44a
Updated reset search oracle to check if it can return a counterexampl…
tupaul Oct 16, 2025
de21bb0
adjust to AutomataLib refactorings
mtf90 Nov 10, 2025
5beb6fb
adjust to AutomataLib refactorings
mtf90 Nov 10, 2025
015bfc3
adjust to AutomataLib refactorings
mtf90 Nov 10, 2025
379502a
Using correct function to render MMLT in example.
tupaul Nov 11, 2025
fce5471
Replaced getUntimedAlphabet with getInputAlphabet
tupaul Nov 11, 2025
929b07e
MMLT-Learner now explicitly takes untimed inputs in constructor.
tupaul Nov 11, 2025
903cdf7
initial refactorings / cleanups
mtf90 Nov 11, 2025
e76ec6a
cleanup/generalize (integration-) tests
mtf90 Nov 18, 2025
1926d93
replace explicit StatsContainer with ServiceLoader-based approach
mtf90 Nov 19, 2025
910274d
experimental: replace old statistics collection with new approach
mtf90 Nov 19, 2025
5f1fb46
add missing stats reset
mtf90 Nov 20, 2025
e9a1975
make MapStatsContainer thread-safe and fix tests
mtf90 Nov 20, 2025
3adca96
refactor symbol filters
mtf90 Nov 21, 2025
7d0af4f
adjust to AutomataLib refactorings
mtf90 Nov 22, 2025
0db864f
fix code-analysis remarks up until L* module
mtf90 Nov 23, 2025
fe3979f
cleanups
mtf90 Nov 23, 2025
7d8babb
Removed sorting of prefixes from location cover, to reflect automataL…
tupaul Nov 24, 2025
811b883
Updated MMLT examples.
tupaul Nov 24, 2025
2e0210f
Added more info about MMLTs.
tupaul Nov 24, 2025
7e4269c
Re-enabled visualization in MMLT examples.
tupaul Nov 24, 2025
07aeef6
Updated to AutomataLib changes: timers in MMLTs now support multiple …
tupaul Nov 24, 2025
b37eefd
Added example for loading setting up a custom MMLT model.
tupaul Nov 25, 2025
bb860e5
Wording
tupaul Nov 25, 2025
c47d0e9
Fixed bug that prevented duplicate timer outputs during timer inference.
tupaul Nov 25, 2025
5b86f63
fix issues flagged by code-analysis
mtf90 Nov 25, 2025
1500902
cleanups + tests
mtf90 Nov 28, 2025
d0749ae
cleanups, parallel timed oracles, test cases
mtf90 Dec 1, 2025
160b7b8
more rigorous testing
mtf90 Dec 2, 2025
56b4781
make learner + OT batch queries to better support parallel oracles
mtf90 Dec 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,19 @@ While certain features have been stripped for improved modularity, development h
Currently, the following learning algorithms with respective target models are supported:


| Algorithm (active) | Target models | | Algorithm (passive) | Models |
|---------------------|-----------------------------|-----|-----------------------|-----------------------|
| AAAR | `DFA` `Mealy` `Moore` | | OSTIA | `SST` |
| ADT | `Mealy` | | RPNI (incl. variants) | `DFA` `Mealy` `Moore` |
| DHC | `Mealy` | | | |
| Kearns & Vazirani | `DFA` `Mealy` | | | |
| Lambda | `DFA` `Mealy` | | | |
| L# | `Mealy` | | | |
| L* (incl. variants) | `DFA` `Mealy` `Moore` | | | |
| NL* | `NFA` | | | |
| Observation Pack | `DFA` `Mealy` `Moore` `VPA` | | | |
| Procedural | `SPA` `SBA` `SPMM` | | | |
| TTT | `DFA` `Mealy` `Moore` `VPA` | | | |
| Algorithm (active) | Target models | | Algorithm (passive) | Models |
|---------------------|------------------------------|-----|-----------------------|-----------------------|
| AAAR | `DFA` `Mealy` `Moore` | | OSTIA | `SST` |
| ADT | `Mealy` | | RPNI (incl. variants) | `DFA` `Mealy` `Moore` |
| DHC | `Mealy` | | | |
| Kearns & Vazirani | `DFA` `Mealy` | | | |
| Lambda | `DFA` `Mealy` | | | |
| L# | `Mealy` | | | |
| L* (incl. variants) | `DFA` `Mealy` `Moore` `MMLT` | | | |
| NL* | `NFA` | | | |
| Observation Pack | `DFA` `Mealy` `Moore` `VPA` | | | |
| Procedural | `SPA` `SBA` `SPMM` | | | |
| TTT | `DFA` `Mealy` `Moore` `VPA` | | | |

Additionally, LearnLib offers a variety of tools to ease the practical application of automata learning on real-world systems.
This includes drivers and mappers for interfacing software systems with the LearnLib API as well as caches and parallelization for improving the overall performance of the learning setup.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import de.learnlib.oracle.equivalence.MealySimulatorEQOracle;
import de.learnlib.oracle.membership.MealySimulatorOracle;
import de.learnlib.oracle.membership.SULAdaptiveOracle;
import de.learnlib.statistic.Statistics;
import de.learnlib.sul.SUL;
import de.learnlib.testsupport.MQ2AQWrapper;
import de.learnlib.testsupport.it.learner.AbstractMealyLearnerIT;
Expand Down Expand Up @@ -130,6 +131,7 @@ public void testIssue137() throws IOException, FormatException {
for (int seed = 0; seed < 50; seed++) {
long last = 0;
for (int iter = 0; iter < 5; iter++) {
Statistics.getCollector().clear();
final CounterAdaptiveQueryOracle<String, String> counter =
new CounterAdaptiveQueryOracle<>(aqo);
final ADTLearner<String, String> learner = new ADTLearner<>(alphabet,
Expand All @@ -151,7 +153,8 @@ public void testIssue137() throws IOException, FormatException {

exp.run();

final long count = counter.getResetCounter().getCount();
final long count =
Statistics.getCollector().getCount(CounterAdaptiveQueryOracle.RESET_KEY).orElse(0L);

if (iter == 0) {
last = count;
Expand Down
39 changes: 38 additions & 1 deletion algorithms/active/lstar/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ limitations under the License.
<groupId>de.learnlib</groupId>
<artifactId>learnlib-counterexamples</artifactId>
</dependency>
<dependency>
<groupId>de.learnlib</groupId>
<artifactId>learnlib-symbol-filters</artifactId>
</dependency>
<dependency>
<groupId>de.learnlib</groupId>
<artifactId>learnlib-util</artifactId>
Expand Down Expand Up @@ -124,6 +128,21 @@ limitations under the License.
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
<dependency>
<groupId>net.automatalib</groupId>
<artifactId>automata-serialization-dot</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.learnlib</groupId>
<artifactId>learnlib-cache</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.learnlib</groupId>
<artifactId>learnlib-statistics</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand All @@ -134,7 +153,25 @@ limitations under the License.
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- append to existing argLine to nicely work together with jacoco plugin -->
<argLine>@{argLine} --add-reads=de.learnlib.algorithm.lstar=net.automatalib.util</argLine>
<!-- allow tests access to util and statistics -->
<argLine>
@{argLine}
--add-reads=de.learnlib.algorithm.lstar=net.automatalib.util
--add-reads=de.learnlib.algorithm.lstar=de.learnlib.filter.statistic
</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<!-- append to existing argLine to nicely work together with jacoco plugin -->
<!-- allow tests access to util and statistics -->
<argLine>
@{argLine}
--add-reads=de.learnlib.algorithm.lstar=net.automatalib.util
--add-reads=de.learnlib.algorithm.lstar=de.learnlib.filter.statistic
</argLine>
</configuration>
</plugin>
</plugins>
Expand Down
Loading