Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ArrayExpressionFinder.cpp
Go to the documentation of this file.
2
7
8namespace storm {
9namespace jani {
10
11namespace detail {
13 public:
15
16 virtual boost::any visit(storm::expressions::IfThenElseExpression const& expression, boost::any const& data) override {
17 return boost::any_cast<bool>(expression.getCondition()->accept(*this, data)) ||
18 boost::any_cast<bool>(expression.getThenExpression()->accept(*this, data)) ||
19 boost::any_cast<bool>(expression.getElseExpression()->accept(*this, data));
20 }
21
22 virtual boost::any visit(storm::expressions::BinaryBooleanFunctionExpression const& expression, boost::any const& data) override {
23 return boost::any_cast<bool>(expression.getFirstOperand()->accept(*this, data)) ||
24 boost::any_cast<bool>(expression.getSecondOperand()->accept(*this, data));
25 }
26
27 virtual boost::any visit(storm::expressions::BinaryNumericalFunctionExpression const& expression, boost::any const& data) override {
28 return boost::any_cast<bool>(expression.getFirstOperand()->accept(*this, data)) ||
29 boost::any_cast<bool>(expression.getSecondOperand()->accept(*this, data));
30 }
31
32 virtual boost::any visit(storm::expressions::BinaryRelationExpression const& expression, boost::any const& data) override {
33 return boost::any_cast<bool>(expression.getFirstOperand()->accept(*this, data)) ||
34 boost::any_cast<bool>(expression.getSecondOperand()->accept(*this, data));
35 }
36
37 virtual boost::any visit(storm::expressions::VariableExpression const&, boost::any const&) override {
38 return false;
39 }
40
41 virtual boost::any visit(storm::expressions::UnaryBooleanFunctionExpression const& expression, boost::any const& data) override {
42 return expression.getOperand()->accept(*this, data);
43 }
44
45 virtual boost::any visit(storm::expressions::UnaryNumericalFunctionExpression const& expression, boost::any const& data) override {
46 return expression.getOperand()->accept(*this, data);
47 }
48
49 virtual boost::any visit(storm::expressions::BooleanLiteralExpression const&, boost::any const&) override {
50 return false;
51 }
52
53 virtual boost::any visit(storm::expressions::IntegerLiteralExpression const&, boost::any const&) override {
54 return false;
55 }
56
57 virtual boost::any visit(storm::expressions::RationalLiteralExpression const&, boost::any const&) override {
58 return false;
59 }
60
61 virtual boost::any visit(storm::expressions::ValueArrayExpression const&, boost::any const&) override {
62 return true;
63 }
64
65 virtual boost::any visit(storm::expressions::ConstructorArrayExpression const&, boost::any const&) override {
66 return true;
67 }
68
69 virtual boost::any visit(storm::expressions::ArrayAccessExpression const&, boost::any const&) override {
70 return true;
71 }
72
73 virtual boost::any visit(storm::expressions::FunctionCallExpression const& expression, boost::any const& data) override {
74 for (uint64_t i = 0; i < expression.getNumberOfArguments(); ++i) {
75 if (boost::any_cast<bool>(expression.getArgument(i)->accept(*this, data))) {
76 return true;
77 }
78 }
79 return false;
80 }
81
82 virtual boost::any visit(storm::expressions::TranscendentalNumberLiteralExpression const&, boost::any const&) override {
83 return false;
84 }
85};
86
88 public:
89 virtual void traverse(Model const& model, boost::any const& data) override {
91 }
92
93 virtual void traverse(storm::expressions::Expression const& expression, boost::any const& data) override {
94 auto& res = *boost::any_cast<bool*>(data);
95 res = res || containsArrayExpression(expression);
96 }
97};
98} // namespace detail
99
100bool containsArrayExpression(Model const& model) {
101 bool result = false;
103 return result;
104}
105
108 return boost::any_cast<bool>(expression.accept(v, boost::any()));
109}
110} // namespace jani
111} // namespace storm
std::shared_ptr< BaseExpression const > const & getSecondOperand() const
Retrieves the second operand of the expression.
std::shared_ptr< BaseExpression const > const & getFirstOperand() const
Retrieves the first operand of the expression.
Represents an array of the given size, where the i'th entry is determined by the elementExpression,...
boost::any accept(ExpressionVisitor &visitor, boost::any const &data) const
Accepts the given visitor.
virtual boost::any visit(IfThenElseExpression const &expression, boost::any const &data)=0
Represents an array with a given list of elements.
std::shared_ptr< BaseExpression const > getArgument(uint64_t i) const
std::shared_ptr< BaseExpression const > getElseExpression() const
Retrieves the else expression of the if-then-else expression.
std::shared_ptr< BaseExpression const > getCondition() const
Retrieves the condition expression of the if-then-else expression.
std::shared_ptr< BaseExpression const > getThenExpression() const
Retrieves the then expression of the if-then-else expression.
virtual std::shared_ptr< BaseExpression const > getOperand(uint_fast64_t operandIndex) const override
Retrieves the given operand from the expression.
Represents an array with a given list of elements.
virtual void traverse(Model const &model, boost::any const &data)
virtual boost::any visit(storm::expressions::BinaryNumericalFunctionExpression const &expression, boost::any const &data) override
virtual boost::any visit(storm::expressions::BinaryRelationExpression const &expression, boost::any const &data) override
virtual boost::any visit(storm::expressions::ValueArrayExpression const &, boost::any const &) override
virtual boost::any visit(storm::expressions::UnaryNumericalFunctionExpression const &expression, boost::any const &data) override
virtual boost::any visit(storm::expressions::ArrayAccessExpression const &, boost::any const &) override
virtual boost::any visit(storm::expressions::FunctionCallExpression const &expression, boost::any const &data) override
virtual boost::any visit(storm::expressions::IfThenElseExpression const &expression, boost::any const &data) override
virtual boost::any visit(storm::expressions::UnaryBooleanFunctionExpression const &expression, boost::any const &data) override
virtual boost::any visit(storm::expressions::VariableExpression const &, boost::any const &) override
virtual boost::any visit(storm::expressions::ConstructorArrayExpression const &, boost::any const &) override
virtual boost::any visit(storm::expressions::TranscendentalNumberLiteralExpression const &, boost::any const &) override
virtual boost::any visit(storm::expressions::IntegerLiteralExpression const &, boost::any const &) override
virtual boost::any visit(storm::expressions::BooleanLiteralExpression const &, boost::any const &) override
virtual boost::any visit(storm::expressions::BinaryBooleanFunctionExpression const &expression, boost::any const &data) override
virtual boost::any visit(storm::expressions::RationalLiteralExpression const &, boost::any const &) override
virtual void traverse(storm::expressions::Expression const &expression, boost::any const &data) override
virtual void traverse(Model const &model, boost::any const &data) override
bool containsArrayExpression(Model const &model)
LabParser.cpp.
Definition cli.cpp:18