Browse Source

Add default implementation of NondetModel.areAllChoiceActionsUnique().

Copied from MDPExplicit. Removed (mostly) from elsewhere.
accumulation-v4.7
Dave Parker 5 years ago
parent
commit
27269a878c
  1. 6
      prism/src/automata/LTSFromDA.java
  2. 7
      prism/src/explicit/LTSExplicit.java
  3. 22
      prism/src/explicit/MDPExplicit.java
  4. 23
      prism/src/explicit/NondetModel.java
  5. 6
      prism/src/explicit/STPGAbstrSimple.java
  6. 6
      prism/src/explicit/SubNondetModel.java
  7. 7
      prism/src/explicit/modelviews/MDPAdditionalChoices.java
  8. 6
      prism/src/explicit/modelviews/MDPDroppedAllChoices.java
  9. 6
      prism/src/explicit/modelviews/MDPDroppedChoicesCached.java
  10. 20
      prism/src/explicit/modelviews/MDPView.java
  11. 7
      prism/src/param/ParamModel.java

6
prism/src/automata/LTSFromDA.java

@ -164,12 +164,6 @@ public class LTSFromDA extends ModelExplicit implements LTS
return null;
}
@Override
public boolean areAllChoiceActionsUnique()
{
return false;
}
@Override
public int getNumTransitions(int s, int i)
{

7
prism/src/explicit/LTSExplicit.java

@ -89,13 +89,6 @@ public class LTSExplicit extends ModelExplicit implements LTS
return null;
}
@Override
public boolean areAllChoiceActionsUnique()
{
// as we don't assign action labels, they are not unique
return false;
}
@Override
public int getNumTransitions(int s, int i)
{

22
prism/src/explicit/MDPExplicit.java

@ -27,8 +27,6 @@
package explicit;
import java.util.HashSet;
import strat.MDStrategy;
/**
@ -36,26 +34,6 @@ import strat.MDStrategy;
*/
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)
@Override

23
prism/src/explicit/NondetModel.java

@ -27,6 +27,7 @@
package explicit;
import java.util.BitSet;
import java.util.HashSet;
import java.util.Iterator;
import java.util.function.IntPredicate;
@ -76,8 +77,28 @@ public interface NondetModel extends Model
/**
* Do all choices in in each state have a unique action label?
* <br><br>
* NB: "true" does not imply that all choices are labelled,
* e.g., an a-labelled choice and an unlabelled one _are_ considered unique;
* multiple unlabelled choices are _not_ considered unique.
*/
public boolean areAllChoiceActionsUnique();
public default boolean areAllChoiceActionsUnique()
{
int numStates = getNumStates();
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;
}
/**
* Get the number of transitions from choice {@code i} of state {@code s}.

6
prism/src/explicit/STPGAbstrSimple.java

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

6
prism/src/explicit/SubNondetModel.java

@ -289,12 +289,6 @@ public class SubNondetModel implements NondetModel
return model.getAction(sOriginal, iOriginal);
}
@Override
public boolean areAllChoiceActionsUnique()
{
throw new RuntimeException("Not implemented");
}
@Override
public int getNumTransitions(int s, int i)
{

7
prism/src/explicit/modelviews/MDPAdditionalChoices.java

@ -185,13 +185,6 @@ public class MDPAdditionalChoices extends MDPView
return (additional == null) ? null : additional.get(choice - numOriginalChoices);
}
@Override
public boolean areAllChoiceActionsUnique()
{
return model.areAllChoiceActionsUnique() && super.areAllChoiceActionsUnique();
}
//--- MDP ---

6
prism/src/explicit/modelviews/MDPDroppedAllChoices.java

@ -169,12 +169,6 @@ public class MDPDroppedAllChoices extends MDPView
return model.getAction(state, choice);
}
@Override
public boolean areAllChoiceActionsUnique()
{
return model.areAllChoiceActionsUnique() ? true : super.areAllChoiceActionsUnique();
}
@Override
public Iterator<Integer> getSuccessorsIterator(final int state, final int choice)
{

6
prism/src/explicit/modelviews/MDPDroppedChoicesCached.java

@ -186,12 +186,6 @@ public class MDPDroppedChoicesCached extends MDPView
return model.getAction(state, originalChoice);
}
@Override
public boolean areAllChoiceActionsUnique()
{
return model.areAllChoiceActionsUnique() ? true : super.areAllChoiceActionsUnique();
}
@Override
public Iterator<Integer> getSuccessorsIterator(final int state, final int choice)
{

20
prism/src/explicit/modelviews/MDPView.java

@ -27,7 +27,6 @@
package explicit.modelviews;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.PrimitiveIterator;
@ -89,25 +88,6 @@ public abstract class MDPView extends ModelView implements MDP, Cloneable
//--- NondetModel ---
@Override
public boolean areAllChoiceActionsUnique()
{
final HashSet<Object> actions = new HashSet<Object>();
for (int state = 0, numStates = getNumStates(); state < numStates; state++) {
final int numChoices = getNumChoices(state);
if (numChoices <= 1) {
continue;
}
actions.clear();
for (int choice = 0; choice < numChoices; choice++) {
if (!actions.add(getAction(state, choice))) {
return false;
}
}
}
return true;
}
@Override
public SuccessorsIterator getSuccessors(final int state, final int choice)
{

7
prism/src/param/ParamModel.java

@ -429,13 +429,6 @@ public final class ParamModel extends ModelExplicit implements MDPGeneric<Functi
return null;
}
@Override
public boolean areAllChoiceActionsUnique()
{
// we don't know
return false;
}
/**
* Allocates memory for subsequent construction of model.
*

Loading…
Cancel
Save