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