A verifier for a language $L$ is an algorithm that accepts as input an instance $x$ of $A$ and a witness $w$, and has the following properties:
- The algorithm always halts.
- If $x \in A$ then there is a witness $w$ such that the algorithm accepts $\langle x,w \rangle$.
- If $x \notin A$ then for all witnesses $w$, the algorithm rejects $\langle x,w \rangle$.
We are often interested in polynomial time verifiers. Such a verifier exists for the clique problem, which is: given a graph $G$ and a parameter $k$, decide whether $G$ contains a $k$-clique. Here is one polynomial time verifier for this problem: it accepts as witness a list $S$ of vertices, and on input $G,k,S$ it accepts if $S$ is a set of $k$ vertices which form a clique in $G$. I'll let you check that this satisfies all the required properties.