%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% including smallfonts.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%smallfonts.tex
%
\newskip\ttglue
%
\font\fiverm=cmr5
\font\fivei=cmmi5
\font\fivesy=cmsy5
\font\fivebf=cmbx5
\font\sixrm=cmr6
\font\sixi=cmmi6
\font\sixsy=cmsy6
\font\sixbf=cmbx6
\font\sevenrm=cmr7
\font\eightrm=cmr8
\font\eighti=cmmi8
\font\eightsy=cmsy8
\font\eightit=cmti8
\font\eightsl=cmsl8
\font\eighttt=cmtt8
\font\eightbf=cmbx8
\font\ninerm=cmr9
\font\ninei=cmmi9
\font\ninesy=cmsy9
\font\nineit=cmti9
\font\ninesl=cmsl9
\font\ninett=cmtt9
\font\ninebf=cmbx9
%
\font\twelverm=cmr12
\font\twelvei=cmmi12
\font\twelvesy=cmsy12
\font\twelveit=cmti12
\font\twelvesl=cmsl12
\font\twelvett=cmtt12
\font\twelvebf=cmbx12
%% EIGHT POINT FONT FAMILY
\def\eightpoint{\def\rm{\fam0\eightrm}
\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}
\def\eightbig#1{{\hbox{$\textfont0=\ninerm\textfont2=\ninesy
\left#1\vbox to6.5pt{}\right.$}}}
%% NINE POINT FONT FAMILY
\def\ninepoint{\def\rm{\fam0\ninerm}
\textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm
\textfont1=\ninei \scriptfont1=\sixi \scriptscriptfont1=\fivei
\textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy
\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
\textfont\itfam=\nineit \def\it{\fam\itfam\nineit}
\textfont\slfam=\ninesl \def\sl{\fam\slfam\ninesl}
\textfont\ttfam=\ninett \def\tt{\fam\ttfam\ninett}
\textfont\bffam=\ninebf \scriptfont\bffam=\sixbf
\scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam\ninebf}
\tt \ttglue=.5em plus.25em minus.15em
\normalbaselineskip=11pt
\setbox\strutbox=\hbox{\vrule height8pt depth3pt width0pt}
\let\sc=\sevenrm \let\big=\ninebig \normalbaselines\rm}
\def\ninebig#1{{\hbox{$\textfont0=\tenrm\textfont2=\tensy
\left#1\vbox to7.25pt{}\right.$}}}
%% TWELVE POINT FONT FAMILY --- not really small
\def\twelvepoint{\def\rm{\fam0\twelverm}
\textfont0=\twelverm \scriptfont0=\eightrm \scriptscriptfont0=\sixrm
\textfont1=\twelvei \scriptfont1=\eighti \scriptscriptfont1=\sixi
\textfont2=\twelvesy \scriptfont2=\eightsy \scriptscriptfont2=\sixsy
\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=\eightbf
\scriptscriptfont\bffam=\sixbf \def\bf{\fam\bffam\twelvebf}
\tt \ttglue=.5em plus.25em minus.15em
\normalbaselineskip=11pt
\setbox\strutbox=\hbox{\vrule height8pt depth3pt width0pt}
\let\sc=\sevenrm \let\big=\twelvebig \normalbaselines\rm}
\def\twelvebig#1{{\hbox{$\textfont0=\tenrm\textfont2=\tensy
\left#1\vbox to7.25pt{}\right.$}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of smallfonts.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% including param.2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%param.2
\magnification=\magstep1
\def\firstpage{1}
\pageno=\firstpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of param.2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% including fonts.6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%fonts.6
\font\fiverm=cmr5
\font\sevenrm=cmr7
\font\sevenbf=cmbx7
\font\eightrm=cmr8
\font\eightbf=cmbx8
\font\ninerm=cmr9
\font\ninebf=cmbx9
\font\tenbf=cmbx10
\font\magtenbf=cmbx10 scaled\magstep1
\font\magtensy=cmsy10 scaled\magstep1
\font\magtenib=cmmib10 scaled\magstep1
\font\magmagtenbf=cmbx10 scaled\magstep2
%
\font\eightmsb=msbm8
%
\font\nineeufm=eufm9
\font\magnineeufm=eufm9 scaled\magstep1
\font\magmagnineeufm=eufm9 scaled\magstep2
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of fonts.6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% including symbols.1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% symbols.1
%
% just concatenated amssym.def version 2.2 and amssym.tex version 2.2b
% and commented out stuff: lines now beginning with %#
%
% use with fonts.5b instead of fonts.5
%
%%% ====================================================================
%%% @TeX-file{
%%% filename = "amssym.def",
%%% version = "2.2",
%%% date = "22-Dec-1994",
%%% time = "10:14:01 EST",
%%% checksum = "28096 117 438 4924",
%%% author = "American Mathematical Society",
%%% copyright = "Copyright (C) 1994 American Mathematical Society,
%%% all rights reserved. Copying of this file is
%%% authorized only if either:
%%% (1) you make absolutely no changes to your copy,
%%% including name; OR
%%% (2) if you do make changes, you first rename it
%%% to some other name.",
%%% address = "American Mathematical Society,
%%% Technical Support,
%%% Electronic Products and Services,
%%% P. O. Box 6248,
%%% Providence, RI 02940,
%%% USA",
%%% telephone = "401-455-4080 or (in the USA and Canada)
%%% 800-321-4AMS (321-4267)",
%%% FAX = "401-331-3842",
%%% email = "tech-support@math.ams.org (Internet)",
%%% codetable = "ISO/ASCII",
%%% keywords = "amsfonts, msam, msbm, math symbols",
%%% supported = "yes",
%%% abstract = "This is part of the AMSFonts distribution,
%%% It is the plain TeX source file for the
%%% AMSFonts user's guide.",
%%% docstring = "The checksum field above contains a CRC-16
%%% checksum as the first value, followed by the
%%% equivalent of the standard UNIX wc (word
%%% count) utility output of lines, words, and
%%% characters. This is produced by Robert
%%% Solovay's checksum utility.",
%%% }
%%% ====================================================================
%#\expandafter\ifx\csname amssym.def\endcsname\relax \else\endinput\fi
%
% Store the catcode of the @ in the csname so that it can be restored later.
%#\expandafter\edef\csname amssym.def\endcsname{%
%# \catcode`\noexpand\@=\the\catcode`\@\space}
% Set the catcode to 11 for use in private control sequence names.
\catcode`\@=11
%
% Include all definitions related to the fonts msam, msbm and eufm, so that
% when this file is used by itself, the results with respect to those fonts
% are equivalent to what they would have been using AMS-TeX.
% Most symbols in fonts msam and msbm are defined using \newsymbol;
% however, a few symbols that replace composites defined in plain must be
% defined with \mathchardef.
\def\undefine#1{\let#1\undefined}
\def\newsymbol#1#2#3#4#5{\let\next@\relax
\ifnum#2=\@ne\let\next@\msafam@\else
\ifnum#2=\tw@\let\next@\msbfam@\fi\fi
\mathchardef#1="#3\next@#4#5}
\def\mathhexbox@#1#2#3{\relax
\ifmmode\mathpalette{}{\m@th\mathchar"#1#2#3}%
\else\leavevmode\hbox{$\m@th\mathchar"#1#2#3$}\fi}
\def\hexnumber@#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or
9\or A\or B\or C\or D\or E\or F\fi}
\font\tenmsa=msam10
\font\sevenmsa=msam7
\font\fivemsa=msam5
\newfam\msafam
\textfont\msafam=\tenmsa
\scriptfont\msafam=\sevenmsa
\scriptscriptfont\msafam=\fivemsa
\edef\msafam@{\hexnumber@\msafam}
\mathchardef\dabar@"0\msafam@39
\def\dashrightarrow{\mathrel{\dabar@\dabar@\mathchar"0\msafam@4B}}
\def\dashleftarrow{\mathrel{\mathchar"0\msafam@4C\dabar@\dabar@}}
\let\dasharrow\dashrightarrow
\def\ulcorner{\delimiter"4\msafam@70\msafam@70 }
\def\urcorner{\delimiter"5\msafam@71\msafam@71 }
\def\llcorner{\delimiter"4\msafam@78\msafam@78 }
\def\lrcorner{\delimiter"5\msafam@79\msafam@79 }
% Note that there should not be a final space after the digits for a
% \mathhexbox@.
\def\yen{{\mathhexbox@\msafam@55}}
\def\checkmark{{\mathhexbox@\msafam@58}}
\def\circledR{{\mathhexbox@\msafam@72}}
\def\maltese{{\mathhexbox@\msafam@7A}}
\font\tenmsb=msbm10
\font\sevenmsb=msbm7
\font\fivemsb=msbm5
\newfam\msbfam
\textfont\msbfam=\tenmsb
\scriptfont\msbfam=\sevenmsb
\scriptscriptfont\msbfam=\fivemsb
\edef\msbfam@{\hexnumber@\msbfam}
\def\Bbb#1{{\fam\msbfam\relax#1}}
\def\widehat#1{\setbox\z@\hbox{$\m@th#1$}%
\ifdim\wd\z@>\tw@ em\mathaccent"0\msbfam@5B{#1}%
\else\mathaccent"0362{#1}\fi}
\def\widetilde#1{\setbox\z@\hbox{$\m@th#1$}%
\ifdim\wd\z@>\tw@ em\mathaccent"0\msbfam@5D{#1}%
\else\mathaccent"0365{#1}\fi}
\font\teneufm=eufm10
\font\seveneufm=eufm7
\font\fiveeufm=eufm5
\newfam\eufmfam
\textfont\eufmfam=\teneufm
\scriptfont\eufmfam=\seveneufm
\scriptscriptfont\eufmfam=\fiveeufm
\def\frak#1{{\fam\eufmfam\relax#1}}
\let\goth\frak
% Restore the catcode value for @ that was previously saved.
%#\csname amssym.def\endcsname
%#\endinput
%%% ====================================================================
%%% @TeX-file{
%%% filename = "amssym.tex",
%%% version = "2.2b",
%%% date = "26 February 1997",
%%% time = "13:14:29 EST",
%%% checksum = "61515 286 903 9155",
%%% author = "American Mathematical Society",
%%% copyright = "Copyright (C) 1997 American Mathematical Society,
%%% all rights reserved. Copying of this file is
%%% authorized only if either:
%%% (1) you make absolutely no changes to your copy,
%%% including name; OR
%%% (2) if you do make changes, you first rename it
%%% to some other name.",
%%% address = "American Mathematical Society,
%%% Technical Support,
%%% Electronic Products and Services,
%%% P. O. Box 6248,
%%% Providence, RI 02940,
%%% USA",
%%% telephone = "401-455-4080 or (in the USA and Canada)
%%% 800-321-4AMS (321-4267)",
%%% FAX = "401-331-3842",
%%% email = "tech-support@ams.org (Internet)",
%%% codetable = "ISO/ASCII",
%%% keywords = "amsfonts, msam, msbm, math symbols",
%%% supported = "yes",
%%% abstract = "This is part of the AMSFonts distribution.
%%% It contains the plain TeX source file for loading
%%% the AMS extra symbols and Euler fraktur fonts.",
%%% docstring = "The checksum field above contains a CRC-16 checksum
%%% as the first value, followed by the equivalent of
%%% the standard UNIX wc (word count) utility output
%%% of lines, words, and characters. This is produced
%%% by Robert Solovay's checksum utility.",
%%% }
%%% ====================================================================
%% Save the current value of the @-sign catcode so that it can
%% be restored afterwards. This allows us to call amssym.tex
%% either within an AMS-TeX document style file or by itself, in
%% addition to providing a means of testing whether the file has
%% been previously loaded. We want to avoid inputting this file
%% twice because when AMSTeX is being used \newsymbol will give an
%% error message if used to define a control sequence name that is
%% already defined.
%%
%% If the csname is not equal to \relax, we assume this file has
%% already been loaded and \endinput immediately.
%#\expandafter\ifx\csname pre amssym.tex at\endcsname\relax \else\endinput\fi
%% Otherwise we store the catcode of the @ in the csname.
%#\expandafter\chardef\csname pre amssym.tex at\endcsname=\the\catcode`\@
%% Set the catcode to 11 for use in private control sequence names.
\catcode`\@=11
%% Load amssym.def if necessary: If \newsymbol is undefined, do nothing
%% and the following \input statement will be executed; otherwise
%% change \input to a temporary no-op.
%#\ifx\undefined\newsymbol \else \begingroup\def\input#1 {\endgroup}\fi
%#\input amssym.def \relax
%% Most symbols in fonts msam and msbm are defined using \newsymbol. A few
%% that are delimiters or otherwise require special treatment have already
%% been defined as soon as the fonts were loaded. Finally, a few symbols
%% that replace composites defined in plain must be undefined first.
\newsymbol\boxdot 1200
\newsymbol\boxplus 1201
\newsymbol\boxtimes 1202
\newsymbol\square 1003
\newsymbol\blacksquare 1004
\newsymbol\centerdot 1205
\newsymbol\lozenge 1006
\newsymbol\blacklozenge 1007
\newsymbol\circlearrowright 1308
\newsymbol\circlearrowleft 1309
\undefine\rightleftharpoons
\newsymbol\rightleftharpoons 130A
\newsymbol\leftrightharpoons 130B
\newsymbol\boxminus 120C
\newsymbol\Vdash 130D
\newsymbol\Vvdash 130E
\newsymbol\vDash 130F
\newsymbol\twoheadrightarrow 1310
\newsymbol\twoheadleftarrow 1311
\newsymbol\leftleftarrows 1312
\newsymbol\rightrightarrows 1313
\newsymbol\upuparrows 1314
\newsymbol\downdownarrows 1315
\newsymbol\upharpoonright 1316
\let\restriction\upharpoonright
\newsymbol\downharpoonright 1317
\newsymbol\upharpoonleft 1318
\newsymbol\downharpoonleft 1319
\newsymbol\rightarrowtail 131A
\newsymbol\leftarrowtail 131B
\newsymbol\leftrightarrows 131C
\newsymbol\rightleftarrows 131D
\newsymbol\Lsh 131E
\newsymbol\Rsh 131F
\newsymbol\rightsquigarrow 1320
\newsymbol\leftrightsquigarrow 1321
\newsymbol\looparrowleft 1322
\newsymbol\looparrowright 1323
\newsymbol\circeq 1324
\newsymbol\succsim 1325
\newsymbol\gtrsim 1326
\newsymbol\gtrapprox 1327
\newsymbol\multimap 1328
\newsymbol\therefore 1329
\newsymbol\because 132A
\newsymbol\doteqdot 132B
\let\Doteq\doteqdot
\newsymbol\triangleq 132C
\newsymbol\precsim 132D
\newsymbol\lesssim 132E
\newsymbol\lessapprox 132F
\newsymbol\eqslantless 1330
\newsymbol\eqslantgtr 1331
\newsymbol\curlyeqprec 1332
\newsymbol\curlyeqsucc 1333
\newsymbol\preccurlyeq 1334
\newsymbol\leqq 1335
\newsymbol\leqslant 1336
\newsymbol\lessgtr 1337
\newsymbol\backprime 1038
\newsymbol\risingdotseq 133A
\newsymbol\fallingdotseq 133B
\newsymbol\succcurlyeq 133C
\newsymbol\geqq 133D
\newsymbol\geqslant 133E
\newsymbol\gtrless 133F
\newsymbol\sqsubset 1340
\newsymbol\sqsupset 1341
\newsymbol\vartriangleright 1342
\newsymbol\vartriangleleft 1343
\newsymbol\trianglerighteq 1344
\newsymbol\trianglelefteq 1345
\newsymbol\bigstar 1046
\newsymbol\between 1347
\newsymbol\blacktriangledown 1048
\newsymbol\blacktriangleright 1349
\newsymbol\blacktriangleleft 134A
\newsymbol\vartriangle 134D
\newsymbol\blacktriangle 104E
\newsymbol\triangledown 104F
\newsymbol\eqcirc 1350
\newsymbol\lesseqgtr 1351
\newsymbol\gtreqless 1352
\newsymbol\lesseqqgtr 1353
\newsymbol\gtreqqless 1354
\newsymbol\Rrightarrow 1356
\newsymbol\Lleftarrow 1357
\newsymbol\veebar 1259
\newsymbol\barwedge 125A
\newsymbol\doublebarwedge 125B
\undefine\angle
\newsymbol\angle 105C
\newsymbol\measuredangle 105D
\newsymbol\sphericalangle 105E
\newsymbol\varpropto 135F
\newsymbol\smallsmile 1360
\newsymbol\smallfrown 1361
\newsymbol\Subset 1362
\newsymbol\Supset 1363
\newsymbol\Cup 1264
\let\doublecup\Cup
\newsymbol\Cap 1265
\let\doublecap\Cap
\newsymbol\curlywedge 1266
\newsymbol\curlyvee 1267
\newsymbol\leftthreetimes 1268
\newsymbol\rightthreetimes 1269
\newsymbol\subseteqq 136A
\newsymbol\supseteqq 136B
\newsymbol\bumpeq 136C
\newsymbol\Bumpeq 136D
\newsymbol\lll 136E
\let\llless\lll
\newsymbol\ggg 136F
\let\gggtr\ggg
\newsymbol\circledS 1073
\newsymbol\pitchfork 1374
\newsymbol\dotplus 1275
\newsymbol\backsim 1376
\newsymbol\backsimeq 1377
\newsymbol\complement 107B
\newsymbol\intercal 127C
\newsymbol\circledcirc 127D
\newsymbol\circledast 127E
\newsymbol\circleddash 127F
\newsymbol\lvertneqq 2300
\newsymbol\gvertneqq 2301
\newsymbol\nleq 2302
\newsymbol\ngeq 2303
\newsymbol\nless 2304
\newsymbol\ngtr 2305
\newsymbol\nprec 2306
\newsymbol\nsucc 2307
\newsymbol\lneqq 2308
\newsymbol\gneqq 2309
\newsymbol\nleqslant 230A
\newsymbol\ngeqslant 230B
\newsymbol\lneq 230C
\newsymbol\gneq 230D
\newsymbol\npreceq 230E
\newsymbol\nsucceq 230F
\newsymbol\precnsim 2310
\newsymbol\succnsim 2311
\newsymbol\lnsim 2312
\newsymbol\gnsim 2313
\newsymbol\nleqq 2314
\newsymbol\ngeqq 2315
\newsymbol\precneqq 2316
\newsymbol\succneqq 2317
\newsymbol\precnapprox 2318
\newsymbol\succnapprox 2319
\newsymbol\lnapprox 231A
\newsymbol\gnapprox 231B
\newsymbol\nsim 231C
\newsymbol\ncong 231D
\newsymbol\diagup 201E
\newsymbol\diagdown 201F
\newsymbol\varsubsetneq 2320
\newsymbol\varsupsetneq 2321
\newsymbol\nsubseteqq 2322
\newsymbol\nsupseteqq 2323
\newsymbol\subsetneqq 2324
\newsymbol\supsetneqq 2325
\newsymbol\varsubsetneqq 2326
\newsymbol\varsupsetneqq 2327
\newsymbol\subsetneq 2328
\newsymbol\supsetneq 2329
\newsymbol\nsubseteq 232A
\newsymbol\nsupseteq 232B
\newsymbol\nparallel 232C
\newsymbol\nmid 232D
\newsymbol\nshortmid 232E
\newsymbol\nshortparallel 232F
\newsymbol\nvdash 2330
\newsymbol\nVdash 2331
\newsymbol\nvDash 2332
\newsymbol\nVDash 2333
\newsymbol\ntrianglerighteq 2334
\newsymbol\ntrianglelefteq 2335
\newsymbol\ntriangleleft 2336
\newsymbol\ntriangleright 2337
\newsymbol\nleftarrow 2338
\newsymbol\nrightarrow 2339
\newsymbol\nLeftarrow 233A
\newsymbol\nRightarrow 233B
\newsymbol\nLeftrightarrow 233C
\newsymbol\nleftrightarrow 233D
\newsymbol\divideontimes 223E
\newsymbol\varnothing 203F
\newsymbol\nexists 2040
\newsymbol\Finv 2060
\newsymbol\Game 2061
\newsymbol\mho 2066
\newsymbol\eth 2067
\newsymbol\eqsim 2368
\newsymbol\beth 2069
\newsymbol\gimel 206A
\newsymbol\daleth 206B
\newsymbol\lessdot 236C
\newsymbol\gtrdot 236D
\newsymbol\ltimes 226E
\newsymbol\rtimes 226F
\newsymbol\shortmid 2370
\newsymbol\shortparallel 2371
\newsymbol\smallsetminus 2272
\newsymbol\thicksim 2373
\newsymbol\thickapprox 2374
\newsymbol\approxeq 2375
\newsymbol\succapprox 2376
\newsymbol\precapprox 2377
\newsymbol\curvearrowleft 2378
\newsymbol\curvearrowright 2379
\newsymbol\digamma 207A
\newsymbol\varkappa 207B
\newsymbol\Bbbk 207C
\newsymbol\hslash 207D
\undefine\hbar
\newsymbol\hbar 207E
\newsymbol\backepsilon 237F
% Restore the catcode value for @ that was previously saved.
%#\catcode`\@=\csname pre amssym.tex at\endcsname
%\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of symbols.1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% including links.1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% links.1
% adapted from http://insti.physics.sunysb.edu/~siegel/tex.shtml
%
% postscript/pdf
\newcount\marknumber \marknumber=1
\newcount\countdp \newcount\countwd \newcount\countht
%
% for ordinary tex
%
\ifx\pdfoutput\undefined
\def\rgboo#1{\special{color rgb #1}}
\def\postscript#1{\special{" #1}} % for dvips
\postscript{
/bd {bind def} bind def
/fsd {findfont exch scalefont def} bd
/sms {setfont moveto show} bd
/ms {moveto show} bd
/pdfmark where % printers ignore pdfmarks
{pop} {userdict /pdfmark /cleartomark load put} ifelse
[ /PageMode /UseOutlines % bookmark window open
/DOCVIEW pdfmark}
\def\bookmark#1#2{\postscript{ % #1=subheadings (if not 0)
[ /Dest /MyDest\the\marknumber /View [ /XYZ null null null ] /DEST pdfmark
[ /Title (#2) /Count #1 /Dest /MyDest\the\marknumber /OUT pdfmark}%
\advance\marknumber by1}
\def\pdfclink#1#2#3{%
\hskip-.25em\setbox0=\hbox{#2}%
\countdp=\dp0 \countwd=\wd0 \countht=\ht0%
\divide\countdp by65536 \divide\countwd by65536%
\divide\countht by65536%
\advance\countdp by1 \advance\countwd by1%
\advance\countht by1%
\def\linkdp{\the\countdp} \def\linkwd{\the\countwd}%
\def\linkht{\the\countht}%
\postscript{
[ /Rect [ -1.5 -\linkdp.0 0\linkwd.0 0\linkht.5 ]
/Border [ 0 0 0 ]
/Action << /Subtype /URI /URI (#3) >>
/Subtype /Link
/ANN pdfmark}{\rgb{#1}{#2}}}
%
% for pdftex
%
\else
\def\rgboo#1{\pdfliteral{#1 rg #1 RG}}
\pdfcatalog{/PageMode /UseOutlines} % bookmark window open
\def\bookmark#1#2{
\pdfdest num \marknumber xyz
\pdfoutline goto num \marknumber count #1 {#2}
\advance\marknumber by1}
\def\pdfklink#1#2{%
\noindent\pdfstartlink user
{/Subtype /Link
/Border [ 0 0 0 ]
/A << /S /URI /URI (#2) >>}{\rgb{1 0 0}{#1}}%
\pdfendlink}
\fi
\def\rgbo#1#2{\rgboo{#1}#2\rgboo{0 0 0}}
\def\rgb#1#2{\mark{#1}\rgbo{#1}{#2}\mark{0 0 0}}
\def\pdfklink#1#2{\pdfclink{1 0 0}{#1}{#2}}
\def\pdflink#1{\pdfklink{#1}{#1}}
%
% examples:
% \bookmark{0}{look here}
% \pdfclink{0 0 1}{testlink}{http://www.google.com/}
% \pdfklink{testlink}{http://www.google.com/}
% \pdflink{http://www.google.com/}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of links.1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% including titles.8c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%titles.8
% requires fonts.5 or higher and smallfonts.tex
% uses links.* if included
% enumerates \demo consecutively (no section number)
%
\newcount\seccount %% sections
\newcount\subcount %% subsection
\newcount\clmcount %% claim
\newcount\equcount %% equation
\newcount\refcount %% reference
\newcount\demcount %% example
\newcount\execount %% exercise
\newcount\procount %% problem
%
\seccount=0
\equcount=1
\clmcount=1
\subcount=1
\refcount=1
\demcount=0
\execount=0
\procount=0
%
%% MISC STUFF
\def\proof{\medskip\noindent{\bf Proof.\ }}
\def\proofof(#1){\medskip\noindent{\bf Proof of \csname c#1\endcsname.\ }}
\def\qed{\hfill{\sevenbf QED}\par\medskip}
\def\references{\bigskip\noindent\hbox{\bf References}\medskip
\ifx\pdflink\undefined\else\bookmark{0}{References}\fi}
\def\addref#1{\expandafter\xdef\csname r#1\endcsname{\number\refcount}
\global\advance\refcount by 1}
\def\remark{\medskip\noindent{\bf Remark.\ }}
\def\nextremark #1\par{\item{$\circ$} #1}
\def\firstremark #1\par{\bigskip\noindent{\bf Remarks.}
\smallskip\nextremark #1\par}
\def\abstract#1\par{{\baselineskip=10pt
\eightpoint\narrower\noindent{\eightbf Abstract.} #1\par}}
%
%% EQUATION
\def\equtag#1{\expandafter\xdef\csname e#1\endcsname{(\number\seccount.\number\equcount)}
\global\advance\equcount by 1}
\def\equation(#1){\equtag{#1}\eqno\csname e#1\endcsname}
\def\equ(#1){\hskip-0.03em\csname e#1\endcsname}
%
%% CLAIMS (theorems etc)
\def\clmtag#1#2{\expandafter\xdef\csname c#2\endcsname{#1~\number\seccount.\number\clmcount}
\global\advance\clmcount by 1}
\def\claim #1(#2) #3\par{\clmtag{#1}{#2}
\vskip.1in\medbreak\noindent
{\bf \csname c#2\endcsname .\ }{\sl #3}\par
\ifdim\lastskip<\medskipamount
\removelastskip\penalty55\medskip\fi}
\def\clm(#1){\csname c#1\endcsname}
%
%% SECTION
\def\sectag#1{\global\advance\seccount by 1
\expandafter\xdef\csname sectionname\endcsname{\number\seccount. #1}
\equcount=1 \clmcount=1 \subcount=1 \execount=0 \procount=0}
\def\section#1\par{\vskip0pt plus.1\vsize\penalty-40
\vskip0pt plus -.1\vsize\bigskip\bigskip
\sectag{#1}
\message{\sectionname}\leftline{\magtenbf\sectionname}
\nobreak\smallskip\noindent
\ifx\pdflink\undefined
\else
\bookmark{0}{\sectionname}
\fi}
%
%% SUBSECTION
\def\subtag#1{\expandafter\xdef\csname subsectionname\endcsname{\number\seccount.\number\subcount. #1}
\global\advance\subcount by 1}
\def\subsection#1\par{\vskip0pt plus.05\vsize\penalty-20
\vskip0pt plus -.05\vsize\medskip\medskip
\subtag{#1}
\message{\subsectionname}\leftline{\tenbf\subsectionname}
\nobreak\smallskip\noindent
\ifx\pdflink\undefined
\else
\bookmark{0}{.... \subsectionname} %% can get a bit cluttered
\fi}
%
%% DEMO (examples etc)
\def\demtag#1#2{\global\advance\demcount by 1
\expandafter\xdef\csname de#2\endcsname{#1~\number\demcount}}
\def\demo #1(#2) #3\par{
\demtag{#1}{#2}
\vskip.1in\medbreak\noindent
{\bf #1 \number\demcount.\enspace}
{\rm #3}\par
\ifdim\lastskip<\medskipamount
\removelastskip\penalty55\medskip\fi}
\def\dem(#1){\csname de#1\endcsname}
%
%% EXERCISE
\def\exetag#1{\global\advance\execount by 1
\expandafter\xdef\csname ex#1\endcsname{Exercise~\number\seccount.\number\execount}}
\def\exercise(#1) #2\par{
\exetag{#1}
\vskip.1in\medbreak\noindent
{\bf Exercise \number\execount.}
{\rm #2}\par
\ifdim\lastskip<\medskipamount
\removelastskip\penalty55\medskip\fi}
\def\exe(#1){\csname ex#1\endcsname}
%
%% PROBLEM
\def\protag#1{\global\advance\procount by 1
\expandafter\xdef\csname pr#1\endcsname{\number\seccount.\number\procount}}
\def\problem(#1) #2\par{
\ifnum\procount=0
\parskip=6pt
\vbox{\bigskip\centerline{\bf Problems \number\seccount}\nobreak\medskip}
\fi
\protag{#1}
\item{\number\procount.} #2}
\def\pro(#1){Problem \csname pr#1\endcsname}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of titles.8c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% including macros.19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%macros.19
% requires fonts.5 or later
\def\rightheadline{\hfil}
\def\leftheadline{\sevenrm\hfil HANS KOCH\hfil}
\headline={\ifnum\pageno=\firstpage\hfil\else
\ifodd\pageno{{\fiverm\rightheadline}\number\pageno}
\else{\number\pageno\fiverm\leftheadline}\fi\fi}
\footline={\ifnum\pageno=\firstpage\hss\tenrm\folio\hss\else\hss\fi}
%
\let\ov=\overline
\let\cl=\centerline
\let\wh=\widehat
\let\wt=\widetilde
\let\eps=\varepsilon
\let\sss=\scriptscriptstyle
%
\def\mean{{\Bbb E}}
\def\proj{{\Bbb P}}
\def\natural{{\Bbb N}}
\def\integer{{\Bbb Z}}
\def\rational{{\Bbb Q}}
\def\real{{\Bbb R}}
\def\complex{{\Bbb C}}
\def\torus{{\Bbb T}}
\def\iso{{\Bbb J}}
\def\Id{{\Bbb I}}
\def\id{{\rm I}}
\def\tr{{\rm tr}}
\def\det{{\rm det}}
\def\supp{{\rm supp}}
\def\modulo{{\rm mod~}}
\def\std{{\rm std}}
\def\Re{{\rm Re\hskip 0.15em}}
\def\Im{{\rm Im\hskip 0.15em}}
\def\ELL{{\rm L}}
\def\defeq{\mathrel{\mathop=^{\rm def}}}
\def\bdot{\hbox{\bf .}}
\def\bskip{\bigskip\noindent}
%
\def\half{{1\over 2}}
\def\quarter{{1\over 4}}
\def\thalf{{\textstyle\half}}
\def\tquarter{{\textstyle\quarter}}
%
\def\twovec#1#2{\left[\matrix{#1\cr#2\cr}\right]}
\def\threevec#1#2#3{\left[\matrix{#1\cr#2\cr#3\cr}\right]}
\def\fourvec#1#2#3#4{\left[\matrix{#1\cr#2\cr#3\cr#4\cr}\right]}
\def\twomat#1#2#3#4{\left[\matrix{#1\cr#3\cr}\right]}
\def\threemat#1#2#3#4#5#6#7#8#9{\left[\matrix{#1\cr#4\cr#7 \cr}\right]}
%
\def\loongrightarrow{\relbar\joinrel\longrightarrow}
\def\looongrightarrow{\relbar\joinrel\loongrightarrow}
\def\loongmapsto{\mapstochar\loongrightarrow}
\def\looongmapsto{\mapstochar\looongrightarrow}
%
\def\xmapsto{\mathop{\mapsto}\limits}
\def\xlongmapsto{\mathop{\longmapsto}\limits}
\def\xloongmapsto{\mathop{\loongmapsto}\limits}
\def\xlooongmapsto{\mathop{\looongmapsto}\limits}
%
% from TeX book: used for commutative diagram
% in math mode, before using matrix, do
% \def\normalbaselines{\baselineskip20pt\lineskip3pt\lineskiplimit3pt}
\def\mapright#1{\smash{\mathop{\loongrightarrow}\limits^{#1}}}
\def\mapdown#1{\Big\downarrow\rlap{$\vcenter{\hbox{$\scriptstyle#1$}}$}}
%
\def\AA{{\cal A}}
\def\BB{{\cal B}}
\def\CC{{\cal C}}
\def\DD{{\cal D}}
\def\EE{{\cal E}}
\def\FF{{\cal F}}
\def\GG{{\cal G}}
\def\HH{{\cal H}}
\def\II{{\cal I}}
\def\JJ{{\cal J}}
\def\KK{{\cal K}}
\def\LL{{\cal L}}
\def\MM{{\cal M}}
\def\NN{{\cal N}}
\def\OO{{\cal O}}
\def\PP{{\cal P}}
\def\QQ{{\cal Q}}
\def\RR{{\cal R}}
\def\SS{{\cal S}}
\def\TT{{\cal T}}
\def\UU{{\cal U}}
\def\VV{{\cal V}}
\def\WW{{\cal W}}
\def\XX{{\cal X}}
\def\YY{{\cal Y}}
\def\ZZ{{\cal Z}}
%
\def\ssA{{\sss A}}
\def\ssB{{\sss B}}
\def\ssC{{\sss C}}
\def\ssD{{\sss D}}
\def\ssE{{\sss E}}
\def\ssF{{\sss F}}
\def\ssG{{\sss G}}
\def\ssH{{\sss H}}
\def\ssI{{\sss I}}
\def\ssJ{{\sss J}}
\def\ssK{{\sss K}}
\def\ssL{{\sss L}}
\def\ssM{{\sss M}}
\def\ssN{{\sss N}}
\def\ssO{{\sss O}}
\def\ssP{{\sss P}}
\def\ssQ{{\sss Q}}
\def\ssR{{\sss R}}
\def\ssS{{\sss S}}
\def\ssT{{\sss T}}
\def\ssU{{\sss U}}
\def\ssV{{\sss V}}
\def\ssW{{\sss W}}
\def\ssX{{\sss X}}
\def\ssY{{\sss Y}}
\def\ssZ{{\sss Z}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of macros.19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% including epsf-2.7k %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%epsf-2.7k
%%% ====================================================================
%%% This file is freely redistributable and placed into the
%%% public domain by Tomas Rokicki.
%%% @TeX-file{
%%% author = "Tom Rokicki",
%%% version = "2.7k",
%%% date = "19 July 1997",
%%% time = "10:00:05 MDT",
%%% filename = "epsf.tex",
%%% address = "Tom Rokicki
%%% Box 2081
%%% Stanford, CA 94309
%%% USA",
%%% telephone = "+1 415 855 9989",
%%% email = "rokicki@cs.stanford.edu (Internet)",
%%% codetable = "ISO/ASCII",
%%% keywords = "PostScript, TeX",
%%% supported = "yes",
%%% abstract = "This file contains macros to support the inclusion
%%% of Encapsulated PostScript files in TeX documents.",
%%% docstring = "This file contains TeX macros to include an
%%% Encapsulated PostScript graphic. It works
%%% by finding the bounding box comment,
%%% calculating the correct scale values, and
%%% inserting a vbox of the appropriate size at
%%% the current position in the TeX document.
%%%
%%% To use, simply say
%%%
%%% \input epsf % somewhere early on in your TeX file
%%%
%%% % then where you want to insert a vbox for a figure:
%%% \epsfbox{filename.ps}
%%%
%%% Alternatively, you can supply your own
%%% bounding box by
%%%
%%% \epsfbox[0 0 30 50]{filename.ps}
%%%
%%% This will not read in the file, and will
%%% instead use the bounding box you specify.
%%%
%%% The effect will be to typeset the figure as
%%% a TeX box, at the point of your \epsfbox
%%% command. By default, the graphic will have
%%% its `natural' width (namely the width of
%%% its bounding box, as described in
%%% filename.ps). The TeX box will have depth
%%% zero.
%%%
%%% You can enlarge or reduce the figure by
%%% saying
%%%
%%% \epsfxsize= \epsfbox{filename.ps}
%%% or
%%% \epsfysize= \epsfbox{filename.ps}
%%%
%%% instead. Then the width of the TeX box will
%%% be \epsfxsize and its height will be scaled
%%% proportionately (or the height will be
%%% \epsfysize and its width will be scaled
%%% proportionately).
%%%
%%% The width (and height) is restored to zero
%%% after each use, so \epsfxsize or \epsfysize
%%% must be specified before EACH use of
%%% \epsfbox.
%%%
%%% A more general facility for sizing is
%%% available by defining the \epsfsize macro.
%%% Normally you can redefine this macro to do
%%% almost anything. The first parameter is
%%% the natural x size of the PostScript
%%% graphic, the second parameter is the
%%% natural y size of the PostScript graphic.
%%% It must return the xsize to use, or 0 if
%%% natural scaling is to be used. Common uses
%%% include:
%%%
%%% \epsfxsize % just leave the old value alone
%%% 0pt % use the natural sizes
%%% #1 % use the natural sizes
%%% \hsize % scale to full width
%%% 0.5#1 % scale to 50% of natural size
%%% \ifnum #1>\hsize\hsize\else#1\fi
%%% % smaller of natural, hsize
%%%
%%% If you want TeX to report the size of the
%%% figure (as a message on your terminal when
%%% it processes each figure), say
%%% `\epsfverbosetrue'.
%%%
%%% If you only want to get the bounding box
%%% extents, without producing any output boxes
%%% or \special{}, then say
%%% \epsfgetbb{filename}. The extents will be
%%% saved in the macros \epsfllx \epsflly
%%% \epsfurx \epsfury in PostScript units of
%%% big points.
%%%
%%% Revision history:
%%%
%%% ---------------------------------------------
%%% epsf.tex macro file:
%%% Originally written by Tomas Rokicki of
%%% Radical Eye Software, 29 Mar 1989.
%%%
%%% ---------------------------------------------
%%% Revised by Don Knuth, 3 Jan 1990.
%%%
%%% ---------------------------------------------
%%% Revised by Tomas Rokicki, 18 Jul 1990.
%%% Accept bounding boxes with no space after
%%% the colon.
%%%
%%% ---------------------------------------------
%%% Revised by Nelson H. F. Beebe
%%% , 03 Dec 1991 [2.0].
%%% Add version number and date typeout.
%%%
%%% Use \immediate\write16 instead of \message
%%% to ensure output on new line.
%%%
%%% Handle nested EPS files.
%%%
%%% Handle %%BoundingBox: (atend) lines.
%%%
%%% Do not quit when blank lines are found.
%%%
%%% Add a few percents to remove generation of
%%% spurious blank space.
%%%
%%% Move \special output to
%%% \epsfspecial{filename} so that other macro
%%% packages can input this one, then change
%%% the definition of \epsfspecial to match
%%% another DVI driver.
%%%
%%% Move size computation to \epsfsetsize which
%%% can be called by the user; the verbose
%%% output of the bounding box and scaled width
%%% and height happens here.
%%%
%%% ---------------------------------------------
%%% Revised by Nelson H. F. Beebe
%%% , 05 May 1992 [2.1].
%%% Wrap \leavevmode\hbox{} around \vbox{} with
%%% the \special so that \epsffile{} can be
%%% used inside \begin{center}...\end{center}
%%%
%%% ---------------------------------------------
%%% Revised by Nelson H. F. Beebe
%%% , 09 Dec 1992 [2.2].
%%% Introduce \epsfshow{true,false} and
%%% \epsfframe{true,false} macros; the latter
%%% suppresses the insertion of the PostScript,
%%% and instead just creates an empty box,
%%% which may be handy for rapid prototyping.
%%%
%%% ---------------------------------------------
%%% Revised by Nelson H. F. Beebe
%%% , 14 Dec 1992 [2.3].
%%% Add \epsfshowfilename{true,false}. When
%%% true, and \epsfshowfalse is specified, the
%%% PostScript file name will be displayed
%%% centered in the figure box.
%%%
%%% ---------------------------------------------
%%% Revised by Nelson H. F. Beebe
%%% , 20 June 1993 [2.4].
%%% Remove non-zero debug setting of \epsfframemargin,
%%% and change margin handling to preserve EPS image
%%% size and aspect ratio, so that the actual
%%% box is \epsfxsize+\epsfframemargin wide by
%%% \epsfysize+\epsfframemargin high.
%%% Reduce output of \epsfshowfilenametrue to
%%% just the bare file name.
%%%
%%% ---------------------------------------------
%%% Revised by Nelson H. F. Beebe
%%% , 13 July 1993 [2.5].
%%% Add \epsfframethickness for control of
%%% \epsfframe frame lines.
%%%
%%% ---------------------------------------------
%%% Revised by Nelson H. F. Beebe
%%% , 02 July 1996 [2.6]
%%% Add missing initialization \epsfatendfalse;
%%% the lack of this resulted in the wrong
%%% BoundingBox being picked up, mea culpa, sigh...
%%% ---------------------------------------------
%%%
%%% ---------------------------------------------
%%% Revised by Nelson H. F. Beebe
%%% , 25 October 1996 [2.7]
%%% Update to match changes in from dvips 5-600
%%% distribution: new user-accessible macros:
%%% \epsfclipon, \epsfclipoff, \epsfdrafton,
%%% \epsfdraftoff, change \empty to \epsfempty.
%%% ---------------------------------------------
%%%
%%% Modified to avoid verbosity, give help.
%%% --kb@cs.umb.edu, for Texinfo.
%%% }
%%% ====================================================================
%
\ifx\epsfannounce\undefined \def\epsfannounce{\immediate\write16}\fi
\epsfannounce{This is `epsf.tex' v2.7k <10 July 1997>}%
%
\newread\epsffilein % file to \read
\newif\ifepsfatend % need to scan to LAST %%BoundingBox comment?
\newif\ifepsfbbfound % success?
\newif\ifepsfdraft % use draft mode?
\newif\ifepsffileok % continue looking for the bounding box?
\newif\ifepsfframe % frame the bounding box?
\newif\ifepsfshow % show PostScript file, or just bounding box?
\epsfshowtrue % default is to display PostScript file
\newif\ifepsfshowfilename % show the file name if \epsfshowfalse specified?
\newif\ifepsfverbose % report what you're making?
\newdimen\epsfframemargin % margin between box and frame
\newdimen\epsfframethickness % thickness of frame rules
\newdimen\epsfrsize % vertical size before scaling
\newdimen\epsftmp % register for arithmetic manipulation
\newdimen\epsftsize % horizontal size before scaling
\newdimen\epsfxsize % horizontal size after scaling
\newdimen\epsfysize % vertical size after scaling
\newdimen\pspoints % conversion factor
%
\pspoints = 1bp % Adobe points are `big'
\epsfxsize = 0pt % default value, means `use natural size'
\epsfysize = 0pt % ditto
\epsfframemargin = 0pt % default value: frame box flush around picture
\epsfframethickness = 0.4pt % TeX's default rule thickness
%
\def\epsfbox#1{\global\def\epsfllx{72}\global\def\epsflly{72}%
\global\def\epsfurx{540}\global\def\epsfury{720}%
\def\lbracket{[}\def\testit{#1}\ifx\testit\lbracket
\let\next=\epsfgetlitbb\else\let\next=\epsfnormal\fi\next{#1}}%
%
% We use \epsfgetlitbb if the user specified an explicit bounding box,
% and \epsfnormal otherwise. Because \epsfgetbb can be called
% separately to retrieve the bounding box, we move the verbose
% printing the bounding box extents and size on the terminal to
% \epsfstatus. Therefore, when the user provided the bounding box,
% \epsfgetbb will not be called, so we must call \epsfsetsize and
% \epsfstatus ourselves.
%
\def\epsfgetlitbb#1#2 #3 #4 #5]#6{%
\epsfgrab #2 #3 #4 #5 .\\%
\epsfsetsize
\epsfstatus{#6}%
\epsfsetgraph{#6}%
}%
%
\def\epsfnormal#1{%
\epsfgetbb{#1}%
\epsfsetgraph{#1}%
}%
%
\newhelp\epsfnoopenhelp{The PostScript image file must be findable by
TeX, i.e., somewhere in the TEXINPUTS (or equivalent) path.}%
%
\def\epsfgetbb#1{%
%
% The first thing we need to do is to open the
% PostScript file, if possible.
%
\openin\epsffilein=#1
\ifeof\epsffilein
\errhelp = \epsfnoopenhelp
\errmessage{Could not open file #1, ignoring it}%
\else %process the file
{% %start a group to contain catcode changes
% Make all special characters, except space, to be of type
% `other' so we process the file in almost verbatim mode
% (TeXbook, p. 344).
\chardef\other=12
\def\do##1{\catcode`##1=\other}%
\dospecials
\catcode`\ =10
\epsffileoktrue %true while we are looping
\epsfatendfalse %[02-Jul-1996]: add forgotten initialization
\loop %reading lines from the EPS file
\read\epsffilein to \epsffileline
\ifeof\epsffilein %then no more input
\epsffileokfalse %so set completion flag
\else %otherwise process one line
\expandafter\epsfaux\epsffileline:. \\%
\fi
\ifepsffileok
\repeat
\ifepsfbbfound
\else
\ifepsfverbose
\immediate\write16{No BoundingBox comment found in %
file #1; using defaults}%
\fi
\fi
}% %end catcode changes
\closein\epsffilein
\fi %end of file processing
\epsfsetsize %compute size parameters
\epsfstatus{#1}%
}%
%
% Clipping control:
\def\epsfclipon{\def\epsfclipstring{ clip}}%
\def\epsfclipoff{\def\epsfclipstring{\ifepsfdraft\space clip\fi}}%
\epsfclipoff % default for dvips is OFF
%
% The special that is emitted by \epsfsetgraph comes from this macro.
% It is defined separately to allow easy customization by other
% packages that first \input epsf.tex, then redefine \epsfspecial.
% This macro is invoked in the lower-left corner of a box of the
% width and height determined from the arguments to \epsffile, or
% from the %%BoundingBox in the EPS file itself.
%
% This version is for dvips:
\def\epsfspecial#1{%
\epsftmp=10\epsfxsize
\divide\epsftmp\pspoints
\ifnum\epsfrsize=0\relax
\special{PSfile=\ifepsfdraft psdraft.ps\else#1\fi\space
llx=\epsfllx\space
lly=\epsflly\space
urx=\epsfurx\space
ury=\epsfury\space
rwi=\number\epsftmp
\epsfclipstring
}%
\else
\epsfrsize=10\epsfysize
\divide\epsfrsize\pspoints
\special{PSfile=\ifepsfdraft psdraft.ps\else#1\fi\space
llx=\epsfllx\space
lly=\epsflly\space
urx=\epsfurx\space
ury=\epsfury\space
rwi=\number\epsftmp\space
rhi=\number\epsfrsize
\epsfclipstring
}%
\fi
}%
%
% \epsfframe macro adapted from the TeXbook, exercise 21.3, p. 223, 331.
% but modified to set the box width to the natural width, rather
% than the line width, and to include space for margins and rules
\def\epsfframe#1%
{%
\leavevmode % so we can put this inside
% a centered environment
\setbox0 = \hbox{#1}%
\dimen0 = \wd0 % natural width of argument
\advance \dimen0 by 2\epsfframemargin % plus width of 2 margins
\advance \dimen0 by 2\epsfframethickness % plus width of 2 rule lines
\vbox
{%
\hrule height \epsfframethickness depth 0pt
\hbox to \dimen0
{%
\hss
\vrule width \epsfframethickness
\kern \epsfframemargin
\vbox {\kern \epsfframemargin \box0 \kern \epsfframemargin }%
\kern \epsfframemargin
\vrule width \epsfframethickness
\hss
}% end hbox
\hrule height 0pt depth \epsfframethickness
}% end vbox
}%
%
\def\epsfsetgraph#1%
{%
%
% Make the vbox and stick in a \special that the DVI driver can
% parse. \vfil and \hfil are used to place the \special origin at
% the lower-left corner of the vbox. \epsfspecial can be redefined
% to produce alternate \special syntaxes.
%
\leavevmode
\hbox{% so we can put this in \begin{center}...\end{center}
\ifepsfframe\expandafter\epsfframe\fi
{\vbox to\epsfysize
{%
\ifepsfshow
% output \special{} at lower-left corner of figure box
\vfil
\hbox to \epsfxsize{\epsfspecial{#1}\hfil}%
\else
\vfil
\hbox to\epsfxsize{%
\hss
\ifepsfshowfilename
{%
\epsfframemargin=3pt % local change of margin
\epsfframe{{\tt #1}}%
}%
\fi
\hss
}%
\vfil
\fi
}%
}}%
%
% Reset \epsfxsize and \epsfysize, as documented above.
%
\global\epsfxsize=0pt
\global\epsfysize=0pt
}%
%
% Now we have to calculate the scale and offset values to use.
% First we compute the natural sizes.
%
\def\epsfsetsize
{%
\epsfrsize=\epsfury\pspoints
\advance\epsfrsize by-\epsflly\pspoints
\epsftsize=\epsfurx\pspoints
\advance\epsftsize by-\epsfllx\pspoints
%
% If `epsfxsize' is 0, we default to the natural size of the picture.
% Otherwise we scale the graph to be \epsfxsize wide.
%
\epsfxsize=\epsfsize{\epsftsize}{\epsfrsize}%
\ifnum \epsfxsize=0
\ifnum \epsfysize=0
\epsfxsize=\epsftsize
\epsfysize=\epsfrsize
\epsfrsize=0pt
%
% We have a sticky problem here: TeX doesn't do floating point arithmetic!
% Our goal is to compute y = rx/t. The following loop does this reasonably
% fast, with an error of at most about 16 sp (about 1/4000 pt).
%
\else
\epsftmp=\epsftsize \divide\epsftmp\epsfrsize
\epsfxsize=\epsfysize \multiply\epsfxsize\epsftmp
\multiply\epsftmp\epsfrsize \advance\epsftsize-\epsftmp
\epsftmp=\epsfysize
\loop \advance\epsftsize\epsftsize \divide\epsftmp 2
\ifnum \epsftmp>0
\ifnum \epsftsize<\epsfrsize
\else
\advance\epsftsize-\epsfrsize \advance\epsfxsize\epsftmp
\fi
\repeat
\epsfrsize=0pt
\fi
\else
\ifnum \epsfysize=0
\epsftmp=\epsfrsize \divide\epsftmp\epsftsize
\epsfysize=\epsfxsize \multiply\epsfysize\epsftmp
\multiply\epsftmp\epsftsize \advance\epsfrsize-\epsftmp
\epsftmp=\epsfxsize
\loop \advance\epsfrsize\epsfrsize \divide\epsftmp 2
\ifnum \epsftmp>0
\ifnum \epsfrsize<\epsftsize
\else
\advance\epsfrsize-\epsftsize \advance\epsfysize\epsftmp
\fi
\repeat
\epsfrsize=0pt
\else
\epsfrsize=\epsfysize
\fi
\fi
}%
%
% Issue some status messages if the user requested them
%
\def\epsfstatus#1{% arg = filename
\ifepsfverbose
\immediate\write16{#1: BoundingBox:
llx = \epsfllx\space lly = \epsflly\space
urx = \epsfurx\space ury = \epsfury\space}%
\immediate\write16{#1: scaled width = \the\epsfxsize\space
scaled height = \the\epsfysize}%
\fi
}%
%
% We still need to define the tricky \epsfaux macro. This requires
% a couple of magic constants for comparison purposes.
%
{\catcode`\%=12 \global\let\epsfpercent=%\global\def\epsfbblit{%BoundingBox}}%
\global\def\epsfatend{(atend)}%
%
% So we're ready to check for `%BoundingBox:' and to grab the
% values if they are found.
%
% If we find a line
%
% %%BoundingBox: (atend)
%
% then we ignore it, but set a flag to force parsing all of the
% file, so the last %%BoundingBox parsed will be the one used. This
% is necessary, because EPS files can themselves contain other EPS
% files with their own %%BoundingBox comments.
%
% If we find a line
%
% %%BoundingBox: llx lly urx ury
%
% then we save the 4 values in \epsfllx, \epsflly, \epsfurx, \epsfury.
% Then, if we have not previously parsed an (atend), we flag completion
% and can stop reading the file. Otherwise, we must keep on reading
% to end of file so that we find the values on the LAST %%BoundingBox.
\long\def\epsfaux#1#2:#3\\%
{%
\def\testit{#2}% % save second character up to just before colon
\ifx#1\epsfpercent % then first char is percent (quick test)
\ifx\testit\epsfbblit % then (slow test) we have %%BoundingBox
\epsfgrab #3 . . . \\%
\ifx\epsfllx\epsfatend % then ignore %%BoundingBox: (atend)
\global\epsfatendtrue
\else % else found %%BoundingBox: llx lly urx ury
\ifepsfatend % then keep parsing ALL %%BoundingBox lines
\else % else stop after first one parsed
\epsffileokfalse
\fi
\global\epsfbbfoundtrue
\fi
\fi
\fi
}%
%
% Here we grab the values and stuff them in the appropriate definitions.
%
\def\epsfempty{}%
\def\epsfgrab #1 #2 #3 #4 #5\\{%
\global\def\epsfllx{#1}\ifx\epsfllx\epsfempty
\epsfgrab #2 #3 #4 #5 .\\\else
\global\def\epsflly{#2}%
\global\def\epsfurx{#3}\global\def\epsfury{#4}\fi
}%
%
% We default the epsfsize macro.
%
\def\epsfsize#1#2{\epsfxsize}%
%
% Finally, another definition for compatibility with older macros.
%
\let\epsffile=\epsfbox
%\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of epsf-2.7k %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% including epsfig-1.20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%epsfig-1.20
%----------------------------------------------
\def\fileversion{v1.20}%
\def\filedate{26.1.94}%
%%%
%%% from a suggestion by eijkhout@csrd.uiuc.edu to allow
%%% loading as a style file:
\edef\epsfigRestoreAt{\catcode`@=\number\catcode`@\relax}%
\catcode`\@=11\relax
\ifx\undefined\@makeother % -pks-
\def\@makeother#1{\catcode`#1=12\relax} % -pks-
\fi % -pks-
\immediate\write16{Document style option `epsfig', \fileversion\space
<\filedate> (edited by SPQR)}%
%%%--------------------------------------------------------------------
%%% psfig merged with EPSF = epsfig Release 1
%%% 1.0 November 91
%%% 1.1 Dec 91 fixed some bugs
%%% 1.2 Jan 92 fixed bug that it never stopped reading PS file until
%%% it reached the end! merged in changes from psfig1.8
%%% (plain TeX definition of \fbox, new code for rotation)
%%% 1.3 Jan 92 separated out \special code so that dvitops can be
%%% supported. use \psfigdriver{dvitops}%
%%% 1.4 Jan 92 fixed dvitops. need to input psfig at different point
%%% in dvips from dvitops. define \psfig@start and \psfig@end to cope
%%% with this
%%% 1.5 Jan 92 force use of psfig method if using dvitops
%%% 1.6 May 92 fixed bugs
%%% 1.7 Sep 92 added support for emtex, sort of. reads a .bb file
%%% and imports .pcx file. Boolean flag \epsfigdos used
%%% to indicate that we cannot have more than one . in the
%%% suffix (ie we will look at file.bb not file.eps.bb)
%%%
%%% 1.8 Sep 92 added support for OzTeX; fixed bugs in dvips support
%%% (including clipping to bounding box); removed use of dimen100.
%%%
%%% 1.9 Dec 92 cleaned up documentation again
%%% 1.10 Mar 93 cleaned up for plain TeX
%%% 1.11 Mar 93 merged in changes by Peter Galko (supplied by CERN) for
%%% use with Textures
%%% 1.12 Apr 93 actually *tested* the Textures additions, and so rewrote
%%% from scratch (borrowed an idea from psbox)
%%% 1.13 May 93 allow for file names with _ or $ in them in \psdraft, and
%%% fix problem that occurred with missing BoundingBox
%%% 1.14 May 93 allow for .z suffix
%%% 1.15 July 93 allow for .gz suffix
%%% use \leavevmode as appropriate
%%% fix plain \TeX mode
%%% (fixes from Peter-Klaus Schilling )
%%% 1.16 August 93 [peta@mcrcim.mcgill.edu (Peter Whaite)]
%%% -- Implement Perl scripts to do compressed file inclusion and bb
%%% generation.
%%% -- Add \pscompress.
%%% -- Tidy up comments.
%%% 1.17 September 93 SPQR
%%% better code for literal name printing
%%% allowed for spaces around , and =
%%% 1.18 17.9.93
%%% updates to epsbb and epsfig from Peter W
%%% 1.19 14.11.93
%%% mistaken placement of calculation of EPS@Height resulted in errors
%%% 1.20 defaults to no compression
%--------------------------------------------------------
%%%
%%% code rearranged by Sebastian Rahtz (spqr@uk.ac.york.minster)
%%% from work by
%%% Trevor Darrell; Tom Rokicki; Daniel Smith; H. Payne, Robert Russell
%%%
%%% This is a version of Darrell's `psfig' macros which are designed
%%% to be used with dvips or dvitops, and the `epsf' macros (these are
%%% automaticaly included by the style file). I did this because the
%%% \special commands used by `epsf' appear to be more robust and
%%% portable than the raw \specials used by `psfig', but I preferred
%%% the psfig interface. This system preserves the psfig interface,
%%% but mainly uses epsf macros to carry out the job. The user
%%% interface is identical to \psfig, but you just use \epsfig
%%% instead. Rotation uses the original psfig macros: I could not work
%%% out how to do rotation with the epsf macros.
%%%
%%% The same applies to `rheight' and `rwidth'
%%%
%%% If you *really* want old psfig behaviour regardless, use \psfig. It is
%%% still there. Some of the features have gone, however. \figurepath
%%% seemed redundant, since it could be controlled by the TEXINPUTS
%%% variable anyway.
%%%
%%% As an added feature, if FILE cannot be found, a file called FILE.bb
%%% is searched for. This should simply contain a %%BoundingBox line. A perl
%%% script "epsbb" is provided to generate these automatically. It is
%%% assumed that if this exists, then the actual postscript is in UNIX
%%% compress format in FILE.Z or in GNU gzip format in FILE.gz or FILE.z.
%%%
%%% The macros then read the BB from FILE.bb, but insert "`epsfig FILE`" in
%%% the output for dvips to interpret (don't worry, it knows about this).
%%% "Epsfig" is another perl script which searches the TEXINPUTS path for
%%% FILE or FILE.{gz,z,Z}.
%%%
%%% As an added bonus if you say \pscompress the -c switch will be passed to
%%% epsfig, causing automatic FILE.bb generation and compression the first
%%% time dvips is run. Files in the system directories will NOT be
%%% compressed.
%%% If you are *not* on a Unix system and use this, deliberately or by
%%% mischance, you will have problems!
%%%
%%% This file can be included in a dumped format, or used as a LaTeX
%%% style file, or used in plain TeX. It does not load itself twice (I hope)
%%%
%--------------------------------------------------------------------
%--------------------------------------------------------------------
%%% previous notes. this copy of psfig.tex inherited from versions 1.8
%--------------------------------------------------------------------
%%% All psfig/tex software, documentation, and related files
%%% in this distribution of psfig/tex are
%%% Copyright 1987, 1988, 1991 Trevor J. Darrell
%
%%% Permission is granted for use and non-profit distribution of psfig/tex
%%% providing that this notice be clearly maintained. The right to
%%% distribute any portion of psfig/tex for profit or as part of any commercial
%%% product is specifically reserved for the author(s) of that portion.
%%%
%%% Thanks to Greg Hager (GDH) and Ned Batchelder for their contributions
%%% to this project.
%%%--------------------------------------------------------------------------
%%% GDH 7/26/87 -- changed so that it first looks in the local directory,
%%% then in a specified global directory for the ps file.
%%% SPQR 12/91 removed that last change. it follows TEXINPUTS anyway
%%% RPR 6/25/91 -- changed so that it defaults to user-supplied name if
%%% boundingbox info is specified, assuming graphic will be created by
%%% print time.
%%% SPQR 12/91 removed that last change. use LaTeX error message instead
%%% SPQR 12/91 -- `no file found' produces LaTeX error message.
%%% If you recover from that the file name is set in draft
%%% mode in place of the file.
%%%
%%% Modified by J. Daniel Smith on 9 October 1990 to accept the
%%% %%BoundingBox: comment with or without a space after the colon. Stole
%%% file reading code from Tom Rokicki's EPSF.TEX file (see below).
%%% --- SPQR 12.91 removed most of this to use epsf directly
%%%
%%% More modifications by J. Daniel Smith on 29 March 1991 to allow the
%%% the included PostScript figure to be rotated. The amount of
%%% rotation is specified by the "angle=" parameter of the \epsfig command.
%%%
%%% Modified by Robert Russell on June 25, 1991 to allow users to specify
%%% .ps filenames which don't yet exist, provided they explicitly provide
%%% boundingbox information via the \epsfig command. Note: This will only work
%%% if the "file=" parameter follows all four "bb???=" parameters in the
%%% command. This is due to the order in which psfig interprets these params.
%%% ---- SPQR 12.91 removed all this
%%%
%%% 3 Jul 1991 JDS check if file already read in once
%%%
%-----------------------------USAGE---------------------------------------
% From: gvr@cs.brown.edu (George V. Reilly)
%
% \psdraft draws an outline box, but doesn't include the figure
% in the DVI file. Useful for previewing.
%
% \psfull includes the figure in the DVI file (default).
%
% \psscalefirst width= or height= specifies the size of the figure
% before rotation.
% \psrotatefirst (default) width= or height= specifies the size of the
% figure after rotation. Asymetric figures will
% appear to shrink.
%
% usage: \epsfig{file=, figure=, height=, width=,
% bbllx=, bblly=, bburx=, bbury=,
% rheight=, rwidth=, clip=, angle=, silent=}%
%
% "file" is the filename. If no path name is specified and the
% file is not found in the current directory,
% it will be looked for in directory \psfigurepath.
% "figure" is a synonym for "file".
% By default, the width and height of the figure are taken from
% the BoundingBox of the figure.
% If "width" is specified, the figure is scaled so that it has
% the specified width. Its height changes proportionately.
% If "height" is specified, the figure is scaled so that it has
% the specified height. Its width changes proportionately.
% If both "width" and "height" are specified, the figure is scaled
% anamorphically.
% "bbllx", "bblly", "bburx", and "bbury" control the PostScript
% BoundingBox.
% "rheight" and "rwidth" are the reserved height and width
% of the figure, i.e., how big TeX actually thinks
% the figure is. They default to "width" and "height".
% The "clip" option ensures that no portion of the figure will
% appear outside its BoundingBox. "clip=" is a switch and
% takes no value, but the `=' must be present.
% The "angle" option specifies the angle of rotation (degrees, ccw).
% The "silent" option makes \psfig work silently.
%
%--------------------------------------------------------------------------
\newcount\EPS@Height \newcount\EPS@Width \newcount\EPS@xscale
\newcount\EPS@yscale
\def\psfigdriver#1{%
\bgroup\edef\next{\def\noexpand\tempa{#1}}%
\uppercase\expandafter{\next}%
\def\LN{DVITOLN03}%
\def\DVItoPS{DVITOPS}%
\def\DVIPS{DVIPS}%
\def\emTeX{EMTEX}%
\def\OzTeX{OZTEX}%
\def\Textures{TEXTURES}%
\global\chardef\fig@driver=0
\ifx\tempa\LN
\global\chardef\fig@driver=0\fi
\ifx\tempa\DVItoPS
\global\chardef\fig@driver=1\fi
\ifx\tempa\DVIPS
\global\chardef\fig@driver=2\fi
\ifx\tempa\emTeX
\global\chardef\fig@driver=3\fi
\ifx\tempa\OzTeX
\global\chardef\fig@driver=4\fi
\ifx\tempa\Textures
\global\chardef\fig@driver=5\fi
\egroup
\def\psfig@start{}%
\def\psfig@end{}%
\def\epsfig@gofer{}%
\ifcase\fig@driver
% case 0 ln03
\typeout{WARNING! ****
no specials for LN03 psfig}%
%
\or % case 1: dvitops
\def\psfig@start{}%
\def\psfig@end{\special{dvitops: import \@p@sfilefinal \space
\@p@swidth sp \space \@p@sheight sp \space fill}%
\if@clip \typeout{Clipping not supported}\fi
\if@angle \typeout{Rotating not supported}\fi
}%
\let\epsfig@gofer\psfig@end
%
\or %case2 dvips
\def\psfig@start{\special{ps::[begin] \@p@swidth \space \@p@sheight \space%
\@p@sbbllx \space \@p@sbblly \space%
\@p@sbburx \space \@p@sbbury \space%
startTexFig \space }%
\if@angle
\special {ps:: \@p@sangle \space rotate \space}
\fi
\if@clip
\if@verbose
\typeout{(clipped to BB) }%
\fi
\special{ps:: doclip \space }%
\fi
\special{ps: plotfile \@p@sfilefinal \space }%
\special{ps::[end] endTexFig \space }%
}%
\def\psfig@end{}%
\def\epsfig@gofer{\if@clip
\if@verbose
\typeout{(clipped to BB)}%
\fi
\epsfclipon
\fi
\epsfsetgraph{\@p@sfilefinal}%
}%
%
\or % case 3, emTeX
\typeout{WARNING. You must have a .bb info file with the Bounding Box
of the pcx file}%
\def\psfig@start{}%
% when emtex imports a pcx file, it is *below* where we are now.
% so raise the box
\def\psfig@end{\typeout{pcx import of \@p@sfilefinal}%
\if@clip \typeout{Clipping not supported}\fi
\if@angle \typeout{Rotating not supported}\fi
\raisebox{\@p@srheight sp}{\special{em: graph \@p@sfilefinal}}}%
\def\epsfig@gofer{}%
%
\or % case 4, OzTeX
\def\psfig@start{}%
\def\psfig@end{%
\EPS@Width\@p@swidth
\EPS@Height\@p@sheight
\divide\EPS@Width by 65781 % convert sp to bp
\divide\EPS@Height by 65781
\special{epsf=\@p@sfilefinal
\space
width=\the\EPS@Width
\space
height=\the\EPS@Height
}%
\if@clip \typeout{Clipping not supported}\fi
\if@angle \typeout{Rotating not supported}\fi
}%
\let\epsfig@gofer\psfig@end
\or % case 5, Textures
\def\psfig@end{
% what is scaling of picture
\EPS@Width=\@bbw
\divide\EPS@Width by 1000
\EPS@xscale=\@p@swidth \divide \EPS@xscale by \EPS@Width
\EPS@Height=\@bbh
\divide\EPS@Height by 1000
\EPS@yscale=\@p@sheight \divide \EPS@yscale by\EPS@Height
% take largest calculated scale
\ifnum\EPS@xscale>\EPS@yscale\EPS@xscale=\EPS@yscale\fi
\if@clip
\if@verbose
\typeout{(clipped to BB)}%
\fi
\epsfclipon
\fi
\special{illustration \@p@sfilefinal\space scaled \the\EPS@xscale}%
}%
\def\psfig@start{}%
\let\epsfig\psfig
\else
\typeout{WARNING. *** unknown driver - no psfig}%
\fi
}%
% copies of bits of LaTeX we need....
\newdimen\ps@dimcent
%
% \fbox is defined in latex.tex; so if \fbox is undefined, assume that
% we are not in LaTeX.
% Perhaps this could be done better???
\ifx\undefined\fbox
% \fbox code from modified slightly from LaTeX
\newdimen\fboxrule
\newdimen\fboxsep
\newdimen\ps@tempdima
\newbox\ps@tempboxa
\fboxsep = 0pt
\fboxrule = .4pt
\long\def\fbox#1{\leavevmode\setbox\ps@tempboxa\hbox{#1}\ps@tempdima\fboxrule
\advance\ps@tempdima \fboxsep \advance\ps@tempdima \dp\ps@tempboxa
\hbox{\lower \ps@tempdima\hbox
{\vbox{\hrule height \fboxrule
\hbox{\vrule width \fboxrule \hskip\fboxsep
\vbox{\vskip\fboxsep \box\ps@tempboxa\vskip\fboxsep}\hskip
\fboxsep\vrule width \fboxrule}%
\hrule height \fboxrule}}}}%
\fi
\ifx\@ifundefined\undefined
\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
#1\endcsname\relax#2\else#3\fi}%
\fi
%
\@ifundefined{typeout}%
{\gdef\typeout#1{\immediate\write\sixt@@n{#1}}}%
{\relax}%
%
%%% check to see if macros already loaded in (maybe some other file says
%%% "\input epsfig") ...
%\@ifundefined{epsfig}{}{\typeout{EPSFIG --- already loaded}\endinput}%
%
%%%
%%% we need Rokicki's EPSF macros anyway, unless they are already loaded
%
%\@ifundefined{epsfbox}{\input epsf}{}%
%
%% SPQR 12.91 handling of errors using standard LaTeX error
%% mechanism. In case we are plain TeX we first define the
%% error routines...
\ifx\undefined\@latexerr
\newlinechar`\^^J
\def\@spaces{\space\space\space\space}%
\def\@latexerr#1#2{%
\edef\@tempc{#2}\expandafter\errhelp\expandafter{\@tempc}%
\typeout{Error. \space see a manual for explanation.^^J
\space\@spaces\@spaces\@spaces Type \space H \space for
immediate help.}\errmessage{#1}}%
\fi
%------------------------
%% a couple of LaTeX error messages
\def\@whattodo{You tried to include a PostScript figure which
cannot be found^^JIf you press return to carry on anyway,^^J
The failed name will be printed in place of the figure.^^J
or type X to quit}%
\def\@whattodobb{You tried to include a PostScript figure which
has no^^Jbounding box, and you supplied none.^^J
If you press return to carry on anyway,^^J
The failed name will be printed in place of the figure.^^J
or type X to quit}%
%------------------------
%
%------------------------------------------------------------------------
%------------------------------------------------------------------------
%%% @psdo control structure -- similar to Latex @for.
%%% I redefined these with different names so that psfig can
%%% be used with TeX as well as LaTeX, and so that it will not
%%% be vunerable to future changes in LaTeX's internal
%%% control structure,
%
\def\@nnil{\@nil}%
\def\@empty{}%
\def\@psdonoop#1\@@#2#3{}%
\def\@psdo#1:=#2\do#3{\edef\@psdotmp{#2}\ifx\@psdotmp\@empty \else
\expandafter\@psdoloop#2,\@nil,\@nil\@@#1{#3}\fi}%
\def\@psdoloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else
#5\def#4{#2}\ifx #4\@nnil \else#5\@ipsdoloop #3\@@#4{#5}\fi\fi}%
\def\@ipsdoloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
\let\@nextwhile=\@psdonoop \else
#4\relax\let\@nextwhile=\@ipsdoloop\fi\@nextwhile#2\@@#3{#4}}%
\def\@tpsdo#1:=#2\do#3{\xdef\@psdotmp{#2}\ifx\@psdotmp\@empty \else
\@tpsdoloop#2\@nil\@nil\@@#1{#3}\fi}%
\def\@tpsdoloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
\let\@nextwhile=\@psdonoop \else
#4\relax\let\@nextwhile=\@tpsdoloop\fi\@nextwhile#2\@@#3{#4}}%
%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% file reading stuff from epsf.tex
%%% EPSF.TEX macro file:
%%% Written by Tomas Rokicki of Radical Eye Software, 29 Mar 1989.
%%% Revised by Don Knuth, 3 Jan 1990.
%%% Revised by Tomas Rokicki to accept bounding boxes with no
%%% space after the colon, 18 Jul 1990.
%%% Portions modified/removed for use in PSFIG package by
%%% J. Daniel Smith, 9 October 1990.
%%% Just the bit which knows about (atend) as a BoundingBox
%
%%% hacked back a bit by SPQR 12/91
%
\long\def\epsfaux#1#2:#3\\{\ifx#1\epsfpercent
\def\testit{#2}\ifx\testit\epsfbblit
\@atendfalse
\epsf@atend #3 . \\%
\if@atend
\if@verbose
\typeout{epsfig: found `(atend)'; continuing search}%
\fi
\else
\epsfgrab #3 . . . \\%
\epsffileokfalse\global\no@bbfalse
\global\epsfbbfoundtrue
\fi
\fi\fi}%
%
%%% Determine if the stuff following the %%BoundingBox is `(atend)'
%%% J. Daniel Smith. Copied from \epsf@grab above.
%
\def\epsf@atendlit{(atend)}
%
\def\epsf@atend #1 #2 #3\\{%
\def\epsf@tmp{#1}\ifx\epsf@tmp\empty
\epsf@atend #2 #3 .\\\else
\ifx\epsf@tmp\epsf@atendlit\@atendtrue\fi\fi}%
%%% End of file reading stuff from epsf.tex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% trigonometry stuff from "trig.tex"
\chardef\trig@letter = 11
\chardef\other = 12
\newif\ifdebug %%% turn me on to see TeX hard at work ...
\newif\ifc@mpute %%% don't need to compute some values
\newif\if@atend
\c@mputetrue % but assume that we do
\let\then = \relax
\def\r@dian{pt }%
\let\r@dians = \r@dian
\let\dimensionless@nit = \r@dian
\let\dimensionless@nits = \dimensionless@nit
\def\internal@nit{sp }%
\let\internal@nits = \internal@nit
\newif\ifstillc@nverging
\def \Mess@ge #1{\ifdebug \then \message {#1} \fi}%
{ %%% Things that need abnormal catcodes %%%
\catcode `\@ = \trig@letter
\gdef \nodimen {\expandafter \n@dimen \the \dimen}%
\gdef \term #1 #2 #3%
{\edef \t@ {\the #1}%%% freeze parameter 1 (count, by value)
\edef \t@@ {\expandafter \n@dimen \the #2\r@dian}%
%%% freeze parameter 2 (dimen, by value)
\t@rm {\t@} {\t@@} {#3}%
}%
\gdef \t@rm #1 #2 #3%
{{%
\count 0 = 0
\dimen 0 = 1 \dimensionless@nit
\dimen 2 = #2\relax
\Mess@ge {Calculating term #1 of \nodimen 2}%
\loop
\ifnum \count 0 < #1
\then \advance \count 0 by 1
\Mess@ge {Iteration \the \count 0 \space}%
\Multiply \dimen 0 by {\dimen 2}%
\Mess@ge {After multiplication, term = \nodimen 0}%
\Divide \dimen 0 by {\count 0}%
\Mess@ge {After division, term = \nodimen 0}%
\repeat
\Mess@ge {Final value for term #1 of
\nodimen 2 \space is \nodimen 0}%
\xdef \Term {#3 = \nodimen 0 \r@dians}%
\aftergroup \Term
}}%
\catcode `\p = \other
\catcode `\t = \other
\gdef \n@dimen #1pt{#1} %%% throw away the ``pt''
}%
\def \Divide #1by #2{\divide #1 by #2} %%% just a synonym
\def \Multiply #1by #2%%% allows division of a dimen by a dimen
{{%%% should really freeze parameter 2 (dimen, passed by value)
\count 0 = #1\relax
\count 2 = #2\relax
\count 4 = 65536
\Mess@ge {Before scaling, count 0 = \the \count 0 \space and
count 2 = \the \count 2}%
\ifnum \count 0 > 32767 %%% do our best to avoid overflow
\then \divide \count 0 by 4
\divide \count 4 by 4
\else \ifnum \count 0 < -32767
\then \divide \count 0 by 4
\divide \count 4 by 4
\else
\fi
\fi
\ifnum \count 2 > 32767 %%% while retaining reasonable accuracy
\then \divide \count 2 by 4
\divide \count 4 by 4
\else \ifnum \count 2 < -32767
\then \divide \count 2 by 4
\divide \count 4 by 4
\else
\fi
\fi
\multiply \count 0 by \count 2
\divide \count 0 by \count 4
\xdef \product {#1 = \the \count 0 \internal@nits}%
\aftergroup \product
}}%
\def\r@duce{\ifdim\dimen0 > 90\r@dian \then % sin(x) = sin(180-x)
\multiply\dimen0 by -1
\advance\dimen0 by 180\r@dian
\r@duce
\else \ifdim\dimen0 < -90\r@dian \then % sin(x) = sin(360+x)
\advance\dimen0 by 360\r@dian
\r@duce
\fi
\fi}%
\def\Sine#1%
{{%
\dimen 0 = #1 \r@dian
\r@duce
\ifdim\dimen0 = -90\r@dian \then
\dimen4 = -1\r@dian
\c@mputefalse
\fi
\ifdim\dimen0 = 90\r@dian \then
\dimen4 = 1\r@dian
\c@mputefalse
\fi
\ifdim\dimen0 = 0\r@dian \then
\dimen4 = 0\r@dian
\c@mputefalse
\fi
%
\ifc@mpute \then
% convert degrees to radians
\divide\dimen0 by 180
\dimen0=3.141592654\dimen0
%
\dimen 2 = 3.1415926535897963\r@dian %%% a well-known constant
\divide\dimen 2 by 2 %%% we only deal with -pi/2 : pi/2
\Mess@ge {Sin: calculating Sin of \nodimen 0}%
\count 0 = 1 %%% see power-series expansion for sine
\dimen 2 = 1 \r@dian %%% ditto
\dimen 4 = 0 \r@dian %%% ditto
\loop
\ifnum \dimen 2 = 0 %%% then we've done
\then \stillc@nvergingfalse
\else \stillc@nvergingtrue
\fi
\ifstillc@nverging %%% then calculate next term
\then \term {\count 0} {\dimen 0} {\dimen 2}%
\advance \count 0 by 2
\count 2 = \count 0
\divide \count 2 by 2
\ifodd \count 2 %%% signs alternate
\then \advance \dimen 4 by \dimen 2
\else \advance \dimen 4 by -\dimen 2
\fi
\repeat
\fi
\xdef \sine {\nodimen 4}%
}}%
%%% Now the Cosine can be calculated easily by calling \Sine:
%%% cos(x) = sin(90-x)
\def\Cosine#1{\ifx\sine\UnDefined\edef\Savesine{\relax}\else
\edef\Savesine{\sine}\fi
{\dimen0=#1\r@dian\multiply\dimen0 by -1
\advance\dimen0 by 90\r@dian
\Sine{\nodimen 0}%
\xdef\cosine{\sine}%
\xdef\sine{\Savesine}}}
%%% end of trig stuff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\def\psdraft{\def\@psdraft{0}}%
\def\psfull{\def\@psdraft{1}}%
\psfull
\newif\if@compress
\def\pscompress{\@compresstrue}
\def\psnocompress{\@compressfalse}
\@compressfalse
\newif\if@scalefirst
\def\psscalefirst{\@scalefirsttrue}%
\def\psrotatefirst{\@scalefirstfalse}%
\psrotatefirst
%
\newif\if@draftbox
\def\psnodraftbox{\@draftboxfalse}%
\@draftboxtrue
%
\newif\if@noisy
\@noisyfalse
\newif\ifno@bb
%%% These are for the option list.
%%% A specification of the form a = b maps to calling \@p@@sa{b}%
\newif\if@bbllx
\newif\if@bblly
\newif\if@bburx
\newif\if@bbury
\newif\if@height
\newif\if@width
\newif\if@rheight
\newif\if@rwidth
\newif\if@angle
\newif\if@clip
\newif\if@verbose
\newif\if@prologfile
\def\@p@@sprolog#1{\@prologfiletrue\def\@prologfileval{#1}}%
\def\@p@@sclip#1{\@cliptrue}%
%
\newif\ifepsfig@dos % only single suffix possible
\def\epsfigdos{\epsfig@dostrue}%
\epsfig@dosfalse
%%% if this is true, the original Darrell macros and specials are used
\newif\ifuse@psfig
%
\def\ParseName#1{\expandafter\@Parse#1}%
\def\@Parse#1.#2:{\gdef\BaseName{#1}\gdef\FileType{#2}}%
\def\@p@@sfile#1{%
\ifepsfig@dos
\ParseName{#1:}%
\else
\gdef\BaseName{#1}\gdef\FileType{}%
\fi
\def\@p@sfile{NO FILE: #1}%
\def\@p@sfilefinal{NO FILE: #1}%
\openin1=#1
\ifeof1\closein1\openin1=\BaseName.bb
\ifeof1\closein1
\if@bbllx % No postscript file but bb given explicitly.
\if@bblly\if@bburx\if@bbury
\def\@p@sfile{#1}%
\def\@p@sfilefinal{#1}%
\fi\fi\fi
\else % No bounding box found.
\@latexerr{ERROR. PostScript file #1 not found}\@whattodo
\@p@@sbbllx{100bp}%
\@p@@sbblly{100bp}%
\@p@@sbburx{200bp}%
\@p@@sbbury{200bp}%
\psdraft
\fi
\else % Postscript file is compressed.
\closein1%
\edef\@p@sfile{\BaseName.bb}%
\typeout{using BB from \@p@sfile}%
\ifnum\fig@driver=3
\edef\@p@sfilefinal{\BaseName.pcx}%
\else
\ifepsfig@dos
\edef\@p@sfilefinal{"`gunzip -c `texfind \BaseName.{z,Z,gz}"}%
\else
\edef\@p@sfilefinal{"`epsfig \if@compress-c \fi#1"}%
\fi
\fi
\fi
\else\closein1 % Postscript file is not compressed.
\edef\@p@sfile{#1}%
\if@compress
\edef\@p@sfilefinal{"`epsfig -c #1"}%
\else
\edef\@p@sfilefinal{#1}%
\fi
\fi%
}
% alternative syntax: figure=
\let\@p@@sfigure\@p@@sfile
%
\def\@p@@sbbllx#1{%
\@bbllxtrue
\ps@dimcent=#1
\edef\@p@sbbllx{\number\ps@dimcent}%
\divide\ps@dimcent by65536
\global\edef\epsfllx{\number\ps@dimcent}%
}%
\def\@p@@sbblly#1{%
\@bbllytrue
\ps@dimcent=#1
\edef\@p@sbblly{\number\ps@dimcent}%
\divide\ps@dimcent by65536
\global\edef\epsflly{\number\ps@dimcent}%
}%
\def\@p@@sbburx#1{%
\@bburxtrue
\ps@dimcent=#1
\edef\@p@sbburx{\number\ps@dimcent}%
\divide\ps@dimcent by65536
\global\edef\epsfurx{\number\ps@dimcent}%
}%
\def\@p@@sbbury#1{%
\@bburytrue
\ps@dimcent=#1
\edef\@p@sbbury{\number\ps@dimcent}%
\divide\ps@dimcent by65536
\global\edef\epsfury{\number\ps@dimcent}%
}%
\def\@p@@sheight#1{%
\@heighttrue
\global\epsfysize=#1
\ps@dimcent=#1
\edef\@p@sheight{\number\ps@dimcent}%
}%
\def\@p@@swidth#1{%
\@widthtrue
\global\epsfxsize=#1
\ps@dimcent=#1
\edef\@p@swidth{\number\ps@dimcent}%
}%
\def\@p@@srheight#1{%
\@rheighttrue\use@psfigtrue
\ps@dimcent=#1
\edef\@p@srheight{\number\ps@dimcent}%
}%
\def\@p@@srwidth#1{%
\@rwidthtrue\use@psfigtrue
\ps@dimcent=#1
\edef\@p@srwidth{\number\ps@dimcent}%
}%
\def\@p@@sangle#1{%
\use@psfigtrue
\@angletrue
\edef\@p@sangle{#1}%
}%
\def\@p@@ssilent#1{%
\@verbosefalse
}%
\def\@p@@snoisy#1{%
\@verbosetrue
}%
\def\@cs@name#1{\csname #1\endcsname}%
\def\@setparms#1=#2,{\@cs@name{@p@@s#1}{#2}}%
%
%%% initialize the defaults (size the size of the figure)
%
\def\ps@init@parms{%
\@bbllxfalse \@bbllyfalse
\@bburxfalse \@bburyfalse
\@heightfalse \@widthfalse
\@rheightfalse \@rwidthfalse
\def\@p@sbbllx{}\def\@p@sbblly{}%
\def\@p@sbburx{}\def\@p@sbbury{}%
\def\@p@sheight{}\def\@p@swidth{}%
\def\@p@srheight{}\def\@p@srwidth{}%
\def\@p@sangle{0}%
\def\@p@sfile{}%
\use@psfigfalse
\@prologfilefalse
\def\@sc{}%
\if@noisy
\@verbosetrue
\else
\@verbosefalse
\fi
\@clipfalse
}%
%
%%% Go through the options setting things up.
%
\def\parse@ps@parms#1{%
\@psdo\@psfiga:=#1\do
{\expandafter\@setparms\@psfiga,}%
\if@prologfile
\special{header=\@prologfileval}%
\fi
}%
%
%%% Compute bb height and width
%
\def\bb@missing{%
\if@verbose
\typeout{psfig: searching \@p@sfile \space for bounding box}%
\fi
\epsfgetbb{\@p@sfile}%
\ifepsfbbfound
\ps@dimcent=\epsfllx bp\edef\@p@sbbllx{\number\ps@dimcent}%
\ps@dimcent=\epsflly bp\edef\@p@sbblly{\number\ps@dimcent}%
\ps@dimcent=\epsfurx bp\edef\@p@sbburx{\number\ps@dimcent}%
\ps@dimcent=\epsfury bp\edef\@p@sbbury{\number\ps@dimcent}%
\else
\epsfbbfoundfalse
\fi
}
%
% rotate point (#1,#2) about (0,0).
% The sine and cosine of the angle are already stored in \sine and
% \cosine. The result is placed in (\p@intvaluex, \p@intvaluey).
\newdimen\p@intvaluex
\newdimen\p@intvaluey
\def\rotate@#1#2{{\dimen0=#1 sp\dimen1=#2 sp
% calculate x' = x \cos\theta - y \sin\theta
\global\p@intvaluex=\cosine\dimen0
\dimen3=\sine\dimen1
\global\advance\p@intvaluex by -\dimen3
% calculate y' = x \sin\theta + y \cos\theta
\global\p@intvaluey=\sine\dimen0
\dimen3=\cosine\dimen1
\global\advance\p@intvaluey by \dimen3
}}%
\def\compute@bb{%
\epsfbbfoundfalse
\if@bbllx\epsfbbfoundtrue\fi
\if@bblly\epsfbbfoundtrue\fi
\if@bburx\epsfbbfoundtrue\fi
\if@bbury\epsfbbfoundtrue\fi
\ifepsfbbfound\else\bb@missing\fi
\ifepsfbbfound\else
\@latexerr{ERROR. cannot locate BoundingBox}\@whattodobb
\@p@@sbbllx{100bp}%
\@p@@sbblly{100bp}%
\@p@@sbburx{200bp}%
\@p@@sbbury{200bp}%
\no@bbtrue
\psdraft
\fi
%
%
% store height/width of original (unrotated) bounding box
\count203=\@p@sbburx
\count204=\@p@sbbury
\advance\count203 by -\@p@sbbllx
\advance\count204 by -\@p@sbblly
\edef\ps@bbw{\number\count203}%
\edef\ps@bbh{\number\count204}%
\edef\@bbw{\number\count203}%
\edef\@bbh{\number\count204}%
\if@angle
\Sine{\@p@sangle}\Cosine{\@p@sangle}%
{\ps@dimcent=\maxdimen\xdef\r@p@sbbllx{\number\ps@dimcent}%
\xdef\r@p@sbblly{\number\ps@dimcent}%
\xdef\r@p@sbburx{-\number\ps@dimcent}%
\xdef\r@p@sbbury{-\number\ps@dimcent}}%
%
% Need to rotate all four points and take the X-Y extremes of the new
% points as the new bounding box.
\def\minmaxtest{%
\ifnum\number\p@intvaluex<\r@p@sbbllx
\xdef\r@p@sbbllx{\number\p@intvaluex}\fi
\ifnum\number\p@intvaluex>\r@p@sbburx
\xdef\r@p@sbburx{\number\p@intvaluex}\fi
\ifnum\number\p@intvaluey<\r@p@sbblly
\xdef\r@p@sbblly{\number\p@intvaluey}\fi
\ifnum\number\p@intvaluey>\r@p@sbbury
\xdef\r@p@sbbury{\number\p@intvaluey}\fi
}%
% lower left
\rotate@{\@p@sbbllx}{\@p@sbblly}%
\minmaxtest
% upper left
\rotate@{\@p@sbbllx}{\@p@sbbury}%
\minmaxtest
% lower right
\rotate@{\@p@sbburx}{\@p@sbblly}%
\minmaxtest
% upper right
\rotate@{\@p@sbburx}{\@p@sbbury}%
\minmaxtest
\edef\@p@sbbllx{\r@p@sbbllx}\edef\@p@sbblly{\r@p@sbblly}%
\edef\@p@sbburx{\r@p@sbburx}\edef\@p@sbbury{\r@p@sbbury}%
\fi
\count203=\@p@sbburx
\count204=\@p@sbbury
\advance\count203 by -\@p@sbbllx
\advance\count204 by -\@p@sbblly
\edef\@bbw{\number\count203}%
\edef\@bbh{\number\count204}%
}%
%
% \in@hundreds performs #1 * (#2 / #3) correct to the hundreds,
% then leaves the result in @result
%
\def\in@hundreds#1#2#3{\count240=#2 \count241=#3
\count100=\count240 % 100 is first digit #2/#3
\divide\count100 by \count241
\count101=\count100
\multiply\count101 by \count241
\advance\count240 by -\count101
\multiply\count240 by 10
\count101=\count240 %101 is second digit of #2/#3
\divide\count101 by \count241
\count102=\count101
\multiply\count102 by \count241
\advance\count240 by -\count102
\multiply\count240 by 10
\count102=\count240 % 102 is the third digit
\divide\count102 by \count241
\count200=#1\count205=0
\count201=\count200
\multiply\count201 by \count100
\advance\count205 by \count201
\count201=\count200
\divide\count201 by 10
\multiply\count201 by \count101
\advance\count205 by \count201
%
\count201=\count200
\divide\count201 by 100
\multiply\count201 by \count102
\advance\count205 by \count201
%
\edef\@result{\number\count205}%
}%
\def\compute@wfromh{%
% computing : width = height * (bbw / bbh)
\in@hundreds{\@p@sheight}{\@bbw}{\@bbh}%
\edef\@p@swidth{\@result}%
}%
\def\compute@hfromw{%
% computing : height = width * (bbh / bbw)
\in@hundreds{\@p@swidth}{\@bbh}{\@bbw}%
\edef\@p@sheight{\@result}%
}%
\def\compute@handw{%
\if@height
\if@width
\else
\compute@wfromh
\fi
\else
\if@width
\compute@hfromw
\else
\edef\@p@sheight{\@bbh}%
\edef\@p@swidth{\@bbw}%
\fi
\fi
}%
\def\compute@resv{%
\if@rheight \else \edef\@p@srheight{\@p@sheight} \fi
\if@rwidth \else \edef\@p@srwidth{\@p@swidth} \fi
}%
%
% Compute any missing values
\def\compute@sizes{%
\if@scalefirst\if@angle
% at this point the bounding box has been adjsuted correctly for
% rotation. PSFIG does all of its scaling using \@bbh and \@bbw. If
% a width= or height= was specified along with \psscalefirst, then the
% width=/height= value needs to be adjusted to match the new (rotated)
% bounding box size (specifed in \@bbw and \@bbh).
% \ps@bbw width=
% ------- = ----------
% \@bbw new width=
% so `new width=' = (width= * \@bbw) / \ps@bbw; where \ps@bbw is the
% width of the original (unrotated) bounding box.
\if@width
\in@hundreds{\@p@swidth}{\@bbw}{\ps@bbw}%
\edef\@p@swidth{\@result}%
\fi
\if@height
\in@hundreds{\@p@sheight}{\@bbh}{\ps@bbh}%
\edef\@p@sheight{\@result}%
\fi
\fi\fi
\compute@handw
\compute@resv
}
%
%------------------------------------------------------------------
%%% by the way, possible parameters to the PSfile= command in dvips are:
%%% llx
%%% lly
%%% urx
%%% ury
%%% rwi
% hoffset The horizontal offset (default 0)
% voffset The vertical offset (default 0)
% hsize The horizontal clipping size (default 612)
% vsize The vertical clipping size (default 792)
% hscale The horizontal scaling factor (default 100)
% vscale The vertical scaling factor (default 100)
% angle The rotation (default 0)
%------------------------------------------------------------------
\long\def\graphic@verb#1{\def\next{#1}%
{\expandafter\graphic@strip\meaning\next}}
\def\graphic@strip#1>{}
\def\graphic@zapspace#1{%
#1\ifx\graphic@zapspace#1\graphic@zapspace%
\else\expandafter\graphic@zapspace%
\fi}
\def\psfig#1{%
\edef\@tempa{\graphic@zapspace#1{}}%
\ifvmode\leavevmode\fi\vbox {%
%
\ps@init@parms
\parse@ps@parms{\@tempa}%
%
\ifnum\@psdraft=1
\typeout{[\@p@sfilefinal]}%
\if@verbose
\typeout{epsfig: using PSFIG macros}%
\fi
\psfig@method
\else
\epsfig@draft
\fi
}
}%
\def\graphic@zapspace#1{%
#1\ifx\graphic@zapspace#1\graphic@zapspace%
\else\expandafter\graphic@zapspace%
\fi}
\def\epsfig#1{%
\edef\@tempa{\graphic@zapspace#1{}}%
\ifvmode\leavevmode\fi\vbox {%
%
\ps@init@parms
\parse@ps@parms{\@tempa}%
%
\ifnum\@psdraft=1
\if@angle\use@psfigtrue\fi
{\ifnum\fig@driver=1\global\use@psfigtrue\fi}%
{\ifnum\fig@driver=3\global\use@psfigtrue\fi}%
{\ifnum\fig@driver=4\global\use@psfigtrue\fi}%
{\ifnum\fig@driver=5\global\use@psfigtrue\fi}%
\ifuse@psfig
\if@verbose
\typeout{epsfig: using PSFIG macros}%
\fi
\psfig@method
\else
\if@verbose
\typeout{epsfig: using EPSF macros}%
\fi
\epsf@method
\fi
\else
\epsfig@draft
\fi
}%
}%
\def\epsf@method{%
\epsfbbfoundfalse
\if@bbllx\epsfbbfoundtrue\fi
\if@bblly\epsfbbfoundtrue\fi
\if@bburx\epsfbbfoundtrue\fi
\if@bbury\epsfbbfoundtrue\fi
\ifepsfbbfound\else\epsfgetbb{\@p@sfile}\fi
\ifepsfbbfound
\typeout{<\@p@sfilefinal>}%
\epsfig@gofer
\else
\@latexerr{ERROR - Cannot locate BoundingBox}\@whattodobb
\@p@@sbbllx{100bp}%
\@p@@sbblly{100bp}%
\@p@@sbburx{200bp}%
\@p@@sbbury{200bp}%
\count203=\@p@sbburx
\count204=\@p@sbbury
\advance\count203 by -\@p@sbbllx
\advance\count204 by -\@p@sbblly
\edef\@bbw{\number\count203}%
\edef\@bbh{\number\count204}%
\compute@sizes
\epsfig@@draft
\fi
}%
\def\psfig@method{%
\compute@bb
\ifepsfbbfound
\compute@sizes
\psfig@start
% Create the vbox to reserve the space for the figure%
\vbox to \@p@srheight sp{\hbox to \@p@srwidth
sp{\hss}\vss\psfig@end}%
\else
\epsfig@draft
\fi
}%
%
% draft figure, just reserve the space and print the
% path name.
\def\epsfig@draft{\compute@bb\compute@sizes\epsfig@@draft}%
%
\def\epsfig@@draft{%
\typeout{<(draft only) \@p@sfilefinal>}%
\if@draftbox
% Verbose draft: print file name in box
\hbox{{\fboxsep0pt\fbox{\vbox to \@p@srheight sp{%
\vss\hbox to \@p@srwidth sp{ \hss
\expandafter\Literally\@p@sfilefinal\@nil
\hss }\vss
}}}}%
\else
% Non-verbose draft
\vbox to \@p@srheight sp{%
\vss\hbox to \@p@srwidth sp{\hss}\vss}%
\fi
}%
\def\Literally#1\@nil{{\tt\graphic@verb{#1}}}
% default to dvips
\psfigdriver{dvips}%
% and to DOS file conventions
%%% \epsfigdos
\epsfigRestoreAt
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of epsfig-1.20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\input smallfonts.tex
%\input param.2
%\input fonts.6
%\input symbols.1
%\input links.1
%\input titles.8c
%\input macros.19
%\input epsf-2.7k
%\input epsfig-1.20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% letters in other fonts
\font\tenib=cmmib10
\def\bmV{{\hbox{\tenib V}}}
\def\ttU{{\hbox{\tt U}}}
\def\ttV{{\hbox{\tt V}}}
\def\ttW{{\hbox{\tt W}}}
%
\def\buB{{\hbox{\teneufm B}}}
\def\buC{{\hbox{\teneufm C}}}
\def\buZ{{\hbox{\teneufm Z}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% some more symbols
\let\UC\CC
\let\ss=\scriptstyle
\def\ssreal{{\ss\real}}
\def\transpose{{\sss\top}}
\def\ssR{{\sss R}}
\def\spa{{\sss\parallel}}
\def\spe{{\sss\perp}}
\def\rmC{{\rm C}}
\def\rmL{{\rm L}}
\def\rmP{{\rm P}}
\def\diag{{\rm diag}}
\def\span{{\rm span}}
\def\num{{\rm num}}
\def\bphi{\b{\hbox{$\phi$}}}
\def\bpsi{\b{\hbox{$\psi$}}}
\def\circle{{\Bbb S}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% references
\addref{FitzHughi}
\addref{FitzHughii}
\addref{Nagumo}
\addref{Evansi}
\addref{Evansii}
\addref{Evansiii}
\addref{Evansiv}
\addref{Hast}
\addref{Carp}
\addref{Lang}
\addref{EFF}
\addref{CKRTJones}
\addref{Yanagida}
\addref{Flores}
\addref{JKL}
\addref{RGG}
\addref{LVV}
\addref{GK}
\addref{AANQ}
\addref{AAK}
\addref{Kato}
\addref{Eigen}
\addref{HP}
\addref{Semi}
\addref{Trot}
\addref{Cher}
\addref{Voigt}
\addref{AKi}
\addref{AKii}
\addref{Ada}
\addref{Gnat}
\addref{MPFR}
\addref{IEEE}
\addref{Code}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\leftheadline{\sevenrm\hfil GIANNI ARIOLI and HANS KOCH\hfil}
\def\rightheadline{\sevenrm\hfil stable pulse solutions of the FHN equation\hfil}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
\cl{{\magtenbf Existence and stability of traveling pulse solutions}}
\cl{{\magtenbf of the FitzHugh-Nagumo equation}}
\bigskip
\cl{Gianni Arioli
\footnote{$^1$}
{{\sevenrm Department of Mathematics and MOX, Politecnico di Milano,
Piazza Leonardo da Vinci 32, 20133 Milano.}}
and Hans Koch
\footnote{$^2$}
{{\sevenrm Department of Mathematics, University of Texas at Austin,
Austin, TX 78712}}
}
\bigskip
\abstract
The FitzHugh-Nagumo model is a reaction-diffusion equation
describing the propagation of electrical signals
in nerve axons and other biological tissues.
One of the model parameters is the ratio $\epsilon$ of two time scales,
which takes values between $0.001$ and $0.1$ in typical simulations
of nerve axons.
Based on the existence of a (singular) limit at $\epsilon=0$,
it has been shown that the FitzHugh-Nagumo equation admits
a stable traveling pulse solution for sufficiently small $\epsilon>0$.
In this paper we prove the existence of such a solution for $\epsilon=0.01$.
We consider both circular axons and axons of infinite length.
Our method is non-perturbative and should apply
to a wide range of other parameter values.
\bigskip
\section Introduction and main results
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
The FitzHugh-Nagumo equation
$$
\partial_t w_1=\partial_x^2 w_1+f(w_1)-w_2\,,\qquad
\partial_t w_2=\epsilon(w_1-\gamma w_2)\,,
\equation(FHN)
$$
models the propagation of electric signals in nerve axons [\rFitzHughi,\rFitzHughii,\rNagumo].
Here $w_1(x,t)$ is the voltage inside the axon at position $x\in\real$ and time $t$.
The first equation in \equ(FHN) is Kirchhoff's law,
expressing that the change $\partial_x^2 w_1$ of the current $\partial_x w_1$ along the axon
is compensated by the currents passing through the cell membrane:
a capacitance based current $\partial_t w_1$
and a resistance based current $w_2-f(w_1)$.
The function $w_2$ describes a part of the trans-membrane current
that passes through slowly adapting ion channels.
The remaining part of the resistor is modeled by a simple cubic
$$
f(r)=r(r-a)(1-r)\,,\qquad 00$
depends on the type of system being considered.
For our investigation of FitzHugh-Nagumo equation we choose the values
$$
\textstyle
\epsilon={1\over 100}\,,\qquad
\gamma=5\,,\qquad
a={1\over 10}\,,
\equation(ChosenFHNParam)
$$
which produce realistic looking traveling waves in numerical simulations.
A traveling wave is a solution
of the form $w_1(x,t)=\phi_1(x-ct)$ and $w_2(x,t)=\phi_2(x-ct)$.
We are interested here only in traveling waves that
can be identified as a single localized pulse.
There appear to be exactly two values of the velocity $c$
for which such solutions exist,
one corresponding to a stable ``fast'' pulse
and the other to an unstable ``slow'' pulse.
Both have (singular) limits as $\epsilon\to 0$ that can be computed explicitly.
For $\epsilon>0$ sufficiently small,
it is possible to use perturbative methods
to prove the existence of the fast pulse [\rHast,\rCarp,\rLang,\rJKL].
This pulse was shown to be stable in [\rCKRTJones,\rYanagida].
The existence and instability of the slow pulse,
for sufficiently small $\epsilon>0$, was proved in [\rFlores].
Double pulse solutions, turning points, and bifurcations are described in [\rEFF,\rLVV,\rGK].
Further information and references can be found in [\rRGG].
The equation \equ(FHN) is usually considered for axons of infinite length.
In addition to this case, we also consider a circular axon of length $\ell=128$.
Our first result is the following.
Let $\circle_\ell=\real/(\ell\integer)$.
\claim Theorem(PMain)
The equation \equ(FHN) on $\circle_{\sss 128}\times\real$
with parameter values \equ(ChosenFHNParam)
has a traveling pulse solution with velocity $c=0.470336308\ldots$
Furthermore, this solution is real analytic and
exponentially stable.
By stability we mean nonlinear stability, as defined below.
A proof of this Theorem will be given in Section 4,
based in part on estimates that have been carried out by computer.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\vskip0.5cm
\hbox{\hskip1.5cm
\epsfig{file=wave.eps, height=1.80in, rheight=1.80in, width=4.4in}}
\vskip0.0cm
\centerline{\eightpoint {\bf Figure 1.}
Components $\phi_1$ (large) and $\phi_2$ (small) of the periodic pulse.}
\vskip0.5cm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
The equation for a traveling pulse solution with velocity $c$ is
$$
\phi_1''+c\phi_1'=-f(\phi_1)+\phi_2\,,\qquad
c\phi_2'=-\epsilon(\phi_1-\gamma\phi_2)\,.
\equation(FHNPhi)
$$
In the case of a pulse on $\real$,
one also imposes the conditions $\phi_j(\pm\infty)=0$.
As usual, a second order equation like \equ(FHNPhi)
can be written as a system of first order equations:
Using the auxiliary function $\phi_0=\phi_1'$, we have
$$
\phi'=X(\phi)\,,\qquad
\phi=\threevec{\phi_0}{\phi_1}{\phi_2}\,,\quad
X(\phi)=\threevec{-c\phi_0-f(\phi_1)+\phi_2}{\phi_0}
{-c^{-1}\epsilon(\phi_1-\gamma\phi_2)}\,.
\equation(FHNphii)
$$
This defines a dynamical system in $\real^3$.
For the value of $c$ given in \clm(PMain),
this dynamical system has a periodic orbit of length $128$.
Notice that the origin is an equilibrium point, since $X(0)=0$.
It is not hard to check that for every $c>0$,
the derivative $DX(0)$ has one real negative eigenvalue,
and two complex conjugate eigenvalues with positive real parts.
Thus, the origin has a stable manifold $\WW_c^s$ of dimension $1$
and an unstable manifold $\WW_c^u$ of dimension $2$.
We will show that there exists a value of $c$
for which these two manifolds intersect at some point
other than the origin.
(In fact $\WW_c^u\subset\WW_c^s$, since both manifolds
are invariant under the flow.)
To be more precise, we prove the following
\claim Theorem(HMain)
The equation \equ(FHN) on $\real\times\real$
with parameter values \equ(ChosenFHNParam)
has a traveling pulse solution with velocity $c=0.470336270\ldots$
Furthermore, this solution is real analytic,
decreases exponentially at infinity, and is exponentially stable.
A proof of this Theorem will be given in Section 4,
based in part on estimates that have been carried out by computer.
The stability proof involves estimates on the Evans function [\rEvansiv].
For the existence proof we follow the approach used in [\rAAK].
The model considered in [\rAAK] is a modification
of the FitzHugh-Nagumo model,
proposed and studied first in [\rAANQ],
which takes into account electro-mechanical effects
that are important in tissues such as the heart muscle.
Our choice of parameter values \equ(ChosenFHNParam)
is the same that was used in [\rAANQ] for numerical comparisons.
We use the standard notion of stability, described e.g.~in [\rEvansi].
It takes into account that the equation \equ(FHN)
is invariant under translations,
so that any translate of a solution is also a solution.
Let $\bphi=[\phi_1\;\phi_2]^\transpose$
be a traveling pulse solution of \equ(FHN) with velocity $c$.
To be more precise, $\bphi$ satisfies the equation \equ(FHNPhi),
and the asymptotic condition $\bphi(\pm\infty)=0$
in the case of a pulse on $\real$.
For any bounded solution $\b w=[w_1\;w_2]^\transpose$ of \equ(FHN) define
$$
\delta(\b w,t,s)=\sup_{j,x}\bigl|w_j(x,t)-\phi_j(x-s-ct)\bigr|\,.
\equation(deltawttau)
$$
The $\sup$ in this equation is taken over all $x\in\real$
(or $x\in\circle_\ell$ in the periodic case) and $j\in\{1,2\}$.
The pulse $\bphi$ is said to be {\sl exponentially stable}
if there exist constants $\alpha,b,C>0$
such that for $0\le\beta\le b$,
and for any solution $w$ that satisfies
$\delta(\b w,0,0)\le\beta$,
there exists $s\in[-C\beta,C\beta]$
such that $\delta(\b w,t,s)\le C\beta e^{-\alpha t}$
for all $t>0$.
Here, and in what follows, a solution $w$ of \equ(FHN)
is always assumed to be uniformly continuous
and to have uniformly continuous bounded derivatives
$\partial_xw_1$, $\partial_x^2w_1$ and $\partial_xw_2$.
The remaining part of the paper is organized as follows.
In Section 2 we consider the existence of the pulse solutions.
For the periodic pulse, the problem is reduced to solving
an appropriate fixed point equation in a space of real analytic periodic functions.
The homoclinic pulse is obtained via Taylor expansions
(after a suitable change of variables) at $y=\pm\infty$
whose terms can be computed order by order.
In Sections 3 and 4 we consider the stability of the pulse solutions.
As one would expect, the stability problem can be reduced
to proving that the generator $L_\phi$ of the linearized flow
has no eigenvalues in a half-plane.
But more importantly, we can exclude eigenvalues outside some small region $R$.
In the periodic case, the problem
is reduced via perturbation theory to estimates on matrices.
In the homoclinic case, we determine the number of eigenvalues in $R$
by estimating the Evans function along the boundary of $R$
and then applying the argument principle.
What remains to be proved at this point are four technical lemmas.
In Section 5 we show how this problem is reduced further,
to a point where the remaining steps can be mechanized
and carried out by a computer.
This includes a description of how the mechanical part is organized.
The complete details can be found in [\rCode].
\section Existence of pulse solutions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection Existence of a periodic pulse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Our goal here is to reduce the existence part of \clm(PMain)
to a suitable fixed point problem.
Let $\eta=\ell/(2\pi)$.
Substituting $\phi_1(y)=\varphi(y/\eta)$
and $\phi_2(y)=\psi(y/\eta)$
into the equation \equ(FHNPhi) we get
$$
\eta^{-2}\varphi''+c\eta^{-1}\varphi'=\psi-f(\varphi)\,,\qquad
c\eta^{-1}\psi'=\epsilon(\gamma\psi-\varphi)\,.
\equation(FHNphipsi)
$$
We need to find two $2\pi$-periodic functions
$\varphi$ and $\psi$ that satisfy \equ(FHNphipsi)
for some positive value of $c$.
Notice that $\psi-f(\varphi)$ and $\gamma\psi-\varphi$
must have average zero. Thus,
$$
\langle\gamma f(\varphi)-\varphi\rangle=0\,,
\equation(avgEqu)
$$
where $\langle\bdot\rangle$ denotes averaging.
As a first step we rewrite \equ(FHNphipsi)
as an equation for the function $\varphi$ alone.
Let $D^{-1}$ be the antiderivative operator
on the space of $2\pi$-periodic continuous functions with average zero.
Then $\psi_0=\psi-\langle\psi\rangle$ can be computed
from $\varphi$ as follows:
$$
\eqalign{
c\psi_0&=\epsilon\eta D^{-1}(\gamma\psi-\varphi)\cr
&=\epsilon\eta D^{-1}
\bigl(\gamma[\psi-f(\varphi)]+[\gamma f(\varphi)-\varphi]\bigr)\cr
&=\epsilon\gamma\eta D^{-1}[\psi-f(\varphi)]
+\epsilon\eta D^{-1}[\gamma f(\varphi)-\varphi]\cr
&=\epsilon\gamma[\eta^{-1}\varphi'+c\varphi_0]
+\epsilon\eta D^{-1}[\gamma f(\varphi)-\varphi]\,,\cr}
\equation(cpsio)
$$
where $\varphi_0=\varphi-\langle\varphi\rangle$.
Substituting this into the first identity in \equ(FHNphipsi) we have
$$
\eqalign{
\eta^{-2}\varphi''+c\eta^{-1}\varphi'
&=\langle\psi\rangle+\psi_0-f(\varphi)\cr
&=\langle\psi\rangle+c^{-1}\epsilon\gamma\eta^{-1}\varphi'+N_c(\varphi_0)\,,\cr}
\equation(NOne)
$$
where
$$
N(\varphi_0)=-f(\varphi)+\epsilon\gamma\varphi_0
+\epsilon c^{-1}\eta D^{-1}[\gamma f(\varphi)-\varphi]\,.
\equation(NDef)
$$
In writing $N(\varphi_0)$ instead of $N(\varphi)$,
we are assuming that the function $\varphi$ is determined
by its zero-average part $\varphi_0$ via the condition \equ(avgEqu).
This assumption will be verified later.
The equation \equ(NOne) can also be written as
$$
\varphi''+\kappa\varphi'=\eta^2\id_0N(\varphi_0)\,,\qquad
\kappa=\eta\bigl(c-c^{-1}\epsilon\gamma\bigr)\,,
\equation(NTwo)
$$
where $\id_0 h=h-\langle h\rangle$ denotes the zero-average
part of a continuous $2\pi$-periodic function.
Finally, applying
$(D^2+\kappa D)^{-1}=(D^2-\kappa^2\id)^{-1}(\id-\kappa D^{-1})$
to both sides of this equation, we obtain
the fixed point equation
$$
\varphi_0=\NN_c(\varphi_0)\,,\qquad
\NN_c(\varphi_0)=\eta^2\bigl(D^2-\kappa^2\id)^{-1}
\bigl(\id-\kappa D^{-1}\bigr)\id_0 N(\varphi_0)\,.
\equation(NNDef)
$$
We consider this equation in a space $\FF_0=\id_0\FF$ of real analytic functions.
To be more precise, given $\rho>0$, let $\SS_\rho$
be the strip in $\complex$ defined by $|\Im(x)|<\rho$.
Every $2\pi$-periodic analytic function on $\SS_\rho$
admits a Fourier series
$$
h(x)=\sum_{k=0}^\infty h_k\cos(kx)+\sum_{k=1}^\infty h_{-k}\sin(kx)\,.
\equation(FFcsSeries)
$$
Denote by $\FF$ the space of all real analytic
functions \equ(FFcsSeries) that have continuous
extensions to the closure of $\SS_\rho$ and a finite norm
$$
\|h\|=\sum_{k=-\infty}^\infty|h_{k}|\cosh(\rho k)\,.
\equation(csNorm)
$$
\demo Remark(RC)
As defined above, $\FF$ is a Banach space over $\real$.
When discussing eigenvectors of linear operators on $\FF$,
we will also need the corresponding space over $\complex$.
Since it should be clear from the context
which number field is being used, we will denote both spaces by $\FF$.
Since we are only interested in in real solutions to \equ(FHN),
the default field is $\real$.
The same applies to the spaces $\AA$, $\BB$, $\CC$, and $\VV$ considered later.
\medskip
Our goal is to solve the fixed point equation $\NN_c(\varphi_0)=\varphi_0$
via a Newton-type procedure.
However, there is an obvious obstruction that needs to be taken care of first.
Namely, $\NN_c$ commutes with translations $\TT_s: h\mapsto h(\bdot-s)$.
Thus, if $\varphi_0$ is a fixed point of $\NN_c$
then so is any translate $\TT_s\varphi_0$.
Differentiating the identity $\NN_c(\TT_s\varphi_0)=\TT_s\varphi_0$
with respect to $s$,
we see that $D\NN_c(\varphi_0)$ must have an eigenvalue $1$,
$$
D\NN_c(\varphi_0)\varphi_0'=\varphi_0'\,.
\equation(DNNeigenOne)
$$
We intend to eliminate this (simple) eigenvalue $1$
by projecting onto the orthogonal complement
of a function close to $\varphi_0'$.
The inner product used here is $Q(g,h)=\sum_k g_kh_k$.
Notice that $Q$ is invariant under translations,
and thus $Q(g,g')=0$ for all $g\in\FF$.
Assume that we have found numerically a Fourier polynomial
$p_0\in\FF_0$ that is an approximate fixed point of $\NN_c$
for some value $c_\num$ of $c$.
Let $p_1\in\FF_0$ be a Fourier polynomial close to a constant multiple of $p_0'$,
normalized in such a way that $Q(p_1,p_1)=1$.
Now define
$$
\NN_c'(g)=\proj\NN_c(g)\,,\qquad g\in\FF_0\,,
\equation(NNpDef)
$$
where $\proj$ is the projection operator on $\FF$
defined by $\proj g=g-Q(g,p_1)p_1$.
By assumption, $p_1$ is approximately $Q$-orthogonal to $p_0$.
Thus $p_0$ is an approximate fixed point of $\NN_c'$,
for values of $c$ close to $c_\num$.
Furthermore, we can expect $D\NN_c'(g)$ to have no eigenvalue $1$,
for $g$ near $p_0$ and $c$ near $c_\num$.
In particular, $\NN_c'$ can be expected to have a fixed point
near $p_0$, for every value of $c$ near $c_\num$.
The value of $c$ for which a fixed point $g_c$
of $\NN_c'$ is also a fixed point of $\NN_c$
is determined by the condition
$$
Q\bigl(\NN_c'(g_c),p_1\bigr)=0\,.
\equation(OrthCond)
$$
In order to solve the fixed point equation
$\NN_c'(g)=g$ we consider a quasi-Newton map
$$
\MM_c(h)=h+\NN_c'(p_0+Ah)-(p_0+Ah)\,,\qquad h\in\FF_0\,,
\equation(MMDef)
$$
with $A$ an approximation to $[\id-D\NN_c'(p_0)]^{-1}$.
Given $r>0$ and $h\in\FF_0$
we denote by $B_r(h)$ the open ball of radius $r$
in $\FF_0$, centered at $h$.
Let $\rho=\log\bigl(1+2^{-10}\bigr)$ and $\delta=2^{-60}$.
\claim Lemma(PFixContr)
There exist two Fourier polynomials $p_0,p_1$, an open interval $J$,
and two constants $c_0=0.4703363082\ldots$ and $R>0$,
such that the following holds.
For every function $g\in B_\ssR(p_0)$
there exists a unique real number $\bar g\in J$,
such that $\varphi=g+\bar g$ satisfies the condition \equ(avgEqu).
The resulting map $(c,g)\mapsto\NN_c(g)$
is differentiable on some open neighborhood of $I\times B_\ssR(p_0)$,
where $I=[c_0-\delta,c_0+\delta]$.
The function $c\mapsto Q(\NN_c'(g),p_1)$ changes sign on $I$,
for every function $g\in B_r(p_0)$.
Furthermore, there exists a continuous linear operator $A$ on $\FF_0$,
and positive constants $K,r,\eps$ satisfying $\eps+Kr0$ fixed but arbitrary, and
$$
\Phi^u(s)=\ell^u(s)+Z^u(s)\,,\qquad
s=(s_1,s_2)\,,
\equation(Phius)
$$
where $\ell^u(s)=s_1\ttV_0+s_2\bar\ttV_0$
and $Z^u(s)=\OO(|s|^{\sss 2})$.
Here, $\ttV_0$ and $\bar\ttV_0$ are eigenvectors of $DX(0)$
for the eigenvalues $\nu_0$ and $\bar\nu_0$, respectively.
The equation for $Z^u$ is analogous to the equation \equ(ZsFlow) for $Z^s$,
namely
$$
Z^u=\bigl[\partial_y-DX(0)\bigr]^{-1}B(\ell^u_1+Z^u_1)\,,\qquad
\partial_y=\nu_0s_1\partial_{s_1}+\bar\nu_0s_2\partial_{s_2}\,.
\equation(ZuFlow)
$$
Notice that the monomials $s\mapsto s_1^ks_2^m$ are
eigenfunctions of $\partial_y$.
Furthermore, the second component of $\ttV_0$ is nonzero
and thus can be chosen to be $1$, making $\ell^u_1(s)=s_1+s_2$.
Thus, the equation \equ(ZuFlow) can be solved order
by order in powers of $s_1$ and $s_2$, yielding a unique
formal power series solution for $Z^u$.
That is, each component $h=Z^u_j$ of $Z^u$ has a unique expansion
$$
h(s)=\sum_{k,m}h_{k,m}s_1^ks_2^m\,,
\equation(AATwoSeries)
$$
with $h_{k,m}=0$ for $k+m\le 1$.
Notice that \equ(ZuFlow) reduces by projection
to an equation for the component $Z^u_1$ alone.
We will prove that the solution $Z^u$ is real analytic
in a polydisk $\DD_\rho^2$ characterized by $|s_1|,|s_2|<\rho$.
The analysis is carried out in the space $\AA^2_\rho$
of all real analytic function $h$ on $\DD_\rho^2$ that extend continuously
to the closure of $\DD_\rho^2$, and which have a finite norm
$$
\|h\|_\rho=\sum_{k,m}\|h_{k,m}\|\rho^{k+m}\,.
\equation(AATwoNorm)
$$
To be more precise, our functions $h=Z^u_j$ also depends on the velocity parameter $c$.
The function in $\AA^2_\rho$ take values
in a space $\BB$ of function that are
real analytic in the disk $|c-c_0|<\varrho$.
The norm of a function $g: c\mapsto\sum_n g_n(c-c_0)^n$
in the space $\BB$ is given by $\|g\|=\sum_n|g_n|\varrho^n$.
This is the norm that appears in \equ(AATwoNorm)
for the coefficients $h_{k,m}$.
To emphasize the dependence on the velocity parameter $c$,
we will now include $c$ as an extra argument.
So $r\mapsto\phi^s(c,r)$ parametrizes the
local stable manifold $\WW_c^s$ of the origin,
and $s_1\mapsto\Phi^u(c,s_1,\bar s_1)$
is a parametrization of the local stable manifold $\WW_c^s$.
The two manifolds intersect if the difference
$$
\Upsilon(c,\sigma,\tau)=\Phi^u(c,\sigma+i\tau,\sigma-i\tau)-\phi^s(c,-43)
\equation(UpsilonDef)
$$
vanishes for some real values of $\sigma$ and $\tau$.
Let now $\rho=2^{-5}$, $\varrho=2^{-96}$, and $R=1$.
\claim Lemma(HFix)
For $c_0-\varrho-\alpha$,
except for a simple eigenvalue $0$.
The spectrum of $L_\phi$ will be discussed in the next section.
\subsection Reduction to linear stability
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
It is convenient to rewrite the FitzHugh-Nagumo equation
in moving coordinates $y=x-tc$.
Substituting $w_j(x,t)=u_j(x-ct,t)$ into \equ(FHN) yields the equation
$$
\partial_t\b u
=\twovec{\partial_y^2 u_1+c\partial_y u_1+f(u_1)-u_2}
{c\partial_y u_2+\epsilon[u_1-\gamma u_2]}\,,\qquad
\b u=\twovec{u_1}{u_2}\,.
\equation(FHNuVec)
$$
A stationary solution $u_j(y,t)=\phi_j(y)$ of this equation
corresponds to a moving pulse solution for the original equation \equ(FHN).
The definition of (exponential) stability for \equ(FHNuVec)
is analogous to the definition for the original equation,
and the two are manifestly equivalent.
The linearization of \equ(FHNuVec)
about such a stationary solution is
$$
\partial_t\b u=L_\phi\b u\,,
\equation(FHNlin)
$$
where
$$
L_\phi\b u=\twomat{\partial_y^2+c\partial_y+f'(\phi_1)}{-1}
{\epsilon}{c\partial_y-\epsilon\gamma}\b u\,,\qquad
\b u=\twovec{u_1}{u_2}\,.
\equation(LphiDef)
$$
The time-$t$ map $\b u(0)\mapsto\b u(t)$ will be denoted by $e^{tL_\phi}$.
Since the equation \equ(FHNuVec) is invariant under translations,
$\bphi'$ is a stationary solution of the equation \equ(FHNlin).
Notice that $\bphi'$ has the same regularity property as $\bphi$,
as can be seen e.g.~from equation \equ(FHNphii).
Similarly for the decay at infinity in the homoclinic case.
For a proper discussion of the equation \equ(LphiDef)
we need to introduce some functions spaces.
Let $\UC_n$ be the space of all bounded and uniformly continuous
functions $h:\circle\to\real^n$, equipped with the sup-norm
$\|\b v\|=\sup_{j,y}|v_j(y)|$.
Notice that orbits $s\mapsto\b v(\bdot-s)$ for the translation group
are continuous in this space.
This implies in particular that the $\rmC^\infty$ functions
with bounded derivatives are dense in $\UC_n$.
In what follows, the space $\UC_2$ will also be denoted by $\CC$.
See \dem(RC) concerning the complexification of $\CC$.
Let $\CC'$ to be the the set of all functions $\b v\in\CC$
with the property that the derivatives $v_1'$, $v_1''$, and $v_2'$
exist and belong to $\UC_1$.
We say that the stationary solution $\bphi'$ of the linearized
system \equ(LphiDef) is {\sl exponentially stable}
if there exists a continuous linear functional
$p:\CC\to\real$, and two constants $C,\omega>0$, such that
$\bigl\|e^{tL_\phi}\b v-p(\b v)\bphi'\bigr\|\le Ce^{-t\omega}\|\b v\|$
for all $\b v\in\CC'$ and all $t\ge 0$.
\medskip
Assume now exponential stability of $\bphi'$ for the linearized system.
This stability condition implies in particular that $e^{tL_\phi}$
extend to a bounded linear operator on $\CC$.
Assuming also that $t\mapsto e^{tL_\phi}$ is a semigroup,
one easily finds that $p(\bphi')=1$, and that
$p\bigl(e^{tL_\phi}\b v\bigr)=p(\b v)$ for all $v\in\CC$
and all $t\ge 0$. Thus $P_\spa\b v=p(\b v)\bphi'$ defines a projection onto
$\span(\bphi')$ that is invariant under the linearized flow.
The following lemma was proved in [\rEvansi] for pulse solutions on the real line.
Instead of complementing this with a proof for the circle only,
we will give a proof that covers both cases.
\claim Lemma(LinearNonlinear)
Let $\bphi\in\CC'$ be a traveling pulse.
That is, $\bphi$ satisfies the equation \equ(FHNPhi)
and vanishes at $\pm\infty$.
If $\bphi'$ is exponentially stable for
the linear system \equ(LphiDef)
then the traveling pulse $\bphi$ is exponentially stable as well.
\proof
A curve $\b u=\b u(t)$ in $\CC'$ is a solution of \equ(FHNuVec)
if and only if $\b v=\b u-\bphi$ satisfies the equation
$$
\partial_t\b v=L_\phi\b v+Q(v_1)\,,\qquad
Q(v_1)=\twovec{f(\phi_1+v_1)-f(\phi_1)-f'(\phi_1)v_1}{0}\,.
\equation(LQSplit)
$$
The corresponding integral equation
with fixed initial condition at time $\tau\ge 0$ is
$$
\b v(\tau+t)
=e^{tL_\phi}\b v(\tau)+\!\int_0^t\! e^{(t-s)L_\phi}Q(v_1(\tau+s))\,ds\,,
\qquad t\ge 0.
\equation(DFOne)
$$
Here we have used that the orbits $t\mapsto e^{tL_\phi}\b c$
are continuous for every $\b c\in\CC$.
This follows from standard results on semigroups;
see also the next subsection.
Define
$$
\b w=\b v+\sigma\bphi'=\b u-\bphi+\sigma\bphi'\,,\qquad
\sigma=-p(\b v(\tau))\,.
\equation(sigmaDef)
$$
Here $\bphi$ and $\bphi'$ stand for the
constant curves $t\mapsto\bphi$ and $t\mapsto\bphi'$,
respectively.
Then the equation \equ(DFOne) can be written as
$$
\b w(\tau+t)
=e^{tL_\phi}P_\spe\b w(\tau)
+\!\int_0^t\!e^{(t-s)L_\phi}Q\bigl(w_1(\tau+s)-\sigma\phi_1'\bigr)\,ds\,,
\equation(DFTwo)
$$
where $P_\spe=\id-P_\spa$.
This equation can be regarded as a fixed point problem
$\b w=\NN(\b w)$
on the space of continuous $\CC$-valued functions
on a given interval $[\tau,\tau+T]$,
equipped with the norm $\|\b w\|=\sup_{0\le t\le T}\|\b w(\tau+t)\|$.
To be more precise, $\NN$ acts on the affine subspace
where $\b w(\tau)$ is fixed.
Let $\b w_0(\tau+t)=e^{tL_\phi}P_\spe\b w(\tau)$.
Notice that $Q$ is a polynomial with a zero of order $2$
at the origin.
Thus, it is clear that there exists $C_0>0$
such that if $\|\b w(\tau)\|<\delta$ and $|\sigma|<\delta$,
with $\delta>0$ sufficiently small,
then $\NN$ is a contraction on the ball
$\|\b w-\b w_0\|\le C_0\delta$.
Assume now that the solution $\bphi'$ of the linearized
system \equ(LphiDef) is exponentially stable with exponent $\omega>0$.
Then the integral in \equ(DFTwo)
grows at most linearly with $t$.
Thus, the above constant $C_0$ can be chosen
to be independent of $T$,
provided that $T\le\delta^{-1/2}$.
Let $0<\omega'<\omega$.
Assume that
$$
\|\b u(\tau)-\bphi\|\le\eps\,.
\equation(wBoundOne)
$$
Then $|\sigma|\le\|p\|\eps$
and $\|\b w(\tau)\|\le\|P_\spe\|\eps$.
Thus, if $\eps>0$ is sufficiently small, then
the solution $\b w$ of the equation \equ(DFTwo)
satisfies a bound
$$
\|\b w(\tau+t)\|\le C_1\eps\,,\qquad
0\le t\le C_2\eps^{-1/2}\,.
\equation(wBoundTwo)
$$
Here, and in what follows, $C_1,C_2,\ldots$
are universal positive constants that depend
only on the model parameters \equ(ChosenFHNParam),
the solution $\bphi$, the constant
in the linear stability condition, and on $\omega'$.
Using the bound \equ(wBoundTwo) to estimate
the right hand side of \equ(DFTwo), we find that
$$
\|\b w(\tau+t)\|
\le C_3e^{-t\omega}\eps+C_4t\eps^2
\le C_5 e^{-t\omega'}
\bigl[e^{-t(\omega-\omega')}\!+t\eps e^{t\omega'}\bigr]\eps
\le e^{-t\omega'}\eps\,,
\equation(wBoundThree)
$$
for $0<\eps\le C_6$ and $C_7\le t\le C_8|\log\eps|$.
This can now be used to estimate the difference
$$
\b u-\TT_\sigma \phi
=\b w-\bigl[\,\TT_\sigma\bphi-\bphi+\sigma\bphi'\,\bigr]\,,
\equation(ufromw)
$$
where $\TT_\sigma$ denotes translation by $\sigma$.
Since the term in square brackets
is bounded in norm by $C_9|\sigma|^2$,
we obtain from \equ(wBoundThree) a bound
$$
\bigl\|\b u(\tau+t)-\TT_\sigma\bphi\bigr\|
\le e^{-t\omega'}\eps\,,
\equation(wBoundFour)
$$
for $\eps\le C_{10}$ and $C_{11}\le t\le C_{12}|\log\eps|$.
This procedure can now be iterated:
Choose $k>C_{11}$.
At step $0$
consider the solution $\b u$ with initial condition
$\b u(0)$ satisfying $\|\b u(0)-\bphi\|<\exp(-2k/C_{12})$.
At steps $n=0,1,2,\ldots$ we use $\tau=nk$, denote
$\b u$ and $\eps$ by $\b u_n$ and $\eps_n$, respectively,
and define $\sigma_{n+1}=p(\bphi-u_n(nk))$.
The initial condition at step $n\ge 1$
is given by $\b u_n(nk)=\TT_{\sigma_n}\b u_{n-1}(nk)$.
By \equ(wBoundFour), and by the translation invariance
of the norm in $\CC$, we have
$$
\eps_n=\|\b u_n(nk)-\bphi\|
=\|\b u_{n-1}(nk)-\TT_{\sigma_n}\bphi\|
\le\eps_{n-1}e^{-k\omega'}\,.
\equation(epsnBound)
$$
Thus the procedure can be iterated ad infinitum.
The values $\eps_n$ and $\sigma_n$ converge to $0$
at least geometrically with ratio $e^{-k\omega'}$.
In particular, if $s=\sum_{j\ge 1}\sigma_j$ then
$$
|s|\le C_{13}\eps_0\,,\qquad
|s_n-s|\le C_{14}\eps_0 e^{-nk\omega'}\,,\qquad
s_n=\sum_{j=1}^n\sigma_j\,.
\equation(snBound)
$$
By the translation invariance
of the equation \equ(FHNuVec) we have
$\TT_{-\sigma_n}\b u_n(nk+t)=\b u_{n-1}(nk+t)$ for
all $n\ge 1$ and for $0\le t\le k$.
Thus, each of the functions $\TT_{-s_n}\b u_n$ extends
the original solution $\b u=\b u_0$, and
$$
\|\b u(t)-\TT_{s_n}\bphi\|\le\eps_0e^{-t\omega'}\,,\qquad
nk\le t\le(n+1)k\,,
\equation(utsnBound)
$$
for $n\ge 1$.
For $n=0$ the same holds by \equ(wBoundTwo)
with an extra factor $C_{15}\ge 1$.
Combining this inequality with \equ(snBound) yields the bound
$$
\|\b u(t)-\TT_s\bphi\|\le C_{15}\|\b u(0)-\bphi\|e^{-t\omega'}\,,
\qquad t\ge 0\,.
$$
This completes the proof of \clm(LinearNonlinear).
\qed
\subsection Reduction to a problem about eigenvalues
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
The problem considered here is a common one.
The sequence of steps in this subsection
follows roughly those in [\rEvansii,\rEvansiii].
But we need to cover both the periodic and the homoclinic case,
and our function spaces are not exactly the same as those used in [\rEvansii,\rEvansiii].
Consider the linear operator $L_\phi:\CC'\to\CC$
defined by equation \equ(LphiDef).
It is convenient to split
$$
L_\phi=L_0+F\,,
\equation(LphiSplit)
$$
where
$$
L_0=\twomat{D^2+cD-\theta}{-1}{\epsilon}{cD-\epsilon\gamma}\,,\qquad
F=\twomat{f'(\phi_1)+\theta}{0}{0}{0}\,,
\equation(LoFDef)
$$
and where $\theta=-f'(0)$ unless specified otherwise.
Here we have replaced $\partial_y$ by $D$,
since we are now considering functions of one variable only.
And $f'(\phi_1)+\theta$ stands for the multiplication operator
$v_1\mapsto[f'(\phi_1)+\theta]v_1$.
Similarly for the other scalar entries in $L_0$.
Clearly $L_0:\CC'\to\CC$ is closed,
so $L_\phi$ is closed as well, since $F$ is bounded.
\claim Proposition(LoProp)
The operator $L_0$ generates a $\rmC^0$ (strongly continuous)
semigroup on $\CC$
that satisfies $\bigl\|e^{tL_0}\bigr\|\le Ce^{-t\epsilon\gamma}$
for some $C>0$ and all $t\ge 0$.
\proof
Consider the decomposition $L_0=A_2+A_1+A_0+B$, where
$$
A_2=\twomat{D^2}{0}{0}{0},\;\;
A_1=\twomat{cD}{0}{0}{cD},\;\;
A_0=\twomat{-\theta}{0}{0}{-\epsilon\gamma},\;\;
B=\twomat{0}{-1}{\epsilon}{0}.
\equation(LoDecomp)
$$
The operators $A_1$ and $A_2$ (with obvious domains)
generate the translation group and the heat flow
(in the first component), respectively.
Both are easily seen to be $\rmC^0$ contraction semigroups on $\CC$.
Given that these two semigroups commute, it follows
that their product defines a $\rmC^0$ contraction semigroup
whose generator is $H=A_2+A_1$.
The same holds if we change the norm on $\CC$
to the equivalent norm
$\|\b v\|'=\sup_y\bigl(\epsilon^{1/2}|v_1(y)|^2+\epsilon^{-1/2}|v_2(y)|^2\bigr)^{1/2}$.
For this new norm, $B$ generates a uniformly continuous
group of rotations that are isometries.
Since $B$ is bounded, $H+B$ generates a $\rmC^0$ semigroup as well [\rSemi].
In fact, this is again a contraction semigroup,
as one can see e.g.~from the Trotter product formula
$e^{t(H+B)}=\lim_n\bigl(e^{tH/n}e^{tB/n}\bigr)^n$,
which holds in the strong sense [\rTrot,\rCher].
Using that $\theta>\epsilon\gamma$
for our choice of parameters \equ(ChosenFHNParam),
we have $\|e^{tA_0}\b v\|'\le e^{-t\epsilon\gamma}\|\b v\|'$
for all $\b v\in\CC$ and all $t\ge 0$.
The assertion now follows by applying
Trotter's formula to the sum $L_0=(H+B)+A_0$.
\qed
\claim Proposition(FRelCompact)
$F$ is compact relative to $L_0$.
\proof
In the periodic case where $\circle$ is compact,
the assertion follows e.g.~from the fact that $(D^2+cD-2c^2)^{-1}$
is a compact convolution operator on $\rmC^0(\circle)$.
Consider now the case $\circle=\real$.
Given $w\in\CC$ define $W=\diag(w,0)$.
Notice that $W:\CC\to\CC$ is bounded in norm by $\sup_y|w(y)|$.
Thus, since $f'(\phi_1(y))+\theta\to 0$ as $|y|\to 0$,
we can find $w\in\CC'$ with compact support,
such that $\|W-F\|<\eps$, for any given $\eps>0$.
Given that the compact operators on $\CC$
constitute a closed subspace of $\buB(\CC)$,
it suffices to prove that any such $W$ is compact relative to $L_0$.
But this follows from the fact that
the composition of $(D^2+cD-2c^2)^{-1}$ with $h\mapsto wh$ is compact
as an operator on $\rmC^0(\circle)$.
\qed
\claim Proposition(Semi)
Let $t\mapsto e^{tA}$ be a $\rmC^0$ semigroup on a Banach space $X$.
Let $B$ and $F$ be bounded linear operators on $X$. Then
$A+B$ generates a $\rmC^0$ semigroup.
If $Fe^{tA}$ is compact for all $t>0$, then so are $Fe^{t(A+B)}$
and $e^{t(A+F)}-e^{tA}$.
\proof
The fact that the perturbation of $A$ by a bounded operator $B$
generates a $\rmC^0$ semigroup is standard [\rSemi].
Similarly for the identity
$$
Me^{t(A+B)}=Me^{tA}+\int_0^t Me^{(t-s)A}Be^{s(A+B)}\,ds\,,\qquad t>0\,,
\equation(SemiOne)
$$
where $M$ can be any bounded linear operator on $X$.
The integral in this identity is to be understood in the sense
of equation (3.20) below. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FORWARD REFERENCE!
The compactness properties claimed above are a consequence
of the following result [\rVoigt, Theorem 1.3]:
Let $(\Omega,\Sigma,\mu)$ be a complete positive finite measure space.
Let $U$ be a bounded function from $\Omega$ to $\BB(X)$,
such that $s\mapsto U(s)x$ is measurable for every $x\in X$.
If $U(s)$ is compact for every $s\in\Omega$
then so is $\int_\Omega U(s)\,d\mu(s)$, where by definition,
$$
\left[\;\int_S U(s)\,d\mu(s)\right]x=\int_S\bigl[U(s)x\bigr]\,d\mu(s)\,.
\equation(SemiTwo)
$$
Applying this theorem to the integral in \equ(SemiOne),
with $M=F$, yields the compactness of $Fe^{t(A+B)}$ for $t>0$.
Applying it with $M=\id$, and with $B$ replaced by $F$,
yields the compactness of $e^{t(A+F)}-e^{tA}$ for $t\ge 0$.
Here $\mu$ is Lebesgue measure on $\Omega=(0,t)$,
and we have used the fact that the semigroups involved are strongly continuous.
\qed
Given $\alpha>0$, denote by $H_\alpha$ the half-plane in $\complex$
defined by $\Re(z)>-\alpha$.
\claim Proposition(ContrSemi)
Let $0<\alpha\le\epsilon\gamma$.
Assume that $L_\phi$ has no spectrum in $H_\alpha$
except for a simple eigenvalue $0$.
Denote by $P_\spe$ the spectral projection
associated with the spectrum of $L_\phi$ in $\complex\setminus\{0\}$.
Then for every $\omega<\alpha$ there exists a constant $C_\omega>0$ such that
$\bigl\|e^{tL_\phi}P_\spe\bigr\|\le C_\omega e^{-t\omega}$ for all $t\ge 0$.
\proof
Consider the decomposition $L_0=A+B$ and
$A=A_2+A_1+A_0$ as defined by \equ(LoDecomp).
Approximating $F$ by localized operators as in the proof of \clm(FRelCompact),
we see that $Fe^{tA}$ is compact for all $t>0$.
Thus $Fe^{tL_0}$ is compact for all $t>0$ by \clm(Semi).
Applying \clm(Semi) again, with $L_0$ in place of $A$,
shows that $e^{tL_\phi}-e^{tL_0}$ is compact for all $t>0$.
By \clm(LoProp) the operator $e^{tL_0}$ has no spectrum
outside the disk $|z|\le e^{-\epsilon\gamma}$.
Thus, the spectrum of $e^{tL_\phi}$ outside this disk
consists of isolated eigenvalues only [\rEigen].
Let $e^{\lambda}$ be an eigenvalue of $e^{tL_\phi}$
with $\Re(\lambda)>-\alpha$.
The goal is to show that $\lambda=0$.
Let $L=L_\phi-\lambda\id$.
Then $e^L$ has an eigenvector $\b v$ with eigenvalue $1$.
Since $e^{tL}\b v=\b v$ whenever $t$ is a positive integer,
the orbit of $\b v$ under the flow for $L$ is either
a point or an invariant circle.
In either case, $L$ has an eigenvalue on the imaginary axis.
By our assumption on the spectrum of $L_\phi$,
this implies that $\Re(\lambda)=0$.
Thus the orbit of $\b v$ under the flow for $L_\phi$ is either
a point or an invariant circle.
The circle is excluded, since $0$ is the only eigenvalue of $L_\phi$
on the imaginary axis. Thus $\lambda=0$.
Let $P$ be the spectral projection for $e^{L_\phi}$
associated with the eigenvalue $1$.
Given that the eigenvalue $0$ of $L_\phi$ is simple,
the Laplace transform of $t\mapsto e^{tL_\phi}P$
has a pole of order $1$ at the origin.
Thus $P$ has rank $1$, implying that $P=\id-P_\spe$.
Let $0\le\omega<\alpha$.
Since the spectral radius of $e^{L_\phi}P_\spe$ is
bounded above by $e^{-\alpha}$, we have
$\bigl\|e^{nL_\phi}P_\spe\bigr\|^{1/n}\le e^{-\omega}$
for $n\in\natural$ sufficiently large,
and thus $\bigl\|e^{tL_\phi}P_\spe\bigr\|\le C_\omega e^{-t\omega}$
for some $C_\omega>0$ and all $t\ge 0$.
\qed
\section Spectral properties
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection Bounds on the eigenvalues
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
In this subsection we consider eigenvalues of $L_0$ and $L_\phi$
with eigenfunctions that are square-integrable.
Denote by $\HH$ the Hilbert space of all
$\complex^2$-valued functions on $\circle$
whose components are square-integrable,
equipped with the inner product and norm
$$
\langle u,v\rangle=\sum_{j=1}^2\int u_j(y)\ov{v_j(y)}\,dy\,,
\qquad \|u\|=\langle u,u\rangle^{1/2}\,.
\equation(iProd) %% trademark
$$
Let $\HH'$ be the subspace of all functions $u\in\HH$
that have square-integrable derivatives $u_1'$, $u_1''$, and $u_2'$.
Clearly $\HH'$ is dense in $\HH$.
Moreover, $L_0:\HH'\to\HH$ is closed and $F=L_\phi-L_0$ is bounded.
Thus $L_\phi:\HH'\to\HH$ is closed as well.
\claim Proposition(ReEigenBound)
If $\lambda$ is an eigenvalue of $L_\phi:\HH'\to\HH$ then
$$
\Re(\lambda)\le\Lambda\,,\qquad
\Lambda=\sup_r f'(r)=\textstyle{91\over 300}\,.
\equation(fpMax)
$$
\proof
To simplify notation we consider a scaling
$S:[u_1,u_2]^\transpose\mapsto[\epsilon^{-1/4}u_1,\epsilon^{1/4}u_2]^\transpose$.
Then $L=S^{-1}L_\phi S$ can be written as
$$
L=L^s+L^a,\quad
L^s=\twomat{D^2+f'(\phi_1)}{0}{0}{-\epsilon\gamma}\,,\quad
L^a=\twomat{cD}{-\sqrt{\epsilon}}
{\sqrt{\epsilon}}{cD}\,.
\equation(REBOne)
$$
Of course the spectra of $L_\phi$ and $L$ are the same.
Notice that $L^s$ is symmetric, and $L^s\le\Lambda$
in the sense of quadratic forms.
And the operator $L^a$ is antisymmetric.
Thus, if $Lu=\lambda u$ with $\|u\|_2=1$, then
$$
\Re(\lambda)=\thalf\langle Lu,u\rangle+\thalf\langle u,Lu\rangle
=\langle L^s u,u\rangle\le\langle\Lambda u,u\rangle=\Lambda\,,
\equation(REBOne)
$$
as claimed.
\qed
\claim Proposition(ImEigenBound)
For every $\delta>0$ there exists $\omega>0$
such that the following holds.
If $\lambda$ is any eigenvalue of $L_\phi:\HH'\to\HH$,
then either $\Re(\lambda)<-\omega$ or else
$$
\bigl|\Im(\lambda)\bigr|
\le\sqrt{c^2+\gamma^{-1}}\,\Lambda^{1/2}+\delta\,.
\equation(ImEigenBound)
$$
\proof
Consider the operator $L$ defined in \equ(REBOne),
which has the same eigenvalues as $L_\phi$.
Let $u$ be an eigenvector of $L$ with eigenvalue $\lambda$.
Writing just the first component of the identity
$(L-\lambda)u=0$, we have
$$
\bigl[D^2+f'(\phi_1)+cD-\lambda\bigr]u_1
-\sqrt{\epsilon}u_2=0\,.
\equation(LLEigenOne)
$$
We may assume that $u_1$ is nonzero.
Taking the inner product of each side with $u_1$
in this equation, we obtain
$$
\bigl\langle\bigl[D^2+f'(\phi_1)+cD-\lambda\id\bigr]u_1,u_1\bigr\rangle
=\sqrt{\epsilon}\langle u_2,u_1\rangle\,.
\equation(LLEigenTwo)
$$
Taking the imaginary part on both sides yields
$$
c\,\Im\langle Du_1,u_1\rangle
-\Im(\lambda)\|u_1\|^2=\sqrt{\epsilon}\,\Im\langle u_2,u_1\rangle\,.
\equation(LLEigenThree)
$$
Here we have used that
$\langle D^2u_1,u_1\rangle=-\langle Du_1,Du_1\rangle$ is real.
Thus,
$$
\bigl|\Im(\lambda)\bigr|\|u_1\|^2
\le c\|u_1\|\|D u_1\|+\sqrt{\epsilon}\|u_1\|\|u_2\|\,.
\equation(ImlambdaOne)
$$
In addition we have
$$
\eqalign{
\Re(\lambda)\|u\|^2
&=\langle L^s u,u\rangle
=\int_\circle\bigl[\bar u_1D^2 u_1+\bar u_1 f'(\phi_1)u_1-\epsilon\gamma\bar u_2 u_2\bigr]\cr
&\le-\|D u_1\|^2+\Lambda\|u_1\|^2-\epsilon\gamma\|u_2\|^2\,.\cr}
\equation(RelambdaOne)
$$
Assume now that $\Re(\lambda)\ge-\omega$
with $0\le\omega<\epsilon\gamma$.
Then from \equ(RelambdaOne) we obtain
$$
\|D u_1\|^2+\epsilon\gamma\|u_2\|^2\le\Lambda\|u_1\|^2+\omega\|u\|^2\,.
\equation(RelambdaTwo)
$$
To simplify notation, let us normalize $\|u_1\|=1$.
Then \equ(RelambdaTwo) becomes
$$
\|D u_1\|^2+\bigl(\sqrt{\epsilon\gamma-\omega}\,\|u_2\|\bigr)^2
\le\Lambda+\omega\,.
\equation(RelambdaThree)
$$
And the inequality \equ(ImlambdaOne) can be written as
$$
\bigl|\Im(\lambda)\bigr|
\le c\|D u_1\|+\sqrt{\epsilon}\|u_2\|
=\twovec{c}{(\gamma-\omega/\epsilon)^{-1/2}}^\transpose
\twovec{\|D u_1\|\phantom{\bigm|}}{\sqrt{\epsilon\gamma-\omega}\,\|u_2\|}\,.
\equation(ImlambdaTwo)
$$
Applying the Cauchy-Schwarz inequality in $\real^2$
to the product on the right hand side,
and using \equ(RelambdaThree), yields the bound
$$
\bigl|\Im(\lambda)\bigr|
\le\sqrt{c^2+(\gamma-\omega/\epsilon)^{-1}}\,(\Lambda+\omega)^{1/2}\,.
\equation(ImlambdaThree)
$$
Given that the right hand side depends continuously on $\omega$
for $0\le\omega<\epsilon\gamma$, the assertion follows.
\qed
\demo Remark(IEBGen)
The operator $Q: u_1\mapsto f'(\phi_1)u_1$
that appears in the definition of \equ(LphiDef) of $L_\phi$
is symmetric on $\rmL^2$ and bounded above by $\Lambda$.
This is the only property of $Q$ that was used
in the proof of \clm(ImEigenBound).
Thus, the bound \equ(ImEigenBound) remains valid
if we replace $Q$ by $sQ+(1-s)PQP$,
where $P$ is any orthogonal projection on $\rmL^2$
and $0\le s\le 1$.
This fact will be used later.
\demo Remark(IEBVal)
Using the bounds on $c$ given in \clm(PFixContr) and \clm(HFix),
it is easy to check that
$$
\sqrt{c^2+\gamma^{-1}}\,\Lambda^{1/2}<\Theta\defeq 0.35745\,.
\equation(IEBVal)
$$
\medskip
Next consider the operator $L_0$ defined in \equ(LoFDef),
with $\theta\ge 0$ to be specified later.
Given that the operator $L_0$ commutes with translations,
it can be diagonalized using the Fourier transform $\FF:\HH\to\HH$.
For $\b v\in\HH'$ we have $(\FF L_0\b v)(p)=\wt L_0(p)(\FF\b v)(p)$,
with
$$
\wt L_0(p)=\twomat{-p^2-\theta}{-1}
{\epsilon}{-\epsilon\gamma}+icp\,\id\,,
\equation(wtLop)
$$
where $p\in\real$ in the homoclinic case $\circle=\real$,
and $p\in{2\pi\over\ell}\integer$ in the periodic case
$\circle=\circle_\ell$.
The eigenvalues of $\wt L_0(p)$ are
$$
\eqalign{
\lambda^{-}(p)&=-p^2+icp-\theta-R(p^2)\,,\cr
\lambda^{+}(p)&=icp-\epsilon\gamma+R(p^2)\,,\cr}
\equation(LoEigen)
$$
where
$$
R(p^2)=\half\Bigl[
\sqrt{(p^2+\theta-\epsilon\gamma)^2-4\epsilon}
-(p^2+\theta-\epsilon\gamma)\,\Bigr]\,.
\equation(RppDef)
$$
Define
$$
J(p^2)=-p^2-\theta-\epsilon\gamma-R(p^2)\,. %% m_k
\equation(JppDef)
$$
\medskip\noindent
{\bf Assumption}.
Here we assume that $\theta\ge 0$ is chosen sufficiently large,
such that the argument of the square root in \equ(RppDef) is nonnegative,
and such that $J(p^2)^2>\epsilon$.
\medskip\noindent
Then the following two matrices are well defined and are inverses of each other:
$$
\wt M_0(p)^{\pm 1}
=\Bigl(1-\epsilon J(p^2)^{-2}\Bigr)^{-1/2}
\twomat{1}{\pm J(p^2)^{-1}}
{\pm\epsilon J(p^2)^{-1}}{1}\,.
\equation(MopDef)
$$
In fact, the column vectors of $\wt M_0(p)$
are the eigenvectors of $\wt L_0(p)$.
Thus
$$
\wt M_0(p)^{-1}\wt L_0(p)\wt M_0(p)
=\twomat{\lambda^{-}(p)}{0}{0}{\lambda^{+}(p)}\,.
\equation(LopDiag)
$$
The corresponding diagonalization of $L_0$ is
$$
M_0^{-1}L_0M_0=
\twomat{D^2+cD-\theta-R(-D^2)}{0}{0}
{cD-\epsilon\gamma+R(-D^2)}\,.
\equation(LoDiag)
$$
Notice that $R(-D^2)$ is bounded,
since $R(p^2)=\OO(p^{-2})$ for large $|p|$.
In the periodic case $\circle=\circle_\ell$,
the above shows that $L_0:\HH'\to\HH$ has only discrete spectrum,
and that the resolvents of $L_0$ are compact.
\subsection Eigenvalues for the periodic pulse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
First we show that every eigenvalue of $L_\phi$
has an analytic eigenvector.
For convenience we perform the same scaling
as in Subsection 2.1 to change the periodicity from $\ell$ to $2\pi$,
but the various functions and operators
will not be renamed to indicate the scaling.
In particular, $\CC$ is now a space of $2\pi$-periodic functions.
And the rescaled operator $L_\phi=L_0+F$ is given by
$$
L_0=\twomat{c_2D^2+c_1D-\theta}{-1}{\epsilon}{c_1D-\epsilon\gamma}\,,
\qquad F=\twomat{f'(\phi_1)+\theta}{0}{0}{0}\,,
\equation(LoRescaled)
$$
with $c_1=c\eta^{-1}$ and $c_2=\eta^{-2}$, where $\eta=\ell/(2\pi)$.
Of course the spectrum of $L_0$ and of $L_\phi$
are not affected by this change of variables.
Denote by $\VV$ the space of all $2\pi$-periodic
functions $\b v: \SS_\rho\to\real^2$
whose components $v_1$ and $v_2$ belong to the space $\FF$
defined after \equ(FFcsSeries).
We equip $\VV$ with the norm $\|\b v\|=\max\{\|v_1\|,\|v_2\|\}$.
See \dem(RC) concerning the complexification of $\VV$.
Let $\VV'$ be the set of functions $\b v\in\VV$
with the property that $v_1'$, $v_1''$, and $v_2'$ belong to $\FF$.
Clearly the operator $L_0:\VV'\to\VV$ is closed.
Furthermore, $F$ is a bounded linear operator on $\VV$,
due to the fact that $\FF$ is a Banach algebra containing $\phi_1$.
Thus, $L_\phi:\VV'\to\VV$ is closed as well.
\claim Proposition(CCAAEigen)
$L_\phi:\CC'\to\CC$ and $L_\phi:\VV'\to\VV$ have the same eigenvectors.
\proof
The following applies to both $X=\HH$ or $X=\VV$.
As the computations in the preceding subsection show,
$L_0: X'\to X$ has a set of analytic eigenfunctions whose span is dense in $X$.
The eigenvalues of $L_0$ have finite multiplicities
and accumulate only at infinity.
The same is true for the eigenvalues of $L_\phi: X'\to X$,
since $F$ is a bounded linear operator on $X$.
Denote the operators $L_\phi:\HH'\to\HH$ and $L_\phi:\VV'\to\VV$
by $L_\phi^{\sss\HH}$ and $L_\phi^{\sss\VV}$, respectively.
Then the resolvents $z\mapsto(z\id-L_\phi^{\sss\HH})^{-1}$
and $z\mapsto(z\id-L_\phi^{\sss\VV})^{-1}$ are both analytic
outside some discrete set $Z$.
Furthermore, the restriction of $(z\id-L_\phi^{\sss\HH})^{-1}$
to $\VV$ agrees with $(z\id-L_\phi^{\sss\VV})^{-1}$,
since $z\id-L_\phi^{\sss\HH}$ is one-to-one on $\HH'\supset\VV'$
for $z\in Z$.
This carries over to the spectral projections for points in $Z$
by contour integration.
Thus, since $\VV$ is dense in $\HH$, the corresponding spectral subspaces agree.
The claim now follows from the fact that $\VV\subset\CC\subset\HH$.
\qed
%% p=[2*Pi/ell]k
%% y=[ell/(2*Pi)]x
\medskip
Our goal is to prove that $L_\phi:\VV'\to\VV$ has no nonzero eigenvalues
in a half-plane $\Re(\lambda)>-\alpha$, for some $\alpha>0$.
By \clm(ImEigenBound) and \dem(IEBVal), it suffices to prove
that every nonzero eigenvalue $\lambda$ of $L_\phi:\VV'\to\VV$
with $|\Im(\lambda)|\le\Theta$ has a negative real part.
We approach this problem using perturbation theory.
The basic idea is to split $F$ into a low-mode
approximation and a high-mode remainder.
This is best described in terms of the Fourier series
$$
\b v(x)=\sum_{k=0}^\infty\b v_k\cos(kx)
+\sum_{k=1}^\infty\b v_{-k}\sin(kx)\,,\quad x\in\SS_\rho\,,
\equation(VVcsSeries)
$$
associated with every function $\b v\in\VV$.
An operator $M$ on $\VV$ that commutes with translations
will be called a multiplier operator; it is defined by its symbol:
a sequence of $2\times 2$ matrices $\wt M(k)$,
such that $(M\b v)_k=\wt M(k)\b v_k$ for all $\b v\in\VV$ and $k\in\integer$.
Let $\kappa$ be some positive integer, to be specified later.
Then the projection onto the ``low modes''
is the multiplier operator $P$ with symbol
$\wt P(k)=\chi({\ss|k|\le\kappa})\id$,
where $\chi(\hbox{\ninerm true})=1$ and $\chi(\hbox{\ninerm false})=0$.
If $\kappa$ is chosen sufficiently large,
then the operator $L_0+PFP$ should be a good approximation of $L_\phi$.
At high modes it agrees with $L_0$,
and the low-mode part is ``just'' a matrix.
With the help of a computer, it is possible to diagonalize this matrix approximately.
For practical purposes, it is useful to diagonalize
the high-mode part as well.
This is achieved by the multiplier operator $M:\VV\to\VV$ with symbol
$$
\wt M(k)=\chi({\ss|k|\le\kappa})\,\id
+\chi({\ss|k|>\kappa})\,\wt M_0(k/\eta)\,,
\equation(MkDef)
$$
where $\wt M_0(p)$ is the $2\times 2$ matrix given in \equ(MopDef).
To be more precise:
Here, and in what follows, we choose $\theta=0$
in the definition \equ(LoRescaled) of the operator $L_0$.
Since the matrices $\wt M_0(p)$ are being used
for $p>\kappa/\eta$ only, the Assumption made after \equ(JppDef) is satisfied.
Clearly, the operator $M$ is bounded and has a bounded inverse.
Thus, $M^{-1}L_\phi M$ has the same spectrum as $L_\phi$.
As indicated above, we now split
$M^{-1}L_\phi M$ into a sum $\LL_0+\KK$, where
$$
\eqalign{
\LL_0&=M^{-1}L_0M+PFP\,,\cr
\KK&=(\id-P)M^{-1}FM+ PM^{-1}FM(\id-P)\,.\cr}
\equation(LLKKDef)
$$
We also define
$$
\LL_1=M^{-1}L_\phi M\,,\qquad \LL_s=\LL_0+s\KK\,,\qquad 0\le s\le 1\,.
\equation(LLsDef)
$$
The goal is to verify the hypothesis of \clm(ContrSemi).
Let $\vartheta=2^{-6}$. Let $\Gamma$ be the shortest path
in $\complex$ passing through the points
$i\Theta$, $i\vartheta$, $-\vartheta$, $-i\vartheta$, and $-i\Theta$,
in this order.
Define $\Omega\subset\complex$ to be the open neighborhood of $0$,
bounded by $\Gamma$ and by the set of points $z$
on the imaginary axis with $|z|>\Theta$.
As we will describe later,
$\LL_0$ has exactly one eigenvalue in $\Omega$,
and this eigenvalue is simple.
By \clm(ImEigenBound) and \dem(IEBVal), it suffices to show
that $\LL_1$ has the same property.
By \dem(IEBGen), this could fail only if one of the operators
$\LL_s$ had an eigenvalue on $\Gamma$.
So the task left is to exclude this possibility as well.
For $z\in\Gamma$ we have
$$
z\id-\LL_s=\bigl[\id-s\KK(z\id-\LL_0)^{-1}\bigr]
(z\id-\LL_0)\,.
\equation(zLLFactoring)
$$
Thus, in order to show that $z$ is not an eigenvalue of $\LL_s$,
it suffices to show that the operator in square brackets has a bounded inverse.
This task is more delicate than it may seem,
for the following reason.
Notice that $\KK$ couples high modes to low modes and vice versa.
If $z\id-\LL_0$ were uniformly large at high modes, this would be no problem.
However, $\LL$ has an infinite number of eigenvalues
$\lambda^{+}(p)=icp-\epsilon\gamma+\OO(p^{-1})$,
and many of them are not far from $\Gamma$.
Thus, it is crucial to control the coupling terms of $\KK$ efficiently.
To this end, we perform yet another conjugacy,
by the multiplier operator $\UU$ with symbol
$$
\wt\UU(k)=\chi({\ss|k|<\kappa'})\,\id
+\chi({\ss\kappa'\le|k|<\kappa})\,U\bigl(\eps e^{r|k|-r\kappa}\bigr)
+\chi({\ss\kappa\le|k|})\,U(\eps)\,,
\equation(wtUDef)
$$
where $U(t)=\bigl[{t~0\atop 0~1}\bigr]$.
For the constants $r$ and $\eps$ in this definition
we use the values ${1\over 20}$ and ${3\over 200}$, respectively.
The constant $\kappa'$ is determined by the equation
$\eps e^{r\kappa'-r\kappa}=1$.
\smallskip
In view of \equ(zLLFactoring), we would like to show
that the operator $\KK(z\id-\LL_0)^{-1}$ has a spectral radius less than $1$,
for all $z\in\Gamma$.
It suffices to prove this for the operator
$$
\UU\bigl[\KK(z\id-\LL_0)^{-1}\bigr]\UU^{-1}
=\bigl(\UU\KK\UU)
\bigl[\UU^{-1}(z\id-\LL_0)^{-1}\UU^{-1}\bigr]\,.
\equation(ResolvFac)
$$
\claim Lemma(PEigenBound)
The operator $\LL_0:\VV'\to\VV$ has no spectrum in $\Omega$
except for a simple eigenvalue.
Furthermore, there exists $\delta>0$ such that
$$
\|\UU\KK\UU\|<\delta\,,\qquad
\bigl\|\UU^{-1}(z\id-\LL_0)^{-1}\UU^{-1}\bigr\|<\delta^{-1}\,,\qquad
z\in\Gamma\,.
\equation(PEigenBound)
$$
Our proof of this lemma is computer-assisted; see Section 5 for more details.
The value of $\delta$ is approximately ${1\over 2400}$.
These estimates show that no eigenvalue of $\LL_s$
crosses $\Gamma$ as $s$ is increased from $0$ to $1$.
The same ``homotopy principle'' was used also in [\rAKi,\rAKii],
but the operators considered in these papers
had only finitely many eigenvalues
within any fixed distance of the imaginary axis.
This made it possible in [\rAKi] to estimate
the relevant resolvents along the entire imaginary axis.
The same methods would not work here,
but what saves the situation are the eigenvalue bounds
in \clm(ReEigenBound) and \clm(ImEigenBound).
\smallskip
Using \clm(PEigenBound) and \clm(PFixContr),
we can now give a
\proofof(PMain)
Existence of the pulse:
The estimates \equ(PFixContr)
ensure that $\MM_c$ is a contraction on $B_r(0)$.
Thus, $\MM_c$ has a unique fixed point $h_c\in B_r(0)$.
This holds for every $c\in I$.
The differentiability of $(c,g)\mapsto\NN_c(g)$
ensures that the map $c\mapsto h_c$ is continuous on $I$.
Define $g_c=p_0+Ah_c$.
Given that the function $c\mapsto Q(\NN_c'(g_c),p_1)$
changes sign on the interval $I$,
it follows that \equ(OrthCond) holds for some $c\in I$.
For this value of $c$, the function $g_c$ is a fixed point of $\NN_c$.
The function $\psi$ is reconstructed from $\varphi=g_c+\bar g_c$
as described in Subsection 2.1.
Thus, the existence part of \clm(PMain) is proved.
Stability:
The bound \equ(PEigenBound) implies
that the operator $\KK(z\id-\LL_0)$ has a spectral radius
less than $1$. Thus, by \equ(zLLFactoring),
the operator $\LL_s$ for $0\le s\le 1$ has no eigenvalue on $\Gamma$.
As explained after \equ(LLsDef),
this shows that $\LL_\phi:\VV'\to\VV$ has no spectrum
in a half-plane $\Re(z)>-\alpha$ with $\alpha>0$,
except for a simple eigenvalue $0$.
The same holds for $\LL_\phi:\CC'\to\CC$ by \clm(CCAAEigen).
By \clm(ContrSemi) this implies that the solution $\phi'$
is exponentially stable for the linear system \equ(FHNlin).
The exponential stability of the periodic pulse $\phi$
now follows from \clm(LinearNonlinear).
\qed
\subsection Eigenvalues for the homoclinic pulse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Let $0<\omega<\epsilon\gamma$, so that $L_0$
has no spectrum in the half-plane $H_\omega$.
The goal is to show that $L_\phi$ has no nonzero eigenvalues in $H_\alpha$
for some positive $\alpha\le\omega$.
In [\rEvansiv] Evans introduces a function
that is analytic on $H_\omega$ (in our case)
and whose zeros are precisely the eigenvalues of $L_\phi$ in $H_\omega$.
After describing the method and introducing some notation,
we will prove exponential stability of the homoclinic pulse
based on estimates on the Evans function.
The eigenvalue equation $(L_\phi-\lambda\id)\b u=0$,
written in terms of the components $u_1$ and $u_1$, is
$$
\twomat{cD+D^2+f'(\phi_1)-\lambda}{-1}
{\epsilon}{cD-\epsilon\gamma-\lambda}
\twovec{u_1}{u_2}=\twovec{0}{0}\,.
\equation(LphiEigenTwo)
$$
Setting $u_0=D u_1$, this equation can also be written as
$$
\threemat{-1}{D}{0}
{c+D}{f'(\phi_1)-\lambda}{-1}
{0}{\epsilon}{cD-\epsilon\gamma-\lambda}
\threevec{u_0}{u_1}{u_2}=\threevec{0}{0}{0}\,.
\equation(LEigenThree)
$$
Or equivalently,
$$
u'=A_{\phi_1}(\lambda)u\,,
\equation(uzODE)
$$
where
$$
A_\varphi(z)=\threemat{-c}{-f'(\varphi)+z}{1}{1}{0}{0}
{0}{-c^{-1}\epsilon}{c^{-1}(\epsilon\gamma+z)}\,.
\equation(AzDef)
$$
Notice that $A_{\phi_1}(0)$ is the linearized vector field $DX(\phi)$.
The differential equation $u'=A_{\phi_1}(z)u$ can be solved
even if $z$ is not an eigenvalue of $L_\phi$.
But for $z=\lambda$ to be an eigenvalue of $L_\phi$,
the solution of \equ(uzODE) has to be bounded.
To see what this entails,
consider first the simpler equation $u'=A_0(z)u$,
which is the analogue of \equ(uzODE) for the
rest solution $\phi=0$ of \equ(FHNphii).
If $z$ belongs to the half-plane $H_\omega$,
then we know from \clm(LoProp)
that this equation has no bounded solutions.
Thus, the matrix $A_0(z)$ is hyperbolic
(has no purely imaginary eigenvalues) for all $z\in H_\omega$.
The eigenvalues for $z=0$ are given by \equ(comuonuo).
Consequently, $A_0(z)$ has one eigenvalue $\mu_z$
with negative real part, and two eigenvalues
$\nu^{\sss\pm}_z$ with positive real part, for each $z\in H_\alpha$.
Denote by $\ttU_z$ and $\ttW_z^{\sss\pm}$ the corresponding eigenvectors
(or generalized eigenvectors if $\nu^{\sss+}_z=\nu^{\sss-}_z$).
Then the dynamical system $u'=A_0(z)u$ has a
linear stable manifold $\hat\ttU_z=\span(\ttU_z)$
and a linear unstable manifold $\hat\ttW_z=\span(\ttW_z^{\sss\pm})$.
Given that the equation $u'=A_{\phi_1}(z)u$ is linear, it is convenient
to consider the associated equation for a function $\hat u$
that takes values in the projective plane $\complex\rmP^2$.
Notice that the coefficient function $y\mapsto A_{\phi_1(y)}(z)$ is bounded.
Thus, a solution of \equ(uzODE) cannot vanish
at any point without being identically zero.
In order to simplify the discussion,
let us identify $\hat u(y)$ with $\span(u(y))$.
Then our dynamical system becomes
$$
\phi'=X(\phi)\,,\qquad
\hat u'=A_{\phi_1}(z)\hat u\,.
\equation(phihatuFlow)
$$
We have included here the evolution equation \equ(FHNphii) for the pulse $\phi$,
in order to make the system autonomous.
This system has a fixed point $(0,\hat\ttU_z)$
and an invariant projective line $\{0\}\times\hat\ttW_z$.
The fixed point is hyperbolic,
with a $1$-dimensional local stable manifold
that is tangent at $(0,\hat\ttU_z)$
to the line $\hat\ttU_0\times\hat\ttU_z$.
Thus, the only way for a solution $u$ of \equ(uzODE)
to stay bounded as $y\to+\infty$ is
for $\hat u(y)$ to be on the local stable manifold,
in which case $\hat u(y)\to\hat\ttU_z$ and $u(y)\to 0$.
The invariant line $\{0\}\times\hat\ttW_z$ is hyperbolic as well,
with $3$-dimensional local stable and unstable manifolds
that are tangent (at this line)
to $\hat\ttW_0\times\hat\ttW_z$ and $\hat\ttU_0\times\complex\rmP^2$,
respectively.
So a solution $u$ of $u'=A_{\phi_1}(z)u$
stays bounded as $y\to-\infty$ only if
$u(y)$ lies on the local unstable manifold,
in which case $\hat u(y)$ approaches the projective line $\hat\ttW_z$
as $y\to-\infty$, and $u(y)\to 0$.
And by hyperbolicity, the only alternative
is $\hat u(y)\to\hat\ttU_z$, with $u(y)$ growing exponentially.
What will be needed from this discussion is summarized
in the proposition below.
Notice that $\hat\ttW_z$ is the set of all vectors
$w\in\complex^3$ with the property that $\ttV_z^\transpose w=0$,
where $\ttV_z$ is the eigenvector of the transposed
matrix $A_0(z)^\transpose$ for the eigenvalue $\mu_z$.
\claim Proposition(EigenHetero)
If $z\in H_\omega$
then the equation $u'=A_{\phi_1}(z)u$ has a solution $u=u_z$ satisfying
$$
\lim_{y\to+\infty}u_z(y)e^{-y\mu_z}=\ttU_z\,.
\equation(uzLimit)
$$
$\lambda\in H_\omega$ is an eigenvalue of $L_\phi$ if and only if
$\,\ttV_\lambda^\transpose u_\lambda(y)\to 0$ as $y\to-\infty$.
This was proved already in [\rEvansiv]
for a more general class of equations,
under the assumption that the rest solution $\bphi=0$
is exponentially stable.
Notice that $(\phi,u_z)$ is a parametrization
of the local stable manifold for the system
$\phi'=X(\phi)$ and $u'=A_{\phi_1}(z)u$.
\clm(EigenHetero) by itself is of limited
practical value, due to the asymptotic nature
of the condition on $u_\lambda$.
The idea is to ``propagate'' this condition from $y=-\infty$ to finite $y$.
More specifically, consider the ``adjoint'' equation
$$
v'=-A_{\phi_1}(z)^\transpose v\,.
\equation(vzODE)
$$
The limiting behavior of its solutions, as $y\to\pm\infty$,
is governed by the matrix $-A_0(z)^\transpose$.
This matrix has an eigenvalue $-\mu_z$ with positive real part,
and two eigenvalues $-\nu_z^{\sss\pm}$ with negative real part.
The discussion preceding \clm(EigenHetero)
shows that we can find a solution $v=v_z$ that satisfies
$$
\lim_{y\to-\infty}v_z(y)e^{y\mu_z}=\ttV_z\,.
\equation(vzLimit)
$$
The main reason for solving \equ(vzODE) is that
$$
[v_z^\transpose u_z]'
=\bigl[v_z']^\transpose u_z+v_z^\transpose u_z'
=[-A_{\phi_1}(z)^\transpose v_z]^\transpose
+v_z^\transpose A_{\phi_1}(z)u_z'=0\,.
\equation(Omegaprime)
$$
So the product $v_z^\transpose u_z$ is a constant function.
In particular, if $v_z(y)^\transpose u_z(y)=0$ for some $y$
then $v_z^\transpose u_z=0$.
This property remains the same if we replace $v_z(y)$
by $v_z(y)e^{y\mu_z}$, which tends to $\ttV_z$ as $y\to\infty$.
This shows that $z\in H_\omega$ is an eigenvalue of $L_\phi$
if and only if $v_z^\transpose u_z=0$.
A stronger and more general result was proved in [\rEvansiv].
The following theorem only describes the parts
that are relevant to our problem.
%% Theorem 1 and Corollary 4 in Evans IV
\claim Theorem(DeltaProp) {\rm [\rEvansiv]}
Given any $y\in\real$, define the function $\Delta: H_\omega\to\complex$
by the equation $\Delta(z)=v_z(y)^\transpose u_z(y)$.
Then $\Delta$ is analytic and independent of the choice of $y$.
Furthermore, $\lambda\in H_\omega$ is an eigenvalue of $L_\phi$
with algebraic multiplicity $m$,
if and only if $\lambda$ is a zero of $\Delta$ of order $m$.
Let $r={2485\over 8192}$ and $\vartheta={5857\over 16384}$.
Denote by $R$ the closed rectangle in $\CC$
with corners at $\pm i\vartheta$ and $r\pm i\vartheta$.
Let $D$ be the closed disk in $\complex$,
centered at the origin, with radius ${1\over 32}$.
\claim Lemma(HZeros)
The function $\Delta$ has a simple zero at $0$
and no other zeros in $D$.
Furthermore, the restriction of $\Delta$
to the boundary of $R\setminus D$ takes no real values
in the interval $[0,\infty)$.
Our proof of this lemma is computer-assisted; see Section 5 for more details.
Using \clm(HZeros) and \clm(HFix), we can now give a
\proofof(HMain)
The existence and real analyticity of the homoclinic pulse follows from \clm(HFix).
Stability:
\clm(HZeros) together with the argument principle
imply that function $\Delta$ has no zeros in $R\cup D$
besides the simple zero at $0$.
So by \clm(DeltaProp), the operator $L_\phi$ has a simple eigenvalue $0$
and no other eigenvalues in $R\cup D$.
Given that $r<\Lambda$ and $\vartheta<\Theta$,
we conclude by \clm(ReEigenBound) and \clm(ImEigenBound)
that $L_\phi$ has no nonzero eigenvalue in $H_\alpha$
for some $\alpha>0$.
By \clm(ContrSemi) this implies that the solution $\phi'$
is exponentially stable for the linear system \equ(FHNlin).
The exponential stability of the homoclinic pulse $\phi$
now follows from \clm(LinearNonlinear).
\qed
\section Further reduction of the problem
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection The periodic pulse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
What remains to be proved are \clm(PFixContr) and \clm(PEigenBound).
Notice that $f$ is a polynomial,
so the map $\NN_c$ defined in \equ(NNDef)
involves little more than products of functions in $\FF$
and multiplier operators.
These are rather easy to compute.
By ``computing'' an element $x$ in some space $X$
we mean finding a set $x^\flat\subset X$, that contains $x$.
The types of enclosures $x^\flat$ that we use,
and the procedures for finding them, will be described in Subsection 5.3.
What can be surprisingly difficult in computer-assisted proofs
are estimates on linear operators.
It is often necessary to ``condition'' an operator
via conjugacies as in \equ(LLsDef) or \equ(ResolvFac).
But once things boil down to computing operator norms,
the norm \equ(csNorm) used in the spaces $\FF$ and $\VV$
makes the task easy:
Let $\{e_0,e_1,\ldots\}$ be an enumeration of the
Fourier modes $c_k\cos(k\bdot)$ and $s_k\sin(k\bdot)$,
with $c_k$ and $s_k$ chosen in such a way that $\|e_j\|=1$
for all $j$. Then the operator norm of
a bounded linear operator $U:\FF\to\FF$ can be bounded by using that
$$
\|U\|=\sup_j\|Ue_j\|
\le\ \max\ \bigl\{\|Ue_0\|,\|Ue_1\|,\ldots,\|Ue_{n-1}\|,\|UE_n\|\bigr\}\,,
\equation(OpNorm)
$$
where $E_n=\{e_n,e_{n+1},\ldots\}$.
As we will describe later,
computing a set $UE_n$ is not more involved than
computing a function $Ue_j$.
So it suffices to choose $n$ sufficiently large,
such that the bound on $\|UE_n\|$ is smaller than
the bound on $\|Ue_j\|$ for some $j\kappa/\theta$, and it is easy to check
that all of them have a negative real part.
But we use the computer to do this,
which also verifies that the high-mode part
of $\UU^{-1}(z\id-\LL_0)^{-1}\UU^{-1}$
satisfies the bound \equ(PEigenBound) for all $z\in\Gamma$.
The low-mode part $L=P(L_0+F)P$ of $\LL_0$
is in effect just a matrix.
After performing an approximate diagonalization $D=A^{-1}LA$,
we use the Gerschgorin disks to check
that exactly one (simple) eigenvalue of $D$ lies in $\Omega$
and the others are a positive distance away from $\Omega$.
Denote the low-mode part of $\UU$ by $U$.
The task left is to show that the matrix $U^{-1}(z\id-L)^{-1}U^{-1}$
satisfies the bound \equ(PEigenBound) for all $z\in\Gamma$.
This is done by covering $\Gamma$ with a finite collection
of disks $|z-z_j|<\delta_j$ with centers $z_j\in\Gamma$.
The resolvent matrices $R_j=(z_j\id-L)^{-1}$ are computed explicitly
(with error estimates, of course)
and shown to satisfy $\delta_j\|R_j\|<1$.
This bound implies that the matrix
$$
z\id-L=\bigl[\id+(z-z_j)R_j\bigr](z_j\id-L)
\equation(zidLFactors)
$$
is invertible whenever $|z-z_j|<\delta_j$.
Estimating its inverse is straightforward.
\subsection The homoclinic pulse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
In Subsection 2.2 we described our construction
of the traveling pulse $\phi$ solution of the equation \equ(FHNphii).
It involves an expansion near $y=+\infty$
for the parametrized local stable manifold $\phi^s$,
an expansion near $y=-\infty$
for the parametrized local unstable manifold $\Phi^u$,
and a sequence of integration steps to prolong $\phi^s$.
All three problems were reduced to equations
that can be solved order by order.
At the end of this subsection we give a result
that applies to such order by order computations.
(As mentioned earlier, by ``computation''
we mean a process that leads to a rigorous enclosure.)
The main ingredients needed to prove \clm(DeltaProp)
are estimates on the functions $u_z$ and $v_z$
that enter the definition $\Delta(z)=v_z(y)^\transpose u_z(y)$
of the Evans function $\Delta$.
We will show that, after suitable reformulation,
the equations for $u_z$ and $v_z$ can again be solved order by order.
The eigenvector $\ttU_z$ of the matrix $A_0(z)$, used in \equ(uzLimit),
and the eigenvector $\ttV_z$ of the
transposed matrix $A_0(z)^\transpose$, used in \equ(vzLimit),
are given by
$$
\ttU_z=\threevec{\mu_z}{1}{\epsilon(\epsilon\gamma+z-c\mu_z)^{-1}}\,,\qquad
\ttV_z=\threevec{1}{c+\mu_z}{-c(\epsilon\gamma+z-c\mu_z)^{-1}}\,,
\equation(UzVz)
$$
where $\mu_z$ denotes the eigenvalue of $A_0(z)$ with negative real part.
In what follows, we always assume that $z\in H_\omega$
with $0<\omega<\epsilon\gamma$.
Given that $\phi$ is an analytic function of $r=e^{\mu_0y}$ near $r=0$,
and that $e^{-\mu_z y}u_z(y)\to\ttU_z$ as $y\to+\infty$,
we consider a re-normalized version of $u_z$,
$$
U_z(y)=e^{(\mu_0-\mu_z)y}u_z(y)\,.
\equation(UFactorOne)
$$
Since $u_z'=A_{\phi_1}(z)u_z$,
the function $U_z$ has to satisfy the equation
$$
U_z'=M^s_{\phi_1}(z)U_z\,,\qquad
M^s_{\phi_1}(z)=A_{\phi_1}(z)+(\mu_0-\mu_z)\id\,.
\equation(UEqu)
$$
Recall that $A_0(z)\ttU_z=\mu_z\ttU_z$,
and thus $M^s_0(z)\ttU_z=\mu_0\ttU_z$.
Having in mind an expansion in powers of $r=e^{\mu_0y}$,
we decompose
$$
U_z(y)=\ell^s(r)+\buZ^s(r)\,,\qquad\ell^s(r)=r\ttU_z\,,
\equation(UAnsatz)
$$
with $\buZ^s(r)=\OO(r^{\sss 2})$.
To simplify notation,
we have suppressed here the dependence on $z$.
Using that $\mu_0 r\partial_r\ell^s=\mu_0\ell^s=M^s_0(z)\ell^s$,
the equation \equ(UEqu) can be rewritten as
$$
\mu_0 s\partial_r\buZ^s
=P_0\ell^s+M^s_{\phi_1}(z)\buZ^s\,,
\equation(buZiFlowOne)
$$
where
$$
P_0=A_{\phi_1}(z)-A_0(z)=
\threemat{0}{-f'(\phi_1)-a}{0}{0}{0}{0}{0}{0}{0}\,.
\equation(PDef)
$$
Finally, we convert \equ(buZiFlowOne) to the integral equation
$$
\buZ^s=\bigl[\partial_y-M^s_0(z)\bigr]^{-1}P_0(\ell^s+\buZ^s)\,,\qquad
\partial_y=\mu_0 r\partial_r\,.
\equation(buZiFlowTwo)
$$
This equation for $\buZ^s=U_z-\ell^s$
is the analogue of the equation \equ(ZsFlow) for $Z^s=\phi^s-\ell^s$.
Notice that, due to the special form of $P_0$,
the equation \equ(buZiFlowTwo) reduces by projection
to an equation for the component $\buZ^s_1$ of $\buZ^s$ alone.
Using that $\Re(\mu_z)<0$,
the operator $\partial_y-M^s_0(z)$ is easily seen to
be invertible on the space of analytic functions $\AA^1_\rho$ defined below.
Recall also that $f'(0)=-a$. Thus $P_0(s)=\OO(s)$.
This shows that \equ(buZiFlowTwo) can be solved order by order in powers of $r$.
We will prove that the solution $\buZ^s$ is analytic
in a disk $\DD_\rho$ characterized by $|r|<\rho$.
The analysis is carried out in the space $\AA_\rho^1$ of all analytic
functions $h$ on $\DD_\rho$ that extend continuously to the boundary of $\DD_\rho$
and have finite norm
$$
\|h\|_\rho=\sum_{k=0}^\infty\|h_k\|\rho^k\,,\qquad
h(r)=\sum_{k=0}^\infty h_k r^k\,.
\equation(AAOneNorm)
$$
To be more precise, our functions $h=\buZ^s_j$ also depends on the spectral parameter $z$.
The function in $\AA^1_\rho$ take values
in a space $\BB$ of function that are
real analytic in the disk $|z-z_0|<\varrho$.
The norm of a function $g: z\mapsto\sum_n g_n(z-z_0)^n$
in the space $\BB$ is given by $\|g\|=\sum_n|g_n|\varrho^n$.
This is the norm that appears in \equ(AAOneNorm)
for the coefficients $h_k$.
\bigskip
The procedure for computing the solution $v=v_z$ of the adjoint equation \equ(vzODE)
satisfying \equ(vzLimit) is similar.
To match the asymptotic behavior of $\phi$ near $y=-\infty$
we consider
$$
V_z(y)=e^{(\nu_0+\bar\nu_0+\mu_z)y}v_z(y)\,,
\equation(VFactorOne)
$$
where $\nu_0$ and $\bar\nu_0$ are the eigenvalues of $A_0(0)$
with positive real part.
The function $V_z$ has to satisfy the equation
$$
V_z'=-M^u_{\phi_1}(z)^\transpose V_z\,,\qquad
M^u_{\phi_1}(z)=A_{\phi_1}(z)-(\nu_0+\bar\nu_0+\mu_z)\id\,.
\equation(VEqu)
$$
As in \equ(phiuAnsatz) we make the ansatz
$$
V_z(y)=\bmV_z\bigl(Re^{\nu_0 y},Re^{\bar\nu_0 y}\bigr)\,,
\equation(VzAnsatz)
$$
and
$$
\bmV_z(s)=\ell^u(s)+\buZ^u(s)\,,\qquad
s=(s_1,s_2)\,.
\equation(Vus)
$$
But here $\ell^u(s)=s_1s_2\ttV_z$ and $\buZ^u(s)=\OO(|s|^{\sss 3})$.
Using that $A_0(z)^\transpose\ttV_z=\mu_z\ttV_z$,
the equation \equ(VEqu) can be rewritten as
$$
(\nu_0 s_1\partial_{s_1}+\bar\nu_0 s_2\partial_{s_2})\buZ^u
=-P_0^\transpose\ell^u-M^u_{\phi_1}(z)^\transpose\buZ^u\,,
\equation(buZiiFlowOne)
$$
or
$$
\buZ^u=-\bigl[\partial_y+M^u_0(z)^\transpose\bigr]^{-1}
P_0^\transpose(\ell^u+\buZ^u)\,,\quad
\qquad\partial_y=\nu_0 s_1\partial_{s_1}+\bar\nu_0 s_2\partial_{s_2}\,.
\equation(buZiiFlowTwo)
$$
Again, due to the special form of $P_0^\transpose$,
the equation \equ(buZiiFlowTwo) reduces by projection
to an equation for the component $\buZ^u_0$ of $\buZ^u$ alone.
Using that $\Re(\nu_z)>0$,
the operator $\partial_y-M^s_0(z)$ is easily seen to be invertible.
Recall also that $P_0(s)=\OO(s)$.
So \equ(buZiiFlowTwo) can be solved order by order in powers of $s_1$ and $s_2$.
The function space considered here is
the same space $\AA^2_\rho$ that is used to solve the equation \equ(ZuFlow)
for the unstable manifold.
Again, each coefficient $h_{k,m}$ in the expansion \equ(AATwoSeries)
is a function in the space $\BB$.
But now the variable is the spectral parameter $z$, and not the velocity $c$.
At this point, the velocity $c$ is fixed to the value (interval)
described in \clm(HFix).
\bigskip
Recall that the local stable manifold $\phi^s$ obtained by solving \equ(ZsFlow)
has to be ``prolonged'' in order to get it to meet
the local unstable manifold $\Phi^u$.
Similarly, we have to prolong the curve $V_z$ in order to be able
to compute the Evans function $\Delta(z)$
via the product $V_z(y)^\transpose U_z(y)$.
This is done for $y=-43$, which is the same value of $y$
that is used to verify the homoclinic intersection.
As mentioned in Subsection 2.2,
the prolongation of $\phi^s$ is carried out via repeated application
of a Taylor integrator.
The same is done for the prolongation of the curve $V_z$.
The details are different in the two cases,
but the principle is the same:
We integrate a vector field $\VV$,
$$
x'(t)=\VV(x(t))\,,\qquad x(0)=x_0\,,
\equation(VecIntOne)
$$
where all functions involved are analytic near the origin.
Decomposing
$$
\VV(x)=\ell+Q(x-x_0)\,,\qquad\ell=\VV(x_0)\,,\quad Q(0)=0\,,
\equation(VecIntTwo)
$$
and substituting
$$
x(t)=x_0+t\ell+Z(t)\,,\qquad Z(t)=\sum_{k=2}^\infty Z_kt^k\,,
\equation(VecIntThree)
$$
into the equation \equ(VecIntOne) yields the integral equation
$$
Z(t)=\int_0^t Q\bigl(s\ell+Z(s)\bigr)\,ds\,.
\equation(VecIntFour)
$$
Clearly this equation can be solved order by order,
meaning that the coefficients $Z_k$ can be determined inductively
one after the other.
Unlike in the periodic case,
we are not using the contraction mapping principle to solve fixed point equations.
In the homoclinic case, all of our equations can be solved order by order.
The details differ from one equation to the next,
but the general principle is the same and can be described as follows.
\medskip
Let $(X_k,\|\bdot\|_k)$ be Banach spaces for $k=0,1,2,\ldots$
and let $(X,\|\bdot\|)$ be the Banach space of all functions $x:\natural\to\bigcup_k X_k$
with $x(k)\in X_k$ for all $k$ and $\|x\|=\sum_k\|x(k)\|_k$ finite.
Denote by $P_n$ the projection on $X$
defined by setting $(P_n x)(k)=x(k)$ for $k\le n$ and $(P_n x)(k)=0$ for $k>n$.
\claim Lemma(OrderByOrder)
Let $Y_0$ be a closed bounded subset of $X$
such that $P_n Y_0\subset Y_0$ for all $n$, and $P_0Y_0=\{y_0\}$ for some $y_0\in X$.
Let $F:Y_0\to Y_0$ be continuous,
having the property that $P_{n+1}F=P_{n+1}FP_n$ for all $n$.
Then $F$ has a unique fixed point $y\in Y_0$,
and $P_ny=P_nF^m(y_0)$ whenever $n\le m$.
Notice that the set $Y_0$ in this lemma need not be compact or convex.
The norm on $X$ is of course very special.
But this framework fits perfectly with the function spaces
used here and in other computer-assisted proofs.
\proof
Let $y\in Y_0$.
Then $P_0F^m(y)=y_0$ for all $m$. If $00$ representable.
Let $\TT_r$ be the space of all analytic functions
$f: D_r\to\SS$ that extend continuously to the boundary of $D_r$
and have a finite norm
$$
\|f\|=\sum_{n=0}^\infty\|c_n\|r^n\,,\qquad
f(z)=\sum_{n=0}^\infty c_nz^n\,,\qquad
c_0,c_1,\ldots\in\SS\,.
\equation(TaylorOneNorm)
$$
Clearly $\TT_r$ is a Banach algebra under pointwise multiplication.
Given a positive integer $d$,
a {\tt Taylor1} is any set of the form
$$
F: z\mapsto\sum_{n=0}^d C(n)z^n\,,\qquad
C(0\,.\,.\,k-1)\in R(\SS)\,,\quad
C(k\,.\,.\,d)\in R(\SS,\TT_r)\,,
\equation(TaylorOne)
$$
for some nonnegative integer $k\le d$.
The collection of all these sets is denoted by $R(\TT_r)$.
Now a {\tt Taylor1} is simply another type of {\tt Scalar},
based on $\TT_r$ instead of $\SS$.
An extended {\tt Taylor1} is defined by replacing
the algebra $\TT_r$ in \equ(TaylorOne) by a
function algebra $\FF$, as described earlier.
In our Ada implementation, {\tt Taylor1}
is a triple {\tt F=(F.R,F.K,F.C)}, where {\tt F.R}
is the radius $r$ of the domain $D_r$,
{\tt F.K} is the integer $k$ in \equ(TaylorOne),
and {\tt F.C} is an array ${\tt F.C}(0\,.\,.\,d)$ of (extended) scalars.
The component {\tt T.R} is used for
inclusions $\TT_r\to\TT_{r'}$ when $r>r'>0$.
Implementing ${\tt Sum}:R(\TT_r)\times R(\TT_r)\to R(\TT_r)$ is trivial:
Given {\tt F1=(F1.R,F1.K,F1.C)} and {\tt F2=(F2.R,F2.K,F2.C)}
of type {\tt Taylor1}, we set {\tt F3.R := Min(F1.R,F2.R)},
{\tt F3.K := Min(F1.K,F2.K)},
and {\tt F3.C(N) := Sum(F1.C(N),F2.C(N))} for $N=0,1,\ldots,d$,
and then return {\tt F3}.
The function {\tt Prod} is equally trivial:
just multiply {\tt F1} and {\tt F2} as if they were polynomials,
except that terms of degree $n>d$ are added to ${\tt F3.C}(d)$,
after being enclosed in zero-centered balls
and multiplied by ${\tt F3.R}^{n-d}$.
For functions like {\tt Quot} or {\tt Exp} we compute
the first $N$ terms of the power series,
using {\tt Sum} and {\tt Prod}.
For the remainder of the Taylor series we use simple norm estimates,
and the corresponding balls are added to the component
${\tt F.C}(d)$ of the result.
Functions like {\tt ArcCos} are implemented
by first computing an approximation and then estimating
the errors from the corresponding Newton map.
Our list of ``standard'' scalar operations also includes
an upper bound on the norm,
comparisons (which may be {\tt Undefined} for some scalars),
inclusion relations, certain decompositions, input/output, etc.
After implementing each of them for the type {\tt Taylor1},
this type can now be used as {\tt Scalar} to construct new types.
A type {\tt Taylor1} with coefficients of type {\tt Taylor1}
is used e.g.~to represent the functions $\phi^s$ whose
Taylor coefficients depend on the velocity parameter $c\in\real$,
or the functions $u_z$ that depend on the spectral
parameter $z\in\complex$.
To give a simple example of how the type \equ(TaylorOne) can be used,
consider the fixed point problem for the map $M:\TT_1\to\TT_1$
defined by $(Mf)(z)=[z+f(z/2)]^2$ and $f(z)=\OO(z^2)$.
Here $\SS=\real$.
Starting with {\tt F=(1,D,0)} and iterating {\tt M} $d-2$ times,
the coefficients {\tt F.C(0..D-1)} stay the same
under further iterations of {\tt M}.
Now enlarge {\tt F.C(D)} to some closed ball {\tt B} and apply {\tt M} again.
If {\tt M(F).C(D)} is included in {\tt B}
then {\tt M(F)} contains the fixed point of $M$,
according to \clm(OrderByOrder).
In addition to {\tt Taylors1}, we also need a type {\tt Taylor2}
to represent sets of analytic functions on $D_r\times D_r$.
For reasons of efficiency, we have implemented {\tt Taylor2}
directly, as opposed to deriving it from {\tt Taylor1}.
It is represented again by a triple {\tt F=(F.R,F.K,F.C)},
but {\tt F.C} is now a two-dimensional array of
scalar coefficients ${\tt F.C}(m,n)$ with $m+n\le d$.
The type {\tt Taylor2} could also be used as scalar,
but this is not needed for the problem at hand.
A type {\tt Taylor2} with coefficients of type {\tt Taylor1}
is used e.g.~to represent the functions $\Phi^u_j$ and $v_z$
whose Taylor coefficients depend on the spectral parameter $z\in\complex$.
Besides the standard scalar operations,
there are also some {\tt Taylor1}-specific and/or
{\tt Taylor2}-specific operations such as as evaluation,
derivatives (with result in $\TT_{r'}$ for some $r'0
\item{[\rHast]} %% first small eps (indep from Carpenter)
S.P.~Hastings,
{\it On the existence of homoclinic and periodic orbits in the FitzHugh-Nagumo equations},
Quart. J. Math. Oxford {\bf 2}, 123-134 (1976).
\item{[\rCarp]} %% first small eps (indep from Hastings)
G.~Carpenter,
{\it A geometric approach to singular perturbation problems
with applications to nerve impulse equations},
J. Differ. Equations {\bf 23}, 152-173 (1977).
\item{[\rLang]}
R.~Langer,
{\it Existence and uniqueness of pulse solutions to the FitzHugh-Nagumo equations},
Ph.D.~Thesis, Northeastern University (1980).
\item{[\rEFF]}
J.W.~Evans, N.~Fenichel, J.A.~Feroe,
{\it Double impulse solutions in nerve axon equations},
SIAM J. Appl. Math. {\bf 42} 219-234 (1982).
\item{[\rCKRTJones]} %% stability (fast waves)
C.K.R.T.~Jones,
{\it Stability of the traveling wave solution of the FitzHugh-Nagumo system},
Trans. Amer. Math. Soc. {\bf 286}, 431-469 (1984).
\item{[\rYanagida]} %% stability (fast waves)
E.~Yanagida,
{\it Stability of fast traveling pulse solutions of the FitzHugh-Nagumo equation},
J. Math. Biol. {\bf 22}, 81-104 (1985).
\item{[\rFlores]} %% stability (slow waves)
G.~Flores,
{\it Stability analysis for the slow traveling pulse of the FitzHugh-Nagumo system},
SIAM J. Math. Anal. {\bf 22} 392-399 (1991).
\item{[\rJKL]}
C.~Jones, N.~Kopell, R.~Langer,
{\it Construction of the FitzHugh-Nagumo pulse using differential forms}.
In ``Pattern and dynamics in reactive media'', IMA Volumes in Mathematics and its Applications,
Vol. 37, H.~Swinney, G.~Aris, D.~Aronson (eds), Springer-Verlag, New York, 101-116 (1991)
%%%%%%%%%%%%%%%%%%%%%%%%%% more and references
\item{[\rRGG}
C.~Roc\c soreanu, A.~Georgescu, N.~Giurgi\c teanu,
{\it The FitzHugh-Nagumo model: bifurcation and dynamics},
Kluwer Academic Publishers, Boston, 2000.
%%%%%%%%%%%%%%%%%%%%%%%%%% newer results etc.
\item{[\rLVV]}
W.~Liu, E.~Van Vleck,
{\it Turning points and traveling waves in FitzHugh–Nagumo type equations},
J. Differ. Equations {\bf 225}, 381-410 (2006).
\item{[\rGK]}
J.~Guckenheimer, C.~Kuehn,
{\it Homoclinic orbits of the FitzHugh-Nagumo equation: the singular limit},
Discrete Contin. Dynam. Systems S {\bf 2}, 851-872 (2009).
\item{[\rAANQ]} D.~Ambrosi, G.~Arioli, F.~Nobile, A.~Quarteroni,
{\it Electromechanical coupling in cardiac dynamics: the active strain approach},
SIAM J. Appl. Math. {\bf 71}, 605-621 (2011).
\item{[\rAAK]}
D.~Ambrosi, G.~Arioli, H.~Koch,
{\it A homoclinic solution for excitation waves on a contractile substratum},
SIAM J. Appl. Dyn. Syst. {\bf 11}, 1533-1542 (2012).
%%%%%%%%%%%%%%%%%%%%%%%%%% misc math
\item{[\rKato]}
T.~Kato,
{\it Perturbation theory for linear operators},
Springer-Verlag Berlin Heidelberg (1995).
\item{[\rEigen]}
This follows e.g.~from Theorems 4.5.26 and 4.5.31 in [\rKato].
%% see also beginning of Section 6 in Chapter 4
\item{[\rHP]}
E.~Hille, R.S.~Phillips,
{Functional analysis and semi-groups},
American Mathematical Society (1957).
\item{[\rSemi]} See e.g.~Theorem 13.2.1 in [\rHP] or Theorem 9.2.1 in [\rKato].
\item{[\rTrot]}
H.F.~Trotter,
{\it On the product of semigroups of operators},
Proc. Am. Math. Soc. {\bf 10}, 545-551 (1959).
\item{[\rCher]}
P.R.~Chernoff,
{\it Note on product formulas for operator semigroups},
J. Funct. Anal. {\bf 2}, 238-242 (1968).
\item{[\rVoigt]}
J.~Voigt,
{\it On the convex compactness property for the strong operator topology},
Note di Matematica Vol. XII, 259-269 (1992).
%%%%%%%%%%%%%%%%%%%%%%%%%% related CAP
\item{[\rAKi]} G.~Arioli, H.~Koch,
{\it Computer-assisted methods for the study of
stationary solutions in dissipative systems,
applied to the Kuramoto-Sivashinski equation},
Arch. Ration. Mech. An. {\bf 197}, 1033-1051 (2010).
\item{[\rAKii]} G.~Arioli, H.~Koch,
{\it Non-symmetric low-index solutions
for a symmetric boundary value problem},
J. Differ. Equations {\bf 252}, 448-458 (2012).
%%%%%%%%%%%%%%%%%%%%%%%%%% computer etc
\item{[\rAda]} Ada Reference Manual, ISO/IEC 8652:2012(E),
\hfil\break
available e.g. at {\tt http://www.ada-auth.org/arm.html}.
\item{[\rGnat]}
A free-software compiler for the Ada programming language,
which is part of the GNU Compiler Collection;
see {\tt http://gcc.gnu.org/software/gnat/}.
\item{[\rMPFR]} The MPFR library for multiple-precision floating-point computations
with correct rounding; see {\tt http://www.mpfr.org/}.
\item{[\rIEEE]} The Institute of Electrical and Electronics Engineers, Inc.,
{\it IEEE Standard for Binary Float\-ing--Point Arithmetic},
ANSI/IEEE Std 754--2008.
\item{[\rCode]}
The computer programs are included with the
preprint {\tt mp\_arc 13-91}.
They are also available at
{\tt ftp://ftp.ma.utexas.edu/pub/papers/koch/fhn/index.html}.
}
\bye