Storm 1.13.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExplicitQuantitativeCheckResult.h
Go to the documentation of this file.
1#pragma once
2#include <boost/optional.hpp>
3#include <boost/variant.hpp>
4#include <map>
5#include <optional>
6#include <vector>
7
14
15namespace storm {
16
17namespace modelchecker {
18// Forward declaration
19template<typename ValueType>
21
22template<typename ValueType>
24 public:
25 typedef std::vector<ValueType> vector_type;
26 typedef std::map<storm::storage::sparse::state_type, ValueType> map_type;
27
31 ExplicitQuantitativeCheckResult(storm::storage::sparse::state_type const& state, ValueType const& value);
34 ExplicitQuantitativeCheckResult(boost::variant<vector_type, map_type> const& values,
35 std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler = {});
36 ExplicitQuantitativeCheckResult(boost::variant<vector_type, map_type>&& values,
37 std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler = {});
38
44
46
47 virtual std::unique_ptr<CheckResult> clone() const override;
48
50 ValueType const& operator[](storm::storage::sparse::state_type state) const;
51
52 virtual std::unique_ptr<CheckResult> compareAgainstBound(storm::logic::ComparisonType comparisonType, ValueType const& bound) const override;
53
54 virtual bool isExplicit() const override;
55 virtual bool isResultForAllStates() const override;
56
57 virtual bool isExplicitQuantitativeCheckResult() const override;
58
59 vector_type const& getValueVector() const;
61 map_type const& getValueMap() const;
62
63 virtual std::ostream& writeToStream(std::ostream& out) const override;
64
65 virtual void filter(QualitativeCheckResult const& filter) override;
66
67 virtual void oneMinus() override;
68
69 virtual ValueType getMin() const override;
70 virtual ValueType getMax() const override;
71 virtual std::pair<ValueType, ValueType> getMinMax() const;
72 virtual ValueType average() const override;
73 virtual ValueType sum() const override;
74
75 virtual bool hasScheduler() const override;
76 void setScheduler(std::unique_ptr<storm::storage::Scheduler<ValueType>>&& scheduler);
79
80 storm::json<ValueType> toJson(std::optional<storm::storage::sparse::StateValuations> const& stateValuations = std::nullopt,
81 std::optional<storm::models::sparse::StateLabeling> const& stateLabels = std::nullopt) const;
82
83 private:
84 bool hasValueType(std::type_info const& t) const override {
85 return t == typeid(ValueType);
86 }
87
88 // The values of the quantitative check result.
89 boost::variant<vector_type, map_type> values;
90
91 // An optional scheduler that accompanies the values.
92 std::optional<std::shared_ptr<storm::storage::Scheduler<ValueType>>> scheduler;
93};
94} // namespace modelchecker
95} // namespace storm
bool hasValueType() const
Checks whether the ValueType of the result matches the given type.
virtual std::ostream & writeToStream(std::ostream &out) const override
virtual std::unique_ptr< CheckResult > clone() const override
storm::storage::Scheduler< ValueType > const & getScheduler() const
std::map< storm::storage::sparse::state_type, ValueType > map_type
ValueType & operator[](storm::storage::sparse::state_type state)
ExplicitQuantitativeCheckResult & operator=(ExplicitQuantitativeCheckResult const &other)=default
ExplicitQuantitativeCheckResult(ExplicitQuantitativeCheckResult &&other)=default
storm::json< ValueType > toJson(std::optional< storm::storage::sparse::StateValuations > const &stateValuations=std::nullopt, std::optional< storm::models::sparse::StateLabeling > const &stateLabels=std::nullopt) const
ExplicitQuantitativeCheckResult(ExplicitQuantitativeCheckResult const &other)=default
virtual std::pair< ValueType, ValueType > getMinMax() const
virtual void filter(QualitativeCheckResult const &filter) override
Filters the current result wrt.
void setScheduler(std::unique_ptr< storm::storage::Scheduler< ValueType > > &&scheduler)
ExplicitQuantitativeCheckResult & operator=(ExplicitQuantitativeCheckResult &&other)=default
virtual std::unique_ptr< CheckResult > compareAgainstBound(storm::logic::ComparisonType comparisonType, ValueType const &bound) const override
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