Patent ID: 7757219

Claim:
A computer-implemented method for analyzing a program, comprising: receiving a graph having a set of vertices; initializing sets of path edges, sets of summary edges that record input/output behavior of procedures, and a work list; removing a vertex having a type from the work list; analyzing the vertex based on the type so as to determine the reachability status of the vertex in the set of vertices, wherein analyzing includes updating a set of path edges associated with the vertex by using a transfer function associated with the vertex to form an implicit representation of the vertex by resolving the vertex to a true or false value based on the input/output behavior recorded in the summary edges, wherein updating includes executing the following acts: receiving a vertex argument and a path edge argument, forming a union of the set of path edges associated with the vertex argument and the path edge argument if the path edge argument is not a subset of the set of path edges associated with the vertex argument, and inserting the vertex argument into the work list; and displaying, on a display of a computer, a shortest trace to the vertex that is reachable, wherein the display of the shortest trace includes a depth of a call stack of the program and identifying the call stack at each point in the trace, wherein each point in the trace includes a state of each variable of the program that is in scope.