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
11
15
19
20namespace storm {
21class Environment;
22
23namespace modelchecker {
24class CheckResult;
25
26namespace helper {
27
28template<typename ValueType, typename RewardModelType = storm::models::sparse::StandardRewardModel<ValueType>, typename SolutionType = ValueType>
30 public:
32
36 static std::vector<SolutionType> computeRewardBoundedValues(Environment const& env, storm::models::sparse::Dtmc<ValueType> const& model,
37 std::shared_ptr<storm::logic::OperatorFormula const> rewardBoundedFormula);
38
39 static std::vector<SolutionType> computeNextProbabilities(Environment const& env, storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
40 storm::storage::BitVector const& nextStates);
41
47 storm::storage::SparseMatrix<ValueType> const& backwardTransitions, storm::storage::BitVector const& phiStates,
48 storm::storage::BitVector const& psiStates, bool qualitative, ModelCheckerHint const& hint = ModelCheckerHint());
49
50 static std::vector<SolutionType> computeAllUntilProbabilities(Environment const& env, storm::solver::SolveGoal<ValueType, SolutionType>&& goal,
51 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
52 storm::storage::BitVector const& initialStates, storm::storage::BitVector const& phiStates,
53 storm::storage::BitVector const& psiStates);
54
60 storm::storage::SparseMatrix<ValueType> const& backwardTransitions, storm::storage::BitVector const& psiStates, bool qualitative);
61
62 static std::vector<SolutionType> computeCumulativeRewards(Environment const& env, storm::solver::SolveGoal<ValueType, SolutionType>&& goal,
63 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
64 RewardModelType const& rewardModel, uint_fast64_t stepBound);
65
66 static std::vector<SolutionType> computeInstantaneousRewards(Environment const& env, storm::solver::SolveGoal<ValueType, SolutionType>&& goal,
67 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
68 RewardModelType const& rewardModel, uint_fast64_t stepCount);
69
72 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
73 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
74 RewardModelType const& rewardModel, bool qualitative,
75 ModelCheckerHint const& hint = ModelCheckerHint());
76
78 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
79 RewardModelType const& rewardModel, uint_fast64_t stepBound, ValueType discountFactor);
80
82 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
83 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
84 RewardModelType const& rewardModel, bool qualitative, ValueType discountFactor,
85 ModelCheckerHint const& hint = ModelCheckerHint());
86
89 storm::storage::SparseMatrix<ValueType> const& backwardTransitions, RewardModelType const& rewardModel, storm::storage::BitVector const& targetStates,
90 bool qualitative, ModelCheckerHint const& hint = ModelCheckerHint());
91
94 storm::storage::SparseMatrix<ValueType> const& backwardTransitions, std::vector<ValueType> const& totalStateRewardVector,
95 storm::storage::BitVector const& targetStates, bool qualitative, ModelCheckerHint const& hint = ModelCheckerHint());
96
99 storm::storage::SparseMatrix<ValueType> const& backwardTransitions, storm::storage::BitVector const& targetStates, bool qualitative,
100 ModelCheckerHint const& hint = ModelCheckerHint());
101
102 static std::vector<ExtendedSolutionType> computeConditionalProbabilities(Environment const& env, storm::solver::SolveGoal<ValueType, SolutionType>&& goal,
103 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
104 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
105 storm::storage::BitVector const& targetStates,
106 storm::storage::BitVector const& conditionStates, bool qualitative);
107
108 static std::vector<ExtendedSolutionType> computeConditionalRewards(Environment const& env, storm::solver::SolveGoal<ValueType, SolutionType>&& goal,
109 storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
110 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
111 RewardModelType const& rewardModel, storm::storage::BitVector const& targetStates,
112 storm::storage::BitVector const& conditionStates, bool qualitative);
113
114 private:
117 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
118 std::function<std::vector<ValueType>(uint_fast64_t, storm::storage::SparseMatrix<ValueType> const&, storm::storage::BitVector const&)> const&
119 totalStateRewardVectorGetter,
120 storm::storage::BitVector const& targetStates, bool qualitative, std::function<storm::storage::BitVector()> const& zeroRewardStatesGetter,
121 ModelCheckerHint const& hint = ModelCheckerHint());
122
123 struct BaierTransformedModel {
124 BaierTransformedModel() : noTargetStates(false) {
125 // Intentionally left empty.
126 }
127
128 storm::storage::BitVector getNewRelevantStates(storm::storage::BitVector const& oldRelevantStates) const;
129 storm::storage::BitVector getNewRelevantStates() const;
130
131 storm::storage::BitVector beforeStates;
132 boost::optional<storm::storage::SparseMatrix<ValueType>> transitionMatrix;
133 boost::optional<storm::storage::BitVector> targetStates;
134 boost::optional<std::vector<ValueType>> stateRewards;
135 bool noTargetStates;
136 };
137
138 static BaierTransformedModel computeBaierTransformation(Environment const& env, storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
139 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
140 storm::storage::BitVector const& targetStates, storm::storage::BitVector const& conditionStates,
141 boost::optional<std::vector<ValueType>> const& stateRewards);
142};
143} // namespace helper
144} // namespace modelchecker
145} // namespace storm
This class contains information that might accelerate the model checking process.
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 DTMCSparseModelCheckingHelperReturnType< ExtendedSolutionType > 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 > 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::vector< 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)
storm::utility::ExtendedValueType< SolutionType > ExtendedSolutionType
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 DTMCSparseModelCheckingHelperReturnType< ExtendedSolutionType > 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< ExtendedSolutionType > 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 > computeNextProbabilities(Environment const &env, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::BitVector const &nextStates)
static DTMCSparseModelCheckingHelperReturnType< ExtendedSolutionType > 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 DTMCSparseModelCheckingHelperReturnType< 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 DTMCSparseModelCheckingHelperReturnType< 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< ExtendedSolutionType > 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)
This class represents a discrete-time Markov chain.
Definition Dtmc.h:16
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.
std::conditional_t< storm::NumberTraits< ValueType >::HasInfinity, ValueType, ExtendedNumber< ValueType > > ExtendedValueType
The type to use for values that may be infinite.
The outcome of a quantitative model checking query on a sparse DTMC.