11 std::function<
void(std::string
const&,
bool)>
const& terminalLabelCallback) {
12 auto isAtomic = [](
auto const& f) {
return f.isAtomicExpressionFormula() || f.isAtomicLabelFormula() || f.isBooleanLiteralFormula(); };
25 if (isAtomic(left) && isAtomic(right)) {
37 if (isAtomic(left) && isAtomic(right)) {
38 bool hasLowerBound =
false;
39 for (uint64_t i = 0; i < boundedUntil.
getDimension(); ++i) {
83 allTerminalExpressions.push_back(!e);
86 allTerminalExpressions.push_back(labelToExpressionMap(l));
89 allTerminalExpressions.push_back(!labelToExpressionMap(l));
91 STORM_LOG_ASSERT(!allTerminalExpressions.empty(),
"Unable to convert empty terminal state set to expression");
106 [&result](std::string
const& label,
bool inverted) {
storm::RationalNumber evaluateAsRational() const
Evaluates the expression and returns the resulting rational number.
bool containsVariables() const
Retrieves whether the expression contains a variable.
#define STORM_LOG_ASSERT(cond, message)
void getTerminalStatesFromFormula(storm::logic::Formula const &formula, std::function< void(storm::expressions::Expression const &, bool)> const &terminalExpressionCallback, std::function< void(std::string const &, bool)> const &terminalLabelCallback)
Traverses the formula.
Expression disjunction(std::vector< storm::expressions::Expression > const &expressions)
bool isZero(ValueType const &a)
std::vector< storm::expressions::Expression > terminalExpressions
std::vector< std::string > terminalLabels
std::vector< storm::expressions::Expression > negatedTerminalExpressions
bool empty() const
True if no terminal states are specified.
std::vector< std::string > negatedTerminalLabels
void clear()
Clears all terminal states.
storm::expressions::Expression asExpression(std::function< storm::expressions::Expression(std::string const &)> const &labelToExpressionMap) const
Returns an expression that evaluates to true only if the exploration can stop at the corresponding st...