A partition relation using strongly compact cardinals \\ Sh761
Saharon Shelah \thanks {\null\newline I would like to thank Alice Leonhardt for the beautiful typing. \null\newline Research of the author was partially supported by the United States-Israel Binational Science Foundation. \null\newline Publ.761. \null\newline Latest Revision - 01/March/20} \endthanks
<\lambda
761.tex
% processed by citealice (July 21, 2000) on Wed Mar 21 07:43:07 CST 2001

% To: Saharon Shelah <shelah@math.huji.ac.il>,        Andrzej Roslanowski <roslanow@e-math.ams.org>
% Subject: sh761
% Date: Tue, 20 Mar 2001 10:59:11 -0500 (EST)
% From: Alice Leonhardt <leonhard@math.rutgers.edu>
% Mime-Version: 1.0
% Content-Description: revisions
% X-sliced-and-diced-by: 'savemail' 0.4, Jul 2000


\input amstex
% % \input mathdefs
%  *** start including mathdefs.tex *** 
\expandafter\ifx\csname mathdefs.tex\endcsname\relax
  \expandafter\gdef\csname mathdefs.tex\endcsname{}
\else \message{Hey!  Apparently you were trying to
  \string\input{mathdefs.tex} twice.   This does not make sense.} 
\errmessage{Please edit your file (probably \jobname.tex) and remove
any duplicate ``\string\input'' lines}\endinput\fi


%mathdefs.tex v1.3.2

