|
|
@ -28,6 +28,7 @@ package prism; |
|
|
|
|
|
|
|
|
import java.io.*; |
|
|
import java.io.*; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
|
|
|
import java.util.Map.Entry; |
|
|
|
|
|
|
|
|
import jdd.*; |
|
|
import jdd.*; |
|
|
import odd.*; |
|
|
import odd.*; |
|
|
@ -85,6 +86,12 @@ public class ProbModel implements Model |
|
|
// names for all dd vars used |
|
|
// names for all dd vars used |
|
|
protected Vector<String> ddVarNames; |
|
|
protected Vector<String> ddVarNames; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* A map from label to state set, optionally storing a state set |
|
|
|
|
|
* for a given label directly in the model. |
|
|
|
|
|
*/ |
|
|
|
|
|
protected Map<String, JDDNode> labelsDD = new TreeMap<String, JDDNode>(); |
|
|
|
|
|
|
|
|
protected ODDNode odd; // odd |
|
|
protected ODDNode odd; // odd |
|
|
|
|
|
|
|
|
// accessor methods |
|
|
// accessor methods |
|
|
@ -353,6 +360,18 @@ public class ProbModel implements Model |
|
|
return allDDColVars; |
|
|
return allDDColVars; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public JDDNode getLabelDD(String label) |
|
|
|
|
|
{ |
|
|
|
|
|
return labelsDD.get(label); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Set<String> getLabels() |
|
|
|
|
|
{ |
|
|
|
|
|
return Collections.unmodifiableSet(labelsDD.keySet()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// additional useful methods to do with dd vars |
|
|
// additional useful methods to do with dd vars |
|
|
public int getNumDDRowVars() |
|
|
public int getNumDDRowVars() |
|
|
{ |
|
|
{ |
|
|
@ -446,6 +465,13 @@ public class ProbModel implements Model |
|
|
this.numSynchs = synchs.size(); |
|
|
this.numSynchs = synchs.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public void addLabelDD(String label, JDDNode labelDD) |
|
|
|
|
|
{ |
|
|
|
|
|
JDDNode old = labelsDD.put(label, labelDD); |
|
|
|
|
|
if (old != null) JDD.Deref(old); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Reset transition matrix DD. |
|
|
* Reset transition matrix DD. |
|
|
* Note: Update reachable states and call {@code filterReachableStates} |
|
|
* Note: Update reachable states and call {@code filterReachableStates} |
|
|
@ -904,6 +930,11 @@ public class ProbModel implements Model |
|
|
*/ |
|
|
*/ |
|
|
public void clear() |
|
|
public void clear() |
|
|
{ |
|
|
{ |
|
|
|
|
|
for (Entry<String, JDDNode> labelDD : labelsDD.entrySet()) { |
|
|
|
|
|
JDD.Deref(labelDD.getValue()); |
|
|
|
|
|
} |
|
|
|
|
|
labelsDD.clear(); |
|
|
|
|
|
|
|
|
if (varDDRowVars != null) |
|
|
if (varDDRowVars != null) |
|
|
JDDVars.derefAllArray(varDDRowVars); |
|
|
JDDVars.derefAllArray(varDDRowVars); |
|
|
if (varDDColVars != null) |
|
|
if (varDDColVars != null) |
|
|
@ -941,4 +972,5 @@ public class ProbModel implements Model |
|
|
odd = null; |
|
|
odd = null; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |