General Information

Instructor:

John Reppy

jhr@cs.uchicago.edu.

Lectures:

W 1:50-3:10

(online)

F 10:30-11:50

(online)

Course Description

The focus of this seminar will be Higher-Order Control-Flow Analysis (CFA) with a dash of automated meta-theory in the second half of the quarter. We will be reading and discussing a number of the significant papers in the area; in the later part of the term, we will investigate proving the correctness of Matt Might’s reference implementation of k-CFA.

Background

For a first-order language (i.e., C or Fortran), the syntax of the language defines a control-flow graph (CFG) for the body of a function. Furthermore, we can easily extend this to a call-graph (or inter-procedural CFG) for most programs. Given such a graph, we can perform various data-flow analyses to guide optimization or to check program properties.

For higher-order languages, however, the target of control transfers depends on evaluating an expression that produces a function (in functional languages) or object (in object-oriented languages). Thus, before we can perform data-flow analysis, we must first perform an analysis to determine the CFG (or an approximation) of it. But since functions/objects are just another kind of data, we need to simultaneously perform a data-flow analysis. A further problem is that functions are not just code, but also have an environment that defines the free variables of the function.

Reading List

TBA