\message{: version 5mar13}%08jul12%24may11%04jan10
% These are TeX-macros Carl de Boor has found useful for mathematical typing.
% Macros that are paper-specific should be put directly into that paper's file.

% The macros are organized as follows:
%  1. draft macros
%  2. precise placement macros 
%  3. outlined boxes, big and small
%  4. font and pointsize changes 
%     (for definition, emphasis, abstracts, exercises and answers, etc.)
%  5. quoting from email messages and such, in \tt font
%  6. automatic sequencing and labelling of sections and subsections
%  7. automatic sequencing and labelling of equations and other items
%  8. citing references (also an alternative way to generate and use labels)
%  9. forward referencing
% 10. maintaining labelling and \cite without help of this file
% 11. making a table of contents
% 12. math macros

%   5mar13  added \NNe, etc, and used them in the smaller environment, as that
%          environment is eightpoint, as well as \NNtw, etc. and used them in 
%          the larger environment as that is twelvepoint.
%  08jul12 add \blank
%  24may11 introduce \abstractkey to have keywords as its second argument
%  04jan10 in ToC, switched from simple leaderfill to diaomondleaders
%  21nov09 made \divdif into a \mathord
%  19sep09 incorporate scriptstyle \CC,\FF,\NN,\RR,\ZZ into
%    \beginsmaller\endsmaller
%  23jun09 made \dvd, \sdvd magstep-independent
%  29aug08  add \Ebb, \EE
%  09jun08 improved \strikeout
%  24mar08 stored, in drafts, my standard description of the corrections format
%  23nov07 add \codim
%  04mar07 add \pinf
%  20dec06 switched from homemade open font to blackboard font, for \RR, etc
%          switched some def to let; omitted old \comment in mainbody as well
%  09nov06 because of 10dec05, removed the definition of \comment from \draft
%  02jun06 add \pagebreak (and remove duplicate def of \newline)
%  27mar06 improved \strikeout
%  25jan06 add \sdivdif and \sdvd
%  02jan06 add simplified \Figinbox (from lapslide.tex)
%  10dec05 add colorful \comment and \ct, for commenting and suggesting changes
%  08nov04 correct \rahel (to avoid use of explicit \if ... \fi  in optional
%                      text)
%  31may04 add \title, \author, \abstract
%  02mar04 (add \next[page,par,line] as syns for \new[page,par,line])
%  17mar03 (add \dvd#1; update the def of excite in 10; edit formciteaddl;
%           add \lessthan, \morethan for use in html pages;
%           put italic endcorrection into \dword)
%  05jan03 (enlarge \Boxit to \Boxbody, providing also \Boxtop and \Boxbot})
%  21jul02 (add \crowned; use it to define \glcrown)
%  07may02 (update cite material under 10.)
%  09apr02 (add \strikeout)
%  28sep01 (add \slall)
%  22aug01 ( add \tocone and \toctwo for variable indents in TOC, 
%           improve  \openS, add \sopenS)
%  05jun00 ( add \st as the macro in \{ A \st B\})
%  16feb00 ( add \lessim, i.e., < atop of ~; make \divdif a mathord )
%  29dec99 (add \more<...>, for <...>=Section, Heading, section, heading, etc)
%  25oct99 (add \newline, \newpage, make \glcrown a mathord)
%  04oct99 (update comments re 10., add a subcrown, correct \cocenter)
%  30apr99 (\dword, \eword as alternatives to \defw and \empw; correct \rhl)
%  17apr99 (add \ptgridbox as \gridbox, but using truept rather than truecm)
%  25feb99 (comments about using \label with separate counts for thms, lemmas, etc
%           (grace George Kyriazis); comments about making do without this file)
%  16feb99 (add \defw, \empw, to identify words being defined resp. emphasized;
%  10feb99 (add \ppoint for more choice in precise placement)
%  24jan99 (make \RR, \NN, \ZZ etc the default macro for open caps)
%  06aug98 (add missing \fi in percented part of \elabel)
%  06jul98 (improve \setnoteq, add \abel, \beginlarger etc, update toc handling)
%  07jun98 (fix up all writes, using tokens, to avoid expansion of any macros)
%  25may98 (better \atoprightarrow, \belowrightarrow, grace Scott Kersey)
%  17feb98 (add \nnorm (= a triple-bar norm), \lot (= lower order term) )
%  23oct97 (add \nextline)
%  15oct97 (add comment re \label about switching from \leqno to \eqno)
%  27sep97 (add \cocenter#1in#2, as well as \scocenter and \sscocenter)
%  11sep97 (add \rememberalso, \choices, \samelabel, correct elabel explanation )
%  19 jun 97 (correct oversight in \nexttoc;  correct (grace Kirk Haller)
%              possible toc problem in \[Hh ]eading )
%  25 may 97 (correct error in \gridbox noticeable because of heavy grid lines,
%             correct \boxit, add \shadowboxit)
%  25 feb 97 (repair \mbf, also provide \msbf and \mssbf, for sub(sub)scripts)
%  18 dec 96 (put an initial \, into def of \dd)
%  11 oct 96 (change \def to \let where appropriate, and metric units to em's)
%  20 jul 96 (add \global and \relax to \[Ss][ub]ection definition) 
%  11 jun 96 (switch \boxit to \Boxit and make \boxit a simple bounding box)
%  04 jun 96 (adjust \set; improve \endproof, thanks to Gerhard Opfer)
%  29 may 96 (add \Norm, \Inpro, \Ceil, \Floor, \Paren, thanks to Paul Nevai)
%  22 may 96 (\boxsize is also a variable in \epsf; changed to \Boxitwidth)
%  16 may 96 (add Larry's macro \mbf for darkening a letter)
%  02 apr 96 (modify definition of \elabel to make it easier to use)
%            (NOTE: this forces a change in all explicit uses of \elabel)
%  18 mar 96 (improve comments re stand-alone use of \label and \cite)
%  22 jan 96 (make every 5th gridline in \gridbox yet wider)
%  31 oct 95 (change blackmark to border undefined item and make a note in log)
%  11 oct 95 (add \margincall for marginal notes in draft mode)
%   9 sep 95 (prevent \nextref from using \rh when \rl is undefined)
%  30 jul 95 (add conditional \marginal printout to \rhl; correct and improve
%             toc material)
%  12 jul 95 (add \goodbreak in front of headings, \updated to draft headline)
%  09 jul 95 (add a default definition for \nextref, file name to draft head)
%  06 jul 95 (activate comment macro when draft is active)
%  18 apr 95 (change mem to aux, etc)
%  10 mar 95 (add comments re stand-alone use of \label and \cite , add \rhl )
%  27 feb 95 (add \beginquott, \endquott)
%   1 feb 95 (clarify \draft setup, thanks to Tom Hogan)
%   1 jan 95 (add \beginsmaller, \endsmaller)
%  31 dec 94 (simplify \inputifthere, introduce \formciteaddl )
%  17 dec 94 (add \prelabel (with thanks to Tom Hogan), expand \blackmark) 
%  20 sep 94 (add \trace and \su[bp]setnoteq)
%  30 Aug 94 (modify \cite use, thanks to Shayne Waldron)
%  24 Aug 94 (modify draft headline, thanks to Zhao Kang)
%   1 Aug 94 (add \cutoff, \restrict, \mapinto)
%  23 Jun 94 (add \cite, a mechanism for citing references)
%  28 May 94 (adjust old \(p)remember to new \marginal)
%  11 May 94 (define \dd, \ee, \ii for use as integration, 2.7218.., \sqrt{-1})
%             this redefines an earlier use of \dd, now taken up by \fromto )
%  28 Apr 94 (add \set and \Set )
%  24 Apr 94 (switch to use of  \label[\<name>]/)

% 1. -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--->  draft macros

% These macros set up certain standard conditions for drafts. These are
% activated by saying  \draft  and include the printing of a date stamp (along
% with file name \filenamed (else \jobname) and date of last update (in 
% \updated) if available), as well as printing of all label names into a 
% slightly enlarged left margin. In addition, \ifdraft is set to true, making 
% it possible to make other actions in one's file dependent on whether or not 
% a draft is being prepared; e.g., this activates \comment and \margincall.

\newif\ifdraft\newcount\hour\newcount\minutes
\def\draft{\drafttrue\hoffset=.8truecm\showlabeltrue
\headline={\sevenrm \hfill \ifx\filenamed\undefined\jobname\else\filenamed\fi%
(.tex) (as of \ifx\updated\undefined???\else\updated\fi)
\TeX'ed at {\hour\time\divide\hour by 60{}%
\minutes\hour\multiply\minutes by 60{}%
\advance\time by -\minutes
\the\hour:\ifnum\time<10{}0\fi\the\time\  on \today\hfill}}
}

\def\today{\number\day\space% 
\ifcase\month\or January\or February\or March\or April\or May\or June\or
 July\or August\or September\or October\or November\or December\fi%
\space\number\year}

% for showing edits made, here is
\def\strikeout#1{\setbox0=\hbox{#1 }%
\hbox to \wd0{\leaders\hbox to .4em{\hss/\hss}\hfil}\hskip-\wd0\relax\box0}

% here are two colorful macros, for inserting a comment, and for suggesting
% a change from old to new; use requires
\input colordvi
\def\comment#1{\Blue{{\bf \  #1}}}
\def\ct#1#2{\Green{{\bf[}\Red{#1}{\bf]}\hbox{$\;\Rightarrow\;$}{\bf[}\Red{#2}{\bf]}}}
% to disable these macros in a file, use
%\def\comment#1{}
%\def\ct#1#2{#1}

%The list uses the following format
%
%page/paragraph or item/line: A --> B [C]
%
%to indicate that, at the specified place, A should be changed to B, with C an
%optional comment. Either A or B may be empty, and paragraph numbers or line
%numbers may be negative to indicate a count from the bottom.

% to cut out temporarily a piece of text without percenting it out, use
\def\blank#1{}

% 2. -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--->   precise placement macros 

% To force a new paragraph within a formal statement whose TeX-end is indicated
% by an empty line, remember that TeX does not expand macros while looking for
% the end of a macro argument and use
\def\newpar{\par}\let\nextpar\newpar
% In the same spirit: 
\def\newline{\hfill\break\noindent}\let\nextline\newline
\def\newpage{\vfill\eject}\let\nextpage\newpage

% to retain a page break in the middle of a paragraph even though some
% material has been added/deleted, use, at that place, 
\def\pagebreak{break\eject\noindent}

% to leave a blank space of specified depth in true cm, use
\def\skipp#1{\hrule height0pt width0pt depth#1truecm}

% the next macro just draws a horizontal line with some space above and below.
\def\drawline{\bigskip\hrule\bigskip}

% the next macros are useful for placing material precisely on the page
% using a grid that can be turned off eventually.

% The macro
%                         \gridbox#1/#2/#3
% builds a box vertically to #1 truecm and horizontally to #2 truecm, overlays
% that box with gridlines exactly 1truecm apart (with every fifth line heavier).
% Grid is turned off by saying \showgridfalse.  #3 should consist of one or more
% statements of the form  
%   \point(d,r){...}  or \cpoint(d,r){...} or  \ppoint ij(d,r){...}
% which have the effect of putting the material {...} onto the page in such 
% a way that its upper left corner, respectively its center, respectively its
% i,j-point (with, e.g., 1,0 the left midedge and 2,2 the lower right corner)
% ends up  d truecm  down and  r truecm  to the right of the upper left 
% corner of the gridbox.  
%    Note that {...} might be the local way to include a picture file. E.g.,
%         \point(#1,0){\special{ps: plotfile <name>.ps}}
% would include the file <name>.ps (presumably a postscript file), giving it
% the lower left corner of the gridbox as the  currentpoint  (and thus 
% controlling the placement of the figure in  <name>.ps  on the page).
%
% TeX should be in vertical mode when calling on \gridbox. E.g., 
%    \centerline{\vbox{\gridbox3/4.4/{\cpoint(1,1){$0$}\ppoint21(2,1){$0$}}}}
% would generate a centered gridbox and print a zero centered at the (1,1) 
% point of that box and also one centered atop the (2,1) point. 
%     See \gridbox uses in  \Figpls, \Figinbox, etc. in ./ps/figure.tex
% or the simplified \Figinbox below.
%
% The macro 
%                         \ptgridbox#1/#2/#3
% differs from gridbox only in that the units are pt rather than truecm and,
% correspondingly, the spacing of gridlines is by 20 units rather than 1.
% This macro is particularly useful in conjunction with recent versions of
% ghostview which supply the current pointer position in pt (albeit as 
% (pt from left, pt from below) rather than the (pt from above, pt from left)
% used here). Be sure to use \magnification1000 while checking placements.

\def\gridunits{truecm}\newcount\tickskip\tickskip1\newcount\majortick\majortick5

\def\ptgridbox#1/#2/#3{
{\def\gridunits{pt}\tickskip20\multiply\majortick by\tickskip%
 \gridbox#1/#2/{#3}}}

\def\gridbox#1/#2/#3{
\vbox to #1\gridunits{#3
\ifshowgrid\tickcount=0
  \loop\cgridw%
   \vbox to 0pt{\kern\tickcount \gridunits\hrule width#2\gridunits height\gridwidth\vss}
   \nointerlineskip \advance\tickcount by \tickskip
   \ifdim\tickcount pt<#1pt\repeat % Note: #1, #2 need not be integers
  \hbox to 0pt{\tickcount=0\hbox to 0pt{\tick#1/\hss}\advance\tickcount by \tickskip%
 \loop\ifdim\tickcount pt<#2pt\nexttick\tickskip#1/\advance\tickcount by \tickskip \repeat\hss}
\else \vbox to 0pt{\hrule width#2\gridunits height0pt\vss}
\fi\vfil}\vfil}

% The next macro is used in the macros for placing material within the grid.
\def\dpoint(#1,#2)#3{\vbox to 0pt{\kern#1
   \hbox{\kern#2{#3}}\vss}\nointerlineskip}

% The following places the upper left corner of {#3} at gridpoint (#1,#2)
\def\point(#1,#2)#3{\dpoint(#1\gridunits,#2\gridunits){#3}}
% The following places the center of {#3} at gridpoint (#1,#2)
\def\cpoint(#1,#2)#3{\ppoint11(#1,#2){#3}}
% The following places the #1,#2-point of {#5} at gridpoint (#3,#4), with
% 0,0 the upper left corner, 1,1 the center, and 2,2 the lower right corner,
% and, correspondingly, 0,1 the center of the upper edge, etc.
\def\ppoint#1#2(#3,#4)#5{\setbox0=\hbox{#5}
   \dimen0=\ht0\advance\dimen0 by\dp0\divide\dimen0 by-2
   \multiply\dimen0 by#1\advance\dimen0 by#3\gridunits
   \dimen1=\wd0\divide\dimen1 by-2\multiply\dimen1 by#2
   \advance\dimen1 by#4\gridunits\dpoint(\dimen0,\dimen1){#5}}

% The next macros are used in generating the grid:
\newcount\rmndr   % this macro returns the remainder of #1 mod #2
\def\rem#1#2{\rmndr=#1{}\divide\rmndr by#2{}%
\multiply\rmndr by-#2{}\advance\rmndr by #1}
\def\cgridw{\gridwidth\finegridw{}\rem\tickcount\majortick% every fifth line, 
\ifnum\rmndr=0{}\gridwidth\roughgridw\fi}          % ... use double-thick line.

\def\tick#1/{\cgridw\vrule width\gridwidth height0pt depth#1\gridunits}
\def\nexttick#1#2/{\hbox to#1\gridunits{\hfil\tick#2/}}
\newcount\tickcount
\newdimen\finegridw\finegridw0.4pt\newdimen\roughgridw\roughgridw1.6pt
\newdimen\gridwidth
\newif\ifshowgrid \showgridtrue

% %Test \gridbox with the following code (only the end crosses should show):
% \newcount\hor\newcount\ver
% \centerline{\vbox{\gridbox20/16/{
% \hor0\loop\ver0
% {\loop\cpoint(\hor,\ver){$+$}
% \advance\ver by 1\relax\ifnum\ver<17\repeat}
% \advance\hor by 1\relax\ifnum\hor<21\repeat
% }}}

% The macro
%     \Figinbox#1(#2,#3)#4#5
% places the eps-file #1 with its upper left corner in the upper left corner of
% a grid #2cm down and #3cm across. It scales the figure in the eps file to be
% #4cm across. It places the additional material #5, presumably labeling of the
% figure, according to the placing information as specified by \point, 
% \cpoint,\ppoint commands; see placement.tex for details which will have to
% be input.
% The command
%   \showgridtrue
% will make the underlying grid visible, of help when figuring out exact 
% placement of the labeling.

\input epsf
\def\figsource{}
\newif\ifshowfigname
\def\Figinbox#1(#2,#3)#4#5{\vbox{\gridbox#2/#3/{
\ifshowfigname\point(0,0){#1}\fi 
  \point(0,0){\epsfxsize=#4truecm \epsfbox{\figsource #1.eps}}#5}}}

% 3. -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*->   outlined boxes, big and small

% \boxit  puts its argument into a box.
% \shadowboxit adds a shadow to the box from \boxit.
% \Boxit  puts the argument into a box of specified width, and puts that box
%    into a math display.
% \Boxtop \Boxbot do the same, except that they leave off the bottom, resp the
%    top, thus can be used for Boxes split across two pages.

\def\boxitmargin{1.5pt}\def\boxitkern{\kern\boxitmargin}
\def\boxit#1{\setbox0=\hbox{#1}\vbox{\hrule\hbox{\strut\vrule\boxitkern
  \vbox{\noindent\hsize\wd0\relax\box0}\boxitkern\vrule}\hrule}}
\def\shadowboxit#1{\setbox0=\hbox{\boxit{#1}}
\vtop{\copy0\nointerlineskip
      \hbox{\kern\boxitmargin\vbox{\hrule height\boxitmargin width\wd0}}}%
\kern-\boxitmargin%
\lower\boxitmargin\hbox{\vrule height\ht0 depth\dp0 width\boxitmargin}}

\def\Boxitwidth{\hsize15.6truecm}\def\Boxitmargin{\kern10pt}
\def\Boxbody#1/#2/#3/{$$\vbox{\if#2\empty\else\hrule\fi
     \hbox{\vrule\Boxitmargin
     \vbox{\Boxitmargin\vbox{\Boxitwidth\noindent\strut #1}
     \Boxitmargin}\Boxitmargin\vrule}\if#3\empty\else\hrule\fi}$$}
\def\Boxit#1{\Boxbody{#1}/1/1/}
\def\Boxtop#1{\Boxbody{#1}/1//}
\def\Boxbot#1{\Boxbody{#1}//1/}

% another boxit, found somewhere; try it out some time.
%\def\boxit#1{\lower8pt\vbox{\hrule height2pt \hbox{\vrule width2pt \kern8pt
% \vbox{\kern8pt\hbox{#1}\kern8pt}\kern8pt\vrule width2pt}\hrule height2pt }}

% Make a square box outline, of sidelength #1 and with line thickness #2.
\def\makeblanksquare#1#2{
\dimen0=#1pt\advance\dimen0 by -#2pt
      \vrule height#1pt width#2pt depth0pt\kern-#2pt
      \vrule height#1pt width#1pt depth-\dimen0 \kern-#1pt
      \vrule height#2pt width#1pt depth0pt \kern-#2pt 
      \vrule height#1pt width#2pt depth0pt
}
% Here is a particularly nice box, for end_of_proof or for the boxspline box
\def\boxx{\makeblanksquare6{.4}}
\def\subboxx{\makeblanksquare4{.3}}

% 4. -*-*-*-*-*-*-*-*-*-*-*---> change to different pointsizes (for abstracts,
%-*-*-*-*-*-*-*-*-*-*-*--->        exercises and answers, highlights, etc.)
% Put the material between  \beginsmaller  and  \endsmaller, making sure to
% leave an empty line prior to the \endsmaller to make certain that the switch
% back to ordinary baselineskip doesn't happen too soon.
\def\beginsmaller{\begingroup\eightpoint
\let\CC\CCe\let\FF\FFe\let\NN\NNe\let\QQ\QQe\let\RR\RRe\let\ZZ\ZZe
}
\def\endsmaller{\endgroup}
% The details for this are taken from pp413-415 of THE TEXBOOK:
  \font\eightrm=cmr8   \font\sixrm=cmr6
   \font\eighti=cmmi8   \font\sixi=cmmi6
  \font\eightsy=cmsy8  \font\sixsy=cmsy6
  \font\eightbf=cmbx8  \font\sixbf=cmbx6
  \font\eighttt=cmtt8
  \font\eightit=cmti8
  \font\eightsl=cmsl8
   \newskip\ttglue
\def\eightpoint{\def\rm{\fam0\eightrm}% switch to 8-point type
  \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm
  \textfont1=\eighti  \scriptfont1=\sixi  \scriptscriptfont1=\fivei
  \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy
  \textfont3=\tenex   \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \textfont\itfam=\eightit  \def\it{\fam\itfam\eightit}%
  \textfont\slfam=\eightsl  \def\sl{\fam\slfam\eightsl}%
  \textfont\ttfam=\eighttt  \def\tt{\fam\ttfam\eighttt}%
  \textfont\bffam=\eightbf  \scriptfont\bffam=\sixbf
   \scriptscriptfont\bffam=\fivebf  \def\bf{\fam\bffam\eightbf}%
  \tt \ttglue=.5em plus.25em minus.15em
  \normalbaselineskip=9pt
  \setbox\strutbox=\hbox{\vrule height7pt depth2pt width0pt}%
  \let\sc=\sixrm  \let\big=\eightbig  \normalbaselines\rm}

% Put the material between  \beginlarger  and  \endlarger, making sure to
% leave an empty line prior to the \endlarger to make certain that the switch
% back to ordinary baselineskip doesn't happen too soon.
\def\beginlarger{\begingroup\twelvepoint
\let\CC\CCtw\let\FF\FFtw\let\NN\NNtw\let\QQ\QQtw\let\RR\RRtw\let\ZZ\ZZtw}
\def\endlarger{\endgroup}
% The details for this are taken from pp413-415 of THE TEXBOOK:
  \font\twelverm=cmr12   
   \font\twelvei=cmmi12 
  \font\twelvesy=cmsy10 at 12pt
  \font\twelvebf=cmbx12
  \font\twelvett=cmtt12
  \font\twelveit=cmti12
  \font\twelvesl=cmsl12
   \newskip\ttglue
\def\twelvepoint{\def\rm{\fam0\twelverm}% switch to 12-point type
  \textfont0=\twelverm \scriptfont0=\tenrm \scriptscriptfont0=\eightrm
  \textfont1=\twelvei  \scriptfont1=\teni  \scriptscriptfont1=\eighti
  \textfont2=\twelvesy \scriptfont2=\tensy \scriptscriptfont2=\eightsy
  \textfont3=\tenex   \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \textfont\itfam=\twelveit  \def\it{\fam\itfam\twelveit}%
  \textfont\slfam=\twelvesl  \def\sl{\fam\slfam\twelvesl}%
  \textfont\ttfam=\twelvett  \def\tt{\fam\ttfam\twelvett}%
  \textfont\bffam=\twelvebf  \scriptfont\bffam=\tenbf
   \scriptscriptfont\bffam=\eightbf  \def\bf{\fam\bffam\twelvebf}%
  \tt \ttglue=.5em plus.25em minus.15em
  \normalbaselineskip=14pt
  \setbox\strutbox=\hbox{\vrule height10pt depth4pt width0pt}%
  \let\sc=\tenrm  \let\big=\twelvebig  \normalbaselines\rm}

%%%%%% identify words being defined and words being emphasized, making it 
%%%%%% easy to switch to different ways for doing this on an editor's demand:
\def\defw#1{{\bf#1}}\let\dword\defw
\def\empw#1{{\it#1\/}}\let\eword\empw

% 5. -*-*-*-*-*-*-*-*-*-*-*---> quote from email messages and such, in \tt font
\def\beginquott{\vskip0pt\noindent%
\begingroup\parskip0pt\parindent10pt\tt\obeylines}
\def\endquott{\endgroup\medskip}

% 6. -*-*-*-*-*-*-*-*-*-*-*---> automatic sequencing and labelling of sections
%-*-*-*-*-*-*-*-*-*-*-*--->   and subsections
\newcount\sectionno
\newcount\subsectionno
\newcount\subsubsectionno
\sectionno=0
\def\Section#1{\global\advance\sectionno by 1\relax\subsectionno=0%
   \equationno=0\Heading{\the\sectionno. #1}}
\def\subsection#1{\global\advance\subsectionno by 1\relax\subsubsectionno=0%
   \heading{\the\sectionno.\the\subsectionno.  #1}}
\def\ubsection#1{\vskip-\bigskipamount\subsection{#1}}
\def\subsubsection#1{\global\advance\subsubsectionno by 1\relax%\equationno=0%
   \heading{\the\sectionno.\the\subsectionno.\the\subsubsectionno  #1}}
\def\ubsubsection#1{\vskip-\bigskipamount\subsubsection{#1}}
% (use \ub[sub]section instead of \sub[sub]section if it is the next thing
% after a \[sub]section)

% 7. -*-*-*-*-*-*-*-*-*-*-*---> automatic sequencing and labelling of equations
%-*-*-*-*-*-*-*-*-*-*-*--->   and other items, and the saving thereof

\newcount\equationno\equationno=0
% The intent is to label equations and other formal statements consecutively
% and automatically, and to provide means to refer to each labeled item, in
% text preceding or following it, by the name given it. (See also  9. forward
% referencing, below: briefly, prefix a label with  \prelabel  if it is only
% defined later in the file.) (See  10. maintaining labelling,  below, for what
% to do if the labelling is to be maintained without help of this file.) 
% (See also `Using more than one enumeration' later in this section, for how 
% to enumerate Theorems, Lemmas, etc, separately.)

% First, a (silly) example: 

%%  Consider the following great equations
%%$$ a = a \label\greatstuff/$$
%%and
%%$$ a = a. \label/$$
%%
%%Now, some might claim that (\greatstuff) is merely a tautology, and,
%%as this is the same as (\lastlabel), they are right; however, one should
%%keep in mind the following Theorem \nextlabel:
%%
%%\proclaim Theorem \label/. All is in vain.
%%
%%Theorem \lastlabel\ implies (\prelabel\morestuff a) below, via the following
%%
%%\proclaim (\label\corinvain/) Corollary. Vain is nonempty.
%%
%% Corollary \corinvain\ explains much, because
%%\item{(i)} it implies that
%%$$\hbox{\rm Vain} \not= \emptyset,\elabel\morestuff/\kern-\parindent/a/$$
%%\item{(ii)} but does not imply that
%%$$\hbox{\rm Vane} \not= \emptyset,
%%\samelabel\elabel/\kern-\parindent/b/$$


\def\label#1/{\elabel{#1}///}
\def\elabel#1/#2/#3/{\global\advance\equationno by 1 %
\ifx#1\empty\else\emember#1%
\ifshowlabel\marginal{\string#1}\fi\fi%
\ifprintlabel\ifmmode\leqno{#2(\formeq#3)}\else#2\formeq#3\fi\fi} 
% If the equation number is to appear on the right, then replace the preceding
% two lines by the following two lines (without the initial percent :-):
% \ifmmode \eqno{#2(\formeq#3)}\ifshowlabel\rlap{\fiverm \string#1}\fi%
% \else\ifshowlabel\marginal{\string#1}\fi#2\formeq#3\fi\fi}

%% at times, don't want to print the new label right then but only later, using
%% \lastlabel. In that case, use \abel[\<name>]/ instead of \label:
\newif\ifprintlabel\printlabeltrue
\def\abel#1/{{\printlabelfalse\label#1/}}

\def\samelabel{\global\advance\equationno by-1\relax}

%  \label[\<name>]/  increments \equationno by 1, then puts that number right 
% there, in a form specified by \formeq , with the present default being
\def\formeq{\the\equationno}
% but which one could override, e.g., by
%      \def\formeq{\the\sectionno.\the\equationno}
% or by
%      \def\formeq{\the\sectionno.\the\subsectionno.\the\equationno}
%
%   The argument \<name>  is usually empty (hence the need for the terminating
% slash whenever  \label.../  is used). If  \<name>  is not empty, then the
% whole argument must be of the specified form, \<name> , (including the 
% leading backslash), and must be terminated by that final slash. The 
% effect is that the macro  \<name>  is defined to contain the current value
% of  \equationno , in the form specified by  \formeq , making it easy to
% refer to the labelled item in the rest of the document, as illustrated in the 
% silly example above.

% As the silly example shows, it is possible to refer to the nearest labeled
% item even if it was not given a name, using the macros
\def\lastlabel{\formeq}
\def\nextlabel{{\advance\equationno by 1 \formeq}}

% To be sure (see the silly example)  \label\<name>/  is also used to label 
% equations, in exactly the spot into which  \leqno{...}  ordinarily goes.  
% In that case, the incremented  \equationno  will appear, in the form 
% specified by  \formeq , enclosed in parentheses.

%    Note that the present default is to put the equation number on the left
% side of the page, but that is easily changed, as indicated at the end of the
% above definition of \elabel.

% If the equation label is to show some additional things, use instead
%  \elabel[\<name>]/<leftmaterial>/<rightmaterial>/ .  For example, 
% $$  .... \elabel\goodstuff//a/$$
% would append the letter  a  to the displayed equation number. Note the use of
% \samelabel in the subsequent
% $$  .... \samelabel\elabel//b/$$
% to be certain that this gets the same numerical label.  As another example, 
% \item{...} ... $$ ... \elabel\goodstuff/\kern-\parindent//$$
% would put the equation label next to the left margin in spite of the fact
% that the equation occurs inside an  \item . For convenience, here is a macro
% for the latter use, and even one for use inside an \itemitem :
\def\itemlabel#1/{\elabel#1/\kern-\parindent//}
\def\itemitemlabel#1/{\elabel#1/\kern-\parindent\kern-\parindent//}

\newif\ifshowlabel
% Use of  \label\<name>/  will also put <name> in small letters into the
% left margin, provided  \showlabeltrue  has been mentioned earlier (as is
% done by the macro \draft above).

% The macro 
\def\marginal#1{\strut\vadjust{\kern-\strutdepth%
\vtop to \strutdepth{\baselineskip\strutdepth\vss\llap{\fiverm#1\ }\null}}}
\def\strutdepth{\dp\strutbox}
% ... used for this purpose is good for other marginal notes, as in
\newdimen\marginwidth\marginwidth.9truein
\def\margincall#1{\ifdraft\marginal{\vbox{\overfullrule0pt\hsize\marginwidth%
\noindent #1}}\fi}

%%%%%%%%% Using more than one enumeration:
% Although this makes it much harder to find a labeled item, some people 
% unaccountably prefer to sequence different items separately. It is easy
% to adapt use of \label to this. If, e.g., theorems are to be sequenced 
% separately, introduce the corresponding count early on, e.g., by the command 
%   \newcount\thmno\thmno0
%   \def\tlabel#1/{{\let\equationno\thmno\label#1/}}
% thereby defining the command \tlabel, to be used just as \label: E.g., 
%   \proclaim Theorem \tlabel\greatthm/. Omnis est Vanitas.

%%%%%%%%% Cross reference between chapters of a book:
\newif\ifrememberchapter\rememberchapterfalse 
%     When writing a book, one also wants a second file, in which each item 
% also reflects the particular chapter in which it appears, e.g., in the form
%    \def\<name>\chapterno{\chapterno.\formeq} 
% For this, the following statements should appear near the beginning of the 
% \TeX-file for that chapter:
%
%   \def\chapterno{...}    (with  ...  being, e.g., IV , if it's Ch. 4 .)
%   \rememberchaptertrue
%   \newwrite\chpaux
%   \immediate\openout\chpaux=\jobname.\chapterno
%
% One would  \inputifthere{<filename>.<chapterno>}  in other chapter files
% and refer there to the saved number via  \<name><chapterno>

\def\emember#1{\ifrememberchapter % subsequent percents prevent unwanted blanks
\immediate\write\chpaux{\def\string#1\chapterno{\chapterno.\formeq}}\fi%
\immediate\write\aux{\def\string#1{\formeq}}%
\global\edef#1{\formeq}}
%     The \emember mechanism can also be used to record other numbers, for
% use elsewhere, via the macro
\def\rememberalso#1as#2{{\def\formeq{#1}\remember#2}}
% It is essential here that the whole action is enclosed in braces, to keep
% the change in \formeq local.  For example, to save the current section 
% number (found in \sectionno) as  \greatsection  for reference in other 
% places, use, right after \Section{...}, 
%   rememberalso\the\sectionno as\greatsection
\def\remember#1{\ifshowlabel\marginal{\string#1}\vskip-\baselineskip\fi%
\emember#1}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% old stuff, retained for backward compatibility:
\def\equation{\leqno{\listitem}}
\def\itemequation{\leqno{\nextequationno{\kern-\parindent(\formeq)}}}
\def\iitemequation{\leqno{\nextequationno{\kern-\parindent\kern-\parindent%
(\formeq)}}}
% This uses \listitem to increment the current value of  \equationno  by 1 
% and puts that value into the equationnumber display. Note the present default
% is to put the equation number on the left side of the page.
%
% To save the current  \equationno  for later reference, use:  \remember\<name> 
% To save the next one to be set, use instead: \premember\<name>
% Either way, this will define the control sequence \<name> to be the sequence 
% of character tokens which spells the current, resp. the next, value of
%  \equationno , as in the following example: 

%    Consider the following great equation
%   $$ a = a. \equation$$
%   \remember\greatstuff
%   Now, some might claim that (\greatstuff) is merely a tautology, and,
%   as this is the same as (\lastequation), they are right; however, ...

% To use this saved `equation number' elsewhere in the file, use \<name>

% 
% Use of \remember or \premember will also put <name> in small letters into the
% left margin, provided  \showlabeltrue  has been mentioned earlier. See
% earlier explanatory material.

\def\premember#1{{\advance\equationno by 1 \remember#1}\vskip-\baselineskip}
\def\lremember#1{{\advance\equationno by 1 \remember#1}\vskip0pt}
\def\lastequation{\formeq}
\def\nextequation{{\advance\equationno by 1 \formeq}}
\def\nextequationno#1{\global\advance\equationno by 1 #1}
\def\listitem{\nextequationno{(\formeq)}}
\def\istitem{\nextequationno{\formeq}}

\def\enditems{\item{}\vskip -\baselineskip} % used to be needed since TeX 
               % used to treat last item in a proclaim list wrongly.
               % It can also be used to terminate a list of items within a
               % proclaim, but for that already \vskip-0pt will work, as will
               % \newpar defined below.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   end of old material 

% 8. -*-*-*-*-*-*-*-*-*-*-*---> citing references (also an alternative way to
%-*-*-*-*-*-*-*-*-*-*-*---> generate and use labels):

%   The intent is to provide informal referencing as well as forward 
% referencing (q.v.) for classes of items. The particular instant is tailored 
% to the citing of items from the bibliography at the end of the paper, hence 
% the use of the word  \cite .

%   First, an example which (yeeechhhh!) simply serializes the references:

%% We quote from \cite{thunk: p.-3}:
%% ``Knuth's book, \cite{knuth1}, is remarkable in that it contains all 
%% information about \TeX\ needed, --- all one has to do is find it.''
%% However, how would \formcite{\citthunk} know?
%% 
%% \centerline{References}
%% \newcount\refnumber
%% \def\nextref{\global\advance\refnumber by 1 \def\rl{\the\refnumber}%
%% \item{\defcite{\rh}}}
%% 
%% \rhl{knuth1}\nextref
%% D. Knuth, {\it The \TeX book\/}, Addison-Wesley, 1984.
%% 
%% \rhl{thunk}\nextref
%% E. Thunk, Who would have thunk it?, Yelsew J. {\bf 4}, (1994), 3--7.

%   This could be simplified by absorbing \rhl into \nextref
% using

%% \def\nextref#1{\global\advance\refnumber by 1 \rhl{\the\refnumber}%
%% \item{\defcite{#1}}}
% and, e.g.
%% \nextref{knuth1}
%% D. Knuth, {\it The \TeX book\/}, Addison-Wesley, 1984.
%% 

%   If one wanted to use instead some more interesting labels, e.g.,  K  for
% the first and  T  for the second, one would have to change the Reference part 
% of the example to something like this:

%% \centerline{References}
%% \def\nextref{\item{\defcite{\rh}}}
%% 
%% \rhl{knuth1:K}\nextref
%% D. Knuth, {\it The \TeX book\/}, Addison-Wesley, 1984.
%% 
%% \rhl{thunk:T}\nextref
%% E. Thunk, Who would have thunk it?, Yelsew J. {\bf 4}, (1994), 3--7.


%   If, in the second way, one wants to use the reference label also as its
% handle, one would have only the intended label as the argument for \rhl .

%   The \rhl macro makes available (to the \defcite macro below) the reference
% *HANDLE*, \rh , and the reference *LABEL*, \rl . The former gives the name by
% which to refer to the reference when citing it in the text, the latter
% specifies how the citation should be printed. E.g., in the last example
% above, \cite{thunk} will expand to  [T]  (if \formcite has standard form).

\def\rhl#1{\rahel#1::/}
\def\rahel#1:#2:#3/{\edef\rh{#1}\def\next{#2}\ifx\next\empty\edef\rl{#1}%
\else\rhllabel\edef\rl{#2}\fi}
\def\rhllabel{\ifshowlabel\vskip-\baselineskip\marginal{\rh}\fi}

%    Here is a default definition of \nextref which defines a reference handle
% if \rl is defined; else it simply serializes the references.

\newcount\refnum\refnum0
\def\nextref{\ifx\rl\undefined%
\global\advance\refnum by 1{}{\def\rl{\the\refnum}\item{\defcite{\rl}}}\else
\item{\defcite{\rh}}\fi}

%   The \cite macro used in the examples is:

\def\cite#1{\excite#1::/}
\def\excite#1:#2:#3/{\edef\griff{cit#1}%
\formcite{\plazieres\def\next{#2}\ifx\next\empty\else\formciteaddl{#2}\fi}}

% Note that  \cite  expects its argument to be of the form  referencehandle
% optionally followed by  :other_stuff , with  other_stuff a page or other item
% reference. This makes it impossible to have a colon as part of a reference
% handle or having a / as part of the other_stuff (except within braces).

\def\defcite#1{\edef\griff{cit#1}\edef\inhalt{\rl}\definieres\cite{#1}}

%   The  \defcite#1  macro defines the control sequence  \cit#1  and gives it
% the value of  \rl  (assumed to be defined beforehand, see the example), while
%  \cite{#1} expands to the value of the control sequence  \cit#1  but placed
% in whatever form (brackets, boldface, etc.) has been set by  \formcite .
% The #1 part of the control sequence can be any alphanumeric string;
% in particular, in contrast to the  \label  macro above, it can contain
% digits. However, if  #1  only contains letters, then it is also possible to
% use  \cit#1  directly, without going through  \cite  (see the above example).

%   The particular form in which the reference and additional material within
% the reference is to appear is defined next;
\def\formcite#1{{\bf[}#1{\bf]}}
\def\formciteaddl#1{: #1}

%   The supporting macros, \plazieres  and  \definieres , are set up to make
% it easy to use variants of  \cite  and  \defcite , using prefixes 
% other than  cit  in the resulting class of labels. A major point of the setup
% is the use of  \jobname.aux  to record all these control sequences, for 
% forward referencing (as is essential since the bibliography only appears at 
% the end of a paper). Since this may also be of use for forward referencing
% of (other) labels, here is the macro \prelabel that will simply place its 
% argument if it is defined; otherwise, it will place its argument between
% two black marks and print a warning, but will otherwise not disturb the 
% flow of TeX:

\def\prelabel#1{\ifx#1\undefined\xdef\esfehlt{\string#1}\blackmark\else{#1}\fi}
\newcount\blackmarks\blackmarks0
\def\blackmark{\ifnum\blackmarks=0\global\blackmarks1%
\write16{===================================================================}%
\write16{|| Some forward reference is as yet undefined. Re-TeX this file! ||}%
\write16{===================================================================}%
\fi\immediate\write16{undefined forward reference: \esfehlt}%
{\vrule height10pt width3pt depth2pt}\esfehlt%  <----  this is the black mark
{\vrule height10pt width3pt depth2pt}}

% Assuming that  \griff  is defined to be  <string> ,  the following macro
% will define a control sequence \<string> and give it the value of  \inhalt . 
\def\definieres{\expandafter\xdef\csname\griff\endcsname{\inhalt}
\def\leerplatz{ }\expandafter\immediate\write\aux{%
\string\expandafter\def\string\csname%
\leerplatz\griff\string\endcsname{\inhalt}}}

% Assuming that  \griff  has the value  <string> , the following macro expands 
% to the contents of  \<string> , if previously defined by use of \definieres .
% Otherwise, it expands to <string> bordered by two black marks.
\def\plazieres{\expandafter\ifx\csname\griff\endcsname\relax%
\xdef\esfehlt{\griff}\blackmark\else{\csname\griff\endcsname}\fi}

% 9. -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-> forward referencing

% Use of  \label\<name>/  or \defcite{<string>}  will also save the resulting 
% definition, in the form  
%    \def\<name>{\formeq} 
% respectively
%    \expandafter\def \csname cit<string>\endcsname{<inhalt>}
% in the file  \jobname.aux  for the purpose of correct forward referencing.
% For this, it may be necessary to run the job twice. In any case, the
% following sets up the necessary file work:
% (1) a conditional \input, to cover the first time when the file \jobname.aux
%     does not yet exist (this may be of use elsewhere):
\newread\testfl
\def\inputifthere#1{\immediate\openin\testfl=#1
\ifeof\testfl\message{(#1 does not yet exist)}\else\input#1\fi\closein\testfl}
% (2) bring in  \jobname.aux  if it exists, then set it up for writing:
% (Recall that  \jobname  expands to the name of the file TeX thinks it is 
% working on.)
\inputifthere{\jobname.aux}
\newwrite\aux
\immediate\openout\aux=\jobname.aux

% 10. -*-*-*-*-*-*-*-*-> maintaining labelling and \cite without help of the
% present format file (e.g., if the \jobname.tex file is to be submitted to a
% journal) and getting a list of the macros from this file used.
%
%    For \label, do the following:
% (i) make sure that any \label/ has either been deleted or else replaced by
% some \label\<name>/ and that any use of \nextlabel or \lastlabel has been 
% replaced by references to explicitly named labels.
% Also redefine any duplicate label names (find them in vi by :g/\\label/co $)
% Also, change all occurrences of \elabel  appropriately (usually, just change
% it to \label, combining the material from the other two arguments of 
% \elabel appropriately into the one argument for \label). 
% (ii) put the current contents of \jobname.aux (obtained AFTER any changes
% under (i) were made)  somewhere at the beginning of the file \jobname.tex.
% (iii) use the following definitions of \label and \prelabel and \rememberalso:
% \def\prelabel{}\def\rememberalso#1as#2{}
% \def\label#1/{\ifmmode\leqno(#1)\else#1\fi}
% If AMSTeX is to be used, use instead  
% \def\label#1/{\ifmmode\tag #1\else#1\fi}
%
%    For \cite, do the following:
%    Make sure that the references don't rely on \refmac.
% (i) same as (ii) for \label;
% (ii) possibly edit the definitions brought in in step (i), particularly if
%      reference by number is desired. Also, note that the definitions picked
%      up in step (iii) below include the \formcite stuff, a further 
%      opportunity to make changes to please some editor.
% (iii) pick up the relevant definitions, as follows:
% 
% \def\cite#1{\excite#1::/}
% \def\excite#1:#2:#3/{\edef\griff{cit#1}%
% \formcite{\plazieres\def\next{#2}\ifx\next\empty\else\formciteaddl{#2}\fi}}
% \def\formcite#1{{\bf[}#1{\bf]}}
% \def\formciteaddl#1{: #1}
% \def\plazieres{\expandafter\ifx\csname\griff\endcsname\relax%
% \xdef\esfehlt{\griff}\blackmark\else{\csname\griff\endcsname}\fi}
% \def\nextref{\item{[\rh]}}
% \def\blackmark{\immediate\write16{undefined forward reference: \esfehlt}}
%
% If AMSTeX (or, horrors!, LaTeX) is to be used, one needs to proceed 
% differently since \cite is an AMSTeX command. So, replace all \cite in the 
% text by \mycite, then pick up the relevant definitions as above, but with 
% the first line being 
% \def\mycite#1{\excite#1::/}
%
%   For the rest of the macros from this file, get a list of all of them, as
% follows:  TeX the file <paper>.tex, with the format file disabled (and with any
% equation labels and citation labels already taken care of), and hit  q
% at the first error message. Then, get into the file <paper>.log, position
% yourself at the beginning of the file and mark that first line by typing  
%   ma
% then carry out the command
%   :.,$g/Undefined control sequence/+co 0
% then delete all the stuff below this new stuff by
%   :'a,$d
% then
%   :%s/^.*\(\\[A-Za-z]*\)[$ ]*$/\1/
%   :%!sort | uniq
% and this leaves you with a list of all the macros from this file used in
% <paper>.tex.

% 11. -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-> Table of Contents

% The next macros are good for generating a Table of Contents
\newif\ifwritetoc\newwrite\toc
\def\tocone{1}\def\toctwo{2}
% Assuming that the Table of Content is the first item of business, one would
% start a new page there with something like
%    \centerline{TABLE OF CONTENTS}
%    \bigskip\printtochere\vfill\eject
% This uses
\def\printtochere{\immediate\closeout\toc\inputifthere{\jobname.toc}\starttoc}
\def\starttoc{\immediate\openout\toc=\jobname.toc\writetoctrue}
% It may be necessary to tex the file at least three times, the first time to
% generate the file jobname.toc, the second time to establish the number of
% pages it occupies.

% If there are items to be mentioned in the toc that precede the toc, then
% one would (i) place 
%    \starttoc
% somewhere prior to the first item to be mentioned in the toc;
% (ii) assuming one wanted to have the correct page number on the table of 
% content page(s), use at the place in the document for the toc  
%    \newcount\tocpage\tocpage=\pageno\advance\pageno by xxx
% with  xxx  the (expected) number of pages for the toc; and
% (iii) at the end of the document, start a NEW page with
%    \pageno=\tocpage
%    \centerline{TABLE OF CONTENTS}
%    \bigskip \printtochere

% The writing of the individual items can be done by the following macros:
% The first adds a line to the table of contents, the second adds an entry,
% with text on the left and the current pageno on the right and a leader fill
% in between. Change the second one locally for a different style.
% The file satmacros.tex at www.cs.wisc.edu/~deboor/sat has a version more
% suited for a toc at the beginning of a paper.

\newtoks\writestuff% to avoid expansion of macros during writing,
\def\nexttoc#1{\immediate\write\toc{#1}}
\def\tocline#1#2{\writestuff={#1}\nexttoc{\line{\hskip#2truecm
\the\writestuff\noexpand\diamondleaders\hfill \ \ \folio}}}
\newcount\toccount\toccount1
\def\diamondleaders{\global\advance\toccount by 1
  \ifodd\toccount \kern-10pt \fi
  \leaders\hbox to 15pt{\ifodd\toccount \kern13pt \else\kern3pt \fi
    .\hss}}
%\def\leaderfill{\leaders\hbox to 1em{\hss.\hss}\hfill}

% These are used, e.g., conditionally in Heading, heading, eading below.
\font\bigfont=cmbx10
\def\Heading#1{\bigskip\bigskip\goodbreak\centerline{\bigfont #1}
               \ifwritetoc\tocline{#1}0\fi\nobreak\bigskip\nobreak}
\def\moreHeading#1{\vskip-\bigskipamount\centerline{\bigfont #1}
               \ifwritetoc\tocline{#1}\tocone\fi\nobreak\bigskip\nobreak}
\let\moreSection\moreHeading
\def\heading#1{\bigskip\goodbreak\centerline{\bf #1}
               \ifwritetoc\tocline{#1}{\tocone}\fi\nobreak\medskip\nobreak}
\def\moreheading#1{\vskip-\medskipamount\centerline{\bf #1}
               \ifwritetoc\tocline{#1}{\toctwo}\fi\nobreak\medskip\nobreak}
\let\moresubsection\moreheading
\let\moresubsubsection\moreheading
\def\eading#1#2{\bigskip\goodbreak\centerline{\bf #1}
               \ifwritetoc\tocline{#1}{#2}\fi\nobreak\medskip\nobreak}
\def\moreeading#1#2{\vskip-\medskipamount\centerline{\bf #1}
               \ifwritetoc\tocline{#1}{#2}\fi\nobreak\medskip\nobreak}

% 12. -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*->  math macros

\def\title#1{\toneormore#1||||:}
   %% If overlong, use || to indicate linebreaks
\def\toneormore#1||#2||#3:{\centerline{\titlefont #1}%
    \def\next{#2}\ifx\next\empty\else\medskip\toneormore#2||#3:\fi}
\def\titlefont{\twelverm}

\def\author#1{\bigskip\aoneormore#1||||:}
   %% If overlong, use || to indicate linebreaks
\def\aoneormore#1||#2||#3:{\centerline{\authorfont #1}%
    \def\next{#2}\ifx\next\empty\else\smallskip\aoneormore#2||#3:\fi}
\def\authorfont{\twelverm}

\def\abstractkey#1#2{\bigskip\bigskip\medskip%
 {\narrower\beginsmaller\noindent{\bf
 Abstract.~}#1\def\next{#2}\ifx\next\empty\else\smallskip\noindent{\it
 Keywords:} #2\fi\endsmaller\bigskip}\medskip}

\def\abstract#1{\abstractkey{#1}{}}

\def\formal#1{\bigskip{\bf #1}\hskip1em}
\def\Proof#1{\indent{\bf Proof#1:}\qquad}
\def\proof{\Proof{}}
\let\endproofsymbol\boxx
\def\endproof{\hbox{}~\hfill\endproofsymbol\medskip\goodbreak}

\let\bs\backslash
\def\Ccircle{\buildrel \circ \over C}
\def\picircle{\buildrel \circ \over \pi}
\def\ref#1{{\bf[}#1{\bf]}}
\def\rf#1 {[{\bf#1}]}
\def\suchthat{\hbox{\rm\ s.t.\ }}
% \wlog is a TeX macro, and \def\wlog{without loss of generality} causes
% unexpected things to happen.
%\def\setnoteq#1{\mathrel{\lower4pt\vbox{\hbox{$\scriptstyle#1$}
%\vskip-6pt\hbox{$\scriptstyle\not=$}}}}
%\def\setnoteq#1{\mathrel{\raise3pt\hbox{$#1$}\lower4pt\llap{$\not=$}}}
\def\setnoteq#1{\mathrel{\setbox0=\hbox{$#1$}\dimen0=\wd0\box0%
\divide\dimen0 by2{}\kern-\dimen0\setbox0=\hbox{$'$}\dimen1=\wd0%
\divide\dimen1 by2{}\kern-\dimen1\lower1.7ex\box0\kern\dimen0\kern-\dimen1}}
\def\supsetnoteq{\setnoteq{\supseteq}}
\def\subsetnoteq{\setnoteq{\subseteq}}
\def\atoprightarrow#1{\mathrel{\setbox0%
\hbox{$\kern.5em\scriptstyle{#1}\kern.5em\atop{}$}%
\copy0\kern-\wd0\hbox to\wd0{\rightarrowfill}}}
\def\belowrightarrow#1{\mathrel{\setbox0%
\hbox{${}\over\kern.5em\scriptstyle{#1}\kern.5em$}%
\copy0\kern-\wd0\hbox to\wd0{\rightarrowfill}}}
\def\uniformly{\atoprightarrow{u}}
\def\pointwise{\atoprightarrow{pw}}
\def\strongly{\atoprightarrow{s}}
\def\weakly{\atoprightarrow{w}}
\def\inv#1{#1^{-1}}
\def\bigtimes{\mathop{\times}}
\def\Im{\mathop{\rm Im}\nolimits}
\def\Re{\mathop{\rm Re}\nolimits}
\def\all{\mathord{\rm all}\;}
\def\slall{\mathord{\sl all}\;}
\def\area{\mathop{\rm area}\nolimits}
\def\argmin{\mathop{\rm argmin}\nolimits}
\def\argmax{\mathop{\rm argmax}\nolimits}
\def\codim{\mathop{\rm codim}\nolimits}
\def\conv{\mathop{\rm conv}\nolimits}
\def\cond{\mathop{\rm cond}\nolimits}
\def\const{{\rm const}{}}
\def\diag{\mathop{\rm diag}\nolimits}
\def\diam{\mathop{\rm diam}\nolimits}
\def\dist{\mathop{\rm dist}{}}
\def\dom{\mathop{\rm dom}\nolimits}
\def\and{\mathord{\rm and}}
\def\for{\mathord{\rm for}}
\def\jump{\mathop{\rm jump}}
\def\meas{\mathop{\rm meas}\nolimits}
\def\pinf{\mathop{\llap{\phantom{\hbox{\rm p}}}\inf}} % use next to \sup in $$
\def\ran{\mathop{\rm ran}\nolimits}
\def\rank{\mathop{\rm rank}\nolimits}
\def\signum{\mathop{\rm signum}\nolimits}
\def\sinc{\mathop{\rm sinc}\nolimits}
% note: since  \span  is a plain TeX operator, use something else here
\def\spam{\mathop{\rm span}\nolimits}
\let\Span\spam
\def\supp{\mathop{\rm supp}\nolimits}
\def\tar{\mathop{\rm tar}\nolimits}
\def\trace{\mathop{\rm trace}\nolimits}
\def\vol{\mathop{\rm vol}\nolimits}
\def\charf#1{\chi_{\lower3pt\hbox{$\scriptstyle #1$}}} %better characteristic f
\def\divdif#1#2{\mathord{\setbox0=\hbox{$#2\gD$}\dimen0=\wd0\divide\dimen0 by 2
\kern\dimen0\vrule height\ht0 depth\dp0 width.5pt\kern-.25pt\kern-\dimen0\box0(#1)}}
\def\dvd#1{\divdif{#1}{}}
\def\sdvd#1{\divdif{#1}{\scriptstyle}}
\def\lot{\mathord{\rm l.o.t.}}
\def\Null{\mathop{\rm null}\nolimits}
\def\lincomb#1#2#3{#1_1#2_1+#1_2#2_2+\cdots+#1_{#3}#2_{#3}}
\def\Sequ#1#2{#1^1,#1^2,\ldots,#1^{#2}}
\def\sequ#1#2{#1_1,#1_2,\ldots,#1_{#2}}
\def\Matrix#1{\left[\matrix{#1}\right]}
\def\id#1{{\rm id}{}_{#1}}
\def\unitv#1{{\bf i}_{#1}}

% sfract puts its arguments into continued fraction notation (S-fraction)
\def\sfract#1,#2,{{\vrule height2.6pt width.4pt depth10pt\hskip-.85pt
{{#1\over#2}} \hskip-.85pt\vrule height14pt width.4pt depth-2.3pt}}

% A darker or boldface version of a letter, to be used in math mode, can be
% obtained, also in scriptstyle and scriptscriptstyle,  by one of the macros
\def\mbf#1{\dimen0=.011em\dimen1=.009em\makebold{}{#1}}
\def\msbf#1{\dimen0=.009em\dimen1=.0073em\makebold{\scriptstyle}{#1}}
\def\mssbf#1{\dimen0=.0075em\dimen1=.007em\makebold{\scriptscriptstyle}{#1}}
% All three use the following, with the pattern      x x
%                                                   x x x
\def\makebold#1#2{\mathord{\setbox0=\hbox{$#1#2$}%
       \copy0\kern-\wd0%
       \kern\dimen0\raise\dimen1\copy0\kern-\wd0%
       \kern\dimen0\copy0\kern-\wd0%
       \kern\dimen0\raise\dimen1\copy0\kern-\wd0%
       \kern\dimen0\box0}}

\def\boldA{{{\bf A}}}
\def\boldB{{{\bf B}}}
\def\boldC{{{\bf C}}}
\def\boldK{{{\bf K}}}
\def\boldL{{{\bf L}}}
\def\boldO{{{\bf O}}}
\def\cA{{\cal A}}
\def\cB{{\cal B}}
\def\cD{{\cal D}}
\def\cZ{{\cal Z}}

\def\openA{{{\rm A}\kern-.63em{\rm A}}}
\def\openB{{{\rm I}\kern-.16em {\rm B}}}
\def\openC{{\rm C\kern-.48em\vrule width.06em height.57em depth-.02em \kern.48em}}
\def\sopenC{{\rm C\kern-.15cm\vrule width.6pt height 4.1pt depth-.3pt \kern.15cm}}
% \def\sCC{{\rm C\kern-.22em\vrule width.04em height.55em depth-.02em \kern.22em}}
\def\openD{{{\rm I}\kern-.16em {\rm D}}}
\def\openE{{{\rm I}\kern-.16em {\rm E}}}
\def\openF{{{\rm I}\kern-.16em {\rm F}}}
\def\openI{{{\rm I}\kern-.2em {\rm I}}}
\def\openH{{{\rm I}\kern-.16em {\rm H}}}
\def\openK{{{\rm I}\kern-.16em {\rm K}}}
\def\openL{{{\rm I}\kern-.16em {\rm L}}}
\def\openM{{{\rm I}\kern-.16em {\rm M}}}
\def\openN{{{\rm I}\kern-.16em {\rm N}}}
\def\openP{{{\rm I}\kern-.16em {\rm P}}}
\def\openQ{{\rm Q\kern-.21cm\vrule width.6pt height 6.2ptdepth-.2pt \kern.21cm}}
\def\openQ{{{\rm Q}\kern-.63em {\rm Q}}}
\def\openR{{{\rm I}\kern-.16em {\rm R}}}
\def\sopenS{{\scriptstyle\rm S}\kern-.36em{\scriptstyle\rm S}}
\def\openS{{{\rm S}\kern-.46em{\rm S}}}
\def\openT{{{\rm T}\kern-.42em {\rm T}}}
\def\sopenT{{{\scriptstyle\rm T}\kern-.35em {\scriptstyle\rm T}}}
\def\openZ{{{\rm Z}\kern-.28em{\rm Z}}}
\def\sopenZ{{{\scriptstyle\rm Z}\kern-.24em{\scriptstyle\rm Z}}}

\font\Bbbtw=msbm10 at 12pt
\font\Bbb=msbm10
\font\Bbbe=msbm8
\font\Bbbs=msbm7
\def\Cbb{\hbox{{\Bbb{C}}}} % the hbox is used here to prevent conversion
\def\Dbb{\hbox{{\Bbb{D}}}} % to italics in math mode. There ought to be a
\def\Ebb{\hbox{{\Bbb{E}}}} % better way.
\def\Fbb{\hbox{{\Bbb{F}}}} 
\def\Kbb{\hbox{{\Bbb{K}}}}
\def\Nbb{\hbox{{\Bbb{N}}}}
\def\Pbb{\hbox{{\Bbb{P}}}}
\def\Qbb{\hbox{{\Bbb{Q}}}}
\def\Rbb{\hbox{{\Bbb{R}}}}
\def\Tbb{\hbox{{\Bbb{T}}}}
\def\Zbb{\hbox{{\Bbb{Z}}}}
\let\CC\Cbb
\def\CCtw{\hbox{{\Bbbtw{C}}}}
\def\CCs{\hbox{{\Bbbs{C}}}}
\def\CCe{\hbox{{\Bbbe{C}}}}
\let\DD\Dbb
\def\DDtw{\hbox{{\Bbbtw{D}}}}
\def\DDs{\hbox{{\Bbbs{D}}}}
\def\DDe{\hbox{{\Bbbe{D}}}}
\let\EE\Ebb
\def\EEtw{\hbox{{\Bbbtw{E}}}}
\def\EEs{\hbox{{\Bbbs{E}}}}
\def\EEe{\hbox{{\Bbbe{E}}}}
\let\FF\Fbb
\def\FFtw{\hbox{{\Bbbtw{F}}}}
\def\FFs{\hbox{{\Bbbs{F}}}}
\def\FFe{\hbox{{\Bbbe{F}}}}
\let\KK\Kbb
\def\KKtw{\hbox{{\Bbbtw{K}}}}
\def\KKs{\hbox{{\Bbbs{K}}}}
\def\KKe{\hbox{{\Bbbe{K}}}}
\let\NN\Nbb
\def\NNtw{\hbox{{\Bbbtw{N}}}}
\def\NNs{\hbox{{\Bbbs{N}}}}
\def\NNe{\hbox{{\Bbbe{N}}}}
\let\RR\Rbb
\def\RRtw{\hbox{{\Bbbtw{R}}}}
\def\RRs{\hbox{{\Bbbs{R}}}}
\def\RRe{\hbox{{\Bbbe{R}}}}
\let\PP\Pbb
\def\PPtw{\hbox{{\Bbbtw{P}}}}
\def\PPs{\hbox{{\Bbbs{P}}}}
\def\PPe{\hbox{{\Bbbe{P}}}}
\let\QQ\Qbb
\def\QQtw{\hbox{{\Bbbtw{Q}}}}
\def\QQs{\hbox{{\Bbbs{Q}}}}
\def\QQe{\hbox{{\Bbbe{Q}}}}
\let\TT\Tbb
\def\TTtw{\hbox{{\Bbbtw{T}}}}
\def\TTs{\hbox{{\Bbbs{T}}}}
\def\TTe{\hbox{{\Bbbe{T}}}}
\let\ZZ\Zbb
\def\ZZtw{\hbox{{\Bbbtw{Z}}}}
\def\ZZs{\hbox{{\Bbbs{Z}}}}
\def\ZZe{\hbox{{\Bbbe{Z}}}}

\let\naturals\NN
\let\reals\RR
\let\integers\ZZ
\def\Cmn{\CC^{m\times n}}
\def\Cn{\CC^n}
\def\Cs{\CC^s}
\def\Fm{\FF^m}
\def\Fmn{\FF^{m\times n}}
\def\Fn{\FF^n}
\def\Fnm{\FF^{n\times m}}
\def\Rd{\RR^d}
\def\Rm{\RR^m}
\def\Rmn{\RR^{m\times n}}
\def\Rn{\RR^n}
\def\Rnm{\RR^{n\times m}}
\def\Rs{\RR^s}
\def\Td{\TT^d}
\def\Tn{\TT^n}
\def\Ts{\TT^s}
\def\Zd{\ZZ^d}
\def\Zm{\ZZ^m}
\def\Zn{\ZZ^n}
\def\Zs{\ZZ^s}
\def\sumZd{\sum_{j\in\Zd}}

\def\sub{_{\bf|}}
\def\comb#1{{{|#1|}\choose{#1}}}
\def\Iff{\hskip1em\Longleftrightarrow\hskip1em}
\let\iff\Longleftrightarrow
\def\Implies{\hskip1em\Longrightarrow\hskip1em}
\let\implies\Longrightarrow
\def\Implied{\hskip1em\Longleftarrow\hskip1em}
\let\implied\Longleftarrow
\def\braket#1{\hbox{$[\![$}#1\hbox{$]\!]$}}
\def\Paren#1{\left(#1\right)}
\def\Set#1{\left\{\,#1\,\right\}}
\def\set#1{\{#1\}}
\def\st{:}
\def\Ceil#1{\left\lceil#1\right\rceil}
\def\ceil#1{\lceil#1\rceil}
\def\Floor#1{\left\lfloor#1\right\rfloor}
\def\floor#1{\lfloor#1\rfloor}
\def\Norm#1{\left\Vert#1\right\Vert}
\def\norm#1{\Vert#1\Vert}%\def\norm#1{\|#1\|} does not work with verbatim.tex
\def\nnorm#1{{\def\ss{\vert\kern-.05em}\ss\ss\vert#1\ss\ss\vert}}
\def\Inpro#1{\left\langle#1\right\rangle}
\def\inpro#1{\langle#1\rangle}
\def\sstar{\!*\!}
\def\scpro#1,#2{#1\sstar#2}
\def\fromto{\mathbin{\ldotp\ldotp}} % for interval spec. as in [a\fromto b]
\def\cutoff{\,{\vrule height 7pt width .3pt depth 3.5pt}\,}
\def\restrict#1{\cutoff\lower1pt\hbox{$_{#1}$}}
\def\mapinto#1{\cutoff\hbox{$^{#1}$}}
\def\dd{\,{\rm d}}  % for integration (making them mathop places them less well)
\def\ee{{\rm e}}  % for the base of the natural log
\def\ii{{\rm i}}  % for the imaginary unit
% center one symbol on top of another, also in script and scriptscript
\def\cocenter#1in#2{\makecocenter{#1}{#2}{}}
\def\scocenter#1in#2{\makecocenter{#1}{#2}{\scriptstyle}}
\def\sscocenter#1in#2{\makecocenter{#1}{#2}{\scriptscriptstyle}}
\def\makecocenter#1#2#3{\setbox1\hbox{$#3#1$}\setbox2\hbox{$#3#2$}%
\dimen2\wd2\advance\dimen2 by\wd1\divide\dimen2 by2{}%
\box2\kern-\dimen2\dimen1\wd1\box1\kern-\dimen1\kern\dimen2}
% this crown is good for \magnification = 1200
% an alternate crown might be \cocenter\bot in\gO
\def\crown{{\Omega\kern-.14truecm\vrule width.6pt depth-.1pt \kern.15truecm}}
% this crown is good for \magstep3
% \def\crown{{\Omega\kern-.20truecm\vrule width.6pt depth-.1pt \kern.20truecm}}
% and this one good for magstep0, using, e.g.,{\buildrel \sbcrown\over{\cal S}}
%\def\sbcrown{{\Omega\kern-.112truecm\vrule width.6pt depth-.1pt \kern.112truecm}}
\def\lessim{\mathrel{\cocenter\raise1.6pt\hbox{$<$}in{\lower3.3pt\hbox{$\sim$}}}}
\def\choices#1#2#3{${\hbox{#3 #1}\atop\hbox{#3 #2}}$}
\def\lessthan{<}
\def\morethan{>}
\let\ga\alpha
\def\gA{{\rm A}}
\let\gb\beta
\def\gB{{\rm B}}
\let\gga\gamma
\let\gG\Gamma
\let\gd\delta
\let\gD\Delta
\let\gep\varepsilon
\def\gE{{\rm H}}
\let\gz\zeta
\def\gZ{{\rm Z}}
\let\gth\theta
\let\gTh\Theta
\let\gf\varphi
\let\gF\Phi
\let\gy\upsilon
\def\gI{{\rm I}}
\let\gk\kappa
\def\gK{{\rm K}}
\let\gl\lambda
\def\crowned#1{\mathord{\buildrel \crown \over{#1}}}
\def\glcrown{\crowned{\gl}}
\let\gL\Lambda
\def\gM{{\rm M}}
\let\gs\sigma
\let\gS\Sigma
\let\gt\tau
\def\gT{{\rm T}}
\let\gr\varrho
\def\gR{{\rm P}}
\def\Chi{{\rm X}}
\let\go\omega
\let\gO\Omega
