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.