{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,3]],"date-time":"2026-05-03T02:37:09Z","timestamp":1777775829559,"version":"3.51.4"},"reference-count":74,"publisher":"Emerald","issue":"1","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2015,4,21]]},"abstract":"<jats:p>Pointer analysis is a fundamental static program analysis, with a rich literature and wide applications. The goal of pointer analysis is to compute an approximation of the set of program objects that a pointer variable or expression can refer to.<\/jats:p>\n                  <jats:p>We present an introduction and survey of pointer analysis techniques, with an emphasis on distilling the essence of common analysis algorithms. To this end, we focus on a declarative presentation of a common core of pointer analyses: algorithms are modeled as configurable, yet easy-to-follow, logical specifications. The specifications serve as a starting point for a broader discussion of the literature, as independent threads spun from the declarative model.<\/jats:p>","DOI":"10.1561\/2500000014","type":"journal-article","created":{"date-parts":[[2015,4,21]],"date-time":"2015-04-21T10:16:41Z","timestamp":1429611401000},"page":"1-69","source":"Crossref","is-referenced-by-count":142,"title":["Pointer Analysis"],"prefix":"10.1108","volume":"2","author":[{"given":"Yannis","family":"Smaragdakis","sequence":"first","affiliation":[{"name":"University of Athens"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"George","family":"Balatsouras","sequence":"additional","affiliation":[{"name":"University of Athens"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"140","published-online":{"date-parts":[[2015,4,21]]},"reference":[{"key":"2026032910221137200_ref001","first-page":"2","volume-title":"The cartesian product algorithm: Simple and precise type inference of parametric polymorphism","author":"Agesen","year":"1995"},{"key":"2026032910221137200_ref002","volume-title":"Compilers: Principles, Techniques, and Tools (2nd Edition)","author":"Aho","year":"2006"},{"key":"2026032910221137200_ref003","volume-title":"Program Analysis and Specialization for the C Programming Language","author":"Andersen","year":"1994"},{"key":"2026032910221137200_ref004","first-page":"324","volume-title":"Fast static analysis of C++ virtual function calls","author":"Bacon","year":"1996"},{"key":"2026032910221137200_ref005","first-page":"221","volume-title":"Recency-abstraction for heap-allocated storage","author":"Balakrishnan","year":"2006"},{"key":"2026032910221137200_ref006","first-page":"103","volume-title":"Points-to analysis using BDDs","author":"Berndl","year":"2003"},{"key":"2026032910221137200_ref007","doi-asserted-by":"crossref","DOI":"10.1145\/1640089.1640108","volume-title":"Strictly declarative specification of sophisticated points-to analyses","author":"Bravenboer","year":"2009"},{"key":"2026032910221137200_ref008","first-page":"1","volume-title":"Exception analysis and points-to analysis: Better together","author":"Bravenboer","year":"2009"},{"key":"2026032910221137200_ref009","first-page":"133","volume-title":"Relevant context inference","author":"Chatterjee","year":"1999"},{"key":"2026032910221137200_ref010","first-page":"57","volume-title":"Modular interprocedural pointer analysis using access paths: Design, implementation, and evaluation","author":"Cheng","year":"2000"},{"key":"2026032910221137200_ref011","first-page":"238","volume-title":"Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints","author":"Cousot","year":"1977"},{"key":"2026032910221137200_ref012","first-page":"269","volume-title":"Systematic design of program analysis frameworks","author":"Cousot","year":"1979"},{"key":"2026032910221137200_ref013","first-page":"77","volume-title":"Optimization of object-oriented programs using static class hierarchy analysis","author":"Dean","year":"1995"},{"key":"2026032910221137200_ref014","first-page":"270","volume-title":"Sound, complete and scalable path-sensitive analysis","author":"Dillig","year":"2008"},{"key":"2026032910221137200_ref015","first-page":"391","volume-title":"Defining and continuous checking of structural program dependencies","author":"Eichberg","year":"2008"},{"key":"2026032910221137200_ref016","first-page":"242","volume-title":"Context-sensitive interprocedural points-to analysis in the presence of function pointers","author":"Emami","year":"1994"},{"key":"2026032910221137200_ref017","first-page":"85","volume-title":"Partial online cycle elimination in inclusion constraint graphs","author":"F\u00e4hndrich","year":"1998"},{"key":"2026032910221137200_ref018","first-page":"230","volume-title":"Exception-chain analysis: Revealing exception handling architecture in Java server applications","author":"Fu","year":"2007"},{"key":"2026032910221137200_ref019","first-page":"214","volume-title":"Client-driven pointer analysis","author":"Guyer","year":"2003"},{"key":"2026032910221137200_ref020","first-page":"2","volume-title":"CodeQuest: Scalable source code queries with Datalog","author":"Hajiyev","year":"2006"},{"key":"2026032910221137200_ref021","first-page":"290","volume-title":"The ant and the grasshopper: fast and accurate pointer analysis for millions of lines of code","author":"Hardekopf","year":"2007"},{"key":"2026032910221137200_ref022","first-page":"265","volume-title":"Exploiting pointer and location equivalence to optimize pointer analysis","author":"Hardekopf","year":"2007"},{"key":"2026032910221137200_ref023","first-page":"254","volume-title":"Ultra-fast aliasing analysis using CLA: A million lines of C code in a second","author":"Heintze","year":"2001"},{"key":"2026032910221137200_ref024","first-page":"24","volume-title":"Demand-driven pointer analysis","author":"Heintze","year":"2001"},{"key":"2026032910221137200_ref025","first-page":"54","volume-title":"Pointer analysis: haven\u2019t we solved this problem yet?","author":"Hind","year":"2001"},{"issue":"1","key":"2026032910221137200_ref026","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/239912.239913","article-title":"Precise flow-insensitive may-alias analysis is NP-hard","volume":"19","author":"Horwitz","year":"1997","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"2026032910221137200_ref027","doi-asserted-by":"crossref","DOI":"10.1007\/978-1-4612-0539-5","volume-title":"Descriptive Complexity","author":"Immerman","year":"1999"},{"key":"2026032910221137200_ref028","unstructured":"Vini\n              Kanvar\n             and Uday P.Khedker. Heap abstractions for static analysis. CoRR, abs\/1403.4910, 2014. URL http:\/\/arxiv.org\/abs\/1403.4910."},{"key":"2026032910221137200_ref029","first-page":"41","volume-title":"Efficient and effective handling of exceptions in Java points-to analysis","author":"Kastrinis","year":"2013"},{"key":"2026032910221137200_ref030","doi-asserted-by":"crossref","DOI":"10.1145\/2491956.2462191","volume-title":"Hybrid context-sensitivity for points-to analysis","author":"Kastrinis","year":"2013"},{"key":"2026032910221137200_ref031","first-page":"1","volume-title":"Context-sensitive program analysis as database queries","author":"Lam","year":"2005"},{"issue":"4","key":"2026032910221137200_ref032","doi-asserted-by":"crossref","first-page":"323","DOI":"10.1145\/161494.161501","article-title":"Undecidability of static analysis","volume":"1","author":"Landi","year":"1992","journal-title":"LOPLAS"},{"key":"2026032910221137200_ref033","first-page":"235","volume-title":"A safe approximate algorithm for interprocedural aliasing","author":"Landi","year":"1992"},{"key":"2026032910221137200_ref034","volume-title":"Program Analysis using Binary Decision Diagrams","author":"Lhot\u00e1k","year":"2006"},{"issue":"1","key":"2026032910221137200_ref035","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/1391984.1391987","article-title":"Evaluating the benefits of context-sensitive points-to analysis using a BDD-based implementation","volume":"18","author":"Lhot\u00e1k","year":"2008","journal-title":"ACM Trans. Softw. Eng. Methodol."},{"key":"2026032910221137200_ref036","first-page":"27","volume-title":"Self-inferencing reflection resolution for Java","author":"Li","year":"2014"},{"key":"2026032910221137200_ref037","first-page":"590","volume-title":"Scaling abstraction refinement via pruning","author":"Liang","year":"2011"},{"key":"2026032910221137200_ref038","volume-title":"Improving Software Security with Precise Static and Runtime Analysis","author":"Livshits","year":"2006"},{"key":"2026032910221137200_ref039","first-page":"139","volume-title":"Reflection analysis for Java","author":"Livshits","year":"2005"},{"issue":"2","key":"2026032910221137200_ref040","doi-asserted-by":"crossref","first-page":"44","DOI":"10.1145\/2644805","article-title":"In defense of soundiness: A manifesto","volume":"58","author":"Livshits","year":"2015","journal-title":"Commun. ACM"},{"key":"2026032910221137200_ref041","first-page":"499","volume-title":"Practical static analysis of JavaScript applications in the presence of frameworks and libraries","author":"Madsen","year":"2013"},{"key":"2026032910221137200_ref042","first-page":"305","volume-title":"Resolving and exploiting the k-CFA paradox: Illuminating functional vs. object-oriented program analysis","author":"Might","year":"2010"},{"key":"2026032910221137200_ref043","first-page":"1","volume-title":"Parameterized object sensitivity for points-to and side-effect analyses for Java","author":"Milanova","year":"2002"},{"issue":"1","key":"2026032910221137200_ref044","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/1044834.1044835","article-title":"Parameterized object sensitivity for points-to analysis for Java","volume":"14","author":"Milanova","year":"2005","journal-title":"ACM Trans. Softw. Eng. Methodol."},{"key":"2026032910221137200_ref045","first-page":"308","volume-title":"Effective static race detection for Java","author":"Naik","year":"2006"},{"key":"2026032910221137200_ref046","first-page":"386","volume-title":"Effective static deadlock detection","author":"Naik","year":"2009"},{"key":"2026032910221137200_ref047","first-page":"121","volume-title":"Exploiting the structure of the constraint graph for efficient points-to analysis","author":"Nasre","year":"2012"},{"key":"2026032910221137200_ref048","first-page":"1","volume-title":"Local reasoning about programs that alter data structures","author":"O\u2019Hearn","year":"2001"},{"issue":"5","key":"2026032910221137200_ref049","doi-asserted-by":"crossref","first-page":"1467","DOI":"10.1145\/186025.186041","article-title":"The undecidability of aliasing","volume":"16","author":"Ramalingam","year":"1994","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"2026032910221137200_ref050","first-page":"163","volume-title":"Applications of Logic Databases","author":"Reps","year":"1994"},{"key":"2026032910221137200_ref051","doi-asserted-by":"crossref","first-page":"701","DOI":"10.1016\/S0950-5849(98)00093-7","article-title":"Program analysis via graph reachability","volume":"40","author":"Reps","year":"1998","journal-title":"Information & Software Technology"},{"issue":"1","key":"2026032910221137200_ref052","doi-asserted-by":"crossref","first-page":"162","DOI":"10.1145\/345099.345137","article-title":"Undecidability of context-sensitive data-independence analysis","volume":"22","author":"Reps","year":"2000","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"2026032910221137200_ref053","first-page":"49","volume-title":"Precise interpro-cedural dataflow analysis via graph reachability","author":"Reps","year":"1995"},{"key":"2026032910221137200_ref054","first-page":"55","volume-title":"Separation logic: A logic for shared mutable data structures","author":"Reynolds","year":"2002"},{"issue":"3","key":"2026032910221137200_ref055","doi-asserted-by":"crossref","DOI":"10.1145\/1353445.1353447","article-title":"On the complexity of partially-flow-sensitive alias analysis","volume":"30","author":"Rinetzky","year":"2008","journal-title":"ACM Trans. Program. Lang. Syst"},{"key":"2026032910221137200_ref056","first-page":"47","volume-title":"Off-line variable substitution for scaling points-to analysis","author":"Rountev","year":"2000"},{"key":"2026032910221137200_ref057","first-page":"126","volume-title":"Dimensions of precision in reference analysis of object-oriented programming languages","author":"Ryder","year":"2003"},{"issue":"3","key":"2026032910221137200_ref058","doi-asserted-by":"crossref","first-page":"217","DOI":"10.1145\/514188.514190","article-title":"Parametric shape analysis via 3-valued logic","volume":"24","author":"Sagiv","year":"2002","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"2026032910221137200_ref059","first-page":"189","volume-title":"Program flow analysis: theory and applications","author":"Sharir","year":"1981"},{"key":"2026032910221137200_ref060","volume-title":"Control-Flow Analysis of Higher-Order Languages","author":"Shivers","year":"1991"},{"key":"2026032910221137200_ref061","first-page":"17","volume-title":"Pick your contexts well: Understanding object-sensitivity","author":"Smaragdakis","year":"2011"},{"key":"2026032910221137200_ref062","first-page":"253","volume-title":"Set-based pre-processing for points-to analysis","author":"Smaragdakis","year":"2013"},{"key":"2026032910221137200_ref063","first-page":"485","volume-title":"Introspective analysis: Context-sensitivity, across the board","author":"Smaragdakis","year":"2014"},{"key":"2026032910221137200_ref064","first-page":"387","volume-title":"Refinement-based context-sensitive points-to analysis for Java","author":"Sridharan","year":"2006"},{"key":"2026032910221137200_ref065","first-page":"59","volume-title":"Demand-driven points-to analysis for Java","author":"Sridharan","year":"2005"},{"key":"2026032910221137200_ref066","first-page":"196","volume-title":"Aliasing in Object-Oriented Programming. Types, Analysis and Verification, volume 7850 of Lecture Notes in Computer Science","author":"Sridharan","year":"2013"},{"key":"2026032910221137200_ref067","first-page":"32","volume-title":"Points-to analysis in almost linear time","author":"Steensgaard","year":"1996"},{"key":"2026032910221137200_ref068","first-page":"281","volume-title":"Scalable propagation-based call graph construction algorithms","author":"Tip","year":"2000"},{"key":"2026032910221137200_ref069","first-page":"275","volume-title":"Deciding kCFA is complete for EXPTIME","author":"Van Horn","year":"2008"},{"key":"2026032910221137200_ref070","first-page":"131","volume-title":"Cloning-based context-sensitive pointer alias analysis using binary decision diagrams","author":"Whaley","year":"2004"},{"key":"2026032910221137200_ref071","first-page":"97","volume-title":"Using Datalog with binary decision diagrams for program analysis","author":"Whaley","year":"2005"},{"key":"2026032910221137200_ref072","first-page":"1","volume-title":"Efficient context-sensitive pointer analysis for C programs","author":"Wilson","year":"1995"},{"key":"2026032910221137200_ref073","first-page":"435","volume-title":"Fast algorithms for Dyck-CFL-reachability with applications to alias analysis","author":"Zhang","year":"2013"},{"key":"2026032910221137200_ref074","first-page":"197","volume-title":"Demand-driven alias analysis for C","author":"Zheng","year":"2008"}],"container-title":["Foundations and Trends\u00ae in Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.emerald.com\/ftpgl\/article-pdf\/2\/1\/1\/11025363\/2500000014en.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/www.emerald.com\/ftpgl\/article-pdf\/2\/1\/1\/11025363\/2500000014en.pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,29]],"date-time":"2026-04-29T18:16:46Z","timestamp":1777486606000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.emerald.com\/ftpgl\/article\/2\/1\/1\/1326562\/Pointer-Analysis"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2015,4,21]]},"references-count":74,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2015,4,21]]}},"URL":"https:\/\/doi.org\/10.1561\/2500000014","relation":{},"ISSN":["2325-1107","2325-1131"],"issn-type":[{"value":"2325-1107","type":"print"},{"value":"2325-1131","type":"electronic"}],"subject":[],"published":{"date-parts":[[2015,4,21]]}}}