Verifier

Definition. A verifier for a language AA is an algorithm VV such that A={w:VA = \{w : V accepts ⟨w,c⟩\langle w, c \rangle for some string c}c\}. The string cc is a certificate for ww, and VV is a polynomial-time verifier if it runs in time polynomial in ∣w∣|w| alone.

Measuring in ∣w∣|w| rather than ∣w∣+∣c∣|w| + |c| 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. NP\mathsf{NP} 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.

Updated
Copyright © 2026 Jared Coleman. All rights reserved.