Browse Source

Acceptance: add outputHOAHeader()

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10532 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Joachim Klein 10 years ago
parent
commit
f449803020
  1. 32
      prism/src/acceptance/AcceptanceGenRabin.java
  2. 49
      prism/src/acceptance/AcceptanceGeneric.java
  3. 4
      prism/src/acceptance/AcceptanceOmega.java
  4. 18
      prism/src/acceptance/AcceptanceRabin.java
  5. 7
      prism/src/acceptance/AcceptanceReach.java
  6. 18
      prism/src/acceptance/AcceptanceStreett.java

32
prism/src/acceptance/AcceptanceGenRabin.java

@ -27,6 +27,7 @@
package acceptance;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.BitSet;
@ -333,4 +334,35 @@ public class AcceptanceGenRabin
{
return "Generalized Rabin";
}
@Override
public void outputHOAHeader(PrintStream out)
{
int sets = 0;
out.print("acc-name: generalized-Rabin "+size());
for (GenRabinPair pair : this) {
sets++; // the Fin
out.print(" "+pair.getNumK());
sets += pair.getNumK();
}
out.println();
out.print("Acceptance: " + sets);
if (sets == 0) {
out.println("f");
return;
}
int set_index = 0;
for (GenRabinPair pair : this) {
if (set_index > 0) out.print(" | ");
out.print("( Fin(" + set_index + ")");
set_index++;
for (int i = 0; i < pair.getNumK(); i++) {
out.print(" & Inf(" + set_index +")");
set_index++;
}
out.print(")");
}
out.println();
}
}

49
prism/src/acceptance/AcceptanceGeneric.java

@ -27,6 +27,7 @@
package acceptance;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Collections;
@ -363,5 +364,53 @@ public class AcceptanceGeneric implements AcceptanceOmega {
}
}
@Override
public void outputHOAHeader(PrintStream out)
{
List<AcceptanceGeneric> leafNodes = getLeafNodes();
out.print("Acceptance: "+leafNodes.size()+" ");
outputHOAFormula(out, 0);
out.println();
}
private int outputHOAFormula(PrintStream out, int nextSetIndex)
{
switch (kind) {
case AND:
out.print("(");
nextSetIndex = left.outputHOAFormula(out, nextSetIndex);
out.print(")&(");
nextSetIndex = right.outputHOAFormula(out, nextSetIndex);
out.print(")");
return nextSetIndex;
case OR:
out.print("(");
nextSetIndex = left.outputHOAFormula(out, nextSetIndex);
out.print(")|(");
nextSetIndex = right.outputHOAFormula(out, nextSetIndex);
out.print(")");
return nextSetIndex;
case TRUE:
out.print("t");
return nextSetIndex;
case FALSE:
out.print("f");
return nextSetIndex;
case FIN:
out.print("Fin("+nextSetIndex+")");
return nextSetIndex+1;
case FIN_NOT:
out.print("Fin(!"+nextSetIndex+")");
return nextSetIndex+1;
case INF:
out.print("Inf("+nextSetIndex+")");
return nextSetIndex+1;
case INF_NOT:
out.print("Inf(!"+nextSetIndex+")");
return nextSetIndex+1;
}
throw new UnsupportedOperationException("Unknown kind");
}
}

4
prism/src/acceptance/AcceptanceOmega.java

@ -26,6 +26,7 @@
package acceptance;
import java.io.PrintStream;
import java.util.BitSet;
import prism.PrismException;
@ -66,6 +67,9 @@ public interface AcceptanceOmega extends Cloneable
/** Returns a full name for this acceptance condition */
public String getTypeName();
/** Print the appropriate Acceptance (and potentially acc-name) header */
public void outputHOAHeader(PrintStream out);
/** Make a copy of the acceptance condition. */
public AcceptanceOmega clone();

18
prism/src/acceptance/AcceptanceRabin.java

@ -26,6 +26,7 @@
package acceptance;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.BitSet;
@ -317,4 +318,21 @@ public class AcceptanceRabin
{
return "Rabin";
}
@Override
public void outputHOAHeader(PrintStream out)
{
out.println("acc-name: Rabin "+size());
out.print("Acceptance: " + (size()*2)+" ");
if (size() == 0) {
out.println("f");
return;
}
for (int pair = 0; pair < size(); pair++) {
if (pair > 0) out.print(" | ");
out.print("( Fin(" + 2*pair + ") & Inf(" + (2*pair+1) +") )");
}
out.println();
}
}

7
prism/src/acceptance/AcceptanceReach.java

@ -26,6 +26,7 @@
package acceptance;
import java.io.PrintStream;
import java.util.BitSet;
import prism.PrismException;
@ -192,4 +193,10 @@ public class AcceptanceReach implements AcceptanceOmega
return "Finite";
}
@Override
public void outputHOAHeader(PrintStream out)
{
out.println("acc-name: Buchi");
out.println("Acceptance: 1 Inf(0)");
}
}

18
prism/src/acceptance/AcceptanceStreett.java

@ -26,6 +26,7 @@
package acceptance;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.BitSet;
@ -319,4 +320,21 @@ public class AcceptanceStreett
{
return "Streett";
}
@Override
public void outputHOAHeader(PrintStream out)
{
out.println("acc-name: Streett "+size());
out.print("Acceptance: " + (size()*2)+" ");
if (size() == 0) {
out.println("t");
return;
}
for (int pair = 0; pair < size(); pair++) {
if (pair > 0) out.print(" & ");
out.print("( Fin(" + (2*pair) + ") | Inf(" + (2*pair+1) +") )");
}
out.println();
}
}
Loading…
Cancel
Save