Class IncrementalPCDFADAGBuilder<I>

java.lang.Object
net.automatalib.incremental.dfa.AbstractIncrementalDFABuilder<I>
net.automatalib.incremental.dfa.dag.IncrementalPCDFADAGBuilder<I>
Type Parameters:
I - input symbol class
All Implemented Interfaces:
SupportsGrowingAlphabet<I>, InputAlphabetHolder<I>, IncrementalDFABuilder<I>, IncrementalConstruction<DFA<?,I>,I>

public class IncrementalPCDFADAGBuilder<I> extends AbstractIncrementalDFABuilder<I>
The prefix-closed version of IncrementalDFADAGBuilder. Contrary to the regular lookup semantics, where an exact response to a lookup can only be given, if the exact word has been observed before, the prefix-closed semantics behave as follows:
  • prefixes of previously observed accepted words will result in a Acceptance.TRUE response as well.
  • continuations of previously observed rejected words will result in a Acceptance.FALSE response as well.
  • Constructor Details

    • IncrementalPCDFADAGBuilder

      public IncrementalPCDFADAGBuilder(Alphabet<I> inputAlphabet)
  • Method Details

    • lookup

      public Acceptance lookup(Word<? extends I> word)
      Description copied from interface: IncrementalDFABuilder
      Looks up the tri-state acceptance value for a given word.
      Parameters:
      word - the word
      Returns:
      the tri-state acceptance value for this word.
    • insert

      public void insert(Word<? extends I> word, boolean accepting)
      Description copied from interface: IncrementalDFABuilder
      Inserts a new word into the automaton, with a given acceptance value.
      Parameters:
      word - the word to insert
      accepting - whether this word should be marked as accepting
    • addAlphabetSymbol

      public void addAlphabetSymbol(I symbol)
      Description copied from interface: SupportsGrowingAlphabet
      Notifies the data structure that a new symbol should be added to the alphabet. Behavior depends on the implementation:
      • After adding a new symbol, the symbol-related data may either be initialized with default values or undefined.
      • Duplicate symbols may: (1) be handled accordingly, (2) be ignored or (3) result in an error.
      Some data structures may need to be properly initialized (e.g. with a GrowingAlphabet) to handle potentially shared state across multiple instances. If the needed requirements are not met, a GrowingAlphabetNotSupportedException can be thrown.
      Specified by:
      addAlphabetSymbol in interface SupportsGrowingAlphabet<I>
      Overrides:
      addAlphabetSymbol in class AbstractIncrementalDFABuilder<I>
      Parameters:
      symbol - the symbol to add to the alphabet.
    • findSeparatingWord

      public @Nullable Word<I> findSeparatingWord(DFA<?,I> target, Collection<? extends I> inputs, boolean omitUndefined)
      Description copied from interface: IncrementalConstruction
      Checks the current state of the construction against a given target model, and returns a word exposing a difference if there is one.
      Parameters:
      target - the target automaton model
      inputs - the set of input symbols to consider
      omitUndefined - if this is set to true, then undefined transitions in the target model will be interpreted as "unspecified/don't know" and omitted in the equivalence test. Otherwise, they will be interpreted in the usual manner (e.g., non-accepting sink in case of DFAs).
      Returns:
      a separating word, or null if no difference could be found.
    • asTransitionSystem

      public DFA<?,I> asTransitionSystem()
      Description copied from interface: IncrementalConstruction
      Retrieves a transition system view of the current state of the construction. The transition system model should be backed by the construction, i.e., subsequent changes will be reflected in the transition system.
      Returns:
      a transition system view on the current state of the construction
    • asGraph

      public Graph<?,?> asGraph()
      Description copied from interface: IncrementalConstruction
      Retrieves a graph view of the current state of the construction. The graph model should be backed by the construction, i.e., subsequent changes will be reflected in the graph model.
      Returns:
      a graph view on the current state of the construction