Verifier
Definition. A verifier for a language is an algorithm such that accepts for some string . The string is a certificate for , and is a polynomial-time verifier if it runs in time polynomial in alone.
Measuring in rather than means a polynomial-time verifier can read only polynomially much of the certificate, so the usual restriction to short certificates is a consequence rather than an extra hypothesis. The quantifiers are asymmetric: membership is witnessed by one certificate, non-membership is a claim about all of them. is exactly the class of languages with polynomial-time verifiers, equivalently those decided by a nondeterministic Turing machine in polynomial time, since a certificate records the choices a lucky branch would make. Defined in Lecture 10.