LearnLib is a free and open source (Apache License 2.0) Java framework for automata learning. It is mainly being developed at the Chair for Programming Systems at the TU Dortmund University, Germany. 15 years of research in the field of automated learning as well as our experience in engineering software have gone into the development of LearnLib.
In order to start using the latest, stable release of LearnLib in your Maven project, include the following snippet into the dependencies section of the pom.xml.
<dependencies> <!-- other dependencies --> <dependency> <groupId>de.learnlib.distribution</groupId> <artifactId>learnlib-distribution</artifactId> <version>0.14.0</version> <type>pom</type> </dependency> </dependencies>
Note: This dependency will add all components of LearnLib to your project. If you only need a subset, have a look at the List of LearnLib Artifacts to get an overview of the individual modules available on Maven Central.
If you are not using any build management, you can also download the binaries of the LearnLib, with and without its dependencies.
LearnLib provides a sophisticated set of active and passive learning algorithms for various automaton models as well as a variety of equivalence approximation strategies. Its modular, generic and extensible nature allows you to instantiate learning experiments that are tailored specifically to your needs. See the figure and the listing below to get a quick overview over all relevant features.
|Active learning algorithms|
|Discrimination Tree||DFA Mealy VPDA|
|Kearns Vazirani||DFA Mealy|
|TTT||DFA Mealy VPDA|
|Passive learning algorithms|
|RPNI – EDSM||DFA|
|RPNI – MDL||DFA|
Equivalence approximation strategies
- Complete, depth-bounded exploration
- Random words
- Random walk
- W-method, randomised
- Wp-method, randomised
- Query cache
- Reuse filter
- Abstract to concrete system mapping
- Generic, extensible design
- Logging subsystem
Interested for performance benchmarks? Check out this page where we present some statistics about the algorithms and equivalence approximation stategies, as well as a performance comparison between LearnLib and comparable automata learning libraries.