42 std::shared_ptr<storm::logic::Formula const>
const& statesFormula = std::make_shared<storm::logic::AtomicLabelFormula>(
"init"))
43 : formula(formula), ft(ft), statesFormula(statesFormula) {
45 "Can only filter by propositional formula.");
48 std::shared_ptr<storm::logic::Formula const>
const&
getFormula()
const {
65 return FilterExpression(formula->substitute(substitution), ft, statesFormula->substitute(substitution));
69 return FilterExpression(formula->substitute(substitutionFunction), ft, statesFormula->substitute(substitutionFunction));
73 return FilterExpression(formula->substitute(labelSubstitution), ft, statesFormula->substitute(labelSubstitution));
77 return FilterExpression(formula->substituteRewardModelNames(rewardModelNameSubstitution), ft,
78 statesFormula->substituteRewardModelNames(rewardModelNameSubstitution));
82 return FilterExpression(formula->substituteTranscendentalNumbers(), ft, statesFormula->substituteTranscendentalNumbers());
92 std::shared_ptr<storm::logic::Formula const> formula;
94 std::shared_ptr<storm::logic::Formula const> statesFormula;
97std::ostream&
operator<<(std::ostream& os, FilterExpression
const& fe);
110 Property(std::string
const& name, std::shared_ptr<storm::logic::Formula const>
const& formula,
111 std::set<storm::expressions::Variable>
const& undefinedConstants, std::string
const& comment =
"");
119 Property(std::string
const& name,
FilterExpression const& fe, std::set<storm::expressions::Variable>
const& undefinedConstants,
120 std::string
const& comment =
"");
126 std::string
const&
getName()
const;
134 Property substitute(std::map<storm::expressions::Variable, storm::expressions::Expression>
const& substitution)
const;
151 std::shared_ptr<storm::logic::Formula const>
getRawFormula()
const;
157 std::set<storm::expressions::Variable> undefinedConstants;
bool isInitialized() const
Checks whether the object encapsulates a base-expression.
FilterExpression substitute(std::map< storm::expressions::Variable, storm::expressions::Expression > const &substitution) const
std::shared_ptr< storm::logic::Formula const > const & getFormula() const
FilterExpression substituteRewardModelNames(std::map< std::string, std::string > const &rewardModelNameSubstitution) const
FilterExpression(std::shared_ptr< storm::logic::Formula const > formula, storm::modelchecker::FilterType ft=storm::modelchecker::FilterType::VALUES, std::shared_ptr< storm::logic::Formula const > const &statesFormula=std::make_shared< storm::logic::AtomicLabelFormula >("init"))
FilterExpression substituteTranscendentalNumbers() const
FilterExpression substituteLabels(std::map< std::string, std::string > const &labelSubstitution) const
std::shared_ptr< storm::logic::Formula const > const & getStatesFormula() const
storm::modelchecker::FilterType getFilterType() const
FilterExpression()=default
FilterExpression clone() const
FilterExpression substitute(std::function< storm::expressions::Expression(storm::expressions::Expression const &)> const &substitutionFunction) const
std::shared_ptr< storm::logic::Formula const > getRawFormula() const
std::set< storm::expressions::Variable > const & getUndefinedConstants() const
bool containsUndefinedConstants() const
std::set< storm::expressions::Variable > getUsedVariablesAndConstants() const
void gatherReferencedRewardModels(std::set< std::string > &rewardModelNames) const
std::string const & getName() const
Get the provided name.
Property substituteTranscendentalNumbers() const
std::string const & getComment() const
Get the provided comment, if any.
Property substitute(std::map< storm::expressions::Variable, storm::expressions::Expression > const &substitution) const
Property substituteRewardModelNames(std::map< std::string, std::string > const &rewardModelNameSubstitution) const
FilterExpression const & getFilter() const
std::string asPrismSyntax() const
std::set< std::string > getUsedLabels() const
Property substituteLabels(std::map< std::string, std::string > const &labelSubstitution) const
std::shared_ptr< Formula > clone(Formula const &f) const
#define STORM_LOG_THROW(cond, exception, message)
std::ostream & operator<<(std::ostream &stream, Assignment const &assignment)
FragmentSpecification propositional()
Property intervals as per Jani Specification.
bool hasUpperBound() const
bool hasLowerBound() const
storm::expressions::Expression upperBound
storm::expressions::Expression lowerBound