Abstract Interpretation: We present an abstract interpretation in an informal manner, as a collection of three components:
1. A finite domain of abstract values;
2. An abstraction function that maps concrete program values to abstract values; and
3. A collection of primitive operations (one for each operation in the program).
Substituting concrete operations applied to selected program variables with corresponding operations of an abstract interpretation yields an abstract program.