17 std::map<storm::expressions::Variable, storm::expressions::Expression>
const& substitution) {
18 std::vector<storm::jani::Property> preprocessedProperties;
19 for (
auto const& property : properties) {
20 preprocessedProperties.emplace_back(property.substitute(substitution));
22 return preprocessedProperties;
33std::vector<storm::jani::Property>
filterProperties(std::vector<storm::jani::Property>
const& properties,
34 boost::optional<std::set<std::string>>
const& propertyFilter) {
36 std::set<std::string>
const& propertyNameSet = propertyFilter.get();
37 std::vector<storm::jani::Property> result;
38 std::set<std::string> reducedPropertyNames;
40 if (propertyNameSet.empty()) {
44 for (
auto const& property : properties) {
45 if (propertyNameSet.find(property.getName()) != propertyNameSet.end()) {
46 result.push_back(property);
47 reducedPropertyNames.insert(property.getName());
51 if (reducedPropertyNames.size() < propertyNameSet.size()) {
52 std::set<std::string> missingProperties;
53 std::set_difference(propertyNameSet.begin(), propertyNameSet.end(), reducedPropertyNames.begin(), reducedPropertyNames.end(),
54 std::inserter(missingProperties, missingProperties.begin()));
55 STORM_LOG_WARN(
"Filtering unknown properties " << boost::join(missingProperties,
", ") <<
".");
73 std::set<storm::expressions::Variable> undefConstants;
74 std::string name =
"";
75 std::string comment =
"";
76 for (
auto const& prop : properties) {
77 undefConstants.insert(prop.getUndefinedConstants().begin(), prop.getUndefinedConstants().end());
79 comment += prop.getComment();
81 "Non-default property filter of property " + prop.getName() +
" will be dropped during conversion to multi-objective property.");
std::pair< storm::jani::Model, std::vector< storm::jani::Property > > filterProperties(std::pair< storm::jani::Model, std::vector< storm::jani::Property > > &modelAndFormulae, boost::optional< std::vector< std::string > > const &propertyFilter)