Browse Source

A-R loop output tidy + bugfix (in PRISM version).

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@1764 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 16 years ago
parent
commit
4f3d2090e8
  1. 18
      prism/src/explicit/PrismSTPGAbstractRefine.java
  2. 11
      prism/src/explicit/STPGAbstractRefine.java

18
prism/src/explicit/PrismSTPGAbstractRefine.java

@ -126,6 +126,11 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine
if (!existsInitial)
throw new PrismException("No non-target initial states");
if (verbosity >= 10) {
mainLog.print("Initial concreteToAbstract: ");
mainLog.println(concreteToAbstract);
}
// Create (empty) abstraction and store initial states info
nAbstract = existsRest ? 3 : 2;
switch (modelType) {
@ -180,7 +185,6 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine
list.add(new HashSet<Integer>(1));
list.get(j).add(c);
}
//mainLog.println(abstraction);
}
/**
@ -255,10 +259,11 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine
}
i++;
}
/*log.print("concreteToAbstract:");
for (i = 0; i < nConcrete; i++)
log.print(" " + i + "=" + concreteToAbstract[i]);
log.println();*/
if (verbosity >= 10) {
mainLog.print("New concreteToAbstract: ");
mainLog.println(concreteToAbstract);
}
// TODO: who should do this?
// Add new states to the abstraction
@ -272,7 +277,7 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine
}
for (i = 0; i < nAbstract; i++) {
if (i == splitState || abstraction.isSuccessor(splitState, i))
if (i == splitState || abstraction.isSuccessor(i, splitState))
rebuildAbstractionState(i);
}
for (i = 1; i < numNewStates; i++) {
@ -309,6 +314,7 @@ public class PrismSTPGAbstractRefine extends STPGAbstractRefine
for (int c : concreteStates) {
a = concreteToAbstract[c];
// ASSERT: a = i ???
if (a != i) throw new PrismException("Oops");
switch (modelType) {
case DTMC:
distr = buildAbstractDistribution(c, (DTMC) modelConcrete);

11
prism/src/explicit/STPGAbstractRefine.java

@ -425,7 +425,7 @@ public abstract class STPGAbstractRefine
mainLog.println(abstractionType + " constructed in " + (timer / 1000.0) + " secs.");
timeBuild += timer / 1000.0;
mainLog.println(abstractionType + ": " + abstraction.infoString());
if (verbosity >= 5) {
if (verbosity >= 10) {
mainLog.println(abstractionType + ": " + abstraction);
}
@ -451,6 +451,9 @@ public abstract class STPGAbstractRefine
break;
refinementNum++;
refine(refineStates);
if (verbosity >= 10) {
mainLog.println(abstractionType + ": " + abstraction);
}
}
// Finish up
@ -477,6 +480,7 @@ public abstract class STPGAbstractRefine
while (i < n) {
// Pick next state
i = (known == null) ? i + 1 : known.nextClearBit(i + 1);
// TODO: check use of nextClearBit here
if (i < 0)
break;
@ -563,12 +567,11 @@ public abstract class STPGAbstractRefine
known.set(i, PrismUtils.doublesAreClose(ubSoln[i], lbSoln[i], refineTermCritParam,
refineTermCrit == RefineTermCrit.ABSOLUTE));
}
mainLog.println(known.cardinality() + "/" + n + " states converged.");
// Compute bounds for initial states
lbInit = ubInit = min ? Double.POSITIVE_INFINITY : Double.NEGATIVE_INFINITY;
for (int j : abstraction.getInitialStates()) {
if (verbosity >= 5)
if (verbosity >= 10)
mainLog.println("Init " + j + ": " + lbSoln[j] + "-" + ubSoln[j]);
if (min) {
lbInit = Math.min(lbInit, lbSoln[j]);
@ -585,6 +588,7 @@ public abstract class STPGAbstractRefine
mainLog.println(abstractionType + " model checked in " + (timer / 1000.0) + " secs.");
// Display results
mainLog.println(known.cardinality() + "/" + n + " states converged.");
numInitialStates = abstraction.getNumInitialStates();
mainLog.print("Diff across ");
mainLog.print(numInitialStates + " initial state" + (numInitialStates == 1 ? "" : "s") + ": ");
@ -845,6 +849,7 @@ public abstract class STPGAbstractRefine
if (ubSoln[i] - lbSoln[i] >= bound && abstraction.getNumChoices(i) > 1)
refinableStates.add(i);
}
mainLog.println(refinableStates.size() + " refineable states.");
if (verbosity >= 1) {
mainLog.println("Refinable states: " + refinableStates);
}

Loading…
Cancel
Save