Table of Contents
Fetching ...

Completeness in static analysis by abstract interpretation, a personal point of view

David Monniaux

TL;DR

This paper examines how completeness in abstract interpretation can be achieved or limited in practice. It presents an exact abstraction for LRU caches, showing that a carefully composed abstraction and solving method can yield a unique, testable result, in contrast to brittle widening-based approaches. It then analyzes the sources of incompleteness—widening, imprecise transfer functions, and undecidability in richer domains—highlighting that complete methods (e.g., quantifier elimination or policy iteration) have predictable outcomes but often scalability issues. The discussion informs design choices for static analyzers by balancing completeness, precision, and performance, and suggests that complete methods are valuable for giving reproducible results in critical analyses such as WCET.

Abstract

Static analysis by abstract interpretation is generally designed to be "sound", that is, it should not claim to establish properties that do not hold-in other words, not provide "false negatives" about possible bugs. A rarer requirement is that it should be "complete", meaning that it should be able to infer certain properties if they hold. This paper describes a number of practical issues and questions related to completeness that I have come across over the years.

Completeness in static analysis by abstract interpretation, a personal point of view

TL;DR

This paper examines how completeness in abstract interpretation can be achieved or limited in practice. It presents an exact abstraction for LRU caches, showing that a carefully composed abstraction and solving method can yield a unique, testable result, in contrast to brittle widening-based approaches. It then analyzes the sources of incompleteness—widening, imprecise transfer functions, and undecidability in richer domains—highlighting that complete methods (e.g., quantifier elimination or policy iteration) have predictable outcomes but often scalability issues. The discussion informs design choices for static analyzers by balancing completeness, precision, and performance, and suggests that complete methods are valuable for giving reproducible results in critical analyses such as WCET.

Abstract

Static analysis by abstract interpretation is generally designed to be "sound", that is, it should not claim to establish properties that do not hold-in other words, not provide "false negatives" about possible bugs. A rarer requirement is that it should be "complete", meaning that it should be able to infer certain properties if they hold. This paper describes a number of practical issues and questions related to completeness that I have come across over the years.
Paper Structure (12 sections, 2 equations, 1 figure)