diff --git a/prism/src/explicit/MDP.java b/prism/src/explicit/MDP.java index 30a4d525..a3a4547c 100644 --- a/prism/src/explicit/MDP.java +++ b/prism/src/explicit/MDP.java @@ -39,6 +39,7 @@ import java.util.TreeMap; import java.util.PrimitiveIterator.OfInt; import common.IterableStateSet; +import common.IteratorTools; import explicit.graphviz.Decorator; import explicit.rewards.MCRewards; import explicit.rewards.MDPRewards; @@ -179,6 +180,12 @@ public interface MDP extends MDPGeneric // Accessors (for NondetModel) - default implementations + @Override + default int getNumTransitions(final int s, final int i) + { + return IteratorTools.count(getTransitionsIterator(s, i)); + } + @Override default void exportToDotFileWithStrat(PrismLog out, BitSet mark, int strat[]) { diff --git a/prism/src/explicit/NondetModel.java b/prism/src/explicit/NondetModel.java index ab730993..65624a4f 100644 --- a/prism/src/explicit/NondetModel.java +++ b/prism/src/explicit/NondetModel.java @@ -48,12 +48,26 @@ public interface NondetModel extends Model /** * Get the maximum number of nondeterministic choices in any state. */ - public int getMaxNumChoices(); + default int getMaxNumChoices() + { + int maxNumChoices = 0; + for (int state = 0, numStates = getNumStates(); state < numStates; state++) { + maxNumChoices = Math.max(maxNumChoices, getNumChoices(state)); + } + return maxNumChoices; + } /** * Get the total number of nondeterministic choices over all states. */ - public int getNumChoices(); + default int getNumChoices() + { + int numChoices = 0; + for (int state = 0, numStates = getNumStates(); state < numStates; state++) { + numChoices += getNumChoices(state); + } + return numChoices; + } /** * Get the action label (if any) for choice {@code i} of state {@code s}. diff --git a/prism/src/explicit/modelviews/DTMCView.java b/prism/src/explicit/modelviews/DTMCView.java index 63a95e6f..cc866236 100644 --- a/prism/src/explicit/modelviews/DTMCView.java +++ b/prism/src/explicit/modelviews/DTMCView.java @@ -34,7 +34,6 @@ import java.util.PrimitiveIterator; import java.util.function.IntFunction; import common.IterableStateSet; -import common.IteratorTools; import common.iterable.MappingIterator; import explicit.DTMC; import explicit.Distribution; @@ -95,12 +94,6 @@ public abstract class DTMCView extends ModelView implements DTMC, Cloneable //--- Model --- - @Override - public int getNumTransitions(final int s) - { - return IteratorTools.count(getTransitionsIterator(s)); - } - @Override public SuccessorsIterator getSuccessors(final int state) { diff --git a/prism/src/explicit/modelviews/MDPView.java b/prism/src/explicit/modelviews/MDPView.java index 184d39f3..b6ddd70a 100644 --- a/prism/src/explicit/modelviews/MDPView.java +++ b/prism/src/explicit/modelviews/MDPView.java @@ -32,7 +32,6 @@ import java.util.Iterator; import java.util.Map.Entry; import java.util.PrimitiveIterator; -import common.IteratorTools; import explicit.DTMCFromMDPAndMDStrategy; import explicit.Distribution; import explicit.MDP; @@ -93,16 +92,6 @@ public abstract class MDPView extends ModelView implements MDP, Cloneable //--- Model --- - @Override - public int getNumTransitions(int s) - { - int numTransitions = 0; - for (int j = 0, numChoices = getNumChoices(s); j < numChoices; j++) { - numTransitions += getNumTransitions(s, j); - } - return numTransitions; - } - @Override public String infoString() { @@ -129,26 +118,6 @@ public abstract class MDPView extends ModelView implements MDP, Cloneable //--- NondetModel --- - @Override - public int getNumChoices() - { - int numChoices = 0; - for (int state = 0, numStates = getNumStates(); state < numStates; state++) { - numChoices += getNumChoices(state); - } - return numChoices; - } - - @Override - public int getMaxNumChoices() - { - int maxNumChoices = 0; - for (int state = 0, numStates = getNumStates(); state < numStates; state++) { - maxNumChoices = Math.max(maxNumChoices, getNumChoices(state)); - } - return maxNumChoices; - } - @Override public boolean areAllChoiceActionsUnique() { @@ -168,12 +137,6 @@ public abstract class MDPView extends ModelView implements MDP, Cloneable return true; } - @Override - public int getNumTransitions(final int state, final int choice) - { - return IteratorTools.count(getTransitionsIterator(state, choice)); - } - @Override public SuccessorsIterator getSuccessors(final int state, final int choice) {