Abstract
Programming languages such as C, C++ and Java bind variables to dynamically-allocated data-structures held in memory. This lets programs build cyclical data at run-time, which complicates termination analysis and garbage collection. It is hence desirable to spot those variables which are only bound to non-cyclical data at run-time. We solve this problem by using abstract interpretation to define the abstract domain NC representing those variables. We relate NC through a Galois insertion to the concrete domain of program states. Hence NC is not redundant. We define a correct abstract denotational semantics over NC, which uses preliminary sharing information between variables to get more precise results. We apply it to a simple example of analysis. We use a Boolean representation for the abstract denotations over NC, which leads to an efficient implementation in terms of binary decision diagrams and to the elegant and efficient use of abstract compilation.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Apt, K.R., Pedreschi, D.: Reasoning about Termination of Pure Prolog Programs. Information and Computation 106(1), 109–157 (1993)
Armstrong, T., Marriott, K., Schachte, P., Søndergaard, H.: Two Classes of Boolean Functions for Dependency Analysis. Science of Computer Programming 31(1), 3–45 (1998)
Bossi, A., Gabbrielli, M., Levi, G., Martelli, M.: The s-Semantics Approach: Theory and Applications. Journal of Logic Programming 19/20, 149–197 (1994)
Bryant, R.E.: Graph-Based Algorithms for Boolean Function Manipulation. IEEE Transactions on Computers 35(8), 677–691 (1986)
Cousot, P., Cousot, R.: Abstract Interpretation and Applications to Logic Programs. Journal of Logic Programming 13(2,3), 103–179 (1992)
Hermenegildo, M., Warren, W., Debray, S.K.: Global Flow Analysis as a Practical Compilation Tool. Journal of Logic Programming 13(2 & 3), 349–366 (1992)
Rossignoli, S., Spoto, F.: Detecting Non-Cyclicity by Abstract Compilation into Boolean Functions (extended version with proofs) (2005), Available at, http://www.sci.univr.it/~spoto/papers.html
Secci, S., Spoto, F.: Pair-Sharing Analysis of Object-Oriented Programs. In: Hankin, C., Siveroni, I. (eds.) SAS 2005. LNCS, vol. 3672, pp. 320–335. Springer, Heidelberg (2005)
Steensgaard, B.: Points-to Analysis in Almost Linear Time. In: Principles of Programming Languages (POPL), St. Petersburg Beach, Florida, USA, January 1996, pp. 32–41 (1996)
Wilhelm, R., Reps, T.W., Sagiv, S.: Shape Analysis and Applications. In: Srikant, Y.N., Shankar, P. (eds.) The Compiler Design Handbook, pp. 175–218. CRC Press, Boca Raton (2002)
Winskel, G.: The Formal Semantics of Programming Languages. The MIT Press, Cambridge (1993)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Rossignoli, S., Spoto, F. (2005). Detecting Non-cyclicity by Abstract Compilation into Boolean Functions. In: Emerson, E.A., Namjoshi, K.S. (eds) Verification, Model Checking, and Abstract Interpretation. VMCAI 2006. Lecture Notes in Computer Science, vol 3855. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11609773_7
Download citation
DOI: https://doi.org/10.1007/11609773_7
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-31139-3
Online ISBN: 978-3-540-31622-0
eBook Packages: Computer ScienceComputer Science (R0)