Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
CumulativeRewardFormula.h
Go to the documentation of this file.
1#pragma once
2
4
7
8namespace storm {
9namespace logic {
11 public:
13 boost::optional<RewardAccumulation> rewardAccumulation = boost::none);
14 CumulativeRewardFormula(std::vector<TimeBound> const& bounds, std::vector<TimeBoundReference> const& timeBoundReferences,
15 boost::optional<RewardAccumulation> rewardAccumulation = boost::none);
16
17 virtual ~CumulativeRewardFormula() = default;
18
19 virtual bool isCumulativeRewardFormula() const override;
20 virtual bool isRewardPathFormula() const override;
21
22 bool isMultiDimensional() const;
23 unsigned getDimension() const;
24
25 virtual boost::any accept(FormulaVisitor const& visitor, boost::any const& data) const override;
26
27 virtual void gatherReferencedRewardModels(std::set<std::string>& referencedRewardModels) const override;
28 virtual void gatherUsedVariables(std::set<storm::expressions::Variable>& usedVariables) const override;
29
30 virtual std::ostream& writeToStream(std::ostream& out, bool allowParentheses = false) const override;
31
33 TimeBoundReference const& getTimeBoundReference(unsigned i) const;
34
35 bool isBoundStrict() const;
36 bool isBoundStrict(unsigned i) const;
37 bool hasIntegerBound() const;
38 bool hasIntegerBound(unsigned i) const;
39
41 storm::expressions::Expression const& getBound(unsigned i) const;
42
43 template<typename ValueType>
44 ValueType getBound() const;
45
46 template<typename ValueType>
47 ValueType getBound(unsigned i) const;
48
49 template<typename ValueType>
50 ValueType getNonStrictBound() const;
51
52 std::vector<TimeBound> const& getBounds() const;
53
54 bool hasRewardAccumulation() const;
56 std::shared_ptr<CumulativeRewardFormula const> stripRewardAccumulation() const;
57
58 std::shared_ptr<CumulativeRewardFormula const> restrictToDimension(unsigned i) const;
59
60 private:
61 static void checkNoVariablesInBound(storm::expressions::Expression const& bound);
62
63 std::vector<TimeBoundReference> timeBoundReferences;
64 std::vector<TimeBound> bounds;
65 boost::optional<RewardAccumulation> rewardAccumulation;
66};
67} // namespace logic
68} // namespace storm
TimeBoundReference const & getTimeBoundReference() const
std::shared_ptr< CumulativeRewardFormula const > stripRewardAccumulation() const
RewardAccumulation const & getRewardAccumulation() const
std::vector< TimeBound > const & getBounds() const
std::shared_ptr< CumulativeRewardFormula const > restrictToDimension(unsigned i) const
virtual bool isRewardPathFormula() const override
virtual void gatherReferencedRewardModels(std::set< std::string > &referencedRewardModels) const override
virtual void gatherUsedVariables(std::set< storm::expressions::Variable > &usedVariables) const override
storm::expressions::Expression const & getBound() const
virtual ~CumulativeRewardFormula()=default
virtual boost::any accept(FormulaVisitor const &visitor, boost::any const &data) const override
virtual std::ostream & writeToStream(std::ostream &out, bool allowParentheses=false) const override
Writes the forumla to the given output stream.
virtual bool isCumulativeRewardFormula() const override
ValueType getBound(unsigned i) const
CumulativeRewardFormula(TimeBound const &bound, TimeBoundReference const &timeBoundReference=TimeBoundReference(TimeBoundType::Time), boost::optional< RewardAccumulation > rewardAccumulation=boost::none)