Skip to content


Choose a tag to compare
@mtf90 mtf90 released this 05 Feb 17:28
· 317 commits to develop since this release

Full changelog


  • A new alphabet implementation MapAlphabet that is based on the old SimpleAlphabet but without implementing the GrowingAlphabet interface.
  • IntRangeIterator now implements PrimitiveIterator.OfInt.
  • A parser for dot files has been added and is available in the automata-serialization-dot module via the DOTParsers factory.
  • A new PaigeTarjanMinimization factory that offers convenience methods for PaigeTarjan-based automata minimization (with support for e.g. partial automata) has been added.
  • Performance improvements for some alphabet implementations (DefaultVPDAlphabet, ListAlphabet, {Int,Char}Range, ...).
  • An LTSminLTLParser to verify if LTL properties match the expected syntax of LTSmin.
  • A WordCollector for collecting words from symbol Streams.


  • Refactored the following packages/classes:
    • net.automatalib.words.impl.SimpleAlphabet -> net.automatalib.words.impl.GrowingMapAlphabet
    • net.automatalib.serialization.AutomatonSerializationException -> net.automatalib.serialization.FormatException
    • net.automatalib.serialization.fsm.parser.FSMParseException -> net.automatalib.serialization.fsm.parser.FSMFormatException
    • net.automatalib.serialization.taf.parser.TAFParseException -> net.automatalib.serialization.taf.parser.TAFFormatException
    • ->
  • The BackedGeneralPriorityQueue(Class<T> c) constructor was replaced with a more idiomatic BackedGeneralPriorityQueue(Supplier<T> s) constructor.
  • The TAF serialization code now forwards (i.e. throws) IOExceptions that occur when reading from the various data sources.
  • JSR305 annotations have been replaced with checker-framework annotations.
    • AutomataLib now follows checker-framework's convention that (non-annotated) types are usually considered non-null unless explicitly annotated with @Nullable.
    • AutomataLib no longer has a (runtime-) dependency on JSR305 (and other javax.*) annotations or includes them in the distribution artifact. This now makes AutomataLib compliant with Oracle's binary code license and allows AutomataLib artifacts as-is to be bundled in binary distributions with Oracle's JDKs/JREs.


  • StringIndexGenerator has been removed. Its (streamlined) functionality is now available as Mapping via Mappings#stringToIndex and Mappings#indexToString.
  • DelegatingIterator: If you used this class, switch to Guavas equivalent ForwardingIterator.
  • ParameterMismatchException: Was unused and never thrown.
  • StateIDDynamicMapping: Equivalent functionality is provided by ArrayMapping.
  • ResizingIntArray: Internal data structure was unused.
  • The VPDAlphabet interface no longer specifies the get{Internal,Call,Return}Symbols() methods, as the get{Internal,Call,Return}Alphabet() methods supersede their functionality.
  • PaigeTarjan{Initializers,Extractors} methods for non IntAbstractions have been removed. You may use the new convenience methods provided by PaigeTarjanMinimization.
  • Further @Deprecated methods have been removed.
  • Removed ProbMealyTransition and replaced it with the generic MealyTransition directly carrying the ProbabilisticOutput. It is no longer allowed to pass null as transition property.
  • Removed OutputAndLocalInputs, StateLocalInputIncrementalMealyTreeBuilder and StateLocalInputMealyUtil. The (LearnLib) code related to inferring partial Mealy machines no longer requires these transformed automata. Whoever used this code for transforming a partial Mealy machine to a complete one, may use MealyMachines#complete instead.


  • Fixed a bug, where the PaigeTarjan-based minimization would return a wrong automaton when pruning was enabled and the initial automaton was partial.
  • Fixed a bug in our Tarjan SCC implementation (#35, thanks to Malte Mues)
  • Fixed a bug in the computation of characterizing sets (#36).
  • Several (null-related) bugs detected by our ongoing efforts to write tests.