Browse Source
ODD: Use int64_t for offsets everywhere, check for arithmetic overflow
ODD: Use int64_t for offsets everywhere, check for arithmetic overflow
Before, the ODD offsets (for indexing into the reachable states) were stored as longs, resulting in inconsistent numbers of (symbolic) states that can be treated. In particular, on Win64, long is 32bit. We switch to int64_t for the ODD offsets everywhere, allowing MTBDD computations for models with >2^31 states. Additionally, we check for arithmetic overflow in the offset computations. Due to the symbolic storage for the models and the state space explosion, it's possible to construct simple model files that reach the 2^63 states limit. If this limit is reached, we now throw an error message. In the future it might be worthwile to ensure that PRISM can deal with the absence of an ODD for all the computations that don't absolutely require it and carry on (most MTBDD engine algorithms should be fine). git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@12019 bbc10eb1-c90d-0410-af57-cb519fbb1720master
6 changed files with 49 additions and 19 deletions
-
6prism/include/odd.h
-
12prism/src/odd/ODDUtils.java
-
30prism/src/odd/odd.cc
-
6prism/src/prism/Model.java
-
4prism/src/prism/NondetModel.java
-
10prism/src/prism/ProbModel.java
Write
Preview
Loading…
Cancel
Save
Reference in new issue