|
|
@ -9,14 +9,15 @@ |
|
|
|
#include "storm/storage/jani/Property.h"
|
|
|
|
#include "storm/storage/jani/AutomatonComposition.h"
|
|
|
|
#include "storm/storage/jani/ParallelComposition.h"
|
|
|
|
#include "storm/storage/jani/ModelType.h"
|
|
|
|
#include "storm/storage/jani/CompositionInformationVisitor.h"
|
|
|
|
#include "storm/storage/jani/expressions/JaniExpressions.h"
|
|
|
|
#include "storm/logic/RewardAccumulationEliminationVisitor.h"
|
|
|
|
|
|
|
|
#include "storm/exceptions/FileIoException.h"
|
|
|
|
#include "storm/exceptions/InvalidJaniException.h"
|
|
|
|
|
|
|
|
#include "storm/exceptions/NotSupportedException.h"
|
|
|
|
#include "storm/exceptions/NotImplementedException.h"
|
|
|
|
#include "storm/storage/jani/ModelType.h"
|
|
|
|
|
|
|
|
#include "storm/modelchecker/results/FilterType.h"
|
|
|
|
|
|
|
@ -100,19 +101,18 @@ namespace storm { |
|
|
|
size_t featuresCount = parsedStructure.count("features"); |
|
|
|
STORM_LOG_THROW(featuresCount < 2, storm::exceptions::InvalidJaniException, "features-declarations can be given at most once."); |
|
|
|
if (featuresCount == 1) { |
|
|
|
auto allKnownModelFeatures = storm::jani::getAllKnownModelFeatures(); |
|
|
|
for (auto const& feature : parsedStructure.at("features")) { |
|
|
|
std::string featureStr = getString(feature, "Model feature"); |
|
|
|
if (featureStr == "arrays") { |
|
|
|
model.getModelFeatures().add(storm::jani::ModelFeature::Arrays); |
|
|
|
} else if (featureStr == "derived-operators") { |
|
|
|
model.getModelFeatures().add(storm::jani::ModelFeature::DerivedOperators); |
|
|
|
} else if (featureStr == "functions") { |
|
|
|
model.getModelFeatures().add(storm::jani::ModelFeature::Functions); |
|
|
|
} else if (featureStr == "state-exit-rewards") { |
|
|
|
model.getModelFeatures().add(storm::jani::ModelFeature::StateExitRewards); |
|
|
|
} else { |
|
|
|
STORM_LOG_WARN("Storm does not support the model feature " << featureStr << "."); |
|
|
|
bool found = false; |
|
|
|
for (auto const& knownFeature : allKnownModelFeatures.asSet()) { |
|
|
|
if (featureStr == storm::jani::toString(knownFeature)) { |
|
|
|
model.getModelFeatures().add(knownFeature); |
|
|
|
found = true; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
STORM_LOG_THROW(found, storm::exceptions::NotSupportedException, "Storm does not support the model feature " << featureStr); |
|
|
|
} |
|
|
|
} |
|
|
|
size_t actionCount = parsedStructure.count("actions"); |
|
|
|