Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
BisimulationDecomposition.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <vector>
5
12
13namespace storm {
14namespace models {
15template<typename ValueType>
16class Model;
17
18namespace symbolic {
19template<storm::dd::DdType DdType, typename ValueType>
20class Model;
21}
22} // namespace models
23
24namespace dd {
25namespace bisimulation {
26template<storm::dd::DdType DdType, typename ValueType>
27class Partition;
28
29template<storm::dd::DdType DdType, typename ValueType>
30class PartitionRefiner;
31
32template<storm::dd::DdType DdType, typename ValueType, typename ExportValueType>
33class PartialQuotientExtractor;
34} // namespace bisimulation
35
36template<storm::dd::DdType DdType, typename ValueType, typename ExportValueType = ValueType>
38 public:
43 std::vector<std::shared_ptr<storm::logic::Formula const>> const& formulas,
44 storm::storage::BisimulationType const& bisimulationType);
46 bisimulation::Partition<DdType, ValueType> const& initialPartition,
48
50
55
62
67 bool getReachedFixedPoint() const;
68
72 std::shared_ptr<storm::models::Model<ExportValueType>> getQuotient(storm::dd::bisimulation::QuotientFormat const& quotientFormat) const;
73
74 private:
75 void initialize();
76 void refineWrtRewardModels();
77
78 // The model for which to compute the bisimulation decomposition.
80
81 // The object capturing what is preserved.
83
84 // The refiner to use.
85 std::unique_ptr<bisimulation::PartitionRefiner<DdType, ValueType>> refiner;
86
87 // A quotient extractor that is used when the fixpoint has not been reached yet.
88 mutable std::unique_ptr<bisimulation::PartialQuotientExtractor<DdType, ValueType, ExportValueType>> partialQuotientExtractor;
89
90 // A flag indicating whether progress is reported.
91 bool verboseProgress;
92
93 // The delay between progress reports.
94 uint64_t showProgressDelay;
95};
96
97} // namespace dd
98} // namespace storm
bool getReachedFixedPoint() const
Retrieves whether a fixed point has been reached.
void compute(bisimulation::SignatureMode const &mode=bisimulation::SignatureMode::Eager)
Performs partition refinement until a fixpoint has been reached.
std::shared_ptr< storm::models::Model< ExportValueType > > getQuotient(storm::dd::bisimulation::QuotientFormat const &quotientFormat) const
Retrieves the quotient model after the bisimulation decomposition was computed.
Base class for all symbolic models.
Definition Model.h:42