%%% Changes from v1.0: footnote macros, warning for duplicated tags,
%%%   control sequences \( and \verbatimtags.
%%% From v1.2: \pretags, redefinition of \( using \ifinner, multi-part
%%%   equation numbering, control sequences \[, \references, and
%%%   \resetbracket. 
%%% From v1.3: \rm in \lastpart; write root of multi-part tag to .tgs 

%See file texdefs.doc for documentation.

\catcode`\X=12\catcode`\@=11

%Minor control sequences:
\def\n@wcount{\alloc@0\count\countdef\insc@unt}
\def\n@wwrite{\alloc@7\write\chardef\sixt@@n}
\def\n@wread{\alloc@6\read\chardef\sixt@@n}
\def\r@s@t{\relax}\def\v@idline{\par}\def\@mputate#1/{#1}
\def\l@c@l#1X{\firstpart.#1}\def\gl@b@l#1X{#1}\def\t@d@l#1X{{}}

%Creation of tag families and output of assignments and citations:
\def\crossrefs#1{\ifx\all#1\let\tr@ce=\all\else\def\tr@ce{#1,}\fi
   \n@wwrite\cit@tionsout\openout\cit@tionsout=\jobname.cit 
   \write\cit@tionsout{\tr@ce}\expandafter\setfl@gs\tr@ce,}
\def\setfl@gs#1,{\def\@{#1}\ifx\@\empty\let\next=\relax
   \else\let\next=\setfl@gs\expandafter\xdef
   \csname#1tr@cetrue\endcsname{}\fi\next}
\def\m@ketag#1#2{\expandafter\n@wcount\csname#2tagno\endcsname
     \csname#2tagno\endcsname=0\let\tail=\all\xdef\all{\tail#2,}
   \ifx#1\l@c@l\let\tail=\r@s@t\xdef\r@s@t{\csname#2tagno\endcsname=0\tail}\fi
   \expandafter\gdef\csname#2cite\endcsname##1{\expandafter
     \ifx\csname#2tag##1\endcsname\relax?\else\csname#2tag##1\endcsname\fi
     \expandafter\ifx\csname#2tr@cetrue\endcsname\relax\else
     \write\cit@tionsout{#2tag ##1 cited on page \folio.}\fi}
   \expandafter\gdef\csname#2page\endcsname##1{\expandafter
     \ifx\csname#2page##1\endcsname\relax?\else\csname#2page##1\endcsname\fi
     \expandafter\ifx\csname#2tr@cetrue\endcsname\relax\else
     \write\cit@tionsout{#2tag ##1 cited on page \folio.}\fi}
   \expandafter\gdef\csname#2tag\endcsname##1{\expandafter
      \ifx\csname#2check##1\endcsname\relax
      \expandafter\xdef\csname#2check##1\endcsname{}%
      \else\immediate\write16{Warning: #2tag ##1 used more than once.}\fi
      \multit@g{#1}{#2}##1/X%
      \write\t@gsout{#2tag ##1 assigned number \csname#2tag##1\endcsname\space
      on page \number\count0.}%
   \csname#2tag##1\endcsname}}


\def\multit@g#1#2#3/#4X{\def\t@mp{#4}\ifx\t@mp\empty%
      \global\advance\csname#2tagno\endcsname by 1 
      \expandafter\xdef\csname#2tag#3\endcsname
      {#1\number\csname#2tagno\endcsnameX}%
   \else\expandafter\ifx\csname#2last#3\endcsname\relax
      \expandafter\n@wcount\csname#2last#3\endcsname
      \global\advance\csname#2tagno\endcsname by 1 
      \expandafter\xdef\csname#2tag#3\endcsname
      {#1\number\csname#2tagno\endcsnameX}
      \write\t@gsout{#2tag #3 assigned number \csname#2tag#3\endcsname\space
      on page \number\count0.}\fi
   \global\advance\csname#2last#3\endcsname by 1
   \def\t@mp{\expandafter\xdef\csname#2tag#3/}%
   \expandafter\t@mp\@mputate#4\endcsname
   {\csname#2tag#3\endcsname\lastpart{\csname#2last#3\endcsname}}\fi}
\def\t@gs#1{\def\all{}\m@ketag#1e\m@ketag#1s\m@ketag\t@d@l p
\let\realscite\scite
\let\realstag\stag
   \m@ketag\gl@b@l r \n@wread\t@gsin
   \openin\t@gsin=\jobname.tgs \re@der \closein\t@gsin
   \n@wwrite\t@gsout\openout\t@gsout=\jobname.tgs }
\outer\def\localtags{\t@gs\l@c@l}
\outer\def\globaltags{\t@gs\gl@b@l}
\outer\def\newlocaltag#1{\m@ketag\l@c@l{#1}}
\outer\def\newglobaltag#1{\m@ketag\gl@b@l{#1}}

%Reading in tag information:
\newif\ifpr@ 
\def\m@kecs #1tag #2 assigned number #3 on page #4.%
   {\expandafter\gdef\csname#1tag#2\endcsname{#3}
   \expandafter\gdef\csname#1page#2\endcsname{#4}
   \ifpr@\expandafter\xdef\csname#1check#2\endcsname{}\fi}
\def\re@der{\ifeof\t@gsin\let\next=\relax\else
   \read\t@gsin to\t@gline\ifx\t@gline\v@idline\else
   \expandafter\m@kecs \t@gline\fi\let \next=\re@der\fi\next}
\def\pretags#1{\pr@true\pret@gs#1,,}
\def\pret@gs#1,{\def\@{#1}\ifx\@\empty\let\n@xtfile=\relax
   \else\let\n@xtfile=\pret@gs \openin\t@gsin=#1.tgs \message{#1} \re@der 
   \closein\t@gsin\fi \n@xtfile}

%Sections and subsections; local numbering:
\newcount\sectno\sectno=0\newcount\subsectno\subsectno=0
\newif\ifultr@local \def\ultralocal{\ultr@localtrue}
\def\firstpart{\number\sectno}
\def\lastpart#1{\ifcase#1 \or a\or b\or c\or d\or e\or f\or g\or h\or 
   i\or k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or 
   x\or y\or z \fi}
\def\closeup{\vskip-\bigskipamount}
\def\resetall{\global\advance\sectno by 1\subsectno=0
   \gdef\firstpart{\number\sectno}\r@s@t}
\def\resetsub{\global\advance\subsectno by 1
   \gdef\firstpart{\number\sectno.\number\subsectno}\r@s@t}
\def\newsection#1\par{\resetall\vskip0pt plus.3\vsize\penalty-250
   \vskip0pt plus-.3\vsize\bigskip\bigskip
   \message{#1}\leftline{\bf#1}\nobreak\bigskip}
\def\subsection#1\par{\ifultr@local\resetsub\fi
   \vskip0pt plus.2\vsize\penalty-250\vskip0pt plus-.2\vsize
   \bigskip\smallskip\message{#1}\leftline{\bf#1}\nobreak\medskip}

%jj tags:
% On Andrzej's request:  we want to be able 
% to show tags as in noverbatim, with verbatim in the margin,
% and cites as in verbatim, with nonverbatim in the margin
% mg -- July 2000

\newdimen\marginshift

\newdimen\margindelta
\newdimen\marginmax
\newdimen\marginmin

\def\margininit{       
\marginmax=3 true cm                  % how much room, approximately
				      
\margindelta=0.1 true cm              % distance between entries
\marginmin=0.1true cm                 % where will leftmost entry be
\marginshift=\marginmin
}    % we cannot execute this right now, since 
     % there may be a \magnification coming later in the 
     % main file.   So we call \margininit at the end of 
     % alice2jlem

\def\t@gsjj#1,{\def\@{#1}\ifx\@\empty\let\next=\relax\else\let\next=\t@gsjj
   \def\@@{p}\ifx\@\@@\else
   \expandafter\gdef\csname#1cite\endcsname##1{\citejj{##1}}
   \expandafter\gdef\csname#1page\endcsname##1{?}
   \expandafter\gdef\csname#1tag\endcsname##1{\tagjj{##1}}\fi\fi\next}
\newif\ifshowstuffinmargin
\showstuffinmarginfalse
\def\jjtags{\showstuffinmargintrue
\ifx\all\relax\else\expandafter\t@gsjj\all,\fi}

% \def\zeigentag#1{\def\xxy{#1}\show\xxy\show\realstag\realstag#1\mginpar{\hbox{$\langle$}#1\hbox{$\rangle$}}}
% \def\zeigencite#1{\hbox{$\langle$}#1\hbox{$\rangle$}\mginpar{\realscite#1}}


\def\tagjj#1{\realstag{#1}\mginpar{\zeigen{#1}}}
\def\citejj#1{\zeigen{#1}\mginpar{\rechnen{#1}}}

% \def\rechnen#1{rechnen(\expandafter\ifx\csname stag#1\endcsname\relax ??\else
%                            \csname stag#1\endcsname\fi)endrech }
\def\rechnen#1{\expandafter\ifx\csname stag#1\endcsname\relax ??\else
                           \csname stag#1\endcsname\fi}

% \def\zeigentag#1{//#1--\csname stag#1\endcsname::}

\newdimen\theight



\def\marginfont{\sevenrm}



\def\trymarginbox#1{\setbox0=\hbox{\marginfont\hskip\marginshift #1}%
		\global\marginshift\wd0 
		\global\advance\marginshift\margindelta}


\def \mginpar#1{%
\ifvmode\setbox0\hbox to \hsize{\hfill\rlap{\marginfont\quad#1}}%
\ht0 0cm
\dp0 0cm
\box0\vskip-\baselineskip
\else 
             \vadjust{\trymarginbox{#1}%
		\ifdim\marginshift>\marginmax \global\marginshift\marginmin
			\trymarginbox{#1}%
                \fi
             \theight=\ht0
             \advance\theight by \dp0    \advance\theight by \lineskip
             \kern -\theight \vbox to \theight{\rightline{\rlap{\box0}}%
\vss}}\fi}


% \def\mginpar#1{mg-#1-mg }



%Verbatim tags:
\def\t@gsoff#1,{\def\@{#1}\ifx\@\empty\let\next=\relax\else\let\next=\t@gsoff
   \def\@@{p}\ifx\@\@@\else
   \expandafter\gdef\csname#1cite\endcsname##1{\zeigen{##1}}
   \expandafter\gdef\csname#1page\endcsname##1{?}
   \expandafter\gdef\csname#1tag\endcsname##1{\zeigen{##1}}\fi\fi\next}
\def\verbatimtags{\showstuffinmarginfalse
\ifx\all\relax\else\expandafter\t@gsoff\all,\fi}
%%% \def\zeigen#1{zeigen(\hbox{$\langle$}#1\hbox{$\rangle$})endz }
\def\zeigen#1{\hbox{$\langle$}#1\hbox{$\rangle$}}
\def\margincite#1{\ifshowstuffinmargin\mginpar{\rechnen{#1}}\fi}

%Equation numbering:
\def\(#1){\edef\dot@g{\ifmmode\ifinner(\hbox{\noexpand\etag{#1}})
   \else\noexpand\eqno(\hbox{\noexpand\etag{#1}})\fi
   \else(\noexpand\ecite{#1})\fi}\dot@g}

%Reference numbering:
\newif\ifbr@ck
\def\eat#1{}
\def\[#1]{\br@cktrue[\br@cket#1'X]}
\def\br@cket#1'#2X{\def\temp{#2}\ifx\temp\empty\let\next\eat
   \else\let\next\br@cket\fi
   \ifbr@ck\br@ckfalse\br@ck@t#1,X\else\br@cktrue#1\fi\next#2X}
\def\br@ck@t#1,#2X{\def\temp{#2}\ifx\temp\empty\let\neext\eat
   \else\let\neext\br@ck@t\def\temp{,}\fi
   \def\teemp{#1}\ifx\teemp\empty\else\rcite{#1}\fi\temp\neext#2X}
\def\resetbr@cket{\gdef\[##1]{[\rtag{##1}]}}
\def\references{\resetbr@cket\newsection References\par}

%Footnotes:
\newtoks\symb@ls\newtoks\s@mb@ls\newtoks\p@gelist\n@wcount\ftn@mber
    \ftn@mber=1\newif\ifftn@mbers\ftn@mbersfalse\newif\ifbyp@ge\byp@gefalse
\def\defm@rk{\ifftn@mbers\n@mberm@rk\else\symb@lm@rk\fi}
\def\n@mberm@rk{\xdef\m@rk{{\the\ftn@mber}}%
    \global\advance\ftn@mber by 1 }
\def\rot@te#1{\let\temp=#1\global#1=\expandafter\r@t@te\the\temp,X}
\def\r@t@te#1,#2X{{#2#1}\xdef\m@rk{{#1}}}
\def\b@@st#1{{$^{#1}$}}\def\str@p#1{#1}
\def\symb@lm@rk{\ifbyp@ge\rot@te\p@gelist\ifnum\expandafter\str@p\m@rk=1 
    \s@mb@ls=\symb@ls\fi\write\f@nsout{\number\count0}\fi \rot@te\s@mb@ls}
\def\byp@ge{\byp@getrue\n@wwrite\f@nsin\openin\f@nsin=\jobname.fns 
    \n@wcount\currentp@ge\currentp@ge=0\p@gelist={0}
    \re@dfns\closein\f@nsin\rot@te\p@gelist
    \n@wread\f@nsout\openout\f@nsout=\jobname.fns }
\def\m@kelist#1X#2{{#1,#2}}
\def\re@dfns{\ifeof\f@nsin\let\next=\relax\else\read\f@nsin to \f@nline
    \ifx\f@nline\v@idline\else\let\t@mplist=\p@gelist
    \ifnum\currentp@ge=\f@nline
    \global\p@gelist=\expandafter\m@kelist\the\t@mplistX0
    \else\currentp@ge=\f@nline
    \global\p@gelist=\expandafter\m@kelist\the\t@mplistX1\fi\fi
    \let\next=\re@dfns\fi\next}
\def\symbols#1{\symb@ls={#1}\s@mb@ls=\symb@ls} 
\def\bigsymbol{\textstyle}
\symbols{\bigsymbol\ast,\dagger,\ddagger,\sharp,\flat,\natural,\star}
\def\ftnumbers{\ftn@mberstrue} \def\ftsymbols{\ftn@mbersfalse}
\def\paginal{\byp@ge} \def\resetftnumbers{\ftn@mber=1}
\def\ftnote#1{\defm@rk\expandafter\expandafter\expandafter\footnote
    \expandafter\b@@st\m@rk{#1}}

%Miscellaneous macros:
\long\def\jump#1\endjump{}
\def\ssum{\mathop{\lower .1em\hbox{$\textstyle\Sigma$}}\nolimits}
\def\down#1{_{{}_{\scriptstyle #1}}}
\def\qed{\nobreak\kern 1em \vrule height .5em width .5em depth 0em}
\def\newneq{\hbox{\rlap{\hbox to 1\wd9{\hss$=$\hss}}\raise .1em 
   \hbox to 1\wd9{\hss$\scriptscriptstyle/$\hss}}}
\def\subsetne{\setbox9 = \hbox{$\subset$}\mathrel{\hbox{\rlap
   {\lower .4em \newneq}\raise .13em \hbox{$\subset$}}}}
\def\supsetne{\setbox9 = \hbox{$\subset$}\mathrel{\hbox{\rlap
   {\lower .4em \newneq}\raise .13em \hbox{$\supset$}}}}

%Blackboard bold:
\def\vbar{\mathchoice{\vrule height6.3ptdepth-.5ptwidth.8pt\kern-.8pt}
   {\vrule height6.3ptdepth-.5ptwidth.8pt\kern-.8pt}
   {\vrule height4.1ptdepth-.35ptwidth.6pt\kern-.6pt}
   {\vrule height3.1ptdepth-.25ptwidth.5pt\kern-.5pt}}
\def\f@dge{\mathchoice{}{}{\mkern.5mu}{\mkern.8mu}}
\def\b@c#1#2{{\rm \mkern#2mu\vbar\mkern-#2mu#1}}
\def\b@b#1{{\rm I\mkern-3.5mu #1}}
\def\b@a#1#2{{\rm #1\mkern-#2mu\f@dge #1}}
\def\bb#1{{\count4=`#1 \advance\count4by-64 \ifcase\count4\or\b@a A{11.5}\or
   \b@b B\or\b@c C{5}\or\b@b D\or\b@b E\or\b@b F \or\b@c G{5}\or\b@b H\or
   \b@b I\or\b@c J{3}\or\b@b K\or\b@b L \or\b@b M\or\b@b N\or\b@c O{5} \or
   \b@b P\or\b@c Q{5}\or\b@b R\or\b@a S{8}\or\b@a T{10.5}\or\b@c U{5}\or
   \b@a V{12}\or\b@a W{16.5}\or\b@a X{11}\or\b@a Y{11.7}\or\b@a Z{7.5}\fi}}

\catcode`\X=11 \catcode`\@=12

%  *** end including mathdefs.tex *** 
% % \input citeadd
%  *** start including citeadd.tex *** 
%   citeadd -- a few additions for 
% files from alice that were procesed with "citealice"

\expandafter\ifx\csname citeadd.tex\endcsname\relax
\expandafter\gdef\csname citeadd.tex\endcsname{}
\else \message{Hey!  Apparently you were trying to
\string\input{citeadd.tex} twice.   This does not make sense.} 
\errmessage{Please edit your file (probably \jobname.tex) and remove
any duplicate ``\string\input'' lines}\endinput\fi





\def\sciteu{\sciteerror{undefined}}
\def\sciteuphantom{\complainaboutcitation{undefined}}

\def\scitet{\sciteerror{ambiguous}}
\def\scitetphantom{\complainaboutcitation{ambiguous}}




\def\sciteerror#1#2{{\mathortextbf{\scite{#2}}}\complainaboutcitation{#1}{#2}}
\def\mathortextbf#1{\hbox{\bf #1}}
\def\complainaboutcitation#1#2{%
\vadjust{\line{\llap{---$\!\!>$ }\qquad scite$\{$#2$\}$ #1\hfil}}}





%  *** end including citeadd.tex *** 
\sectno=-1   % start with sect 0
\localtags
%\jjtags
\NoBlackBoxes
\define\mr{\medskip\roster}
\define\sn{\smallskip\noindent}
\define\mn{\medskip\noindent}
\define\bn{\bigskip\noindent}
\define\ub{\underbar}
\define\wilog{\text{without loss of generality}}
\define\ermn{\endroster\medskip\noindent}
\define\dbca{\dsize\bigcap}
\define\dbcu{\dsize\bigcup}
\define \nl{\newline}
\magnification=\magstep 1
\documentstyle{amsppt}
% % \input alice2000
%  *** start including alice2000.tex *** 
% This file should be inputted whenever we use amsppt.sty and 
% old tex.  
%  Here we redefine \subjclass (use 1991 instead of 2000, otherwise 
% the following definition comes directly from 
%% 
%%              `amsppt.sty', generated 
%% on <1997/2/2> with the docstrip utility (2.2i).
%% 
%% The original source files were:
%% 
%% amsppt.doc 
%%% ====================================================================
%%% @AMSTeX-style-file{
%%%   filename  = "amsppt.sty",
%%%   version   = "2.1h",
%%%   date      = "1997/02/02",
%%%   time      = "09:27:44 EST",
%%%   checksum  = "56844 3264 16617 137829",
%%%   author    = "American Mathematical Society",
%%%   address   = "PO Box 6248, Providence, RI 02940-6248, USA",
%%%   telephone = "401-455-4080 or (in the USA) 800-321-4AMS",

{    % the braces make the catcode-change local. 
\catcode`@11

\ifx\alicetwothousandloaded@\relax
  \endinput\else\global\let\alicetwothousandloaded@\relax\fi


\gdef\subjclass{\let\savedef@\subjclass
 \def\subjclass##1\endsubjclass{\let\subjclass\savedef@
   \toks@{\def\usualspace{{\rm\enspace}}\eightpoint}%
   \toks@@{##1\unskip.}%
   \edef\thesubjclass@{\the\toks@
     \frills@{{\noexpand\rm2000 {\noexpand\it Mathematics Subject
       Classification}.\noexpand\enspace}}%
     \the\toks@@}}%
  \nofrillscheck\subjclass}
} 

%  *** end including alice2000.tex *** 
\pageheight{8.5truein}
%\pageheight{48.5pc}
\topmatter
\title{A partition relation using strongly compact cardinals \\
 Sh761} \endtitle
\author {Saharon Shelah \thanks {\null\newline I would like to thank 
Alice Leonhardt for the beautiful typing. \null\newline
Research of the author was partially  supported by the 
United States-Israel Binational Science Foundation. \null\newline
Publ.761. \null\newline
Latest Revision - 01/March/20} \endthanks} \endauthor 
% Previous version - 01/Feb/23 (01/Jan/25 (AR's latex file))
\affil{Institute of Mathematics\\
 The Hebrew University\\
 Jerusalem, Israel
 \medskip
 Rutgers University\\
 Mathematics Department\\ 
New Brunswick, NJ  USA} \endaffil
\medskip
\abstract
If $\kappa$ is strongly compact and $\lambda > \kappa$ is regular,
then $\left(2^{<\lambda}\right)^+ \rightarrow (\lambda + \zeta)^2_\theta$ 
holds for $\zeta,\theta < \kappa$.  \endabstract
\endtopmatter
\document  
% % \input alice2jlem
%  *** start including alice2jlem.tex *** 
%% # Keywords  Input file to be used for texing Alice's files

\expandafter\ifx\csname alice2jlem.tex\endcsname\relax
  \expandafter\xdef\csname alice2jlem.tex\endcsname{\the\catcode`@}
\else \message{Hey!  Apparently you were trying to
\string\input{alice2jlem.tex}  twice.   This does not make sense.}
\errmessage{Please edit your file (probably \jobname.tex) and remove
any duplicate ``\string\input'' lines}\endinput\fi



% % \input bib4plain
%  *** start including bib4plain.tex *** 
\expandafter\ifx\csname bib4plain.tex\endcsname\relax
  \expandafter\gdef\csname bib4plain.tex\endcsname{}
\else \message{Hey!  Apparently you were trying to \string\input
  bib4plain.tex twice.   This does not make sense.}
\errmessage{Please edit your file (probably \jobname.tex) and remove
any duplicate ``\string\input'' lines}\endinput\fi


%  This file should be inputted if you want to use 
%  bibtex fom within plain TeX. 
\def\makeatletter{\catcode`\@11 }      % Not really need for standard
\def\makeatother{\catcode`\@12 }       % bibtex files, but these commands
\def\renewcommand{\newcommand}	       % are used in our literal-unsrt.bst
				       % and other files. 
%  The above lines were written by Martin.Goldstern@tuwien.ac.at
%  The rest is just the file btxmac.tex. 
%  (except for one small change below, regarding undefined citations)

%% @texfile{
%%   author = "Karl Berry and Oren Patashnik",
%%   version = "0.99j",
%%   date = "14 Mar 1992",
%%   filename = "btxmac.tex",
%%   address = "Please use electronic mail",
%%   checksum = "834    4503   33061",
%%   email = "opbibtex@cs.stanford.edu",
%%   codetable = "ISO/ASCII",
%%   supported = "yes",
%%   docstring = "Defines macros that make BibTeX work with plain TeX",
%% }
% BibTeX-for-TeX macros, version 0.99j, for BibTeX 0.99c, TeX 3.0 or later.
% Copyright (C) 1990--92 by Karl Berry and Oren Patashnik; all rights reserved.
% You may copy this file provided: that it's accompanied by the
% "BibTeXing" document, whose text is contained in the file `btxdoc.tex';
% that any documentation you write for these macros also gives a
% reference for "BibTeXing"; and that either you make absolutely no
% changes to your copy, or if you do make changes, (1) you name the file
% something other than `btxmac.tex' and you remove all occurrences of
% `btxmac.tex' from the file, (2) you put, somewhere in the first twenty
% lines of the file, your name, along with an electronic address at which
% others who might use the file may reach you, and (3) you remove each
% occurrence of Oren's name and electronic address from this file.  These
% restrictions help ensure that all standard versions of these macros are
% identical, and that Oren doesn't get deluged with inappropriate e-mail.
%
% This file, btxmac.tex, contains TeX macros that allow BibTeX, a
% bibliography program that was originally designed for use with LaTeX,
% to work with plain TeX.  Please report any bugs (outright goofs,
% improvable macros, misfeatures, or unclear documentation) to Oren
% Patashnik (opbibtex@cs.stanford.edu).  These macros will become frozen
% shortly after BibTeX version 1.00 is released.
%
% AMS-TEX WARNING: We tried very hard, for version .99i of these macros,
% to make them compatible with AmS-TeX.  We succeeded to the extent
% that, if you use one of the standard bibliography styles, you probably
% won't notice any problems with version 0.99i of btxmac.tex.  But
% ultimately we failed, in that the inherent incompatibilities between
% plain TeX and AmS-TeX kept making these macros break, for certain
% inputs or certain styles.  Examples:  (1) AmS-TeX treats at-signs as
% special, in ways that plain TeX and LaTeX don't, so that, for example,
% you can't have any `@' characters in an argument to the \cite command,
% the way you can in TeX or LaTeX; (2) AmS-TeX decided that plain TeX's
% and LaTeX's macron-accent control sequence `\=' should be undefined;
% so you'll need to define `\=' to be `\B' to get the xampl.bib example
% suggested below to work with AmS-TeX; (3) AmS-TeX redefines the tie
% character `~' of plain TeX, and AmS-TeX's `amsppt' style redefines
% plain TeX's `\nobreak' macro, so that if you use an author-date style
% like `apalike' and you have a multiple-author reference for which the
% author-date style automatically produces a citation in the text like
% `(Jones et~al., 1992)' you will throw AmS-TeX's `amsppt' style into
% an infinite loop, exceeding its input stack size.  In practice, such
% incompatibilities surface infrequently; but it is now clear to us that
% it's not worth the effort (perhaps it's not even possible) to make the
% btxmac.tex macros robust when used both with plain TeX and Ams-TeX.
% If the BibTeX/AmS-TeX results attainable with the current btxmac.tex
% macros are sufficient, fine.  But if there's a demand for more robust
% BibTeX/AmS-TeX behavior, then someone who's very familiar with the
% AmS-TeX package should probably make an amsbtxmc.tex version of the
% macros (remembering to follow the copyright restrictions above).
% Until then, if you're an AmS-TeX user, or a LaTeX or plain TeX user
% sharing files with an AmS-TeX user, beware.
% END OF AMS-TEX WARNING.
%
% To use these macros you should be familiar with how BibTeX interacts
% with LaTeX, since BibTeX's interaction with TeX is very similar; that
% interaction is explained in the LaTeX manual.  It also helps to
% have read "BibTeXing", the documentation that accompanies BibTeX.
% Then, if you want, you should redefine any of the macros that begin
% with `\bbl' or `\biblabel' or `\print' that you need to get formatting
% different from the default (the default settings are designed to
% accompany a bibliography style like BibTeX's standard style `plain').
% The macros you might want to change are described briefly a few
% paragraphs hence.  [To get started without reading any documentation,
% try running the nine-line .tex file below through TeX and BibTeX.
% Remember the general scheme: Running (La)TeX writes information on
% the .aux (auxiliary) file; then running BibTeX reads information from
% the .aux, .bst (style), and .bib (database) files, and writes
% information (the bibliography) on a .bbl file; then running (La)TeX
% incorporates the bibliography; then running (La)TeX once more fixes
% the remaining forward references into the bibliography.  Thus, to get
% everything incorporated into your output, you'll have to run (La)TeX,
% BibTeX, (La)TeX, (La)TeX.  (Standup, sitdown, fight, fight, fight.)]
%
% These macros can stand alone or they can be \input into a macro
% package, like Eplain, that is sufficiently compatible with plain TeX.
% To use these macros to format the 0.99 version of the xampl.bib file
% that's distributed with BibTeX (that version of the file has no
% self-identification), you'll need to define \mbox, which is a LaTeX
% command, to be \hbox, as in the example below.
%
% Here's a nine-line plain TeX file for trying out btxmac.tex; of course
% you'll have to remove the comment characters at the beginning of each
% line, and, depending on your system, you might have to take steps so
% that BibTeX can "see" the files xampl.bib and plain.bst (BibTeX will
% give you two empty-field warning messages that you should ignore).
%
%     \def\mbox#1{\leavevmode\hbox{#1}}
%     \input btxmac
%     \noindent This cites Aamport's gnominious article~\cite{article-full}.
%     \medskip
%     \leftline{\bf References}
%     \nocite{*}   % put all database entries into the reference list
%     \bibliography{xampl}   % specify the database files; here, just xampl.bib
%     \bibliographystyle{plain}   % specify plain.bst as the style file
%     \bye
%
%
%   HISTORY
%
% Karl Berry wrote the original version of these macros in 1989 and
% 1990, for use in his `Eplain' package.  Oren Patashnik modified them
% slightly in July 1990, as part of the official BibTeX distribution.
%
%    1-Aug-90  Version 0.99a, not released to the general public.
%   14-Aug-90  0.99b, first general release.
%   26-Aug-90  0.99c, made \@undefinedmessage work with other macro packages.
%    6-Sep-90  0.99d, allowed for general formatting of bibliography labels,
%                     for general formatting of (in-text) citations, and for
%                     changing certain catcodes while reading the .aux file.
%   14-Nov-90  0.99e, changed the way \@setletters works, made some \new...'s
%                     non-outer, and changed the way Eplain reads this file.
%   12-Dec-90  0.99f, made \@resetnumerals change the `,' and `.' catcodes; and
%                     added \biblabelextrahang, \@getoptionalarg, and \bblsc.
%   11-Mar-91  0.99g, made a few minor changes required by the way Eplain reads
%                     this file, but no functional changes.
%   24-Apr-91  0.99h, inhibited the reading and writing of the .aux file if it
%                     isn't used or if the \noauxfile macro is defined, and
%                     removed some .aux-file-opening detritus; printed the
%                     cite-key of undefined citations in \tt font; changed the
%                     catcode of `_' inside \cite; and called \@resetnumerals
%                     from inside a group.
%   29-Feb-92  0.99i, made these macros semi-compatible with AmS-TeX; removed
%                     \@resetnumerals, \@setletters, \@tokstostring, and
%                     friends; changed the way \cite handles catcodes; changed
%                     \@getoptionalarg, and had \bibitem and \newcommand use
%                     it; added \@futurenonspacelet and (to facilitate the use
%                     of multiple reference lists) \bblfilebasename; changed
%                     \biblabelprint to use the new macros \biblabelprecontents
%                     and \biblabelpostcontents, and to, by default, right-
%                     justify numeric labels; and renamed \biblabelextrahang to
%                     the more descriptive \biblabelextraspace.
%   14-Mar-92  0.99j, made 0.99i's use of `\\' local to btxmac.tex.
%
%
% The LaTeX-related commands defined in this file include (a) the four
% commands that a user types (\bibliography, \bibliographystyle, \cite,
% and \nocite); (b) the three commands that BibTeX looks for in the .aux
% file (\bibdata, \bibstyle, and \citation---there is a fourth command
% that BibTeX looks for, but that command is related to LaTeX's \include
% facility, so these macros ignore that command); and (c) a LaTeX
% command (\newcommand) that's written by one of the four standard
% bibliography styles (alpha).  The definitions here are not exactly the
% same as the corresponding LaTeX definitions (those eight LaTeX
% definitions depend on a significant fraction of LaTeX itself).  But
% the only substantial differences are with \newcommand, which here,
% without complaining, lets you redefine a preexisting control sequence
% (in LaTeX, \newcommand won't let you redefine a preexisting command),
% and which here doesn't make the control sequences it defines \long (in
% LaTeX, that happens automatically); there may also be other minor
% differences.  To summarize: Unless you know what you're doing, you
% shouldn't define any control sequences with these eight names:
%
% \bibdata
% \bibliography
% \bibliographystyle
% \bibstyle
% \citation
% \cite
% \newcommand
% \nocite
%
% There are three other commands written by one or more of the four
% standard (plain, abbrv, alpha, unsrt) or four semistandard (acm,
% apalike, ieeetr, siam) bibliography styles; they take effect only
% within the bibliography, and are redefinable, as explained later:
%
% \em
% \newblock
% \sc
%
% There's one control sequence you might want to use (but not redefine)
% in redefining \biblabelprint:
%
% \biblabelwidth
%
% There are fifteen other control sequences (explained later in more detail)
% that the macros of this file will use if you define them---you should
% define them after the \input btxmac command but before the \bibliography
% command.  The first six begin with `\bbl' and affect fonts, spacing,
% perhaps other characteristics of the bibliography, and which .bbl files
% get read; the next five begin with `\biblabel' and determine how labels
% are formatted in the bibliography; and the last four begin with `\print'
% and determine how the in-text citations are formatted:
%
% \bblem
% \bblfilebasename
% \bblhook
% \bblnewblock
% \bblrm
% \bblsc
% \biblabelcontents
% \biblabelprecontents
% \biblabelprint
% \biblabelpostcontents
% \biblabelextraspace
% \printbetweencitations
% \printcitefinish
% \printcitenote
% \printcitestart
%
% If it's defined before the \input btxmac command, the control sequence
% below inhibits the reading and writing of the .aux file(s), and the
% issuing of related warning messages.  Any definition will do.  This
% feature might help when you're working on draft stages of a document:
%
% \noauxfile
%
%
% Here's another control sequence (it's described later) that you
% probably won't want to redefine unless you are writing another macro
% package; if you do redefine it, however, do it before the \input btxmac
% command (and notice that it has an `@' in its name):
%
% \@undefinedmessage
%
% Any other control sequence in this file that might conflict with
% something you've defined will have an `@' in its name, so such conflicts
% are unlikely; but if you're worried about a specific control sequence
% name, do a text search of this file to look for it.
%
%
% So to start things off we turn `@' into a letter (category code 11),
% keeping track of the old category code for future restoration.
% (Simply resetting it to 12 when we leave these macros is
% insufficient.)  The use of `\cite' as a temporary control sequence is
% a kludge, but it's a reasonably simple way to accomplish what we need
% without possibly overwriting something (without an `@' in its name)
% that might already be defined.
%
\edef\cite{\the\catcode`@}%
\catcode`@ = 11
\let\@oldatcatcode = \cite
\chardef\@letter = 11
\chardef\@other = 12
%
%
% Next come some things that will be useful later.
%
% Make an outer definition into an inner one (due to Chris Thompson).
% The arguments should be the control sequence to be defined, and the
% new of the \outer control sequence, as characters; the control
% sequence #1 is defined to be just the same as \csname#2\endcsname, but
% not \outer.  For example, \@innerdef\innernewcount{newcount} would
% define \innernewcount to be a non-outer version of \newcount.
%
\def\@innerdef#1#2{\edef#1{\expandafter\noexpand\csname #2\endcsname}}%
%
% We use \@innerdef to make some of our allocations local, because
% Eplain includes our code inside a conditional.  We put @'s in the
% names to minimize the (already small) chance of conflicts.
%
\@innerdef\@innernewcount{newcount}%
\@innerdef\@innernewdimen{newdimen}%
\@innerdef\@innernewif{newif}%
\@innerdef\@innernewwrite{newwrite}%
%
%
% Swallow one parameter.
%
\def\@gobble#1{}%
%
%
% Use TeX 3.0's \inputlineno to get the line number, for better error
% messages, but if we're using an old version of TeX, don't do anything.
%
\ifx\inputlineno\@undefined
   \let\@linenumber = \empty % Pre-3.0.
\else
   \def\@linenumber{\the\inputlineno:\space}%
\fi
%
%
% The following macro \@futurenonspacelet (from the TeXbook) behaves
% essentially like \futurelet except that it discards any implicit or
% explicit space tokens that intervene before a nonspace is scanned:
%
\def\@futurenonspacelet#1{\def\cs{#1}%
   \afterassignment\@stepone\let\@nexttoken=
}%
\begingroup % The grouping here avoids stepping on an outside use of `\\'.
\def\\{\global\let\@stoken= }%
\\ % now \@stoken is a space token (\\ is a control symbol, so that
   % space after it is seen).
\endgroup
\def\@stepone{\expandafter\futurelet\cs\@steptwo}%
\def\@steptwo{\expandafter\ifx\cs\@stoken\let\@@next=\@stepthree
   \else\let\@@next=\@nexttoken\fi \@@next}%
\def\@stepthree{\afterassignment\@stepone\let\@@next= }%
%
%
% \@getoptionalarg\CS gets an optional argument from the input, enclosed
% in brackets, then expands \CS.  We set \@optionalarg to \empty if we
% don't find one, otherwise to the text of the argument.  This assumes
% the brackets don't have a funny category code.
%
\def\@getoptionalarg#1{%
   \let\@optionaltemp = #1%
   \let\@optionalnext = \relax
   \@futurenonspacelet\@optionalnext\@bracketcheck
}%
%
% The \expandafter's in this macro let us avoid the use of \aftergroup,
% which is somewhat more expensive.
%
\def\@bracketcheck{%
   \ifx [\@optionalnext
      \expandafter\@@getoptionalarg
   \else
      \let\@optionalarg = \empty
      % We can't do the \temp after the \fi, because then the \temp gets
      % in the way of reading the optional argument from the input, if
      % we do have one.
      \expandafter\@optionaltemp
   \fi
}%
%
\def\@@getoptionalarg[#1]{%
   \def\@optionalarg{#1}%
   \@optionaltemp
}%
%
%
% From LaTeX.
%
\def\@nnil{\@nil}%
\def\@fornoop#1\@@#2#3{}%
%
\def\@for#1:=#2\do#3{%
   \edef\@fortmp{#2}%
   \ifx\@fortmp\empty \else
      \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}%
   \fi
}%
%
\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else
       #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi
}%
%
\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
       \let\@nextwhile=\@fornoop \else
      #4\relax\let\@nextwhile=\@iforloop\fi\@nextwhile#2\@@#3{#4}%
}%
%
%
% This macro tests if a file \jobname.#1 exists, and sets \if@fileexists
% appropriately.  If an optional argument is given, it is used as the
% root part of the filename instead of \jobname.
%
\@innernewif\if@fileexists
%
\def\@testfileexistence{\@getoptionalarg\@finishtestfileexistence}%
\def\@finishtestfileexistence#1{%
   \begingroup
      \def\extension{#1}%
      \immediate\openin0 =
         \ifx\@optionalarg\empty\jobname\else\@optionalarg\fi
         \ifx\extension\empty \else .#1\fi
         \space
      \ifeof 0
         \global\@fileexistsfalse
      \else
         \global\@fileexiststrue
      \fi
      \immediate\closein0
   \endgroup
}%
%
%
%% [[[start of BibTeX-specific stuff]]]
%
% Now come the four main LaTeX commands and their associated .aux
% commands.  Just as in LaTeX, \bibliographystyle defines the BibTeX
% style name (.bst file, that is), and \bibliography defines the
% database (.bib) file(s).  The corresponding .aux-file commands are
% \bibstyle and \bibdata, which are there only for BibTeX's (but not
% LaTeX's) use.
%
\def\bibliographystyle#1{%
   \@readauxfile
   \@writeaux{\string\bibstyle{#1}}%
}%
\let\bibstyle = \@gobble
%
% As well as writing the \bibdata command to tell BibTeX which .bib
% files to read, we read the .bbl file that BibTeX (or a person,
% conceivably) has produced.  We use \bblfilebasename as the root of the
% filename to read; this defaults to \jobname.
%
\let\bblfilebasename = \jobname
\def\bibliography#1{%
   \@readauxfile
   \@writeaux{\string\bibdata{#1}}%
   \@testfileexistence[\bblfilebasename]{bbl}%
   \if@fileexists
      % We just output a non-discardable item (the `whatsit' with the
      % \bibdata command).  This means that the glue that will be
      % inserted next (\parskip or \baselineskip, most likely) will be a
      % legal breakpoint.  Most likely, this is after some kind of
      % heading, where we don't want to allow a page break.  So:
      \nobreak
      \@readbblfile
   \fi
}%
\let\bibdata = \@gobble
%
% The \nocite{label,label,...} command writes its argument to \@auxfile,
% unless instructed not to, but produces no text in the document.  Both
% the \nocite and \cite commands produce \citation commands in the .aux file.
%
\def\nocite#1{%
   \@readauxfile
   \@writeaux{\string\citation{#1}}%
}%
%
\@innernewif\if@notfirstcitation
%
% \cite[note]{label,label,...} produces the citations for the labels as
% well.  If the optional argument `note' is present, it's added after
% the labels.  Since \cite calls \nocite to do its .aux-file writing,
% \cite doesn't need to call \@readauxfile (\nocite does).
%
\def\cite{\@getoptionalarg\@cite}%
%
% Typeset the citations for the labels in #1, followed by the note, if
% it exists.  To change the citation's format in the text, redefine one
% or more `\print...' macros, whose defaults appear later in this file.
%
\def\@cite#1{%
   % Remember the optional argument, in case one of the macros we call
   % below ends up looking for an optional argument itself.  For
   % example, if a \cite[note] triggers reading the .aux file, then the
   % [note] would be clobbered, since \@testfileexistence looks for an
   % optional arg.
   \let\@citenotetext = \@optionalarg
   % Start printing the text, beginning with a left bracket by default.
   \printcitestart
   % It's complicated, but because \nocite puts a `whatsit' onto the list,
   % \nocite should follow \printcitestart.  It's conceivable, but very
   % unlikely, that this `whatsit' will cause a problem (glue that doesn't
   % disappear when you want it to is the most likely symptom), requiring
   % a change either to \printcitestart or to the label that the .bst file
   % produces.
   \nocite{#1}%
   \@notfirstcitationfalse
   \@for \@citation :=#1\do
   {%
      \expandafter\@onecitation\@citation\@@
   }%
   \ifx\empty\@citenotetext\else
      \printcitenote{\@citenotetext}%
   \fi
   \printcitefinish
}%
%
\def\@onecitation#1\@@{%
   \if@notfirstcitation
      \printbetweencitations
   \fi
   %
   \expandafter \ifx \csname\@citelabel{#1}\endcsname \relax
      \if@citewarning
         \message{\@linenumber Undefined citation `#1'.}%
      \fi
      % Give it a dummy definition:
      \expandafter\gdef\csname\@citelabel{#1}\endcsname{%
% Change: marginal remark added, goldstrn@math.huji.ac.il, 
% goldstern@tuwien.ac.at, May 1996 mg
%  !!! change !!!
\strut
\vadjust{\vskip-\dp\strutbox
\vbox to 0pt{\vss\parindent0cm \leftskip=\hsize 
\advance\leftskip3mm
\advance\hsize 4cm\strut\openup-4pt 
\rightskip 0cm plus 1cm minus 0.5cm ?  #1 ?\strut}}
         {\tt
            \escapechar = -1
            \nobreak\hskip0pt
            \expandafter\string\csname#1\endcsname
            \nobreak\hskip0pt
         }%
      }%
   \fi
   % Now produce the text, whether it was undefined or not.
   \csname\@citelabel{#1}\endcsname
   \@notfirstcitationtrue
}%
%
% Given a label `foo', the macro `\b@foo' is supposed to
% hold the text that should be produced.
%
\def\@citelabel#1{b@#1}%
%
% So, how does a citation label get defined?  When we read the .bbl file
% (below), a \bibitem writes out a \@citedef command.  And when we read
% the \@citedef, we define \@citelabel{#1}, where #1 is the user's
% label.
%
\def\@citedef#1#2{\expandafter\gdef\csname\@citelabel{#1}\endcsname{#2}}%
%
%
% Reading the .bbl file also produces the typeset bibliography.  Please
% notice, however, that we do not produce the title for the references
% (e.g., `References'), as LaTeX does.  The formatting and spacing of
% that title, whether it should go into the headline, and so on, are all
% things determined by your format.  We cannot know those things in
% advance.  If you wish, you can define \bblhook to produce the title.
% Or just do it before the \bibliography command.
%
\def\@readbblfile{%
   % Define a counter to tell us which item number we are on, unless
   % we've already defined it (because the document has more than one
   % bibliography).
   \ifx\@itemnum\@undefined
      \@innernewcount\@itemnum
   \fi
   %
   \begingroup
      \def\begin##1##2{%
         % ##1 is just `thebibliography'.
         % ##2 is the widest label.
         % We set (new dimen) \biblabelwidth based on the widest label
         \setbox0 = \hbox{\biblabelcontents{##2}}%
         \biblabelwidth = \wd0
      }%
      \def\end##1{}% ##1 is `thebibliography' again.
      %
      % Here we have two possibilities:
      % \bibitem[typesetlabel]{citationlabel}
      % \bibitem{citationlabel}
      % If we have the second of these, the citations are numbered, starting
      % from one; we use our own count register \@itemnum for this.
      %
      \@itemnum = 0
      \def\bibitem{\@getoptionalarg\@bibitem}%
      \def\@bibitem{%
         \ifx\@optionalarg\empty
            \expandafter\@numberedbibitem
         \else
            \expandafter\@alphabibitem
         \fi
      }%
      \def\@alphabibitem##1{%
         % Need \xdef here for various reasons.
         \expandafter \xdef\csname\@citelabel{##1}\endcsname {\@optionalarg}%
         % Left-justify alpha labels, unless \biblabel{pre,post}contents
         % are already defined.
         \ifx\biblabelprecontents\@undefined
            \let\biblabelprecontents = \relax
         \fi
         \ifx\biblabelpostcontents\@undefined
            \let\biblabelpostcontents = \hss
         \fi
         \@finishbibitem{##1}%
      }%
      %
      \def\@numberedbibitem##1{%
         \advance\@itemnum by 1
         \expandafter \xdef\csname\@citelabel{##1}\endcsname{\number\@itemnum}%
         % Right-justify numeric labels, unless \biblabel{pre,post}contents
         % are already defined.
         \ifx\biblabelprecontents\@undefined
            \let\biblabelprecontents = \hss
         \fi
         \ifx\biblabelpostcontents\@undefined
            \let\biblabelpostcontents = \relax
         \fi
         \@finishbibitem{##1}%
      }%
      %
      \def\@finishbibitem##1{%
         \biblabelprint{\csname\@citelabel{##1}\endcsname}%
         \@writeaux{\string\@citedef{##1}{\csname\@citelabel{##1}\endcsname}}%
         \ignorespaces
      }%
      %
      % Do the printing (we're producing the bibliography, remember).
      %
      \let\em = \bblem
      \let\newblock = \bblnewblock
      \let\sc = \bblsc
      % Punctuation won't affect spacing;
      \frenchspacing
      % the penalties below are from LaTeX's [article,book,report].sty;
      \clubpenalty = 4000 \widowpenalty = 4000
      % the next two values come from LaTeX's \sloppy command;
      \tolerance = 10000 \hfuzz = .5pt
      \everypar = {\hangindent = \biblabelwidth
                      \advance\hangindent by \biblabelextraspace}%
      \bblrm
      % the \parskip is a guess at what looks good;
      \parskip = 1.5ex plus .5ex minus .5ex
      % and the space between label and text comes from LaTeX's \labelsep.
      \biblabelextraspace = .5em
      \bblhook
      %
      \input \bblfilebasename.bbl
   \endgroup
}%
%
% The widest label's width is useful for redefining \biblabelprint;
% you redefine \biblabelwidth, in effect, by redefining the
% \biblabelcontents macro that appears below.  And \biblabelextraspace,
% which is redefinable inside \bblhook, is added to \biblabelwidth to
% determine the amount of hanging indentation.
%
\@innernewdimen\biblabelwidth
\@innernewdimen\biblabelextraspace
%
% Now come the main macros that are related to the printing of the
% bibliography.  Since you might want to redefine them, they are given
% default definitions outside of \@readbblfile.
%
% The first one controls the printing of a bibliography entry's label.
% If you change it, make sure that it starts with something like
% \noindent or \indent or \leavevmode that puts TeX into horizontal mode
% (even if the label itself is empty); otherwise, the hanging
% indentation will get messed up in certain circumstances.
%
\def\biblabelprint#1{%
   \noindent
   \hbox to \biblabelwidth{%
      \biblabelprecontents
      \biblabelcontents{#1}%
      \biblabelpostcontents
   }%
   \kern\biblabelextraspace
}%
%
% If you are using numeric labels, and you want them left-justified
% (numeric labels by default are right-justified), do something like:
%     \def\biblabelprecontents{\relax}
%     \def\biblabelpostcontents{\hss}
%
% By default the labels are typeset in \bblrm, and enclosed in brackets.
%
\def\biblabelcontents#1{{\bblrm [#1]}}%
%
% The main text, too, is typeset using \bblrm, which is \rm by default.
%
\def\bblrm{\rm}%
%
% Emphasis for producing, e.g., titles, is done with \it by default.
%
\def\bblem{\it}%
%
% Some styles use a caps-and-small-caps font for author names.  LaTeX
% defines an \sc command but plain TeX doesn't, so we need one here.
% The definition below doesn't load the font unless it's needed, but it
% tries to load only the 10pt version, because it might not exist at
% other point sizes.
%
\def\bblsc{\ifx\@scfont\@undefined
              \font\@scfont = cmcsc10
           \fi
           \@scfont
}%
%
% The major parts of an entry are separated with \bblnewblock.  The
% numbers below are taken from LaTeX's `article' style.
%
\def\bblnewblock{\hskip .11em plus .33em minus .07em }%
%
% Here's where you stick any other bibliography-formatting goodies, or
% redefine the values above.
%
\let\bblhook = \empty
%
%
% Here are the four default definitions for formatting the in-text
% citations.  These are what you redefine (after your \input btxmac but
% before your \bibliography) to get parens instead of brackets, or
% superscripts, or footnotes, or whatever.
%
\def\printcitestart{[}%         left bracket
\def\printcitefinish{]}%        right bracket
\def\printbetweencitations{, }% comma, space
\def\printcitenote#1{, #1}%     comma, space, note (if it exists)
%
% That scheme is pretty flexible.  For example you could use
%     \def\printcitestart{\unskip $^\bgroup}
%     \def\printcitefinish{\egroup$}
%     \def\printbetweencitations{,}
%     \def\printcitenote#1{\hbox{\sevenrm\space (#1)}}
%     \font\eighttt = cmtt8
%     \scriptfont\ttfam = \eighttt
% to get superscripted in-text citations.  (The scriptfont stuff
% exists only to print an undefined citation; it's in cmtt8 because
% there is no cmtt7.)  To get something radically different, however,
% you'll have to define your own \cite command.
%
% When we read `\citation' from the .aux file, it means nothing.
%
\let\citation = \@gobble
%
%
% Now comes the stuff for dealing with LaTeX's \newcommand.  As
% mentioned earlier, this \newcommand will redefine a preexisting
% command; that's different from how LaTeX's \newcommand behaves.
%
\@innernewcount\@numparams
%
% \newcommand{\foo}[n]{text} defines the control sequence \foo to have
% n parameters, and replacement text `text'.
%
\def\newcommand#1{%
   \def\@commandname{#1}%
   \@getoptionalarg\@continuenewcommand
}%
%
% Figure out if this definition has parameters.
%
\def\@continuenewcommand{%
   % If no optional argument, we have zero parameters.  Otherwise, we
   % have that many.
   \@numparams = \ifx\@optionalarg\empty 0\else\@optionalarg \fi \relax
   \@newcommand
}%
%
% \@numparams is how many arguments this command has.  The name of the
% command is \@commandname.  The replacement text for the new macro is #1.
%
\def\@newcommand#1{%
   \def\@startdef{\expandafter\edef\@commandname}%
   \ifnum\@numparams=0
      \let\@paramdef = \empty
   \else
      \ifnum\@numparams>9
         \errmessage{\the\@numparams\space is too many parameters}%
      \else
         \ifnum\@numparams<0
            \errmessage{\the\@numparams\space is too few parameters}%
         \else
            \edef\@paramdef{%
               % This is disgusting, but \loop doesn't work inside \edef,
               % because \body isn't defined.
               \ifcase\@numparams
                  \empty  No arguments.
               \or ####1%
               \or ####1####2%
               \or ####1####2####3%
               \or ####1####2####3####4%
               \or ####1####2####3####4####5%
               \or ####1####2####3####4####5####6%
               \or ####1####2####3####4####5####6####7%
               \or ####1####2####3####4####5####6####7####8%
               \or ####1####2####3####4####5####6####7####8####9%
               \fi
            }%
         \fi
      \fi
   \fi
   \expandafter\@startdef\@paramdef{#1}%
}%
%
%% [[[end of BibTeX-specific stuff]]]
%
%
% Names of references (arguments given in the \cite and \nocite
% commands) and file names (arguments given in the \bibliography and
% \bibliographystyle commands) are recorded in \jobname.aux, called the
% \@auxfile in these macros.  Here's how they get read in.
%
\def\@readauxfile{%
   \if@auxfiledone \else % remember: \@auxfiledonetrue if \noauxfile is defined
      \global\@auxfiledonetrue
      \@testfileexistence{aux}%
      \if@fileexists
         \begingroup
            % Because we might be in horizontal mode when \@readauxfile
            % is called (if it's in response to a \cite or \nocite), we
            % want to ignore all the would-be spaces at the ends of
            % lines in the aux file.  Fortunately, it's highly unlikely
            % an end-of-line might actually be desired.
            % And because we don't change the category code of anything
            % but @, primitives like \gdef can't be used to define labels
            % in the aux file.  The solution adopted by btxmac.tex is to
            % write `\@citedef{LABEL}{DEFINITION}' to the aux file, and
            % use \csname on LABEL.
            \endlinechar = -1
            \catcode`@ = 11
            \input \jobname.aux
         \endgroup
      \else
         \message{\@undefinedmessage}%
         \global\@citewarningfalse
      \fi
      \immediate\openout\@auxfile = \jobname.aux
   \fi
}%
%
% The \@readauxfile macro does all that work the first time it's called.
% Since it's called once for every \cite, \nocite, \bibliography, and
% \bibliographystyle command that the user issues, we need to remember
% whether the work's been done.  It's considered done if we're not to do
% it---that is, if \noauxfile is defined.
%
\newif\if@auxfiledone
\ifx\noauxfile\@undefined \else \@auxfiledonetrue\fi
%
% It's conceivable you'd want to change how other characters are read;
% to do that, change their category code before doing \input btxmac.
%
%
% After reading the .aux file, \@readauxfile opens it for writing.
% The \@writeaux macro does the actual writing (as long as
% \noauxfile is undefined).
%
\@innernewwrite\@auxfile
\def\@writeaux#1{\ifx\noauxfile\@undefined \write\@auxfile{#1}\fi}%
%
%
% A macro package that uses btxmac.tex might define
% \@undefinedmessage (before doing an \input btxmac).
%
\ifx\@undefinedmessage\@undefined
   \def\@undefinedmessage{No .aux file; I won't give you warnings about
                          undefined citations.}%
\fi
%
% Even if citations are undefined, we want to complain only if
% \@citewarningtrue.  The default is to set \@citewarningtrue unless
% \noauxfile is defined.  Again, a macro package that uses
% btxmac.tex might want to redefine this.
%
\@innernewif\if@citewarning
\ifx\noauxfile\@undefined \@citewarningtrue\fi
%
%
% Finally, before leaving we restore @'s old category code.
%
\catcode`@ = \@oldatcatcode

%  *** end including bib4plain.tex *** 
  % This will define \cite and make sure it works as in latex


\def\widestnumber#1#2{}
  % Our amstex-ppt style does not know about \widestnumber



\def\rm{\fam0 \tenrm}


\def\fakesubhead#1\endsubhead{\bigskip\noindent{\bf#1}\par}


% % \input rsfs
%  *** start including rsfs.tex *** 

% # Keywords: Script or Calligraphic (Caligraphic) letters with the RSFS Font

% The story so far:    July 1998 -- Saharon would like to have a
% ``nicer'' calligraphic font. In particualr, the leters S and P in
% the usual calligraphic font do not look ``special'' enough. 
% 
% I found out that ``rsfs'' (``Ralph Smith Formal Script'') may be
% what he wants.   I installed the mf file, the .tfm file, as well as
% a few pk files in ~/TeX/rsfs.    Let's hope that this is enough.
% Using amstex, all you have to do is to \input rsfs.tex 
% Files prepared with citealice willdothis automatically. 
%
%  Note:  for some reason xdvi calls MakeTeXpk, then Maketexpk
%  complains about wrong resolution, but still writes commands to
%  missfont.log...  
%



% we redefine a macro inside amstex's \Cal command , so that it calls
% our nice font ``rsfs'' rather than the usual calligraphic font. 
% Note thisworks for amstex only.   
% In plain tex, would have to add definitions of \Cal
% in latex... we should insteaduse mathrsfs.sty
% 



\font\textrsfs=rsfs10
\font\scriptrsfs=rsfs7
\font\scriptscriptrsfs=rsfs5


\newfam\rsfsfam
\textfont\rsfsfam=\textrsfs
\scriptfont\rsfsfam=\scriptrsfs
\scriptscriptfont\rsfsfam=\scriptscriptrsfs


\edef\oldcatcodeofat{\the\catcode`\@}
\catcode`\@11

\def\Cal@@#1{\noaccents@ \fam \rsfsfam #1}

\catcode`\@\oldcatcodeofat

%  *** end including rsfs.tex *** 

\expandafter\ifx \csname margininit\endcsname \relax\else\margininit\fi

%  *** end including alice2jlem.tex *** 
\newpage

\head {\S1} \endhead  \resetall \sectno=1
 % \resetall 
\bigskip

The aim of this paper is to prove the following theorem. 
\proclaim{\stag{1.0} Theorem}   If $\kappa$ is a strongly compact cardinal,
$\lambda > \kappa$ is regular and $\zeta,\theta < \kappa$ \ub{then} the partition relation 
$\left(2^{<\lambda}\right)^+ \rightarrow (\lambda + \zeta)^2_\theta$ holds.
\endproclaim
\bigskip

We notice that our argument is valid in the case $\kappa = \omega$. 
As for the history of the problem we notice that  first Hajnal proved 
in an unpublished work, that $\left(2^\omega\right)^+ \rightarrow
(\omega_1 + n)^2_2$ holds for every $n < \omega$. 
Then I showed in \cite{Sh:26} that for $\kappa > \omega$ regular and
$|\alpha|^+ < \kappa$, the relation $\left(2^{< \kappa}\right)^+
\rightarrow (\kappa + \alpha)^2_2$ is true. 
More recently Baumgartner, Hajnal, and Todor\u cevi\'c in
\cite{BHT93} extended this to the case when the number of colors is arbitrary finite. 
\bigskip

\demo{Notation}  If $S$ is a set, $\kappa$ a cardinal then 
$[S]^\kappa = \{a \subseteq S:|a|= \kappa\},[S]^{< \kappa} =
\{a \subseteq S:|a| < \kappa\}$. 
If $D$ is some filter over a set $S$ then $X\in D^+$ denotes that 
$S\setminus X\notin D$. 
If $\kappa < \mu$  are regular cardinals then 
$S^\mu_\kappa = \{\alpha < \mu:\text{cf}(\alpha) =\kappa\}$, a stationary set. 
The notation $A = \{x_\alpha:\alpha < \gamma\}_<$, etc., means that
$A$ is enumerated increasingly. 
\enddemo
\bigskip

\proclaim{\stag{1.1} Lemma}  Assume $\mu = \mu^\theta$.  Assume that
$D$ is a normal filter on $\mu^+$ and $A^* \in D^+,\delta \in A^*
\Rightarrow \text{ cf}(\delta) \ge \lambda$, and $F'$ is a function
with domain $[A]^2$ and range of cardinality $\theta$.
There are a normal filter $D_0$ on $\mu^+$ extending $D,
A_0 \in D_0$ with $A_0 \subseteq A$ and $C_0 \subseteq 
\text{ Rang}(F')$ satisfying Rang$(F' \restriction [A_0]^2) 
= C_0$ such that: if $X \in D^+_0$ \ub{then}
Rang$(F' \restriction [X]^2) \supseteq C_0$.
\endproclaim
\bigskip

\demo{Proof}  Assume indirectly that for no stationary set does the statement of the
Lemma hold.
\enddemo
\bigskip

\proclaim{\stag{1.1a} Claim}   Assume $S^* \subseteq \mu^+$ belongs to
$D^+$ and $\delta \in S_0 \Rightarrow \text{ cf}(\delta_0) >
\theta$.
There is a stationary set $A \subseteq S^*$ and some $C \subseteq
\theta$ such that Rang$(F' \restriction [A]^2)=C$ and: if $f:A \rightarrow
\mu^+$ is a regressive function \ub{then} for some $\alpha < \mu^+$
Rang$(F' \restriction [f^{-1}(\alpha)]^2)=C$ and $f^{-1}(\alpha)$ is a stationary
subset of $\mu^+$ holds.
\endproclaim
\bigskip

\demo{Proof}   Assume that no such sets $A,C$ exist. 
We build a tree $T$ as follows. 
Every node $t$ of the tree will be of the form 


$$
\align
t &= \left\langle\langle A_\alpha:\alpha \le \varepsilon \rangle,
\langle f_\alpha:\alpha < \varepsilon \rangle,\langle i_\alpha:\alpha < \varepsilon \rangle
\right\rangle \\
  &= \left< \langle A^t_\alpha:\alpha \le \varepsilon \rangle,\langle
f^t_\alpha:\alpha < \varepsilon \rangle,\langle i^t_\alpha:\alpha <
\varepsilon \rangle \right>
\endalign
$$
\mn
for some ordinal $\varepsilon = \varepsilon(t)$ where $\langle A_\alpha:\alpha \le
\varepsilon \rangle$ is a decreasing, continuous sequence of subsets of $\mu^+$, 
for every $\alpha < \varepsilon,f_\alpha$ is a regressive function on $A_\alpha$, 
and $\langle i_\alpha:\alpha < \varepsilon \rangle$ is a sequence of distinct 
elements of $\theta$. 
It will always be true that if $t<t'$ then each of the three sequences of $t'$ 
extend the corresponding one of $t$.  

To start, we make the node $t$ with $\varepsilon(t)=0,A_0=\mu^+$ the root of the tree. 

At limit levels we extend (the obvious way) all cofinal branches to a node. 

If we are given an element $t= \left\langle \langle A_\alpha:\alpha
\le \varepsilon \rangle,\langle f_\alpha:\alpha < \varepsilon \rangle,
\langle i_\alpha:\alpha < \varepsilon \rangle \right\rangle$ of the
tree and the set $A_\varepsilon$ is $= \emptyset$ mod $D$ then we 
leave $t$ as a terminal node. 
Otherwise, let $C = \text{Rang}\left(F' \restriction 
[A_\varepsilon]^2\right)$ and notice that by 
hypothesis, $A_\varepsilon,C$ toward contradiction, the pair
$A_\varepsilon,C$ cannot be as required in the Claim. 
There is, therefore, a regressive function $f = f^t_t$ with domain
$A_\varepsilon$, such that for every $x < \mu^+$ the set 
Rang$\left(F' \restriction [f^{-1}(x)]^2\right)$ is a $= \emptyset$
mod $D$ subset of $C$ or $f^{-1}(x)$ is a non-stationary subset of $\mu^+$. 
We make the immediate extensions of $t$ the sequences of the form a
$t_x = \left\langle \langle A_\alpha:\alpha \le \varepsilon + 1 \rangle,
\langle f_\alpha:\alpha < \varepsilon + 1 \rangle,\langle i_\alpha:\alpha <
\varepsilon + 1 \rangle \right\rangle$ where $A_{\varepsilon +1} =
f^{-1}(x),f_\alpha= f^t$ and $i_\varepsilon \in C$ is some colour value not in 
the range of $F \restriction [A_\varepsilon]^2$.

Having constructed the tree observe that every element 
$x < \mu^+$ is covered (uniquely) by $A^{t(x)}_{\varepsilon(x)}$ in 
some  terminal node $t(x)$. 
Also, $\varepsilon(x) < \theta^+$ holds by the selection of the $i_\beta$'s. 
For some stationary set $S \subseteq S_0$ of ordinals $x < \mu^+$ the value of
$\varepsilon(x)$ is the same, say $\varepsilon$. 
For $x \in S$ we let $g_\alpha(x) = f^t_\alpha(x)$ where $f^t_\alpha$ is the 
$\alpha$-th regressive function in the node $t$. 
Again, by $\mu^\theta = \mu \and (\forall \alpha \in
S)\text{cf}(\alpha) > \theta$ we have that $(\forall x \in S') \dsize
\wedge_{\alpha < \varepsilon} g_\alpha(x) = \beta_\alpha$ holds for a 
subset $S'\subseteq S$ for $D^+$. 
But then we get that the stationary set $S'$ 
satisfies $x,y \in S' \Rightarrow
(A^{t(x)}_\alpha,f^{t(x)}_\alpha,i^{t(*)}_\alpha) =
(A^{t(y)}_\alpha,f^{t(y)}_\alpha,i^{t(y)}_\alpha)$; we can prove this
by induction on $\alpha$ and we can conclude that $x,y \in S'
\Rightarrow t(x) = t(y)$, so $S' \subseteq A^t_{\varepsilon(t)}$ for
some terminal node $t$, so this latter set is in $D^+$, a
contradiction.  \nl
${{}}$  \hfill$\square_{\scite{1.1a}}$\margincite{1.1a}
\enddemo
\bigskip

\demo{Continuation of the proof of Lemma \scite{1.2}}  Define the ideal $I$ as follows. 
For $X \subseteq \mu^+$ we let $X \in I$ \ub{iff} there are a club $E$ of
$\mu^+$ and a regressive $f:X \cap A \rightarrow \mu^+$ such that every 
Rang$\left(F' \restriction [f^{-1}(\alpha)]^2\right)$ is a proper subset of $C$ or
$f^{-1}(\alpha)$ is a $= \emptyset$ mod $D$ subset of $\mu^+$. 
\enddemo
\bigskip

\proclaim{\stag{1.1b} Claim}   $I$ is a normal ideal on $\mu^+$.
\endproclaim
\bigskip

\demo{Proof}  Straightforward. 

Now apply Claim \scite{1.1a} for the $S^* = A^*$ to get $(C,A)$ and
then define $I$ as above: set $D_0$ to be the dual filter 
of $I$, let $A_0 = A$ and let $C_0 = C$; by \scite{1.1b} we are done.
\hfill$\square_{\scite{1.1}}$\margincite{1.1}
\enddemo
\bigskip

\remark{\stag{1.1c} Remark}   1) If Lemma \scite{1.1} holds 
for some $D_0,A_0,C_0$ then it holds 
for $D_1,A_1,C_0$ when the normal filter $D_1$ extends $D_0$, and 
$A_1\in D_1$ satisfies $A_1 \subseteq A_0$. \nl
2)  If $D_0,A_0,C_0$ satisfy Lemma \scite{1.2}, and 
$X \in D^+_0$ \ub{then} $X$ contains a homogeneous 
set of order type $\lambda + 1$ of color $\xi$ for every  $\xi \in
C_0$. \nl
3) This is closely related to the proof in \cite{Sh:26}.
\endremark
\bigskip


\demo{Proof}  Let $\mu=2^{< \lambda}$, and $F:[\mu^+]^2 \rightarrow
\theta$ be a colouring we apply \scite{1.1} for $S =
S^{\mu^+}_\lambda$, $(\theta = \theta,\mu = \mu)$ and $D$ the club filter. 
\nl
We fix $A_0,D_0,C_0$ as in \scite{1.1}.
\enddemo
\bigskip

\proclaim{\stag{1.2} Lemma}    Almost every $\delta \in A_0$; (i.e. for
all but non-stationarily many) satisfies the following: 
if $s \in [A^*_0 \cap \delta]^{<\lambda}$ and 
$\{z_\alpha:\alpha < \gamma\}_< \subseteq A^* \cap
(\delta,\mu^+)$ and $\gamma < \kappa$ \ub{then} there is 
$\{y_\alpha:\alpha < \gamma\}_< \subseteq A_0 \cap \left(
\sup(s),\delta \right)$ such that:
\mr
\item "{$(a)$}"   $F(x,y_\alpha) = F(x,z_\alpha) \quad$ (for $x\in
s,\alpha < \gamma$);
\sn
\item "{$(b)$}"  $F(y_\alpha,y_\beta) = F(z_\alpha,z_\beta) \quad$ 
(for $\alpha < \beta < \gamma$). 
\endroster
\endproclaim
\bigskip

\demo{Proof}  By simple reflection.
\enddemo
\bigskip

\proclaim{\stag{1.3} Lemma}   There is $A'_0 \subseteq A_0,A'_0 \in D_0$
such that: if $\delta \in A'_0,s \in[\delta]^{<\lambda}$ and $\varepsilon \in C_0$, 
\ub{then} there exists a $\delta_1 \in A_0,\delta < \delta_1$ such that
\mr
\item "{$(a)$}"  $F(x,\delta) = F(x,\delta_1) \quad$ (for $x\in s$);
\sn
\item "{$(b)$}"  $F(\delta,\delta_1) = \varepsilon$.
\endroster
\endproclaim
\bigskip

\demo{Proof}   Otherwise, there is some $X \subseteq A_0,X \in D^+_0$ such that 
for every $\delta \in X$ there are $s(\delta) \in [\delta]^{<\lambda}$ and 
$\xi(\delta) \in C_0$ such that there is no $\delta_1 > \delta$ satisfying (a) and (b). 
By normality we can assume that $s(\delta) = s$ and $\xi(\delta) = \xi$ holds 
for $\delta \in X$.  By Lemma \scite{1.2} there must exist $\delta < \delta_1$
in $X$ with $F(\delta,\delta_1) = \xi$ and this is a
contradiction. \nl
${{}}$  \hfill$\square_{\scite{1.3}}$
\enddemo
\bn
Now let $A'_0$ satisfy Lemmas \scite{1.1} and \scite{1.3} 
and pick some $\delta_1 \in A'_0$ and then let 
$T = A'_0 \backslash (\delta_1 +1)$. 
\proclaim{\stag{1.4} Lemma}    There exists a function $G:T \times T
\rightarrow C_0$ such that: if $s \in [\delta_1]^{<\lambda},\gamma <
\kappa$, and $Z = \{z_\alpha:\alpha < \gamma\}_< \subseteq T$
\ub{then} there is $\{y_\alpha:\alpha < \gamma\}_< \subseteq \left(\sup(s),\delta_1
\right)$ such that
\mr
\item "{$(a)$}"   $F(x,y_\alpha) = F(x,z_\alpha) \quad$ (for $x \in
s,\alpha < \gamma$);
\sn
\item "{$(b)$}"   $F(y_\alpha,y_\beta) = F(z_\alpha,z_\beta) \quad$ 
(for $\alpha < \beta < \gamma$);
\sn
\item "{$(c)$}"   $F(y_\alpha,z_\beta) = G(z_\alpha,z_\beta) \quad$ 
(for $\alpha,\beta < \gamma$).
\endroster
\endproclaim
\bigskip

\demo{Proof}  As $\kappa$ is strongly compact, it suffices to show that for every 
$Z \in [T]^{< \kappa}$ there exists a function $G:Z \times Z
\rightarrow \theta$ as required. 
Clauses $(a)$ and $(b)$ are obvious by Lemma \scite{1.2}, and it is clear that, if we fix 
$Z$, then for every  $s \in [\delta_1]^{<\lambda}$ there is an appropriate 
$G:Z \times Z \rightarrow \theta$. 
We show that there is some $G:Z \times Z \rightarrow \theta$ that works for every 
$s$. 
Assume otherwise, that is, for every $G:Z \times Z \rightarrow \theta$ there is 
some $s_G \in [\delta_1]^{<\lambda}$ such that $G$ is not appropriate for $s_G$. 
Notice that the number of these functions $G$ is less than $\kappa$. 
Then no $G$ could be right for $s = \cup\{s_G:G$ a function from $Z
\times Z$ to $\theta\} \in [\delta_1]^{<\lambda}$, a contradiction.
\hfill$\square_{\scite{1.4}}$\margincite{1.4}
\enddemo
\bigskip

\demo{Continuation of the proof of Theorem \scite{1.0}}
We now apply Lemma \scite{1.1} to the coloring $\bar G(x,y) = 
\left\langle F(x,y),G(y,x) \right\rangle$ for $x < y$ in $T$ and $0$
otherwise, and the filter $D_0$ and the set $T$ and get the
normal filter $D_1 \supseteq D_0$, the set $A_1 \subseteq T,A_1 \in
D_1$ and the colour set $C_1 \subseteq \theta \times \theta$. 
Notice that actually $C_1 \subseteq C_0 \times C_0$. 
We can also apply Lemmas \scite{1.2} and \scite{1.3} and get some set
$A'_1 \subseteq A_1$. 
\enddemo
\bigskip

\proclaim{\stag{1.5} Lemma}    There is a set $a \in [A'_1]^{< \kappa}$
such that for every decomposition $a = \cup\{a_\xi:\xi < \theta\}$
there is some $\xi <\theta$ such that for every $\varepsilon \in C_1$ there is 
an $\varepsilon$-homogeneous subset for the colouring $\bar G$ of order type
$\zeta$ in $a_\xi$.
\endproclaim
\bigskip

\demo{Proof}  This follows from the strong compactness of $\kappa$ 
as $A'_1$ itself has this partition
property. \hfill$\square_{\scite{1.5}}$\margincite{1.5}
\enddemo
\bn
Fix a set $a$ as in \scite{1.5}.

We now describe the construction of the required homogeneous subset. 
Let $\delta_2 \in A'_1$ be some element with $\delta_2 > \sup(a)$. 
For $\xi < \theta$ let $a_\xi$ be the following set: 

$$
a_\xi = \{x \in a:G(\delta_2,x) = \xi\}.
$$
\mn
By Lemma \scite{1.5}, there is some $\xi <\theta$ for 
which the statement as above is true and necessarily (as $s \cup
\{\delta_2\} \subseteq A'_1 \subseteq A_0$) we have $\xi \in C_0$.        
We notice that $\langle \xi,\xi' \rangle \in C_1$ holds for an appropriate 
$\xi'\in C_0$. 
Select some $b \subseteq a_\xi$, tp$(b)= \zeta$ such that $F$ is constantly  
$\xi$ on $b$. 
This set $b$ will be the $\zeta$ part of our homogeneous set of ordinals
$\lambda + \zeta$, so we will have to construct a set of order type $\lambda$ below 
$b$. 
By induction on $\alpha$ we will choose $x_\alpha$ such that the set 
$\{x_\alpha:\alpha < \lambda\}_< \subseteq \delta_1$ satisfies the following conditions: 
\smallskip
$F(x_\beta,x_\alpha) = \xi$ (for $\beta < \alpha$), 
\smallskip
$F(x_\alpha,b \cup \{\delta_2\}) = \xi$, i.e. $F(x_\alpha,y) = \xi$
when $y \in b \cup \{\delta_2\}$.

Assume that we have reached step $\alpha$, that is, we are given the 
ordinals $\{x_\beta:\beta < \alpha\}_<$.  
Applying Lemma \scite{1.3} we get that there exists some $\gamma > \delta_2$ 
such that $\gamma \in A_1$ moreover 
\smallskip
$F(x_\beta,\gamma) = \xi$ (for $\beta < \alpha$), 
\smallskip
$G \left(\gamma,b \cup \{\delta_2\} \right) = \xi$, i.e. $G(\gamma,y)
= \xi$ when $y \in b \cup \{\delta_2\}$. 
\mn
By the definition of $G$ this implies that there is some $x_\alpha$ as required. 
\hfill$\square_{\scite{1.0}}$\margincite{1.0}


%% you may want to move the following lines up a bit
\newpage
    
REFERENCES.  
\bibliographystyle{lit-plain}
\bibliography{lista,listb,listx,listf,liste}

\enddocument%%

   

\bye


761.bbl
\def\germ{\frak} \def\scr{\cal} \ifx\documentclass\undefinedcs
  \def\bf{\fam\bffam\tenbf}\def\rm{\fam0\tenrm}\fi % f**k-amstex!
  \def\defaultdefine#1#2{\expandafter\ifx\csname#1\endcsname\relax
  \expandafter\def\csname#1\endcsname{#2}\fi} \defaultdefine{Bbb}{\bf}
  \defaultdefine{frak}{\bf} \defaultdefine{mathbb}{\bf}
  \defaultdefine{mathcal}{\cal}
  \defaultdefine{beth}{BETH}\defaultdefine{cal}{\bf} \def\bbfI{{\Bbb I}}
  \def\mbox{\hbox} \def\text{\hbox} \def\om{\omega} \def\Cal#1{{\bf #1}}
  \def\pcf{pcf} \defaultdefine{cf}{cf} \defaultdefine{reals}{{\Bbb R}}
  \defaultdefine{real}{{\Bbb R}} \def\restriction{{|}} \def\club{CLUB}
  \def\w{\omega} \def\exist{\exists} \def\se{{\germ se}} \def\bb{{\bf b}}
  \def\equivalence{\equiv} \let\lt< \let\gt> \def\cite#1{[#1]}
  \def\implies{\Rightarrow}
\begin{thebibliography}{BHT93}
\makeatletter \renewcommand{\@biblabel}[1]{[#1]} \makeatother
\par\noindent [References of the form {\tt math.XX/$\cdots$} refer to the
{\tt xxx.lanl.gov} archive]  \par

\bibitem[BHT93]{BHT93}James Baumgartner, Andras Hajnal, and Stevo
  Todor\v{c}evi\'{c}.
\newblock {Extensions of the Erdos--Rado Theorems}.
\newblock In {\em {Finite and Infinite Combinatorics in Set Theory and Logic}},
  pages 1--18. Kluwer Academic Publishers, 1993.
\newblock {N.W. Sauer et. al. eds}.

\bibitem[Sh 26]{Sh:26}Saharon Shelah.
\newblock {Notes on combinatorial set theory}.
\newblock {\em {Israel Journal of Mathematics}}, {\bf 14}:262--277, 1973.

\end{thebibliography}
