64template <
class SymbolTypeT = DefaultSymbolType,
class StateTypeT = DefaultStateType >
65class ArcFactoredDeterministicZAutomaton final :
public core::Components < ArcFactoredDeterministicZAutomaton < SymbolTypeT, StateTypeT >, ext::set < SymbolTypeT >, component::Set, InputAlphabet, ext::set < StateTypeT >, component::Set, std::tuple < States, FinalStates > > {
97 return this->
template accessComponent < States > ( ).get ( );
106 return std::move ( this->
template accessComponent < States > ( ).
get ( ) );
117 return this->
template accessComponent < States > ( ).add ( std::move ( state ) );
126 this->
template accessComponent < States > ( ).set ( std::move ( states ) );
137 this->
template accessComponent < States > ( ).remove ( state );
146 return this->
template accessComponent < FinalStates > ( ).get ( );
155 return std::move ( this->
template accessComponent < FinalStates > ( ).
get ( ) );
166 return this->
template accessComponent < FinalStates > ( ).add ( std::move ( state ) );
175 this->
template accessComponent < FinalStates > ( ).set ( std::move ( states ) );
186 this->
template accessComponent < FinalStates > ( ).remove ( state );
195 return this->
template accessComponent < InputAlphabet > ( ).get ( );
204 return std::move ( this->
template accessComponent < InputAlphabet > ( ).
get ( ) );
215 return this->
template accessComponent < InputAlphabet > ( ).add ( std::move ( symbol ) );
224 this->
template accessComponent < InputAlphabet > ( ).add ( std::move ( symbols ) );
233 this->
template accessComponent < InputAlphabet > ( ).set ( std::move ( symbols ) );
244 this->
template accessComponent < InputAlphabet > ( ).remove ( symbol );
294 return std::move ( transitions );
304 if ( transition.second ==
q )
319 res.insert ( transition );
356 return out <<
"(ArcFactoredDeterministicZAutomaton "
357 <<
" states = " << instance.
getStates ( )
381template <
class SymbolType,
class StateType >
392template<
class SymbolType,
class StateType >
393ArcFactoredDeterministicZAutomaton < SymbolType, StateType >::ArcFactoredDeterministicZAutomaton (
ext::set < StateType > states,
ext::set < SymbolType > inputAlphabet,
ext::set < StateType > finalStates ) :
core::Components <
ArcFactoredDeterministicZAutomaton,
ext::set < SymbolType >, component::Set, InputAlphabet,
ext::set < StateType >, component::Set, std::tuple < States, FinalStates > > ( std::move ( inputAlphabet ), std::move ( states ), std::move ( finalStates ) ) {
396template<
class SymbolType,
class StateType >
400template<
class SymbolType,
class StateType >
402 if ( lhs.template is < SymbolType > ( ) && ! getInputAlphabet ( ).count ( lhs.template get < SymbolType > ( ) ) )
407 if ( ! getStates ( ).count ( stateLhs.first ) )
409 if ( ! getStates ( ).count ( stateLhs.second ) )
413 if (! getStates().count(rhs))
416 if ( transitions.find ( lhs ) != transitions.end ( ) ) {
417 if ( transitions.find ( lhs )->second == rhs )
423 transitions.insert ( std::move ( lhs ), std::move ( rhs ) );
427template<
class SymbolType,
class StateType >
432template<
class SymbolType,
class StateType >
437template<
class SymbolType,
class StateType >
439 if ( transitions.find ( lhs ) == transitions.end ( ) )
442 if ( transitions.find ( lhs )->second != next )
445 transitions.erase ( lhs );
459template<
class SymbolType,
class StateType >
472 if ( t.first == symbol )
497 if (
automaton.template accessComponent < automaton::States > ( ).get ( ).count (
ext::poly_comp ( symbol ) ) )
508template<
class SymbolType,
class StateType >
520 if (
automaton.getFinalStates ( ).count ( state ) )
526 if ( lhs.first == state || lhs.second == state )
552 if (
automaton.template accessComponent < automaton::InputAlphabet > ( ).get ( ).count (
ext::poly_comp ( state ) ) )
563template<
class SymbolType,
class StateType >
587 return automaton.template accessComponent < automaton::States > ( ).get ( ).count ( state );
605template <
class SymbolType,
class StateType >
615 if ( transition.first.template is < SymbolType > ( ) ) {
619 res.addTransition ( std::move ( lhs ), std::move ( to ) );
625 res.addTransition ( std::move ( lshDefault ), std::move ( to ) );
static ext::set< DefaultSymbolType > normalizeAlphabet(ext::set< SymbolType > &&symbols)
Definition: SymbolNormalize.h:50
static DefaultSymbolType normalizeSymbol(SymbolType &&symbol)
Definition: SymbolNormalize.h:68
Deterministic Z-Automaton in Arc-Factored Normal Form. Computation model for unranked regular tree la...
Definition: ArcFactoredDeterministicZAutomaton.h:65
ext::set< StateType > && getStates() &&
Definition: ArcFactoredDeterministicZAutomaton.h:105
const ext::set< StateType > & getFinalStates() const &
Definition: ArcFactoredDeterministicZAutomaton.h:145
StateTypeT StateType
Definition: ArcFactoredDeterministicZAutomaton.h:68
void setInputAlphabet(ext::set< SymbolType > symbols)
Definition: ArcFactoredDeterministicZAutomaton.h:232
void addInputSymbols(ext::set< SymbolType > symbols)
Definition: ArcFactoredDeterministicZAutomaton.h:223
SymbolTypeT SymbolType
Definition: ArcFactoredDeterministicZAutomaton.h:67
void removeInputSymbol(const SymbolType &symbol)
Definition: ArcFactoredDeterministicZAutomaton.h:243
auto operator<=>(const ArcFactoredDeterministicZAutomaton &other) const
Definition: ArcFactoredDeterministicZAutomaton.h:332
bool operator==(const ArcFactoredDeterministicZAutomaton &other) const
Definition: ArcFactoredDeterministicZAutomaton.h:343
ext::set< SymbolType > && getInputAlphabet() &&
Definition: ArcFactoredDeterministicZAutomaton.h:203
bool addState(StateType state)
Definition: ArcFactoredDeterministicZAutomaton.h:116
void setStates(ext::set< StateType > states)
Definition: ArcFactoredDeterministicZAutomaton.h:125
ext::map< ext::variant< SymbolType, ext::pair< StateType, StateType > >, StateType > && getTransitions() &&
Definition: ArcFactoredDeterministicZAutomaton.h:293
ext::map< ext::variant< SymbolType, ext::pair< StateType, StateType > >, StateType > getTransitionsFromState(const StateType &q) const
Definition: ArcFactoredDeterministicZAutomaton.h:314
const ext::map< ext::variant< SymbolType, ext::pair< StateType, StateType > >, StateType > & getTransitions() const &
Definition: ArcFactoredDeterministicZAutomaton.h:284
ArcFactoredDeterministicZAutomaton()
Creates a new instance of the automaton.
Definition: ArcFactoredDeterministicZAutomaton.h:397
bool addFinalState(StateType state)
Definition: ArcFactoredDeterministicZAutomaton.h:165
const ext::set< SymbolType > & getInputAlphabet() const &
Definition: ArcFactoredDeterministicZAutomaton.h:194
bool addInputSymbol(SymbolType symbol)
Definition: ArcFactoredDeterministicZAutomaton.h:214
void removeFinalState(const StateType &state)
Definition: ArcFactoredDeterministicZAutomaton.h:185
const ext::set< StateType > & getStates() const &
Definition: ArcFactoredDeterministicZAutomaton.h:96
friend ext::ostream & operator<<(ext::ostream &out, const ArcFactoredDeterministicZAutomaton &instance)
Definition: ArcFactoredDeterministicZAutomaton.h:355
void removeState(const StateType &state)
Definition: ArcFactoredDeterministicZAutomaton.h:136
ext::set< StateType > && getFinalStates() &&
Definition: ArcFactoredDeterministicZAutomaton.h:154
void setFinalStates(ext::set< StateType > states)
Definition: ArcFactoredDeterministicZAutomaton.h:174
bool removeTransition(const ext::variant< SymbolType, ext::pair< StateType, StateType > > &lhs, const StateType &next)
Removes a transition from the automaton.
Definition: ArcFactoredDeterministicZAutomaton.h:438
ext::map< ext::variant< SymbolType, ext::pair< StateType, StateType > >, StateType > getTransitionsToState(const StateType &q) const
Definition: ArcFactoredDeterministicZAutomaton.h:300
bool addTransition(ext::variant< SymbolType, ext::pair< StateType, StateType > > lhs, StateType rhs)
Add a transition to the automaton.
Definition: ArcFactoredDeterministicZAutomaton.h:401
Definition: AutomatonException.h:15
static DefaultStateType normalizeState(StateType &&state)
Definition: AutomatonNormalize.h:76
static ext::multiset< DefaultStateType > normalizeStates(ext::multiset< StateType > &&states)
Definition: AutomatonNormalize.h:49
Definition: ArcFactoredDeterministicZAutomaton.h:371
Definition: components.hpp:181
static bool available(const automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &, const StateType &)
Definition: ArcFactoredDeterministicZAutomaton.h:541
static void valid(const automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &automaton, const StateType &state)
Definition: ArcFactoredDeterministicZAutomaton.h:551
static bool used(const automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &automaton, const StateType &state)
Definition: ArcFactoredDeterministicZAutomaton.h:519
static bool available(const automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &automaton, const StateType &state)
Definition: ArcFactoredDeterministicZAutomaton.h:586
static bool used(const automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &, const StateType &)
Definition: ArcFactoredDeterministicZAutomaton.h:574
static void valid(const automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &, const StateType &)
Definition: ArcFactoredDeterministicZAutomaton.h:596
static bool used(const automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &automaton, const SymbolType &symbol)
Definition: ArcFactoredDeterministicZAutomaton.h:470
static void valid(const automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &automaton, const SymbolType &symbol)
Definition: ArcFactoredDeterministicZAutomaton.h:496
static bool available(const automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &, const SymbolType &)
Definition: ArcFactoredDeterministicZAutomaton.h:486
Definition: setComponents.hpp:26
Class extending the map class from the standard library. Original reason is to allow printing of the ...
Definition: map.hpp:48
Class extending the pair class from the standard library. Original reason is to allow printing of the...
Definition: pair.hpp:43
Implementation of the variant class allowing to store any type of those listed in the template parame...
Definition: variant.hpp:98
Definition: BarSymbol.cpp:12
typename T::StateType StateType
Definition: ToGrammarLeftRG.h:64
typename T::SymbolType SymbolType
Definition: ReachableStates.h:176
return res
Definition: MinimizeByPartitioning.h:145
q
Definition: SingleInitialStateEpsilonTransition.h:85
Definition: ToGrammar.h:31
constexpr bool isAFDZA
Definition: ArcFactoredDeterministicZAutomaton.h:390
Definition: normalize.hpp:10
constexpr tuple< Elements &... > tie(Elements &... args) noexcept
Helper of extended tuple of references construction. The tuple is constructed to reffer to values in ...
Definition: tuple.hpp:218
reference_mover< T > make_mover(T ¶m)
Move adaptor construction function specialized to lvalue reference parameter.
Definition: iterator.hpp:468
std::string to_string(const T &value)
To string method designated for objects that can be casted to string.
Definition: string.hpp:131
PolyComp< T > poly_comp(const T &inst)
Definition: functional.hpp:60
constexpr auto make_pair(T1 &&x, T2 &&y)
Definition: pair.hpp:79
auto & get(ext::ptr_array< Type, N > &tpl)
Specialisation of get function for pointer arrays.
Definition: ptr_array.hpp:693
static automaton::ArcFactoredDeterministicZAutomaton< > eval(automaton::ArcFactoredDeterministicZAutomaton< SymbolType, StateType > &&value)
Definition: ArcFactoredDeterministicZAutomaton.h:607
Definition: normalize.hpp:13