The P versus NP problem is to determine whether every language accepted by some nondeterministic Turing machine in polynomial time is also accepted by some deterministic Turing machine in polynomial time. Unquestionably this problem has caught the interest of the mathematical community. For example, it is the first of seven million-dollar “Millennium Prize Problems” listed by the Clay Mathematics Institute [www.claymath.org]. The Riemann Hypothesis and Poincare Conjecture, both mathematical classics, are farther down the list. On the other hand, Fields Medalist Steve Smale lists P versus NP as problem number three, after Riemann and Poincare, in “Mathematical Problems for the Next Century” [Smale 1998]. But P versus NP is also a problem of central interest in computer science. It was posed thirty years ago [Cook 1971; Levin 1973] as a problem concerned with the fundamental limits of feasible computation. Although this question is front and center in complexity theory, NP-completeness proofs have become pervasive in many other areas of computer science, including artificial intelligence, databases, programming languages, and computer networks (see Garey and Johnson [1979] for 300 early examples). If the question is resolved, what would be the consequences? Consider first a proof of P=NP. It is possible that the proof is nonconstructive, in the sense that it does not yield an algorithm for any NP-complete problem. Or it might give an impractical algorithm, for example, running in time n100. In either of these cases, the proof would probably have few practical consequences other than to disappoint complexity theorists. However, experience has shown that when natural problems are proved to be in P, a feasible algorithm can be found. There are potential counterexamples to this assertion; most famously, the deep results of Robertson and Seymour [1993–1995], who prove that every minor closed family of graphs can be recognized in time O(n3), but their algorithm has such huge constants it is not practical. But practical algorithms are known for some specific minor-closed families (such as planar graphs), and possibly could be found for other examples if sufficient effort is expended. If P=NP is proved by exhibiting a truly feasible algorithm for an NP-complete problem such as SATISFIABILITY (deciding whether a collection of propositional clauses has a satisfying assignment), the practical consequences would be stunning. First, most of the hundreds of problems shown to be NP-complete can be efficiently reduced to SATISFIABILITY, so many of the optimization problems important to industry could be solved. Second, mathematics would be transformed, because computers could find a formal proof of any theorem which has a proof of reasonable length. This is because formal proofs (say in Zermelo–Fraenkel set theory) are