diff --git a/alib2algo/src/automaton/determinize/Determinize.cpp b/alib2algo/src/automaton/determinize/Determinize.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7f101f1e436f9271bf5c1038265f336808b71591 --- /dev/null +++ b/alib2algo/src/automaton/determinize/Determinize.cpp @@ -0,0 +1,24 @@ +#include "Determinize.h" +#include <registration/AlgoRegistration.hpp> + +namespace { + +using deterministicAutomata = ext::variant < + automaton::DFA < >, + automaton::DFTA < >, + automaton::UnorderedDFTA < >, + automaton::InputDrivenDPDA < >, + automaton::VisiblyPushdownDPDA < >, + automaton::RealTimeHeightDeterministicDPDA < >, + automaton::SinglePopDPDA < >, + automaton::DPDA < >, + automaton::OneTapeDTM < > +>; + +auto DeterminizeDeterministicAutomata = registration::AbstractRegister < automaton::determinize::Determinize, deterministicAutomata, const deterministicAutomata & > ( [ ] ( const auto & param ) { return param; }, "automaton" ).setDocumentation ( +"No-op determinisation of automata that are already deterministic.\n\ +\n\ +@param automaton a deterministic automaton\n\ +@return the parameter unchanged" ); + +} /* namespace */ diff --git a/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cpp b/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cpp index fc5dc23ca4768462bc2f25ed18f985701dcf4196..fca55b840213b9e91b04c854cd70ae3eac4200bd 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cpp +++ b/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cpp @@ -1,27 +1,8 @@ #include "Determinize.h" -#include <automaton/FSM/DFA.h> -#include <automaton/FSM/MultiInitialStateNFA.h> -#include <automaton/PDA/DPDA.h> -#include <automaton/PDA/NPDA.h> -#include <automaton/PDA/InputDrivenDPDA.h> -#include <automaton/PDA/InputDrivenNPDA.h> -#include <automaton/PDA/SinglePopDPDA.h> -#include <automaton/PDA/VisiblyPushdownDPDA.h> -#include <automaton/TM/OneTapeDTM.h> -#include <automaton/TA/DFTA.h> -#include <automaton/TA/UnorderedDFTA.h> -#include <automaton/PDA/RealTimeHeightDeterministicNPDA.h> #include <registration/AlgoRegistration.hpp> namespace { -auto DeterminizeInputDrivenDPDA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::InputDrivenDPDA < >, const automaton::InputDrivenDPDA < > & > ( automaton::determinize::Determinize::determinize, "dpda" ).setDocumentation ( -"Determinization of deterministic input-driven pushdown automata.\n\ -Implemented as a no-op.\n\ -\n\ -@param dpda deterministic input-driven pushdown automaton\n\ -@return deterministic input-driven pushdown automaton equivalent to @p dpda" ); - auto DeterminizeInputDrivenNPDA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::InputDrivenDPDA < DefaultSymbolType, DefaultSymbolType, ext::set < DefaultStateType > >, const automaton::InputDrivenNPDA < > & > ( automaton::determinize::Determinize::determinize, "npda" ).setDocumentation ( "Implementation of determinization for input-driven pushdown automata.\n\ \n\ diff --git a/alib2algo/src/automaton/determinize/DeterminizeNFAPart.cpp b/alib2algo/src/automaton/determinize/DeterminizeNFAPart.cpp index fd03ac53fc2ef22489ffd7466f11066c136ba352..193b884331368de7e5a660da03befa7ae2a525c1 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeNFAPart.cpp +++ b/alib2algo/src/automaton/determinize/DeterminizeNFAPart.cpp @@ -1,27 +1,8 @@ #include "Determinize.h" -#include <automaton/FSM/DFA.h> -#include <automaton/FSM/MultiInitialStateNFA.h> -#include <automaton/PDA/DPDA.h> -#include <automaton/PDA/NPDA.h> -#include <automaton/PDA/InputDrivenDPDA.h> -#include <automaton/PDA/InputDrivenNPDA.h> -#include <automaton/PDA/SinglePopDPDA.h> -#include <automaton/PDA/VisiblyPushdownDPDA.h> -#include <automaton/TM/OneTapeDTM.h> -#include <automaton/TA/DFTA.h> -#include <automaton/TA/UnorderedDFTA.h> -#include <automaton/PDA/RealTimeHeightDeterministicNPDA.h> #include <registration/AlgoRegistration.hpp> namespace { -auto DeterminizeDFA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::DFA < >, const automaton::DFA < > & > ( automaton::determinize::Determinize::determinize, "dfa" ).setDocumentation ( -"Determinization of deterministic finite automata.\n\ -Implemented as a no-op.\n\ -\n\ -@param dfa deterministic finite automaton\n\ -@return deterministic finite automaton equivalent to @p dfa" ); - auto DeterminizeNFA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::DFA < DefaultSymbolType, ext::set < DefaultStateType > >, const automaton::NFA < > & > ( automaton::determinize::Determinize::determinize, "nfa" ).setDocumentation ( "Implementation of subset determinization for nondeterministic finite automata.\n\ \n\ diff --git a/alib2algo/src/automaton/determinize/DeterminizeNFTAPart.cpp b/alib2algo/src/automaton/determinize/DeterminizeNFTAPart.cpp index 7e17b671528aac85adcdfe8935acc6c9329249bb..f9798cebfe6a2549918a02dcf5c8888371e69796 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeNFTAPart.cpp +++ b/alib2algo/src/automaton/determinize/DeterminizeNFTAPart.cpp @@ -1,40 +1,14 @@ #include "Determinize.h" -#include <automaton/FSM/DFA.h> -#include <automaton/FSM/MultiInitialStateNFA.h> -#include <automaton/PDA/DPDA.h> -#include <automaton/PDA/NPDA.h> -#include <automaton/PDA/InputDrivenDPDA.h> -#include <automaton/PDA/InputDrivenNPDA.h> -#include <automaton/PDA/SinglePopDPDA.h> -#include <automaton/PDA/VisiblyPushdownDPDA.h> -#include <automaton/TM/OneTapeDTM.h> -#include <automaton/TA/DFTA.h> -#include <automaton/TA/UnorderedDFTA.h> -#include <automaton/PDA/RealTimeHeightDeterministicNPDA.h> #include <registration/AlgoRegistration.hpp> namespace { -auto DeterminizeUnorderedDFTA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::UnorderedDFTA < >, const automaton::UnorderedDFTA < > & > ( automaton::determinize::Determinize::determinize, "dfta" ).setDocumentation ( -"Determinization of deterministic finite tree automata.\n\ -Implemented as a no-op.\n\ -\n\ -@param dfta deterministic finite tree automaton\n\ -@return deterministic finite tree automaton equivalent to @p dfta" ); - auto DeterminizeUnorderedNFTA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::UnorderedDFTA < DefaultSymbolType, ext::set < DefaultSymbolType > >, const automaton::UnorderedNFTA < > & > ( automaton::determinize::Determinize::determinize, "nfta" ).setDocumentation ( "Implementation of subset determinization for nondeterministic finite tree automata.\n\ \n\ @param nfta nondeterministic finite tree automaton\n\ @return deterministic finite tree automaton equivalent to @p nfta" ); -auto DeterminizeDFTA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::DFTA < >, const automaton::DFTA < > & > ( automaton::determinize::Determinize::determinize, "dfta" ).setDocumentation ( -"Determinization of deterministic finite tree automata.\n\ -Implemented as a no-op.\n\ -\n\ -@param dfta deterministic finite tree automaton\n\ -@return deterministic finite tree automaton equivalent to @p dfta" ); - auto DeterminizeNFTA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::DFTA < DefaultSymbolType, ext::set < DefaultSymbolType > >, const automaton::NFTA < > & > ( automaton::determinize::Determinize::determinize, "nfta" ).setDocumentation ( "Implementation of subset determinization for nondeterministic finite tree automata.\n\ \n\ diff --git a/alib2algo/src/automaton/determinize/DeterminizeRHDPDAPart.cpp b/alib2algo/src/automaton/determinize/DeterminizeRHDPDAPart.cpp index 121edc5501eca5000ee0d04f9aad3d7ca9a5ed51..cd01f91f974ae878af5b90881d2bdad98486ccc1 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeRHDPDAPart.cpp +++ b/alib2algo/src/automaton/determinize/DeterminizeRHDPDAPart.cpp @@ -1,47 +1,14 @@ #include "Determinize.h" -#include <automaton/FSM/DFA.h> -#include <automaton/FSM/MultiInitialStateNFA.h> -#include <automaton/PDA/DPDA.h> -#include <automaton/PDA/NPDA.h> -#include <automaton/PDA/InputDrivenDPDA.h> -#include <automaton/PDA/InputDrivenNPDA.h> -#include <automaton/PDA/SinglePopDPDA.h> -#include <automaton/PDA/VisiblyPushdownDPDA.h> -#include <automaton/TM/OneTapeDTM.h> -#include <automaton/TA/DFTA.h> -#include <automaton/TA/UnorderedDFTA.h> -#include <automaton/PDA/RealTimeHeightDeterministicNPDA.h> #include <registration/AlgoRegistration.hpp> namespace { -auto DeterminizeRealTimeHeightDeterministicDPDA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::RealTimeHeightDeterministicDPDA < >, const automaton::RealTimeHeightDeterministicDPDA < > & > ( automaton::determinize::Determinize::determinize, "dpda" ).setDocumentation ( -"Determinization of deterministic real-time height-deterministic pushdown automata.\n\ -Implemented as a no-op.\n\ -\n\ -@param dpda deterministic real-time height-deterministic pushdown automaton\n\ -@return deterministic pushdown automaton equivalent to @p dpda" ); - auto DeterminizeRealTimeHeightDeterministicNPDA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::RealTimeHeightDeterministicDPDA < DefaultSymbolType, ext::pair < ext::set < ext::pair < DefaultStateType, DefaultStateType > >, common::symbol_or_epsilon < DefaultSymbolType > >, ext::set < ext::pair < DefaultStateType, DefaultStateType > > >, const automaton::RealTimeHeightDeterministicNPDA < > & > ( automaton::determinize::Determinize::determinize, "npda" ).setDocumentation ( "Determinization of nondeterministic real-time height-deterministic pushdown automata.\n\ \n\ @param npda nondeterministic real-time height-deterministic pushdown automaton\n\ @return deterministic pushdown automaton equivalent to @p npda" ); -auto DeterminizeSinglePopDPDA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::SinglePopDPDA < >, const automaton::SinglePopDPDA < > & > ( automaton::determinize::Determinize::determinize, "dpda" ).setDocumentation ( -"Determinization of deterministic single pop pushdown automata.\n\ -Implemented as a no-op.\n\ -\n\ -@param dpda nondeterministic finite automaton with multiple initial states\n\ -@return deterministic single pop deterministic pushdown automaton equivalent do @p dpda" ); - -auto DeterminizeDPDA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::DPDA < >, const automaton::DPDA < > & > ( automaton::determinize::Determinize::determinize, "dpda" ).setDocumentation ( -"Determinization of deterministic pushdown automata.\n\ -Implemented as a no-op.\n\ -\n\ -@param dpda deterministic pushdown automaton\n\ -@return deterministic pushdown automaton equivalent to @p dpda" ); - auto DeterminizeNPDA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::RealTimeHeightDeterministicDPDA < DefaultSymbolType, ext::pair < ext::set < ext::pair < ext::variant < DefaultStateType, std::string >, ext::variant < DefaultStateType, std::string > > >, common::symbol_or_epsilon < DefaultSymbolType > >, ext::set < ext::pair < ext::variant < DefaultStateType, std::string >, ext::variant < DefaultStateType, std::string > > > >, const automaton::NPDA < > & > ( automaton::determinize::Determinize::determinize, "npda" ).setDocumentation ( "Determinization of nondeterministic pushdown automata is implemented as a cast of such automaton to RhPDA.\n\ \n\ diff --git a/alib2algo/src/automaton/determinize/DeterminizeTM.cpp b/alib2algo/src/automaton/determinize/DeterminizeTM.cpp deleted file mode 100644 index 61fd20f61c3d6ae4be911710d1a7c778f1355588..0000000000000000000000000000000000000000 --- a/alib2algo/src/automaton/determinize/DeterminizeTM.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "Determinize.h" -#include <automaton/FSM/DFA.h> -#include <automaton/FSM/MultiInitialStateNFA.h> -#include <automaton/PDA/DPDA.h> -#include <automaton/PDA/NPDA.h> -#include <automaton/PDA/InputDrivenDPDA.h> -#include <automaton/PDA/InputDrivenNPDA.h> -#include <automaton/PDA/SinglePopDPDA.h> -#include <automaton/PDA/VisiblyPushdownDPDA.h> -#include <automaton/TM/OneTapeDTM.h> -#include <automaton/TA/DFTA.h> -#include <automaton/TA/UnorderedDFTA.h> -#include <automaton/PDA/RealTimeHeightDeterministicNPDA.h> -#include <registration/AlgoRegistration.hpp> - -namespace { - -auto DeterminizeOneTapeDTM = registration::AbstractRegister < automaton::determinize::Determinize, automaton::OneTapeDTM < >, const automaton::OneTapeDTM < > & > ( automaton::determinize::Determinize::determinize, "dtm" ).setDocumentation ( -"Determinization of deterministic pushdown automata.\n\ -Implemented as a no-op.\n\ -\n\ -@param dtm deterministic one-tape turing machine\n\ -@return deterministic one-tape turing machine equivalent to @p dtm" ); - -} /* namespace */ diff --git a/alib2algo/src/automaton/determinize/DeterminizeVPAPart.cpp b/alib2algo/src/automaton/determinize/DeterminizeVPAPart.cpp index 7281736234de30e7f5a2e2de6498b4ae17202b1d..f766e0297767558c7fef497b33ed5451e4086fa1 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeVPAPart.cpp +++ b/alib2algo/src/automaton/determinize/DeterminizeVPAPart.cpp @@ -1,27 +1,8 @@ #include "Determinize.h" -#include <automaton/FSM/DFA.h> -#include <automaton/FSM/MultiInitialStateNFA.h> -#include <automaton/PDA/DPDA.h> -#include <automaton/PDA/NPDA.h> -#include <automaton/PDA/InputDrivenDPDA.h> -#include <automaton/PDA/InputDrivenNPDA.h> -#include <automaton/PDA/SinglePopDPDA.h> -#include <automaton/PDA/VisiblyPushdownDPDA.h> -#include <automaton/TM/OneTapeDTM.h> -#include <automaton/TA/DFTA.h> -#include <automaton/TA/UnorderedDFTA.h> -#include <automaton/PDA/RealTimeHeightDeterministicNPDA.h> #include <registration/AlgoRegistration.hpp> namespace { -auto DeterminizeVisiblyPushdownDPDA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::VisiblyPushdownDPDA < >, const automaton::VisiblyPushdownDPDA < > & > ( automaton::determinize::Determinize::determinize, "dpda" ).setDocumentation ( -"Determinization of deterministic visibly pushdown automata.\n\ -Implemented as a no-op.\n\ -\n\ -@param dpda deterministic visibly pushdown automaton\n\ -@return deterministic pushdown automaton equivalent to @p dpda" ); - auto DeterminizeVisiblyPushdownNPDA = registration::AbstractRegister < automaton::determinize::Determinize, automaton::VisiblyPushdownDPDA < DefaultSymbolType, ext::pair < ext::set < ext::pair < DefaultStateType, DefaultStateType > >, DefaultSymbolType >, ext::set < ext::pair < DefaultStateType, DefaultStateType > > >, const automaton::VisiblyPushdownNPDA < > & > ( automaton::determinize::Determinize::determinize, "npda" ).setDocumentation ( "Determinization of nondeterministic visibly pushdown automata.\n\ \n\ diff --git a/alib2algo/src/automaton/determinize/DeterminizeZAutomataPart.cpp b/alib2algo/src/automaton/determinize/DeterminizeZAutomataPart.cpp index 262164e05b640f28408f1e0f86760874e1ccb203..33c7d7a58d5cb9bb93bb404bb139364ab4c52fe3 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeZAutomataPart.cpp +++ b/alib2algo/src/automaton/determinize/DeterminizeZAutomataPart.cpp @@ -1,16 +1,4 @@ #include "Determinize.h" -#include <automaton/FSM/DFA.h> -#include <automaton/FSM/MultiInitialStateNFA.h> -#include <automaton/PDA/DPDA.h> -#include <automaton/PDA/NPDA.h> -#include <automaton/PDA/InputDrivenDPDA.h> -#include <automaton/PDA/InputDrivenNPDA.h> -#include <automaton/PDA/SinglePopDPDA.h> -#include <automaton/PDA/VisiblyPushdownDPDA.h> -#include <automaton/TM/OneTapeDTM.h> -#include <automaton/TA/DFTA.h> -#include <automaton/TA/UnorderedDFTA.h> -#include <automaton/PDA/RealTimeHeightDeterministicNPDA.h> #include <registration/AlgoRegistration.hpp> namespace {