Resolving and Exploiting the $k$-CFA Paradox
Matthew Might, Yannis Smaragdakis, David Van Horn

TL;DR
This paper clarifies the complexity differences of $k$-CFA analysis between functional and object-oriented languages, resolving a paradox and enabling polynomial-time analyses for functional programs.
Contribution
It demonstrates that the same $k$-CFA specification has different computational complexities in functional versus object-oriented languages, and introduces a hierarchy of polynomial-time CFAs for functional programs.
Findings
$k$-CFA is EXPTIME-complete for $k \\geq 1$ in general.
Object-oriented $k$-CFA can be polynomial-time.
A hierarchy of polynomial-time CFAs for functional programs is derived.
Abstract
Low-level program analysis is a fundamental problem, taking the shape of "flow analysis" in functional languages and "points-to" analysis in imperative and object-oriented languages. Despite the similarities, the vocabulary and results in the two communities remain largely distinct, with limited cross-understanding. One of the few links is Shivers's -CFA work, which has advanced the concept of "context-sensitive analysis" and is widely known in both communities. Recent results indicate that the relationship between the functional and object-oriented incarnations of -CFA is not as well understood as thought. Van Horn and Mairson proved -CFA for to be EXPTIME-complete; hence, no polynomial-time algorithm can exist. Yet, there are several polynomial-time formulations of context-sensitive points-to analyses in object-oriented languages. Thus, it seems that functional…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Logic, Reasoning, and Knowledge · Formal Methods in Verification
