The Cook–Levin theorem is a theorem from theoretical computer science, which says that the Boolean satisfiability problem is NP-complete. A deterministic Turing machine can change a problem in NP in polynomial time to the problem of determining whether a Boolean formula is satisfiable. An important consequence of the theorem is that if there exists a deterministic polynomial time algorithm for solving Boolean satisfiability, then there exists a deterministic polynomial time algorithm for solving "all" problems in NP. The same follows for any NP-complete problem.