43template <
class SymbolType >
54 visitor.
visit ( *
this );
61 visitor.
visit ( *
this );
189 if (
ext::type_index (
typeid ( *
this ) ) ==
ext::type_index (
typeid ( other ) ) )
return * this <=>
static_cast < decltype ( ( * this ) )
> ( other );
207 if (
ext::type_index (
typeid ( *
this ) ) ==
ext::type_index (
typeid ( other ) ) )
return *
this ==
static_cast < decltype ( ( * this ) )
> ( other );
235template <
class SymbolType >
239template <
class SymbolType >
243template <
class SymbolType >
245 return this->getLeft ( );
248template <
class SymbolType >
250 return this->getRight ( );
253template <
class SymbolType >
255 return m_substitutionSymbol;
258template <
class SymbolType >
260 return this->getLeft ( );
263template <
class SymbolType >
265 return this->getRight ( );
268template <
class SymbolType >
270 return m_substitutionSymbol;
273template <
class SymbolType >
278template <
class SymbolType >
280 this->setLeft ( std::move ( element ) );
283template <
class SymbolType >
288template <
class SymbolType >
290 this->setRight ( std::move ( element ) );
293template <
class SymbolType >
295 m_substitutionSymbol = std::move ( symbol );
298template <
class SymbolType >
303template <
class SymbolType >
305 return new FormalRTESubstitution ( std::move ( *
this ) );
308template <
class SymbolType >
310 auto first =
ext::tie ( getLeftElement ( ), getRightElement ( ), getSubstitutionSymbol ( ) );
311 auto second =
ext::tie ( other.getLeftElement ( ), other.getRightElement ( ), other.getSubstitutionSymbol ( ) );
316template <
class SymbolType >
318 auto first =
ext::tie ( getLeftElement ( ), getRightElement ( ), getSubstitutionSymbol ( ) );
319 auto second =
ext::tie ( other.getLeftElement ( ), other.getRightElement ( ), other.getSubstitutionSymbol ( ) );
324template <
class SymbolType >
326 out <<
"(FormalRTESubstitution";
327 out <<
" " << m_substitutionSymbol;
328 out <<
" " << getLeftElement ( );
329 out <<
" " << getRightElement ( );
333template <
class SymbolType >
335 if ( getLeftElement ( ).testSymbol ( symbol ) )
return true;
337 if ( getRightElement ( ).testSymbol ( symbol ) )
return true;
339 if ( m_substitutionSymbol.getSymbol ( ) == symbol )
return true;
344template <
class SymbolType >
346 alphabetK.insert ( m_substitutionSymbol.getSymbol ( ) );
348 getRightElement ( ).computeMinimalAlphabet ( alphabetF, alphabetK );
351template <
class SymbolType >
353 return alphabetK.count ( getSubstitutionSymbol ( ).getSymbol ( ) ) > 0 && getLeftElement ( ).
checkAlphabet ( alphabetF, alphabetK ) && getRightElement ( ).checkAlphabet ( alphabetF, alphabetK );
static common::ranked_symbol< DefaultSymbolType > normalizeRankedSymbol(common::ranked_symbol< SymbolType > &&symbol)
Definition: SymbolNormalize.h:81
Definition: ranked_symbol.hpp:20
Binary node is specialisation of Anyary node to two children.
Definition: tree_base.hpp:459
Managed pointer simulating value like behavior.
Definition: memory.hpp:233
Definition: typeindex.h:37
p second
Definition: ToRegExpAlgebraic.h:126
typename T::SymbolType SymbolType
Definition: ReachableStates.h:176
Definition: Permutation.hpp:18
Definition: sigHandler.cpp:20
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
auto move_copy(const T ¶m)
Allow moving of copied instance of the source.
Definition: utility.hpp:45
Definition: ToFTAGlushkov.h:22
Definition: FordFulkerson.hpp:16