py::class_<storm::models::sparse::Model<double>,std::shared_ptr<storm::models::sparse::Model<double>>>model(m,"_SparseModel","A probabilistic model where transitions are represented by doubles and saved in a sparse matrix",modelBase);
py::class_<Model<double>,std::shared_ptr<Model<double>>>model(m,"_SparseModel","A probabilistic model where transitions are represented by doubles and saved in a sparse matrix",modelBase);
py::class_<storm::models::sparse::Dtmc<double>,std::shared_ptr<storm::models::sparse::Dtmc<double>>>(m,"SparseDtmc","DTMC in sparse representation",model)
py::class_<Dtmc<double>,std::shared_ptr<Dtmc<double>>>(m,"SparseDtmc","DTMC in sparse representation",model)
py::class_<storm::models::sparse::Model<storm::RationalFunction>,std::shared_ptr<storm::models::sparse::Model<storm::RationalFunction>>>modelRatFunc(m,"_SparseParametricModel","A probabilistic model where transitions are represented by rational functions and saved in a sparse matrix",modelBase);
py::class_<Model<RationalFunction>,std::shared_ptr<Model<RationalFunction>>>modelRatFunc(m,"_SparseParametricModel","A probabilistic model where transitions are represented by rational functions and saved in a sparse matrix",modelBase);
py::class_<storm::models::sparse::Dtmc<storm::RationalFunction>,std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>>>(m,"SparseParametricDtmc","pDTMC in sparse representation",modelRatFunc)
py::class_<storm::models::sparse::Mdp<storm::RationalFunction>,std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>>>(m,"SparseParametricMdp","pMDP in sparse representation",modelRatFunc)
py::class_<storm::utility::ModelInstantiator<storm::models::sparse::Dtmc<storm::RationalFunction>,storm::models::sparse::Dtmc<double>>>(m,"PdtmcInstantiator","Instantiate PDTMCs to DTMCs")
.def("instantiate",&storm::utility::ModelInstantiator<storm::models::sparse::Dtmc<storm::RationalFunction>,storm::models::sparse::Dtmc<double>>::instantiate,"Instantiate model with given parameter values")
py::class_<storm::utility::ModelInstantiator<Dtmc<RationalFunction>,Dtmc<double>>>(m,"PdtmcInstantiator","Instantiate PDTMCs to DTMCs")
.def("instantiate",&storm::utility::ModelInstantiator<Dtmc<RationalFunction>,Dtmc<double>>::instantiate,"Instantiate model with given parameter values")
;
py::class_<storm::utility::ModelInstantiator<storm::models::sparse::Mdp<storm::RationalFunction>,storm::models::sparse::Mdp<double>>>(m,"PmdpInstantiator","Instantiate PMDPs to MDPs")
.def("instantiate",&storm::utility::ModelInstantiator<storm::models::sparse::Mdp<storm::RationalFunction>,storm::models::sparse::Mdp<double>>::instantiate,"Instantiate model with given parameter values")
py::class_<storm::utility::ModelInstantiator<Mdp<RationalFunction>,Mdp<double>>>(m,"PmdpInstantiator","Instantiate PMDPs to MDPs")