You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

120 lines
2.9 KiB

//==============================================================================
//
// Copyright (c) 2007 Carlos Bederian
//
// This file is part of PRISM.
//
// PRISM is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// PRISM is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with PRISM; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
//==============================================================================
package jltl2ba;
import java.util.BitSet;
/**
* Class representing an element of 2^AP.
*/
public class APElement extends MyBitSet {
public APElement() {
super();
}
public APElement(int size) {
super(size);
}
public APElement(MyBitSet m) {
super(m.size());
for (Integer i : m) {
this.set(i);
}
}
public String toString(APSet ap_set, boolean spaces)
{
if (ap_set.size()==0) {return "true";}
String r = "";
for (int i = 0; i < ap_set.size(); i++) {
if (i>=1) {
r += "&";
}
if (!this.get(i)) {
r += "!";
} else {
if (spaces) {
r +=" ";
}
}
r += ap_set.getAP(i);
}
return r;
}
/**
* Return a string representation of this APElement in LBTT format (transition label)
* @param ap_set the underlying AP set
*/
public String toStringLBTT(APSet ap_set)
{
if (ap_set.size()==0) {return "t";}
StringBuilder sb = new StringBuilder();
for (int i = 1; i < ap_set.size(); i++) {
sb.append("& ");
}
for (int i = 0; i < ap_set.size(); i++) {
if (!this.get(i)) {
sb.append("!");
}
sb.append(ap_set.getAP(i));
sb.append(" ");
}
return sb.toString();
}
/**
* Return a string representation of this APElement in HOA format (transition label)
* @param apSetSize the size of the underlying AP set
*/
public String toStringHOA(int apSetSize)
{
return toStringHOA(this, apSetSize);
}
/**
* Return a string representation of a transition label in HOA format,
* where the active/inactive APs are given as a BitSet.
* @param label the set of APs that are active
* @param apSetSize the size of the underlying AP set
*/
public static String toStringHOA(BitSet label, int apSetSize)
{
if (apSetSize == 0) {
return "t";
}
StringBuilder sb = new StringBuilder();
for (int i=0; i < apSetSize; i++) {
if (i > 0) sb.append("&");
if (label.get(i)) {
sb.append(" "+i);
} else {
sb.append("!"+i);
}
}
return sb.toString();
}
}