m.def("parse_formulas_for_program",&storm::parseFormulasForProgram,"Parse formulas for program",py::arg("formula_string"),py::arg("program"));
m.def("build_model",&buildModel,"Build the model",py::arg("program"),py::arg("formula"));
m.def("build_model_from_prism_program",&storm::buildSymbolicModel<double>,"Build the model",py::arg("program"),py::arg("formulas"));
m.def("build_parametric_model_from_prism_program",&storm::buildSymbolicModel<storm::RationalFunction>,"Build the parametric model",py::arg("program"),py::arg("formulas"));
//m.def("perform_state_elimination", &performStateElimination, "Perform state elimination");
m.def("perform_state_elimination",&performStateElimination,"Perform state elimination",py::arg("model"),py::arg("formula"));
// Program
py::enum_<storm::prism::Program::ModelType>(m,"PrismModelType","Type of the prism model")
@ -76,6 +93,10 @@ void define_core(py::module& m) {
// Models
m.def("build_model",&buildModel,"Build the model",py::arg("program"),py::arg("formula"));
m.def("build_model_from_prism_program",&storm::buildSymbolicModel<double>,"Build the model",py::arg("program"),py::arg("formulas"));
m.def("build_parametric_model_from_prism_program",&storm::buildSymbolicModel<storm::RationalFunction>,"Build the parametric model",py::arg("program"),py::arg("formulas"));
py::enum_<storm::models::ModelType>(m,"ModelType","Type of the model")
.value("DTMC",storm::models::ModelType::Dtmc)
.value("MDP",storm::models::ModelType::Mdp)
@ -96,36 +117,35 @@ void define_core(py::module& m) {
py::class_<storm::models::sparse::Model<double>,std::shared_ptr<storm::models::sparse::Model<double>>>(m,"SparseModel","A probabilistic model where transitions are represented by doubles and saved in a sparse matrix",py::base<storm::models::ModelBase>())
;
py::class_<storm::models::sparse::Dtmc<double>,std::shared_ptr<storm::models::sparse::Dtmc<double>>>(m,"SparseDtmc","DTMC in sparse representation",py::base<storm::models::sparse::Model<double>>())
;
py::class_<storm::models::sparse::Mdp<double>,std::shared_ptr<storm::models::sparse::Mdp<double>>>(m,"SparseMdp","MDP in sparse representation",py::base<storm::models::sparse::Model<double>>())
;
py::class_<storm::models::sparse::Model<storm::RationalFunction>,std::shared_ptr<storm::models::sparse::Model<storm::RationalFunction>>>(m,"SparseParametricModel","A probabilistic model where transitions are represented by rational functions and saved in a sparse matrix",py::base<storm::models::ModelBase>())
py::class_<storm::models::sparse::Dtmc<storm::RationalFunction>,std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>>>(m,"SparseParametricDtmc","pDTMC in sparse representation",py::base<storm::models::sparse::Model<storm::RationalFunction>>())
;
py::class_<storm::models::sparse::Mdp<storm::RationalFunction>,std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>>>(m,"SparseParametricMdp","pMDP in sparse representation",py::base<storm::models::sparse::Model<storm::RationalFunction>>())
;
// PmcResult
/*py::class_<PmcResult, std::shared_ptr<PmcResult>>(m, "PmcResult", "Holds the results after parametric model checking")
.def_readwrite("result_function",&PmcResult::resultFunction,"Result as rational function")
m.def("perform_parametric_bisimulation",&performBisimulation<storm::RationalFunction>,"Perform bisimulation on parametric model",py::arg("program"),py::arg("formula"),py::arg("bisimulation_type"));
// PmcResult
py::class_<PmcResult,std::shared_ptr<PmcResult>>(m,"PmcResult","Holds the results after parametric model checking")
.def("__str__",&PmcResult::toString)
//.def("result_function", &PmcResult::getFunc, "Result as rational function")
//.def_readwrite("result_function", &PmcResult::resultFunction, "Result as rational function")