Browse Source

Add areAllChoiceActionsUnique() method to NondetModel.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@7603 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 12 years ago
parent
commit
bb14cd09ab
  1. 23
      prism/src/explicit/MDPExplicit.java
  2. 6
      prism/src/explicit/MDPSimple.java
  3. 5
      prism/src/explicit/NondetModel.java
  4. 6
      prism/src/explicit/STPGAbstrSimple.java
  5. 7
      prism/src/explicit/SubNondetModel.java

23
prism/src/explicit/MDPExplicit.java

@ -30,6 +30,7 @@ package explicit;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.util.BitSet; import java.util.BitSet;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
@ -225,6 +226,26 @@ public abstract class MDPExplicit extends ModelExplicit implements MDP
} }
} }
// Accessors (for NondetModel)
@Override
public boolean areAllChoiceActionsUnique()
{
HashSet<Object> sActions = new HashSet<Object>();
for (int s = 0; s < numStates; s++) {
int n = getNumChoices(s);
if (n > 1) {
sActions.clear();
for (int i = 0; i < n; i++) {
if (!sActions.add(getAction(s, i))) {
return false;
}
}
}
}
return true;
}
// Accessors (for MDP) // Accessors (for MDP)
@Override @Override
@ -340,7 +361,7 @@ public abstract class MDPExplicit extends ModelExplicit implements MDP
}*/ }*/
return maxDiff; return maxDiff;
} }
@Override @Override
public Model constructInducedModel(MDStrategy strat) public Model constructInducedModel(MDStrategy strat)
{ {

6
prism/src/explicit/MDPSimple.java

@ -508,7 +508,7 @@ public class MDPSimple extends MDPExplicit implements NondetModelSimple
} }
// Accessors (for NondetModel) // Accessors (for NondetModel)
@Override @Override
public int getNumChoices(int s) public int getNumChoices(int s)
{ {
@ -547,13 +547,13 @@ public class MDPSimple extends MDPExplicit implements NondetModelSimple
{ {
return trans.get(s).get(i).isSubsetOf(set); return trans.get(s).get(i).isSubsetOf(set);
} }
@Override @Override
public boolean someSuccessorsInSet(int s, int i, BitSet set) public boolean someSuccessorsInSet(int s, int i, BitSet set)
{ {
return trans.get(s).get(i).containsOneOf(set); return trans.get(s).get(i).containsOneOf(set);
} }
// Accessors (for MDP) // Accessors (for MDP)
@Override @Override

5
prism/src/explicit/NondetModel.java

@ -59,6 +59,11 @@ public interface NondetModel extends Model
*/ */
public Object getAction(int s, int i); public Object getAction(int s, int i);
/**
* Do all choices in in each state have a unique action label?
*/
public boolean areAllChoiceActionsUnique();
/** /**
* Check if all the successor states from choice {@code i} of state {@code s} are in the set {@code set}. * Check if all the successor states from choice {@code i} of state {@code s} are in the set {@code set}.
* @param s The state to check * @param s The state to check

6
prism/src/explicit/STPGAbstrSimple.java

@ -487,6 +487,12 @@ public class STPGAbstrSimple extends ModelExplicit implements STPG, NondetModelS
return null; return null;
} }
@Override
public boolean areAllChoiceActionsUnique()
{
throw new RuntimeException("Not implemented");
}
@Override @Override
public boolean allSuccessorsInSet(int s, int i, BitSet set) public boolean allSuccessorsInSet(int s, int i, BitSet set)
{ {

7
prism/src/explicit/SubNondetModel.java

@ -31,6 +31,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet; import java.util.BitSet;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -294,6 +295,12 @@ public class SubNondetModel implements NondetModel {
return model.getAction(s, i); return model.getAction(s, i);
} }
@Override
public boolean areAllChoiceActionsUnique()
{
throw new RuntimeException("Not implemented");
}
@Override @Override
public boolean allSuccessorsInSet(int s, int i, BitSet set) { public boolean allSuccessorsInSet(int s, int i, BitSet set) {
s = translateState(s); s = translateState(s);

Loading…
Cancel
Save