automatalib-0.11.0
·
111 commits
to develop
since this release
Added
- Added the incremental
AdaptiveMealyBuilder
that allows for overriding previous traces (#56, thanks to @tiferrei). - Added modal transition systems (MTSs) including related utilities such as composition, conjunction, refinement (thanks to @mjasper, @Conturing, and @dvs23).
- Added the M3C model-checker for verifying µ-calculus and CTL formulas on context-free modal process systems (thanks to @AlnisM).
- Added the ability to M3C to generate witnesses for negated safety properties (thanks to @Viperish-byte).
- Added support for procedural systems (SPAs, SBA, SPMMs) as well as related concepts such as verification, testing, and transformations thereof (thanks to @mtf90).
- Added
SubsequentialTransducer
interface and implementations/utilities (thanks to @mtf90).
Changed
- Refactorings
-
Many AutomataLib packages have been refactored from plural-based keywords to singular-based keywords. Some examples are
- renamed
net.automatalib.automata.*
tonet.automatalib.automaton.*
. - renamed
net.automatalib.automata.concepts.*
tonet.automatalib.automaton.concept.*
. - renamed
net.automatalib.automata.graphs.*
tonet.automatalib.automaton.graph.*
. - renamed
net.automatalib.automata.helpers.*
tonet.automatalib.automaton.helper.*
. - renamed
net.automatalib.automata.transducers.*
tonet.automatalib.automaton.transducer.*
. - renamed
net.automatalib.graphs.*
tonet.automatalib.graph.*
. - renamed
net.automatalib.graph.concepts.*
tonet.automatalib.graph.concept.*
. - renamed
net.automatalib.graph.helpers.*
tonet.automatalib.graph.helper.*
. - renamed
net.automatalib.ts.acceptors.*
tonet.automatalib.ts.acceptor.*
. - renamed
net.automatalib.settignssources.*
tonet.automatalib.settingsource.*
. - renamed
net.automatalib.words.*
tonet.automatalib.word.*
. - renamed
net.automatalib.commons.smartcollections.*
tonet.automatalib.common.smartcollection.*
. - renamed
net.automatalib.commons.util.*
tonet.automatalib.common.util.*
. - renamed
net.automatalib.modelcheckers.*
tonet.automatalib.modelchecker.*
. - renamed
net.automatalib.util.automata.*
tonet.automatalib.util.automaton.*
. - etc.
While this may cause some refactoring, it should only affect import statements as the names of most classes remain identical.
- renamed
-
Some actual re-namings concern
- all code around visibly push-down automata which now uses the "vpa" acronym (previously "vpda"). This includes package names, class names and (Maven) module names.
- many of the
automata-core
packages have been aligned with their correspondingautomata-api
ones which often results in dropping the.impl
or.compact
sub-packages. Alphabet
-related code which has been moved from thenet.automatlib.word
package to thenet.automatalib.alphabet
package.net.automatalib.automata.transducers.impl.compact.CompactMealyTransition
->net.automatalib.automaton.CompactTransition
.net.automatalib.commons.util.BitSetIterator
->net.automatalib.common.util.collection.BitSetIterator
.net.automatalib.graphs.base.compact.AbstractCompactGraph#getNodeProperties(int)
->net.automatalib.graph.base.AbstractCompactGraph#getNodeProperty(int)
.net.automatalib.graphs.FiniteKTS
->net.automatalib.ts.FiniteKTS
andFiniteKTS
no longer extends theGraph
interface but theAutomaton
interface and has its type variables re-ordered.net.automatalib.graphs.FiniteLTS
->net.automatalib.graph.FiniteLabeledGraph
.GraphTraversal#dfIterator
->GraphTraversal#depthFirstIterator
.- moved the
net.automatalib.incremental.mealy.dynamic.*
classes tonet.automatalib.incremental.mealy
. - moved the
net.automatalib.settingssource.*
classes tonet.automatalib
. - moved
SupportsGrowingAlphabet
class tonet.automatalib.alphabet
. - moved the package
net.automatalib.ts.comp
tonet.automatalib.util.ts.comp
in theautomata-util
module. - moved
TS#bfs{Order,Iterator}
toTSTraversal#breadthFirst{Order,Iterator}
.
-
AbstractOneSEVPA
no longer implements theGraph
interface, butSEVPA
s are nowGraphViewable
.- The
automata-dot-visualizer
module has been refactored and many Swing-related classes have been made package-private. TheDOT
class is now the central factory class to access the functionality of the module. The previousDOTFrame
(whose functionality is now accessible via, e.g.,DOT#renderDOTStrings
) is now based on aJDialog
which offers blocking modal semantics (e.g., for debugging purposes). - The
{Deterministc,NearLinear}EquivalenceTest
classes have become factories that cannot be instantiated anymore and only offer static methods. Graph
'sadjacentTarget{,Iterator}
(and related) methods have been renamed togetAdjacentNodes{,Iterator}
.- Many classes of the
automata-incremental
artifact have been cleaned up to no longer expose internal classes in public interfaces. - The
Indefinite{,Simple}Graph
classes no longer haveCollection
-based getters butIterable
-based ones since indefinite structures typically cannot specify sizes. TheCollection
-based getters are delegated to theGraph
class. Minimizer
no longer provides agetInstance()
method but can be instantiated directly.- The
OneSEVPA
interface has been generalized to an arbitrary (k-)SEVPA
interface. The oldOneSEVPA
specialization is still available and unchanged. - The
OneSEVPAUtils
class has been merged into theOneSEVPAs
class. - The
RandomUtil
class has been made a factory (non-instantiable, only static methods) and its methods now require the random object as first parameter. - AutomataLib classes no longer implement
Serializable
. We never fully supported the semantics of the interface and never intended to do so. In fact, the old approach failed miserably if any class was involved where we missed an "implements Serializable" statement. In order to prevent confusion by promising false contracts, implementing this markup interface has been removed. Serialization should now be done in user-land via one of the many external (and more optimizable) serialization frameworks such as FST, XStream, etc. ShortestPaths
now offers fewer but less confusing methods. Previously there were methods such asshortestPath
that took an initial node and multiple target nodes which much better fits to the idea of computingshortestPath*s*
rather than any shortest path to one of the target nodes. The old behavior can still be replicated with the genericPredicate
-based versions.StrictPriorityQueue
is now package-private as it is only meant for internal use.Symbol
now has a type-safe user object and id-basedhashcode
/equals
semantics.
Removed
- Removed the (package-private) classes
net.automatalib.util.automata.predicates.{AcceptanceStatePredicate,OutputSatisfies,TransitionPropertySatisfies}
. - Removed the
IndefiniteSimpleGraph#asNormalGraph()
method. Existing code should not need the transformation. - Removed
AbstractCompactNPGraph
, useAbstractCompactGraph
instead. - Removed
AbstractCompactSimpleGraph
. All functionality is provided inCompactSimpleGraph
. - Removed
CmpUtil#safeComparator
. UseComparators#nullsFirst
orComparators#nullsLast
instead. - Removed
DelegateVisualizationHelper
without replacement. Instead, directly override/extend theVisualizationHelper
you want to delegate to. - Removed the DFS-specific
DFSTraversalVisitor
(and related classes) without replacement. Client-code that relied on this class can re-implement the functionality by providing an own implementation of the more generalGraphTraversalVisitor
. See the changes on theDFSExample
for reference. - Removed (unused)
DisjointSetForestInt
class without replacement. - Removed non-static methods on
RandomAutomata
factory (including thegetInstance()
method). - Removed
net.automatalib.graphs.IndefiniteLTS.java
. By naming, this class should denote aTransitionSystem
and not aGraph
structure. However, sinceTransitionSystem
s are inherently labeled, this class serves no more real purpose. To re-establish the previous functionality, simply implementGraph
andEdgeLabels
. - The
Stream
-based getters ofIndefinite{,Simple}Graph
have been removed in favor of theIterator
-based ones. - Removed (unused)
SuffixTrie
class without replacement. Similar functionality can be achieved with AutomataLib's incremental module. - The
automata-dot-visualizer
module has been refactored and many Swing-related classes have been made package-private. TheDOT
class is now the central factory class to access the functionality of the module. The previousDOTFrame
(whose functionality is now accessible via, e.g.,DOT#renderDOTStrings
) is now based on aJDialog
which offers blocking modal semantics (e.g., for debugging purposes).
Fixed
- Fixed a regression in
AbstractLTSminMonitorMealy
regarding BBC (#46). - Fixed a bug in
CharacterizingSets
which ignored the semantics of acceptors, i.e., not all states of an acceptor could be distinguished solely based on acceptance. - Fixed a bug in
Covers#transitionCoverIterator
which previously included undefined transitions. - Fixed a cache consistency bug in various DAG-based incremental builders.
New Contributors
- @AlnisM made their first contribution in #47
- @tiferrei made their first contribution in #50
- @ericcccsliu made their first contribution in #52
- @MokonaNico made their first contribution in #55
- @Viperish-byte made their first contribution in #54
- @MasWag made their first contribution in #53
- @jn1z made their first contribution in #60