Storm 1.14.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 <optional>
4
12
13namespace storm {
14
15namespace modelchecker {
16
24template<typename ValueType>
26 public:
28
33
37 ExplicitQualitativeCheckResult(vector_type const& truthValues, std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler = {});
38 ExplicitQualitativeCheckResult(vector_type&& truthValues, std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler = {});
39
46 std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler = {});
47
53
54 virtual std::unique_ptr<CheckResult> clone() const override;
55
61
62 virtual bool isExplicit() const override;
63 virtual bool isResultForAllStates() const override;
64
65 virtual bool isExplicitQualitativeCheckResult() const override;
66
67 virtual QualitativeCheckResult& operator&=(QualitativeCheckResult const& other) override;
68 virtual QualitativeCheckResult& operator|=(QualitativeCheckResult const& other) override;
69 virtual void complement() override;
70
75
80
85 vector_type const& getTruthValuesVector() const;
86
87 virtual bool existsTrue() const override;
88 virtual bool forallTrue() const override;
89 virtual uint64_t count() const override;
90
91 virtual std::ostream& writeToStream(std::ostream& out) const override;
92
93 virtual void filter(QualitativeCheckResult const& filter) override;
94
95 virtual bool hasScheduler() const override;
96 void setScheduler(std::unique_ptr<storm::storage::Scheduler<ValueType>>&& scheduler);
99
100 template<typename JsonRationalType>
101 storm::json<JsonRationalType> toJson(std::optional<storm::storage::sparse::Valuations> const& stateValuations = std::nullopt,
102 std::optional<storm::models::sparse::StateLabeling> const& stateLabels = std::nullopt) const;
103
104 private:
105 bool hasValueType(std::type_info const& t) const override {
106 return t == typeid(ValueType);
107 }
108
109 static void performLogicalOperation(ExplicitQualitativeCheckResult& first, QualitativeCheckResult const& second, bool logicalAnd);
110
115 uint64_t getOffset(storm::storage::sparse::state_type state) const;
116
120 template<typename Function>
121 void forEachState(Function const& f) const {
122 uint64_t offset = 0;
123 for (uint64_t state : states) {
124 f(state, truthValues.get(offset));
125 ++offset;
126 }
127 }
128
129 // The states this result holds truth values for, which are all states of the model unless it was narrowed down.
131
132 // The truth values of the qualitative check result, one per state this result is for.
133 vector_type truthValues;
134
135 // An optional scheduler that accompanies the values.
136 std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler;
137};
138} // namespace modelchecker
139} // namespace storm
bool hasValueType() const
Checks whether the ValueType of the result matches the given type.
A qualitative check result over the states of a sparse model.
ExplicitQualitativeCheckResult(ExplicitQualitativeCheckResult const &other)=default
bool hasValueForState(storm::storage::sparse::state_type state) const
Retrieves whether the result holds a truth value for the given state.
storm::storage::Scheduler< ValueType > const & getScheduler() const
virtual void filter(QualitativeCheckResult const &filter) override
Filters the current result wrt.
storm::json< JsonRationalType > toJson(std::optional< storm::storage::sparse::Valuations > const &stateValuations=std::nullopt, std::optional< storm::models::sparse::StateLabeling > const &stateLabels=std::nullopt) const
ExplicitQualitativeCheckResult & operator=(ExplicitQualitativeCheckResult &&other)=default
virtual QualitativeCheckResult & operator&=(QualitativeCheckResult const &other) override
virtual std::unique_ptr< CheckResult > clone() const override
storm::storage::BitVector const & getStates() const
Retrieves the states this result holds truth values for.
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)
ExplicitQualitativeCheckResult(storm::storage::sparse::state_type state, bool value)
Creates a result that holds the given truth value for the given state only.
vector_type const & getTruthValuesVector() const
Retrieves the truth values, one per state this result is for.
virtual std::ostream & writeToStream(std::ostream &out) const override
bool operator[](storm::storage::sparse::state_type state) const
Retrieves the truth value of the given state.
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16
bool get(uint64_t index) const
Retrieves the truth value of the bit at the given index and performs a bound check.
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:11