This thesis explores webs: webs are the collections of producers and consumers (e.g., functions and calls) in a program that are semantically constrained: in higher-order languages, multiple functions can flow to the same call, all of which must agree on an interface (e.g., calling convention). We argue that webs are fundamentally the unit of transformation: a change to one member requires changes across the entire web. Web-based transformations are interprocedural, operating over entire modules, and generalize existing compiler techniques.
We present a simple and lightweight typed-based analysis that causes these transformations to additionally preserve well-typedness, making flow-directed, type-preserving transformations easily accessible.
We additionally explore the compositional correctness of these transformations, as well as describe a novel application of webs: better random program generation for the purpose of property-based testing of compilers. By using the flow analysis to guide expansive program transformations, we obtain a high likelihood that every intermediate value contributes to the final result of the program.
Benjamin Quiring is a PhD Student at the PLUM lab, working with David Van Horn on compilers and program analysis. He is interested in intermediate language design, type-preserving compilation, and the verification of programming language implementations.

