As explained by egreg, "amsmath redefines \dots so that it can do a lookahead in order to establish what kind of dots to use." However, I noticed that this feature of \dots doesn't work when I define macros in place of commands that \dots would otherwise recognize. For example,
\documentclass[12pt]{report}
\usepackage{amsmath}
\newcommand{\by}{\times}
\begin{document}
\begin{gather*}
A = A_1 \times \dots \times A_n \\
B = B_1 \by \dots \by B_m
\end{gather*}
\end{document}
produces the output
The dots between the pairs of \times are in the correct position, whereas the dots between the pairs of \by are not. I'm guessing this is because \dots did a lookahead before macro expansion? Is there a way to fix this?

\let\by=\times– egreg Sep 09 '15 at 16:25