  By stating the adiabatic theorem of quantum mechanics in a clear and rigorous
way, we establish a necessary condition and a sufficient condition for its
validity, where the latter is obtained employing our recently developed
adiabatic perturbation theory. Also, we simplify further the sufficient
condition into a useful and simple practical test at the expenses of its
mathematical rigor. We present results for the most general case of quantum
systems, i.e., those with degenerate energy spectra. These conditions are of
upmost importance to assess the validity of practical implementations of
non-Abelian braiding and adiabatic quantum computation. To illustrate the
degenerate adiabatic approximation, and the necessary and sufficient conditions
for its validity, we analyze in depth an exactly solvable time-dependent
degenerate problem.
