diff --git a/alib2algo/src/automaton/properties/ReachableStates.h b/alib2algo/src/automaton/properties/ReachableStates.h
index 452a2f094263738e9b48344667f39efd0b07c44a..b3591c905f25fbf1ec261441027baa52fc14b03b 100644
--- a/alib2algo/src/automaton/properties/ReachableStates.h
+++ b/alib2algo/src/automaton/properties/ReachableStates.h
@@ -161,21 +161,19 @@ ext::set<StateType> ReachableStates::reachableStates( const automaton::DFTA < Sy
 	ext::deque<ext::set<StateType>> Qi;
 	Qi.push_back( ext::set<StateType>( ) );
 
-	int i = 1;
+	int i = 0;
 
 	// 1bc
-	while( true ) {
-		Qi.push_back( Qi.at( i - 1 ) );
+	do {
+		i = i + 1;
+
+		Qi.push_back( Qi.at( i - 1) );
 
 		for( const auto & transition : fta.getTransitions ( ) )
 			if ( std::all_of ( transition.first.second.begin ( ), transition.first.second.end ( ), [ & ] ( const StateType & state ) { return Qi.at ( i - 1 ).count ( state ); } ) )
 				Qi.at( i ).insert ( transition.second );
 
-		if( Qi.at( i ) == Qi.at( i - 1 ) )
-			break;
-
-		i = i + 1;
-	}
+	} while ( Qi.at( i ) != Qi.at( i - 1 ) );
 
 	return Qi.at( i );
 }
@@ -186,21 +184,19 @@ ext::set<StateType> ReachableStates::reachableStates( const automaton::NFTA < Sy
 	ext::deque<ext::set<StateType>> Qi;
 	Qi.push_back( ext::set<StateType>( ) );
 
-	int i = 1;
+	int i = 0;
 
 	// 1bc
-	while( true ) {
-		Qi.push_back( Qi.at( i - 1 ) );
+	do {
+		i = i + 1;
+
+		Qi.push_back( Qi.at( i - 1) );
 
 		for( const auto & transition : fta.getTransitions ( ) )
 			if ( std::all_of ( transition.first.second.begin ( ), transition.first.second.end ( ), [ & ] ( const StateType & state ) { return Qi.at ( i - 1 ).count ( state ); } ) )
 				Qi.at( i ).insert ( transition.second );
 
-		if( Qi.at( i ) == Qi.at( i - 1 ) )
-			break;
-
-		i = i + 1;
-	}
+	} while ( Qi.at( i ) != Qi.at( i - 1 ) );
 
 	return Qi.at( i );
 }
diff --git a/alib2algo/src/automaton/properties/UsefulStates.h b/alib2algo/src/automaton/properties/UsefulStates.h
index da3610dac3203a005aa980647de15d1f89fcbe6f..6d40b0a874a8e9e2aacbf172bcd49e382ee4a176 100644
--- a/alib2algo/src/automaton/properties/UsefulStates.h
+++ b/alib2algo/src/automaton/properties/UsefulStates.h
@@ -122,20 +122,19 @@ ext::set<StateType> UsefulStates::usefulStates( const automaton::DFTA < SymbolTy
 	Qi.push_back( ext::set<StateType>( ) );
 	Qi.at( 0 ) = fta.getFinalStates( );
 
-	int i = 1;
+	int i = 0;
 
 	// 1bc
-	while( true ) {
+	do {
+		i = i + 1;
+
 		Qi.push_back( Qi.at( i - 1 ) ); // copy Qi-1 into Qi
 		for( const auto & p : Qi.at( i - 1 ) )
 			for( const auto & t : fta.getTransitionsToState ( p ) )
 				Qi.at( i ).insert( t.first.second.begin ( ), t.first.second.end ( ) );
 
-		if( Qi.at( i ) == Qi.at( i - 1 ) )
-			break;
+	} while ( Qi.at( i ) != Qi.at( i - 1 ) );
 
-		i = i + 1;
-	}
 	return Qi.at( i );
 }
 
@@ -146,20 +145,19 @@ ext::set<StateType> UsefulStates::usefulStates( const automaton::NFTA < SymbolTy
 	Qi.push_back( ext::set<StateType>( ) );
 	Qi.at( 0 ) = fta.getFinalStates( );
 
-	int i = 1;
+	int i = 0;
 
 	// 1bc
-	while( true ) {
+	do {
+		i = i + 1;
+
 		Qi.push_back( Qi.at( i - 1 ) ); // copy Qi-1 into Qi
 		for( const auto & p : Qi.at( i - 1 ) )
 			for( const auto & t : fta.getTransitionsToState ( p ) )
 				Qi.at( i ).insert( t.first.second.begin ( ), t.first.second.end ( ) );
 
-		if( Qi.at( i ) == Qi.at( i - 1 ) )
-			break;
+	} while ( Qi.at( i ) != Qi.at( i - 1 ) );
 
-		i = i + 1;
-	}
 	return Qi.at( i );
 }