Stable relations and abstract interpretation of higher-order programs
summary
Defines a denotational semantics where terms are stable relations (binary relations between substitutions and values) and proves it sound and complete against the operational semantics; uses that collecting semantics with abstract interpretation to derive a modular relational analysis that infers input–output equalities and frame conditions for higher‑order code. Extends the correlations domain to support first‑class functions, implements the analyzer and formalizes proofs in Coq, gets precision on examples comparable to 1‑CFA, and notes loss of precision for unknown apply (returns top) and work remaining for exceptions.
AI-written summary · about
chapters (17)
- 0:00Stable relations intro
- 1:06Frame conditions in analysis
- 3:36Manual frames to abstract interpretation
- 5:03Higher-order languages matter
- 6:51Abstract interpretation for stable relations
- 9:10Stability of input-output relations
- 11:17Lambda terms as stable operations
- 15:55Higher-order semantics
- 18:28Modular static analysis from semantics
- 21:43Precision and context sensitivity
- 23:09Conclusions and future
- 24:14Q&A: Preservation lemmas
- 25:41Q&A: Operational vs functional
- 26:22Q&A: Info loss in abstraction
- 28:31Q&A: Flexibility of relations
- 29:36Q&A: Proving functional correctness
- 30:39Q&A: Static analysis without inputs
