Abstract
Abstract interpretation is an efficient means for approximating program behaviors before run-time. It can be used as the basis for a number of different useful techniques in static analysis more broadly, and can thus in-turn be used to prove properties needed for security or optimization. Polyvariance represents a way of obtaining higher precision in an abstract interpretation by producing multiple abstract states for each function or lexical point of interest in the program. This paper explores the role of polyvariance in these analyses and how it is manifested, unifying the disparate presentations in the literature.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Agesen, O.: The cartesian product algorithm: Simple and precise type inference of parametric polymorphism. In: Echtle, K., Powell, D.R., Hammer, D. (eds.) EDCC 1994. LNCS, vol. 852, pp. 2–26. Springer, Heidelberg (1994)
Besson, F.C.: beats ∞-CFA. Formal Techniques for Java-like Programs, p. 7 (July 2009)
Cousot, P.: The calculational design of a generic abstract interpreter. In: Broy, M., Steinbrüggen, R. (eds.) Calculational System Design. NATO ASI Series F, pp. 421–506 (1999)
Cousot, P.: Types as Abstract Interpretations. In: Symposium on Principals of Programming Languages, pp. 316–331 (1997)
Cousot, P., Cousot, R.: Abstract Interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Symposium on Principals of Programming Languages, pp. 238–252 (1977)
Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. In: Symposium on Principals of Programming Languages, pp. 269–282 (1979)
Felleisen, M., Findler, R., Flatt, M.: Semantics Engineering with PLT Redex (August 2009)
Jagganathan, S., Weeks, S.: A Unified Treatment of Flow Analysis in Higher-Order Languages. In: ACM Symposium on Principles of Programming Languages, pp. 393–407. ACM Press (January 1995)
Jones, N.D.: A flexible approach to interprocedural data flow analysis and programs with recursive data structures. In: Symposium on Principles of Programming Languages, pp. 66–74 (1982)
Jones, N.D., Muchnick, S.: Flow analysis of lambda expressions (preliminary version). In: Even, S., Kariv, O. (eds.) ICALP 1981. LNCS, vol. 115, pp. 114–128. Springer, Heidelberg (1981)
Midtgaard, J.: Control-Flow Analysis of Functional Programs. ACM Computing Surveys 44 (June 2012)
Midtgaard, J., Jensen, T.: A Calculational Approach to Control-Flow Analysis by Abstract Interpretation. In: Alpuente, M., Vidal, G. (eds.) SAS 2008. LNCS, vol. 5079, pp. 347–362. Springer, Heidelberg (2008)
Midtgaard, J., Van Horn, D.: Subcubic Control Flow analysis Algorithms. Higher-Order and Symbolic Computation (May 2009)
Midtgaard, J., Jensen, T.: Control-ow analysis of function calls and returns by abstract interpretation. In: International Conference on Functional Programming (2009)
Might, M.: Abstract interpreters for free. In: Cousot, R., Martel, M. (eds.) SAS 2010. LNCS, vol. 6337, pp. 407–421. Springer, Heidelberg (2010)
Might, M.: Environment Analysis of Higher-Order Languages. Ph.D. Dissertation. Georgia Institute of Technology (2007)
Might, M.: Logic-Flow Analysis of Higher-Order Programs. In: Principals of Programming Langauges, pp. 185–198 (January 2007)
Might, M., Shivers, O.: Environment analysis via ΔCFA. In: Symposium on the Principals of Programming Languages, pp. 127–140 (January 2006)
Might, M., Shivers, O.: Improving flow analyses via ΓCFA: Abstract garbage collection and counting. In: International Conference on Functional Programming, pp. 13–25 (September 2006)
Might, M., Manolios, P.: A posteriori soundness for non-deterministic abstract interpretations. In: Jones, N.D., Müller-Olm, M. (eds.) VMCAI 2009. LNCS, vol. 5403, pp. 260–274. Springer, Heidelberg (2009)
Milanova, A., Rountev, A., Ryder, B.G.: Parameterized object sensitivity for points-to analysis for Java. ACM Transaction on Software Engineering and Methodology, 1–41 (2005)
Nielson, F., Nielson, H.R., Hankin, C.: Principals of Program Analysis. Springer (1999)
Palsberg, J., Pavlopoulou, C.: From Polyvariant Flow Information to Intersection and Union Types. In: Principals of Programming Languages, pp. 197–208 (1998)
Shivers, O.: Control-flow analysis in Scheme. In: Programming Language Design and Implementation,pp. 164–174 (June 1988)
Shivers, O.: Control-Flow Analysis of Higher-Order Languages. PhD dissertation. School of Computer Science, Carnegie-Mellon University, Pittsburgh, Pennsylvania, Technical Report CMUCS-91-145 (May 1991)
Smaragdakis, Y., Bravenboer, M., Lhotak, O.: Pick your contexts well: understanding object-sensitivity. In: Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 17–30. ACM, New York (2011)
Van Horn, D., Mairson, G.H.: Deciding k-CFA is complete for EXPTIME. In: International Conference on Functional Programming, pp. 275–282 (September 2008)
Van Horn, D., Mairson, H.G.: Flow analysis, linearity, and PTIME. In: Alpuente, M., Vidal, G. (eds.) SAS 2008. LNCS, vol. 5079, pp. 255–269. Springer, Heidelberg (2008)
Van Horn, D., Might, M.: Abstracting Abstract Machines. In: International Conference on Functional Programming 2010, Baltimore, Maryland, pp. 51–62 (September 2010)
Wright, A.K., Jagannathan, S.: Polymorphic splitting: An effective polyvariant flow analysis. ACM Transactions on Programming Languages and Systems, 166–207 (January 1998)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Gilray, T., Might, M. (2014). A Survey of Polyvariance in Abstract Interpretations. In: McCarthy, J. (eds) Trends in Functional Programming. TFP 2013. Lecture Notes in Computer Science, vol 8322. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-45340-3_9
Download citation
DOI: https://doi.org/10.1007/978-3-642-45340-3_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-45339-7
Online ISBN: 978-3-642-45340-3
eBook Packages: Computer ScienceComputer Science (R0)