com.ibm.wala.fixpoint
Interface IFixedPointStatement<T extends IVariable>

All Superinterfaces:
INodeWithNumber
All Known Implementing Classes:
AbstractStatement, AssignEquation, BasicNullaryStatement, BasicUnaryStatement, GeneralStatement, NullaryStatement, UnaryStatement

public interface IFixedPointStatement<T extends IVariable>
extends INodeWithNumber

The general form of a statement definition in an iterative solver is: x >= term, where term can be any complex expression whose free variables are among the IVariables of the constraint system this IFixedPointStatementis part of (x represents the left-hand side of the constraint). The interpretation of term (the right-hand side of the constraint) must be monotone.

The list of free variables in term is obtained by invoking getRHS(), and the left hand side variable is obtained by calling getLHS().

Intuitively, a statement definition corresponds to an "equation" in dataflow parlance, or a "constraint" in constraint solvers.


Method Summary
 byte evaluate()
          Evaluate this statement, setting a new value for the left-hand side.
 T getLHS()
           
 IVariable[] getRHS()
          returns the list of free variables appearing in the right-hand side of the statement
 boolean hasVariable(T v)
          Does this statement definition contain an appearance of a given variable?
 
Methods inherited from interface com.ibm.wala.util.graph.INodeWithNumber
getGraphNodeId, setGraphNodeId
 

Method Detail

getLHS

T getLHS()
Returns:
the left-hand side of this statement.

getRHS

IVariable[] getRHS()
returns the list of free variables appearing in the right-hand side of the statement


evaluate

byte evaluate()
Evaluate this statement, setting a new value for the left-hand side. The return value is one of the following:


hasVariable

boolean hasVariable(T v)
Does this statement definition contain an appearance of a given variable?

Parameters:
v - the variable in question