Storm 1.14.0.1
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>
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,
31
33
34 protected:
35 virtual bool supportsReachabilityRewards() const override;
36 virtual std::string const& getName() const override;
37 virtual void initializeAbstractionRefinement() override;
38 virtual std::shared_ptr<storm::models::Model<ValueType>> getAbstractModel() override;
39 virtual std::pair<std::unique_ptr<storm::gbar::abstraction::StateSet>, std::unique_ptr<storm::gbar::abstraction::StateSet>> getConstraintAndTargetStates(
40 storm::models::Model<ValueType> const& abstractModel) override;
41 virtual uint64_t getAbstractionPlayer() const override;
42 virtual bool requiresSchedulerSynthesis() const override;
43 virtual void refineAbstractModel() override;
44
45 private:
46 template<typename QuotientModelType>
47 std::pair<storm::dd::Bdd<DdType>, storm::dd::Bdd<DdType>> getConstraintAndTargetStates(QuotientModelType const& quotient);
48
49 ModelType const& model;
50
52 std::unique_ptr<storm::dd::BisimulationDecomposition<DdType, ValueType, ValueType>> bisimulation;
53
55 std::shared_ptr<storm::models::Model<ValueType>> lastAbstractModel;
56
58 const static std::string name;
59};
60
61} // namespace modelchecker
62} // namespace storm::gbar
AbstractAbstractionRefinementModelChecker(abstraction::AbstractionOptions const &options=abstraction::AbstractionOptions())
Constructs a model checker for the given model.
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 ...
BisimulationAbstractionRefinementModelChecker(ModelType const &model, abstraction::AbstractionOptions const &options=abstraction::AbstractionOptions())
Constructs a model checker for the given model.
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.
Options that configure the game-based abstraction-refinement procedure.