Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
BisimulationAbstractionRefinementModelChecker.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4
6
7namespace storm::models {
8template<typename ValueType>
9class Model;
10}
11
12namespace storm::dd {
13template<storm::dd::DdType DdType, typename ValueType, typename ExportValueType>
14class BisimulationDecomposition;
15}
16
17namespace storm::gbar {
18namespace modelchecker {
19
20template<typename ModelType>
22 public:
23 typedef typename ModelType::ValueType ValueType;
24 static const storm::dd::DdType DdType = ModelType::DdType;
25
29 explicit BisimulationAbstractionRefinementModelChecker(ModelType const& model);
30
32
33 protected:
34 virtual bool supportsReachabilityRewards() const override;
35 virtual std::string const& getName() const override;
36 virtual void initializeAbstractionRefinement() override;
37 virtual std::shared_ptr<storm::models::Model<ValueType>> getAbstractModel() override;
38 virtual std::pair<std::unique_ptr<storm::gbar::abstraction::StateSet>, std::unique_ptr<storm::gbar::abstraction::StateSet>> getConstraintAndTargetStates(
39 storm::models::Model<ValueType> const& abstractModel) override;
40 virtual uint64_t getAbstractionPlayer() const override;
41 virtual bool requiresSchedulerSynthesis() const override;
42 virtual void refineAbstractModel() override;
43
44 private:
45 template<typename QuotientModelType>
46 std::pair<storm::dd::Bdd<DdType>, storm::dd::Bdd<DdType>> getConstraintAndTargetStates(QuotientModelType const& quotient);
47
48 ModelType const& model;
49
51 std::unique_ptr<storm::dd::BisimulationDecomposition<DdType, ValueType, ValueType>> bisimulation;
52
54 std::shared_ptr<storm::models::Model<ValueType>> lastAbstractModel;
55
57 const static std::string name;
58};
59
60} // namespace modelchecker
61} // namespace storm::gbar
virtual bool requiresSchedulerSynthesis() const override
Retrieves whether schedulers need to be computed.
virtual std::pair< std::unique_ptr< storm::gbar::abstraction::StateSet >, std::unique_ptr< storm::gbar::abstraction::StateSet > > getConstraintAndTargetStates(storm::models::Model< ValueType > const &abstractModel) override
Retrieves the state sets corresponding to the constraint and target states.
virtual uint64_t getAbstractionPlayer() const override
Retrieves the index of the abstraction player.
virtual bool supportsReachabilityRewards() const override
-----— Methods that need to be overwritten/defined by implementations in subclasses.
virtual std::shared_ptr< storm::models::Model< ValueType > > getAbstractModel() override
Retrieves the abstract model.
virtual void refineAbstractModel() override
Refines the abstract model so that the next iteration obtains bounds that are at least as precise as ...
virtual void initializeAbstractionRefinement() override
Called before the abstraction refinement loop to give the implementation a time to set up auxiliary d...
virtual std::string const & getName() const override
Retrieves the name of the underlying method.