19#include "../../properties/efficient/ReachableStates.h"
33 static T
remove(
const T & fsm );
34 template <
class SymbolType,
class StateType >
46 T M(fsm.getInitialState());
48 for(
const auto &
q : Qa )
51 for(
const auto & a : fsm.getInputAlphabet( ) )
52 M.addInputSymbol( a );
54 for(
const auto & transition : fsm.getTransitions( ) )
55 if( Qa.count( transition.first.first ) )
56 M.addTransition( transition.first.first, transition.first.second, transition.second );
59 std::set_intersection( fsm.getFinalStates( ).begin(), fsm.getFinalStates( ).end(), Qa.
begin( ), Qa.
end( ), std::inserter( intersect, intersect.
begin( ) ) );
60 for(
auto const & state : intersect )
61 M.addFinalState( state );
66template <
class SymbolType,
class StateType >
74 for(
const auto &
q : Qa )
83 if( Qa.count( transition.first.first ) )
84 M.
addTransition( transition.first.first, transition.first.second, transition.second );
88 for(
auto const & state : intersect )
Nondeterministic finite automaton with multiple initial states. Accepts regular languages.
Definition: MultiInitialStateNFA.h:69
bool addState(StateType state)
Definition: MultiInitialStateNFA.h:186
bool addFinalState(StateType state)
Definition: MultiInitialStateNFA.h:235
bool addInputSymbol(SymbolType symbol)
Definition: MultiInitialStateNFA.h:284
void setInitialStates(ext::set< StateType > states)
Definition: MultiInitialStateNFA.h:146
const ext::set< StateType > & getInitialStates() const &
Definition: MultiInitialStateNFA.h:117
const ext::multimap< ext::pair< StateType, SymbolType >, StateType > & getTransitions() const &
Definition: MultiInitialStateNFA.h:520
const ext::set< StateType > & getFinalStates() const &
Definition: MultiInitialStateNFA.h:215
const ext::set< SymbolType > & getInputAlphabet() const &
Definition: MultiInitialStateNFA.h:264
bool addTransition(StateType from, SymbolType input, StateType to)
Add a transition to the automaton.
Definition: MultiInitialStateNFA.h:486
static ext::set< typename T::StateType > reachableStates(const T &fsm)
Definition: ReachableStates.h:37
Definition: UnreachableStatesRemover.h:27
static T remove(const T &fsm)
Definition: UnreachableStatesRemover.h:39
auto begin() &
Inherited behavior of begin for non-const instance.
Definition: set.hpp:99
auto end() &
Inherited behavior of end for non-const instance.
Definition: set.hpp:129
typename T::StateType StateType
Definition: ToGrammarLeftRG.h:64
q
Definition: SingleInitialStateEpsilonTransition.h:85
Definition: ToGrammar.h:31