Methods for enhancing program analysis
First Claim
Patent Images
1. A system for analyzing a program having multiple statements, comprising:
- a graph generator that uses a model of the program to generate a control-flow graph; and
an analyzer to analyze each vertex of the control-flow graph to determine the reachability of each statement in the program, and wherein the analyzer forms an implicit representation of values of variables at each vertex so as to inhibit computational explosion.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods are discussed that enhance program analysis. One aspect of the invention includes a method for checking a model of a program. The method includes a control-flow graph having vertices from the model, applying a transfer function to each vertex to form a set of path edges, and analyzing the set of path edges of a vertex. The set of path edges includes valuations that are implicitly represented so as to inhibit an undesired explosion in the valuations that would hinder the act of analyzing.
31 Citations
56 Claims
-
1. A system for analyzing a program having multiple statements, comprising:
-
a graph generator that uses a model of the program to generate a control-flow graph; and
an analyzer to analyze each vertex of the control-flow graph to determine the reachability of each statement in the program, and wherein the analyzer forms an implicit representation of values of variables at each vertex so as to inhibit computational explosion. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for analyzing a program having multiple statements, comprising:
-
labeling a statement of the multiple statements with a label;
determining whether the label is reachable; and
providing a shortest trace to the label from the first line of the program if the label is determined to be reachable. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A method for analyzing a program, comprising:
-
receiving a model of the program having multiple statements;
labeling a statement of the multiple statements with a label;
determining whether the label is reachable; and
providing a shortest trace to the label from the first line of the program if the label is determined to be reachable. - View Dependent Claims (12, 13, 14, 15, 17, 18, 19, 20)
-
-
16. A method for checking a model of a program, comprising:
-
forming a control-flow graph having vertices from the model;
applying a transfer function to a vertex to form a set of path edges; and
analyzing the set of path edges of a vertex, wherein the set of path edges includes valuations that are implicitly represented so as to inhibit an undesired explosion in the valuations that would hinder the act of analyzing.
-
-
21. A computer readable medium having instructions stored thereon for checking a model of a program, the method comprising:
-
forming a control-flow graph having vertices from the model;
applying a transfer function to a vertex to form a set of path edges; and
analyzing the set of path edges of a vertex, wherein the set of path edges includes valuations that are implicitly represented so as to inhibit an undesired explosion in the valuations that would hinder the act of analyzing. - View Dependent Claims (22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
-
-
26. A method for checking a model of a program, comprising:
-
receiving a graph having a set of vertices and a successor function;
initializing sets of path edges, sets of summary edges, and a work list;
removing a vertex having a type from the work list; and
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.
-
-
40. A method for generating a trace for a model of a program, comprising:
-
forming a control-flow graph having vertices from the model;
applying a transfer function to each vertex to form a set of path edges;
analyzing the set of path edges of a vertex; and
tagging a unit length that the trace takes to reach the vertex from another vertex. - View Dependent Claims (41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56)
-
-
45. A method for generating a trace for a model of a program, comprising:
-
forming a set of rings associated with each vertex of the model;
finding a ring such that a set of path edges of a reachable vertex exists; and
analyzing the reachable vertex based on a type of the reachable vertex so as to generate a trace from the entry of the main procedure of the program to the reachable vertex.
-
Specification