Detecting non-cyclicity by abstract compilation into boolean functions

  • Authors:
  • Stefano Rossignoli;Fausto Spoto

  • Affiliations:
  • Dipartimento di Informatica, Università di Verona, Verona, Italy;Dipartimento di Informatica, Università di Verona, Verona, Italy

  • Venue:
  • VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

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.