Storm
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
11
12#include "storm/logic/Formula.h"
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>
31class PartitionRefiner;
32
33template<storm::dd::DdType DdType, typename ValueType, typename ExportValueType>
34class PartialQuotientExtractor;
35} // namespace bisimulation
36
37template<storm::dd::DdType DdType, typename ValueType, typename ExportValueType = ValueType>
39 public:
44 std::vector<std::shared_ptr<storm::logic::Formula const>> const& formulas,
45 storm::storage::BisimulationType const& bisimulationType);
47 bisimulation::Partition<DdType, ValueType> const& initialPartition,
49
51
56
63
68 bool getReachedFixedPoint() const;
69
73 std::shared_ptr<storm::models::Model<ExportValueType>> getQuotient(storm::dd::bisimulation::QuotientFormat const& quotientFormat) const;
74
75 private:
76 void initialize();
77 void refineWrtRewardModels();
78
79 // The model for which to compute the bisimulation decomposition.
81
82 // The object capturing what is preserved.
84
85 // The refiner to use.
86 std::unique_ptr<bisimulation::PartitionRefiner<DdType, ValueType>> refiner;
87
88 // A quotient extractor that is used when the fixpoint has not been reached yet.
89 mutable std::unique_ptr<bisimulation::PartialQuotientExtractor<DdType, ValueType, ExportValueType>> partialQuotientExtractor;
90
91 // A flag indicating whether progress is reported.
92 bool verboseProgress;
93
94 // The delay between progress reports.
95 uint64_t showProgressDelay;
96};
97
98} // namespace dd
99} // 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:46
LabParser.cpp.
Definition cli.cpp:18