\input tbasic
% PapWHdr.tex of October 5, 1983 5:09 pm --- Stolfi

% Header file for PLoc.tex

% DESIRABLE CHANGES
% Fix \lpike and \rpike in \small
% Remove \fpheader, \printfpheader (simple is beautiful!)

% BEGIN NEW FILE

\def\printfilestamp{T} % put \filestamp on 1st page
\def\newfile{F} % (internal) T on first page of a new file. 

\def\begfile#1{\gdef\filestamp{#1}\gdef\newfile{T}}

% TITLES AND CO

% Paper, author, institutions, and section titles.
%   Usage:
%     \paper{P is equal to NP\ctrpar (I think)}
%     \def\paptitle{I think} % optional --- title on page headers
%     \author{I. Newton}
%     \institution{Sacred Well Divination School,
%        Chichen Itza, Yucatan}
%     \section{1.1A. Annotation and Undefinitions.}
%           (note: 1 argument only!)
%     \support{The author was partially supported by a
%        semi-starving army of slaves, by the plundering of half a
%        dozen neighboring villages, and by lavish gifts from
%        Ramses III.}
%     \abstract{In this paper we make some general remarks
%        concerning an algorithm for solving a problem related to an
%        important application of a well-known theoretical concept.}

\def\ctrpar{\hfil\null\penalty-2000\null\hfil} % <CR> in centered paragrs

