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