diff --git a/src/mod_pars.cpp b/src/mod_pars.cpp index ee28960..665397c 100644 --- a/src/mod_pars.cpp +++ b/src/mod_pars.cpp @@ -15,4 +15,5 @@ PYBIND11_MODULE(pars, m) { define_pars(m); define_pla(m); define_model_instantiator(m); + define_model_instantiation_checker(m); } diff --git a/src/pars/model_instantiator.cpp b/src/pars/model_instantiator.cpp index 78b0376..6040230 100644 --- a/src/pars/model_instantiator.cpp +++ b/src/pars/model_instantiator.cpp @@ -1,5 +1,24 @@ #include "model_instantiator.h" #include "storm/models/sparse/Model.h" +#include "storm-pars/modelchecker/instantiation/SparseDtmcInstantiationModelChecker.h" +#include "storm/models/sparse/StandardRewardModel.h" + + +#include "storm-pars/transformer/SparseParametricDtmcSimplifier.h" + +#include "storm/adapters/RationalFunctionAdapter.h" +#include "storm/modelchecker/propositional/SparsePropositionalModelChecker.h" +#include "storm/modelchecker/results/ExplicitQualitativeCheckResult.h" +#include "storm/modelchecker/results/ExplicitQuantitativeCheckResult.h" +#include "storm/modelchecker/prctl/helper/DsMpiUpperRewardBoundsComputer.h" +#include "storm/modelchecker/prctl/helper/BaierUpperRewardBoundsComputer.h" +#include "storm/models/sparse/Dtmc.h" +#include "storm/models/sparse/StandardRewardModel.h" +#include "storm/solver/MinMaxLinearEquationSolver.h" +#include "storm/solver/Multiplier.h" +#include "storm/utility/vector.h" +#include "storm/utility/graph.h" +#include "storm/utility/NumberTraits.h" template using Model = storm::models::sparse::Model; template using Dtmc = storm::models::sparse::Dtmc; @@ -7,6 +26,8 @@ template using Mdp = storm::models::sparse::Mdp; template using Ctmc = storm::models::sparse::Ctmc; template using MarkovAutomaton = storm::models::sparse::MarkovAutomaton; +using namespace storm::modelchecker; + // Model instantiator void define_model_instantiator(py::module& m) { py::class_, Dtmc>>(m, "PDtmcInstantiator", "Instantiate PDTMCs to DTMCs") @@ -27,3 +48,17 @@ void define_model_instantiator(py::module& m) { .def(py::init>(), "parametric model"_a) .def("instantiate", &storm::utility::ModelInstantiator, MarkovAutomaton>::instantiate, "Instantiate model with given parameter values"); } + +void define_model_instantiation_checker(py::module& m) { + + py::class_, double>, std::shared_ptr, double>>> bpdtmcinstchecker(m, "PDtmcInstantiationCheckerBase", "Instantiate pDTMCs to DTMCs (base)"); + bpdtmcinstchecker.def("specify_formula", &SparseInstantiationModelChecker, double>::specifyFormula, "check_task"_a) + ; + py::class_, double>, std::shared_ptr, double>>> (m, "PDtmcInstantiationChecker", "Instantiate pDTMCs to DTMCs", bpdtmcinstchecker) + + .def(py::init>(), "parametric model"_a) + .def("check", [](SparseDtmcInstantiationModelChecker, double> &sdimc, storm::Environment const& env, storm::utility::parametric::Valuation const& val) -> std::shared_ptr {return sdimc.check(env,val);}, "env"_a, "instantiation"_a) + .def("set_graph_preserving", &SparseDtmcInstantiationModelChecker, double>::setInstantiationsAreGraphPreserving, "value"_a); +; + +} \ No newline at end of file diff --git a/src/pars/model_instantiator.h b/src/pars/model_instantiator.h index d841821..52ab136 100644 --- a/src/pars/model_instantiator.h +++ b/src/pars/model_instantiator.h @@ -4,5 +4,6 @@ #include "common.h" void define_model_instantiator(py::module& m); +void define_model_instantiation_checker(py::module& m); #endif /* PYTHON_PARS_MODEL_INSTANTIATOR_H_ */