<aside> 💡 Key Points

1. Rice’s Theorem


“Any non-trivial property of the behavior of programs in a r.e. language is undecidable.”

Perfect or Sound or Complete static analysis is impossible.

Untitled

Useful static analysis is possible, includes:

Mostly compromising completeness: Sound but not fully-precise static analysis

Untitled

Necsssity of Soundness

Soundness is critical to a collection of important (static-analysis) applications such as compiler optimization and program verification.

Static Analysis: ensure (or get close to) soundness, while making good trade-offs between analysis precision and analysis speed.

2. Abstraction + Over-approximation

Two Words to Conclude Static Analysis


Abstraction

Determine the sign (+, -, or 0) of all the variables of a given program.

Untitled

Over-approximation: Transfer Functions