Skip to content

Commit 9fb70c0

Browse files
committed
parsing properties works
1 parent d8f5b60 commit 9fb70c0

File tree

1 file changed

+12
-19
lines changed

1 file changed

+12
-19
lines changed

stormvogel/model_checking.py

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,42 +5,35 @@
55

66

77
def model_checking(
8-
model: stormvogel.model.Model, prop: str | stormpy.Property, scheduler: bool = False
8+
model: stormvogel.model.Model, prop: str, scheduler: bool = False
99
) -> stormvogel.result.Result | None:
1010
"""
1111
Instead of calling this function, the stormpy model checker can be used by first mapping a model to a stormpy model,
1212
then calling the stormpy model checker with it followed by converting the model checker result to a stormvogel result.
1313
This function just performs this procedure automatically.
1414
"""
1515

16-
# We can choose between provoding properties as a string or as a stormpy.Property object
17-
if isinstance(prop, str):
18-
prop = stormpy.parse_properties_without_context(prop) # TODO make this work
16+
prop = stormpy.parse_properties(prop)
1917

2018
stormpy_model = stormvogel.mapping.stormvogel_to_stormpy(model)
2119
stormpy_result = stormpy.model_checking(
22-
stormpy_model, prop, extract_scheduler=scheduler
20+
stormpy_model, prop[0], extract_scheduler=scheduler
2321
)
24-
assert stormvogel_model is not None
22+
assert model is not None
2523
stormvogel_result = stormvogel.result.convert_model_checking_result(
26-
stormvogel_model, stormpy_result
24+
model, stormpy_result
2725
)
2826

2927
return stormvogel_result
3028

3129

3230
if __name__ == "__main__":
33-
path = stormpy.examples.files.prism_dtmc_die
34-
prism_program = stormpy.parse_prism_program(path)
35-
formula_str = "P=? [F s=7 & d=2]"
36-
properties = stormpy.parse_properties(formula_str, prism_program)
37-
model = stormpy.build_model(prism_program, properties)
38-
39-
stormvogel_model = stormvogel.mapping.stormpy_to_stormvogel(model)
31+
dtmc = stormvogel.model.new_dtmc("Die")
32+
init = dtmc.get_initial_state()
33+
init.set_transitions(
34+
[(1 / 6, dtmc.new_state(f"rolled{i}", {"rolled": i})) for i in range(6)]
35+
)
36+
dtmc.add_self_loops()
4037

41-
assert stormvogel_model is not None
42-
stormvogel_results = model_checking(stormvogel_model, properties[0])
38+
stormvogel_results = model_checking(dtmc, 'Pmin=? [F "rolled1"]')
4339
print(stormvogel_results)
44-
45-
# stormvogel_results = model_checking(stormvogel_model, formula_str)
46-
# print(stormvogel_results)

0 commit comments

Comments
 (0)