Browse Source

Add check that POMDP observables are valid variable references.

Also fix a few test cases (with erroneous extra  observables).
accumulation-v4.7
Dave Parker 5 years ago
parent
commit
b270d9b984
  1. 5
      prism/src/explicit/ConstructModel.java
  2. 2
      prism/tests/poptas/pump_popta.prism
  3. 2
      prism/tests/poptas/pump_popta_deadline.prism

5
prism/src/explicit/ConstructModel.java

@ -236,6 +236,11 @@ public class ConstructModel extends PrismComponent
if (!justReach && modelType.partiallyObservable()) {
List<String> allVars = modelGen.getVarNames();
observableVars = modelGen.getObservableVars();
for (String obsVar : observableVars) {
if (!allVars.contains(obsVar)) {
throw new PrismException("Observable " + obsVar + " is not a variable");
}
}
unobservableVars = new ArrayList<>();
for (String varName : allVars) {
if (!observableVars.contains(varName)) {

2
prism/tests/poptas/pump_popta.prism

@ -13,7 +13,7 @@ popta
// can see the state of the pump and its local variables and all clocks
observables
p, messages, l, m, guess, correct, x, y
p, l, m, guess, correct, x, y
endobservables
// delays for high sending 0 and 1 (both need to be >1)

2
prism/tests/poptas/pump_popta_deadline.prism

@ -2,7 +2,7 @@ pomdp
// can see the state of the pump and its local variables and all clocks
observables
p, messages, l, m, guess, correct, x, y, t
p, l, m, guess, correct, x, y, t
endobservables
label "invariants" = (p=0=>true)&(p=1=>y<=1)&(p=2=>y<=0)&(l=0=>x<=0)&(l=1=>x<=Tout)&(l=2=>x<=0)&(l=3=>true);

Loading…
Cancel
Save