A 2 Minute Introduction to Sound Abstract Interpretation

A trace of a program execution is the sequence of transitions of the program state:

trace

Errorneous states are just states that satisfy some property $P$:

error

Testing may verify some traces if an error occurs:

testing

But checking all possible programs are impossible:

infinite traces

Abstract interpretation approximates the concrete states with a less precise approximation:

abstraction

Since it’s an over-approximation, it may falsely identify safe states as errorneous:

false positive

And additionally take into account states which would not actually be computed:

overapproximation

But it is a sound approximation, meaning it never not takes a concrete state into account:

sound

And all concrete errorneous states must be correctly abstracted into an errorneous abstract state:

sound_errors

Written on May 16, 2026