11Property::Property(std::string
const& name, std::shared_ptr<storm::logic::Formula const>
const& formula,
12 std::set<storm::expressions::Variable>
const& undefinedConstants, std::string
const& comment)
13 : name(name), comment(comment), filterExpression(
FilterExpression(formula)), undefinedConstants(undefinedConstants) {
18 std::string
const& comment)
19 : name(name), comment(comment), filterExpression(fe), undefinedConstants(undefinedConstants) {
32 std::stringstream stream;
34 stream <<
"\"" << this->
getName() <<
"\": ";
38 stream << *fe.getFormula();
41 if (fe.getStatesFormula() && !fe.getStatesFormula()->isInitialFormula()) {
42 stream <<
", " << *fe.getFormula();
55 std::set<storm::expressions::Variable> remainingUndefinedConstants;
56 for (
auto const& constant : undefinedConstants) {
57 if (substitution.find(constant) == substitution.end()) {
58 remainingUndefinedConstants.insert(constant);
61 return Property(name, filterExpression.
substitute(substitution), remainingUndefinedConstants, comment);
65 std::set<storm::expressions::Variable> remainingUndefinedConstants;
66 for (
auto const& constant : undefinedConstants) {
67 substitutionFunction(constant.getExpression()).getBaseExpression().gatherVariables(remainingUndefinedConstants);
69 return Property(name, filterExpression.
substitute(substitutionFunction), remainingUndefinedConstants, comment);
85 return Property(name, filterExpression.
clone(), undefinedConstants, comment);
89 return this->filterExpression;
97 return undefinedConstants;
101 return !undefinedConstants.empty();
112 std::set<std::string> res;
114 for (
auto const& f : labFormSet) {
115 res.insert(f->getLabel());
118 for (
auto const& f : labFormSet) {
119 res.insert(f->getLabel());
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 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 clone() 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::string toString(ModelFeature const &modelFeature)
std::ostream & operator<<(std::ostream &stream, Assignment const &assignment)
std::string toString(FilterType ft)