Browse Source

removed jani conversion in cli of main binary

tempestpy_adaptions
TimQu 6 years ago
parent
commit
86f0195b18
  1. 7
      src/storm-cli-utilities/model-handling.h
  2. 25
      src/storm/api/export.cpp
  3. 10
      src/storm/api/export.h
  4. 8
      src/storm/storage/SymbolicModelDescription.cpp
  5. 4
      src/storm/storage/SymbolicModelDescription.h
  6. 8
      src/storm/storage/prism/Program.cpp
  7. 4
      src/storm/storage/prism/Program.h
  8. 5
      src/storm/storage/prism/ToJaniConverter.cpp
  9. 2
      src/storm/storage/prism/ToJaniConverter.h

7
src/storm-cli-utilities/model-handling.h

@ -17,6 +17,7 @@
#include "storm/storage/SymbolicModelDescription.h"
#include "storm/storage/jani/Property.h"
#include "storm/models/ModelBase.h"
@ -129,7 +130,7 @@ namespace storm {
if (transformToJani) {
storm::prism::Program const& model = output.model.get().asPrismProgram();
auto modelAndRenaming = model.toJaniWithLabelRenaming(true);
auto modelAndRenaming = model.toJaniWithLabelRenaming(true, "", false);
output.model = modelAndRenaming.first;
if (!modelAndRenaming.second.empty()) {
@ -153,10 +154,6 @@ namespace storm {
if (ioSettings.isExportJaniDotSet()) {
storm::api::exportJaniModelAsDot(model.asJaniModel(), ioSettings.getExportJaniDotFilename());
}
if (model.isJaniModel() && storm::settings::getModule<storm::settings::modules::JaniExportSettings>().isJaniFileSet()) {
storm::api::exportJaniModel(model.asJaniModel(), input.properties, storm::settings::getModule<storm::settings::modules::JaniExportSettings>().getJaniFilename());
}
}
}

25
src/storm/api/export.cpp

@ -4,31 +4,6 @@
namespace storm {
namespace api {
void exportJaniModel(storm::jani::Model const& model, std::vector<storm::jani::Property> const& properties, std::string const& filename) {
auto janiSettings = storm::settings::getModule<storm::settings::modules::JaniExportSettings>();
storm::jani::Model exportModel = model;
if (janiSettings.isLocationVariablesSet()) {
for(auto const& pair : janiSettings.getLocationVariables()) {
storm::jani::JaniLocationExpander expander(exportModel);
expander.transform(pair.first, pair.second);
exportModel = expander.getResult();
}
}
if (janiSettings.isExportFlattenedSet()) {
exportModel = exportModel.flattenComposition();
}
if (janiSettings.isExportAsStandardJaniSet()) {
storm::jani::Model normalisedModel = exportModel;
normalisedModel.makeStandardJaniCompliant();
storm::jani::JsonExporter::toFile(normalisedModel, properties, filename);
} else {
storm::jani::JsonExporter::toFile(exportModel, properties, filename);
}
}
void exportJaniModelAsDot(storm::jani::Model const& model, std::string const& filename) {
std::ofstream out;
storm::utility::openFile(filename, out);

10
src/storm/api/export.h

@ -1,8 +1,5 @@
#pragma once
#include "storm/storage/jani/JSONExporter.h"
#include "storm/settings/SettingsManager.h"
#include "storm/settings/modules/JaniExportSettings.h"
@ -11,10 +8,13 @@
#include "storm/utility/macros.h"
namespace storm {
namespace jani {
class Model;
}
namespace api {
void exportJaniModel(storm::jani::Model const& model, std::vector<storm::jani::Property> const& properties, std::string const& filename);
void exportJaniModelAsDot(storm::jani::Model const& model, std::string const& filename);
template <typename ValueType>

8
src/storm/storage/SymbolicModelDescription.cpp

@ -119,23 +119,23 @@ namespace storm {
return result;
}
SymbolicModelDescription SymbolicModelDescription::toJani(bool makeVariablesGlobal) const {
SymbolicModelDescription SymbolicModelDescription::toJani(bool makeVariablesGlobal, bool standardCompliant) const {
if (this->isJaniModel()) {
return *this;
}
if (this->isPrismProgram()) {
return SymbolicModelDescription(this->asPrismProgram().toJani(makeVariablesGlobal));
return SymbolicModelDescription(this->asPrismProgram().toJani(makeVariablesGlobal, "", standardCompliant));
} else {
STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot transform model description to the JANI format.");
}
}
std::pair<SymbolicModelDescription, std::map<std::string, std::string>> SymbolicModelDescription::toJaniWithLabelRenaming(bool makeVariablesGlobal) const {
std::pair<SymbolicModelDescription, std::map<std::string, std::string>> SymbolicModelDescription::toJaniWithLabelRenaming(bool makeVariablesGlobal, bool standardCompliant) const {
if (this->isJaniModel()) {
return std::make_pair(*this, std::map<std::string, std::string>());
}
if (this->isPrismProgram()) {
auto modelAndRenaming = this->asPrismProgram().toJaniWithLabelRenaming(makeVariablesGlobal);
auto modelAndRenaming = this->asPrismProgram().toJaniWithLabelRenaming(makeVariablesGlobal, "", standardCompliant);
return std::make_pair(SymbolicModelDescription(modelAndRenaming.first), modelAndRenaming.second);
} else {
STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Cannot transform model description to the JANI format.");

4
src/storm/storage/SymbolicModelDescription.h

@ -38,8 +38,8 @@ namespace storm {
std::vector<std::string> getParameterNames() const;
SymbolicModelDescription toJani(bool makeVariablesGlobal = true) const;
std::pair<SymbolicModelDescription, std::map<std::string, std::string>> toJaniWithLabelRenaming(bool makeVariablesGlobal = true) const;
SymbolicModelDescription toJani(bool makeVariablesGlobal = true, bool standardCompliant = false) const;
std::pair<SymbolicModelDescription, std::map<std::string, std::string>> toJaniWithLabelRenaming(bool makeVariablesGlobal = true, bool standardCompliant = false) const;
SymbolicModelDescription preprocess(std::string const& constantDefinitionString = "") const;
SymbolicModelDescription preprocess(std::map<storm::expressions::Variable, storm::expressions::Expression> const& constantDefinitions) const;

8
src/storm/storage/prism/Program.cpp

@ -1711,16 +1711,16 @@ namespace storm {
return Command(newCommandIndex, false, actionIndex, actionName, newGuard, newUpdates, this->getFilename(), 0);
}
storm::jani::Model Program::toJani(bool allVariablesGlobal, std::string suffix) const {
storm::jani::Model Program::toJani(bool allVariablesGlobal, std::string suffix, bool standardCompliant) const {
ToJaniConverter converter;
storm::jani::Model resultingModel = converter.convert(*this, allVariablesGlobal, suffix);
storm::jani::Model resultingModel = converter.convert(*this, allVariablesGlobal, suffix, standardCompliant);
STORM_LOG_WARN_COND(!converter.labelsWereRenamed(), "Labels were renamed in PRISM-to-JANI conversion, but the mapping is not stored.");
return resultingModel;
}
std::pair<storm::jani::Model, std::map<std::string, std::string>> Program::toJaniWithLabelRenaming(bool allVariablesGlobal, std::string suffix) const {
std::pair<storm::jani::Model, std::map<std::string, std::string>> Program::toJaniWithLabelRenaming(bool allVariablesGlobal, std::string suffix, bool standardCompliant) const {
ToJaniConverter converter;
storm::jani::Model resultingModel = converter.convert(*this, allVariablesGlobal, suffix);
storm::jani::Model resultingModel = converter.convert(*this, allVariablesGlobal, suffix, standardCompliant);
return std::make_pair(resultingModel, converter.getLabelRenaming());
}

4
src/storm/storage/prism/Program.h

@ -603,13 +603,13 @@ namespace storm {
/*!
* Converts the PRISM model into an equivalent JANI model.
*/
storm::jani::Model toJani(bool allVariablesGlobal = false, std::string suffix = "") const;
storm::jani::Model toJani(bool allVariablesGlobal = true, std::string suffix = "", bool standardCompliant = false) const;
/*!
* Converts the PRISM model into an equivalent JANI model and retrieves possible label renamings that had
* to be performed in the process.
*/
std::pair<storm::jani::Model, std::map<std::string, std::string>> toJaniWithLabelRenaming(bool allVariablesGlobal = false, std::string suffix = "") const;
std::pair<storm::jani::Model, std::map<std::string, std::string>> toJaniWithLabelRenaming(bool allVariablesGlobal = true, std::string suffix = "", bool standardCompliant = false) const;
private:
/*!

5
src/storm/storage/prism/ToJaniConverter.cpp

@ -8,7 +8,6 @@
#include "storm/storage/jani/TemplateEdge.h"
#include "storm/settings/SettingsManager.h"
#include "storm/settings/modules/JaniExportSettings.h"
#include "storm/utility/macros.h"
#include "storm/exceptions/NotImplementedException.h"
@ -16,10 +15,10 @@
namespace storm {
namespace prism {
storm::jani::Model ToJaniConverter::convert(storm::prism::Program const& program, bool allVariablesGlobal, std::string suffix) {
storm::jani::Model ToJaniConverter::convert(storm::prism::Program const& program, bool allVariablesGlobal, std::string suffix, bool standardCompliant) {
std::shared_ptr<storm::expressions::ExpressionManager> manager = program.getManager().getSharedPointer();
bool produceStateRewards = !storm::settings::getModule<storm::settings::modules::JaniExportSettings>().isExportAsStandardJaniSet() || program.getModelType() == storm::prism::Program::ModelType::CTMC;
bool produceStateRewards = !standardCompliant || program.getModelType() == storm::prism::Program::ModelType::CTMC || program.getModelType() == storm::prism::Program::ModelType::MA;
// Start by creating an empty JANI model.
storm::jani::ModelType modelType;

2
src/storm/storage/prism/ToJaniConverter.h

@ -14,7 +14,7 @@ namespace storm {
class ToJaniConverter {
public:
storm::jani::Model convert(storm::prism::Program const& program, bool allVariablesGlobal = false, std::string suffix = "");
storm::jani::Model convert(storm::prism::Program const& program, bool allVariablesGlobal = true, std::string suffix = "", bool standardCompliant = false);
bool labelsWereRenamed() const;
std::map<std::string, std::string> const& getLabelRenaming() const;

Loading…
Cancel
Save