Section: New Results
Control-Flow Analysis by Abstract Interpretation
Control-flow analysis (CFA) of functional programs is concerned with
determining how the program's functions call each other. In the case
of the lambda calculus, this amounts to computing the flow of lambda
expressions in order to determine what functions are effectively
called in an application
The systematic derivation of a CFA for a higher-order functional language from a well-known operational semantics provides the resulting analysis with strong mathematical foundations. Its correctness follows directly from the general theorems of abstract interpretation.
The approach is easily adapted to different variants of the source language. We demonstrate this by deriving a CFA for functional programs written in continuation-passing style.
The common framework of these analyses enables their comparison. We take advantage of this to settle a question about the equivalence between the analysis of programs in direct and continuation-passing style.
The resulting equations can be given an equivalent constraint-based presentation, providing ipso facto a rational reconstruction and a correctness proof of constraint-based CFA.
This work was published in the journal Information and Computation [14]