[Tex/LaTex] Best Practices for Using Enumerations Within Theorem Environments

#enumerateliststheorems

Suppose one has a theorem/proof such as:


\begin{theorem}
The following are equivalent:
  \begin{enumerate}
   \item Statement 1
   \item Statement 2
   \item Statement 3
  \end{enumerate}
\end{theorem}

\begin{proof} (1) $\implies$ (2): Proof if (1) then (2) (2) $\implies$ (3): Proof if (2) then (3) (3) $\implies$ (1): Proof if (3) then (1) \end{proof}

Obviously, hard-coding the the item numbers is a bad idea. One could, I suppose,
use an enumeration with custom item labeling but, then again, that would still
amount to hard-coding the item numbers. Better, at least somewhat, would
be to use the enumerate environment together with automatic item label generation
to produce labels of the form

$(m) \implies (n)$

(though I don't know how to do this). Perhaps better still would be to not use the enumerate environment at all in the proof but
simply use references to proof items, e.g., in pseudo-code


\makeimplies{\ref{ItemLabel1}, \ref{ItemLabel2}} here is proof for if (1) then (2)

Obviously, I don't know how to do this either.

In any event, what are the recommended practices for dealing with this sort of situation?

Best Answer

I would define the items using the functionality of the enumitem package. This would require you to label the items that you want to reference (using \label) and reference them accordingly using \ref.

In the minimal example below the list of equivalent items are constructed using a label that is formatted as (<arabic#>) with an equivalent referencing output. This is done using the optional arguments to the enumerate environment ([label=..,ref=..]). The command \Implies{<ref1>}{<ref2>} constructs $\text{\ref{<ref1>}}\implies\text{\ref{<ref2>}}$, for consistency and ease-of-use.

enter image description here

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\usepackage{amsthm}% http://ctan.org/pkg/amsthm
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\newtheorem{theorem}{Theorem}
\newcommand{\Implies}[2]{$\text{\ref{#1}}\implies\text{\ref{#2}}$}% X => Y
\begin{document}
\begin{theorem}
The following are equivalent:
  \begin{enumerate}[label=(\arabic*),ref=(\arabic*)]
   \item Statement 1 \label{statement1}
   \item Statement 2 \label{statement2}
   \item Statement 3 \label{statement3}
  \end{enumerate}
\end{theorem}

\begin{proof}
\Implies{statement1}{statement2}: Proof if~\ref{statement1} then~\ref{statement2}.
\Implies{statement2}{statement3}: Proof if~\ref{statement2} then~\ref{statement3}.
\Implies{statement3}{statement1}: Proof if~\ref{statement3} then~\ref{statement1}.
\end{proof}
\end{document}​

The main approach here is to allow referencing of listed items so you don't have to worry about whether you're changing the appearance and have to subsequently modify your (hard-)coded proof. Additionally, you only need to label those entries you would be referencing. In this case, all statements were labelled.

Related Question