Skip to content

automatalib-0.8.0

Compare
Choose a tag to compare
@mtf90 mtf90 released this 18 Feb 11:45
· 443 commits to master since this release

Full changelog

Added

  • Added support for model checking automata using the LTSmin model checker (thanks to Jeroen Meijer).
  • Added a CompactMoore implementation.
  • Added an AutomatonBuilder for Moore Machines.
  • Added support for adding input symbols to incremental constructions (tree caches, DAG caches).
  • Support for Java 11. Note: AutomataLib still targets Java 8, and thus needs classes provided by this environment (specifically: annotations from javax.annotation). If you plan to use AutomataLib in a Java 11+ environment, make sure to provide these classes. They are not shipped with AutomataLib.

Changed

  • Refactored the following packages/classes:
    • net.automatalib.automata.transout -> net.automatalib.automata.transducers
    • net.automatalib.ts.transout -> net.automatalib.ts.output
    • net.automatalib.util.automata.transout -> net.automatalib.util.automata.transducers
    • net.automatalib.automata.GrowableAlphabetAutomaton -> net.automatalib.SupportsGrowingAlphabet
  • Some runtime properties for dynamically configuring AutomataLib have been renamed. There now exists the AutomataLibProperty enum as a single reference point for all available properties.
  • Several of the AbstractCompact* automata classes have been refactored to share common functionality. While this shouldn't affect its implementations (such as CompactDFA or CompactMealy) user-land code using the abstract classes may break.
  • The BricsDFA wrapper previously allowed (via a boolean flag) to trigger determinization of the BRICS automaton. This determinization is now performed automatically if necessary. Instead the boolean flag now triggers a totalization of the transition function, which allows to properly use BricsDFAs in structural equivalence tests (as BRICS automata do not allow to limit their input alphabet to certain characters).
  • Adding new symbols to automata (via the SupportsGrowingAlphabet interface) now requires the automaton to be initialized with a GrowingAlphabet instance. This is to make sure that the user has full control over which alphabet instance should be used instead of AutomataLib making decisions on behalf of the user.

Removed

  • The mutable Pair class has been removed. The previously immutable pair class IPair has been renamed to Pair.
  • Some utility classes and functions (especially from the automata-common-util package) have been removed without replacement, since equivalent functionality is provided by the Google Guava library we depend on. If you used any of this code, switch to the Guava equivalent.
  • RichArray has been removed. At least regarding storage, ArrayStorage can be used as a replacement.
  • SymbolHidingAlphabet has been removed without replacement. Changes to the logic of adding new input symbols should no longer make this class necessary.

Fixed

  • Serializers now use platform dependent newlines. This shouldn't affect deserialization code.
  • Several bugs detected by our ongoing efforts to write tests.