diff --git a/prism/src/prism/StateValues.java b/prism/src/prism/StateValues.java
index d7501945..38e31448 100644
--- a/prism/src/prism/StateValues.java
+++ b/prism/src/prism/StateValues.java
@@ -43,6 +43,20 @@ public interface StateValues extends StateVector
/** Converts to StateValuesMTBDD, destroys (clear) this vector */
StateValuesMTBDD convertToStateValuesMTBDD();
+ /**
+ * Switch the underlying model of this StateValues object.
+ * The new model has to be compatible with the old one,
+ * i.e., it has to have the same row variables and reachable states.
+ *
+ * An example would be to switch between a CTMC and the embedded DTMC,
+ * i.e., where both models by construction have the same structure and state space.
+ *
+ * Note that there are currently no sanity checks, so be careful when
+ * using this method.
+ * @param newModel the new model
+ */
+ void switchModel(Model newModel);
+
/**
* Set the elements of this vector by reading them in from a file.
*/
diff --git a/prism/src/prism/StateValuesDV.java b/prism/src/prism/StateValuesDV.java
index 875d09a0..bcb3c5e1 100644
--- a/prism/src/prism/StateValuesDV.java
+++ b/prism/src/prism/StateValuesDV.java
@@ -123,6 +123,12 @@ public class StateValuesDV implements StateValues
varValues = new int[varList.getNumVars()];
}
+ @Override
+ public void switchModel(Model newModel)
+ {
+ setModel(newModel);
+ }
+
// CONVERSION METHODS
@Override
diff --git a/prism/src/prism/StateValuesMTBDD.java b/prism/src/prism/StateValuesMTBDD.java
index 9855c0f9..100cdd40 100644
--- a/prism/src/prism/StateValuesMTBDD.java
+++ b/prism/src/prism/StateValuesMTBDD.java
@@ -105,6 +105,12 @@ public class StateValuesMTBDD implements StateValues
varValues = new int[varList.getNumVars()];
}
+ @Override
+ public void switchModel(Model newModel)
+ {
+ setModel(newModel);
+ }
+
// CONVERSION METHODS
@Override
diff --git a/prism/src/prism/StateValuesVoid.java b/prism/src/prism/StateValuesVoid.java
index c184f68a..5d7d81db 100644
--- a/prism/src/prism/StateValuesVoid.java
+++ b/prism/src/prism/StateValuesVoid.java
@@ -29,7 +29,6 @@ package prism;
import java.io.File;
import parser.ast.RelOp;
-
import jdd.JDDNode;
import jdd.JDDVars;
@@ -47,6 +46,12 @@ public class StateValuesVoid implements StateValues
this.value = value;
}
+ @Override
+ public void switchModel(Model newModel)
+ {
+ // nothing to do...
+ }
+
@Override
public int getSize()
{