automatalib-0.9.0
·
405 commits
to develop
since this release
Added
- A new alphabet implementation
MapAlphabetthat is based on the oldSimpleAlphabetbut without implementing theGrowingAlphabetinterface. IntRangeIteratornow implementsPrimitiveIterator.OfInt.- A parser for
dotfiles has been added and is available in theautomata-serialization-dotmodule via theDOTParsersfactory. - A new
PaigeTarjanMinimizationfactory 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
LTSminLTLParserto verify if LTL properties match the expected syntax of LTSmin. - A
WordCollectorfor collecting words from symbolStreams.
Changed
- Refactored the following packages/classes:
net.automatalib.words.impl.SimpleAlphabet->net.automatalib.words.impl.GrowingMapAlphabetnet.automatalib.serialization.AutomatonSerializationException->net.automatalib.serialization.FormatExceptionnet.automatalib.serialization.fsm.parser.FSMParseException->net.automatalib.serialization.fsm.parser.FSMFormatExceptionnet.automatalib.serialization.taf.parser.TAFParseException->net.automatalib.serialization.taf.parser.TAFFormatExceptionnet.automatalib.automata.transducers.impl.map.SimpleMapGraph->net.automatalib.graphs.map.SimpleMapGraph
- The
BackedGeneralPriorityQueue(Class<T> c)constructor was replaced with a more idiomaticBackedGeneralPriorityQueue(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.
- AutomataLib now follows checker-framework's convention that (non-annotated) types are usually considered non-null unless explicitly annotated with
Removed
StringIndexGeneratorhas been removed. Its (streamlined) functionality is now available asMappingviaMappings#stringToIndexandMappings#indexToString.DelegatingIterator: If you used this class, switch to Guavas equivalentForwardingIterator.ParameterMismatchException: Was unused and never thrown.StateIDDynamicMapping: Equivalent functionality is provided byArrayMapping.ResizingIntArray: Internal data structure was unused.- The
VPDAlphabetinterface no longer specifies theget{Internal,Call,Return}Symbols()methods, as theget{Internal,Call,Return}Alphabet()methods supersede their functionality. PaigeTarjan{Initializers,Extractors}methods for nonIntAbstractions have been removed. You may use the new convenience methods provided byPaigeTarjanMinimization.- Further
@Deprecatedmethods have been removed. - Removed
ProbMealyTransitionand replaced it with the genericMealyTransitiondirectly carrying theProbabilisticOutput. It is no longer allowed to passnullas transition property. - Removed
OutputAndLocalInputs,StateLocalInputIncrementalMealyTreeBuilderandStateLocalInputMealyUtil. 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 useMealyMachines#completeinstead.
Fixed
- 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.