The application field of static analysis techniques for objectoriented programming is getting broader, ranging from compiler
optimizations to security issues. This leads to the need of methodologies that support reusability not only at the code level
but also at higher (semantic) levels, in order to minimize the effort of proving correctness of the analyses. Abstract interpretation
may be the most appropriate approach in that respect. This paper is a contribution towards the design of a general framework
for abstract interpretation of Java programs. We introduce two generic abstract domains that express type, structural, and
sharing information about dynamically created objects. These generic domains can be instantiated to get specific analyses
either for optimization or verification issues. The semantics of the domains are precisely defined by means of concretization
functions based on mappings between concrete and abstract locations. The main abstract operations, i.e., upper bound and assignment,
are discussed. An application of the domains to source-to-source program specialization is sketched to illustrate the effectiveness
of the analysis.
Keywords Abstract Interpretation - Static Analysis - Type Analysis - Program Specialization
Supported by the Belgian National Fund for Scientific Research (FNRS).
Partially supported by MURST projects ‘Certificazione Automatica di Programmi mediante Interpretazione Astratta’ and ‘Interpretazione
Astratta, Type Systems e Analisi Control-Flow’.