Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ConditionalStateEliminator.cpp
Go to the documentation of this file.
5
6namespace storm {
7namespace solver {
8namespace stateelimination {
9
10template<typename ValueType>
13 std::vector<ValueType>& oneStepProbabilities, storm::storage::BitVector& phiStates,
15 : StateEliminator<ValueType>(transitionMatrix, backwardTransitions),
16 oneStepProbabilities(oneStepProbabilities),
17 phiStates(phiStates),
18 psiStates(psiStates),
19 filterLabel(StateLabel::NONE) {}
20
21template<typename ValueType>
23 oneStepProbabilities[state] = storm::utility::simplify((ValueType)(loopProbability * oneStepProbabilities[state]));
24}
25
26template<typename ValueType>
29 oneStepProbabilities[predecessor] = storm::utility::simplify(
30 (ValueType)(oneStepProbabilities[predecessor] * storm::utility::simplify((ValueType)(probability * oneStepProbabilities[state]))));
31}
32
33template<typename ValueType>
35 // TODO find better solution than flag
36 switch (filterLabel) {
37 case StateLabel::PHI:
38 return phiStates.get(state);
39 case StateLabel::PSI:
40 return psiStates.get(state);
41 default:
42 STORM_LOG_ASSERT(false, "Specific state not set.");
43 return false;
44 }
45}
46
47template<typename ValueType>
51
52template<typename ValueType>
54 filterLabel = StateLabel::PHI;
55}
56
57template<typename ValueType>
59 filterLabel = StateLabel::PSI;
60}
61
62template<typename ValueType>
64 filterLabel = stateLabel;
65}
66
67template<typename ValueType>
69 filterLabel = StateLabel::NONE;
70}
71
73
74#ifdef STORM_HAVE_CARL
77#endif
78} // namespace stateelimination
79} // namespace solver
80} // namespace storm
bool filterPredecessor(storm::storage::sparse::state_type const &state) override
void updateValue(storm::storage::sparse::state_type const &state, ValueType const &loopProbability) override
ConditionalStateEliminator(storm::storage::FlexibleSparseMatrix< ValueType > &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > &backwardTransitions, std::vector< ValueType > &oneStepProbabilities, storm::storage::BitVector &phiStates, storm::storage::BitVector &psiStates)
void updatePredecessor(storm::storage::sparse::state_type const &predecessor, ValueType const &probability, storm::storage::sparse::state_type const &state) override
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:18
The flexible sparse matrix is used during state elimination.
#define STORM_LOG_ASSERT(cond, message)
Definition macros.h:11
ValueType simplify(ValueType value)
LabParser.cpp.
Definition cli.cpp:18