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