Title: Witness Functions in Program Analysis and Complexity Theory
Date: Tuesday, December 3, 2024
Time: 12:30 PM - 2:30 PM (Eastern Time)
Location (in-person): Klaus 1202
Location (virtual): https://gatech.zoom.us/j/7018521505?pwd=jNYOdyOpgwfe3px8plpgbkgS0Rdajf.1
Shuo Ding
School of Computer Science
Georgia Tech
Committee
Dr. Qirun Zhang (Advisor) - School of Computer Science, Georgia Tech
Dr. Suguman Bansal - School of Computer Science, Georgia Tech
Dr. Vijay Ganesh - School of Computer Science, Georgia Tech
Dr. Jens Palsberg - Computer Science Department, UCLA
Dr. Vivek Sarkar - School of Computer Science, Georgia Tech
Abstract
Proving impossibility results is one of the main themes of program analysis theory and computability/complexity theory. For example, we can prove a program analysis problem is undecidable, meaning that there does not exist an algorithm to precisely solve the problem. As another example, we can prove a problem does not belong to a complexity class, meaning that every correct algorithm for the problem must exceed the given resource restriction. In general, given a class C of computational problems and a specific computational problem P not in C, a witness function maps every candidate Q in C to an input on which P and Q are different.
We investigate the computational properties of such witness functions and discuss their implications. In program analysis theory, we prove that a large class of undecidable program analysis problems have computable witness functions, including every semantic property described in Rice's theorem. This implies the existence of computable functions mapping a program analyzer to a more precise program analyzer. Through two real program analysis tasks (1) CFL-reachability based program analysis for Java and LLVM-IR and (2) template constraint analysis for C++, we demonstrate that computable witness functions provide guarantees on the progress of developing more and more precise program analysis techniques. In complexity theory, we prove that witness functions for major complexity classes are closely related to reductions, and use the time/space hierarchy theorem as an example to discuss further implications in complexity class separation proofs.