Here is a generalized approach, providing \overarrow[<relation>][<arrow>]{<stuff>}. By default <relation> is = and <arrow> is \uparrow (both arguments are optional). A complement to this is provided by \underarrow[<relation>][<arrow>]{<stuff>} for typesetting underneath <operator> (<arrow> has the default <downarrow> in \underarrow).

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{xparse}% http://ctan.org/pkg/xparse
\NewDocumentCommand{\overarrow}{O{=} O{\uparrow} m}{%
\overset{\makebox[0pt]{\begin{tabular}{@{}c@{}}#3\\[0pt]\ensuremath{#2}\end{tabular}}}{#1}
}
\NewDocumentCommand{\underarrow}{O{=} O{\downarrow} m}{%
\underset{\makebox[0pt]{\begin{tabular}{@{}c@{}}\ensuremath{#2}\\[0pt]#3\end{tabular}}}{#1}
}
\begin{document}
\begin{align*}
\alpha &\overarrow{Theorem X}\beta & \alpha &\underarrow{Theorem X}\beta \\
\alpha &\overarrow[\approx]{Theorem Y}\beta & \alpha &\underarrow[\approx]{Theorem Y}\beta \\
\alpha &\overarrow[>][\downarrow]{Theorem Z}\beta & \alpha &\underarrow[>][\uparrow]{Theorem Z}\beta
\end{align*}
\end{document}
One difference between this typesetting and that proposed by @Herbert is that \stackrel modifies the size of the upper component. Since \overarrow and \underarrow in this answer uses tabular to stack the items, no size adjustment is visible.
xparse provides the interface for mixing optional/mandatory arguments.