A simple abstraction of arrays and maps by program translation
David Monniaux (VERIMAG - IMAG), Francesco Alberti

TL;DR
This paper introduces a static analysis method for array programs by translating them into scalar programs, enabling the use of existing analysis techniques to derive array invariants.
Contribution
It proposes a simple, automatic program transformation approach that simplifies array analysis by leveraging scalar analysis techniques and translating invariants back to arrays.
Findings
Successfully analyzed array algorithms like the Dutch flag problem
Provides a systematic way to derive array invariants from scalar invariants
Applicable to various static analysis techniques
Abstract
We present an approach for the static analysis of programs handling arrays, with a Galois connection between the semantics of the array program and semantics of purely scalar operations. The simplest way to implement it is by automatic, syntactic transformation of the array program into a scalar program followed analysis of the scalar program with any static analysis technique (abstract interpretation, acceleration, predicate abstraction,.. .). The scalars invariants thus obtained are translated back onto the original program as universally quantified array invariants. We illustrate our approach on a variety of examples, leading to the " Dutch flag " algorithm.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Formal Methods in Verification · Software Testing and Debugging Techniques
