Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ToExpressionVisitor.cpp
Go to the documentation of this file.
2#include <boost/any.hpp>
3
5
7
10
11namespace storm {
12namespace logic {
13
15 boost::any result = f.accept(*this, std::ref(manager));
16 return boost::any_cast<storm::expressions::Expression>(result);
17}
18
19boost::any ToExpressionVisitor::visit(AtomicExpressionFormula const& f, boost::any const&) const {
20 return f.getExpression();
21}
22
23boost::any ToExpressionVisitor::visit(AtomicLabelFormula const& f, boost::any const&) const {
24 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException,
25 "Cannot assemble expression, because the undefined atomic label '" << f.getLabel() << "' appears in the formula.");
26}
27
28boost::any ToExpressionVisitor::visit(BinaryBooleanStateFormula const& f, boost::any const& data) const {
29 storm::expressions::Expression left = boost::any_cast<storm::expressions::Expression>(f.getLeftSubformula().accept(*this, data));
30 storm::expressions::Expression right = boost::any_cast<storm::expressions::Expression>(f.getRightSubformula().accept(*this, data));
31 switch (f.getOperator()) {
32 case BinaryBooleanStateFormula::OperatorType::And:
33 return left && right;
34 break;
35 case BinaryBooleanStateFormula::OperatorType::Or:
36 return left || right;
37 break;
38 }
39 return boost::any();
40}
41
42boost::any ToExpressionVisitor::visit(BinaryBooleanPathFormula const&, boost::any const&) const {
43 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
44}
45
46boost::any ToExpressionVisitor::visit(BooleanLiteralFormula const& f, boost::any const& data) const {
48 if (f.isTrueFormula()) {
49 result = boost::any_cast<std::reference_wrapper<storm::expressions::ExpressionManager const>>(data).get().boolean(true);
50 } else {
51 result = boost::any_cast<std::reference_wrapper<storm::expressions::ExpressionManager const>>(data).get().boolean(false);
52 }
53 return result;
54}
55
56boost::any ToExpressionVisitor::visit(BoundedUntilFormula const&, boost::any const&) const {
57 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
58}
59
60boost::any ToExpressionVisitor::visit(ConditionalFormula const&, boost::any const&) const {
61 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
62}
63
64boost::any ToExpressionVisitor::visit(CumulativeRewardFormula const&, boost::any const&) const {
65 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
66}
67
68boost::any ToExpressionVisitor::visit(EventuallyFormula const&, boost::any const&) const {
69 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
70}
71
72boost::any ToExpressionVisitor::visit(TimeOperatorFormula const&, boost::any const&) const {
73 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
74}
75
76boost::any ToExpressionVisitor::visit(GloballyFormula const&, boost::any const&) const {
77 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
78}
79
80boost::any ToExpressionVisitor::visit(GameFormula const&, boost::any const&) const {
81 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
82}
83
84boost::any ToExpressionVisitor::visit(InstantaneousRewardFormula const&, boost::any const&) const {
85 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
86}
87
88boost::any ToExpressionVisitor::visit(LongRunAverageOperatorFormula const&, boost::any const&) const {
89 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
90}
91
92boost::any ToExpressionVisitor::visit(LongRunAverageRewardFormula const&, boost::any const&) const {
93 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
94}
95
96boost::any ToExpressionVisitor::visit(MultiObjectiveFormula const&, boost::any const&) const {
97 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
98}
99
100boost::any ToExpressionVisitor::visit(QuantileFormula const&, boost::any const&) const {
101 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
102}
103
104boost::any ToExpressionVisitor::visit(NextFormula const&, boost::any const&) const {
105 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
106}
107
108boost::any ToExpressionVisitor::visit(ProbabilityOperatorFormula const&, boost::any const&) const {
109 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
110}
111
112boost::any ToExpressionVisitor::visit(RewardOperatorFormula const&, boost::any const&) const {
113 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
114}
115
116boost::any ToExpressionVisitor::visit(TotalRewardFormula const&, boost::any const&) const {
117 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
118}
119
120boost::any ToExpressionVisitor::visit(UnaryBooleanStateFormula const& f, boost::any const& data) const {
121 storm::expressions::Expression subexpression = boost::any_cast<storm::expressions::Expression>(f.getSubformula().accept(*this, data));
122 switch (f.getOperator()) {
123 case UnaryBooleanStateFormula::OperatorType::Not:
124 return !subexpression;
125 break;
126 }
127 return boost::any();
128}
129
130boost::any ToExpressionVisitor::visit(UnaryBooleanPathFormula const&, boost::any const&) const {
131 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
132}
133
134boost::any ToExpressionVisitor::visit(UntilFormula const&, boost::any const&) const {
135 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
136}
137
138boost::any ToExpressionVisitor::visit(HOAPathFormula const&, boost::any const&) const {
139 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
140}
141} // namespace logic
142} // namespace storm
This class is responsible for managing a set of typed variables and all expressions using these varia...
storm::expressions::Expression const & getExpression() const
std::string const & getLabel() const
Formula const & getRightSubformula() const
Formula const & getLeftSubformula() const
virtual bool isTrueFormula() const override
boost::any accept(FormulaVisitor const &visitor) const
Definition Formula.cpp:16
virtual boost::any visit(AtomicExpressionFormula const &f, boost::any const &data) const override
storm::expressions::Expression toExpression(Formula const &f, storm::expressions::ExpressionManager const &manager) const
Formula const & getSubformula() const
#define STORM_LOG_THROW(cond, exception, message)
Definition macros.h:30
LabParser.cpp.
Definition cli.cpp:18