@ -2,21 +2,22 @@
# include "src/helpers.h"
# include "storm/api/storm.h"
typedef storm : : modelchecker : : SparseDtmcParameterLiftingModelChecker < storm : : models : : sparse : : Dtmc < storm : : RationalFunction > , double > SparseDtmcRegionChecker ;
typedef storm : : modelchecker : : RegionModelChecker < storm : : RationalFunction > RegionModelChecker ;
typedef storm : : storage : : ParameterRegion < storm : : RationalFunction > Region ;
// Thin wrappers
std : : shared_ptr < RegionModelChecker > createRegionChecker ( std : : shared_ptr < storm : : models : : sparse : : Model < storm : : RationalFunction > > const & model , std : : shared_ptr < storm : : logic : : Formula > const & formula ) {
return storm : : api : : initializeParameterLiftingRegionModelChecker < storm : : RationalFunction , double > ( model , storm : : api : : createTask < storm : : RationalFunction > ( formula , true ) ) ;
std : : shared_ptr < RegionModelChecker > createRegionChecker ( storm : : Environment const & env , st d : : shared_ptr < storm : : models : : sparse : : Model < storm : : RationalFunction > > const & model , std : : shared_ptr < storm : : logic : : Formula > const & formula ) {
return storm : : api : : initializeParameterLiftingRegionModelChecker < storm : : RationalFunction , double > ( env , model , storm : : api : : createTask < storm : : RationalFunction > ( formula , true ) ) ;
}
storm : : modelchecker : : RegionResult checkRegion ( std : : shared_ptr < RegionModelChecker > & checker , Region const & region , storm : : modelchecker : : RegionResultHypothesis const & hypothesis , storm : : modelchecker : : RegionResult const & initialResult , bool sampleVertices ) {
return checker - > analyzeRegion ( region , hypothesis , initialResult , sampleVertices ) ;
storm : : modelchecker : : RegionResult checkRegion ( std : : shared_ptr < RegionModelChecker > & checker , storm : : Environment const & env , Region const & region , storm : : modelchecker : : RegionResultHypothesis const & hypothesis , storm : : modelchecker : : RegionResult const & initialResult , bool sampleVertices ) {
return checker - > analyzeRegion ( env , region , hypothesis , initialResult , sampleVertices ) ;
}
storm : : RationalFunction getBound ( std : : shared_ptr < RegionModelChecker > & checker , Region const & region , bool maximise ) {
return checker - > getBoundAtInitState ( region , maximise ? storm : : solver : : OptimizationDirection : : Maximize : storm : : solver : : OptimizationDirection : : Minimize ) ;
storm : : RationalFunction getBound ( std : : shared_ptr < RegionModelChecker > & checker , storm : : Environment const & env , Region const & region , bool maximise ) {
return checker - > getBoundAtInitState ( env , region , maximise ? storm : : solver : : OptimizationDirection : : Maximize : storm : : solver : : OptimizationDirection : : Minimize ) ;
}
@ -74,11 +75,11 @@ void define_pla(py::module& m) {
auto tmp = storm : : api : : initializeParameterLiftingRegionModelChecker < storm : : RationalFunction , double > ( model , task ) ;
new ( & instance ) std : : unique_ptr < SparseDtmcRegionChecker > ( tmp ) ;
} , py : : arg ( " model " ) , py : : arg ( " task " ) */
. def ( " check_region " , & checkRegion , " Check region " , py : : arg ( " region " ) , py : : arg ( " hypothesis " ) = storm : : modelchecker : : RegionResultHypothesis : : Unknown , py : : arg ( " initialResult " ) = storm : : modelchecker : : RegionResult : : Unknown , py : : arg ( " sampleVertices " ) = false )
. def ( " get_bound " , & getBound , " Get bound " , py : : arg ( " region " ) , py : : arg ( " maximise " ) = true ) ;
. def ( " check_region " , & checkRegion , " Check region " , py : : arg ( " environment " ) , py : : arg ( " region " ) , py : : arg ( " hypothesis " ) = storm : : modelchecker : : RegionResultHypothesis : : Unknown , py : : arg ( " initialResult " ) = storm : : modelchecker : : RegionResult : : Unknown , py : : arg ( " sampleVertices " ) = false )
. def ( " get_bound " , & getBound , " Get bound " , py : : arg ( " environment " ) , py : : arg ( " region " ) , py : : arg ( " maximise " ) = true ) ;
;
m . def ( " create_region_checker " , & createRegionChecker , " Create region checker " , py : : arg ( " model " ) , py : : arg ( " formula " ) ) ;
m . def ( " create_region_checker " , & createRegionChecker , " Create region checker " , py : : arg ( " environment " ) , py : : arg ( " model " ) , py : : arg ( " formula " ) ) ;
//m.def("is_parameter_lifting_sound", &storm::utility::parameterlifting::validateParameterLiftingSound, "Check if parameter lifting is sound", py::arg("model"), py::arg("formula"));
m . def ( " gather_derivatives " , & gatherDerivatives , " Gather all derivatives of transition probabilities " , py : : arg ( " model " ) , py : : arg ( " var " ) ) ;
}