automatalib-0.11.0
          ·
          
            140 commits
          
          to develop
          since this release
        
        
        
Added
- Added the incremental AdaptiveMealyBuilderthat 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 SubsequentialTransducerinterface 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-corepackages have been aligned with their correspondingautomata-apiones which often results in dropping the.implor.compactsub-packages.
- Alphabet-related code which has been moved from the- net.automatlib.wordpackage to the- net.automatalib.alphabetpackage.
- 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.FiniteKTSand- FiniteKTSno longer extends the- Graphinterface but the- Automatoninterface 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 SupportsGrowingAlphabetclass tonet.automatalib.alphabet.
- moved the package net.automatalib.ts.comptonet.automatalib.util.ts.compin theautomata-utilmodule.
- moved TS#bfs{Order,Iterator}toTSTraversal#breadthFirst{Order,Iterator}.
 
 
- 
- AbstractOneSEVPAno longer implements the- Graphinterface, but- SEVPAs are now- GraphViewable.
- The automata-dot-visualizermodule has been refactored and many Swing-related classes have been made package-private. TheDOTclass 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 aJDialogwhich offers blocking modal semantics (e.g., for debugging purposes).
- The {Deterministc,NearLinear}EquivalenceTestclasses have become factories that cannot be instantiated anymore and only offer static methods.
- Graph's- adjacentTarget{,Iterator}(and related) methods have been renamed to- getAdjacentNodes{,Iterator}.
- Many classes of the automata-incrementalartifact have been cleaned up to no longer expose internal classes in public interfaces.
- The Indefinite{,Simple}Graphclasses no longer haveCollection-based getters butIterable-based ones since indefinite structures typically cannot specify sizes. TheCollection-based getters are delegated to theGraphclass.
- Minimizerno longer provides a- getInstance()method but can be instantiated directly.
- The OneSEVPAinterface has been generalized to an arbitrary (k-)SEVPAinterface. The oldOneSEVPAspecialization is still available and unchanged.
- The OneSEVPAUtilsclass has been merged into theOneSEVPAsclass.
- The RandomUtilclass 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.
- ShortestPathsnow offers fewer but less confusing methods. Previously there were methods such as- shortestPaththat took an initial node and multiple target nodes which much better fits to the idea of computing- shortestPath*s*rather than any shortest path to one of the target nodes. The old behavior can still be replicated with the generic- Predicate-based versions.
- StrictPriorityQueueis now package-private as it is only meant for internal use.
- Symbolnow has a type-safe user object and id-based- hashcode/- equalssemantics.
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, useAbstractCompactGraphinstead.
- Removed AbstractCompactSimpleGraph. All functionality is provided inCompactSimpleGraph.
- Removed CmpUtil#safeComparator. UseComparators#nullsFirstorComparators#nullsLastinstead.
- Removed DelegateVisualizationHelperwithout replacement. Instead, directly override/extend theVisualizationHelperyou 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 theDFSExamplefor reference.
- Removed (unused) DisjointSetForestIntclass without replacement.
- Removed non-static methods on RandomAutomatafactory (including thegetInstance()method).
- Removed net.automatalib.graphs.IndefiniteLTS.java. By naming, this class should denote aTransitionSystemand not aGraphstructure. However, sinceTransitionSystems are inherently labeled, this class serves no more real purpose. To re-establish the previous functionality, simply implementGraphandEdgeLabels.
- The Stream-based getters ofIndefinite{,Simple}Graphhave been removed in favor of theIterator-based ones.
- Removed (unused) SuffixTrieclass without replacement. Similar functionality can be achieved with AutomataLib's incremental module.
- The automata-dot-visualizermodule has been refactored and many Swing-related classes have been made package-private. TheDOTclass 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 aJDialogwhich offers blocking modal semantics (e.g., for debugging purposes).
Fixed
- Fixed a regression in AbstractLTSminMonitorMealyregarding BBC (#46).
- Fixed a bug in CharacterizingSetswhich 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#transitionCoverIteratorwhich 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