7 changed files with 67 additions and 0 deletions
			
			
		- 
					30examples/building_models/03-building-models.py
- 
					2src/core/core.cpp
- 
					3src/mod_storage.cpp
- 
					4src/storage/model.cpp
- 
					1src/storage/prism.cpp
- 
					21src/storage/valuation.cpp
- 
					6src/storage/valuation.h
| @ -0,0 +1,30 @@ | |||
| import stormpy | |||
| import stormpy.core | |||
| 
 | |||
| import stormpy.examples | |||
| import stormpy.examples.files | |||
| 
 | |||
| 
 | |||
| def example_building_models_01(): | |||
|     path = stormpy.examples.files.prism_pdtmc_brp | |||
|     prism_program = stormpy.parse_prism_program(path) | |||
|     formula_str = "P=? [F s=5]" | |||
|     properties = stormpy.parse_properties_for_prism_program(formula_str, prism_program) | |||
| 
 | |||
|     options = stormpy.BuilderOptions([p.raw_formula for p in properties]) | |||
|     options.set_build_state_valuations() | |||
|     model = stormpy.build_sparse_parametric_model_with_options(prism_program, options) | |||
|     eval2 = model.state_valuations.get_state(2) | |||
|     integer_variables = [] | |||
|     boolean_variables = [] | |||
|     for module in prism_program.modules: | |||
|         print("module {}".format(module.name)) | |||
|         integer_variables += module.integer_variables | |||
|         boolean_variables += module.boolean_variables | |||
| 
 | |||
|     print(",".join(["{}: {}".format(str(iv.name), eval2.get_integer_value(iv.expression_variable)) for iv in integer_variables])) | |||
| 
 | |||
| 
 | |||
| 
 | |||
| if __name__ == '__main__': | |||
|     example_building_models_01() | |||
| @ -0,0 +1,21 @@ | |||
| #include "valuation.h"
 | |||
| #include "src/helpers.h"
 | |||
| 
 | |||
| #include "storm/storage/sparse/StateValuations.h"
 | |||
| #include "storm/storage/expressions/SimpleValuation.h"
 | |||
| #include "storm/storage/expressions/Variable.h"
 | |||
| 
 | |||
| // Define python bindings
 | |||
| void define_statevaluation(py::module& m) { | |||
| 
 | |||
|     py::class_<storm::storage::sparse::StateValuations, std::shared_ptr<storm::storage::sparse::StateValuations>> statevaluation(m,"StateValuation", "Valuations for explicit states"); | |||
|     statevaluation.def("get_state", &storm::storage::sparse::StateValuations::getStateValuation) | |||
|             ; | |||
| 
 | |||
| } | |||
| 
 | |||
| void define_simplevaluation(py::module& m) { | |||
|     py::class_<storm::expressions::SimpleValuation, std::shared_ptr<storm::expressions::SimpleValuation>> simplevaluation(m, "SimpleValuation",  "Valuations for storm variables"); | |||
|     simplevaluation.def("get_boolean_value", &storm::expressions::SimpleValuation::getBooleanValue); | |||
|     simplevaluation.def("get_integer_value", &storm::expressions::SimpleValuation::getIntegerValue); | |||
| } | |||
| @ -0,0 +1,6 @@ | |||
| #pragma once | |||
| 
 | |||
| #include "common.h" | |||
| 
 | |||
| void define_statevaluation(py::module& m); | |||
| void define_simplevaluation(py::module& m); | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue