Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExplicitModelCheckerHint.h
Go to the documentation of this file.
1#pragma once
2
3#include <boost/optional.hpp>
4#include <vector>
5
9
10namespace storm {
11namespace modelchecker {
12
17template<typename ValueType>
19 public:
21
25
26 // Returns true iff this hint does not contain any information
27 virtual bool isEmpty() const override;
28
29 // Returns true iff this is an explicit model checker hint
30 virtual bool isExplicitModelCheckerHint() const override;
31
32 bool hasResultHint() const;
33
34 std::vector<ExtendedValueType> const& getResultHint() const;
35 std::vector<ExtendedValueType>& getResultHint();
36 void setResultHint(boost::optional<std::vector<ExtendedValueType>> const& resultHint);
37 void setResultHint(boost::optional<std::vector<ExtendedValueType>>&& resultHint);
38
39 // Set whether only the maybestates need to be computed, i.e., skips the qualitative check.
40 // The result for non-maybe states is taken from the result hint.
41 // Hence, this option may only be enabled iff a resultHint and a set of maybestates are given.
42 bool getComputeOnlyMaybeStates() const;
43 void setComputeOnlyMaybeStates(bool value);
44 bool hasMaybeStates() const;
47 void setMaybeStates(storm::storage::BitVector const& maybeStates);
48 void setMaybeStates(storm::storage::BitVector&& maybeStates);
49
50 bool hasSchedulerHint() const;
53 void setSchedulerHint(boost::optional<storage::Scheduler<ValueType>> const& schedulerHint);
54 void setSchedulerHint(boost::optional<storage::Scheduler<ValueType>>&& schedulerHint);
55
56 // If set, it is assumed that there are no end components that consist only of maybestates.
57 // May only be enabled iff maybestates are given.
59 void setNoEndComponentsInMaybeStates(bool value);
60
61 private:
62 boost::optional<std::vector<ExtendedValueType>> resultHint;
63 boost::optional<storm::storage::Scheduler<ValueType>> schedulerHint;
64
65 bool computeOnlyMaybeStates;
66 boost::optional<storm::storage::BitVector> maybeStates;
67 bool noEndComponentsInMaybeStates;
68};
69
70} // namespace modelchecker
71} // namespace storm
ExplicitModelCheckerHint(ExplicitModelCheckerHint< ValueType > &&other)=default
void setSchedulerHint(boost::optional< storage::Scheduler< ValueType > > const &schedulerHint)
storm::storage::Scheduler< ValueType > const & getSchedulerHint() const
void setResultHint(boost::optional< std::vector< ExtendedValueType > > const &resultHint)
storm::utility::ExtendedValueType< ValueType > ExtendedValueType
storm::storage::BitVector const & getMaybeStates() const
ExplicitModelCheckerHint(ExplicitModelCheckerHint< ValueType > const &other)=default
void setMaybeStates(storm::storage::BitVector const &maybeStates)
std::vector< ExtendedValueType > const & getResultHint() const
void setSchedulerHint(boost::optional< storage::Scheduler< ValueType > > &&schedulerHint)
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
std::conditional_t< storm::NumberTraits< ValueType >::HasInfinity, ValueType, ExtendedNumber< ValueType > > ExtendedValueType
The type to use for values that may be infinite.