10namespace expressions {
13 return *boost::any_cast<std::vector<storm::expressions::Expression>*>(data);
20 std::vector<storm::expressions::Expression> atomicExpressions;
21 expression.
accept(*
this, &atomicExpressions);
24 std::vector<storm::expressions::Expression> atomsToKeep;
25 for (
auto const& atom : atomicExpressions) {
26 if (!atom.isTrue() && !atom.isFalse()) {
27 atomsToKeep.push_back(atom);
30 atomicExpressions = std::move(atomsToKeep);
32 return atomicExpressions;
bool hasBooleanType() const
Retrieves whether the expression has a boolean type.
Expression toExpression() const
Converts the base expression to a proper expression.
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.
bool hasBooleanType() const
Retrieves whether the expression has a boolean return type.
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) override
std::vector< storm::expressions::Expression > split(storm::expressions::Expression const &expression)
virtual std::shared_ptr< BaseExpression const > getOperand(uint_fast64_t operandIndex) const override
Retrieves the given operand from the expression.
#define STORM_LOG_THROW(cond, exception, message)
std::vector< storm::expressions::Expression > & getAtomicExpressions(boost::any const &data)