Analysis of pointers and structures
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
A practical framework for the abstract interpretation of logic programs
Journal of Logic Programming
Deriving descriptions of possible values of program variables by means of abstract interpretation
Journal of Logic Programming
Software—Practice & Experience
A lattice for abstract interpretation of dynamic (LISP-like) structures
Information and Computation
Experimental evaluation of a generic abstract interpretation algorithm for PROLOG
ACM Transactions on Programming Languages and Systems (TOPLAS)
Combinations of abstract domains for logic programming
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interprocedural may-alias analysis for pointers: beyond k-limiting
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Semantic models and abstract interpretation techniques for inductive data structures and pointers
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Static detection of dynamic memory errors
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Solving shape-analysis problems in languages with destructive updating
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parametric shape analysis via 3-valued logic
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Escape analysis for object-oriented languages: application to Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Verifying safety properties of concurrent Java programs using 3-valued logic
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Principles of Program Analysis
Principles of Program Analysis
Systematic design of program analysis frameworks
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Static Detection of Pointer Errors: An Axiomatisation and a Checking Algorithm
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Towards Automatic Specialization of Java Programs
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Checking Cleanness in Linked Lists
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
An Efficient, Parametric Fixpoint Algorithm for Analysis of Java Bytecode
Electronic Notes in Theoretical Computer Science (ENTCS)
Class invariants as abstract interpretation of trace semantics
Computer Languages, Systems and Structures
Decision Procedures for Set-Valued Fields
Electronic Notes in Theoretical Computer Science (ENTCS)
Abstract Interpretation and Object-oriented Programming: Quo Vadis?
Electronic Notes in Theoretical Computer Science (ENTCS)
Electronic Notes in Theoretical Computer Science (ENTCS)
Electronic Notes in Theoretical Computer Science (ENTCS)
A termination analyzer for Java bytecode based on path-length
ACM Transactions on Programming Languages and Systems (TOPLAS)
Class-level modular analysis for object oriented languages
SAS'03 Proceedings of the 10th international conference on Static analysis
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Precise set sharing analysis for Java-style programs
VMCAI'08 Proceedings of the 9th international conference on Verification, model checking, and abstract interpretation
Magic-sets for localised analysis of Java bytecode
Higher-Order and Symbolic Computation
Semantic hierarchy refactoring by abstract interpretation
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Pair-sharing analysis of object-oriented programs
SAS'05 Proceedings of the 12th international conference on Static Analysis
The runtime structure of object ownership
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Magic-sets transformation for the analysis of java bytecode
SAS'07 Proceedings of the 14th international conference on Static Analysis
Hi-index | 0.01 |
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.