|
|
|
@ -34,7 +34,7 @@ public class AccumulationTransformation<M extends ModelExplicit> implements Mode |
|
|
|
public AccumulationTransformation( |
|
|
|
StateModelChecker mc, |
|
|
|
M originalModel, Expression expr, |
|
|
|
BitSet statesOfInterest) throws PrismException{ |
|
|
|
BitSet statesOfInterest, boolean forceComplex) throws PrismException{ |
|
|
|
super(); |
|
|
|
this.originalExpression = expr; |
|
|
|
this.originalModel = originalModel; |
|
|
|
@ -45,7 +45,15 @@ public class AccumulationTransformation<M extends ModelExplicit> implements Mode |
|
|
|
this.runLabels = new ArrayList<>(); |
|
|
|
this.goalLabels = new ArrayList<>(); |
|
|
|
|
|
|
|
doTransformation(); |
|
|
|
doTransformation(forceComplex); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public AccumulationTransformation( |
|
|
|
StateModelChecker mc, |
|
|
|
M originalModel, Expression expr, |
|
|
|
BitSet statesOfInterest) throws PrismException{ |
|
|
|
this(mc, originalModel, expr, statesOfInterest, false); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@ -76,7 +84,7 @@ public class AccumulationTransformation<M extends ModelExplicit> implements Mode |
|
|
|
return product.projectToOriginalModel(svTransformedModel); |
|
|
|
} |
|
|
|
|
|
|
|
protected void doTransformation() throws PrismException { |
|
|
|
protected void doTransformation(boolean forceComplexFlag) throws PrismException { |
|
|
|
StopWatch clock = new StopWatch(mc.getLog()); |
|
|
|
|
|
|
|
mc.getLog().println("Handling maximal state formulas..."); |
|
|
|
@ -119,7 +127,7 @@ public class AccumulationTransformation<M extends ModelExplicit> implements Mode |
|
|
|
// Figure out if we need a complex or a simple trafo... |
|
|
|
boolean isSimple = !accexp.hasFireOn() && accexp.isNullary(); |
|
|
|
boolean isPast = accexp.getSymbol().isMinus(); |
|
|
|
boolean forceComplex = mc.getSettings().getBoolean(PrismSettings.ACC_FORCE_COMPLEX); |
|
|
|
boolean forceComplex = mc.getSettings().getBoolean(PrismSettings.ACC_FORCE_COMPLEX) || forceComplexFlag; |
|
|
|
boolean forceMulti = mc.getSettings().getBoolean(PrismSettings.ACC_FORCE_MULTI); |
|
|
|
|
|
|
|
if(forceComplex && isPast) { |
|
|
|
|