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 )