Storm 1.13.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExplicitQualitativeCheckResult.h
Go to the documentation of this file.
1#pragma once
2
3#include <boost/variant.hpp>
4#include <map>
5#include <optional>
6
14
15namespace storm {
16
17namespace modelchecker {
18
19template<typename ValueType>
21 public:
23 typedef std::map<storm::storage::sparse::state_type, bool> map_type;
24
32 ExplicitQualitativeCheckResult(boost::variant<vector_type, map_type> const& truthValues,
33 std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler = {});
34 ExplicitQualitativeCheckResult(boost::variant<vector_type, map_type>&& truthValues,
35 std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler = {});
36
41
42 virtual std::unique_ptr<CheckResult> clone() const override;
43
45
46 virtual bool isExplicit() const override;
47 virtual bool isResultForAllStates() const override;
48
49 virtual bool isExplicitQualitativeCheckResult() const override;
50
51 virtual QualitativeCheckResult& operator&=(QualitativeCheckResult const& other) override;
52 virtual QualitativeCheckResult& operator|=(QualitativeCheckResult const& other) override;
53 virtual void complement() override;
54
55 vector_type const& getTruthValuesVector() const;
56 map_type const& getTruthValuesMap() const;
57
58 virtual bool existsTrue() const override;
59 virtual bool forallTrue() const override;
60 virtual uint64_t count() const override;
61
62 virtual std::ostream& writeToStream(std::ostream& out) const override;
63
64 virtual void filter(QualitativeCheckResult const& filter) override;
65
66 virtual bool hasScheduler() const override;
67 void setScheduler(std::unique_ptr<storm::storage::Scheduler<ValueType>>&& scheduler);
70
71 template<typename JsonRationalType>
72 storm::json<JsonRationalType> toJson(std::optional<storm::storage::sparse::StateValuations> const& stateValuations = std::nullopt,
73 std::optional<storm::models::sparse::StateLabeling> const& stateLabels = std::nullopt) const;
74
75 private:
76 bool hasValueType(std::type_info const& t) const override {
77 return t == typeid(ValueType);
78 }
79
80 static void performLogicalOperation(ExplicitQualitativeCheckResult& first, QualitativeCheckResult const& second, bool logicalAnd);
81
82 // The values of the quantitative check result.
83 boost::variant<vector_type, map_type> truthValues;
84
85 // An optional scheduler that accompanies the values.
86 std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler;
87};
88} // namespace modelchecker
89} // namespace storm
bool hasValueType() const
Checks whether the ValueType of the result matches the given type.
ExplicitQualitativeCheckResult(ExplicitQualitativeCheckResult const &other)=default
storm::json< JsonRationalType > toJson(std::optional< storm::storage::sparse::StateValuations > const &stateValuations=std::nullopt, std::optional< storm::models::sparse::StateLabeling > const &stateLabels=std::nullopt) const
storm::storage::Scheduler< ValueType > const & getScheduler() const
std::map< storm::storage::sparse::state_type, bool > map_type
virtual void filter(QualitativeCheckResult const &filter) override
Filters the current result wrt.
bool operator[](storm::storage::sparse::state_type index) const
ExplicitQualitativeCheckResult & operator=(ExplicitQualitativeCheckResult &&other)=default
virtual QualitativeCheckResult & operator&=(QualitativeCheckResult const &other) override
virtual std::unique_ptr< CheckResult > clone() const override
virtual QualitativeCheckResult & operator|=(QualitativeCheckResult const &other) override
ExplicitQualitativeCheckResult(ExplicitQualitativeCheckResult &&other)=default
ExplicitQualitativeCheckResult & operator=(ExplicitQualitativeCheckResult const &other)=default
void setScheduler(std::unique_ptr< storm::storage::Scheduler< ValueType > > &&scheduler)
virtual std::ostream & writeToStream(std::ostream &out) const override
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16
This class defines which action is chosen in a particular state of a non-deterministic model.
Definition Scheduler.h:18
nlohmann::basic_json< std::map, std::vector, std::string, bool, int64_t, uint64_t, ValueType > json
Definition JsonForward.h:10