The getSuccessorsIterator provides an iterator over the set of successors,
i.e., deduplication is sometimes required (e.g. for MDPs).
We introduce here a SuccessorsIterator class that allows to make deduplication
optional, which may have benefits in performance. Additionally, SuccessorsIterator
implements a primitive OfInt iterator, which can avoid auto-boxing.
Subclasses of explicit.Model now have to provide an implementation for getSuccessors(int s),
getSuccessorsIterator(int s) is provided via a default method that automatically
requests deduplication.
Subclasses of explicit.NondetModel now have to provide an implementation for getSuccessors(int s, int).,
getSuccessorsIterator(int s, int i) is provided via a default method that automatically
requests deduplication.
Adapt the existing subclasses of explicit.Model.
Provides additional default methods and removes unneeded specializations in sub-classes:
boolean isSuccessor(int s1, int s2)
boolean allSuccessorsInSet(int s, BitSet set)
boolean someSuccessorsInSet(int s, BitSet set)
boolean allSuccessorsMatch(int s, IntPredicate p)
boolean someSuccessorsMatch(int s, IntPredicate p)
and for NondetModel:
boolean allSuccessorsInSet(int s, int i, BitSet set)
boolean someSuccessorsInSet(int s, int i, BitSet set)
boolean allSuccessorsMatch(int s, int i, IntPredicate p)
boolean someSuccessorsMatch(int s, int i, IntPredicate p)
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@12085 bbc10eb1-c90d-0410-af57-cb519fbb1720
Missing case for NE operator in BoxRegion.cmpOp. This affects the check routines
for the != operator in the parametric/exact engines, e.g., for state formulas
such as s!=t
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@11976 bbc10eb1-c90d-0410-af57-cb519fbb1720
The transitions are explored twice during model construction, once
to find the reachable states and the second time to actually build
the transition structure of the model. We suppress the warning
in the first pass so that it does not appear twice.
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@11656 bbc10eb1-c90d-0410-af57-cb519fbb1720
Already convert the expression to a function for ChoiceListFlexi,
as this will allow filtering zero probability updates (next commit)
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@11653 bbc10eb1-c90d-0410-af57-cb519fbb1720
If we can can not guarantee that the probabilties for a command sum to 1 in a DTMC or
MDP then we report an error. This is similar to what happens for the explicit and
symbolic engines and fixes issue prismmodelchecker/prism#6.
This error check can be switched off using the -noprobchecks option.
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@11644 bbc10eb1-c90d-0410-af57-cb519fbb1720
We wrap the RegionValues returned by ParamModelChecker in a ParamResult
object, which stores additional meta-information that allow for the
result to be tested.
In test mode, if there is only a single region, tests against the given
expected RESULT expression.
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@11639 bbc10eb1-c90d-0410-af57-cb519fbb1720
If-then-else expressions:
The if-expression can not refer to a parametric constant.
Other functions (min, max, floor, ...):
Arguments can not refer to parametric constants and evaluating
the function exactly has to be supported.
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@11615 bbc10eb1-c90d-0410-af57-cb519fbb1720
ParamModelChecker already has a mainLog by being a PrismComponent,
inheriting the log from the parent component.
In particular, this allows redirection of the log output via the
-mainlog parameter (as used by prism-auto).
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@11600 bbc10eb1-c90d-0410-af57-cb519fbb1720