|
JML | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.jmlspecs.jmlrac.qexpr.QSet
An abstract class that represetns qsets of quantified expressions. A qset of a quantified expression is a static, conservative, approximation of the set of all objects that need be examined to determine the truth of the quantified expression. To decide the truth of the quantified expression, each element of the qset is bound and the quantified expression is evaluated. The qset classes are organized with the Composite Pattern [GoF95].
{abstract} QSet
+- Top ^
+- Leaf |left, right
+- Composite -+
+- Union
+- Intersection
| Nested Class Summary | |
private static class |
QSet.Composite
An abstract qset class consisting of two other qset objects, e.g., union or intersection qsets. |
private static class |
QSet.Intersection
A concrete qset class representating a qset that is an intersection of two qsets. |
private static class |
QSet.Leaf
A concrete qset class consisting of only one JML expression. |
private static class |
QSet.Top
A special, concrete qset class that represents the universe of all objects. |
private static class |
QSet.Union
A concrete qset class representating a union of two qsets. |
| Field Summary | |
private static CClassType |
JAVA_COLLECTION
Java collection type recognized in translating quantified expressions. |
private static CClassType |
JML_COLLECTION
JML model collection type recognized in translating quantified expressions. |
static QSet |
TOP
|
| Fields inherited from interface org.jmlspecs.jmlrac.RacConstants |
MN_CHECK_HC, MN_CHECK_INV, MN_CHECK_POST, MN_CHECK_PRE, MN_CHECK_XPOST, MN_EVAL_OLD, MN_GHOST, MN_INIT, MN_INTERNAL, MN_MODEL, MN_MODEL_PUBLIC, MN_RESTORE_FROM, MN_SAVE_TO, MN_SPEC, MN_SPEC_PUBLIC, TN_JMLCHECKABLE, TN_JMLSURROGATE, TN_JMLUNIT_TEST_POSTFIX, TN_JMLUNIT_TESTDATA_POSTFIX, TN_JMLVALUE, TN_SURROGATE, VN_ASSERTION, VN_CATCH_VAR, VN_CLASS_INIT, VN_CONSTRUCTED, VN_DELEGEE, VN_ERROR_SET, VN_EXCEPTION, VN_FREE_VAR, VN_INIT, VN_OLD_VAR, VN_POST_VAR, VN_PRE_VAR, VN_PRECOND, VN_RAC_COMPILED, VN_RAC_LEVEL, VN_RESULT, VN_STACK_VAR, VN_XRESULT |
| Fields inherited from interface org.multijava.mjc.Constants |
ACC_PURE, AMID_JAVA_MATH, AMID_MAX, AMID_SAFE_MATH, CMP_VERSION, JAV_ASSERTION_ERROR, JAV_CLASS, JAV_CLASSLOADER, JAV_CLASSNOTFOUND_EXCEPTION, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_NOCLASSDEFFOUND_ERROR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RMJ_RUNTIME_EXCEPTION, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_SERIALIZABLE, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_SUPER, JAV_THIS, JAV_THROWABLE, MJ_ANCHOR, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LAND, OPE_LE, OPE_LNOT, OPE_LOR, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_MAX, TID_SHORT, TID_VOID, UNIV_ARRAY_TMP, UNIV_TMP |
| Constructor Summary | |
(package private) |
QSet()
|
| Method Summary | |
static QSet |
build(JExpression expr,
String var)
Returns a new qset built from a JML expression and a quantified variable. |
private static QSet |
calculate(JExpression expr,
String var)
Returns the qset of an expression expr
with respect to the quantified variable var. |
private static QSet |
calculate(JMethodCallExpression expr,
String var)
Returns the qset of a method call expression expr with respect to the quantified variable
var. |
private static void |
initCollectionTypes()
Initializes collection types such as java.lang.Collection and
JMLCollection recognized in translating quantified
expressions. |
QSet |
intersect(QSet s)
Returns a qset representing the intersection of this and argument. |
boolean |
isTop()
Is this a special qset TOP? |
abstract RacNode |
translate(VarGenerator varGen,
String resultVar,
TransExpression transExp)
Returns Java source code that computes the qset represented by this object. |
QSet |
union(QSet s)
Returns a qset representing the union of this and argument. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public static final QSet TOP
private static CClassType JAVA_COLLECTION
private static CClassType JML_COLLECTION
| Constructor Detail |
QSet()
| Method Detail |
public static QSet build(JExpression expr,
String var)
throws NonExecutableQuantifierException
NonExecutableQuantifierExceptionpublic QSet union(QSet s)
public QSet intersect(QSet s)
public boolean isTop()
TOP?
private static QSet calculate(JExpression expr,
String var)
throws NonExecutableQuantifierException
expr
with respect to the quantified variable var.
A qset for a quantified expression is a static, conservative,
approximation of the set of all objects that need be examined
to determine the truth of the quantified expression. To decide
the truth of the quantified expression, each element of the qset
is bound and the quantified expression is evaluated.
expr - the expression whose qset is being computed.var - the name of the quantified variable with respect to it
the qset is computed.
expr with repect to
the quantified variable var.
Q[[p && q]] == Q[[p]] intersect Q[[q]]
Q[[p || q]] == Q[[p]] union Q[[q]]
Q[[e.contains(x)]] ==
e if e is of type Collection and x equals to var.
TOP otherwise
Q[[ ... ]] == TOP
NonExecutableQuantifierException
private static QSet calculate(JMethodCallExpression expr,
String var)
expr with respect to the quantified variable
var.
expr - the method call expression whose qset is being computed.var - the name of the quantified variable with respect to it
the qset is computed.
expr with repect to
the quantified variable var.
Q[[e.contains(x)]] ==
e if e is of type Collection and x equals to var.
TOP otherwise
public abstract RacNode translate(VarGenerator varGen,
String resultVar,
TransExpression transExp)
throws NonExecutableQuantifierException
varGen - the variable generator to be used in the translation for
generating unique local variables.resultVar - the variable name to refer to the qset object
in the translated code.transExp - the translator to use for translating JML expressions.
NonExecutableQuantifierExceptionprivate static void initCollectionTypes()
java.lang.Collection and
JMLCollection recognized in translating quantified
expressions.
|
JML | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||