Static Program Analysis Part 10 – Abstract Interpretation
Total Page:16
File Type:pdf, Size:1020Kb
Static Program Analysis Part 10 – abstract interpretation http://cs.au.dk/~amoeller/spa/ Anders Møller & Michael I. Schwartzbach Computer Science, Aarhus University Abstract interpretation Abstract interpretation provides a solid mathematical foundation for reasoning about static program analyses • Is my analysis sound? (Does it safely approximate the actual program behavior?) • Is it as precise as possible for the currently used analysis lattice? If not, where can precision losses arise? Which precision losses can be avoided (without sacrificing soundness)? Answering such questions requires a precise definition of the semantics of the programming language, and precise definitions of the analysis abstractions in terms of the semantics 2 Agenda • Collecting semantics • Abstraction and concretization • Soundness • Optimality • Completeness 3 Sign analysis, recap : is the analysis representation of the given program 4 Program semantics as constraint systems 5 The semantics of expressions 6 Successors and joins 7 Semantics of statements 8 The resulting constraint system is the semantic representation of the given program 9 Example the least solution 10 Kleene’s fixed point theorem for complete join morphisms If f is a complete join morphism: (even when L has infinite height!) cf is a complete join morphism 11 Tarski’s fixed-point theorem 12 Semantics vs. analysis 13 Agenda • Collecting semantics • Abstraction and concretization • Soundness • Optimality • Completeness 14 Abstraction functions for sign analysis 15 Concretization functions for sign analysis 16 Monotonicity of abstraction and concretization functions (A larger set of concrete values should correspond to a larger abstract state, and conversely) 17 Galois connections 18 Galois connections For Galois connections, the concretization function uniquely determines the abstraction function and vice versa: 19 Galois connections For this lattice, given the “obvious” concretization function, is there an abstraction function such that the concretization function and the abstraction function form a Galois connection? 20 Representation functions 21 Agenda • Collecting semantics • Abstraction and concretization • Soundness • Optimality • Completeness 22 Soundness 23 Soundness 24 Sound abstractions 25 Sound abstractions 26 The two constraint systems 27 Sound abstractions 28 Sound abstractions Equivalent, if α and γ form a Galois connection 29 The soundness theorem 30 Agenda • Collecting semantics • Abstraction and concretization • Soundness • Optimality • Completeness 31 Optimal approximations 32 Optimal approximations in sign analysis? Even if we could make optimal, the analysis result is not always optimal: 33 Agenda • Collecting semantics • Abstraction and concretization • Soundness • Optimality • Completeness 34 Completeness Sound and complete: (Intuitively, the analysis result is the most precise possible for the currently used lattice) Not the same as (called “exact”) (Intuitively, the analysis result exactly captures the semantics of the program) 35 Completeness in sign analysis? Sign analysis is sound and complete for some programs, but not for all programs 36 Conclusions Abstract interpretation provides a solid mathematical foundation for reasoning about soundness and precision of static program analyses We need • the static analysis (the analysis lattices and constraint rules) • the language semantics (a suitable collecting semantics) • abstraction/concretization functions that specify the meaning of the elements in the analysis lattice in terms of the semantic lattice ... and then • if each constituent of the analysis is a sound abstraction of its semantic counterpart, then the analysis is sound (according to the soundness theorem) • if an abstraction is optimal, then it is as precise as possible (yet sound), relative to the choice of analysis lattice • if the analysis is sound and complete, then the analysis result is as precise as possible (yet sound), relative to the choice of analysis lattice 37.