Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
BoundedUntilFormula.h
Go to the documentation of this file.
1#pragma once
2
3#include <optional>
4
6
9
10namespace storm {
11namespace logic {
13 public:
14 BoundedUntilFormula(std::shared_ptr<Formula const> const& leftSubformula, std::shared_ptr<Formula const> const& rightSubformula,
15 std::optional<TimeBound> const& lowerBound, std::optional<TimeBound> const& upperBound, TimeBoundReference const& timeBoundReference);
16 BoundedUntilFormula(std::shared_ptr<Formula const> const& leftSubformula, std::shared_ptr<Formula const> const& rightSubformula,
17 std::vector<std::optional<TimeBound>> const& lowerBounds, std::vector<std::optional<TimeBound>> const& upperBounds,
18 std::vector<TimeBoundReference> const& timeBoundReferences);
19 BoundedUntilFormula(std::vector<std::shared_ptr<Formula const>> const& leftSubformulas, std::vector<std::shared_ptr<Formula const>> const& rightSubformulas,
20 std::vector<std::optional<TimeBound>> const& lowerBounds, std::vector<std::optional<TimeBound>> const& upperBounds,
21 std::vector<TimeBoundReference> const& timeBoundReferences);
22
23 virtual bool isBoundedUntilFormula() const override;
24
25 virtual bool isProbabilityPathFormula() const override;
26
27 virtual boost::any accept(FormulaVisitor const& visitor, boost::any const& data) const override;
28
29 virtual void gatherAtomicExpressionFormulas(std::vector<std::shared_ptr<AtomicExpressionFormula const>>& atomicExpressionFormulas) const override;
30 virtual void gatherAtomicLabelFormulas(std::vector<std::shared_ptr<AtomicLabelFormula const>>& atomicLabelFormulas) const override;
31 virtual void gatherReferencedRewardModels(std::set<std::string>& referencedRewardModels) const override;
32 virtual void gatherUsedVariables(std::set<storm::expressions::Variable>& usedVariables) const override;
33
34 virtual bool hasQualitativeResult() const override;
35 virtual bool hasQuantitativeResult() const override;
36
37 bool isMultiDimensional() const;
39 unsigned getDimension() const;
40
41 Formula const& getLeftSubformula() const;
42 Formula const& getLeftSubformula(unsigned i) const;
43 Formula const& getRightSubformula() const;
44 Formula const& getRightSubformula(unsigned i) const;
45
46 TimeBoundReference const& getTimeBoundReference(unsigned i = 0) const;
47
48 bool isLowerBoundStrict(unsigned i = 0) const;
49 bool hasLowerBound() const;
50 bool hasLowerBound(unsigned i) const;
51 bool hasIntegerLowerBound(unsigned i = 0) const;
52
53 bool isUpperBoundStrict(unsigned i = 0) const;
54 bool hasUpperBound() const;
55 bool hasUpperBound(unsigned i) const;
56 bool hasIntegerUpperBound(unsigned i = 0) const;
57
58 storm::expressions::Expression const& getLowerBound(unsigned i = 0) const;
59 storm::expressions::Expression const& getUpperBound(unsigned i = 0) const;
60
61 template<typename ValueType>
62 ValueType getLowerBound(unsigned i = 0) const;
63
64 template<typename ValueType>
65 ValueType getUpperBound(unsigned i = 0) const;
66
67 template<typename ValueType>
68 ValueType getNonStrictUpperBound(unsigned i = 0) const;
69
70 template<typename ValueType>
71 ValueType getNonStrictLowerBound(unsigned i = 0) const;
72
73 std::shared_ptr<BoundedUntilFormula const> restrictToDimension(unsigned i) const;
74
75 virtual std::ostream& writeToStream(std::ostream& out, bool allowParentheses = false) const override;
76
77 private:
78 static void checkNoVariablesInBound(storm::expressions::Expression const& bound);
79
80 std::vector<std::shared_ptr<Formula const>> leftSubformula;
81 std::vector<std::shared_ptr<Formula const>> rightSubformula;
82 std::vector<TimeBoundReference> timeBoundReference;
83 std::vector<std::optional<TimeBound>> lowerBound;
84 std::vector<std::optional<TimeBound>> upperBound;
85};
86} // namespace logic
87} // namespace storm
ValueType getNonStrictLowerBound(unsigned i=0) const
virtual std::ostream & writeToStream(std::ostream &out, bool allowParentheses=false) const override
Writes the forumla to the given output stream.
ValueType getUpperBound(unsigned i=0) const
ValueType getLowerBound(unsigned i=0) const
std::shared_ptr< BoundedUntilFormula const > restrictToDimension(unsigned i) const
TimeBoundReference const & getTimeBoundReference(unsigned i=0) const
BoundedUntilFormula(std::shared_ptr< Formula const > const &leftSubformula, std::shared_ptr< Formula const > const &rightSubformula, std::optional< TimeBound > const &lowerBound, std::optional< TimeBound > const &upperBound, TimeBoundReference const &timeBoundReference)
virtual void gatherAtomicLabelFormulas(std::vector< std::shared_ptr< AtomicLabelFormula const > > &atomicLabelFormulas) const override
ValueType getNonStrictUpperBound(unsigned i=0) const
bool isLowerBoundStrict(unsigned i=0) const
virtual bool hasQualitativeResult() const override
virtual bool isProbabilityPathFormula() const override
virtual void gatherAtomicExpressionFormulas(std::vector< std::shared_ptr< AtomicExpressionFormula const > > &atomicExpressionFormulas) const override
storm::expressions::Expression const & getUpperBound(unsigned i=0) const
virtual boost::any accept(FormulaVisitor const &visitor, boost::any const &data) const override
storm::expressions::Expression const & getLowerBound(unsigned i=0) const
virtual void gatherReferencedRewardModels(std::set< std::string > &referencedRewardModels) const override
virtual bool isBoundedUntilFormula() const override
bool hasIntegerUpperBound(unsigned i=0) const
virtual bool hasQuantitativeResult() const override
virtual void gatherUsedVariables(std::set< storm::expressions::Variable > &usedVariables) const override
bool hasIntegerLowerBound(unsigned i=0) const
bool isUpperBoundStrict(unsigned i=0) const