Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SparseDtmcEliminationModelChecker.h
Go to the documentation of this file.
1#pragma once
2
9
10namespace storm {
11namespace modelchecker {
12
13// forward declaration of friend class
14namespace region {
15template<typename ParametricModelType, typename ConstantType>
17}
18
20
21template<typename SparseDtmcModelType>
23 template<typename ParametricModelType, typename ConstantType>
25
26 public:
27 typedef typename SparseDtmcModelType::ValueType ValueType;
28 typedef typename SparseDtmcModelType::RewardModelType RewardModelType;
30 typedef typename FlexibleRowType::iterator FlexibleRowIterator;
32
39
40 // The implemented methods of the AbstractModelChecker interface.
41 virtual bool canHandle(CheckTask<storm::logic::Formula, SolutionType> const& checkTask) const override;
42 virtual std::unique_ptr<CheckResult> computeBoundedUntilProbabilities(Environment const& env,
44 virtual std::unique_ptr<CheckResult> computeUntilProbabilities(Environment const& env,
46 virtual std::unique_ptr<CheckResult> computeReachabilityRewards(Environment const& env,
48 virtual std::unique_ptr<CheckResult> computeLongRunAverageRewards(
50 virtual std::unique_ptr<CheckResult> computeConditionalProbabilities(Environment const& env,
52 virtual std::unique_ptr<CheckResult> computeLongRunAverageProbabilities(Environment const& env,
54
55 // Static helper methods
56 static std::unique_ptr<CheckResult> computeUntilProbabilities(Environment const& env, storm::storage::SparseMatrix<ValueType> const& probabilityMatrix,
57 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
58 storm::storage::BitVector const& initialStates, storm::storage::BitVector const& phiStates,
59 storm::storage::BitVector const& psiStates, bool computeForInitialStatesOnly);
60
61 static std::unique_ptr<CheckResult> computeReachabilityRewards(Environment const& env, storm::storage::SparseMatrix<ValueType> const& probabilityMatrix,
62 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
63 storm::storage::BitVector const& initialStates,
64 storm::storage::BitVector const& targetStates, std::vector<ValueType>& stateRewardValues,
65 bool computeForInitialStatesOnly);
66
67 private:
68 static std::vector<SolutionType> computeLongRunValues(Environment const& env, storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
69 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
70 storm::storage::BitVector const& initialStates, storm::storage::BitVector const& maybeStates,
71 bool computeResultsForInitialStatesOnly, std::vector<ValueType>& stateValues);
72
73 static std::unique_ptr<CheckResult> computeReachabilityRewards(
74 Environment const& env, storm::storage::SparseMatrix<ValueType> const& probabilityMatrix,
75 storm::storage::SparseMatrix<ValueType> const& backwardTransitions, storm::storage::BitVector const& initialStates,
76 storm::storage::BitVector const& targetStates,
77 std::function<std::vector<ValueType>(uint_fast64_t, storm::storage::SparseMatrix<ValueType> const&, storm::storage::BitVector const&)> const&
78 totalStateRewardVectorGetter,
79 bool computeForInitialStatesOnly);
80
81 static std::vector<ValueType> computeReachabilityValues(Environment const& env, storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
82 std::vector<ValueType>& values, storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
83 storm::storage::BitVector const& initialStates, bool computeResultsForInitialStatesOnly,
84 std::vector<ValueType> const& oneStepProbabilitiesToTarget);
85
86 static void performPrioritizedStateElimination(std::shared_ptr<StatePriorityQueue>& priorityQueue,
88 storm::storage::FlexibleSparseMatrix<ValueType>& backwardTransitions, std::vector<ValueType>& values,
89 storm::storage::BitVector const& initialStates, bool computeResultsForInitialStatesOnly);
90
91 static void performOrdinaryStateElimination(Environment const& env, storm::storage::FlexibleSparseMatrix<ValueType>& transitionMatrix,
93 storm::storage::BitVector const& subsystem, storm::storage::BitVector const& initialStates,
94 bool computeResultsForInitialStatesOnly, std::vector<ValueType>& values,
95 boost::optional<std::vector<uint_fast64_t>> const& distanceBasedPriorities);
96
97 static uint_fast64_t performHybridStateElimination(Environment const& env, storm::storage::SparseMatrix<ValueType> const& forwardTransitions,
100 storm::storage::BitVector const& subsystem, storm::storage::BitVector const& initialStates,
101 bool computeResultsForInitialStatesOnly, std::vector<ValueType>& values,
102 boost::optional<std::vector<uint_fast64_t>> const& distanceBasedPriorities);
103
104 static uint_fast64_t treatScc(Environment const& env, storm::storage::FlexibleSparseMatrix<ValueType>& matrix, std::vector<ValueType>& values,
105 storm::storage::BitVector const& entryStates, storm::storage::BitVector const& scc,
106 storm::storage::BitVector const& initialStates, storm::storage::SparseMatrix<ValueType> const& forwardTransitions,
107 storm::storage::FlexibleSparseMatrix<ValueType>& backwardTransitions, bool eliminateEntryStates, uint_fast64_t level,
108 uint_fast64_t maximalSccSize, std::vector<storm::storage::sparse::state_type>& entryStateQueue,
109 bool computeResultsForInitialStatesOnly,
110 boost::optional<std::vector<uint_fast64_t>> const& distanceBasedPriorities = boost::none);
111};
112
113} // namespace modelchecker
114} // namespace storm
virtual bool canHandle(CheckTask< storm::logic::Formula, SolutionType > const &checkTask) const override
SparseDtmcEliminationModelChecker(storm::models::sparse::Dtmc< ValueType > const &model)
Creates an elimination-based model checker for the given model.
virtual std::unique_ptr< CheckResult > computeReachabilityRewards(Environment const &env, CheckTask< storm::logic::EventuallyFormula, SolutionType > const &checkTask) override
virtual std::unique_ptr< CheckResult > computeUntilProbabilities(Environment const &env, CheckTask< storm::logic::UntilFormula, SolutionType > const &checkTask) override
virtual std::unique_ptr< CheckResult > computeLongRunAverageProbabilities(Environment const &env, CheckTask< storm::logic::StateFormula, SolutionType > const &checkTask) override
storm::storage::FlexibleSparseMatrix< ValueType >::row_type FlexibleRowType
virtual std::unique_ptr< CheckResult > computeBoundedUntilProbabilities(Environment const &env, CheckTask< storm::logic::BoundedUntilFormula, SolutionType > const &checkTask) override
virtual std::unique_ptr< CheckResult > computeLongRunAverageRewards(Environment const &env, CheckTask< storm::logic::LongRunAverageRewardFormula, SolutionType > const &checkTask) override
virtual std::unique_ptr< CheckResult > computeConditionalProbabilities(Environment const &env, CheckTask< storm::logic::ConditionalFormula, SolutionType > const &checkTask) override
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
The flexible sparse matrix is used during state elimination.
std::vector< storm::storage::MatrixEntry< index_type, value_type > > row_type
A class that holds a possibly non-square matrix in the compressed row storage format.
typename detail::IntervalMetaProgrammingHelper< ValueType >::BaseType IntervalBaseType
Helper to access the type in which interval boundaries are stored.