diff --git a/alib2algo/src/trim/automaton/TrimFSM.cpp b/alib2algo/src/trim/automaton/TrimFSM.cpp index 9022f7be9097ee5aa35a97820b8fbf7df1a4a202..c1ab2474614386be994cecdf68271784f4f205a4 100644 --- a/alib2algo/src/trim/automaton/TrimFSM.cpp +++ b/alib2algo/src/trim/automaton/TrimFSM.cpp @@ -16,6 +16,10 @@ #include "../../automaton/AutomatonPropertiesFSM.h" +#include "automaton/common/State.h" +#include "label/Label.h" +#include "label/IntegerLabel.h" + namespace trim { template<class T> @@ -26,6 +30,12 @@ T TrimFSM::removeUselessStates( const T & fsm ) { // 2. T M; + if(Qu.size() == 0) { + M.addState(automaton::State(label::Label(label::IntegerLabel(1)))); + M.addInitialState(automaton::State(label::Label(label::IntegerLabel(1)))); + return M; + } + for( const auto & q : Qu ) M.addState( q ); @@ -57,6 +67,11 @@ automaton::DFA TrimFSM::removeUselessStates( const automaton::DFA & fsm ) { std::set<automaton::State> Qu = automaton::AutomatonPropertiesFSM::getUsefullStates( fsm ); // 2. + if(Qu.size() == 0) { + automaton::DFA M (automaton::State(label::Label(label::IntegerLabel(1)))); + return M; + } + automaton::DFA M ( fsm.getInitialState () ); for( const auto & q : Qu )