Storm 1.11.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SparseDtmcPrctlHelper.h
Go to the documentation of this file.
1#ifndef STORM_MODELCHECKER_SPARSE_DTMC_PRCTL_MODELCHECKER_HELPER_H_
2#define STORM_MODELCHECKER_SPARSE_DTMC_PRCTL_MODELCHECKER_HELPER_H_
3
4#include <vector>
5
6#include <boost/optional.hpp>
7
11
15
18
19namespace storm {
20class Environment;
21
22namespace modelchecker {
23class CheckResult;
24
25namespace helper {
26
27template<typename ValueType, typename RewardModelType = storm::models::sparse::StandardRewardModel<ValueType>>
29 public:
30 static std::map<storm::storage::sparse::state_type, ValueType> computeRewardBoundedValues(
31 Environment const& env, storm::models::sparse::Dtmc<ValueType> const& model, std::shared_ptr<storm::logic::OperatorFormula const> rewardBoundedFormula);
32
33 static std::vector<ValueType> computeNextProbabilities(Environment const& env, storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
34 storm::storage::BitVector const& nextStates);
35
36 static std::vector<ValueType> computeUntilProbabilities(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
37 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
38 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
39 storm::storage::BitVector const& phiStates, storm::storage::BitVector const& psiStates,
40 bool qualitative, ModelCheckerHint const& hint = ModelCheckerHint());
41
42 static std::vector<ValueType> computeAllUntilProbabilities(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
43 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
44 storm::storage::BitVector const& initialStates, storm::storage::BitVector const& phiStates,
45 storm::storage::BitVector const& psiStates);
46
47 static std::vector<ValueType> computeGloballyProbabilities(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
48 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
49 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
50 storm::storage::BitVector const& psiStates, bool qualitative);
51
52 static std::vector<ValueType> computeCumulativeRewards(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
53 storm::storage::SparseMatrix<ValueType> const& transitionMatrix, RewardModelType const& rewardModel,
54 uint_fast64_t stepBound);
55
56 static std::vector<ValueType> computeInstantaneousRewards(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
57 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
58 RewardModelType const& rewardModel, uint_fast64_t stepCount);
59
60 static std::vector<ValueType> computeTotalRewards(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
61 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
62 storm::storage::SparseMatrix<ValueType> const& backwardTransitions, RewardModelType const& rewardModel,
63 bool qualitative, ModelCheckerHint const& hint = ModelCheckerHint());
64
65 static std::vector<ValueType> computeDiscountedCumulativeRewards(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
66 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
67 RewardModelType const& rewardModel, uint_fast64_t stepBound, ValueType discountFactor);
68
69 static std::vector<ValueType> computeDiscountedTotalRewards(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
70 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
71 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
72 RewardModelType const& rewardModel, bool qualitative, ValueType discountFactor,
73 ModelCheckerHint const& hint = ModelCheckerHint());
74
75 static std::vector<ValueType> computeReachabilityRewards(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
76 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
77 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
78 RewardModelType const& rewardModel, storm::storage::BitVector const& targetStates,
79 bool qualitative, ModelCheckerHint const& hint = ModelCheckerHint());
80
81 static std::vector<ValueType> computeReachabilityRewards(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
82 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
83 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
84 std::vector<ValueType> const& totalStateRewardVector,
85 storm::storage::BitVector const& targetStates, bool qualitative,
86 ModelCheckerHint const& hint = ModelCheckerHint());
87
88 static std::vector<ValueType> computeReachabilityTimes(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
89 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
90 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
91 storm::storage::BitVector const& targetStates, bool qualitative,
92 ModelCheckerHint const& hint = ModelCheckerHint());
93
94 static std::vector<ValueType> computeConditionalProbabilities(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
95 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
96 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
97 storm::storage::BitVector const& targetStates,
98 storm::storage::BitVector const& conditionStates, bool qualitative);
99
100 static std::vector<ValueType> computeConditionalRewards(Environment const& env, storm::solver::SolveGoal<ValueType>&& goal,
101 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
102 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
103 RewardModelType const& rewardModel, storm::storage::BitVector const& targetStates,
104 storm::storage::BitVector const& conditionStates, bool qualitative);
105
106 private:
107 static std::vector<ValueType> computeReachabilityRewards(
109 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
110 std::function<std::vector<ValueType>(uint_fast64_t, storm::storage::SparseMatrix<ValueType> const&, storm::storage::BitVector const&)> const&
111 totalStateRewardVectorGetter,
112 storm::storage::BitVector const& targetStates, bool qualitative, std::function<storm::storage::BitVector()> const& zeroRewardStatesGetter,
113 ModelCheckerHint const& hint = ModelCheckerHint());
114
115 struct BaierTransformedModel {
116 BaierTransformedModel() : noTargetStates(false) {
117 // Intentionally left empty.
118 }
119
120 storm::storage::BitVector getNewRelevantStates(storm::storage::BitVector const& oldRelevantStates) const;
121 storm::storage::BitVector getNewRelevantStates() const;
122
123 storm::storage::BitVector beforeStates;
124 boost::optional<storm::storage::SparseMatrix<ValueType>> transitionMatrix;
125 boost::optional<storm::storage::BitVector> targetStates;
126 boost::optional<std::vector<ValueType>> stateRewards;
127 bool noTargetStates;
128 };
129
130 static BaierTransformedModel computeBaierTransformation(Environment const& env, storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
131 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
132 storm::storage::BitVector const& targetStates, storm::storage::BitVector const& conditionStates,
133 boost::optional<std::vector<ValueType>> const& stateRewards);
134};
135} // namespace helper
136} // namespace modelchecker
137} // namespace storm
138
139#endif /* STORM_MODELCHECKER_SPARSE_DTMC_PRCTL_MODELCHECKER_HELPER_H_ */
This class contains information that might accelerate the model checking process.
static std::vector< ValueType > computeNextProbabilities(Environment const &env, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::BitVector const &nextStates)
static std::vector< ValueType > computeReachabilityTimes(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &backwardTransitions, storm::storage::BitVector const &targetStates, bool qualitative, ModelCheckerHint const &hint=ModelCheckerHint())
static std::vector< ValueType > computeReachabilityRewards(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &backwardTransitions, RewardModelType const &rewardModel, storm::storage::BitVector const &targetStates, bool qualitative, ModelCheckerHint const &hint=ModelCheckerHint())
static std::vector< ValueType > computeUntilProbabilities(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, bool qualitative, ModelCheckerHint const &hint=ModelCheckerHint())
static std::vector< ValueType > computeConditionalProbabilities(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &backwardTransitions, storm::storage::BitVector const &targetStates, storm::storage::BitVector const &conditionStates, bool qualitative)
static std::vector< ValueType > computeAllUntilProbabilities(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::BitVector const &initialStates, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
static std::vector< ValueType > computeTotalRewards(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &backwardTransitions, RewardModelType const &rewardModel, bool qualitative, ModelCheckerHint const &hint=ModelCheckerHint())
static std::map< storm::storage::sparse::state_type, ValueType > computeRewardBoundedValues(Environment const &env, storm::models::sparse::Dtmc< ValueType > const &model, std::shared_ptr< storm::logic::OperatorFormula const > rewardBoundedFormula)
static std::vector< ValueType > computeConditionalRewards(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &backwardTransitions, RewardModelType const &rewardModel, storm::storage::BitVector const &targetStates, storm::storage::BitVector const &conditionStates, bool qualitative)
static std::vector< ValueType > computeInstantaneousRewards(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, RewardModelType const &rewardModel, uint_fast64_t stepCount)
static std::vector< ValueType > computeDiscountedTotalRewards(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &backwardTransitions, RewardModelType const &rewardModel, bool qualitative, ValueType discountFactor, ModelCheckerHint const &hint=ModelCheckerHint())
static std::vector< ValueType > computeGloballyProbabilities(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &backwardTransitions, storm::storage::BitVector const &psiStates, bool qualitative)
static std::vector< ValueType > computeDiscountedCumulativeRewards(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, RewardModelType const &rewardModel, uint_fast64_t stepBound, ValueType discountFactor)
static std::vector< ValueType > computeCumulativeRewards(Environment const &env, storm::solver::SolveGoal< ValueType > &&goal, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, RewardModelType const &rewardModel, uint_fast64_t stepBound)
This class represents a discrete-time Markov chain.
Definition Dtmc.h:14
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16
A class that holds a possibly non-square matrix in the compressed row storage format.
LabParser.cpp.