  Ben Reichardt showed in a series of results that the general adversary bound
of a function characterizes its quantum query complexity. This survey seeks to
aggregate the background and definitions necessary to understand the proof.
Notable among these are the lower bound proof, span programs, witness size, and
semi-definite programs. These definitions, in addition to examples and detailed
expositions, serve to give the reader a better intuition of the graph-theoretic
nature of the upper bound. We also include an applications of this result to
lower bounds on DeMorgan formula size.
