Beyond Iteration Vectors: Instancewise Relational Abstract Domains

Pierre Amiranoff (Paris-Sud U.), Albert Cohen (INRIA Futurs) and Paul Feautrier (ENS-Lyon)

Abstract

We introduce a formalism to reason about program properties at an infinite number of runtime control points, called instances. Infinite sets of instances are represented by rational languages. This framework gives a formal foundation to the well known concept of iteration vectors, extending it to recursive programs with any structured control flow (nested loops and recursive calls). We also extend the concept of induction variables to recursive programs. For a class of monoid-based data structures, including arrays and trees, induction variables capture the exact memory location accessed at every step of the execution. This compile-time characterization is computed in polynomial time as a rational function. Applications dependence and region analysis for array and tree algorithms, array expansion, and automatic parallelization of recursive programs.