forge.solve
Class Step

java.lang.Object
  extended by forge.solve.Step
All Implemented Interfaces:
CFGElement, ProgramElement
Direct Known Subclasses:
Step.Branch, Step.Update

public abstract class Step
extends java.lang.Object
implements CFGElement

A step in a trace. There are exactly two types of steps: Update and Branch. If a step is a update step, then isBranch returns false and the return type of stmt is UpdateStmt. If a step is a branch step, then isBranch returns true and the return type of stmt is BranchStmt.

Author:
Greg Dennis (gdennis@mit.edu)

Nested Class Summary
static class Step.Branch
          A branch step: a BranchStmt and a truth value.
static class Step.Call
          A call step: an CallStmt with its own trace.
static class Step.Update
          An update step: an UpdateStmt and an effect.
 
Method Summary
 ForgeCFG cfg()
          Returns the cfg to which this element belongs.
abstract  boolean isBranch()
           
 ForgeProgram program()
          Returns the program to which this element belongs.
abstract  CFGStmt stmt()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

program

public final ForgeProgram program()
Description copied from interface: ProgramElement
Returns the program to which this element belongs.

Specified by:
program in interface ProgramElement

cfg

public final ForgeCFG cfg()
Description copied from interface: CFGElement
Returns the cfg to which this element belongs.

Specified by:
cfg in interface CFGElement

isBranch

public abstract boolean isBranch()

stmt

public abstract CFGStmt stmt()