Storm 1.14.0.1
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 case BinaryBooleanStateFormula::OperatorType::Or:
35 return left || right;
36 }
37 return boost::any();
38}
39
40boost::any ToExpressionVisitor::visit(BinaryBooleanPathFormula const&, boost::any const&) const {
41 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
42}
43
44boost::any ToExpressionVisitor::visit(BooleanLiteralFormula const& f, boost::any const& data) const {
46 if (f.isTrueFormula()) {
47 result = boost::any_cast<std::reference_wrapper<storm::expressions::ExpressionManager const>>(data).get().boolean(true);
48 } else {
49 result = boost::any_cast<std::reference_wrapper<storm::expressions::ExpressionManager const>>(data).get().boolean(false);
50 }
51 return result;
52}
53
54boost::any ToExpressionVisitor::visit(BoundedUntilFormula const&, boost::any const&) const {
55 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
56}
57
58boost::any ToExpressionVisitor::visit(ConditionalFormula const&, boost::any const&) const {
59 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
60}
61
62boost::any ToExpressionVisitor::visit(CumulativeRewardFormula const&, boost::any const&) const {
63 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
64}
65
66boost::any ToExpressionVisitor::visit(EventuallyFormula const&, boost::any const&) const {
67 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
68}
69
70boost::any ToExpressionVisitor::visit(TimeOperatorFormula const&, boost::any const&) const {
71 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
72}
73
74boost::any ToExpressionVisitor::visit(GloballyFormula const&, boost::any const&) const {
75 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
76}
77
78boost::any ToExpressionVisitor::visit(GameFormula const&, boost::any const&) const {
79 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
80}
81
82boost::any ToExpressionVisitor::visit(InstantaneousRewardFormula const&, boost::any const&) const {
83 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
84}
85
86boost::any ToExpressionVisitor::visit(LongRunAverageOperatorFormula const&, boost::any const&) const {
87 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
88}
89
90boost::any ToExpressionVisitor::visit(LongRunAverageRewardFormula const&, boost::any const&) const {
91 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
92}
93
94boost::any ToExpressionVisitor::visit(MultiObjectiveFormula const&, boost::any const&) const {
95 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
96}
97
98boost::any ToExpressionVisitor::visit(QuantileFormula const&, boost::any const&) const {
99 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
100}
101
102boost::any ToExpressionVisitor::visit(NextFormula const&, boost::any const&) const {
103 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
104}
105
106boost::any ToExpressionVisitor::visit(ProbabilityOperatorFormula const&, boost::any const&) const {
107 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
108}
109
110boost::any ToExpressionVisitor::visit(RewardOperatorFormula const&, boost::any const&) const {
111 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
112}
113
114boost::any ToExpressionVisitor::visit(TotalRewardFormula const&, boost::any const&) const {
115 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
116}
117
118boost::any ToExpressionVisitor::visit(UnaryBooleanStateFormula const& f, boost::any const& data) const {
119 storm::expressions::Expression subexpression = boost::any_cast<storm::expressions::Expression>(f.getSubformula().accept(*this, data));
120 switch (f.getOperator()) {
121 case UnaryBooleanStateFormula::OperatorType::Not:
122 return !subexpression;
123 }
124 return boost::any();
125}
126
127boost::any ToExpressionVisitor::visit(UnaryBooleanPathFormula const&, boost::any const&) const {
128 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
129}
130
131boost::any ToExpressionVisitor::visit(UntilFormula const&, boost::any const&) const {
132 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
133}
134
135boost::any ToExpressionVisitor::visit(HOAPathFormula const&, boost::any const&) const {
136 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
137}
138
139boost::any ToExpressionVisitor::visit(DiscountedCumulativeRewardFormula const&, boost::any const&) const {
140 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
141}
142
143boost::any ToExpressionVisitor::visit(DiscountedTotalRewardFormula const&, boost::any const&) const {
144 STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot assemble expression from formula that contains illegal elements.");
145}
146} // namespace logic
147} // 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:28