My primary research area is computational complexity. The central problem in computational complexity is to understand which computational problems can be solved efficiently, and to develop the most efficient, least costly algorithms for such problems. Efficiency and cost is measured in terms of three computational resources: time, space and randomness. The goal is to understand how much of these resources are required to solve important computational problems, and to understand the relationships and tradeoffs between the resources. The most famous problem in the area, the P versus NP problem, is the driving force behind much of my research.

One important direction aimed at ultimately resolving the P versus NP question is propositional proof complexity. The central problem in proof complexity is to understand which tautologies have efficient proofs in standard proof systems. There are two aspects to this endeavor: (1) developing new algorithms and proof systems for propositional tautology/satisfiability testing, and (2) proving lower bounds for standard proof systems. These endeavors are related not only to worst-case complexity, but also to the study and analysis of standard heuristics for NP-hard problems. Proof complexity has other rich connections to complexity theory and cryptography, as well as applications to theorem proving and artificial intelligence.

List of Publications