Browse Source

(param/exact) fix handling of != in parametric/exact engine (with Linda Leuschner)

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
master
Joachim Klein 9 years ago
parent
commit
750923dfbf
  1. 13
      prism/src/param/BoxRegion.java

13
prism/src/param/BoxRegion.java

@ -316,6 +316,19 @@ final class BoxRegion extends Region {
allDecided = false; allDecided = false;
break; break;
} }
} else if (op == Region.NE) {
if (op1Val instanceof StateBoolean) {
newValues.setStateValue(state, !op1Val.equals(op2Val));
} else if (op1Val.equals(op2Val)) {
newValues.setStateValue(state, false);
} else if (checker.check(region, op1ValFn.subtract(op2ValFn), true)) {
newValues.setStateValue(state, true);
} else if (checker.check(region, op2ValFn.subtract(op1ValFn), true)) {
newValues.setStateValue(state, true);
} else {
allDecided = false;
break;
}
} else { } else {
boolean strict = op == Region.GT || op == Region.LT; boolean strict = op == Region.GT || op == Region.LT;
Function cmpTrue = (op == Region.LT || op == Region.LE) ? op2ValFn.subtract(op1ValFn) : op1ValFn.subtract(op2ValFn); Function cmpTrue = (op == Region.LT || op == Region.LE) ? op2ValFn.subtract(op1ValFn) : op1ValFn.subtract(op2ValFn);

Loading…
Cancel
Save