Browse Source

Deadlock info preserved in explicit model copies.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@4595 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 14 years ago
parent
commit
80f8605a1e
  1. 14
      prism/src/explicit/MDPSparse.java
  2. 6
      prism/src/explicit/Model.java
  3. 6
      prism/src/explicit/ModelExplicit.java

14
prism/src/explicit/MDPSparse.java

@ -86,10 +86,7 @@ public class MDPSparse extends MDPExplicit
int i, j, k, n; int i, j, k, n;
TreeMap<Integer, Double> sorted = null; TreeMap<Integer, Double> sorted = null;
initialise(mdp.getNumStates()); initialise(mdp.getNumStates());
for (int in : mdp.getInitialStates()) {
addInitialState(in);
}
statesList = mdp.getStatesList();
copyFrom(mdp);
// Copy stats // Copy stats
numDistrs = mdp.getNumChoices(); numDistrs = mdp.getNumChoices();
numTransitions = mdp.getNumTransitions(); numTransitions = mdp.getNumTransitions();
@ -154,11 +151,7 @@ public class MDPSparse extends MDPExplicit
TreeMap<Integer, Double> sorted = null; TreeMap<Integer, Double> sorted = null;
int permutInv[]; int permutInv[];
initialise(mdp.getNumStates()); initialise(mdp.getNumStates());
for (int in : mdp.getInitialStates()) {
addInitialState(permut[in]);
}
// Don't copy states list (it will be wrong)
statesList = null;
copyFrom(mdp, permut);
// Copy stats // Copy stats
numDistrs = mdp.getNumChoices(); numDistrs = mdp.getNumChoices();
numTransitions = mdp.getNumTransitions(); numTransitions = mdp.getNumTransitions();
@ -226,6 +219,9 @@ public class MDPSparse extends MDPExplicit
for (int in : mdp.getInitialStates()) { for (int in : mdp.getInitialStates()) {
addInitialState(in); addInitialState(in);
} }
for (int dl : mdp.getDeadlockStates()) {
addDeadlockState(dl);
}
statesList = new ArrayList<State>(); statesList = new ArrayList<State>();
for (int s : states) { for (int s : states) {
statesList.add(mdp.getStatesList().get(s)); statesList.add(mdp.getStatesList().get(s));

6
prism/src/explicit/Model.java

@ -81,6 +81,12 @@ public interface Model
*/ */
public int getNumDeadlockStates(); public int getNumDeadlockStates();
/**
* Get iterator over states that are/were deadlocks.
* (Such states may have been fixed at build-time by adding self-loops)
*/
public Iterable<Integer> getDeadlockStates();
/** /**
* Check whether a state is/was deadlock. * Check whether a state is/was deadlock.
* (Such states may have been fixed at build-time by adding self-loops) * (Such states may have been fixed at build-time by adding self-loops)

6
prism/src/explicit/ModelExplicit.java

@ -188,6 +188,12 @@ public abstract class ModelExplicit implements Model
return deadlocks.size(); return deadlocks.size();
} }
@Override
public Iterable<Integer> getDeadlockStates()
{
return deadlocks;
}
@Override @Override
public boolean isDeadlockState(int i) public boolean isDeadlockState(int i)
{ {

Loading…
Cancel
Save