Storm 1.13.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(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(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(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 storm::storage::SparseMatrix<ValueType> const& probabilityMatrix, storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
75 storm::storage::BitVector const& initialStates, storm::storage::BitVector const& targetStates,
76 std::function<std::vector<ValueType>(uint_fast64_t, storm::storage::SparseMatrix<ValueType> const&, storm::storage::BitVector const&)> const&
77 totalStateRewardVectorGetter,
78 bool computeForInitialStatesOnly);
79
80 static std::vector<ValueType> computeReachabilityValues(storm::storage::SparseMatrix<ValueType> const& transitionMatrix, std::vector<ValueType>& values,
81 storm::storage::SparseMatrix<ValueType> const& backwardTransitions,
82 storm::storage::BitVector const& initialStates, bool computeResultsForInitialStatesOnly,
83 std::vector<ValueType> const& oneStepProbabilitiesToTarget);
84
85 static void performPrioritizedStateElimination(std::shared_ptr<StatePriorityQueue>& priorityQueue,
87 storm::storage::FlexibleSparseMatrix<ValueType>& backwardTransitions, std::vector<ValueType>& values,
88 storm::storage::BitVector const& initialStates, bool computeResultsForInitialStatesOnly);
89
90 static void performOrdinaryStateElimination(storm::storage::FlexibleSparseMatrix<ValueType>& transitionMatrix,
92 storm::storage::BitVector const& subsystem, storm::storage::BitVector const& initialStates,
93 bool computeResultsForInitialStatesOnly, std::vector<ValueType>& values,
94 boost::optional<std::vector<uint_fast64_t>> const& distanceBasedPriorities);
95
96 static uint_fast64_t performHybridStateElimination(storm::storage::SparseMatrix<ValueType> const& forwardTransitions,
99 storm::storage::BitVector const& subsystem, storm::storage::BitVector const& initialStates,
100 bool computeResultsForInitialStatesOnly, std::vector<ValueType>& values,
101 boost::optional<std::vector<uint_fast64_t>> const& distanceBasedPriorities);
102
103 static uint_fast64_t treatScc(storm::storage::FlexibleSparseMatrix<ValueType>& matrix, std::vector<ValueType>& values,
104 storm::storage::BitVector const& entryStates, storm::storage::BitVector const& scc,
105 storm::storage::BitVector const& initialStates, storm::storage::SparseMatrix<ValueType> const& forwardTransitions,
106 storm::storage::FlexibleSparseMatrix<ValueType>& backwardTransitions, bool eliminateEntryStates, uint_fast64_t level,
107 uint_fast64_t maximalSccSize, std::vector<storm::storage::sparse::state_type>& entryStateQueue,
108 bool computeResultsForInitialStatesOnly,
109 boost::optional<std::vector<uint_fast64_t>> const& distanceBasedPriorities = boost::none);
110
111 static bool checkConsistent(storm::storage::FlexibleSparseMatrix<ValueType>& transitionMatrix,
113};
114
115} // namespace modelchecker
116} // 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.