#include "dft.h" #include "storm-dft/parser/DFTJsonParser.h" #include "storm-dft/builder/ExplicitDFTModelBuilderApprox.h" #include "storm/settings/SettingsManager.h" #include "storm-dft/settings/modules/DFTSettings.h" #include "storm-dft/storage/dft/DFTIsomorphism.h" // Thin wrapper for model building using one formula as argument template std::shared_ptr> buildModelFromJsonDft(std::string const& jsonDft, bool symred) { // Build DFT storm::parser::DFTJsonParser parser; storm::storage::DFT dft = parser.parseJson(jsonDft); // Build model std::map>> emptySymmetry; storm::storage::DFTIndependentSymmetries symmetries(emptySymmetry); if (symred) { auto colouring = dft.colourDFT(); symmetries = dft.findSymmetries(colouring); } storm::builder::ExplicitDFTModelBuilderApprox builder(dft, symmetries, true); typename storm::builder::ExplicitDFTModelBuilderApprox::LabelOptions labeloptions({}, true); builder.buildModel(labeloptions, 0, 0.0); return builder.getModel(); } void define_dft(py::module& m) { m.def("_set_up", []() { storm::settings::addModule(); }, "Initialize Storm-dft"); // Build model m.def("build_sparse_model_from_json_dft", &buildModelFromJsonDft, "Build the model", py::arg("jsonDft"), py::arg("symred") = false); m.def("build_sparse_parametric_model_from_json_dft", &buildModelFromJsonDft, "Build the parametric model", py::arg("jsonDft"), py::arg("symred") = false); }