Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
StateEliminator.cpp
Go to the documentation of this file.
2
4
6
12
13namespace storm {
14namespace solver {
15namespace stateelimination {
16
18
19template<typename ValueType>
22 : EliminatorBase<ValueType, ScalingMode::DivideOneMinus>(transitionMatrix, backwardTransitions) {
23 // Intentionally left empty.
24}
25
26template<typename ValueType>
28 STORM_LOG_TRACE("Eliminating state " << state << ".");
29 if (this->matrix.hasTrivialRowGrouping()) {
30 this->eliminate(state, state, removeForwardTransitions);
31 } else {
32 STORM_LOG_THROW(this->matrix.getRowGroupSize(state) == 1, storm::exceptions::IllegalArgumentException,
33 "Invoked state elimination on a state with multiple choices. This is not supported.");
34 this->eliminate(this->matrix.getRowGroupIndices()[state], state, removeForwardTransitions);
35 }
36}
37
38template class StateEliminator<double>;
39
40#ifdef STORM_HAVE_CARL
43#endif
44} // namespace stateelimination
45} // namespace solver
46} // namespace storm
StateEliminator(storm::storage::FlexibleSparseMatrix< ValueType > &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > &backwardTransitions)
void eliminateState(storm::storage::sparse::state_type state, bool removeForwardTransitions)
The flexible sparse matrix is used during state elimination.
#define STORM_LOG_TRACE(message)
Definition logging.h:17
#define STORM_LOG_THROW(cond, exception, message)
Definition macros.h:30
LabParser.cpp.
Definition cli.cpp:18