Storm 1.14.0.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
13
14namespace storm {
15namespace models {
16template<typename ValueType>
17class Model;
18
19namespace symbolic {
20template<storm::dd::DdType DdType, typename ValueType>
21class Model;
22}
23} // namespace models
24
25namespace dd {
26namespace bisimulation {
27template<storm::dd::DdType DdType, typename ValueType>
28class Partition;
29
30template<storm::dd::DdType DdType, typename ValueType>
32
33template<storm::dd::DdType DdType, typename ValueType, typename ExportValueType>
35} // namespace bisimulation
36
37template<storm::dd::DdType DdType, typename ValueType, typename ExportValueType = ValueType>
39 public:
46 std::vector<std::shared_ptr<storm::logic::Formula const>> const& formulas,
47 storm::storage::BisimulationType const& bisimulationType,
50 bisimulation::Partition<DdType, ValueType> const& initialPartition,
53
55
60
67
72 bool getReachedFixedPoint() const;
73
77 std::shared_ptr<storm::models::Model<ExportValueType>> getQuotient(storm::dd::bisimulation::QuotientFormat const& quotientFormat) const;
78
79 private:
80 void initialize();
81 void refineWrtRewardModels();
82
83 // The model for which to compute the bisimulation decomposition.
85
86 // The object capturing what is preserved.
88
89 // The configuration used for the bisimulation minimization.
90 bisimulation::BisimulationOptions bisimulationOptions;
91
92 // The refiner to use.
93 std::unique_ptr<bisimulation::PartitionRefiner<DdType, ValueType>> refiner;
94
95 // A quotient extractor that is used when the fixpoint has not been reached yet.
96 mutable std::unique_ptr<bisimulation::PartialQuotientExtractor<DdType, ValueType, ExportValueType>> partialQuotientExtractor;
97
98 // A flag indicating whether progress is reported.
99 bool verboseProgress;
100
101 // The delay between progress reports.
102 uint64_t showProgressDelay;
103};
104
105} // namespace dd
106} // namespace storm
bool getReachedFixedPoint() const
Retrieves whether a fixed point has been reached.
BisimulationDecomposition(storm::models::symbolic::Model< DdType, ValueType > const &model, storm::storage::BisimulationType const &bisimulationType, bisimulation::BisimulationOptions const &bisimulationOptions=bisimulation::BisimulationOptions())
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