·
4 commits
to develop
since this release
Added
- A new formalism for Mealy machines with local timers (MMLTs) including means for conformance testing and equivalence checking has been added (thanks to @pdev55).
- With the introduction of
MMLTs which are finite-state systems structurally but infinite-state systems semantically, AutomataLib now more rigorously distinguishes between these two concepts by introducing (and at some points requiring) specific{Finite,}Semanticstypes. Both concepts are conveniently accessible via newRegularAutomatontypes. For automaton types that are inherently finite-state (e.g.,DFAs,MealyMachines, etc.), this should not require any refactoring. - Added a new
automata-serialization-matamodule for serializing (explicit) NFAs in the.mataformat as used by the mata library. automata-modelchecking-m3cnow supports ARM-based macOS systems.automata-modelchecking-m3ccan now be included in jlink images.- Added
KWay{State,Transition}CoverTestsIterators toautomata-utilas a new means for conformance testing. - Added
CollectionUtil#allCombintationsIteratorandCollectionUtil#allPermutationsIteratorfor computing k-combinations and k-permutations. - Added
NFAs#canonizeto canonize NFAs via Brzozowski's algorithm. - Added a DOT parser for
ContextFreeModalProcessSystems. - For nondeterministic model types,
DOTParsersnow contains methods that accept an initial node prefix, in case the number of initial nodes is not known beforehand.
Changed
- AutomataLib shifted version numbers to more prominently communicate breaking changes with major versions.
- AutomataLib now requires Java 17 at runtime.
- The following classes have been refactored to
records:BricsTransitionPropertyTransitionEdge{,.Property}ProbabilisticOutputLTSminVersion
- The following class hierarchies have been made
sealed:CommonAttrsCommonStyles
- The following classes have been refactored to
SEVPAs have been adjusted to the new structure/semantics split, by now implementingUniversalAutomatonandDeterministicSemantics.AbstractDDSolverno longer implements theModelCheckerinterface to prevent possible conflicts with how systems are managed (anAbstractDDSolveris inherently linked to a specific CFMPS instance, whereas aModelCheckershould handle arbitrary ones). Instead, obtain M3C-based model checkers via the newM3CCheckerfactory.IncrementalConstruction#asTransitionSystemnow returns a finite automaton view. This is in line with#asGraphwhich already required a finite representation before.- The
IntAbstractioninterfaces have been moved to their respective implementations in thenet.automatalib.automaton.abstractionpackage. - The
ShrinkableAutomatoninterface has been replaced with theShrinkableconcept. - The
compute{State,Suffix,}Outputconcepts fromDet{Suffix,}OutputAutomatonhave been lifted to infinite-state transition systems. As part of this refactoring, some inconsistencies have been addressed. Previously, forWord-output systems,computeSuffixOutputthrew anUndefinedPropertyAccessExceptionif the prefix traversed an undefined transition but not if the suffix did (here, the output would only be cut short). Now, both methods simply early-exit output computation. Furthermore, these changes also include the following renamings:DetOutputAutomaton->DeterministicOutputAutomatonDetSuffixOutputAutomaton->DeterministicSuffixOutputAutomatonDeterministicOutputTS->DeterministicTraceableTS
ProcessUtil#invokeProcessnow handles consumers for stdout and stderr separately.RandomAutomata#randomDeterministichas been renamed toRandomAutomata#randomRegularDeterministic.
Removed
IOUtil#copy(Reader, Writer)has been removed. UseReader#transferTo(Writer)instead.JVMUtilhas been removed. UseRuntime.version().feature()for its previously (only) provided method.StackState#SINKhas been removed as procedural systems now better handle undefined transitions.DFAs#minimizehas been removed. UseHopcroftMinimizer#minimizeDFAinstead.
Fixed
SPAConverter.ConversionResultis now publicly accessible.