English

Decoupling the ascending and descending phases in Abstract Interpretation

Programming Languages 2022-06-23 v1

Abstract

Abstract Interpretation approximates the semantics of a program by mimicking its concrete fixpoint computation on an abstract domain A\mathbb{A}. The abstract (post-) fixpoint computation is classically divided into two phases: the ascending phase, using widenings as extrapolation operators to enforce termination, is followed by a descending phase, using narrowings as interpolation operators, so as to mitigate the effect of the precision losses introduced by widenings. In this paper we propose a simple variation of this classical approach where, to more effectively recover precision, we decouple the two phases: in particular, before starting the descending phase, we replace the domain A\mathbb{A} with a more precise abstract domain D\mathbb{D}. The correctness of the approach is justified by casting it as an instance of the A2^2I framework. After demonstrating the new technique on a simple example, we summarize the results of a preliminary experimental evaluation, showing that it is able to obtain significant precision improvements for several choices of the domains A\mathbb{A} and D\mathbb{D}.

Keywords

Cite

@article{arxiv.2206.10893,
  title  = {Decoupling the ascending and descending phases in Abstract Interpretation},
  author = {Vincenzo Arceri and Isabella Mastroeni and Enea Zaffanella},
  journal= {arXiv preprint arXiv:2206.10893},
  year   = {2022}
}
R2 v1 2026-06-24T11:59:42.253Z