\def\paper#1{
  \gdef\newchap{T} % (internal) T on 1st page of chap or paper
  {\lineskip3pt \hbox par \pagewidth pt{\hfil\titlefont #1}}
  \vskip8pt
  \hbox to \pagewidth pt{\hfil\vbox{\hrule width 3truein}\hfil}
  \vskip13pt
  \gdef\paptitle{#1}} % \paptitle is title on page headers.

\def\author#1{
  \vskip -5pt
  \hbox par \pagewidth pt{\hfil\it #1}
  \vskip8pt}

\def\institution#1{
  \vskip-5pt
  \hbox par \pagewidth pt{\hfil\rm #1}
  \vskip8pt}

\def\support#1{
  \botinsert{
    \vskip5pt\hrule width\textwidth pt
    \vskip5pt{\small \hbox par \textwidth pt{#1}}}}

\def\abstract#1{
  \vskip 20pt
  \hbox  to \pagewidth pt{\hfil\hbox par \abstrwidth pt{#1}\hfil}
  \vskip 10pt}

\def\keywords#1{
  \vskip -5pt
  \hbox  to \pagewidth pt{\hfil\hbox par \abstrwidth pt{{\:p KEYWORDS:} #1}\hfil}
  \vskip 10pt}

\def\section#1{
  \vskip 20pt plus 10 pt minus 3pt\penalty-600
  \hbox{{\secfont #1}}
  \penalty 1000\vskip 6pt plus 3pt}

\def\subsection#1{
    \vskip 20pt plus 10 pt minus 3pt\penalty-600
    \hbox{{\subsecfont #1}}
    \penalty 1000\vskip 6pt plus 3pt}

% MATH SYMBOLS

\def\leq{\mathrel{\char'424}}
\def\geq{\mathrel{\char'425}}
\def\neq{\not=}
\def\dist{\mathop{\char d\char i\char s\char t}}
\def\deg{↑\circ}
\def\gets{\mathrel{\char'440}} % assign. arrow
\def\to{\mathrel{\char'441}} % limit arrow
\def\lbrace{\{}
\def\rbrace{\}}
\def\la{\langle}
\def\ra{\rangle}
\def\implies{\mathrel{\char'451}} % right implication arrow
\def\impliedby{\mathrel{\char'450}} % left implication arrow
\def\doubleimpl{\mathrel{\char'454}} % two-way implication arrow
\def\rmiff{\,\mathrel{\hbox{iff}}\,} % "iff" in roman font
\def\rmif{\,\mathrel{\hbox{if}}\,} % "if" in roman font
\def\rmand{\,\mathrel{\hbox{and}}\,} % "and" in roman font
\def\rmor{\,\mathrel{\hbox{or}}\,} % "or" in roman font
\def\inte{\mathbin{\char'534}} % infix intersection operator
\def\uni{\mathbin{\char'533}} % infix union operator
\def\and{\mathbin{\char'536}} % logical and operator
\def\or{\mathbin{\char'537}} % logical or operator
\def\equiv{\mathrel{\char'421}} % logical equivalence
\def\land{\mathbin{\char'536}} % boolean and operator
\def\lor{\mathbin{\char'537}} % boolean or operator
\def\lnot{\mathop{\char'472}} % boolean not operator
\def\xor{\oplus }
\def\hull{\mathop{\char h\char u\char l\char l}}
\def\bound#1{\partial {#1}} % boundary
\def\clos#1{\bar{#1}} % closure
\def\star{↑\ast} % asterisk in superscript position.
\def\iso{\mathrel{\char'430}} % single squiggle
\def\simil{\mathrel{\char'431}} % double squiggle
\def\empty{\emptyset}
\def\forall{\mathop{\hbox{\mal A}}} 
\def\exists{\mathop{\hbox{\mal E}}}
\def\reals{\hbox{\bi R\/}} % set of real numbers
\def\integers{\hbox{\bi Z\/}} % set of all integers
\def\sphere{\hbox{\bi S\/}} % needs dimensionality subscript
\def\bar#1{{\overline{#1}}}
\def\pr{↑\prime}
\def\prr{↑{\prime\prime}}
\def\rpike{\hbox{\arfont n}} % black triangle pointing right
\def\lpike{\hbox{\arfont x}} % black triangle pointing left
\def\hat#1{{\A #1}} % fix this!
\def\det#1{\left\char'550614 #1 \right\char'550614} % determinant
\def\set#1{{\{#1\}}}   % set defined by enumeration
\def\rset#1{{\leftset #1 \rightset}} % set defined by \relv
\def\seq#1{\langle #1 \rangle}
\def\sp{\,\,\,} % to denote unordered spans (segs, arcs, etc)
\def\dollar{\char'44}
\def\flower{{\curfont U B}} % upright lotus flower
\def\bu{$\bullet$\ } % for items in text
\def\item{\indent\bu}
\def\note#1{{\small \bf << #1 >>}} % for annotations to manuscript

\def\empty{\char'100} % use Scandinavian crossed-O for empty set

% MISCELLANEOUS FORMAT MACROS

% Embox and superpose with preceding char

\def\rspose#1{\hbox to 0pt{\hss#1\hfilneg}} % sup. #1 with previous box

% macro for flagging TEX errors

\def\bug{\hbox{\hskip1pt\vrule width10pt height10pt \hskip1pt}}

% Conditional expressions.

\chcode'174←4  % alignment tab

\def\alter#1{\left\lbrace\vcenter{
                    \halign{\lft{##}\quad\quad|\lft{##}\cr #1}
                                      }\right.}

\def\va{\noalign{\vskip 3pt plus1pt}}  % extra space after \cr
\def\vb{\noalign{\vskip 6pt plus2pt}}
\def\vc{\noalign{\vskip 9pt plus3pt}}
\def\vd{\noalign{\vskip 12pt plus4pt}}

% Indented paragraphs. Usage:
%  \indent Bla bla bla... or
%  \begitems\item Foo;\item Bar;...\item Baz.\enditems   OR
%  \begitems\itemno{1.}Foo;\itemno{2.}Bar;...\itemno{9.}Baz.\enditems

\def\begitems{\vskip6ptplus2pt\penalty}
\def\enditems{\vskip4ptplus3pt}
\def\indent{\par\vskip 2pt\hangindent\textindent pt after0  }
\def\item{\itemno{ $\bullet$ }} % for unnumbered items
\def\itemno#1{\par\vskip-3pt\hangindent\itemindent pt after0
  $\rspose{#1\ }$\gnaw } % numbered items

% Paragraph break in \hbox par

\def\bxparskipper{\vbox to \bxparskip pt{}} % for par spacing in boxed text

\def\bxpar{\hfil\null\penalty-2000
  \bxparskipper} % begin new left-justified paragraph

\def\ctrpar{\hfil\null\penalty-2000
  \bxparskipper\hfil } % begin new centered paragraph

% Footnotes.
%  Use \foot7{Blah Blah} for footnote number 7.
%  Using \footfig7(3){Blah Blah} leaves space at the right margin of
%         the footnote for a figure 3cm high.
%  Use \ftpar to break paragraphs in a footnote.

\def\footbox#1#2#3{{\small\hbox par #3 pt{$\null↑{#1}$ #2}}}
\def\footfigbox#1{\vbox to #1cm{\hbox to 0pt{\null}}}
\def\footline{\vskip6pt plus10pt\hrule width 4cm\vskip4pt}

\def\footfirstp#1{\if 1#1{\footline}\else{}
  \if \dag#1{\footline}\else{}}

\def\foot#1#2{$\null↑{#1}$\botinsert{\footfirstp{#1}
      \vskip 5pt plus2pt\footbox{#1}{#2}{\textwidth}}}

\def\footfig#1(#2)#3{$\null↑{#1}$\botinsert{\footfirstp{#1}
      \vskip 5pt plus2pt\hbox{
        $\vcenter{\footbox{#1}{#3}{\ftfigwidth}}
         \vcenter{\footfigbox{#2}}$\hfil}}}

\def\ftpar{\bxpar} % \par (of sorts) in footnotes

% Theorem, lemma, conjecture and definition.

\def\lemma{\theolemma{\it}{Lemma}}
\def\theorem{\theolemma{\it}{Theorem}}
\def\conjecture{\theolemma{\it}{Conjecture}}
\def\definition{\theolemma{\rm}{Definition}}

\def\theolemma#1#2#3#4{\par\vskip 5pt plus 3pt minus 3pt\hangindent \theostatindent pt
              {\bf #2 #3. }{#1 #4}\par\vskip 3pt plus 3pt}
\def\tp{\hangindent\theostatindent pt after0 } % new par in thm.'s/def. statement

\def\proof#1{
  \hangindent\proofindent pt after0\begproofmark #1\penalty1000
  \endproofmark\par\vskip 3pt plus 6pt}

\def\pp{\hangindent \proofindent pt after0} % new par in proof

% Algorithm format.
%  uses counters 3 (to compute useful width), 4 (to count bars), and
%    5 (current nesting level).

\def\algorithm#1#2#3{{\penalty-300\vskip10pt plus3pt minus3pt
    \hangindent \theostatindent pt {\bf Algorithm #1. }{\it #2}\par
    \vskip 3pt plus 2pt minus0pt\penalty 1000
    \algbody{#3}
    \par\vskip 10pt plus 3pt minus 3pt}}

\def\algbody#1{{
    \parindent 0pt \hangindent 0pt after0
    \baselineskip 0pt \lineskip0pt
    \setcount5 0
    #1
    \parindent\stdparindent pt}}

\def\vbars{\setcount3 \algwidth\setcount4 \count5
         \hskip \algindent pt\advcount3 by -\algindent
         \advcount3 by -\algindent % to indent right margin too
         \vbarsloop
         \hskip-\stepindent pt\advcount3 by \stepindent
         }

\def\vbarsloop{\ifpos4
        {\vrule width0.4pt 
         \hskip-0.4pt
         \hskip\stepindent pt\advcount3 by -\stepindent
         \advcount4 by -1
         \vbarsloop}
        \else
            {}}

\def\afig#1{
    \ftpar\vbox to #1cm{\null}\ftpar 
    } % figure in algorithm steps

\def\step#1{\par\hbox to \pagewidth pt
        {\vbars
         \hskip \snoindent pt\advcount3 by -\snoindent
         \hskip \contindent pt\advcount3 by -\contindent
         \vbox{
            \vskip 2pt plus0pt minus0pt
            {\baselineskip12pt \lineskip1pt
             \hbox par \count3pt{\hskip-\contindent pt #1}}
            \vskip 2pt plus0pt minus0pt}
         \hfil}}

\def\comm#1{\par\hbox to \pagewidth pt
        {\vbars
         \hskip \snoindent pt\advcount3 by -\snoindent
         \hskip \contindent pt\advcount3 by -\contindent
         \vbox{
            \vskip 2pt plus0pt minus0pt
            {\small \hbox par \count3pt{#1}}
            \vskip 3pt plus0pt minus0pt}
         \hfil}}

\def\begblock#1\endblock{\advcount5 by 1\ear #1\ear \advcount5 by-1}

\def\ear{\par\penalty1000\hbox to \pagewidth pt
        {\vbars \vrule height 0.4pt width 3pt \hfil}\penalty1000}

\def\sno#1 {{\baselineskip0pt
    \lineskip0pt
    \vbox{\hbox to \contindent pt{}
          \hbox{\hfil\bf #1.\hskip2pt}}}\gnaw} % step number.

\def\nono{\hskip \contindent pt } % for unnumbered steps.

\def\sna#1{{\rm [{\it #1\/}]}} % step name and comments.

\def\blug{\hskip 3pt\blackslug}

% Space for figure.
%   Use \fig5 for a figure 5cm high
%   Use \figno(7)5 for a figure  with number (7) and 5 cm high

\def\gnaw{} % to eat spaces after \fig etc

\def\fig#1{\dispaskip0pt plus100pt $$\hbox to 2in{\vbox to #1cm{\null}}$$\dispaskip0pt plus3pt\gnaw}

\def\figno(#1)#2{\dispaskip0pt plus100pt $$\vcenter{\hbox to 2in{\vbox to #2cm{\null}}}\eqno(\hbox{#1})$$\dispaskip0pt plus3pt\gnaw}

\def\figcap#1#2{\ctrline{
		\hbox par 5in{Figure #1. #2}}} % figure captions

% Reference format.
%  Usage: \ref  [\Boo] {\refauth{Boojum, C. D.}
%             \reftit{Salting jubjubs in glue.}
%             \refpub{J. of Beavers and Butchers V. 1 N. 357 (1999).}}

% fix the numbers after selecting the reference codes

\def\ref [#1] #2{\vskip \refvskip pt\hbox to \textwidth pt{\hskip\refindent pt\hbox par \refbodywidth pt{\hbox to 0.0in {$\hskip -\refindent pt \hbox{[#1]} \hskip 0pt plus 1000pt minus 1000pt$}#2}}\par}

\def\refauth#1{\unskip {\rm #1}}
\def\reftit#1{\unskip\unskip, {\it #1}}
\def\refpub#1{\  {\rm #1}}

% Page headers

\def\fpfoot{}

\def\header{\paptitle\hfil\count0}

\def\printfpheader{T} % put \fpheader on first page of chapter..

\def\fpheader{\null}  % ...but with no contents

% FONT DEFINITIONS

\font m←timesroman at 12truebp
\font b←timesromani at 12truebp
\font <←timesromanb at 12truebp

\font M←math at 10 truebp
\font S←arrows at 10 truebp
\font v←cmtt

\font p←timesroman at 8truebp
\font o←timesromani at 8truebp
\font t←timesromanb at 8truebp
\font Z←timesromanbi at 8truebp

\font e←cmr8
\font k←cmi8
\font y←cmsy8
\font h←cmtt8
\font N←math at 8 truebp
\font R←Arrows at 8truebp % should be ArrowsTwo at 18truebp

\font D←cmr6
\font J←cmi6
\font X←cmsy6

\font U←fleur at 28truebp

\font=←timesromanb at 14truebp
\font O←helveticab at 12truebp
\font H←helveticab at 10 truebp

\def\headerfont{\curfont <} % font used for headers and page no.s
\def\titlefont{\curfont =} % font used for paper title
\def\secfont{\curfont O} % font for section headers
\def\subsecfont{\curfont H} % font for subsection headers

% Relativized fonts (get the right size depending on context).
%   Default (12 point)

\def\fx{\:v} % typewriter font
\def\mrm{\:c}  % math roman font
\def\cmr{\:a} % computer modern roman
\def\mal{\:M}  % Alto math font
\def\bi{\:w} % Bold italic font
\def\em{\bf } % for emphasis
\def\arfont{\:S} % arrows font
    % see also \rm, \bf, \it in TBasic.tex

%   Smaller (9 point)
%   Usage: {\small ...}, {\small\hbox par{...}}, etc
%     (\hbox par{\small ...} will get wrong \baselineskip & c.)

\def\small{\baselineskip \smallbaselineskip pt \parskip \smallparskip pt
  \dispskip9pt plus3pt minus7pt
  \dispaskip0pt plus3pt \dispbskip 5pt plus3pt minus2pt
  \def\bxparskip{\smallbxparskip}
  \def\rm{\:p} \def\it{\:o} \def\bf{\:t} \def\bi{\:Z}
  \def\cmr{\:e} 
  \def\mrm{\:e} \def\mal{\:N} \def\fx{\:h}
  \def\arfont{\:R}
  \mathrm eDf \mathit kJl \mathsy yXz \rm }

% DIMENSIONAL PARAMETERS
%   (in points unless otherwise indicated)

% Dimensions related to page width

\def\defnormalwidths{
  \def\pagewidth{400} % page width
  \def\textwidth{400} % text width
  \def\progwidth{380} % program width
  \def\algwidth{380} % width of algorithms - max: page width
 }

% Reduced dimensions in effect during \mfigs

\def\defmfigwidths{
  \def\pagewidth{260} % page width
  \def\textwidth{260} % text width
  \def\progwidth{260} % program width
  \def\algwidth{260} % width of algorithms - max: page width
 }

\def\theowidth{\textwidth} % width of theorems

\def\ftfigwidth{300} % width of text in footnotes with figures
\def\refbodywidth{365} % width of body of bibl. reference
\def\refremwidth{365} % width of bibl. reference remarks
\def\abstrwidth{360} % width of abstract

% Text format

\def\textindent{20} % indentation for \indent ed paragraphs
\def\itemindent{35} % indentation for \item and \itemno body
\def\stdparindent{0} % standard indentation for paragraphs
\def\stdparskip{6} % extra skip between paragraphs
\def\stdbaselineskip{12} % normal distance betweeen baselines
\def\bxparskip{18} % \stdparskip+\stdbaselineskip (for use in \bxpar)
\def\smallparskip{4} % extra skip between paragraphs in \small
\def\smallbaselineskip{9} % distance between baselines in \small
\def\smallbxparskip{13} % \stdparskip+\stdbaselineskip (for \bxpar in \small)

% References format

\def\refindent{35} % indentation of reference body in points
\def\refvskip{10} % vskip between references

% Algorithms format

\def\stepindent{20} % in points - extra indent. per level
\def\contindent{11} % in points - extra indent. of cont. lines
\def\algindent{21} % in points - indentation of outermost bracket
\def\snoindent{4} % in points - ind. of \sno rel. innermost bracket
\def\commindent{15} % in points - ind. of comments rel. inn. bra.

% Theorem, lemma and definitions format

\def\theostatindent{20} % indentation of them. statements
\def\proofindent{20} % indentation of proofs

\def\begproofmark{{\bf Proof: }}
\def\endproofmark{\hbox{\hskip6pt{\mal \char'061}}} % square

% MARGINAL FIGURES (by Aragones?)

%  Usage: \mfig3  <a paragraph at most 3cm high> \endmfig

\def\mfig#1{
  \keep{#1} \defmfigwidths \hsize\pagewidth pt \par}

\def\endmfig{
  \par \defnormalwidths \hsize\pagewidth pt \par}

% OUTPUT ROUTINE.

\def\fpage{T} % (internal) T on very first page

\def\headbox#1{\vbox to 0pt{
      \vskip-0.54truein
      \hbox to \pagewidth pt{\headerfont #1}
      \vskip 4 pt
      \hrule
      \vskip 3 pt
      \hrule
      \vskip 0.33truein plus 6 in minus 6 in}}

\output{
  \gdef\puthd{T}\gdef\putft{F} % internal flags
  \if T\newchap{
    \gdef\puthd{\printfpheader}
    \gdef\putft{T}}\else{}
  \if T\newfile{\gdef\putft{T}}\else{}

  \baselineskip 0pt \lineskip 0pt
  \if T\puthd{\hbox
   {\hskip 20pt\if T\newchap{\headbox{\fpheader}}\else{\headbox{\header}}}}
  \else{}
  \hbox{\hskip 20pt\vbox{\page}}
  \advcount0
  \if T\putft{
     \vskip 15pt
     \hbox{\hskip20pt\hbox to \pagewidth pt
      {\if T\newchap{\fpfoot}\else{}
         \hfil
         \if T\newfile
           {\if T\printfilestamp{\small \filestamp}\else{}}\else{}
       }}
     }\else {}
  \gdef\newfile{F}
  \gdef\newchap{F}
  \gdef\fpage{F}
}

\defnormalwidths
\parindent \stdparindent pt
\parskip \stdparskip pt plus 1 pt
\baselineskip \stdbaselineskip pt
\topspace .1 in
\hsize\textwidth pt
\jpar 1000