diff --git a/prism/src/explicit/PrismSTPGAbstractRefine.java b/prism/src/explicit/PrismSTPGAbstractRefine.java index 71539239..d5c3e2c3 100644 --- a/prism/src/explicit/PrismSTPGAbstractRefine.java +++ b/prism/src/explicit/PrismSTPGAbstractRefine.java @@ -132,7 +132,7 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine mainLog.print("Initial concreteToAbstract: "); mainLog.println(concreteToAbstract); } - + // Create (empty) abstraction and store initial states info nAbstract = existsRest ? 3 : 2; switch (modelType) { @@ -261,7 +261,7 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine } i++; } - + if (verbosity >= 10) { mainLog.print("New concreteToAbstract: "); mainLog.println(concreteToAbstract); @@ -316,7 +316,8 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine for (int c : concreteStates) { a = concreteToAbstract[c]; // ASSERT: a = i ??? - if (a != i) throw new PrismException("Oops"); + if (a != i) + throw new PrismException("Oops"); switch (modelType) { case DTMC: distr = buildAbstractDistribution(c, (DTMC) modelConcrete); @@ -357,13 +358,12 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine case PROB_REACH: break; case PROB_REACH_BOUNDED: - res = ((MDPModelChecker) mc).probReachBounded(new MDP((DTMC)modelConcrete), targetConcrete, reachBound, false); -// res = ((MDPModelChecker) mc).probReach((MDP) abstraction, target, true); + res = ((MDPModelChecker) mc).probReachBounded(new MDP((DTMC) modelConcrete), targetConcrete, + reachBound, false); + // res = ((MDPModelChecker) mc).probReach((MDP) abstraction, target, true); break; case EXP_REACH: break; - default: - throw new PrismException("Property type " + propertyType + " not supported"); } break; case CTMC: @@ -376,19 +376,21 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine res = mcTmp.probReach((MDP) modelConcrete, targetConcrete, min); break; case PROB_REACH_BOUNDED: + res = mcTmp.probReachBounded((MDP) modelConcrete, targetConcrete, reachBound, min); break; case EXP_REACH: break; - default: - throw new PrismException("Property type " + propertyType + " not supported"); } break; - default: + } + + // Unhandled cases + if (res == null) { String s = "Cannot do exact model checking for"; s += " model type " + modelType + " and property type " + propertyType; throw new PrismException(s); } - + // Display results for all initial states mainLog.print("Results for initial state(s):"); for (int j : modelConcrete.getInitialStates()) { @@ -398,14 +400,13 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine } // Override this to also print out concrete model details at the end - @Override protected void printFinalSummary(String initAbstractionInfo, boolean canRefine) { mainLog.println("\nConcrete " + modelType + ": " + modelConcrete.infoString()); super.printFinalSummary(initAbstractionInfo, canRefine); } - + public static void main(String args[]) { PrismSTPGAbstractRefine abstractRefine;