|
|
@ -441,17 +441,22 @@ namespace storm { |
|
|
|
if (stateStorage.stateToId.contains(state->status())) { |
|
|
|
// State already exists
|
|
|
|
stateId = stateStorage.stateToId.getValue(state->status()); |
|
|
|
STORM_LOG_TRACE("State " << dft.getStateString(state) << " already exists"); |
|
|
|
|
|
|
|
if (!changed && statesNotExplored.at(stateId)->isPseudoState()) { |
|
|
|
// Create pseudo state now
|
|
|
|
STORM_LOG_ASSERT(statesNotExplored.at(stateId)->getId() == stateId, "Ids do not match."); |
|
|
|
STORM_LOG_ASSERT(statesNotExplored.at(stateId)->status() == state->status(), "Pseudo states do not coincide."); |
|
|
|
state->setId(stateId); |
|
|
|
// Update mapping to map to concrete state now
|
|
|
|
statesNotExplored[stateId] = state; |
|
|
|
// We do not push the new state on the exploration queue as the pseudo state was already pushed
|
|
|
|
STORM_LOG_TRACE("Created pseudo state " << dft.getStateString(state)); |
|
|
|
STORM_LOG_TRACE("State " << dft.getStateString(state) << " with id " << stateId << " already exists"); |
|
|
|
if (!changed) { |
|
|
|
// Check if state is pseudo state
|
|
|
|
// If state is explored already the possible pseudo state was already constructed
|
|
|
|
auto iter = statesNotExplored.find(stateId); |
|
|
|
if (iter != statesNotExplored.end() && iter->second->isPseudoState()) { |
|
|
|
// Create pseudo state now
|
|
|
|
STORM_LOG_ASSERT(iter->second->getId() == stateId, "Ids do not match."); |
|
|
|
STORM_LOG_ASSERT(iter->second->status() == state->status(), "Pseudo states do not coincide."); |
|
|
|
state->setId(stateId); |
|
|
|
// Update mapping to map to concrete state now
|
|
|
|
statesNotExplored[stateId] = state; |
|
|
|
// TODO Matthias: copy explorationHeuristic
|
|
|
|
// We do not push the new state on the exploration queue as the pseudo state was already pushed
|
|
|
|
STORM_LOG_TRACE("Created pseudo state " << dft.getStateString(state)); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
// State does not exist yet
|
|
|
|