1 Introduction.- 2 Data Flow Analysis.- 3 Constraint Based Analysis.- 4 Abstract Interpretation.- 5 Type and Effect Systems.- 6 Algorithms.- A Partially Ordered Sets.- A.1 Basic Definitions.- A.2 Construction of Complete Lattices.- A.3 Chains.- A.4 Fixed Points.- Concluding Remarks.- B Induction and Coinduction.- B.1 Proof by Induction.- B.2 Introducing Coinduction.- B.3 Proof by Coinduction.- Concluding Remarks.- C Graphs and Regular Expressions.- C.1 Graphs and Forests.- C.2 Reverse Postorder.- C.3 Regular Expressions.- Concluding Remarks.- Index of Notation.
Program analysis utilizes static techniques for computing reliable information about the dynamic behavior of programs. Applications include compilers (for code improvement), software validation (for detecting errors) and transformations between data representation (for solving problems such as Y2K). This book is unique in providing an overview of the four major approaches to program analysis: data flow analysis, constraint-based analysis, abstract interpretation, and type and effect systems. The presentation illustrates the extensive similarities between the approaches, helping readers to choose the best one to utilize.