% LaTeX2e style file for theorem and proof environments, by Glenn Tesler
% usage: add thmp2e as an option to whatever documentstyle you're using
%               \usepackage{mathp2e, thmp2e}

% This style file adds the following commands.
%       * New theorem environments.
%           \begin{theorem} ... \end{theorem}
%           \begin{theorem}[Theorem Name] ... \end{theorem}
%         These produce a theorem heading and number, and italicize the
%         enclosed text.  The word "theorem" may be replaced by any of
%               axiom conjecture corollary lemma
%               property proposition question theorem
%         and these will all be numbered in the same numbering sequence.
%         The components of the numbers are separated by dashes instead
%         of periods.
%         The heading and number are boldfaced, but the remark is not.
%
%       * New definition/remark environments.
%           \begin{definition} ... \end{definition}
%           \begin{definition}[Comment] ... \end{definition}
%         These are similar to the theorem environments.  The word
%         ``Definition'' is set in italics, and the definition nubmer,
%         optional comment, and text are in roman.  The word ``definition''
%         may be replaced by ``example'' or``remark'' and similar
%         environments may be defined via
%                               \newdef{bar}{Bar}
%         When activated via
%           \begin{bar} ... \end{bar}
%           \begin{bar}[Comment] ... \end{bar}
%         the heading will be ``Bar'' instead of ``Definition''.
%
%       * New proof environments.
%         \begin{proof} ... \end{proof}
%         This produces a proof heading, and vertical space around the proof.
%         By default, every proof ends with a Halmos box at the right margin, 
%         If there isn't room for the box on the last line of text, it
%         will appear at the right margin of the next line.
%         The $\box$ may be replaced with another symbol; for example,
%         to use a $\triangleleft$, issue the following command
%                       \useHalmos{$\triangleleft$}
%         If the proof ends in a display, then issue the command
%         \qedhere to move the box to the end of the display.
%         The word ``proof'' may be replaced by ``solution'' and similar
%	  environments may be defined via
%	                      \newproof{foop}{Foop}
%         When activated via
%          \begin{foop} ... \end{foop}
%         the heading will be ``Foop'' instead of ``Proof''.
%       * New citation macro
%         To facilitate puting citations in theorem/definition remarks,
%               \citep{pages}{source}
%         is similar to
%               \cite[pages]{source}
%         but lacks the square brackets, so that nested square brackets don't
%         confuse LaTeX.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%       Patch to latex.tex to make headings for theorems end in         %
%       periods, and use normal paragraph indentation.                  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%
% Headings for theorems should end in periods, and should have ordinary
% paragraph indentation.

\def\@thmlist{\parsep\parskip \labelwidth\z@ \leftmargin\z@
 \def\makelabel##1{##1} \itemindent=\parindent
 \topsep=\smallskipamount \@trivlist}
\def\@begintheorem#1#2{\@thmlist \item[\hskip \labelsep\textbf{#1\ #2.}]\it}
\def\@opargbegintheorem#1#2#3{\@thmlist \item[\hskip \labelsep
  \textbf{#1\ #2\ \rm(#3).}]\it}
\def\@endtheorem{\endtrivlist}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%        Environments for theorems, definitions, proofs, etc.           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\let\qed=\relax
\def\useHalmos#1{\def\qed
 {{\unskip\nobreak\hfil\penalty50
   \quad\hbox{}\nobreak\hfil #1
   \parfillskip=0pt \finalhyphendemerits=0 \par}}}
\useHalmos{$\square$}
\newif\ifqed 
\def\qedhere{\tag*{$\square$}\global\qedfalse}

\def\newproof#1#2{%
\newenvironment{#1}{\topsep=\smallskipamount \partopsep=0pt
 \begin{trivlist} \itemindent=\parindent \qedtrue
 \item[\hskip \labelsep\emph{#2:}]}{\ifqed\qed\fi\end{trivlist}}%
}
\newproof{proof}{Proof}
\newproof{solution}{Solution}
%% Suggested by cotton.seed@gmail.com  Tue Jan 27 19:38:27 2009
\renewenvironment{proof}[1][Proof]{\topsep=\smallskipamount \partopsep=0pt
 \begin{trivlist} \itemindent=\parindent \qedtrue
 \item[\hskip \labelsep\emph{#1:}]}{\ifqed\qed\fi\end{trivlist}}

\def\@thmcountersep{-}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{axiom}[theorem]{Axiom}
\newtheorem{conjecture}[theorem]{Conjecture}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{property}[theorem]{property}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{question}[theorem]{Question}

% modeled on \@othm in latex.tex (for \newtheorem#1[theorem]#2)
\def\newdef#1#2{%
  {\expandafter\@ifdefinable\csname #1\endcsname
  {\global\@namedef{the#1}{\@nameuse{thetheorem}}%
\global\@namedef{#1}{\@def{theorem}{#2}}%
\global\@namedef{end#1}{\@enddef}}}}

% modeled on \@thm in latex.tex
\def\@def#1#2{\refstepcounter
    {#1}\@ifnextchar[{\@ydef{#1}{#2}}{\@xdef{#1}{#2}}}
 
% modeled on \@xthm and \@ythm in latex.tex
\def\@xdef#1#2{\@begindef{#2}{\csname the#1\endcsname}\ignorespaces}
\def\@ydef#1#2[#3]{\@opargbegindef{#2}{\csname
       the#1\endcsname}{#3}\ignorespaces}

% modeled on \@begintheorem, \@opargbegintheorem, and \@endtheorem in
% latex.tex
\let\@deflist\@thmlist
\def\@begindef#1#2{\@deflist \item[\hskip \labelsep{\it#1}\ {\rm#2.}]}
\def\@opargbegindef#1#2#3{\@thmlist \item[\hskip \labelsep{\it 
 #1\ \rm#2\ (#3).}]}
\def\@enddef{\endtrivlist}

\newdef{definition}{Definition}
\newdef{remark}{Remark}
\newdef{example}{Example}

% To facilitate putting citations in theorem/definition remarks,
%       \citep{pages}{source}
% is similar to
%       \cite[pages]{source}
% but lacks the square brackets, so that nested square brackets don't
% confuse LaTeX.

\def\citep#1#2{\cite[{#1}]{#2}}

% Change Log:
%
%       gptesler 1/26/94: topsep changed in proof and theorem environments
%       tmack    6/99:    package renamed to thmp2e.sty
%                         added in \usepackage{latexsym} before \Box command
%                         replaced \em with the latex2e \emph command; other
%                               font declarations unchanged
%                         command \citep{pages}{source} added to avoid 
%                               nested square brackets
%                         commented-out code removed
%       slkleiman 9/99:   added command \useHalmos#1
%       slkleiman 2/05:   made \useHalmos{$\Box$} the default
%       slkleiman 10/05:  defined \qedhere
%                         redefined the proof environment to accept \qedhere
%       slkleiman 12/05:  added code to undefine in \newdef
%       slkleiman 2/06:   added \newproof#1#2 and \newproof{solution}{Solution}
%       cotton.seed 1/27/09: redefined the proof environment to accept
%                            an optional argument.
