%!PS-Adobe-2.0 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: kermit.dvi %%Pages: 40 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips kermit %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1995.07.13:1327 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 40258431 52099146 1000 300 300 (kermit.dvi) @start /Fa 4 63 df<0018007800F001E003C007800F001F001E003E003C007C007C00 7800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800 F800F800F800F800F800F8000D25707E25>56 D58 D<007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C00 7C007C007C007C007C007C007C00F800F800F800F001F001E003E003C0078007000E001C 003800F000C000F00038001C000E000700078003C003E001E001F000F000F800F800F800 7C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C00 7C007C007C007C007C007C0E4D798025>60 D62 D E /Fb 1 51 df<7FFFFCFFFFFEC00006C00006C00006C00006C00006C00006 C00006C00006C00006C00006C00006C00006C00006C00006C00006C00006C00006C00006 C00006FFFFFEFFFFFE17177D991F>50 D E /Fc 36 120 df45 DI<001C0000003E0000003E0000002E0000006700000067000000 E7800000C7800000C3800001C3C0000183C0000181C0000381E0000381E0000700F00007 00F0000600F0000E0078000FFFF8000FFFF8001C003C001C003C0018003C0038001E0038 001E0070001F0070000F0070000F00E0000780191D7F9C1C>65 D<003FC000FFF003C0F0 0780300F00001E00003C00003C0000780000780000780000F00000F00000F00000F00000 F00000F00000F00000F00000F000007800007800007800003C00003C00001E00000F0008 07801803C07800FFF0003F80151F7D9D1B>67 DIII<003F8001FFF003C0F80780380F00181E00003C00003C 0000780000780000780000F00000F00000F00000F00000F00000F00000F007F8F007F8F0 00387800387800387800383C00383C00381E00380F003807803803C0F801FFF0003F8015 1F7D9D1C>I73 D76 DII<003F000001FFE00003FFF00007C0F8000F807C001E001E003E001F003C000F007800 07807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000 03C0F00003C0F80007C078000780780007807C000F803C000F003E001F001F003E000F80 7C0007C0F80003FFF00001FFE000003F00001A1F7E9D1F>II82 D<03F8000FFE001C0F00380700700300600000E00000E00000E00000E00000F000007800 007F00003FE0001FFC0007FE0001FF00001F800007800003C00003C00001C00001C00001 C00001C0C00180E00380F007007C0E001FFC0007F000121F7E9D17>II87 D<0FC03FF07FF87038401C001C001C00FC0FFC3F FC781CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97 D<07E00FF81FFC3C1C700470 00E000E000E000E000E000E000700070043C1C1FFC0FF807E00E127E9112>99 D<000E000E000E000E000E000E000E000E000E000E000E0F8E1FEE3FFE7C3E700E700EE0 0EE00EE00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D7E9C15>I<07C01FE03FF0 78787018601CFFFCFFFCFFFCE000E000E000700070043C1C3FFC1FF807E00E127E9112> I<03C3C00FFFC01FFFC01C3800381C00381C00381C00381C00381C001C38001FF8001FF0 003BC0003800003800001FFC001FFF003FFF80700780E001C0E001C0E001C0F003C07C0F 803FFF001FFE0007F800121B7F9115>103 D105 D107 DIII<03F0000FFC00 1FFE003C0F00780780700380E001C0E001C0E001C0E001C0E001C0F003C0700380780780 3C0F001FFE000FFC0003F00012127F9115>II114 D<1FC03FF07FF0F030E000E000F0007F003FC01FE000 F0003800388038F078FFF07FE01FC00D127F9110>I<1C001C001C001C001C001C00FFE0 FFE01C001C001C001C001C001C001C001C001C001C001C001C001C201FF00FF007C00C18 7F970F>IIII E /Fd 2 49 df<040004000400C460E4E03F800E003F80E4E0C4600400040004000B0D7E8D 11>3 D<040E0E1C1C1C38383070706060C0C0070F7F8F0A>48 D E /Fe 46 122 df<0007000E001C0038007000E001C001C00380070007000E000E001C00 1C001C00380038003800700070007000700070007000E000E000E000E000E000E000E000 7000700070007000380038001C001C000E000700102A7D9E10>40 D<00E000700038001C001C000E000E000E000E0007000700070007000700070007000700 070007000E000E000E000E000E001C001C001C003800380070007000E000E001C001C003 8007000E001C0038007000E000102A809E10>I<70E0E060C0C0808004087C820C>44 D<0004001C00F807F80638003800380070007000700070007000E000E000E000E001C001 C001C001C001C003800380038003800380FFF8FFF80E1C7C9B15>49 D<003F00007FC001C1E00180E00300F00700700600700600700400700000700000F00000 E00001E00001C0000380000700000E00001C0000780000F00001E0000380000700000E00 001C0000780000FFFF00FFFF00141C7E9B15>I<0E0E1C00000000000000000000000070 E0E007127C910C>58 D<000070000000F8000000F8000001B80000033800000338000006 380000063C00000C3C00001C3C0000183C0000383C0000303C0000703C0000601E0000E0 1E0001C01E0001C01E0003FFFE0003FFFE0007001F0006000F000E000F001C000F001C00 0F0038000F0030000F0070000F80E0000780191D7F9C1C>65 D<0007F8003FFE00781E01 E00403C0000780000F00000E00001E00003C00003C0000780000780000780000F00000F0 0000F00000F00000F00000F00000F00000F00000F00000F000007000007800003800203C 00E01F03C007FF8001FC00171F7A9D1B>67 D<03FFF00003FFFC0003C03E0007800F0007 80078007800780078003C0078003C00F0003C00F0001C00F0001C00F0001C00F0001C01E 0003C01E0003C01E0003C01E0003C03C0007803C0007803C000F003C000F003C001E0078 001C0078003C00780078007801E0007807C000FFFF0000FFFC00001A1D7C9C1E>I<03FF FF03FFFF03C0000780000780000780000780000780000F00000F00000F00000F00000F00 001FFFF01FFFF01E00001E00003C00003C00003C00003C00003C00007800007800007800 00780000780000FFFFC0FFFFC0181D7C9C19>I<03FFFE03FFFE03C00007800007800007 80000780000780000F00000F00000F00000F00000F00001FFFE01FFFE01E00001E00003C 00003C00003C00003C00003C0000780000780000780000780000780000F00000F0000017 1D7C9C18>I<0007F0003FFE00781F01E00603C0020780000F00000E00001E00003C0000 3C0000780000780000780000F00000F00000F00000F007F8F00FF0F00070F00070F00070 F00070F000E07000E07800E03800E03C00E01F07C007FF8001FC00181F7A9D1C>I<03C0 03C003C0078007800780078007800F000F000F000F000F001E001E001E001E003C003C00 3C003C003C0078007800780078007800F000F0000A1D7C9C0C>73 D<03C000F003C001C003C0038007800F0007801E0007803C00078078000780F0000F01C0 000F0380000F0F00000F1E00000F3E00001E7F00001EEF00001FCF80001F8780003F0780 003E07C0003C03C0003C03E0003C01E0007801E0007801F0007800F0007800F800780078 00F0007800F0003C001C1D7C9C1D>75 D<03C003C003C0078007800780078007800F000F 000F000F000F001E001E001E001E003C003C003C003C003C0078007800780078007800FF FEFFFE0F1D7C9C16>I<03F0001F8003F0001F8003F0003F800770002F000770006F0007 70006F00077800CF00077801CF000E78019E000E78039E000E38031E000E38071E000E38 061E001C380E3C001C3C0C3C001C3C1C3C001C3C183C00383C387800383C307800381C70 7800381C607800381CC07800701CC0F000701D80F000701D80F000701F00F000701F00F0 00E00E01E000E00001E000211D7C9C24>I<03F001C003F001C003F001C0077003800778 03800738038007380380073803800E3C07000E3C07000E3C07000E1C07000E1E07001C1E 0E001C1E0E001C1E0E001C0E0E00380F1C00380F1C00380F1C0038071C0038071C007007 38007007B8007007B8007003B8007003F800E003F000E003F0001A1D7C9C1D>I<0007F0 00001FFC00007FFE0001F83F0003E00F8007C007800F8007C00F0003C01E0003C03C0003 C03C0001C0780001C0780001C0780003C0F00003C0F00003C0F00003C0F00003C0F00007 80F0000780F0000F00F0000F00F0001E00F0003E0078007C007C00F8003C01F0003F07E0 001FFF800007FF000001F800001A1F7B9D1F>I<03FFF00003FFFC0003C03E0007800F00 07800F000780078007800780078007800F0007000F000F000F000E000F001E000F003C00 1E00F8001FFFF0001FFFC0001E0000003C0000003C0000003C0000003C0000003C000000 7800000078000000780000007800000078000000F0000000F0000000191D7C9C1B>I<03 FFE00003FFFC0003C03E0007800F00078007000780078007800780078007800F0007000F 000F000F001E000F003C000F00FC001FFFF0001FFFE0001FFF00001E0700003C0780003C 0780003C03C0003C03C0003C03C0007801E0007801E0007801E0007800F0007800F000F0 00F000F0007800191D7C9C1B>82 D<001FC0007FF000E0780380300300100700000E0000 0E00000E00001E00001E00000F00000FC00007FC0003FF0001FF80007FC00007C00003E0 0001E00001E00000E00000E00001C00001C0C00380C00300E00700781C003FF8000FE000 151F7D9D17>II<0F00070F00070F00071E000E1E00 0E1E000E1E000E1E000E3C001C3C001C3C001C3C001C3C001C7800387800387800387800 38F00070F00070F00070F00070F000E0F000E0F001C0F001C07003807807003C1E001FF8 0007E000181E7A9C1D>I87 D89 D<01F807FC1FFE1C0E10070007000E007E0FFE3FFE7C0E701CE01CE01CF07CFFFC7FF83E 3810127D9114>97 D<0380000380000380000700000700000700000700000700000E0000 0E00000E00000E3E000EFF001FFF001F07801C03801C0380380380380380380380380380 380700700700700F00781E00783C007FF800EFF000E3E000111D7D9C15>I<01F807FC0F FE1E0E380070007000E000E000E000E000E000E000E008F0787FF83FE01F800F127C9112 >I<0000E00000E00000E00001C00001C00001C00001C00001C000038000038000038003 E3800FFB801FFF003E0F00380F00700700700E00E00E00E00E00E00E00E00E00E01C00E0 1C00E03C00F0FC007FDC007FB8001E3800131D7C9C15>I<03E007F81FFC1C3C380C700C 7FFCFFFCFFFCC000C000C000E000E008F0787FF83FE01F800E127C9112>I<003E3C007F FC00FFFC01C3800383C00381C007038007038007038003870003FE0007FC0006F0000E00 000E00000FFE000FFF801FFFC03803C07001C0F001C0E001C0F003C0780F803FFF001FFC 0007F000161B809115>103 D<0780078007800F0000000000000000000000000000000E 000E001C001C001C001C003800380038003800380070007000700070007000E000E00009 1D7D9C0A>105 D<0380000380000380000700000700000700000700000700000E00000E 00000E00000E07800E0F001C1E001C3C001C78001CF00039E0003FC0003FE0003EE0003C F000787000707800707800703800703C00E01C00E01E00111D7D9C14>107 D<038003800380070007000700070007000E000E000E000E000E001C001C001C001C0038 00380038003800380070007000700070007000E000E000091D7D9C0A>I<0E3F03F00EFF 8FF81DFFDFFC1F03F03C1E01E01C1C01C01C3C03C0383803803838038038380380383803 80387007007070070070700700707007007070070070E00E00E0E00E00E01E127D9122> I<0E3E000EFF001FFF801F07801E03801C03803C0700380700380700380700380700700E 00700E00700E00700E00700E00E01C00E01C0011127D9115>I<00FC0003FE000FFF001E 07803C03C07801C07001C0E001C0E001C0E001C0E00380E00380E00700F00F00783E007F FC003FF0000FC00012127D9115>I<038F8003BFC007FFC007C3E00701E00700E00E00E0 0E00E00E00E00E00E00E01C01C01C01C03C01E07801E0F001FFE003BFC0038F800380000 380000700000700000700000700000700000E00000131A7F9115>I<0E380EF81DF01F80 1F001E003C00380038003800380070007000700070007000E000E0000D127D910E>114 D<03F80FFE1FFC3C0C3800380038003F801FE00FF000F8003800388038E070FFF07FE01F 800F127E9110>I<0E000E000E001C001C001C00FFE0FFE0380038003800380070007000 700070007000E000E000E000E300FF00FF007C000B187B970F>I<1C03801C0380380700 380700380700380700700E00700E00700E00700E00700E00E01C00E01C00E03C00E07C00 FFFC00FFB8007E380011127C9115>III<1E00F00E01E00703C0070780038E0001DC0001F80000F000 00E00000F00001B000033800061C000E1C001C0E00380E00700700E0078014127F9113> I<0700380700700700700700E00700E00381C0038380038380038700038700018E0001CC 0001DC0001D80001D80000F00000E00000E00000C000018000018000030000070000FE00 00FC0000F80000151A809113>I E /Ff 38 123 df<007000E001C003C007800F800F00 1F001F003E003E007E007E007C007C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00 FC00FC007C007C007E007E003E003E001F001F000F000F80078003C001C000E000700C2A 7E9E12>40 DI<0003000000078000000780 000007800000078000000780000007800000078000000780000007800000078000000780 0000078000000780007FFFFFF0FFFFFFF8FFFFFFF87FFFFFF00007800000078000000780 000007800000078000000780000007800000078000000780000007800000078000000780 0000078000000300001D207D9924>43 D<0006000F000F001F001E001E003E003C003C00 7C0078007800F800F000F001F001E001E003E003C003C003C007C0078007800F800F000F 001F001E001E003E003C003C007C0078007800F800F000F000600010297D9E17>47 D<007000F007F07FF0FFF07BF003F003F003F003F003F003F003F003F003F003F003F003 F003F003F003F003F003F003F003F003F003F07FFE7FFF7FFE101E7D9D17>49 D<07F0001FFC003FFE007FFF007C3F80F01F80F01F80700FC0600FC0200FC0000FC0000F C0000F80001F80001F00003F00007E00007C0000F80001F00003E0000780000F00001F00 001E00003C00007FFFC0FFFFC0FFFFC07FFFC0121E7E9D17>I58 D<003FE001FFFC07FFFC0FFFFC1FE0783F80183F 00087F00007E00007E0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC 0000FC0000FC00007E00007E00007F00003F00023F800E1FE03E0FFFFE07FFFE01FFF800 3FE0171F7D9D1D>67 D<7C003FFC003FFC003FFC003FFC003FFC003FFC003FFC003FFC00 3FFC003FFC003FFC003FFFFFFFFFFFFFFFFFFFFFFFFFFC003FFC003FFC003FFC003FFC00 3FFC003FFC003FFC003FFC003FFC003FFC003FFC003F7C003F181D7C9C21>72 D<7CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC7C061D7C9C0E> I<7C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00 00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00 00FC0000FFFF80FFFF80FFFF807FFF80111D7C9C18>76 D<7E00007FFF0000FFFF0000FF FF8001FFFF8001FFFBC003DFFBC003DFFBC003DFF9E0079FF9E0079FF9F00F9FF9F00F9F F8F00F1FF8F81F1FF8F81F1FF8781E1FF87C3E1FF87C3E1FF83C3C1FF83E7C1FF81E781F F81E781FF81E781FF80FF01FF80FF01FF807E01FF807E01FF803C01F7800001F201D7C9C 29>I<7E001FFF001FFF801FFF801FFFC01FFFC01FFBE01FFBE01FF9F01FF9F01FF8F81F F8F81FF87C1FF87C1FF87C1FF83E1FF83E1FF81F1FF81F1FF80F9FF80F9FF807DFF807DF F803FFF803FFF801FFF801FFF800FF78007F181D7C9C21>I<7FFE00FFFFC0FFFFE0FFFF F0FC03F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F0FC07F0FFFFE0FFFFC0FFFE 00FC3F00FC1F80FC1F80FC0FC0FC0FC0FC07E0FC07E0FC03F0FC01F0FC01F8FC00FCFC00 FC7C007C161D7C9C1D>82 D<03FC000FFF801FFFC03FFFC03E07C07C01807C00807C0080 7C00007C00007E00007F00003FF0003FFC001FFF000FFF8003FF8000FFC0000FC00007E0 0003E00003E04003E04003E06003E0F807C0FE0FC0FFFFC07FFF801FFF0003FC00131F7E 9D19>I<7FFFFF80FFFFFF80FFFFFF80FFFFFF80003F0000003F0000003F0000003F0000 003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000 003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000 003F0000003F0000001F0000191D7E9C1E>I87 D<03FC001FFF003FFF803C0F80300FC0200FC0000FC0007FC00FFFC03F8FC07E0FC0FC0F C0FC0FC0FC0FC0FC0FC07E3FC07FEFC03FCFC01F8FC012137F9216>97 D<7C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC7C00FDFE 00FFFF00FE1F80FC0F80FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0F C0FC1F80FE1F80FFFF00FDFE007CF800121D7E9C17>I<07F01FFC3FFE7E0E7E067C04FC 00FC00FC00FC00FC00FC00FC007C007E017E0F3FFF1FFF07FC10137E9214>I<000FC000 0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC007CFC01FFFC03FFFC07E 1FC07E0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC07C0FC07E 1FC03FFFC01FEFC00FCFC0121D7E9C17>I<03F8000FFE001FFF003E0F807E07807C07C0 FC07C0FC07C0FFFFC0FFFFC0FC0000FC0000FC00007C00007E00803F03801FFF800FFF80 03FE0012137F9215>I<01FE07FE0FFE0F861F801F801F801F801F801F807FF0FFF0FFF0 1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F800F800F1D809C 0E>I<0FF8F03FFFF07FFF707C1F00FC1F80FC1F80FC1F80FC1F80FC1F807C1F007FFF00 3FFC002FF8006000007000007FFE007FFFC03FFFE03FFFE07FFFF0F001F0F000F0F000F0 F000F07C03E03FFFC01FFF8007FE00141C7F9217>I<7C0000FC0000FC0000FC0000FC00 00FC0000FC0000FC0000FC0000FC0000FC3E00FCFF80FDFF80FF0FC0FE0FC0FC0FC0FC0F C0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC07C0F C0121D7E9C17>II<7800F800F800F800F800F800F800F800F800F800F83FF87EF8FEF9 FCFBF8FFF0FFE0FFC0FFC0FFE0FFE0FFF0F9F8F8F8F8FCF87EF83FF83F781F101D7D9C16 >107 D<7CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC7C061D7E 9C0B>I<7C3F01F8FCFFC7FEFDFFCFFEFF07F83FFE07F03FFC07E03FFC07E03FFC07E03F FC07E03FFC07E03FFC07E03FFC07E03FFC07E03FFC07E03FFC07E03FFC07E03FFC07E03F FC07E03F7C03E01F20137E9225>I<7C3E00FCFF80FDFF80FF0FC0FE0FC0FC0FC0FC0FC0 FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC07C0FC0 12137E9217>I<03FC000FFF003FFFC03F0FC07E07E07C03E0FC03F0FC03F0FC03F0FC03 F0FC03F0FC03F0FC03F07C03E07E07E07F0FE03FFFC00FFF0003FC0014137F9217>I<7C 7C00FDFE00FFFF00FE1F80FC1F80FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC 0FC0FC0FC0FC1F80FE3F80FFFF00FDFE00FCF800FC0000FC0000FC0000FC0000FC0000FC 0000FC00007C0000121B7E9217>I<7C60FDE0FDE0FFE0FF00FE00FE00FC00FC00FC00FC 00FC00FC00FC00FC00FC00FC00FC007C000B137E920F>114 D<0FF81FFE3FFE781E7804 78007E007FE03FF81FFC0FFC03FE403E401EE01EF81EFFFC7FF80FE00F137F9212>I<1F 003F003F003F003F007FF8FFF8FFF83F003F003F003F003F003F003F003F003F003F003F 003F003F103FF81FF80FC00D187F9711>I<7C0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0 FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC1FC0FC3FC07FEFC07FCFC0 1F8FC012137E9217>II<3FFF807FFF807FFF80003F00007E00007E0000FC0001F80003F00003E00007E0000F C0001F80003F00003F00007E0000FFFF80FFFF80FFFF8011137F9214>122 D E /Fg 35 120 df<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F803F 000F801E000F800C000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F 000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F 000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F007FF0FF E07FF0FFE01B237FA21F>12 D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003 F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C0180380 180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007 FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C000 1F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF 00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E0 0003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E00307E00707E0 0E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E0 0007E00007E00007E000FFFE00FFFE17207E9F1C>I<1000201E01E01FFFC01FFF801FFF 001FFE001FF8001BC00018000018000018000018000019FC001FFF001E0FC01807E01803 E00003F00003F00003F80003F83803F87C03F8FE03F8FE03F8FC03F0FC03F07007E03007 C01C1F800FFF0003F80015207D9F1C>I<001F8000FFE003F07007C0F00F01F81F01F83E 01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0FD80F0FF00F8FE007CFE007CFC 007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E007C1E00F80F00F00783E003 FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFFFC7FFFF87FFFF87FFFF0 E00060E000C0C00180C00300C00300000600000C00001C00001800003800007800007800 00F00000F00000F00001F00001F00001F00003F00003F00003F00003F00003F00003F000 03F00001E00017227DA11C>I<00FE0003FFC00703E00E00F01C00F01C00783C00783E00 783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807 FC7801FEF000FEF0003EF0001EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF 0017207E9F1C>I<01FE0007FF800F83E01E01F03E00F07C00F87C0078FC007CFC007CFC 007CFC007EFC007EFC007EFC007E7C00FE7C00FE3E01FE1E037E0FFE7E07FC7E00207E00 007C00007C1E007C3F00F83F00F83F00F03F01E01E03C01C0F800FFE0003F80017207E9F 1C>I<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F8000 07801F800007803F000003803F000003807F000001807E000001807E00000180FE000000 00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 7E000000007E000001807F000001803F000001803F000003801F800003000F8000030007 C000060003F0000C0001F800380000FF00F000001FFFC0000003FE000021227DA128>67 DI70 D77 DI80 D82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC0000FF00 00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F0000 3FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F >I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801 C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F80000 0003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003 F800000003F800000003F800000003F8000003FFFFF80003FFFFF80022227EA127>I<07 FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F 01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97 D<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC00 00FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE0014167E9519 >99 D<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E0000 003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E 003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC 003E00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC01A 237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8 FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000FF00 15167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F80000F80 000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8 007FF80013237FA211>I<1C003E007F007F007F003E001C000000000000000000000000 000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F00FFE0FFE00B247EA310>105 D108 D110 D<00FE0007FFC00F83E01E00F03E00F87C007C7C00 7C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01 F00F83E007FFC000FE0017167E951C>II114 D<0FF3003FFF00781F00600700E00300E00300F00300FC00007F E0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F00700FC0E00EF FC00C7F00011167E9516>I<018000018000018000018000038000038000078000078000 0F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F80000F80000F8000 0F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE0000F800 11207F9F16>II119 D E /Fh 17 117 df<03FFFFC003FFFFF0003F01F8003F007C003F003E003F00 3E007E001F007E001F007E001F007E001F00FC003F00FC003F00FC003F00FC003F01F800 3E01F8007E01F8007E01F8007C03F000FC03F000F803F000F803F001F007E003E007E007 C007E00F8007E07F00FFFFFC00FFFFE000201C7D9B24>68 D<03FFFFF803FFFFF8003F00 F8003F0070003F0030003F0030007E0030007E3030007E3030007E303000FC600000FCE0 0000FFE00000FFE00001F8C00001F8C00001F8C00001F8C06003F180C003F000C003F001 8003F0018007E0030007E0070007E00E0007E03E00FFFFFE00FFFFFC001D1C7D9B1F>I< 03FFFFF003FFFFF0003F01F0003F0060003F0060003F0060007E0060007E0060007E3060 007E306000FC600000FC600000FCE00000FFE00001FFC00001F9C00001F8C00001F8C000 03F1800003F1800003F0000003F0000007E0000007E0000007E0000007E00000FFFF0000 FFFF00001C1C7D9B1E>I<01FFFE01FFFC001F80001F80001F80001F80003F00003F0000 3F00003F00007E00007E00007E00007E0000FC0000FC0000FC0000FC0001F80001F80001 F80001F80003F00003F00003F00003F0007FFF00FFFF00171C7F9B14>73 D<03FF807FF003FFC07FF0003FC00600003FE006000037E006000037E006000063F00C00 0063F00C000061F80C000061F80C0000C1FC180000C0FC180000C0FE180000C07E180001 807E300001803F300001803F300001801FB00003001FE00003001FE00003000FE0000300 0FE000060007C000060007C000060003C000060003C000FFE0018000FFE0018000241C7D 9B25>78 D<00F980038FC00F07C01E03C03E07803C07807C07807C0780F80F00F80F00F8 0F00F80F10F01E30F01E30F01E30703E6038EE400F878014127C9119>97 D<0003F80003F80000780000F00000F00000F00000F00001E00001E00001E00001E000FB C0038FC00F07C01E03C03E07803C07807C07807C0780F80F00F80F00F80F00F80F10F01E 30F01E30F01E30703E6038EE400F8780151D7C9C19>100 D<00FC03860F061E033E063C 067C0C7CF8FF80F800F800F800F800F8027807380E1C380FE010127C9116>I<0001F800 039C00073C000F7C000F7C000F38001E00001E00001E00001E00001E0003FFF003FFF000 3C00003C00003C0000780000780000780000780000780000780000F00000F00000F00000 F00000F00001E00001E00001E00001E00071C000FBC000FB8000F30000E600003C000016 25819C11>I<0FE0000FE00001E00003C00003C00003C00003C000078000078000078000 0780000F3F000F63800F83C00F03C01E03C01E03C01E03C01E03C03C07803C07803C0780 3C0F08780F18780F18781E10781E30F00E60600780151D7D9C19>104 D<00E001F001F001E000C000000000000000000000000000000F00338023C063C0C780C7 8007800F000F000F001E001E203C603C603C6038C018800F000C1E7D9D0F>I<1FC01FC0 03C007800780078007800F000F000F000F001E001E001E001E003C003C003C003C007800 780078007A00F600F600F600F60076003C000A1D7C9C0C>108 D<1E0FC03318E063A0F0 63C0F0C780F0C780F00780F00780F00F01E00F01E00F01E00F03C21E03C61E03C61E0784 1E078C3C03981801E017127D911B>110 D<00FE0003C3800701C01E01E01E01E03C01E0 7C01F07C01F0F803E0F803E0F803E0F803C0F807C0F00780780F00781E003C3C000FE000 14127C9119>I<1E1F0033218063C1C063C3C0C787C0C787C00783800780000F00000F00 000F00000F00001E00001E00001E00001E00003C000018000012127D9115>114 D<01F8020604060C0F1C1E1C0C1F801FF00FF803FC003C300E780CF80CF808F01870301F C010127D9114>I<00C001E001E001E003C003C003C003C0FFF0FFF0078007800F000F00 0F000F001E001E001E001E103C303C303C203C601CC00F800C1A7D9910>I E /Fi 5 121 df<06070600000000384C4C8C98181830326262643808147F930C>105 D<0060007000600000000000000000038004C0046008C008C000C000C001800180018001 8003000300030003006600E600CC0078000C1A81930E>I<3E0006000C000C000C000C00 1800187018B819383230340038003E006300631063106310C320C1C00D147E9312>I<31 E05A704C709C609800180018003000300030003000600060000C0D7F8C0F>114 D<0E3C13CE238E430C43000300030006000608C608E610CA2071C00F0D7F8C13>120 D E /Fj 4 51 df<00600000600000600000600000600000600000600000600000600000 6000FFFFF0FFFFF000600000600000600000600000600000600000600000600000600000 600014167E9119>43 D<0F0030C0606060604020C030C030C030C030C030C030C030C030 C03040206060606030C00F000C137E9211>48 D<0C001C00EC000C000C000C000C000C00 0C000C000C000C000C000C000C000C000C000C00FFC00A137D9211>I<1F0060C06060F0 70F030603000700070006000C001C00180020004000810101020207FE0FFE00C137E9211 >I E /Fk 48 118 df<0007E0001C1000703800E07801C07801C03001C00001C0000380 000380000380003FFFF00380F00380700700E00700E00700E00700E00700E00700E00E01 C00E01C00E01C00E01C00E01C00E01C01C03801C03C0FF8FF0151D7F9C17>12 D<000400080030006000C0008001800300060006000C000C001800180038003000300070 007000600060006000E000E000E000E000E000E000E000E0006000600060006000200030 003000180008000C00040002000E2A7C9E10>40 D<010000800040006000200030001000 1800180018001C000C000C000C000C000C000C000C000C001C001C001C00180018003800 38003000300070006000E000C001C001800300030006000C0018003000600080000E2A80 9E10>I<7070F06004047C830C>46 D<0018007003F00C7000700070007000E000E000E0 00E000E000E001C001C001C001C001C001C003800380038003800380038007000780FFF8 0D1C7C9B15>49 D<007E000183800201C00400E00400E00F00E00F00E01F00E01F00E00E 00E00001E00001C0000380000380000700000E00001C0000380000600000C00001800003 00800600800801001001003FFF007FFE00FFFE00131C7E9B15>I<007C00018700020380 0403800F03C00F03C00F03C00E0380000380000700000600000C0000380003F000001C00 000E00000E00000F00000F00000F00700F00F80F00F80F00F00E00E01E00801C00403800 3070000FC000121D7D9B15>I<0000C0000180000380000380000780000B800013800027 0000670000C700008700010700020700040E00080E00180E00100E00200E00400E00FFFF C0001C00001C00001C00001C00001C00003800003C0003FF80121C7E9B15>I<0301C003 FF8003FE0007FC0004000004000004000004000004000008000008F8000B0C000C0E0008 0700080700000700000780000780000780700F00F00F00F00F00F00E00801E00801C0040 380040300030E0000F8000121D7D9B15>I<003E0000E1000180800303800607800C0780 1C070018000038000030000071F000761800780C00E80E00F00600F00600E00700E00700 E00700E00E00C00E00C00E00C00E00C01C00E0180060380060300030C0000F8000111D7C 9B15>I<1000003FFFC03FFFC03FFF806001004002004004008008000008000010000020 0000400000C0000080000180000180000300000700000700000F00000E00000E00001E00 001E00001E00003C00003C00003C0000180000121D7B9B15>I<007C0001830002018006 01800C00C00C00C00C00C01C01801C01801E03000F86000FCC0007F00003F80003FC000C 7E00183F00300F00600700600300C00300C00300C00300C00200C0060060040060180038 30000FC000121D7D9B15>I<00F8000304000606000C03001C0300380300380380300380 700380700380700380700380700780700700700F00300F0018170008270007CE00000E00 000C00001C00601800F03800F03000E0600080C0004380003E0000111D7C9B15>I<0C1E 1C1C000000000000000000007070F06007127C910C>I<00002000000030000000700000 0070000000F0000000F0000001F00000037800000278000006780000047800000C780000 087C0000183C0000103C0000203C0000203C0000403C0000403E0000FFFE0000801E0001 001E0001001E0002001E0002000F0004000F0004000F001E001F00FF80FFF01C1D7F9C1F >65 D<0FFFFC0000F8070000F0038000F003C000F001C000F001E000F001E001E001C001 E003C001E003C001E0078001E00F0001E03C0003FFF80003C01E0003C00F0003C0078003 C0078003C007800780078007800780078007800780078007800F0007801E000F003C000F 007800FFFFE0001B1C7E9B1D>I<0007F010001C0C300070026000C001E0038000E00700 00E00E0000600E0000601C0000403C00004038000040780000007800000078000000F000 0000F0000000F0000000F0000000F0000000F0000080F000010070000100700001003800 0200380004001C0004000C001800060020000380C000007F00001C1E7C9C1E>I<0FFFFC 0000F8078000F001C000F000E000F0007000F0007000F0007801E0003801E0003801E000 3801E0003801E0003C01E0003803C0003803C0007803C0007803C0007803C0007003C000 F0078000E0078000E0078001C0078003800780078007800E000F001C000F007000FFFFC0 001E1C7E9B20>I<0FFFFFE000F801E000F000E000F0004000F0004000F0004000F00040 01E0004001E0404001E0400001E0400001E0C00001E1C00003FF800003C1800003C08000 03C0800003C0800003C08080078000800780008007800100078001000780030007800600 0F000E000F003E00FFFFFC001B1C7E9B1C>I<0FFFFFC000F803C000F001C000F0008000 F0008000F0008000F0008001E0008001E0408001E0400001E0400001E0C00001E1C00003 FF800003C1800003C0800003C0800003C0800003C0800007800000078000000780000007 80000007800000078000000F0000000F800000FFF800001A1C7E9B1B>I<0007F010001C 0C300070026000C001E0038000E0070000E00E0000600E0000601C0000403C0000403800 0040780000007800000078000000F0000000F0000000F0000000F000FFF0F0000F80F000 0780F0000F0070000F0070000F0038000F0038000F001C001F000C001E00060066000381 8200007E00001C1E7C9C21>I<0FFF9FFE00F803E000F003C000F003C000F003C000F003 C000F003C001E0078001E0078001E0078001E0078001E0078001E0078003FFFF0003C00F 0003C00F0003C00F0003C00F0003C00F0007801E0007801E0007801E0007801E0007801E 0007801E000F003C000F803E00FFF3FFC01F1C7E9B1F>I<0FFF8000F80000F00000F000 00F00000F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003C000 03C00003C00003C0000780000780000780000780000780000780000F00000F8000FFF800 111C7F9B0F>I<0FFF83FE00F800F800F000E000F0008000F0010000F0020000F0040001 E0080001E0100001E0400001E0800001E1C00001E3C00003C5E00003C9E00003D1F00003 E0F00003C0F00003C078000780780007803C0007803C0007801E0007801E0007800F000F 000F000F801F80FFF07FF01F1C7E9B20>75 D<0FFFC000F80000F00000F00000F00000F0 0000F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003C0 0003C0040780040780040780040780080780080780180F00380F00F0FFFFF0161C7E9B1A >I<0FF80007FC00F8000FC000BC000F8000BC00178000BC00178000BC00278000BC0027 80011E004F00011E004F00011E008F00011E008F00011E010F00010F010F00020F021E00 020F021E00020F041E00020F041E000207881E000207901E000407903C000407A03C0004 07A03C000407C03C000403C03C000403803C000C038078001E03007C00FF8307FF80261C 7E9B26>I<0FF807FE00F800F000FC006000BC004000BE0040009E0040009E0040010F00 80010F008001078080010780800103C0800103C0800201E1000201E1000200F1000200F1 000200F9000200790004007E0004003E0004003E0004001E0004001E0004000E000C000C 001E000400FF8004001F1C7E9B1F>I<0007F00000381C0000E00E0001C0030003800380 070001C00E0001C01E0001E01C0000E03C0000E0380000E0780000F0780000F0780000F0 F00001E0F00001E0F00001E0F00001E0F00003C0F00003C0F00003C07000078070000700 78000F0038001E003C001C001C0038000E00E0000383800000FE00001C1E7C9C20>I<0F FFFC0000F80F0000F0038000F003C000F001C000F001C000F001C001E003C001E003C001 E003C001E0038001E0070001E00E0003C03C0003FFE00003C0000003C0000003C0000003 C000000780000007800000078000000780000007800000078000000F0000000F800000FF F000001A1C7E9B1C>I<0FFFF80000F80E0000F0078000F003C000F001C000F001E000F0 01E001E003C001E003C001E0038001E0070001E00E0001E03C0003FFE00003C0700003C0 380003C03C0003C01C0003C01E0007803C0007803C0007803C0007803C0007803C000780 3C080F003C100F801C10FFF01C20000007C01D1D7E9B1F>82 D<003F0400C0CC01803803 00380600180E00180E00180E00181E00101E00001F00000F80000FF80007FF0003FF8001 FFC0003FE00003E00001E00000E00000E04000E04000E04000E04000C06001C0E00180F0 0300CC0E0083F800161E7E9C17>I<1FFFFFF03C07C0F030078030200780206007802040 07802040078020400F0020800F0020000F0000000F0000000F0000000F0000001E000000 1E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C000000 3C0000003C000000780000007C00001FFFE0001C1C7C9B1E>II87 D89 D<07F0001C18001E0C001C0E00180E00000E 00000E0001FE000F0E001C1C00301C00701C00E01C40E01C40E03C40E05C80709D803F0E 0012127D9115>97 D<01F8071C0C1E181C38183000700070007000E000E000E000600060 047008301018200FC00F127D9112>99 D<01F8070C0C061C073803300370037FFF7000E0 00E000E00060006002300430081C3007C010127E9112>101 D<000F800039C00061C000 E3C001C18001C00001C00001C0000380000380000380003FF80003800003800007000007 00000700000700000700000700000E00000E00000E00000E00000E00000E00001C00001E 0000FFC000121D7F9C0D>I<00C001C001C0018000000000000000000000000000001F80 078003800700070007000700070007000E000E000E000E000E000E001C001E00FF800A1D 7F9C0C>105 D<07E001E001C001C001C001C001C001C003800380038003800380038007 00070007000700070007000E000E000E000E000E000E001C001E00FF800B1D7F9C0C> 108 D<1F8F8007B0C003C0E00780E00780E00700E00700E00700E00700E00E01C00E01C0 0E01C00E01C00E01C00E01C01C03801E03C0FF9FF014127F9117>110 D<00FC000307000E01801C01C03800C03000C07000E07000E07000E0E001C0E001C0E001 C0600180600380700700380E001C180007E00013127E9115>I<0FC78003D86001E03003 C03803803803801803801C03801C03801C0700380700380700380700700700700700E00F 01C00EC3000E3C000E00000E00000E00001C00001C00001C00001C0000FF8000161A8091 17>I<1F9C07EE03CF078E078C07000700070007000E000E000E000E000E000E001C001E 00FFC010127F9110>114 D<03F20C0E18061004300438043E001FE00FF007F8003C401C 400C400C6018E010D0608FC00F127F9110>I<020002000200060006000C001C003C00FF E01C001C00380038003800380038003800700070407040704070407080708031001E000B 1A7C9910>II E /Fl 16 117 df<000FE000183000307000606000600000600000C00000C00000C00007 FFC000C0C000C0C00180C001818001818001818001818003030003031003031003031003 03200601C0060000060000640000EC0000C80000700000141D819614>12 D<03F0003F8000F000780000B800780000B800B80000B801380001380170000138027000 01380270000138047000023808E000021C08E000021C10E000021C10E000041C21C00004 1C41C000041C41C000041C81C000081D038000081D038000080E038000080E038000180C 070000FE083FE00021177E9620>77 D<007C400182800301800601800601800C01000C01 000C00000E00000FC00007F80003FC00007C00000E00000E00000600200600400C00400C 00600800601000D8600087C00012177D9614>83 D86 D<072008E018E0306030C0 60C060C060C0C180C188C1884388659038E00D0E7C8D12>97 D<03C00C6018E030E03000 6000600060004000C0004020604021801E000B0E7C8D10>99 D<007C0018001800180018 0030003000300030076008E018E0306030C060C060C060C0C180C188C1884388659038E0 0E177C9612>I<07001880304060404080FF00C000C000C0008000C040C08043003C000A 0E7B8D10>I<1F0006000600060006000C000C000C000C0019C01A601C20183030603060 3060306060C060C461846188C098C0E00E177D9612>104 D<030706000000000000384C 4C4C8C18181830326262243808177D960B>I<3E0C0C0C0C181818183030303060606060 C0D0D0D0D06007177C9609>108 D<387044984708460C8C180C180C180C181830183118 61186230263038100E7D8D14>110 D<078018C0304060606060C060C060C06080C080C0 8180C10046003C000B0E7B8D12>I<1C702288230C230C460C060C060C060C0C180C180C 100C301A601B8018001800300030003000FC000E147E8D12>I<07800C4018E018E03800 1E001F8007C000C060C0E0C0C180C3003E000B0E7D8D0F>115 D<030003000600060006 000600FF800C000C000C001800180018001800300031003100310032001C0009147D930C >I E /Fm 50 128 df<60F0F070101020204040040A7D830A>44 DI<60F0F06004047D830A>I<07C018303018701C600C600CE00E E00EE00EE00EE00EE00EE00EE00EE00E600C600C701C30181C7007C00F157F9412>48 D<03000700FF000700070007000700070007000700070007000700070007000700070007 00070007007FF00C157E9412>I<0F8030E040708030C038E03840380038007000700060 00C00180030006000C08080810183FF07FF0FFF00D157E9412>I<00300030007000F001 F001700270047008701870107020704070C070FFFE0070007000700070007003FE0F157F 9412>52 D<20303FE03FC0240020002000200020002F8030E020700030003800384038E0 38E0388030406020C01F000D157E9412>I<01F00608080C181C301C70006000E000E3E0 EC30F018F00CE00EE00EE00E600E600E300C3018183007C00F157F9412>I<40007FFE7F FC7FF8C008801080200040008000800100010003000200060006000E000E000E000E000E 0004000F167E9512>I<07E018302018600C600C700C78183E101F600FC00FF018F8607C 601EC00EC006C006C004600C38300FE00F157F9412>I<07C0183030186018E00CE00CE0 0EE00EE00E601E301E186E0F8E000E000C001C70187018603020C01F800F157F9412>I< 00FC000303000C00C010002020781020C410418208438388830384870384870384870384 87038487038483038443838441838820C5882078F01000000C001C0300F000FF0016177E 961B>64 D<001000003800003800003800005C00005C00005C00008E00008E00008E0001 070001070003078002038002038007FFC00401C00401C00800E00800E01800E03800F0FE 03FE17177F961A>II<00FC100383300E00B01C00703800303000307000106000 10E00010E00000E00000E00000E00000E00000E000106000107000103000203800201C00 400E008003830000FC0014177E9619>IIII73 D<0FFC00E000E000E000E000E000E000E000E000E000E000E000 E000E000E000E000E000E0E0E0E0E0C1C061801F000E177E9612>I77 DI<00FC000303000E01C01C00E0 380070300030700038600018E0001CE0001CE0001CE0001CE0001CE0001CE0001C700038 7000383000303800701C00E00E01C003030000FC0016177E961B>II82 D<0FC4302C601C400CC004C004C004E00070007F003FE00FF801FC001C000E0006800680 068006C004E008D81087E00F177E9614>I85 D<1FC0386038301038003803F81E 3830387038E039E039E07970FF1F1E100E7F8D12>97 DI<07F018383038701060 00E000E000E000E000600070083008183007C00D0E7F8D10>I<007E00000E00000E0000 0E00000E00000E00000E00000E00000E0007CE001C3E00300E00700E00600E00E00E00E0 0E00E00E00E00E00600E00700E00301E00182E0007CFC012177F9614>I<0FC018603030 7038E018FFF8E000E000E000600070083010183007C00D0E7F8D10>I<03E006700E701C 201C001C001C001C001C00FF801C001C001C001C001C001C001C001C001C001C001C001C 00FF800C1780960B>I<0F9E18E33060707070707070306018C02F80200060003FE03FF8 3FFC600EC006C006C006600C38380FE010157F8D12>II<183C3C180000000000 7C1C1C1C1C1C1C1C1C1C1C1C1CFF081780960A>I108 DII<07C018303018600C600CE00EE00EE00EE00EE00E701C3018183007C0 0F0E7F8D12>II 114 D<1F4060C0C040C040E000FF007F801FC001E080608060C060E0C09F000B0E7F8D0E >I<080008000800180018003800FF803800380038003800380038003800384038403840 38401C800F000A147F930E>III120 D I<71C0F1E0F1E071C00B047D9612>127 D E /Fn 2 122 df<0C000C008C40EDC07F800C 007F80EDC08C400C000C000A0B7D8B10>3 D<1818181818FFFF18181818181818181818 181818181808167D900E>121 D E /Fo 53 123 df<00F000030C000E06041C07043807 08300708700790700790E003A0E003A0E003C0E00380E00380E00380600780601B883061 900F80E016127E911B>11 D<0001F000061800080C00100C00200E00400E00800E00801C 01001C010018010038020FF00210C0020FE0020030040030040030040038040038080070 0800700800700800E01800E01800C0140180140300230E0020F800200000200000400000 40000040000040000080000080000017257F9C17>I<01F807000C001800380030007000 7FC0E000E000E000E000E00060006000300018600F800D127E9111>15 D<0180300380700380700380700700E00700E00700E00700E00E01C00E01C00E01C00E01 C01C03881C03881C03881E07883E19903BE0E03800003800007000007000007000007000 00E00000E00000C00000151B7F9119>22 D<7E00600E00E00E00E00E00E01C01C01C01C0 1C03801C0300380700380E00380C0038180070300070600071C000730000FC0000F00000 13127E9115>I<001E0000718000C0C00180C00380C00300E00700E00700E00E01C00E01 C00E01C00E01801C03801C03001C06001E0C003A180039E0003800003800007000007000 00700000700000E00000E00000C00000131B7F9115>26 D<01FFF803FFF80FFFF01E1E00 180E00380600700600700600E00E00E00E00E00E00E00C00E01C00E01800E03000606000 30C0001F000015127E9118>I<60F0F06004047C830C>58 D<60F0F07010101010202040 80040C7C830C>I<0000038000000F0000003C000000F0000003C000000F0000003C0000 00F0000003C000000F0000003C000000F0000000F00000003C0000000F00000003C00000 00F00000003C0000000F00000003C0000000F00000003C0000000F000000038019187D95 20>I<00010003000600060006000C000C000C0018001800180030003000300060006000 C000C000C0018001800180030003000300060006000C000C000C00180018001800300030 003000600060006000C000C00010297E9E15>II<01FFFF00003C01C0003800E0003800F00038007000 38007000700070007000F0007000F0007001E000E003C000E0078000E01F0000FFFC0001 C00F0001C0078001C003C001C003C0038003C0038003C0038003C0038003C00700078007 00070007000E0007001C000E007800FFFFC0001C1C7E9B1F>66 D<01FFFF80003C01E000 380070003800380038001C0038001C0070001C0070001E0070001E0070001E00E0001E00 E0001E00E0001E00E0001E01C0003C01C0003C01C0003C01C00038038000780380007003 8000F0038000E0070001C0070003800700070007001C000E007800FFFFC0001F1C7E9B22 >68 D<01FFFFF8003C007800380018003800100038001000380010007000100070001000 7010100070100000E0200000E0200000E0600000FFE00001C0400001C0400001C0400001 C0400003808040038000400380008003800080070001000700010007000300070006000E 003E00FFFFFC001D1C7E9B1F>I<01FFFFF0003C00F00038003000380020003800200038 00200070002000700020007010200070100000E0200000E0200000E0600000FFE00001C0 400001C0400001C0400001C0400003808000038000000380000003800000070000000700 000007000000070000000F000000FFF000001C1C7E9B1B>I<01FFC3FF80003C00780000 38007000003800700000380070000038007000007000E000007000E000007000E0000070 00E00000E001C00000E001C00000E001C00000FFFFC00001C003800001C003800001C003 800001C0038000038007000003800700000380070000038007000007000E000007000E00 0007000E000007000E00000F001E0000FFE1FFC000211C7E9B23>72 D<03FFC0003C0000380000380000380000380000700000700000700000700000E00000E0 0000E00000E00001C00001C00001C00001C0000380000380000380000380000700000700 000700000700000F0000FFF000121C7E9B12>I<01FFE0003C0000380000380000380000 380000700000700000700000700000E00000E00000E00000E00001C00001C00001C00001 C00003800203800203800203800407000407000C0700180700380E00F0FFFFF0171C7E9B 1C>76 D<01FE0000FF003E0000F0002E0001E0002E0002E0002E0002E0002E0004E0004E 0009C0004E0009C000470011C000470011C0008700238000870043800087004380008700 838001070107000107010700010382070001038207000203840E000203880E000203880E 000203900E000403A01C000403A01C000401C01C000C01C01C001C01803C00FF8103FF80 281C7E9B28>I<01FC00FF80001C001C00002E001800002E001000002E00100000270010 0000470020000043002000004380200000438020000081C040000081C040000081C04000 0080E040000100E080000100708000010070800001007080000200390000020039000002 0039000002001D000004001E000004000E000004000E00000C000E00001C00040000FF80 040000211C7E9B21>I<0003F800000E0E000038038000E001C001C001C0038000E00700 00E00F0000F01E0000F01C0000F03C0000F03C0000F0780000F0780000F0780000F0F000 01E0F00001E0F00001E0F00003C0F00003C0F0000380F0000780F0000F00703C0E007042 1C0038823800388270001C83C0000787810001FF0100000303000003020000038E000003 FC000003F8000001F8000001E0001C257E9C21>81 D<01FFFE00003C03C0003800E00038 00F00038007000380070007000F0007000F0007000F0007001E000E001C000E0078000E0 1E0000FFF00001C0300001C0180001C01C0001C01C0003801C0003801C0003801C000380 1C0007003C0007003C0807003C0807003C100F001E10FFE00E20000007C01D1D7E9B20> I<000FC100303300400F0080060180060300060300060600040600040700000700000780 0003F00001FF0000FFC0003FE00003E00000F00000700000300000302000302000306000 606000606000C0600080F00300CC060083F800181E7E9C19>I<1FFFFFF01C0380703007 0030200700206007002040070020400E0020800E0020800E0020000E0000001C0000001C 0000001C0000001C00000038000000380000003800000038000000700000007000000070 00000070000000E0000000E0000000E0000000E0000001E000007FFF00001C1C7F9B18> I<7FF03FE00F0007000E0006000E0004000E0004000E0004001C0008001C0008001C0008 001C00080038001000380010003800100038001000700020007000200070002000700020 00E0004000E0004000E0004000E0008000E0008000E00100006002000060040000300800 001830000007C000001B1D7D9B1C>III<01FFC0FF80001E003C00001E003000000E002000000F0040000007008000000701 0000000782000000038400000003C800000001D000000001F000000000E000000000E000 000000F00000000170000000027000000004380000000838000000103C000000201C0000 00401E000000800E000001800E000003000F000006000700001E000F8000FF803FF00021 1C7F9B22>II<00FFFFE000F001C001C003800180070001000E 0001001E0002001C0002003800020070000000E0000001C0000003800000070000000F00 00001E0000001C0000003800000070020000E0040001C0040003800400070008000F0008 000E0018001C003000380070007001E000FFFFE0001B1C7E9B1C>I<01E3000717000C0F 00180F00380E00300E00700E00700E00E01C00E01C00E01C00E01C00E03880E03880E038 806078803199001E0E0011127E9116>97 D<01F0030C0E0C1C1E383C301870007000E000 E000E000E000E000E0046008601030601F800F127E9112>99 D<0007E00000E00000E000 01C00001C00001C00001C000038000038000038000038001E7000717000C0F00180F0038 0E00300E00700E00700E00E01C00E01C00E01C00E01C00E03880E03880E0388060788031 99001E0E00131D7E9C16>I<01F007080C0818043808300870307FC0E000E000E000E000 E000E0046008601030600F800E127E9113>I<0001E0000630000E78000CF0001C60001C 00001C00001C00003C0000380000380003FFC00038000038000070000070000070000070 0000700000E00000E00000E00000E00000E00001C00001C00001C00001C00001C0000180 00038000038000630000F30000F60000E4000078000015257E9C14>I<007180018B8003 07800607800E07000C07001C07001C0700380E00380E00380E00380E00381C00381C0038 1C00183C0008F800073800003800003800007000607000F06000F0E000E180007E000011 1A7F9114>I<01C003C003C001800000000000000000000000001C002700470047008700 87000E000E001C001C001C003800388038807080710032001C000A1C7E9B0E>105 D<0007000F000F00060000000000000000000000000070009C010C020C021C041C001C00 1C0038003800380038007000700070007000E000E000E000E001C061C0F180F300E6007C 001024809B11>I<1F800380038007000700070007000E000E000E000E001C001C001C00 1C0038003800380038007000700070007000E400E400E400E40064003800091D7E9C0C> 108 D<381F81F04E20C6184640E81C4680F01C8F00F01C8E00E01C0E00E01C0E00E01C1C 01C0381C01C0381C01C0381C01C0703803807138038071380380E1380380E27007006430 03003820127E9124>I<381F004E61804681C04701C08F01C08E01C00E01C00E01C01C03 801C03801C03801C0700380710380710380E10380E2070064030038014127E9119>I<00 F800030C000E06001C0300180300300300700380700380E00700E00700E00700E00E00E0 0E00E01C0060180060300030E0000F800011127E9114>I<07078009C86008D03008E030 11C03011C03801C03801C0380380700380700380700380600700E00700C0070180078300 0E86000E78000E00000E00001C00001C00001C00001C00003C0000FF8000151A819115> I<383C4E424687470F8E1E8E0C0E000E001C001C001C001C003800380038003800700030 0010127E9113>114 D<01F0060C04040C0E180C1C001F000FE00FF003F80038201C7018 F018F010803060601F800F127E9113>I<00C001C001C001C00380038003800380FFF007 00070007000E000E000E000E001C001C001C001C00382038203840384018800F000C1A80 990F>I<1C00C02701C04701C04701C08703808703800E03800E03801C07001C07001C07 001C0700180E20180E20180E201C1E200C264007C38013127E9118>I<1C022707470747 03870187010E010E011C021C021C021C041804180818081C100C2007C010127E9114>I< 1C00C0802701C1C04701C1C04701C0C087038040870380400E0380400E0380401C070080 1C0700801C0700801C07010018060100180602001C0E02001C0F04000E13080003E1F000 1A127E911E>I<07878008C84010F0C020F1E020E3C040E18000E00000E00001C00001C0 0001C00001C000638080F38080F38100E5810084C60078780013127E9118>I<1C00C027 01C04701C04701C08703808703800E03800E03801C07001C07001C07001C0700180E0018 0E00180E001C1E000C3C0007DC00001C00001800603800F03000F06000E0C0004180003E 0000121A7E9114>I<038107C10FE6081C10080010002000400080010002000400080410 042C1877F843F081C010127E9113>I E /Fp 76 123 df<0001FC000703000C03001C07 001C0300180000380000380000380000380000700007FFFC00701C00701C00701C00E038 00E03800E03800E03800E07001C07001C07001C07001C0E201C0E201C0E20380E4038064 038038038000030000070000060000C60000E40000CC00007000001825819C17>12 D<18303C783C783C78040804080810081010202040408081000D0C799C15>34 D<000030180000301800006030000060300000C0600000C060000180C0000180C0000301 80000301800003018000060300000603000FFFFFF81FFFFFFC0030180000301800003018 00006030000060300000C0600000C0600000C06000FFFFFFE07FFFFFC003018000060300 00060300000C0600000C0600000C060000180C0000180C00003018000030180000603000 00201000001E257C9C22>I<183C3C3C0404080810204080060C779C0D>39 D<00030006000800180030006000C000C0018003000300060006000C000C001C00180018 00380030003000700070006000600060006000E000E000E000E000E00060006000600060 00600020003000100008000800102A7B9E11>I<001000100008000C0004000600060006 00060006000700070007000700070006000600060006000E000E000C000C001C00180018 0038003000300060006000C000C001800300030006000C00180010006000C000102A809E 11>I<000100000300000300000300000300000600000600000600000600000C00000C00 000C00FFFFFFFFFFFF001800001800001800003000003000003000003000006000006000 006000006000004000181A7A9620>43 D<183878380808101020404080050C7D830D>I< FFC0FFC0FFC00A037D890F>I<3078F06005047C830D>I<00000200000600000600000C00 000C0000180000300000300000600000600000C00000C000018000018000030000060000 0600000C00000C0000180000180000300000300000600000C00000C00001800001800003 00000300000600000C00000C0000180000180000300000300000600000600000C0000080 000017297F9E15>I<003C0000C6000183000303000603000603800E03800C03801C0380 1C0300380700380700380700380700700E00700E00700E00700E00E01C00E01C00E01C00 E03800E03800E03000C06000E0600060C0007180001E0000111D7B9B15>I<0002000600 0C001C007C039C0038003800380038007000700070007000E000E000E000E001C001C001 C001C003800380038003800780FFF00F1C7C9B15>I<003C0000C3000101800201800201 C00441C00441C00841C00841C00841C01083801083801107000E0600000C000018000030 0000C0000100000600000800001001001002002002004006007E0C00C7F80083F80080E0 00121D7C9B15>I<003E0000C1800101800200C00400C00440C00841C00841C00841C008 8380070380000700000E0001F800003800000C00000C00000E00000E00000E00000E0070 0E00E01C00801C0080380080300040600021C0001F0000121D7C9B15>I<0001800001C0 000380000380000380000300000700000700000600000E00000C00001C00001800001800 00300000300000600000400000C600018E00010E00020E00061C000C1C00181C003F1C00 40F800803F0000380000380000700000700000700000700000E00000600012247E9B15> I<00C06000FFC001FF8001FE00010000010000020000020000020000020000047800058C 00060600040600080600000700000700000600000E00000E00700E00700C00E01C008018 0080380040300040600021C0001F0000131D7C9B15>I<000F0000308000C08001838003 83800300000600000E00000C00001C00001CF0003B18003C0C00380C00780C00700E0070 0E00700E00601C00E01C00E01C00E01C00E03800E03800E0700060600060C0002180001E 0000111D7B9B15>I<09C04017E0801FE0803C6100302700601A00400600400400800C00 80080000180000100000300000600000600000600000C00000C00001C000018000038000 0380000300000700000700000700000E00000E00000C0000121D799B15>I<001E000061 000081800180800300C00300C006018006018006018007030007860003CC0003F00001F0 00037800063C00081E00180E00300E00600600600600600600C00C00C00C00C018006010 0060200030C0000F0000121D7C9B15>I<003C0000C6000183000303000603000E03000C 03801C03801C03001C0300380700380700380700380F00380E00181E00181E000C6C0007 9C00001C00001800003800003000006000E0C000E0C0008180008600007C0000111D7B9B 15>I<060F0F06000000000000000000003078F06008127C910D>I<030007800780030000 000000000000000000000000000000000000001800380078003800080008001000100020 00400040008000091A7D910D>I<0FFFFFE01FFFFFF00000000000000000000000000000 000000000000000000000000000000000000FFFFFF807FFFFF001C0C7C8F20>61 D<0000180000001800000038000000380000007800000078000000B8000001B800000138 000002380000023C0000041C0000041C0000081C0000181C0000101C0000201C0000201C 00007FFC0000401C0000801C0001801C0001001C0002001C0002001C0004000E000C000E 001C001E00FF00FFC01A1D7E9C1F>65 D<01FFFE00003C0780003803C0003801C0003801 C0003801C0007001C0007003C0007003C00070078000E0070000E00E0000E03C0000FFF8 0001C01C0001C00E0001C00F0001C00F0003800F0003800F0003800F0003800F0007001E 0007001C0007003C00070078000E01E000FFFF80001A1C7D9B1D>I<0003F020001E0C60 003002E000E003C001C001C0038001C0070000C00E0000801E0000801C0000803C000080 3C000000780000007800000078000000F0000000F0000000F0000000F0000000F0000400 F0000400F0000400F0000800700008007000100038002000180040000C01800007060000 01F800001B1E7A9C1E>I<01FFFE00003C0780003801C0003801C0003800E0003800E000 7000F00070007000700070007000F000E000F000E000F000E000F000E000F001C001E001 C001E001C001E001C001C0038003C003800380038007800380070007000E0007001C0007 003800070070000E01C000FFFF00001C1C7D9B1F>I<01FFFFE0003C00E0003800600038 004000380040003800400070004000700040007020400070200000E0400000E0400000E0 C00000FFC00001C0800001C0800001C0800001C080000381010003800100038002000380 0200070004000700040007000C00070018000E007800FFFFF0001B1C7D9B1C>I<01FFFF C0003C01C0003800C0003800800038008000380080007000800070008000702080007020 0000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C08000038100 00038000000380000003800000070000000700000007000000070000000F000000FFF000 001A1C7D9B1B>I<0003F020001E0C60003002E000E003C001C001C0038001C0070000C0 0E0000801E0000801C0000803C0000803C000000780000007800000078000000F0000000 F0000000F001FFC0F0001E00F0001C00F0001C00F0001C00F0001C007000380070003800 38003800180078000C0090000707100001F800001B1E7A9C20>I<01FFCFFE003C01E000 3801C0003801C0003801C0003801C00070038000700380007003800070038000E0070000 E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C00E0003801C0003801C0003 801C0003801C00070038000700380007003800070038000F007800FFE7FF001F1C7D9B1F >I<01FFC0003C0000380000380000380000380000700000700000700000700000E00000 E00000E00000E00001C00001C00001C00001C00003800003800003800003800007000007 00000700000700000F0000FFE000121C7E9B10>I<01FFC0FF003C003C00380030003800 4000380080003801000070020000700400007010000070200000E0400000E0C00000E1C0 0000E5C00001C8E00001D0E00001E0E00001C07000038070000380700003803800038038 000700380007001C0007001C0007001C000F001E00FFE0FF80201C7D9B20>75 D<01FFE0003C0000380000380000380000380000700000700000700000700000E00000E0 0000E00000E00001C00001C00001C00001C0000380080380080380080380100700100700 300700600700E00E03C0FFFFC0151C7D9B1A>I<01FE0007F8003E000780002E000F0000 2E001700002E001700002E002700004E002E00004E004E00004E004E00004E008E00008E 011C00008E011C00008E021C00008E021C00010704380001070438000107083800010710 38000207107000020720700002072070000207407000040740E000040780E000040700E0 000C0700E0001C0601E000FF861FFC00251C7D9B25>I<01FC03FE001C0070003C006000 2E0040002E0040002E004000470080004700800047008000438080008381000083810000 8181000081C1000101C2000101C2000100E2000100E2000200E400020074000200740002 0074000400380004003800040038000C0018001C001000FF8010001F1C7D9B1F>I<0007 F000001C1C0000700E0000E0070001C0038003800380070003800E0003C01E0003C01C00 03C03C0003C03C0003C0780003C0780003C0780003C0F0000780F0000780F0000780F000 0F00F0000F00F0000E00F0001E00F0003C0070003800700070007800E0003801C0001C03 80000E0E000003F800001A1E7A9C20>I<01FFFC00003C070000380380003801C0003801 C0003801C0007003C0007003C0007003C00070038000E0078000E0070000E00E0000E038 0001FFE00001C0000001C0000001C0000003800000038000000380000003800000070000 000700000007000000070000000F000000FFE000001A1C7D9B1C>I<0007F000001C1C00 00700E0000E0070001C0078003800380070003800E0003C01E0003C01C0003C03C0003C0 3C0003C0780003C0780003C0780003C0F0000780F0000780F0000780F0000F00F0000F00 F0000E00F0001E00F0001C0070783800708070007104E0003905C0001D0780000F0E0400 03FC040000040C0000060800000E1800000FF0000007F0000007E000000380001A257A9C 20>I<01FFF800003C0E0000380700003803800038038000380380007007800070078000 70078000700F0000E00E0000E01C0000E0700000FFC00001C0C00001C0600001C0700001 C07000038070000380700003807000038070000700F0000700F0400700F0400700F0800F 007880FFE0790000001E001A1D7D9B1E>I<000F8400304C00403C008018010018030018 03001806001006001006000007000007000003E00003FC0001FF00007F800007C00001C0 0001C00000C00000C02000C02000C0600180600180600300600200F00400CC180083E000 161E7D9C17>I<1FFFFFC01C0701C0300E00C0200E0080600E0080400E0080401C008080 1C0080801C0080001C000000380000003800000038000000380000007000000070000000 7000000070000000E0000000E0000000E0000000E0000001C0000001C0000001C0000001 C0000003C000007FFE00001A1C799B1E>I<7FF0FF800F001C000E0018000E0010000E00 10000E0010001C0020001C0020001C0020001C0020003800400038004000380040003800 400070008000700080007000800070008000E0010000E0010000E0010000E0020000E002 0000E0040000E00400006008000030300000104000000F800000191D779B1F>III<01FF81FE001E00F0001C0060001E0080 000E0180000E0100000F02000007040000070800000790000003A0000003C0000001C000 0001C0000001E0000002E0000004E0000008F00000107000002070000060380000403800 00803C0001001C0002001C0006001E001E001E00FF80FFC01F1C7E9B1F>II<00FFFF8000F0070001C00E0001801E0001001C0001003800020070000200 E0000201C0000001C0000003800000070000000E0000001C0000001C0000003800000070 000000E0080001C0100001C0100003801000070020000E0020001C0060003C00C0003801 C00070078000FFFF8000191C7D9B19>I<060C0810102020402040408040808100B160F9 F0F9F070E00E0C759C15>92 D<03CC063C0C3C181C3838303870387038E070E070E070E0 70E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E000E000E001C 001C001C001C0039C03E60383038307038703870387038E070E070E070E060E0E0C0C0C1 C0618063003C000D1D7B9C13>I<01F007080C08181C3838300070007000E000E000E000 E000E000E008E010602030C01F000E127B9113>I<001F80000380000380000700000700 000700000700000E00000E00000E00000E0003DC00063C000C3C00181C00383800303800 703800703800E07000E07000E07000E07000E0E200C0E200C0E20061E4006264003C3800 111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000E000E000E00860 10602030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C0000380000 380000380000380000380003FF8000700000700000700000700000700000E00000E00000 E00000E00000E00001C00001C00001C00001C00001C00003800003800003800003000003 0000070000C60000E60000CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E 1C0E1C0E381C381C381C381C383830383038187818F00F700070007000E000E0C0C0E1C0 C3007E00101A7D9113>I<0FC00001C00001C00003800003800003800003800007000007 00000700000700000E78000E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C0038 1C00381C00383800703880703880707080707100E03200601C00111D7D9C15>I<018003 80010000000000000000000000000000001C002600470047008E008E000E001C001C001C 0038003800710071007100720072003C00091C7C9B0D>I<0006000E0006000000000000 000000000000000000F00118021802180438043800380038007000700070007000E000E0 00E000E001C001C001C001C003800380C300E700CE0078000F24819B0D>I<0FC00001C0 0001C0000380000380000380000380000700000700000700000700000E0F000E11000E23 800E43801C83001C80001D00001E00003F800039C00038E00038E00070E20070E20070E2 0070E400E06400603800111D7D9C13>I<1F800380038007000700070007000E000E000E 000E001C001C001C001C0038003800380038007000700070007000E400E400E400E40068 003800091D7C9C0B>I<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E03 80E00E0380E01C0701C01C0701C01C0701C01C070380380E0388380E0388380E0708380E 0710701C0320300C01C01D127C9122>I<3C3C002646004687004707008E07008E07000E 07000E07001C0E001C0E001C0E001C1C00381C40381C40383840383880701900300E0012 127C9117>I<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E060 60C031801E000F127B9115>I<07870004D98008E0C008E0C011C0E011C0E001C0E001C0 E00381C00381C00381C00381800703800703000707000706000E8C000E70000E00000E00 001C00001C00001C00001C00003C0000FF8000131A7F9115>I<03C4062C0C3C181C3838 303870387038E070E070E070E070E0E0C0E0C0E061E063C03DC001C001C0038003800380 038007803FF00E1A7B9113>I<3C3C26C2468747078E068E000E000E001C001C001C001C 0038003800380038007000300010127C9112>I<01F006080C080C1C18181C001F001FC0 0FF007F0007800386030E030C030806060C01F000E127D9111>I<00C001C001C001C003 80038003800380FFE00700070007000E000E000E000E001C001C001C001C003840384038 40388019000E000B1A7D990E>I<1E0300270700470700470700870E00870E000E0E000E 0E001C1C001C1C001C1C001C1C003838803838801838801839001C5900078E0011127C91 16>I<1E06270E470E4706870287020E020E021C041C041C041C0818083808181018200C 4007800F127C9113>I<1E01832703874703874703838707018707010E07010E07011C0E 021C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C>I<07 0E0019910010E38020E38041C30041C00001C00001C00003800003800003800003800007 0200670200E70400CB04008B080070F00011127D9113>I<1E03270747074707870E870E 0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007F00070007000E0E0C0E1C08180 47003C00101A7C9114>I<038207C20FEC08381008001000200040008001000200040008 081008383067F043E081C00F127D9111>I E /Fq 17 108 df0 D<400020C000606000C03001801803000C0600060C0003180001B00000E000 00E00001B000031800060C000C06001803003001806000C0C0006040002013147A9320> 2 D<01800180018001804182F18F399C0FF003C003C00FF0399CF18F4182018001800180 018010127E9215>I<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1F F80FF003C010107E9115>15 D17 D<000001800000078000001E00000078000001E00000078000001E00000078000001E000 00078000001E00000078000000E0000000780000001E0000000780000001E00000007800 00001E0000000780000001E0000000780000001E00000007800000018000000000000000 0000000000000000000000000000000000000000007FFFFF00FFFFFF8019227D9920>20 DI< 000000040000000002000000000200000000010000000000800000000040FFFFFFFFF8FF FFFFFFF8000000004000000000800000000100000000020000000002000000000400250E 7E902A>33 D<007FF801FFF80780000E0000180000300000300000600000600000C00000 C00000C00000FFFFF8FFFFF8C00000C00000C00000600000600000300000300000180000 0E000007800001FFF8007FF8151A7D961C>50 D<0000600000600000C00000C000018000 0180000180000300000300000600000600000C00000C0000180000180000180000300000 300000600000600000C00000C0000180000180000300000300000300000600000600000C 00000C0000180000180000300000300000300000600000600000C0000040000013287A9D 00>54 D<400004C0000C6000186000186000183000303000303000301800601800601FFF E00FFFC00C00C00C00C006018006018003030003030003030001860001860001860000CC 0000CC0000CC00007800007800007800003000003000161E809C17>56 D58 D<00000020000000E0000001E0000001E0000003E0000003E0000005E00000 05E0000009E0000009E0000011E0000031E0000021E0000061E0000041E0000081E00001 81E0000101E0000301E0000601E0000401E0000FFFF0001FFFF0003000F0003000F00060 00F060C000F0718000F87F8000F8FF00007E7E00007C3C0000001F20809D21>65 D<001000003800003800006C00006C00006C0000C60000C6000183000183000301800301 800600C00600C00600C00C00600C006018003018003030001830001830001860000C6000 0CC00006C00002171A7E981C>94 D<003C00E001C0018003800380038003800380038003 80038003800380038003800380030007001C00F0001C0007000300038003800380038003 8003800380038003800380038003800380018001C000E0003C0E297D9E15>102 DI<4020C030C030C030C030C030C030C030C030 C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030 C030C030C030C030C030C030C030C030C030C030C030C030C030C03040200C2A7C9E15> 107 D E /Fr 49 123 df<00030006001C0038007800F000E001E003C003C007800F800F 801F001F001F003E003E003E007E007E007E007C00FC00FC00FC00FC00FC00FC00FC00FC 00FC00FC00FC00FC00FC00FC007C007E007E007E003E003E003E001F001F001F000F800F 80078003C003C001E000E000F000780038001C00060003103C7BAC1A>40 DI<003F800001FFF00007E0FC000FC07E00 1F803F001F001F003F001F803E000F807E000FC07E000FC07E000FC07E000FC0FE000FE0 FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0 FE000FE0FE000FE0FE000FE0FE000FE0FE000FE07E000FC07E000FC07E000FC07E000FC0 3F001F803F001F801F001F001F803F000FC07E0007E0FC0001FFF000003F80001B277DA6 22>48 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE007FFFFE7FFFFE7FFFFE17277BA622>I<00FF800007FFF0000FFFFC001E03FE00 3800FF807C003F80FE003FC0FF001FC0FF001FE0FF000FE0FF000FE07E000FE03C001FE0 00001FE000001FC000001FC000003F8000003F0000007E000000FC000000F8000001F000 0003E00000078000000F0000001E0000003C00E0007000E000E000E001C001C0038001C0 060001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA6 22>I<007F800003FFF00007FFFC000F80FE001F007F003F807F003F803F803F803F803F 803F801F803F801F003F8000007F0000007F0000007E000000FC000001F8000007F00000 FFC00000FFC0000001F80000007E0000003F0000003F8000001FC000001FC000001FE000 001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FC0FF003FC0FE003F807C007F003F 00FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E000000 7E000000FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E000038 7E0000707E0000E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C00 7E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000 FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D27 7EA622>I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF00 001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C7FC0001DFFF8 001F80FC001E003F0008003F0000001F8000001FC000001FC000001FE000001FE018001F E07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F8078003F803C007F 001F01FE000FFFFC0003FFF00000FF80001B277DA622>I<0007F800003FFE0000FFFF00 01FC078003F00FC007C01FC00F801FC01F801FC01F001FC03F000F803F0000007E000000 7E0000007E000000FE020000FE1FF000FE3FFC00FE603E00FE801F00FF801F80FF000FC0 FF000FC0FE000FE0FE000FE0FE000FE0FE000FE07E000FE07E000FE07E000FE07E000FE0 3E000FE03F000FC01F000FC01F001F800F801F0007E07E0003FFFC0001FFF800003FC000 1B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07F FFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E0000001E00000 01C000000380000007800000070000000F0000001F0000001E0000003E0000003E000000 7E0000007C0000007C000000FC000000FC000000FC000000FC000001FC000001FC000001 FC000001FC000001FC000001FC000001FC000000F80000007000001C297CA822>I<003F C00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F803E000F803F00 0F803F800F803FC00F803FF01F001FFC1E001FFE3C000FFFF8000FFFE00007FFF80001FF FC0001FFFE0007FFFF000F0FFF801E03FFC03E01FFC07C007FE07C001FE0F8000FE0F800 07E0F80003E0F80003E0F80003E0F80003C07C0003C07E0007803F000F001FC03F000FFF FC0003FFF800007FC0001B277DA622>I<007F800001FFF00007FFF8000FC0FC001F803E 003F001F007E001F807E001F807E000F80FE000FC0FE000FC0FE000FC0FE000FE0FE000F E0FE000FE0FE000FE0FE000FE07E001FE07E001FE03F003FE01F002FE00F80CFE007FF8F E001FF0FE000080FE000000FC000000FC000000FC000001F803E001F807F001F807F003F 007F003E007F007E007E00FC003E03F8001FFFE0000FFF800001FE00001B277DA622>I< 1C007F007F00FF80FF80FF807F007F001C00000000000000000000000000000000000000 1C007F007F00FF80FF80FF807F007F001C00091B7B9A13>I<0000078000000000078000 0000000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000003FF000 0000003FF0000000003FF00000000077F80000000077F800000000F7FC00000000E3FC00 000000E3FC00000001C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF00 000007007F80000007007F8000000F007FC000000E003FC000000E003FC000001C001FE0 00001C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F8 0000F00007FC0000E00003FC0000E00003FC0001C00001FE0001C00001FE0003C00001FF 00FFFE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65 DI68 DI73 D75 DI<0000FFC00000000FFFFC0000003F807F000000FE001FC00001F80007E000 03F00003F00007E00001F8000FE00001FC001FC00000FE001FC00000FE003F8000007F00 3F8000007F007F8000007F807F0000003F807F0000003F807F0000003F80FF0000003FC0 FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0 FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F80 3F8000007F003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F00003F800 03F80007F00001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FFC00000 2A297CA833>79 DI82 D<00FF00C003FFE1C00FFFF9C01F80FFC03F003FC03E000FC07C0007C07C00 07C0FC0003C0FC0003C0FC0001C0FE0001C0FE0001C0FF000000FFC000007FFC00007FFF E0003FFFF8001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE00000 1FF000000FF0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003E0F800 07E0FC0007C0FF000F80FFE01F80E3FFFF00E1FFFC00C01FF0001C297CA825>I<7FFFFF FFFF807FFFFFFFFF807FFFFFFFFF807F807F807F807C007F800F8078007F80078078007F 80078070007F800380F0007F8003C0F0007F8003C0E0007F8001C0E0007F8001C0E0007F 8001C0E0007F8001C0E0007F8001C000007F80000000007F80000000007F80000000007F 80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F 80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F 80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F 80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I87 D<03FF80000FFFF0001F01FC003F80FE003F807F003F803F003F803F 801F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F800FE03F801F803F 803F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00DF803F839F FC1FFE0FFC03F803FC1E1B7E9A21>97 DI<003FF00001FFFC0003F03E000FC07F001F807F003F007F00 3F007F007F003E007E0000007E000000FE000000FE000000FE000000FE000000FE000000 FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007000FE00E00 03F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F000 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 0007F0000007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F0007F07E 0007F07E0007F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE 0007F0FE0007F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF007E07FFF01 FFE7FF007F87FF202A7EA925>I<003FC00001FFF00003E07C000F803E001F801F001F00 1F003F000F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE00 0000FE000000FE0000007E0000007E0000007F0000003F0001C01F0001C00F80038007C0 070003F01E0000FFFC00003FE0001A1B7E9A1F>I<0007F8003FFC007E3E01FC7F03F87F 03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0 FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 07F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807FFF80 7FFF80182A7EA915>I<007F80F001FFE3F807C0FE1C0F807C7C1F003E7C1F003E103F00 3F003F003F003F003F003F003F003F003F003F003F001F003E001F003E000F807C0007C0 F80005FFE0000C7F8000180000001C0000001C0000001E0000001FFFF8001FFFFF000FFF FFC007FFFFE003FFFFF00FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F800 00F87C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>II<07000F801FC03FE0 3FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE00FE00FE0 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 FFFEFFFEFFFE0F2B7EAA12>I107 DIII<003FE00001FFFC0003F07E000FC01F801F800FC0 3F0007E03F0007E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8 FE0003F8FE0003F8FE0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F800FC0 0FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II114 D<03FE300FFFF03E03F07800F0 7000F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF8 0007FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E 9A1B>I<00700000700000700000700000F00000F00000F00001F00003F00003F00007F0 001FFFE0FFFFE0FFFFE007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F00007F00007F00007F00007F07007F07007F07007F07007F07007F07007F07003F0 E001F8C000FFC0003F0014267FA51A>IIII121 D<3FFFFF3FFFFF3F00FE3C01FE3803FC7803F87807F0700FF0700FE0701FC000 3FC0003F80007F0000FF0000FE0001FC0703FC0703F80707F0070FF00F0FE00F1FC00E3F C01E7F803E7F00FEFFFFFEFFFFFE181B7E9A1E>I E /Fs 45 122 df<78FCFCFCFC7806067D850D>46 D<03F8000F1E001C07003C07803803807803C07803 C07803C0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803 E0F803E07803C07803C03803803C07801C07000F1E0003F800131B7E9A18>48 D<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E0 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 0003E0007FFF807FFF80111B7D9A18>I<07F8001FFE00383F80780FC0FC07C0FC07E0FC 03E0FC03E07803E00007E00007C00007C0000F80001F00001E0000380000700000E00001 80600300600600600800E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131B7E9A18>I<03F800 1FFE003C1F003C0F807C07C07E07C07C07C03807C0000F80000F80001E00003C0003F800 001E00000F800007C00007C00007E03007E07807E0FC07E0FC07E0FC07C0780F80781F00 1FFE0007F800131B7E9A18>I<000180000380000780000F80001F80003F80006F8000CF 80008F80018F80030F80060F800C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F 80000F80000F80000F80000F80000F8001FFF801FFF8151B7F9A18>I<1801801FFF001F FE001FFC001FF8001FC00018000018000018000018000019F8001E0E00180F8010078000 07C00007E00007E00007E07807E0F807E0F807E0F807C0F007C0600F80381F001FFE0007 F000131B7E9A18>I<007E0003FF000781800F03C01E07C03C07C03C0380780000780000 F80000F8F800FB0E00FA0780FC0380FC03C0F803E0F803E0F803E0F803E07803E07803E0 7803C03C03C03C07801E0F0007FE0003F800131B7E9A18>I<6000007FFFE07FFFE07FFF C07FFF807FFF80E00300C00600C00C00C0180000300000300000600000E00000E00001E0 0001C00003C00003C00003C00003C00007C00007C00007C00007C00007C00007C0000380 00131C7D9B18>I<03F8000FFE001E0F803807803803C07803C07803C07E03C07F83807F C7003FFE001FFC000FFE0007FF801DFF80387FC0781FE0F007E0F003E0F001E0F001E0F0 01E07801C07803803E07801FFE0003F800131B7E9A18>I<03F8000FFE001E0F003C0780 7807807803C0F803C0F803C0F803E0F803E0F803E0F803E07807E03807E03C0BE00E1BE0 03E3E00003E00003C00003C03807C07C07807C0700780F00383C001FF8000FE000131B7E 9A18>I<00038000000380000007C0000007C0000007C000000FE000000FE000001FF000 001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E00 01803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0 FFC07FFEFFC07FFE1F1C7E9B24>65 D<001FE02000FFF8E003F80FE007C003E00F8001E0 1F0000E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000 FC000000FC000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C0 0F80018007C0030003F80E0000FFFC00001FE0001B1C7D9B22>67 DIII73 D76 DII80 D82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FF E0007FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C0 00E0E000E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0 701F80E0601F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000 001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 001F8000001F8000001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B21>I<0F F8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F8 07C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D<03FC000E0E001C1F003C1F 00781F00780E00F80000F80000F80000F80000F80000F800007800007801803C01801C03 000E0E0003F80011127E9115>99 D<000FF0000FF00001F00001F00001F00001F00001F0 0001F00001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0 F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B> I<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800 007800007C00603C00601E00C00F038001FC0013127F9116>I<007F0001E38003C7C007 87C00F87C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F80000F80000F 80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007F F8007FF800121D809C0F>I<03F8F00E0F381E0F381C07303C07803C07803C07803C0780 1C07001E0F000E0E001BF8001000001800001800001FFF001FFFC00FFFE01FFFF07801F8 F00078F00078F000787000707800F01E03C007FF00151B7F9118>II<1E003F003F003F003F001E0000000000000000000000 0000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0 FFE00B1E7F9D0E>I107 DIII<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F8 00F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>II114 D<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CF C00E127E9113>I<0300030003000300070007000F000F003FFCFFFC1F001F001F001F00 1F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>IIII121 D E /Ft 84 128 df<03FFF000003F0000001E0000001E0000001E000000FF8000039EE0 000E1E38001C1E1C00381E0E00781E0F00F01E0780F01E0780F01E0780F01E0780F01E07 80F01E0780781E0F00381E0E001C1E1C000E1E3800039EE00000FF8000001E0000001E00 00001E0000003F000003FFF000191C7E9B1E>8 D<007E1F0001C1B1800303E3C00703C3 C00E03C1800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E0000FFFF C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F CFF8151D809C17>I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00 E018000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E0 1C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C 000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00 0E00E01C007FC7FCFF80211D809C23>I<6060F0F0F8F868680808080808081010101020 20404080800D0C7F9C15>34 D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018001800300030007000600060006000E000E000E0 00E000E000E000E000E000E000E000E000E000600060006000700030003000180018000C 000C00060002000100008000400A2A7D9E10>I<800040002000100018000C000C000600 060003000300038001800180018001C001C001C001C001C001C001C001C001C001C001C0 01C0018001800180038003000300060006000C000C00180010002000400080000A2A7E9E 10>I<000600000006000000060000000600000006000000060000000600000006000000 06000000060000000600000006000000060000FFFFFFE0FFFFFFE0000600000006000000 060000000600000006000000060000000600000006000000060000000600000006000000 060000000600001B1C7E9720>43 D<60F0F0701010101020204080040C7C830C>II<60F0F06004047C830C>I<00010003000600060006000C000C000C00 18001800180030003000300060006000C000C000C0018001800180030003000300060006 000C000C000C00180018001800300030003000600060006000C000C00010297E9E15>I< 03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E007 E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>I<030007003F00C7 000700070007000700070007000700070007000700070007000700070007000700070007 0007000700070007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807 F8077007000F000E000E001C001C00380070006000C00180030006010C01180110023FFE 7FFEFFFE101C7E9B15>I<07E01830201C201C781E780E781E381E001C001C0018003000 6007E00030001C001C000E000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E 9B15>I<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C 00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C 00001C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC02000200020 0020002000200023E024302818301C200E000E000F000F000F600FF00FF00FF00F800E40 1E401C2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E300C700070006000 E3E0E430E818F00CF00EE006E007E007E007E007E007600760077006300E300C18180C30 03E0101D7E9B15>I<4000007FFF807FFF007FFF00400200800400800400800800001000 00100000200000600000400000C00000C00001C000018000018000038000038000038000 038000078000078000078000078000078000078000030000111D7E9B15>I<03E00C3010 08200C20066006600660067006780C3E083FB01FE007F007F818FC307E601E600FC007C0 03C003C003C00360026004300C1C1007E0101D7E9B15>I<03C00C301818300C700C600E E006E006E007E007E007E007E0076007700F300F18170C2707C700060006000E300C780C 78187010203030C00F80101D7E9B15>I<60F0F0600000000000000000000060F0F06004 127C910C>I<60F0F0600000000000000000000060F0F0701010101020204080041A7C91 0C>I<7FFFFFC0FFFFFFE000000000000000000000000000000000000000000000000000 00000000000000FFFFFFE07FFFFFC01B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF0 0E000C001C0030006000C000800180010001000100010001000100000000000000000000 0003000780078003000F1D7E9C14>63 D<000600000006000000060000000F0000000F00 00000F00000017800000178000001780000023C0000023C0000023C0000041E0000041E0 000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C 0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 DI<001F808000E061800180198007000780 0E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000 F0000000F0000000F0000000F0000000F0000000F0000000700000807800008078000080 380000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C 1E>IIII<001F808000E0618001801980070007800E000380 1C0003801C00018038000180780000807800008070000080F0000000F0000000F0000000 F0000000F0000000F0000000F000FFF0F0000F8070000780780007807800078038000780 1C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>II I<1FFF00F800780078007800780078007800780078007800780078007800780078007800 780078007800787078F878F878F878F0F040E021C01F00101D7F9B15>IIIII<003F800000E0E0000380380007001C000E000E001C0007003C000780380003807800 03C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F000 01E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E000700 1C000380380000E0E000003F80001B1E7E9C20>II<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380 780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0 F00001E0F00001E0700001C0780003C0780003C0380003803C0E07801C1107000E208E00 07205C0003A0780000F0E020003FE0200000602000003060000038E000003FC000003FC0 00001F8000000F001B257E9C20>II<07E0801C1980 300580700380600180E00180E00080E00080E00080F00000F800007C00007FC0003FF800 1FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C00180 E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F004040 0F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F000000 0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 0F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>IIII89 D<7FFFF07C01F07001E06003C06003C0400780400F80400F00401E0000 1E00003C00007C0000780000F00000F00001E00003E00003C0100780100780100F00101F 00301E00203C00203C00607800E0F803E0FFFFE0141C7E9B19>II<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>II<1FC000307000783800781C00301C00001C00001C0001FC000F1C00 381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E0 00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700 00070000070000070000070000070000070000070000070000070003E7000C1700180F00 300700700700600700E00700E00700E00700E00700E00700E00700600700700700300700 180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000 E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E 000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C 00381C00381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF 803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C00180000000000000000 00000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C 001C001C00FF80091D7F9C0C>I<00C001E001E000C00000000000000000000000000000 0FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 00E000E000E060E0F0C0F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E001 C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212 7F9115>II<03C1000C3300180B00300F00700700700700 E00700E00700E00700E00700E00700E00700600700700700300F00180F000C370007C700 000700000700000700000700000700000700000700003FE0131A7E9116>II<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D060 8FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C 001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>IIII<7F8FF00F03800F030007020003840001C80001 D80000F00000700000780000F800009C00010E00020E000607000403801E07C0FF0FF815 12809116>II<7FFC70386038407040F040E041C003C003 8007000F040E041C043C0C380870087038FFF80E127F9112>II<60 60F0F0F0F060600C047C9C15>127 D E /Fu 1 122 df<06000600060006000600060006 000600FFF0FFF00600060006000600060006000600060006000600060006000600060006 0006000600060006000C1D7E9611>121 D E /Fv 19 122 df<70F8FCFC740404040408 0810102040060F7C840E>44 D<70F8F8F87005057C840E>46 D<008003800F80F3800380 038003800380038003800380038003800380038003800380038003800380038003800380 0380038003800380038003800380038007C0FFFE0F217CA018>49 D<03F8000C1E001007002007804007C07807C07803C07807C03807C00007800007800007 00000F00000E0000380003F000001C00000F000007800007800003C00003C00003E02003 E07003E0F803E0F803E0F003C04003C0400780200780100F000C1C0003F00013227EA018 >51 D<1000801E07001FFF001FFE001FF80013E000100000100000100000100000100000 10000010F800130E001407001803801003800001C00001C00001E00001E00001E00001E0 7001E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227E A018>53 D<01F000060C000C0600180700380380700380700380F001C0F001C0F001C0F0 01E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E000 01C00001C00001C0000380000380300300780700780600700C002018001030000FC00013 227EA018>57 D72 D<03FFF0001F00000F00000F00000F00000F00000F00000F00000F00000F 00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F 00000F00000F00000F00000F00700F00F80F00F80F00F80E00F01E00401C002038001870 0007C00014237EA119>74 DI<0FE0001838003C0C003C0E0018070000070000070000070000FF00 07C7001E07003C0700780700700700F00708F00708F00708F00F087817083C23900FC1E0 15157E9418>97 D<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F0 0000F00000F00000F00000F000007000007800203800201C00400E008007030000FC0013 157F9416>101 D<00007001F198071E180E0E181C07001C07003C07803C07803C07803C 07801C07001C07000E0E000F1C0019F0001000001000001800001800001FFE000FFFC00F FFE03800F0600030400018C00018C00018C000186000306000303800E00E038003FE0015 217F9518>103 D<1C003E003E003E001C00000000000000000000000000000000000E00 FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E00FFC00A227FA10E>105 D<0E00FE001E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E00FFE00B237FA20E>108 D<0E1FC07F00FE60E183801E807201C00F 003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E00 3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038 00E00E003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F0070 0F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070 0E00700E00700E00700E0070FFE7FF18157F941B>I<0F8830786018C018C008C008E008 F0007F803FE00FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413>115 D<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00 700E00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B>117 D121 D E /Fw 1 4 df<00C00000C00000C00000C00000C000E0C1C0F0C3C038C7000EDC0003 F00000C00003F0000EDC0038C700F0C3C0E0C1C000C00000C00000C00000C00000C00012 157D9619>3 D E /Fx 16 117 df<0001FE00000007018000001C004000007800200000 F000F00000E001F00001E001F00003C001F00003C000E00003C000000003C000000003C0 00000003C000000003C000000003C000000003C000000003C000000003C000000003C000 0000FFFFFFF000FFFFFFF00003C001F00003C000F00003C000F00003C000F00003C000F0 0003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F000 03C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003 C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00007E0 01F8007FFE1FFF807FFE1FFF8021327FB124>12 D<78FCFCFCFC78000000000000000000 0000000000000000000078FCFCFCFC78061F7A9E12>58 D 75 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E0780000E070 0000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F80000007C 0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000FFFF0000 0FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F8000000F880 00007880000078800000788000007880000078C0000078C0000070E00000F0E00000E0F0 0000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125>83 D86 D<00FE00000303C0000C00E000100070 00100038003C003C003E001C003E001E003E001E0008001E0000001E0000001E0000001E 00000FFE0000FC1E0003E01E000F801E001F001E003E001E003C001E007C001E00F8001E 04F8001E04F8001E04F8003E04F8003E0478003E047C005E043E008F080F0307F003FC03 E01E1F7D9E21>97 D<003F8000E0600380180700040F00041E001E1C003E3C003E7C003E 7C0008780000F80000F80000F80000F80000F80000F80000F80000F80000F80000780000 7C00007C00003C00011E00011E00020F000207000403801800E060003F80181F7D9E1D> 99 D<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E000 0001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000 0001E0000001E0001F81E000F061E001C019E0078005E00F0003E00E0003E01E0001E03C 0001E03C0001E07C0001E0780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F8 0001E0F80001E0F80001E0F80001E0780001E0780001E03C0001E03C0001E01C0001E01E 0003E00E0005E0070009E0038011F000E061FF003F81FF20327DB125>I<003F800000E0 E0000380380007003C000E001E001E001E001C000F003C000F007C000F0078000F807800 0780F8000780F8000780FFFFFF80F8000000F8000000F8000000F8000000F8000000F800 0000780000007C0000003C0000003C0000801E0000800E0001000F0002000780020001C0 0C0000F03000001FC000191F7E9E1D>I<0F001F801F801F801F800F0000000000000000 0000000000000000000000000000000780FF80FF800F8007800780078007800780078007 80078007800780078007800780078007800780078007800780078007800780078007800F C0FFF8FFF80D307EAF12>105 D<0780FE001FC000FF83078060F000FF8C03C18078000F 9001E2003C0007A001E4003C0007A000F4001E0007C000F8001E0007C000F8001E000780 00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000 F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F000 1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000FC001F8003F 00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109 D<0780FE0000FF83078000FF8C 03C0000F9001E00007A001E00007A000F00007C000F00007C000F000078000F000078000 F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0 00078000F000078000F000078000F000078000F000078000F000078000F000078000F000 078000F000078000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF8021 1F7E9E25>I<001FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C00 01E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F800 00F8F80000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E00 03C00F00078007800F0001C01C0000F07800001FC0001D1F7E9E21>I<0781FC00FF8607 00FF8803C00F9001E007A000F007C00078078000780780003C0780003C0780003E078000 1E0780001F0780001F0780001F0780001F0780001F0780001F0780001F0780001F078000 1F0780003E0780003E0780003C0780007C0780007807C000F007A000F007A001E0079803 8007860F000781F800078000000780000007800000078000000780000007800000078000 00078000000780000007800000078000000FC00000FFFC0000FFFC0000202D7E9E25>I< 0783E0FF8C18FF907C0F907C07A07C07C03807C00007C00007C000078000078000078000 078000078000078000078000078000078000078000078000078000078000078000078000 0780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114 D<00400000400000400000400000400000C00000C00000C00001C00001C00003C00007C0 000FC0001FFFE0FFFFE003C00003C00003C00003C00003C00003C00003C00003C00003C0 0003C00003C00003C00003C00003C00003C00003C00003C01003C01003C01003C01003C0 1003C01003C01003C01001C02001E02000E0400078C0001F00142C7FAB19>116 D E end %%EndProlog %%BeginSetup TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 430 369 a Fx(Kermit:)29 b(Sp)r(eci\014cation)20 b(and)h(V)-6 b(eri\014cation)1520 343 y Fw(\003)781 490 y Fv(James)16 b(K.)f(Huggins)1168 472 y Fu(y)833 588 y Fv(July)h(13,)g(1995)62 738 y Ft(Kermit)j(is)h(a)g(p)q(opular)f(comm) o(unication)e(proto)q(col.)36 b(W)m(e)19 b(formally)e(sp)q(ecify)k (Kermit)e(and)h(v)o(erify)f(it.)36 b(As)20 b(far)g(as)0 788 y(w)o(e)f(kno)o(w,)f(this)h(has)f(not)h(b)q(een)g(done)g(y)o(et,)g (though)g(the)g(alternating)e(bit)h(and)h(sliding)e(windo)o(w)h(proto)q (cols,)h(used)g(b)o(y)0 838 y(Kermit,)11 b(ha)o(v)o(e)h(b)q(een)i(sp)q (eci\014ed)f(and)f(v)o(eri\014ed)h(b)o(y)f(man)o(y)e(authors)j([Kr,)f (SL,)f(LM].)17 b(Our)c(main)d(goal)h(is)h(a)g(faithful)f(readable)0 887 y(sp)q(eci\014cation)k(whic)o(h)e(allo)o(ws)g(one)h(to)g(formalize) e(the)i(in)o(tuitiv)o(e)f(v)o(eri\014cation)h(pro)q(of)f(without)h(m)o (uc)o(h)e(o)o(v)o(erhead.)62 937 y(In)h(his)f(forew)o(ord)g(to)g([DaC)o (],)g(Donald)f(Kn)o(uth)h(writes)h(\\I)f(hop)q(e)h(that)f(man)o(y)f (readers)i(of)f(this)g(b)q(o)q(ok)g(will)f(b)q(e)i(c)o(hallenged)0 987 y(to)i(\014nd)g(high-lev)o(el)f(concepts)j(and)d(in)o(v)n(arian)o (t)g(relations)h(b)o(y)f(whic)o(h)h(v)n(arious)g(v)o(ersions)g(of)f (the)i(Kermit)e(proto)q(col)h(can)g(b)q(e)0 1037 y(pro)o(v)o(ed)f (correct)i(in)d(a)h(mathematical)c(sense.")20 b(W)m(e)13 b(b)q(eliev)o(e)h(our)g(sp)q(eci\014cation)h(and)e(v)o(eri\014cation)h (meets)g(this)g(c)o(hallenge.)62 1087 y(W)m(e)e(use)i(the)f(ev)o (olving)e(algebra)h(approac)o(h.)18 b(Section)13 b(1)f(giv)o(es)h(a)f (self-con)o(tained)g(in)o(tro)q(duction)h(to)f(ev)o(olving)g(algebras;) 0 1136 y(a)g(fuller)h(de\014nition)f(can)h(b)q(e)g(found)g(in)f([Gur)o (].)17 b(W)m(e)c(use)g(the)h(term)e(\\ealgebra")g(\(read)h(e-algebra\)) g(as)g(an)f(abbreviation)g(for)0 1186 y(\\ev)o(olving)h(algebra".)19 b(W)m(e)14 b(b)q(egin)g(with)g(ealgebra)h(sp)q(eci\014cations)g(and)f (v)o(eri\014cations)h(of)f(t)o(w)o(o)g(more)f(abstract)i(comm)o(uni-)0 1236 y(cations)h(proto)q(cols)h(used)g(b)o(y)f(v)n(arious)g(v)o (ersions)h(of)e(Kermit:)23 b(the)17 b(alternating)e(bit)h(proto)q(col)h (and)f(the)h(sliding)e(windo)o(w)0 1286 y(proto)q(col.)j(The)13 b(nice)h(feature)g(of)f(the)h(ealgebra)f(approac)o(h)g(is)g(that)g(the) h(road)f(from)f(an)h(in)o(tuitiv)o(e)f(pro)q(of)h(to)g(a)g(precise)i (one)0 1336 y(is)i(v)o(ery)g(short;)h(there)g(is)e(little)g(o)o(v)o (erhead.)27 b(Then)17 b(w)o(e)g(will)e(presen)o(t)k(a)d(series)i(of)e (ealgebras)h(for)f(the)i(Kermit)e(proto)q(col,)0 1386 y(\014lling)c(in)i(the)g(pieces)h(where)g(necessary)h(to)e(sho)o(w)g (ho)o(w)f(Kermit)h(uses)h(the)f(abstract)h(proto)q(cols.)62 1435 y(As)d(usual)f(with)g(proto)q(cols,)h(w)o(e)f(pro)o(v)o(e)h (theorems)f(dealing)f(with)h(prop)q(erties)i(of)e(safet)o(y)g(\(\\bad)g (things)h(don't)e(happ)q(en"\))0 1485 y(and)j(liv)o(eness)h(\(\\go)q(o) q(d)f(things)g(do)g(happ)q(en"\).)19 b(Our)14 b(safet)o(y)f(theorems)g (are)h(of)f(the)h(form)e(\\Ev)o(ery)h(state)i(reac)o(hable)f(in)e(an)o (y)0 1535 y(relev)n(an)o(t)j(run)h(satis\014es)g(prop)q(ert)o(y)g (\010")f(and)g(are)g(pro)o(v)o(ed)h(b)o(y)e(induction)h(on)g(relev)n (an)o(t)g(runs.)23 b(It)15 b(is)g(usually)f(ob)o(vious)h(that)0 1585 y(relev)n(an)o(t)i(initial)e(states)k(satisfy)d(\010;)j(more)d(w)o (ork)g(is)h(required)h(to)f(sho)o(w)h(that)f(the)g(transition)g(rules)h (preserv)o(e)h(\010.)28 b(The)0 1635 y(liv)o(eness)14 b(theorems)g(ha)o(v)o(e)g(the)g(form)f(\\Ev)o(ery)h(fair)f(run)h(has)g (suc)o(h)h(and)e(suc)o(h)i(prop)q(ert)o(y)m(.")62 1684 y Fs(Ac)o(kno)o(wledgmen)o(ts.)g Ft(Y)m(uri)d(Gurevic)o(h)h(directed)h (this)f(study;)g(his)f(commen)o(ts)f(throughout)i(its)f(dev)o(elopmen)o (t)g(w)o(ere)0 1734 y(n)o(umerous)h(and)h(extremely)g(helpful.)j(F)m (rank)c(da)h(Cruz)h(made)d(useful)i(commen)o(ts)e(on)i(a)g(later)g (draft.)0 1871 y Fr(1)67 b(Ev)n(olving)25 b(Algebras)0 1962 y Ft(An)12 b(ealgebra)g Fq(A)g Ft(is)g(an)f(abstract)i(mac)o (hine.)j(The)c Fp(signatur)n(e)j Ft(of)d Fq(A)g Ft(is)f(a)h (\(\014nite\))g(collection)g(of)f(function)h(names,)f(eac)o(h)h(of)f(a) 0 2012 y(\014xed)g(arit)o(y)m(,)g(that)g(are)g(used)h(to)f(describ)q(e) i Fq(A)p Ft(.)k(A)11 b(state)h(of)f Fq(A)g Ft(is)g(a)f(set,)i(the)g Fp(sup)n(eruniverse)s Ft(,)f(together)h(with)f(in)o(terpretations)0 2061 y(of)h(the)i(function)f(names)f(in)g(the)i(signature.)k(The)13 b(sup)q(eruniv)o(erse)j(do)q(es)d(not)g(c)o(hange)h(as)f Fq(A)g Ft(ev)o(olv)o(es;)g(the)g(in)o(terpretations)0 2111 y(of)g(the)i(functions)f(ma)o(y)m(.)62 2161 y(F)m(ormally)m(,)9 b(a)j(function)g(of)f(arit)o(y)h Fo(r)h Ft(\()p Fp(i.e.)k Ft(the)c(in)o(terpretation)g(of)f(a)g(function)g(name)f(of)g(arit)o(y)h Fo(r)q Ft(\))g(is)g(an)g Fo(r)q Ft(-ary)g(op)q(eration)0 2211 y(on)f(the)g(sup)q(eruniv)o(erse.)20 b(W)m(e)10 b(often)h(use)h(functions)f(with)g Fo(r)h Ft(=)g(0;)f(suc)o(h)h (functions)f(will)e(b)q(e)j(called)f Fp(distinguishe)n(d)h(elements)s Ft(.)0 2261 y(Examples)h(of)g(suc)o(h)i(distingushed)g(elemen)o(ts)f (are)g Fp(true)s Ft(,)f Fp(false)s Ft(,)h(and)g Fp(undef)9 b Ft(,)14 b(whic)o(h)g(app)q(ear)g(in)g(ev)o(ery)h(ealgebra)f(and)g (are)0 2311 y(kno)o(wn)d(as)g Fp(lo)n(gic)n(al)h(names)s Ft(.)18 b(F)m(unctions)11 b(ma)o(y)f(b)q(e)i(de\014ned)g(only)f(on)g(a) g(part)g(of)g(the)h(sup)q(eruniv)o(erse;)i(suc)o(h)e(partial)e (functions)0 2360 y(are)16 b(represen)o(ted)i(b)o(y)d(total)g (functions)g(where)i Fo(f)t Ft(\()p 795 2338 22 2 v Fo(a)q Ft(\))d(=)h Fp(undef)25 b Ft(means)15 b Fo(f)20 b Ft(is)15 b(unde\014ned)i(at)e(the)h(tuple)p 1654 2338 V 16 w Fo(a)p Ft(.)22 b(Relations)15 b(are)0 2410 y(represen)o(ted)i(as)d(Bo)q (olean-v)n(alued)f(functions.)62 2460 y(A)e Fp(universe)j Fo(U)i Ft(is)10 b(a)h(sp)q(ecial)g(t)o(yp)q(e)g(of)g(function:)16 b(a)10 b(unary)h(relation)f(usually)g(iden)o(ti\014ed)h(with)g(the)g (set)h Fq(f)p Fo(x)f Ft(:)g Fo(U)5 b Ft(\()p Fo(x)p Ft(\))p Fq(g)p Ft(.)17 b(The)0 2510 y(univ)o(erse)g Fo(B)r(ool)f Ft(=)f Fq(f)p Fo(tr)q(ue;)7 b(f)t(al)q(se)p Fq(g)16 b Ft(is)f(an)h(example)e(\(in)i(fact,)f Fp(Bo)n(ol)20 b Ft(is)c(a)f(logical)f(name)g(app)q(earing)i(in)f(ev)o(ery)h (ealgebra\).)p 0 2545 780 2 v 46 2572 a Fn(\003)64 2584 y Fm(Originally)8 b(in)i Fl(Sp)n(e)n(ci\014c)n(ation)k(and)e(V)m (alidation)h(Metho)n(ds)s Fm(,)e(ed.)j(E.)d(B\177)-18 b(orger,)9 b(Oxford)g(Univ)o(ersit)o(y)g(Press,)g(1995.)14 b(Reprin)o(ted)8 b(b)o(y)i(p)q(ermission)0 2623 y(of)h(Oxford)g(Univ)o (ersit)o(y)f(Press.)47 2652 y Fn(y)64 2664 y Fm(EECS)h(Departmen)o(t,)d (Univ)o(ersit)o(y)h(of)i(Mic)o(higan,)e(Ann)i(Arb)q(or,)g(MI)g (48109-2122)o(,)e(h)o(uggins@umic)n(h.ed)o(u.)j(P)o(artially)d(supp)q (orted)g(b)o(y)h(ONR)0 2704 y(gran)o(t)g(N00014-91-J-186)o(1)f(and)h (NSF)i(gran)o(t)e(CCR-92-04742.)965 2828 y Ft(1)p eop %%Page: 2 2 2 1 bop 0 50 a Ft(2)965 b Fk(2.)41 b(THE)14 b(AL)m(TERNA)m(TING)e(BIT)j (PR)o(OTOCOL)f(\(ABP\))0 195 y Ft(When)g(w)o(e)h(sp)q(eak)f(ab)q(out)g (a)g(function)g Fo(f)19 b Ft(from)12 b(a)i(univ)o(erse)h Fo(U)k Ft(to)14 b(a)g(univ)o(erse)h Fo(V)9 b Ft(,)14 b(w)o(e)g(mean)f(that)h(formally)d Fo(f)19 b Ft(is)14 b(a)g(unary)0 245 y(op)q(eration)g(on)h(the)g(sup)q(eruniv)o(erse)i (suc)o(h)e(that)g Fo(f)t Ft(\()p Fo(a)p Ft(\))e Fq(2)g Fo(V)24 b Ft(for)14 b(all)f Fo(a)g Fq(2)f Fo(U)20 b Ft(and)14 b Fo(f)t Ft(\()p Fo(a)p Ft(\))g(=)h Fp(undef)24 b Ft(otherwise.)d(W)m (e)14 b(use)h(self-)0 295 y(explanatory)f(notations)g(lik)o(e)g Fo(f)k Ft(:)12 b Fo(U)18 b Fq(!)13 b Fo(V)c Ft(,)14 b Fo(f)k Ft(:)12 b Fo(U)801 301 y Fj(1)830 295 y Fq(\002)e Fo(U)900 301 y Fj(2)932 295 y Fq(!)i Fo(V)e Ft(,)k(and)h Fo(f)i Ft(:)c Fo(V)c Ft(.)21 b(The)15 b(last)f(means)g(that)h(the)g (distinguished)0 345 y(elemen)o(t)e Fo(f)19 b Ft(b)q(elongs)14 b(to)g Fo(V)9 b Ft(.)62 394 y(An)15 b Fp(external)g(function)j Ft(is)c(also)f(a)h(sp)q(ecial)h(t)o(yp)q(e)f(of)g(funciton:)k(its)c(v)n (alues)g(are)h(determined)f(outside)h(of)e(the)i(scop)q(e)h(of)0 444 y(the)e(algebra,)f(and)h(ma)o(y)e(c)o(hange)i(from)e(state)j(to)f (state)h(without)e(b)q(eing)h(up)q(dated)h(b)o(y)e(the)i(ealgebra)f (itself.)62 494 y(W)m(e)g(de\014ne)h Fp(tr)n(ansition)f(rules)j Ft(recursiv)o(ely:)62 575 y Fq(\017)k Ft(An)14 b Fp(up)n(date)h (instruction)i Ft(is)d(a)f(transition)h(rule)g(and)g(has)g(the)g(form) 836 671 y Fp(f\()p Fo(t)881 677 y Fj(1)899 671 y Fp(,)h Fo(:)7 b(:)g(:)n Fp(,)15 b Fo(t)1018 677 y Fi(r)1036 671 y Fp(\))g(:=)g Fo(t)1143 677 y Fi(r)q Fj(+1)104 768 y Ft(where)i(eac)o(h)g Fo(t)337 774 y Fi(i)367 768 y Ft(is)f(a)h(closed)f(term)g(\()p Fp(i.e.)26 b Ft(a)16 b(term)f(con)o(taining)h(no)g(free)h(v)n(ariables\))f(in)g(the)h (signature)f(of)g Fq(A)p Ft(.)26 b(The)104 817 y(meaning)11 b(of)i(the)h(instruction)g(is)f(the)h(ob)o(vious)e(one:)18 b(Ev)n(aluate)13 b(all)f(terms)h Fo(t)1309 823 y Fi(i)1336 817 y Ft(in)g(the)h(giv)o(en)f(state,)h(and)f(c)o(hange)g(the)104 867 y(v)n(alue)g(of)g Fo(f)19 b Ft(at)14 b(tuple)g(\()p Fo(t)485 873 y Fj(1)503 867 y Fo(;)7 b(:)g(:)g(:)e(;)i(t)611 873 y Fi(r)629 867 y Ft(\))14 b(to)g(the)g(v)n(alue)g(of)f Fo(t)951 873 y Fi(r)q Fj(+1)1011 867 y Ft(.)62 949 y Fq(\017)21 b Ft(A)14 b Fp(guar)n(de)n(d)h(rule)h Ft(is)e(a)g (transition)f(rule)h(and)g(has)g(the)h(form)860 1046 y Fh(if)h Fo(t)923 1052 y Fj(0)957 1046 y Fh(then)h Fo(R)1096 1052 y Fj(0)860 1095 y Fh(elseif)g Fo(t)1000 1101 y Fj(1)1033 1095 y Fh(then)g Fo(R)1172 1101 y Fj(1)860 1140 y Fp(.)860 1156 y(.)860 1173 y(.)860 1223 y Fh(elseif)g Fo(t)1000 1229 y Fi(k)1035 1223 y Fh(then)g Fo(R)1174 1229 y Fi(k)860 1272 y Fh(endif)104 1367 y Ft(where)d(eac)o(h)g Fo(t)331 1373 y Fi(i)357 1367 y Ft(is)f(a)g(closed)h(Bo)q(olean-v)n(alued)e (term)g(and)h(eac)o(h)h Fo(R)1146 1373 y Fi(i)1172 1367 y Ft(is)f(a)g(rule.)18 b(The)13 b(meaning)f(of)g(the)i(instruction)f (is)104 1417 y(the)h(ob)o(vious)f(one:)18 b(execute)e Fo(R)598 1423 y Fi(j)629 1417 y Ft(where)f Fo(j)h Ft(is)d(the)i (smallest)d(v)n(alue)h(for)h(whic)o(h)g Fo(t)1359 1423 y Fi(j)1390 1417 y Ft(is)f(true)i(in)e(the)i(giv)o(en)e(state.)19 b(If)13 b(no)104 1467 y(suc)o(h)h Fo(j)j Ft(exists,)d(do)g(nothing.)62 1549 y Fq(\017)21 b Ft(A)d Fp(blo)n(ck)23 b Ft(\(or)18 b(sequence\))i(of)e(transition)f(rules)i(is)f(a)g(transition)g(rule.)31 b(T)m(o)17 b(execute)j(a)e(blo)q(c)o(k,)g(execute)i(all)d(rules)104 1598 y(in)g(the)h(blo)q(c)o(k)f(sim)o(ultaneously)m(.)25 b(If)17 b(no)g(t)o(w)o(o)g(rules)h(con\015ict)g(\()p Fp(i.e.)28 b Ft(attempt)17 b(to)g(mo)q(dify)e(the)j(same)e(tuple)i(of)e (the)104 1648 y(same)e(function\),)h(the)h(e\013ect)h(of)e(executing)h (the)g(sequence)i(is)d(the)h(union)f(of)g(the)h(e\013ects)h(of)e (executing)h(eac)o(h)g(rule)104 1698 y(individually)m(.)f(If)e(t)o(w)o (o)h(rules)g(con\015ict,)g(no)g(up)q(dates)h(are)f(made)f(and)g(the)i (algebra)e(halts.)62 1779 y(A)i(distributed)f(ev)o(olving)f(algebra)h Fq(A)g Ft(consists)i(of)d(a)h(set)h(of)f Fp(agents)s Ft(,)h(eac)o(h)f(of)g(whic)o(h)g(has)h(a)e(corresp)q(onding)j Fp(pr)n(o)n(gr)n(am)0 1828 y Ft(\()p Fp(i.e.)25 b Ft(a)17 b(transition)f(rule\).)25 b(W)m(e)16 b(call)g(a)g(function)g Fp(c)n(ommon)21 b Ft(if)15 b(all)g(agen)o(ts)i(in)o(terpret)h(the)f (function)f(name)f(in)h(the)h(same)0 1878 y(w)o(a)o(y;)c Fp(private)j Ft(functions)e(ma)o(y)e(b)q(e)j(in)o(terpreted)g (di\013eren)o(tly)g(b)o(y)e(di\013eren)o(t)i(agen)o(ts.)62 1928 y(A)h Fp(se)n(quential)h(run)i Ft(is)c(a)g(sequence)j(of)d (states;)j(eac)o(h)e(state)g(\(except)i(for)d(its)h(external)g (functions\))g(is)f(obtained)h(from)0 1978 y(its)e(predecessor)j(b)o(y) c(\014ring)h(some)f(collection)g(of)h(non-con\015icting)f(agen)o(ts)h (sim)o(ultaneously)m(.)0 2115 y Fr(2)67 b(The)22 b(Alternating)i(Bit)f (Proto)r(col)f(\(ABP\))0 2205 y Ft(The)d(alternating)f(bit)g(proto)q (col)g(\(ABP\),)h(\014rst)g(prop)q(osed)h(in)e([BSW)o(],)h(is)f(a)g (simple)f(proto)q(col)i(at)f(the)h(heart)g(of)f(man)o(y)0 2255 y(comm)o(unication)f(proto)q(cols)j(curren)o(tly)h(in)e(use.)38 b(Eac)o(h)20 b(agen)o(t)g(participating)f(in)h(the)h(proto)q(col)e(\(w) o(e)i(will)d(call)i(them)0 2305 y(\\sender")c(and)f(\\receiv)o(er",)g (though)g(b)q(oth)g(agen)o(ts)g(send)h(and)f(receiv)o(e)h(messages\))f (has)g(a)f(priv)n(ate)h(sync)o(hronization)g(bit.)0 2355 y(The)i(sender)h(has)f(data)f(whic)o(h)g(she)i(sends)f(to)g(the)g (receiv)o(er.)27 b(The)17 b(receiv)o(er)h(sends)g(an)e(ac)o(kno)o (wledgmen)o(t)f(message)h(for)0 2405 y(eac)o(h)h(datum)e(receiv)o(ed.) 27 b(Messages)18 b(are)f(mark)o(ed)e(with)h(a)g(sync)o(hronization)h (bit)f(to)g(distinguish)g(b)q(et)o(w)o(een)i(data)e(whic)o(h)0 2455 y(has)e(and)g(has)g(not)g(b)q(een)h(receiv)o(ed)g(b)o(y)e(the)i (receiv)o(er.)62 2504 y(W)m(e)g(presen)o(t)i(a)e(generalized)h(v)o (ersion)f(of)f(the)i(ABP)g(whic)o(h)f(sends)i(an)d(in\014nite)h (sequence)j(of)c(data)h(b)q(et)o(w)o(een)i(the)e(t)o(w)o(o)0 2554 y(agen)o(ts)g(and)g(pro)o(v)o(e)g(its)g(correctness,)j(using)d (sequen)o(tial)g(runs)h(throughout.)21 b(An)15 b(ABP)h(whic)o(h)f (sends)h(a)f(\014nite)g(sequence)0 2604 y(of)e(data)h(and)g(terminates) f(can)h(easily)g(b)q(e)g(dev)o(elop)q(ed)h(from)d(our)i(more)f(general) h(v)o(ersion.)62 2654 y(As)g(an)f(aid)f(to)h(comprehension,)g(w)o(e)g (use)h(feminine)e(pronouns)h(to)g(refer)h(to)f(the)h(sender)h(and)e (masculine)f(pronouns)h(to)0 2704 y(refer)i(to)f(the)g(receiv)o(er.)p eop %%Page: 3 3 3 2 bop 0 50 a Fk(2.1)41 b(F)m(unction)13 b(Descriptions)1438 b Ft(3)0 195 y Fg(2.1)56 b(F)-5 b(unction)19 b(Descriptions)0 274 y Fs(2.1.1)48 b(Common)15 b(F)l(unctions)0 353 y Ft(Our)i(agen)o(ts)g(send)h(messages,)f(eac)o(h)g(comprising)e(a)h (datum)f(and)i(a)f(sync)o(hronization)h(bit,)f(through)h(a)g(net)o(w)o (ork.)26 b(This)0 403 y(leads)14 b(to)g(univ)o(erses)i(of)d Fp(messages)s Ft(,)i Fp(data)s Ft(,)f(and)g Fp(bits)s Ft(.)19 b(W)m(e)13 b(represen)o(t)k(eac)o(h)d(comm)o(unication)d(path)j (b)q(et)o(w)o(een)i(agen)o(ts)e(as)g(a)0 453 y(queue)f(of)f(messages;)h (this)f(leads)h(to)f(a)g(univ)o(erse)h(of)f Fp(queues)s Ft(.)19 b(\(Note)13 b(that)f(b)o(y)h(\\queue")f(w)o(e)h(mean)e(the)i (abstract)h(datat)o(yp)q(e)0 502 y(and)g(not)g(a)f(particular)h(ph)o (ysical)f(device.\))19 b(W)m(e)14 b(also)f(mak)o(e)f(use)j(of)e(the)i (univ)o(erse)f(of)g Fp(inte)n(gers)s Ft(.)62 554 y(W)m(e)g(use)h(the)g (functions)g Fp(Msg:)20 b(data)c Fq(\002)f Fp(bits)g Fq(!)g Fp(messages)s Ft(,)f Fp(Bit:)20 b(messages)c Fq(!)e Fp(bits)k Ft(and)c Fp(Data:)20 b(messages)c Fq(!)f Fp(data)0 603 y Ft(to)d(comp)q(ose)f(and)h(decomp)q(ose)g(messages,)g(resp)q (ectiv)o(ely)m(.)18 b(\(That)12 b(is,)f(if)g Fp(Msg\(d,b\))j(=)f(m)s Ft(,)e(then)i Fp(Bit\(m\))g(=)f(b)j Ft(and)d Fp(Data\(m\))0 653 y(=)i(d)t Ft(.\))19 b(The)14 b(distinguished)f(elemen)o(t)g Fp(Nul)r(l:)18 b(data)f Ft(is)d(a)f(datum)f(used)i(as)g(a)f (placeholder)h(for)f(ac)o(kno)o(wledgmen)o(t)f(messages)0 703 y(\(in)i(whic)o(h)g(the)h(only)f(imp)q(ortan)o(t)f(information)e (is)j(the)h(bit,)f(not)g(the)h(datum\).)k(The)14 b(function)g Fp(Flip:)20 b(bits)15 b Fq(!)g Fp(bits)i Ft(\015ips)d(a)0 753 y(bit)g(to)f(its)h(opp)q(osite)g(v)n(alue.)k(That)13 b(is,)h Fp(Flip\(0\))g(=)h(1)20 b Ft(and)13 b Fp(Flip\(1\))i(=)g(0)6 b Ft(.)62 804 y(F)m(or)13 b Fp(queues)s Ft(,)g(w)o(e)g(use)h(the)f (functions)g Fp(App)n(end:)19 b(queues)c Fq(\002)f Fp(messages)h Fq(!)e Fp(queues)p Ft(,)g Fp(He)n(ad:)19 b(queues)14 b Fq(!)g Fp(messages)s Ft(,)f(and)0 854 y Fp(T)m(ail:)24 b(queues)18 b Fq(!)f Fp(queues)k Ft(with)c(the)g(ob)o(vious)g (meanings.)25 b(The)18 b(distinguished)f(elemen)o(t)f Fp(EmptyQueue:)25 b(queues)c Ft(is)c(a)0 903 y(queue)g(con)o(taining)f (no)g(messages.)27 b(W)m(e)16 b(denote)h Fp(App)n(end\(a,b\))i Ft(b)o(y)e Fp(a)g Ft(++)h Fp(b)s Ft(.)26 b(An)17 b(external)g(function) f Fp(Shrink:)24 b(queues)0 953 y Fq(!)17 b Fp(queues)k Ft(returns)e(a)d(queue)i(obtain)e(b)o(y)h(deleting)g(zero)h(or)f(more)f (messages)h(from)e(the)i(input)g(queue,)h(essen)o(tially)f(at)0 1003 y(random,)12 b(while)h(main)o(taining)e(the)j(relativ)o(e)g (ordering)g(of)f(the)i(remaining)c(messages.)62 1054 y(F)m(or)j Fp(inte)n(gers)s Ft(,)f(w)o(e)h(use)h(the)f(standard)h (in\014x)e(addition)g(function)g(+,)h(as)g(w)o(ell)f(as)h(the)h (constan)o(t)f(1.)62 1105 y(The)h(function)e Fp(Time)n(out:)19 b(Bo)n(ol)f Ft(is)c(used)g(to)g(generate)h(re-transmissions)f(of)f (messages.)0 1220 y Fs(2.1.2)48 b(Priv)m(ate)15 b(F)l(unctions)0 1299 y Ft(Eac)o(h)j(agen)o(t)g(has)g(a)g(distinguished)g(elemen)o(t)f Fp(SenderInMsg,)k(R)n(e)n(c)n(eiverInMsg:)27 b(messages)21 b Ft(whic)o(h)d(holds)g(the)g(curren)o(t)0 1349 y(message)12 b(b)q(eing)h(pro)q(cessed)h(b)o(y)f(the)g(agen)o(t,)f(and)g(a)h (distinguished)f(elemen)o(t)g Fp(SenderBit,)i(R)n(e)n(c)n(eiverBit:)j (bits)f Ft(whic)o(h)c(holds)0 1398 y(the)f(agen)o(t's)f(sync)o (hronization)g(bit.)16 b(Distinguished)10 b(elemen)o(ts)g Fp(SenderQueue,)j(R)n(e)n(c)n(eiverQueue:)k(queues)e Ft(store)c(messages)0 1448 y(w)o(aiting)h(to)i(b)q(e)h(pro)q(cessed.)62 1499 y(The)h(data)f(that)g(the)h(sender)h(sends)f(is)f(stored)h(in)f(a) g(function)g Fp(SenderFile:)21 b(inte)n(gers)16 b Fq(!)f Fp(data)s Ft(;)h(the)g(receiv)o(er)h(stores)0 1549 y(all)f(data)h (receiv)o(ed)h(in)f(a)g(corresp)q(onding)h(function)f Fp(R)n(e)n(c)n(eiverFile:)24 b(inte)n(gers)17 b Fq(!)h Fp(data)s Ft(.)28 b(The)18 b(distinguished)f(functions)0 1599 y Fp(SenderNo,)e(R)n(e)n(c)n(eiverNo:)k(inte)n(gers)e Ft(indicate)c(the)i(curren)o(t)g(datum)e(b)q(eing)g(sen)o(t)i(or)f (receiv)o(ed.)0 1722 y Fg(2.2)56 b(Mo)r(dule)17 b(Sp)r(eci\014cations)0 1801 y Ft(W)m(e)10 b(use)h(abbreviations)f Fp(De\014ne)n(d\(t\),)j (Unde\014ne)n(d\(t\),)g(Cle)n(ar\(t\))d Ft(for)21 b Fp(t)11 b Fq(6)p Ft(=)p Fp(undef)f Ft(,)g Fp(t)i(=)f(undef)20 b Ft(and)10 b Fp(t)h(:=)g(undef)20 b Ft(resp)q(ectiv)o(ely;)0 1850 y(here)15 b Fo(t)f Ft(is)g(a)f(term.)62 1902 y(The)k(sender)h (examines)d(eac)o(h)i(ac)o(kno)o(wledgmen)o(t)e(message)h(sen)o(t)h(to) f(her)h(b)o(y)g(the)g(receiv)o(er.)26 b(If)16 b(the)h(sender)h(receiv)o (es)0 1951 y(an)g(ac)o(kno)o(wledgmen)o(t)f(whose)i(bit)f(matc)o(hes)g (her)h(sync)o(hronization)g(bit,)f(she)i(kno)o(ws)e(that)g(her)i(last)e (message)g(arriv)o(ed)0 2001 y(successfully)m(,)d(and)f(she)i(can)e(no) o(w)g(send)i(a)e(new)h(message)f(\(with)g(a)h(new)f(bit\).)20 b(An)o(y)15 b(messages)f(receiv)o(ed)i(whose)f(bit)f(do)q(es)0 2051 y(not)g(matc)o(h)e(her)j(sync)o(hronization)f(bit)g(are)g (discarded.)62 2102 y(T)m(o)i(insure)g(against)g(message)f(loss)h(due)h (to)f(an)f(unreliable)h(net)o(w)o(ork,)g(the)h(sender)h(also)d (re-sends)j(her)e(last)g(message)0 2152 y(when)g(a)g(timeout)f(signal)f (o)q(ccurs.)26 b(W)m(e)15 b(also)h(use)g(this)g(b)q(eha)o(vior)g(to)g (b)q(egin)g(the)g(comm)o(unication)d(pro)q(cess;)18 b(during)d(an)o(y)0 2202 y(run,)g(no)g(transition)g(rules)h(will)e(\014re)h(un)o(til)g(a)g (timeout)e(signal)i(o)q(ccurs,)h(at)f(whic)o(h)g(p)q(oin)o(t)g(the)h (sender)g(will)e(send)i(her)g(\014rst)0 2252 y(message.)62 2303 y(The)d(receiv)o(er)h(ac)o(kno)o(wledges)f(ev)o(ery)h(message)e (he)h(receiv)o(es)h(from)d(the)i(sender)h(b)o(y)f(re-transmitting)e (the)i(bit)g(from)d(the)0 2352 y(receiv)o(ed)16 b(message.)j (Additionally)m(,)12 b(if)i(the)h(bit)f(receiv)o(ed)i(matc)o(hes)e(his) g(sync)o(hronization)g(bit,)g(the)h(receiv)o(er)h(records)g(the)0 2402 y(datum)d(from)f(the)i(message)g(in)g(his)f(output)i(\014le,)e (and)h(up)q(dates)h(his)f(\014le)g(mark)o(er)f(and)h(sync)o (hronization)f(bit)h(to)g(b)q(e)h(ready)0 2452 y(to)f(accept)h(the)f (next)h(datum)d(from)g(the)j(sender.)k(The)c(sender)g(and)f(receiv)o (er)h(mo)q(dules)e(are)i(giv)o(en)e(in)g(Fig.)g(1.)62 2503 y(Agen)o(ts)19 b(comm)o(unicate)d(b)o(y)i(placing)g(messages)g(in) o(to)g(queues)h(\()p Fp(SenderQueue,)i(R)n(e)n(c)n(eiverQueue)s Ft(\))e(and)f(b)o(y)g(reading)0 2553 y(messages)h(placed)g(in)o(to)g (reception)h(v)n(ariables)e(\()p Fp(SenderInMsg,)k(R)n(e)n(c)n (eiverInMsg)t Ft(\).)33 b(Tw)o(o)19 b(comm)o(uni)o(cations)d(mo)q (dules,)0 2603 y(sho)o(wn)e(in)f(Fig.)g(2,)g(transfer)i(messages)f(b)q (et)o(w)o(een)h(these)h(queues)f(and)e(reception)i(v)n(ariables.)62 2654 y(If)g(the)h(comm)o(unications)d(net)o(w)o(ork)j(w)o(ere)g (reliable,)f(no)g(further)i(mo)q(dules)d(w)o(ould)h(b)q(e)h(needed.)24 b(Ho)o(w)o(ev)o(er,)16 b(messages)0 2704 y(ma)o(y)10 b(b)q(e)i(lost,)f(although)f(not)i(corrupted)h(or)e(re-ordered.)19 b(As)12 b(a)f(result,)h(w)o(e)g(need)g(to)g(generate)h(timeout)d (signals)g(to)i(enable)p eop %%Page: 4 4 4 3 bop 0 50 a Ft(4)965 b Fk(2.)41 b(THE)14 b(AL)m(TERNA)m(TING)e(BIT)j (PR)o(OTOCOL)f(\(ABP\))p 0 597 1950 3 v 0 647 a Ff(Mo)q(dule:)20 b(Sender)0 697 y Fe(Rule:)f(ReT)m(ransmit)0 747 y Fh(if)e Fp(Time)n(out)d Fh(then)68 796 y Fp(R)n(e)n(c)n(eiverQueue)h(:=)136 846 y(R)n(e)n(c)n(eiverQueue)g Ft(++)g Fp (Msg\(SenderFile\(SenderNo\),SenderBit\))68 896 y(Time)n(out)f(:=)h (false)0 946 y Fh(endif)0 1046 y Fe(Rule:)k(Pro)q(cessAck)0 1095 y Fh(if)e Fp(De\014ne)n(d\(SenderInMsg\))g Fh(and)f Fp(Bit\(SenderInMsg\))g(=)f(SenderBit)g Fh(then)68 1145 y Fp(R)n(e)n(c)n(eiverQueue)g(:=)98 1195 y(R)n(e)n(c)n(eiverQueue)g Ft(++)g Fp(Msg\(SenderFile\(SenderNo+1\),Flip\(SenderBit\)\))68 1245 y(SenderBit)g(:=)f(Flip\(SenderBit\),)h(SenderNo)g(:=)g(SenderNo)g (+)g(1)0 1295 y Fh(endif)0 1394 y Fe(Rule:)k(Clea)o(rMessage)0 1444 y Fh(if)e Fp(De\014ne)n(d\(SenderInMsg\))g Fh(then)g Fp(Cle)n(ar\(SenderInMsg\))e Fh(endif)p 98 1494 1755 3 v 0 1544 a Ff(Mo)q(dule:)20 b(Receiver)0 1594 y Fe(Rule:)f (AcceptDatum)0 1643 y Fh(if)e Fp(De\014ne)n(d\(R)n(e)n(c)n (eiverInMsg\))f Fh(and)g Fp(Bit\(R)n(e)n(c)n(eiverInMsg\))f(=)g(R)n(e)n (c)n(eiverBit)f Fh(then)68 1693 y Fp(R)n(e)n(c)n(eiverFile\(R)n(e)n(c)n (eiverNo\))g(:=)g(Data\(R)n(e)n(c)n(eiverInMsg\))68 1743 y(R)n(e)n(c)n(eiverNo)g(:=)h(R)n(e)n(c)n(eiverNo)f(+)h(1,)g(R)n(e)n(c)n (eiverBit)f(:=)g(Flip\(R)n(e)n(c)n(eiverBit\))0 1793 y Fh(endif)0 1892 y Fe(Rule:)19 b(Ackno)o(wledgeMessage)0 1942 y Fh(if)e Fp(De\014ne)n(d\(R)n(e)n(c)n(eiverInMsg\))f Fh(then)68 1992 y Fp(SenderQueue)g(:=)e(SenderQueue)i Ft(++)g Fp(Msg\(Nul)r(l,Bit\(R)n(e)n(c)n(eiverInMsg\)\))68 2042 y(Cle)n(ar\(R)n(e)n(c)n(eiverInMsg\))0 2092 y Fh(endif)p 0 2164 1950 3 v 571 2296 a Ft(Figure)e(1:)k(ABP)d(sender)g(and)f (receiv)o(er)h(mo)q(dules.)p eop %%Page: 5 5 5 4 bop 0 50 a Fk(2.3)41 b(Run)13 b(De\014nitions)1548 b Ft(5)p 0 198 1950 3 v 335 248 a Ff(Mo)q(dule:)20 b(SenderCommunicate) 335 298 y Fh(if)d Fp(Unde\014ne)n(d\(SenderInMsg\))g Fh(and)f Fp(SenderQueue)g Fq(6)p Ft(=)p Fp(EmptyQueue)g Fh(then)403 348 y Fp(SenderInMsg)g(:=)e(He)n(ad\(SenderQueue\))403 397 y(SenderQueue)i(:=)e(T)m(ail\(SenderQueue\))335 447 y Fh(endif)335 547 y Ff(Mo)q(dule:)20 b(ReceiverCommunicate)335 597 y Fh(if)d Fp(Unde\014ne)n(d\(R)n(e)n(c)n(eiverInMsg\))f Fh(and)g Fp(R)n(e)n(c)n(eiverQueue)f Fq(6)p Ft(=)p Fp(EmptyQueue)h Fh(then)403 646 y Fp(R)n(e)n(c)n(eiverInMsg)f(:=)f(He)n(ad\(R)n(e)n(c)n (eiverQueue\))403 696 y(R)n(e)n(c)n(eiverQueue)h(:=)f(T)m(ail\(R)n(e)n (c)n(eiverQueue\))335 746 y Fh(endif)p 0 818 V 427 951 a Ft(Figure)g(2:)j(ABP)e(sender)g(and)f(receiv)o(er)i(comm)o(uni)o (cation)11 b(mo)q(dules.)0 1087 y(the)j(sender)i(to)e(re-transmit)f (messages.)18 b(W)m(e)c(presen)o(t)h(three)g(mo)q(dules)e(whic)o(h)h (describ)q(e)h(this)f(b)q(eha)o(vior)g(in)f(Fig.)g(3.)p 0 1193 V 456 1243 a Ff(Mo)q(dule:)20 b(SenderLoseMessage)456 1293 y Fp(SenderQueue)c(:=)e(Shrink\(SenderQueue\))i Fh(endif)456 1392 y Ff(Mo)q(dule:)k(ReceiverLoseMessage)456 1442 y Fp(R)n(e)n(c)n(eiverQueue)15 b(:=)f(Shrink\(R)n(e)n(c)n (eiverQueue\))h Fh(endif)456 1542 y Ff(Mo)q(dule:)20 b(Timeout)456 1592 y Fh(if)c Fp(SenderQueue)g(=)f(R)n(e)n(c)n (eiverQueue)g(=)g(EmptyQueue)591 1642 y Fh(and)i Fp(SenderInMsg)f(=R)n (e)n(c)n(eiverInMsg)f(=)f(undef)i Fh(then)523 1691 y Fp(Time)n(out)f(:=)f(true)456 1741 y Fh(endif)p 0 1813 V 564 1946 a Ft(Figure)g(3:)j(Net)o(w)o(ork)e(loss)f(and)f(timeout)g (mo)q(dules.)0 2124 y Fg(2.3)56 b(Run)18 b(De\014nitions)0 2204 y Ft(W)m(e)12 b(no)o(w)f(wish)h(to)g(pro)o(v)o(e)g(the)g (correctness)j(of)d(the)g(ABP)m(.)g(W)m(e)f(cannot)h(pro)o(v)o(e)g (that)g(an)o(y)g(of)f(the)i(proto)q(cols)f(to)g(b)q(e)g(discussed)0 2253 y(here)21 b(are)f(correct)h(for)e(all)g(runs;)k(most)18 b(proto)q(cols)i(assume,)g(for)f(example,)g(that)h(b)q(oth)g(agen)o(ts) g(satisfy)f(some)g(initial)0 2303 y(conditions.)e(Consequen)o(tly)m(,)c (w)o(e)g(restrict)i(our)e(atten)o(tion)g(to)f(certain)i(t)o(yp)q(es)g (of)e(runs.)19 b(Call)11 b(a)i(run)g Fo(\032)h Fp(r)n(e)n(gular)e Ft(if)g(its)h(initial)0 2353 y(state)k(satis\014es)g(a)f(sp)q (eci\014ed)i(set)f(of)e(initial)f(conditions.)25 b(The)16 b(initial)e(conditions)i(for)g(the)h(ABP)f(are)h(sho)o(wn)f(in)g(Fig.)f (4.)0 2403 y(Our)f(safet)o(y)g(prop)q(erties)i(will)c(b)q(e)j(pro)o(v)o (ed)f(o)o(v)o(er)g(regular)g(runs.)62 2455 y(Comm)o(unicatio)o(n)g(ma)o (y)g(not)i(b)q(e)h(p)q(ossible)g(ev)o(en)g(in)f(a)g(regular)g(run.)26 b(The)16 b(sender)i(migh)o(t)c(nev)o(er)k(receiv)o(e)f(a)f(timeout)0 2504 y(when)j(one)f(is)g(needed,)j(or)d(a)g(comm)o(unicatio)o(ns)e(mo)q (dule)h(migh)o(t)f(b)q(e)j(to)q(o)f(activ)o(e,)h(thro)o(wing)f(a)o(w)o (a)o(y)f(all)g(messages)h(sen)o(t)0 2554 y(b)o(y)h(one)h(agen)o(t.)34 b(The)20 b(latter)f(corresp)q(onds)i(to)f(the)g(real-w)o(orld)e (situation)h(where)h(the)g(underlying)f(comm)o(unications)0 2604 y(medium)d(breaks)k(do)o(wn;)g(ob)o(viously)m(,)e(no)h(proto)q (col)f(can)i(succeed)h(under)e(those)h(conditions.)33 b(Th)o(us,)20 b(w)o(e)f(m)o(ust)e(mak)o(e)0 2654 y(certain)d(minima)o (l)c(assumptions)j(ab)q(out)g(the)i(underlying)e(medium)e(in)i(order)h (to)g(complete)f(our)g(pro)q(ofs.)18 b(Essen)o(tially)m(,)13 b(w)o(e)0 2704 y(wish)h(to)g(exclude)g(the)h(\\unfair")d(conditions)i (describ)q(ed)i(ab)q(o)o(v)o(e.)p eop %%Page: 6 6 6 5 bop 0 50 a Ft(6)965 b Fk(2.)41 b(THE)14 b(AL)m(TERNA)m(TING)e(BIT)j (PR)o(OTOCOL)f(\(ABP\))p 0 198 1950 3 v 304 248 a Fq(8)p Fo(x)d Fq(\025)h Ft(0)i Fp(R)n(e)n(c)n(eiverFile\(x\))g(=)h(undef)252 b(SenderNo)15 b(=)g(R)n(e)n(c)n(eiverNo)g(=)f(0)304 298 y(SenderInMsg)i(=)e(R)n(e)n(c)n(eiverInMsg)h(=)g(undef)102 b(SenderBit)15 b(=)g(R)n(e)n(c)n(eiverBit)304 348 y(R)n(e)n(c)n (eiverQueue)g(=)f(SenderQueue)i(=)f(EmptyQueue)p 0 419 V 607 552 a Ft(Figure)f(4:)k(Initial)12 b(conditions)i(for)f(the)i(ABP) m(.)62 690 y(F)m(or)c(our)g(purp)q(oses,)h(it)f(seems)g(su\016cien)o(t) g(to)g(require)h(only)e(that)h(certain)h(agen)o(ts)f(\(whic)o(h)g(w)o (e)g(will)f(call)g Fp(p)n(ositive)j Ft(agen)o(ts\))0 740 y(cannot)i(b)q(e)g(prohibited)g(from)e(making)f(a)j(mo)o(v)o(e)e (inde\014nitely)m(.)20 b(W)m(e)14 b(consequen)o(tly)i(de\014ne)g(an)e (in\014nite)h(sequen)o(tial)f(run)i Fo(\032)0 790 y Ft(to)f(b)q(e)g Fp(fair)k Ft(if)14 b(for)g(ev)o(ery)i(p)q(ositiv)o(e)f(agen)o(t)g Fo(X)j Ft(and)d(ev)o(ery)h(tail)d Fo(\032)1015 775 y Fd(0)1042 790 y Ft(of)i Fo(\032)p Ft(,)g(if)f Fo(X)k Ft(is)d(enabled)g(in\014nitely)g(often)g(in)f Fo(\032)1778 775 y Fd(0)1790 790 y Ft(,)h(then)g Fo(X)0 840 y Ft(m)o(ust)f(mak)o(e)g (a)i(mo)o(v)o(e)d(in)j Fo(\032)431 825 y Fd(0)443 840 y Ft(.)22 b(F)m(or)16 b(the)g(ABP)m(,)f(the)h(only)f(agen)o(ts)h(whic)o (h)f(are)h(not)f(p)q(ositiv)o(e)g(are)h Fc(SenderLoseMe)q(ssage)i Ft(and)0 889 y Fc(ReceiverLoseMessage)p Ft(.)j(Our)15 b(liv)o(eness)f(prop)q(erties)h(will)e(b)q(e)h(pro)o(v)o(ed)g(for)g (fair)f(runs.)0 1020 y Fg(2.4)56 b(Pro)r(of)18 b(of)h(Correctness)0 1101 y Ft(W)m(e)13 b(b)q(egin)h(with)g(a)f(few)h(notational)f (de\014nitions:)62 1203 y Fq(\017)21 b Fp(SQ)d Ft(\(resp)q(ectiv)o(ely) m(,)c Fp(R)o(Q)t Ft(\))g(is)g(the)g(sequence)i(of)e(messages)g(in)f Fp(SenderQueue)18 b Ft(\()p Fp(R)n(e)n(c)n(eiverQueue)s Ft(\).)62 1296 y Fq(\017)j Fp(SIM)h Ft(\(resp)q(ectiv)o(ely)m(,)15 b Fp(RIM)7 b Ft(\))16 b(is)e Fp(SenderInMsg)20 b Ft(\()p Fp(R)n(e)n(c)n(eiverInMsg)t Ft(\))15 b(except)h(when)f(the)g(latter)g (is)g(unde\014ned,)g(when)104 1346 y(it)e(is)h(the)h(empt)o(y)d (sequence.)62 1440 y Fq(\017)21 b Fp(Bit\(S\))r Ft(,)14 b(where)i Fp(S)k Ft(is)14 b(a)h(message)g(sequence,)h(is)f(the)g (natural)g(extension)g(of)g(the)g Fp(Bit)k Ft(function)14 b(from)f(messages)i(to)104 1490 y(sequences)h(of)d(messages.)62 1583 y Fq(\017)21 b Ft(+)14 b(denotes)h(concatenation)f(of)g(message)f (sequences.)62 1685 y(Most)18 b(of)f(our)g(in)o(v)n(arian)o(t)f (conditions)g(are)i(pro)o(v)o(ed)g(b)o(y)f(induction)g(o)o(v)o(er)g (the)h(n)o(um)o(b)q(er)e(of)h(mo)o(v)o(es)f(in)h(a)g(run;)i(w)o(e)e (will)0 1735 y(simply)12 b(sa)o(y)i(\\b)o(y)f(induction")g(in)h(suc)o (h)g(cases.)0 1839 y Fs(Lemma)h(1)21 b Fp(In)13 b(any)h(r)n(e)n (achable)f(state,)g Fo(B)r(it)p Ft(\()p Fo(S)r(I)s(M)g Ft(+)5 b Fo(S)r(Q)g Ft(+)g Fo(RI)s(M)13 b Ft(+)5 b Fo(RQ)p Ft(\))14 b Fp(has)f(the)g(form)g Ft(\()p Fo(F)6 b(l)q(ip)p Ft(\()p Fo(S)r(ender)q(B)r(it)p Ft(\)\))1765 1824 y Fd(\003)1786 1839 y Ft(\()p Fo(S)r(ender)q Fp(-)0 1889 y Fo(B)r(it)p Ft(\))78 1874 y Fd(\003)98 1889 y Fp(.)0 1991 y Fs(Pro)q(of.)19 b Ft(By)h(induction.)36 b(Initially)m(,)19 b(the)h(sp)q(eci\014ed)i (bit)d(sequence)k(is)c(empt)o(y)m(.)35 b(W)m(e)20 b(consider)h(all)d (mo)o(v)o(es)h(that)h(a\013ect)0 2041 y(functions)14 b(presen)o(t)h(in)f(the)g(in)o(v)n(arian)o(t.)62 2093 y Fc(Clea)o(rMessage)f Ft(empties)f Fp(SenderInMsg)t Ft(,)h(eliminating)d(the)j(\014rst)g(bit)f(in)g(the)h(bit)f(sequence.) 20 b(This)12 b(do)q(es)i(not)e(a\013ect)h(the)0 2143 y(truth)i(of)e(the)h(in)o(v)n(arian)o(t.)62 2195 y Fc(ReT)m(ransmit)g Ft(app)q(ends)g(a)g(cop)o(y)g(of)f Fp(SenderBit)18 b Ft(to)c Fp(R)n(e)n(c)n(eiverQueue)s Ft(,)g(main)o(taini)o(ng)d(the)k (in)o(v)n(arian)o(t.)62 2248 y Fc(Pro)q(cessAck)h Ft(\015ips)f Fp(SenderBit)k Ft(and)c(app)q(ends)h(a)e(cop)o(y)h(of)g(the)g(new)g(v)n (alue)g(of)f Fp(SenderBit)19 b Ft(to)c Fp(R)n(e)n(c)n(eiverQueue)s Ft(.)21 b(Since)0 2298 y Fp(Bit\(SenderInMsg\))c(=)f(SenderBit)j Ft(when)c Fc(Pro)q(cessAck)h Ft(\014res,)g(w)o(e)f(kno)o(w)g(\(b)o(y)g (the)g(inductiv)o(e)g(h)o(yp)q(othesis\))h(that)f(all)f(bits)0 2347 y(of)i(the)h(bit)f(sequence)j(m)o(ust)d(b)q(e)h(copies)g(of)f Fp(SenderBit)t Ft(.)26 b(Th)o(us,)18 b(after)e Fc(Pro)q(cessAck)i Ft(completes,)e(the)h(bit)g(sequence)h(will)0 2397 y(ha)o(v)o(e)c(the)g (form)e Fp(\(\(Flip\(SenderBit\)\))601 2382 y Fi(x)637 2397 y Fp(SenderBit\))k Ft(for)d(some)g Fo(x)p Ft(,)g(satisfying)g(the) i(in)o(v)n(arian)o(t.)62 2450 y Fc(Ackno)o(wledgeMessage)p Ft(,)21 b Fc(SenderCommunicate)p Ft(,)e Fc(ReceiverCommunicate)p Ft(,)g Fc(SenderLoseMessage)p Ft(,)i(and)d Fc(ReceiverLose-)0 2500 y(Message)c Ft(transfer)g(bits)f(b)q(et)o(w)o(een)i(or)e(remo)o(v) o(e)f(bits)i(from)d(v)n(arious)i(functions)g(but)g(do)g(not)g(alter)h (the)f(order)h(of)f(an)o(y)g(of)f(the)0 2549 y(bits)i(in)f(the)i(bit)e (sequence,)j(preserving)f(the)f(in)o(v)n(arian)o(t.)j Fb(2)0 2654 y Fs(Lemma)e(2)21 b Fp(In)c(any)h(r)n(e)n(achable)f(state)g (in)h(which)f(SenderInMsg)h(or)f(SenderQueue)h(c)n(ontains)g(a)f (message)h Fo(\026)f Fp(such)h(that)0 2704 y(Bit\()p Fo(\026)p Fp(\))d(=)f(SenderBit,)h(SenderBit)g(=)g(Flip\(R)n(e)n(c)n (eiverBit\).)p eop %%Page: 7 7 7 6 bop 0 50 a Fk(2.4)41 b(Pro)q(of)13 b(of)h(Correctness)1465 b Ft(7)0 195 y Fs(Pro)q(of.)12 b Ft(By)h(induction.)18 b(Initially)m(,)10 b(b)q(oth)j Fp(SenderInMsg)18 b Ft(and)13 b Fp(SenderQueue)k Ft(are)d(empt)o(y)m(.)i(W)m(e)c(consider)i(all)e(mo) o(v)o(es)g(that)0 245 y(a\013ect)j(functions)f(presen)o(t)h(in)f(the)g (in)o(v)n(arian)o(t.)62 295 y Fc(Pro)q(cessAck)d Ft(\015ips)g Fp(SenderBit)t Ft(.)17 b(Lemma)8 b(1)i(sho)o(ws)h(that)f(all)g(bits)g (in)g Fp(SenderQueue)15 b Ft(will)9 b(b)q(e)i(copies)g(of)f Fp(Flip\(SenderBit\))0 345 y Ft(after)k Fc(Pro)q(cessAck)h Ft(\014res.)62 396 y Fc(Ackno)o(wledgeMessage)d Ft(places)e(a)f(cop)o (y)g(of)g Fp(Bit\(R)n(e)n(c)n(eiverInMsg\))i Ft(in)o(to)d Fp(SenderQueue)s Ft(.)18 b(If)9 b(this)g(new)h(bit)f(is)g Fp(Flip\(Sender-)0 446 y(Bit\))r Ft(,)i(then)i(\(b)o(y)f(Lemma)e(1\))i (the)h(bit)f(sequence)i(of)e Fp(SenderQueue)17 b Ft(has)12 b(the)h(form)d Fo(F)c(l)q(ip)p Ft(\()p Fo(S)r(ender)q(B)r(it)p Ft(\))1607 431 y Fd(\003)1641 446 y Ft(and)12 b(the)h(in)o(v)n(arian)o (t)0 496 y(is)h(main)o(tained.)62 546 y(If)f(not,)f(then)i Fp(Bit\(R)n(e)n(c)n(eiverInMsg\))f(=)h(SenderBit)t Ft(.)k(If)12 b Fp(SenderBit)j(=)e(R)n(e)n(c)n(eiverBit)j Ft(at)d(this)g(time,)e (then)j(rule)f Fc(Accept-)0 596 y(Datum)h Ft(m)o(ust)f(also)g(\014re,)i (\015ipping)e Fp(R)n(e)n(c)n(eiverBit)18 b Ft(and)c(yielding)f Fp(SenderBit)i(=)g(Flip\(R)n(e)n(c)n(eiverBit\))p Ft(.)j(Otherwise,)e (w)o(e)e(ha)o(v)o(e)0 646 y Fp(SenderBit)h(=)g(Flip\(R)n(e)n(c)n (eiverBit\))f Ft(b)q(oth)g(b)q(efore)h(and)f(after)g Fc(Ackno)o(wledgeMessage)i Ft(\014res,)f(main)o(taini)o(ng)c(the)k(in)o (v)n(arian)o(t.)62 696 y Fc(Clea)o(rMessage)p Ft(,)j Fc(SenderCommunicate)p Ft(,)h(and)e Fc(SenderLoseMessage)j Ft(remo)o(v)o(e)c(messages)h(from)f(or)h(transfer)h(messages)0 746 y(b)q(et)o(w)o(een)d Fp(SenderQueue)j Ft(and)c Fp(SenderInMsg)t Ft(,)g(whic)o(h)g(do)q(es)h(not)f(a\013ect)g(the)h(in)o(v)n(arian)o(t.) h Fb(2)0 841 y Fs(Lemma)f(3)21 b Fp(In)13 b(any)h(r)n(e)n(achable)f (state,)g(if)g(either)g(R)n(e)n(c)n(eiverInMsg)g(or)g(R)n(e)n(c)n (eiverQueue)g(c)n(ontains)h(a)g(message)f Fo(\026)g Fp(such)h(that)0 891 y(Bit\()p Fo(\026)p Fp(\))h(=)f(Flip\(SenderBit\),)h(then)g (SenderBit)g(=)g(R)n(e)n(c)n(eiverBit.)0 985 y Fs(Pro)q(of.)g Ft(By)g(induction.)23 b(Initially)m(,)13 b(b)q(oth)i Fp(R)n(e)n(c)n(eiverInMsg)k Ft(and)d Fp(R)n(e)n(c)n(eiverQueue)i Ft(are)e(empt)o(y)m(.)22 b(W)m(e)15 b(consider)h(all)e(mo)o(v)o(es)0 1035 y(that)g(a\013ect)h(functions)f(presen)o(t)h(in)f(the)g(in)o(v)n (arian)o(t.)62 1086 y Fc(Pro)q(cessAck)21 b Ft(\015ips)e Fp(SenderBit)t Ft(.)36 b Fc(Pro)q(cessAck)20 b Ft(implies)e(that)i Fp(Bit\(SenderInMsg\))h(=)f(SenderBit)t Ft(.)36 b(By)20 b(Lemma)d(2,)0 1136 y Fp(SenderBit)g(=)f(Flip\(R)n(e)n(c)n(eiverBit\))r Ft(.)22 b(Th)o(us,)16 b(\015ipping)f Fp(SenderBit)20 b Ft(yields)15 b Fp(SenderBit)i(=)f(R)n(e)n(c)n(eiverBit)t Ft(,)f(main)o(taining)d(the)0 1185 y(in)o(v)n(arian)o(t.)62 1236 y Fc(ReT)m(ransmit)17 b Ft(app)q(ends)h(a)e(message)h(with)g(a)g (cop)o(y)g(of)f Fp(SenderBit)21 b Ft(to)c Fp(R)n(e)n(c)n(eiverQueue)s Ft(,)h(whic)o(h)f(do)q(es)g(not)g(a\013ect)h(the)0 1286 y(truth)d(of)e(the)h(in)o(v)n(arian)o(t.)62 1336 y Fc(AcceptDatum)f Ft(\015ips)e Fp(R)n(e)n(c)n(eiverBit)t Ft(.)17 b Fc(AcceptDatum)12 b Ft(implies)e(that)h Fp(Bit)i(\(R)n(ec)n(eiverInMsg\))g(=)f(R)n(e)n(c) n(eiverBit)t Ft(.)17 b(If)11 b Fp(Bit\(R)n(e-)0 1386 y(c)n(eiverInMsg\))17 b(=)f(SenderBit)t Ft(,)h(all)d(of)i(the)g (messages)g(in)g Fp(R)n(e)n(c)n(eiverQueue)j Ft(ha)o(v)o(e)d(copies)g (of)f Fp(SenderBit)21 b Ft(\(b)o(y)15 b(Lemma)f(1\),)0 1436 y(and)g(\015ipping)f Fp(R)n(e)n(c)n(eiverBit)k Ft(do)q(es)d(not)g (a\013ect)h(the)g(in)o(v)n(arian)o(t.)62 1487 y(Otherwise,)20 b Fp(Bit\(R)n(e)n(c)n(eiverInMsg\))f(=)f(Flip\(SenderBit\))p Ft(,)g(whic)o(h)g(implies)e(that)i Fp(Flip\(SenderBit\))h(=)f(R)n(ec)n (eiverBit)t Ft(.)0 1536 y(But)c(this)g(cannot)g(o)q(ccur:)20 b(the)14 b(induction)g(h)o(yp)q(othesis)g(implies)e(that)i Fp(SenderBit)h(=)g(R)n(e)n(c)n(eiverBit)t Ft(.)62 1587 y(Mo)q(dules)g Fc(Ackno)o(wledgeMessage)p Ft(,)h Fc (ReceiverCommunicate)p Ft(,)f(and)f Fc(ReceiverLoseMessage)k Ft(remo)o(v)o(e)13 b(messages)h(from)f(or)0 1637 y(transfer)i(messages) f(b)q(et)o(w)o(een)h Fp(R)n(e)n(c)n(eiverQueue)i Ft(and)d Fp(R)n(ec)n(eiverInMsg)t Ft(,)f(whic)o(h)h(do)q(es)h(not)f(a\013ect)g (the)h(in)o(v)n(arian)o(t.)h Fb(2)0 1732 y Fs(Lemma)f(4)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e(state,)h(the)g(fol)r(lowing)f(ar)n (e)g(true:)464 1825 y Fo(S)r(ender)q(B)r(it)g Ft(=)d Fo(Receiv)q(er)q(B)r(it)j Fq(!)d Fo(S)r(ender)q(N)5 b(o)13 b Ft(=)f Fo(Receiv)q(er)q(N)5 b(o;)372 1920 y(S)r(ender)q(B)r(it)13 b Ft(=)f Fo(F)6 b(l)q(ip)p Ft(\()p Fo(Receiv)q(er)q(B)r(it)p Ft(\))14 b Fq(!)d Fo(S)r(ender)q(N)5 b(o)10 b Ft(+)g(1)h(=)h Fo(Receiv)q(er)q(N)5 b(o:)0 2014 y Fs(Pro)q(of.)15 b Ft(By)h(induction.)23 b(Initially)m(,)14 b Fp(SenderBit)j(=)f(R)n(e)n (c)n(eiverBit)j Ft(and)d Fp(SenderNo)h(=)g(R)n(e)n(c)n(eiverNo=0)p Ft(.)23 b(W)m(e)15 b(consider)i(all)0 2064 y(mo)o(v)o(es)c(a\013ecting) h(functions)g(in)f(the)i(in)o(v)n(arian)o(t.)62 2115 y Fc(Pro)q(cessAck)c Ft(\015ips)f Fp(SenderBit)15 b Ft(and)10 b(incremen)o(ts)g Fp(SenderNo)s Ft(.)17 b(By)11 b(Lemma)c(2,)j Fc(Pro)q(cessAck)h Ft(only)f(\014res)h(when)g Fp(SenderBit)0 2165 y(=)18 b(Flip\(R)n(ec)n(eiverBit\))r Ft(;)f(b)o(y)f(the)i (induction)f(h)o(yp)q(othesis,)h Fp(SenderNo)h(+)e(1)h(=)g(R)n(e)n(c)n (eiverNo)s Ft(.)27 b(Flipping)16 b Fp(SenderBit)21 b Ft(and)0 2214 y(incremen)o(ting)13 b Fp(SenderNo)k Ft(yields)d(the)g (other)h(condition.)62 2265 y Fc(AcceptDatum)h Ft(\015ips)f Fp(R)n(e)n(c)n(eiverBit)j Ft(and)d(incremen)o(ts)g Fp(R)n(e)n(c)n (eiverNo)s Ft(.)20 b(By)15 b(Lemma)d(3,)j Fc(AcceptDatum)g Ft(only)f(\014res)i(when)0 2315 y Fp(SenderBit)g(=)g(R)n(e)n(c)n (eiverBit)t Ft(;)f(b)o(y)g(the)g(induction)g(h)o(yp)q(othesis,)h Fp(SenderNo)g(=)g(R)n(e)n(c)n(eiverNo)s Ft(.)21 b(Flipping)14 b Fp(R)n(e)n(c)n(eiverBit)k Ft(and)0 2365 y(incremen)o(ting)13 b Fp(R)n(e)n(c)n(eiverNo)j Ft(yields)e(to)g(the)g(other)h(condition.)i Fb(2)0 2460 y Fs(Lemma)e(5)21 b Fp(In)15 b(any)h(r)n(e)n(achable)f (state,)f(for)h(any)h(message)f Fo(\026)g Fp(c)n(ontaine)n(d)h(in)f (either)f(R)n(e)n(c)n(eiverInMsg)h(or)g(R)n(e)n(c)n(eiverQueue,)0 2510 y(Bit\()p Fo(\026)p Fp(\))20 b(=)h(SenderBit)g Fq(!)g Fp(Data\()p Fo(\026)p Fp(\))g(=)f(SenderFile\(SenderNo\),)j(and)f (Bit\()p Fo(\026)p Fp(\))e(=)h(Flip\(SenderBit\))g Fq(!)f Fp(Data\()p Fo(\026)p Fp(\))h(=)0 2559 y(SenderFile\(SenderNo)p Fq(\000)p Fp(1\).)0 2654 y Fs(Pro)q(of.)10 b Ft(By)i(induction.)17 b(Initially)m(,)9 b(no)i(messages)g(exist)h(in)e Fp(R)n(e)n(c)n (eiverInMsg)15 b Ft(or)d Fp(R)n(e)n(c)n(eiverQueue)s Ft(.)17 b(W)m(e)11 b(consider)h(all)e(mo)o(v)o(es)0 2704 y(that)k(a\013ect)h(functions)f(presen)o(t)h(in)f(the)g(in)o(v)n(arian) o(t.)p eop %%Page: 8 8 8 7 bop 0 50 a Ft(8)965 b Fk(2.)41 b(THE)14 b(AL)m(TERNA)m(TING)e(BIT)j (PR)o(OTOCOL)f(\(ABP\))62 195 y Fc(Pro)q(cessAck)h Ft(\015ips)f Fp(SenderBit)19 b Ft(and)14 b(incremen)o(ts)g Fp(SenderNo)s Ft(.)19 b(W)m(e)14 b(m)o(ust)f(ha)o(v)o(e)h Fp(Bit\(SenderInMsg\))i(=)f (SenderBit)j Ft(in)0 245 y(order)h(for)f Fc(Pro)q(cessAck)g Ft(to)g(\014re;)j(b)o(y)c(Lemma)f(1,)i(all)f(messages)h Fo(\026)g Ft(under)h(consideration)f(ha)o(v)o(e)g Fp(Bit\()p Fo(\026)p Fp(\))h(=)f(SenderBit)t Ft(.)0 295 y(By)e(the)f(induction)g (h)o(yp)q(othesis,)h(w)o(e)g(also)e(ha)o(v)o(e)i Fp(Data\()p Fo(\026)p Fp(\))g(=)g(SenderFile\(SenderNo\))r Ft(.)23 b(Incremen)o(ting)15 b Fp(SenderNo)j Ft(and)0 345 y(\015ipping)f Fp(SenderBit)22 b Ft(th)o(us)c(results)h(in)e Fp(Bit\()p Fo(\026)p Fp(\))h(=)g(Flip\(SenderBit\))h Ft(and)f Fp(Data\()p Fo(\026)p Fp(\))h(=)f(SenderFile\(SenderNo)p Fq(\000)p Fp(1\))r Ft(,)h(as)0 394 y(desired.)62 444 y(Additionally)m(,)8 b(a)i(new)h(message)f Fo(\026)601 429 y Fd(0)623 444 y Ft(is)g(app)q(ended)i(to)e Fp(R)n(e)n(c)n(eiverQueue)s Ft(.)17 b(After)11 b Fc(Pro)q(cessAck)g Ft(\014res,)h(w)o(e)f(will)d (ha)o(v)o(e)j Fp(Bit\()p Fo(\026)1922 429 y Fd(0)1933 444 y Fp(\))0 494 y(=)k(SenderBit)j Ft(and)13 b Fp(Data\()p Fo(\026)453 479 y Fd(0)466 494 y Fp(\))i(=)f(SenderFile\(SenderNo\))r Ft(,)g(as)g(desired.)62 544 y Fc(ReT)m(ransmit)d Ft(app)q(ends)h(a)f (message)f(con)o(taining)g Fp(SenderFile\(SenderNo\))k Ft(and)d Fp(SenderBit)k Ft(to)c Fp(R)n(e)n(c)n(eiverQueue)s Ft(,)g(main-)0 594 y(taining)i(the)h(in)o(v)n(arian)o(t.)62 643 y Fc(Ackno)o(wledgeMessage)p Ft(,)23 b Fc(SenderCommunicate)p Ft(,)d(and)f Fc(ReceiverLoseMessage)j Ft(remo)o(v)o(e)c(messages)h (from)e(or)i(transfer)0 693 y(messages)14 b(b)q(et)o(w)o(een)h Fp(R)n(ec)n(eiverInMsg)j Ft(or)c Fp(R)n(e)n(c)n(eiverQueue)s Ft(,)g(whic)o(h)f(do)q(es)i(not)f(a\013ect)h(the)f(in)o(v)n(arian)o(t.) j Fb(2)0 783 y Fs(Theorem)e(1)20 b Fp(In)c(any)h(r)n(e)n(achable)e (state,)h(De\014ne)n(d\(R)n(e)n(c)n(eiverFile\(x\)\))g Fq(!)f Fp(R)n(e)n(c)n(eiverFile\(x\))g(=)g(SenderFile\(x\).)22 b(That)16 b(is,)0 832 y(any)g(data)f(that)g(has)g(b)n(e)n(en)g(ac)n(c)n (epte)n(d)h(by)f(the)g(r)n(e)n(c)n(eiver)e(is)i(stor)n(e)n(d)f(in)h (the)g(c)n(orr)n(e)n(ct)f(or)n(der.)0 922 y Fs(Pro)q(of.)f Ft(By)h(induction.)k(Fix)13 b(an)h Fo(x)p Ft(.)k(Initially)m(,)10 b Fp(R)n(e)n(c)n(eiverFile\(x\))15 b(=)f(undef)c Ft(.)62 972 y(Only)j Fc(AcceptDatum)g Ft(ma)o(y)e(c)o(hange)i Fp(R)n(e)n(c)n(eiverFile\(x\))r Ft(.)j(By)d(Lemma)d(3,)i(w)o(e)h(kno)o (w)f(that)h Fp(SenderBit)h(=)g(R)n(e)n(c)n(eiverBit)h Ft(in)0 1021 y(this)f(state;)g(Lemma)d(4)j(tells)g(us)g(further)h(that) f Fp(SenderNo)h(=)g(R)n(e)n(c)n(eiverNo)s Ft(.)62 1071 y(Since)d Fp(Bit\(R)n(e)n(c)n(eiverInMsg\))g(=)g(SenderBit)t Ft(,)f(w)o(e)g(kno)o(w)g(that)g Fp(Data\(R)n(ec)n(eiverInMsg\))i(=)f (SenderFile\(SenderNo\))h Ft(\(b)o(y)0 1121 y(Lemma)e(5\).)18 b Fc(AcceptDatum)d Ft(will)d(th)o(us)i(assign)g Fp(R)n(e)n(c)n (eiverFile\(R)n(e)n(c)n(eiverNo\))g(:=)g(SenderFile\(SenderNo\))r Ft(.)k Fb(2)0 1211 y Fs(Lemma)d(6)21 b Fp(In)15 b(any)h(r)n(e)n (achable)e(state,)h(R)n(e)n(c)n(eiverNo)f Fo(>)i Fp(0)f Fq(!)f Fp(De\014ne)n(d\(R)n(e)n(c)n(eiverFile\(R)n(e)n(c)n(eiverNo)p Fq(\000)p Fp(1\)\).)0 1300 y Fs(Pro)q(of.)k Ft(By)i(induction.)34 b(Initially)17 b Fp(R)n(e)n(c)n(eiverNo)j(=)f(0)6 b Ft(;)22 b Fp(R)n(e)n(c)n(eiverNo)f Ft(is)e(incremen)o(ted)h(precisely)g(when)g Fp(R)n(e)n(c)n(eiverFile)0 1350 y(\(R)n(e)n(c)n(eiverNo\))15 b Ft(is)f(mo)q(di\014ed)e(b)o(y)i Fc(AcceptDatum)p Ft(.)19 b Fb(2)0 1439 y Fs(Lemma)c(7)21 b Fp(In)11 b(the)g(futur)n(e)f(of)h (any)g(state)g(of)g(a)g(fair)f(run,)h(the)g(\014rst)f(message)i(of)e (SIM+SQ)i(\(or)e(RIM+R)o(Q\))h(wil)r(l)f(eventual)r(ly)0 1489 y(b)n(e)15 b(r)n(emove)n(d.)0 1578 y Fs(Pro)q(of.)e Ft(The)h(pro)q(of)g(is)g(similar)d(for)j(b)q(oth)g(cases;)g(w)o(e)g (presen)o(t)i(the)e(case)h(of)f Fp(SenderInMsg)k Ft(and)c Fp(SenderQueue)k Ft(here.)62 1628 y(Supp)q(ose)g(w)o(e)f(ha)o(v)o(e)f (a)g(state)i(in)e(a)g(fair)g(run)h(where)g Fp(SenderInMsg)22 b Ft(or)16 b Fp(SenderQueue)21 b Ft(\(or)c(b)q(oth\))g(is)f(not)h(empt) o(y)m(.)24 b(If)0 1678 y Fp(SenderInMsg)e Ft(is)17 b(not)g(empt)o(y)m (,)f(rule)h Fc(Clea)o(rMessage)g Ft(is)g(enabled.)28 b Fc(Clea)o(rMessage)18 b Ft(m)o(ust)e(ev)o(en)o(tually)g(\014re)i(\(b) o(y)f(fairness\),)0 1728 y(empt)o(ying)12 b Fp(SenderInMsg)19 b Ft(\(whic)o(h)14 b(satis\014es)h(the)f(lemma\).)62 1778 y(If)h Fp(SenderQueue)k Ft(is)14 b(not)h(empt)o(y)m(,)e(t)o(w)o(o) i(mo)q(dules)e(are)j(enabled:)k Fc(SenderCommunicate)15 b Ft(and)g Fc(SenderLoseMe)q(ssage)p Ft(.)23 b(If)0 1827 y Fc(SenderLoseMessage)f Ft(\014res,)e(it)d(ma)o(y)g(remo)o(v)o(e)g (the)i(\014rst)g(message)f(in)g Fp(SenderQueue)s Ft(,)i(satisfying)d (the)i(lemma.)28 b(If)18 b(not,)0 1877 y Fc(SenderCommunicate)d Ft(will)d(b)q(e)j(con)o(tin)o(uously)e(enabled,)h(and)g(b)o(y)f (fairness)i(m)o(ust)e(ev)o(en)o(tually)g(\014re,)h(transferring)h(the)f (\014rst)0 1927 y(message)g(of)f Fp(SenderQueue)18 b Ft(in)o(to)13 b Fp(SenderInMsg)t Ft(,)h(where)h(it)f(will)e(ev)o(en)o (tually)i(b)q(e)g(emptied)f(\(as)h(sho)o(wn)g(ab)q(o)o(v)o(e\).)k Fb(2)0 2016 y Fs(Theorem)d(2)20 b Fp(In)c(any)f(fair)f(run,)h(any)g (data)h(sent)f(is)f(eventual)r(ly)i(r)n(e)n(c)n(eive)n(d.)0 2106 y Fs(Pro)q(of.)h Ft(F)m(or)h(an)o(y)f(fair)g(run,)i(consider)g(a)f (particular)f(datum)g(b)q(eing)h(sen)o(t)h(b)o(y)e(the)i(sender;)i(the) e(item)d(corresp)q(onds)k(to)0 2156 y(a)c(particular)h(v)n(alue)f(of)g Fp(SenderNo)k Ft(\(sa)o(y)d Fo(x)p Ft(\).)26 b(Consider)17 b(the)g(states)h(in)e(this)h(run)g(where)h Fp(SenderNo)g(=)f(x)5 b Ft(.)27 b(If)16 b(at)h(least)0 2205 y(one)d(of)f(those)i(states)g (also)f(has)g Fp(SenderBit)h(=)g(Flip\(R)n(e)n(c)n(eiverBit\))r Ft(,)d(b)o(y)h(Lemmas)f(4,)h(6,)g(and)h(Theorem)f(1,)h Fp(SenderFile\(x\))0 2255 y Ft(has)19 b(already)f(b)q(een)i(stored)g (in)e Fp(R)n(e)n(c)n(eiverFile\(x\))r Ft(.)32 b(Th)o(us,)20 b(it)e(remains)g(to)g(sho)o(w)h(that)g(from)e(an)o(y)h(state)i(in)e(a)h (fair)f(run)0 2305 y(where)j Fp(SenderBit)f(=)g(R)n(e)n(c)n(eiverBit)i Ft(and)e Fp(SenderNo)g(=)g(x)5 b Ft(,)21 b(w)o(e)e(ev)o(en)o(tually)g (arriv)o(e)h(at)f(a)g(state)h(where)h Fp(SenderBit)f(=)0 2355 y(Flip\(R)n(e)n(c)n(eiverBit\))14 b Ft(and)g Fp(SenderNo)i(=)e(x)5 b Ft(.)62 2405 y(By)14 b(con)o(tradiction,)e(assume)h(that)g(w)o(e)h (ha)o(v)o(e)f Fp(SenderBit)h(=)g(R)n(e)n(c)n(eiverBit)j Ft(for)c(ev)o(ery)h(state)g(in)e(whic)o(h)h Fp(SenderNo)i(=)f(x)5 b Ft(.)0 2455 y(Since)17 b Fp(SenderNo)i Ft(is)d(incremen)o(ted)g(\(b)o (y)g(rule)g Fc(Pro)q(cessAck)p Ft(\))h(only)f(when)g Fp(Bit\(SenderInMsg\))i(=)f(SenderBit)p Ft(,)f(Lemma)d(2)0 2504 y(tells)i(us)g(that)f(rule)h Fc(Pro)q(cessAck)h Ft(will)d(nev)o(er)j(\014re,)f(lea)o(ving)e Fp(SenderNo)18 b Ft(and)d Fp(SenderBit)k Ft(unc)o(hanged)c(for)f(the)h(rest)h(of)e (the)0 2554 y(run.)62 2604 y(Consider)g Fp(SIM+SQ)t Ft(.)f(By)g(Lemma)d (7,)j(the)g(\014rst)h(message)f(in)f(the)i(non-empt)o(y)e(sequence)j Fp(SIM)g(+)e(SQ)i(+)f(RIM)g(+)g(R)o(Q)0 2654 y Ft(will)g(b)q(e)j(remo)o (v)o(ed)e(in\014nitely)g(often.)24 b(Since)16 b Fp(SenderBit)k Ft(nev)o(er)d(c)o(hanges,)g(and)e(rule)h Fc(ReT)m(ransmit)g Ft(only)f(sends)i(messages)0 2704 y(with)j(copies)h(of)f Fp(SenderBit)t Ft(,)i(ev)o(en)o(tually)e(all)g(messages)g(with)g Fp(Flip\(SenderBit\))i Ft(in)f(the)g(system)f(will)f(b)q(e)i(remo)o(v)o (ed,)p eop %%Page: 9 9 9 8 bop 1929 50 a Ft(9)0 195 y(lea)o(ving)14 b(only)h(messages)g(with)g Fp(SenderBit)t Ft(.)23 b(By)16 b(Lemma)c(2,)j(all)f(copies)i(of)f Fp(SenderBit)20 b Ft(m)o(ust)14 b(lie)h(in)g Fp(R)n(e)n(c)n(eiverInMsg) k Ft(or)0 245 y Fp(R)n(e)n(c)n(eiverQueue)s Ft(,)14 b(so)g Fp(SenderInMsg)k Ft(and)c Fp(SenderQueue)k Ft(will)13 b(b)q(e)h(empt)o(y)f(for)g(the)i(duration)e(of)h(the)g(run.)62 295 y(The)h(only)f(rule)g(whic)o(h)h(can)f(no)o(w)g(create)i(new)f (messages)f(is)h Fc(ReT)m(ransmit)p Ft(,)e(whic)o(h)h(requires)i Fp(Time)n(out)f(=)g(true)s Ft(.)k(Since)0 345 y(messages)13 b(are)g(alw)o(a)o(ys)f(b)q(eing)h(remo)o(v)o(ed)f(from)g Fp(RIM)i(+)g(R)o(Q)t Ft(,)e(if)g(no)h(cop)o(y)g(of)f(the)i(desired)g (message)f(reac)o(hes)h(the)g(receiv)o(er,)0 395 y(ev)o(en)o(tually)k Fp(R)n(e)n(c)n(eiverInMsg)k Ft(and)c Fp(R)n(e)n(c)n(eiverQueue)k Ft(will)16 b(b)q(e)j(empt)o(y)m(,)f(con)o(tin)o(uously)f(enabling)h(mo) q(dule)f Fc(Timeout)p Ft(.)31 b(By)0 445 y(fairness,)13 b Fc(Timeout)g Ft(will)f(ev)o(en)o(tually)h(\014re,)g(enabling)f(rule)i Fc(ReT)m(ransmit)p Ft(.)j Fc(ReT)m(ransmit)c Ft(will)e(ev)o(en)o (tually)i(\014re)h(\(b)o(y)f(fairness\),)0 495 y(placing)g(another)h (cop)o(y)g(of)f Fp(SenderBit)18 b Ft(in)o(to)13 b Fp(R)n(e)n(c)n (eiverQueue)s Ft(.)18 b(If)c(this)f(new)i(cop)o(y)e(of)g Fp(SenderBit)18 b Ft(is)c(discarded,)g Fc(Timeout)0 545 y Ft(will)d(b)q(e)h(re-enabled)h(and)f(b)o(y)g(fairness)h(will)e (re-transmit)g(the)i(message.)k(A)12 b(rep)q(etition)h(of)e(the)i (previous)g(argumen)o(t)e(sho)o(ws)0 594 y(that)j(if)f(this)h(message)g (is)f(rep)q(eatedly)i(discarded,)g(it)e(will)g(b)q(e)h(re-transmitted)g (in\014nitely)f(often.)62 645 y(Th)o(us,)22 b(rule)f Fc(SenderCommunicate)g Ft(is)f(enabled)h(in\014nitely)f(often,)h(and)f (b)o(y)h(fairness)g(m)o(ust)e(\014re.)38 b(So,)22 b(ev)o(en)o(tually)0 695 y Fp(Bit\(R)n(e)n(c)n(eiverInMsg\))16 b(=)g(SenderBit)h(=)f(R)n(e)n (c)n(eiverBit)t Ft(,)e(and)h(rule)h Fc(AcceptDatum)g Ft(will)e(accept)i(the)g(datum)e(and)h(\015ip)g Fp(R)n(e-)0 745 y(c)n(eiverBit)t Ft(,)e(yielding)f Fp(SenderBit)j(=)g(Flip\(R)n(e)n (c)n(eiverBit\))f Ft(as)g(desired.)20 b Fb(2)0 840 y Fs(Theorem)15 b(3)20 b Fp(In)c(any)f(fair)f(run,)h(for)f(any)i(data)f (sent,)g(a)g(c)n(orr)n(esp)n(onding)g(acknow)r(le)n(dgment)g(arrives)f (at)h(the)g(sender.)0 934 y Fs(Pro)q(of.)h Ft(The)g(pro)q(of)g(is)h (similar)c(to)k(that)f(for)g(Theorem)g(2,)g(with)g(the)h(fo)q(cus)g(of) f(atten)o(tion)g(on)g Fp(R)n(e)n(c)n(eiverQueue)k Ft(instead)0 984 y(of)15 b Fp(SenderQueue)s Ft(.)24 b(The)16 b(ma)r(jor)e (di\013erence)k(is)d(that)h(the)g(receiv)o(er)h(do)q(es)f(not)g (re-transmit)f(ac)o(kno)o(wledgmen)o(t)f(messages)0 1034 y(when)19 b(signaled)g(b)o(y)f Fp(Time)n(out)t Ft(,)h(as)g(the)g (sender)i(do)q(es,)f(but)f(m)o(ust)f(w)o(ait)g(for)g(another)i(message) e(from)f(the)j(sender.)34 b(A)0 1084 y(simple)15 b(extension)j(of)e (the)i(pro)q(of)e(in)h(Theorem)f(2)h(sho)o(ws)g(that)g(the)g(sender)i (will)c(transmit)h(in\014nitely)g(man)o(y)f(copies)j(of)0 1133 y(a)d(giv)o(en)g(message)g(un)o(til)g(an)g(ac)o(kno)o(wledgmen)o (t)f(is)h(receiv)o(ed,)i(and)e(th)o(us)h(in\014nitely)e(man)o(y)g (copies)i(of)f(that)g(message)g(will)0 1183 y(b)q(e)i(receiv)o(ed)g(b)o (y)f(the)h(receiv)o(er,)h(who)d(will)g(th)o(us)i(b)q(e)f(enabled)h(to)f (send)h(the)g(corresp)q(onding)g(ac)o(kno)o(wledgmen)o(t)d(message)0 1233 y(in\014nitely)f(often.)18 b Fb(2)0 1328 y Fs(Theorem)d(4)20 b Fp(In)c(any)f(fair)f(run,)h(al)r(l)f(data)i(is)e(eventual)r(ly)h (sent)g(and)h(acknow)r(le)n(dge)n(d.)0 1423 y Fs(Pro)q(of.)10 b Ft(By)h(induction)g(o)o(v)o(er)g(the)h(n)o(um)o(b)q(er)e(of)g(data)h (sen)o(t)h(and)f(ac)o(kno)o(wledged,)g(represen)o(ted)j(b)o(y)c Fp(SenderNo)s Ft(.)18 b(If)10 b Fp(SenderNo)0 1472 y(=)15 b(0)6 b Ft(,)13 b(Theorem)g(3)h(sho)o(ws)g(that)g(this)g(datum)e(is)i (ev)o(en)o(tually)g(sen)o(t)g(and)g(ac)o(kno)o(wledged.)62 1523 y(Supp)q(ose)g Fp(SenderFile\(n\))i Ft(has)d(b)q(een)i(sen)o(t.)j (When)c(an)f(ac)o(kno)o(wledgmen)o(t)f(for)g Fp(SenderFile\(n\))k Ft(arriv)o(es)d(at)g(the)h(sender)0 1573 y(\(assured)f(b)o(y)d(the)i (induction)f(h)o(yp)q(othesis\),)h Fc(Pro)q(cessAck)f Ft(is)g(enabled)h(and)f(\(b)o(y)g(fairness\))g(will)f(ev)o(en)o(tually) g(\014re,)i(incremen)o(t-)0 1623 y(ing)g Fp(SenderNo)j Ft(and)d(sending)h(a)f(cop)o(y)g(of)f Fp(SenderFile\(n+1\))k Ft(to)d(the)h(receiv)o(er.)19 b(Theorem)11 b(3)h(sho)o(ws)h(that)f (this)h(datum)d(will)0 1672 y(ev)o(en)o(tually)j(b)q(e)i(accepted)g (and)f(successfully)h(ac)o(kno)o(wledged)f(as)g(w)o(ell.)j Fb(2)0 1814 y Fr(3)67 b(Symmetric)24 b(ABP)0 1906 y Ft(Our)13 b(v)o(ersion)f(of)g(the)g(ABP)h(is)f(designed)h(for)f(t)o(w)o(o)g(agen) o(ts,)g(eac)o(h)h(of)e(whic)o(h)h(is)g(describ)q(ed)i(b)o(y)e(a)g (di\013eren)o(t)h(mo)q(dule.)j(In)c(most)0 1956 y(real)i(comm)o (unicati)o(on)d(proto)q(cols,)j(suc)o(h)g(as)g(Kermit,)e(the)j(roles)f (of)f(sender)i(and)f(receiv)o(er)h(ma)o(y)d(b)q(e)i(in)o(terc)o(hanged) h(b)o(y)e(t)o(w)o(o)0 2006 y(agen)o(ts)i(during)f(the)h(course)h(of)e (a)g(comm)o(unication)d(session.)21 b(\(That)15 b(is,)f(Alice)h(ma)o(y) d(send)k(a)e(\014le)h(to)f(Bob,)g(but)h(Bob)g(ma)o(y)0 2055 y(send)g(a)e(\014le)h(to)g(Alice)g(afterw)o(ards.\))62 2106 y(W)m(e)g(presen)o(t)i(another)e(v)o(ersion)h(of)e(the)i(ABP)g(in) e(whic)o(h)h(b)q(oth)h(agen)o(ts)f(are)h(represen)o(ted)i(b)o(y)d(mo)q (dule)e(templates)i(con-)0 2156 y(taining)e(iden)o(tical)h(transition)g (rules.)18 b(Our)c(rules)g(for)f(Kermit)f(con)o(tain)h(mo)q(dules)f (whic)o(h)i(are)f(similar)e(to)i(this)h(symmetric)0 2206 y(ABP;)g(w)o(e)h(presen)o(t)h(this)e(v)o(ersion)g(as)g(a)g(transition)g (b)q(et)o(w)o(een)h(the)g(classic)g(ABP)g(presen)o(ted)h(earlier)e(and) g(the)h(full)e(Kermit)0 2255 y(descriptions)i(to)f(come.)0 2376 y Fg(3.1)56 b(F)-5 b(unction)19 b(Descriptions)0 2454 y Ft(As)f(b)q(efore,)g(w)o(e)g(use)g(the)g(univ)o(erses)h(of)e Fp(messages)s Ft(,)h Fp(queues)s Ft(,)h Fp(data)s Ft(,)g(and)e Fp(inte)n(gers)s Ft(.)28 b(W)m(e)17 b(use)i Fp(inte)n(gers)h Ft(instead)e(of)e Fp(bits)0 2504 y Ft(as)h(the)g(second)g(comp)q(onen)o (t)f(of)g(eac)o(h)h(message;)g(w)o(e)g(th)o(us)g(de\014ne)g(static)g (functions)f Fp(Data:)25 b(messages)17 b Fq(!)g Fp(data)s Ft(,)g Fp(Num:)0 2553 y(messages)e Fq(!)g Fp(inte)n(gers)s Ft(,)e(and)h Fp(Msg:)19 b(data)d Fq(\002)f Fp(inte)n(gers)f Fq(!)h Fp(messages)i Ft(in)d(a)g(similar)d(manner)i(to)h(that)g(sho)o (wn)g(previously)m(.)0 2603 y(The)g(static)h(functions)f Fp(Nul)r(l)t Ft(,)f Fp(EmptyQueue)s Ft(,)h Fp(App)n(end)t Ft(,)g Fp(He)n(ad)t Ft(,)g(and)g Fp(T)m(ail)j Ft(are)e(unc)o(hanged.)62 2654 y(A)20 b(univ)o(erse)g(of)f Fp(ids)k Ft(con)o(tains)d(t)o(w)o(o)f (elemen)o(ts)g(corresp)q(onding)i(to)e(the)i(sender)g(and)e(receiv)o (er.)37 b(The)20 b(static)g(func-)0 2704 y(tions)14 b Fp(Sender:)21 b(ids)d Ft(and)d Fp(R)n(e)n(c)n(eiver:)20 b(ids)e Ft(indicate)c(whic)o(h)h(agen)o(t)f(corresp)q(onds)j(to)d(whic) o(h)h(iden)o(ti\014er;)g(the)g(priv)n(ate)g(static)p eop %%Page: 10 10 10 9 bop 0 50 a Ft(10)1468 b Fk(3.)40 b(SYMMETRIC)14 b(ABP)0 195 y Ft(functions)i Fp(Me:)23 b(ids)d Ft(and)15 b Fp(Y)m(ou:)23 b(ids)d Ft(iden)o(tify)15 b(to)h(eac)o(h)g(mo)q (dule/agen)o(t)f(his)h(or)g(her)g(o)o(wn)g(iden)o(ti\014er,)g(with)g (the)h(ob)o(vious)0 245 y(requiremen)o(ts)d(on)g(their)g(v)n(alues.)62 296 y(Eac)o(h)f(mo)q(dule)f(has)g(a)h(priv)n(ate)f(function)h Fp(File:)18 b(inte)n(gers)13 b Fq(!)g Fp(data)s Ft(,)g(used)h(to)e (store)i(data)e(b)q(eing)h(sen)o(t)h(or)e(receiv)o(ed,)i(and)0 346 y(a)i(priv)n(ate)h(function)f Fp(MyNum:)25 b(inte)n(gers)s Ft(,)16 b(used)i(to)e(denote)i(the)f(curren)o(t)h(lo)q(cation)e(within) g Fp(File)s Ft(.)26 b(A)17 b(priv)n(ate)f(function)0 396 y Fp(L)n(astMsg:)22 b(messages)d Ft(is)c(used)h(to)f(store)i(the)f (last)f(message)g(sen)o(t)h(b)o(y)f(eac)o(h)h(agen)o(t.)22 b(A)16 b(function)f Fp(Time)n(out:)21 b(ids)16 b Fq(!)g Fp(Bo)n(ol)0 446 y Ft(holds)e(the)g(timeout)f(signal)f(lo)q(cation)h (for)h(eac)o(h)g(agen)o(t.)62 497 y(Common)e(functions)i Fp(Q:)h(ids)h Fq(!)f Fp(queues)k Ft(and)14 b Fp(InMsg:)21 b(ids)15 b Fq(!)g Fp(message)k Ft(represen)o(t)e(the)e(t)o(w)o(o)f (message)g(queues)i(and)0 547 y(incoming)c(message)h(v)n(ariables,)g (resp)q(ectiv)o(ely)m(.)62 599 y(It)19 b(pro)o(v)o(es)g(con)o(v)o (enien)o(t)f(for)g(later)h(purp)q(oses)h(to)e(separate)i(the)f(input)f (and)g(output)h(activities)f(of)g(eac)o(h)h(agen)o(t;)h(w)o(e)0 649 y(th)o(us)c(de\014ne)h(a)e(univ)o(erse)i Fp(tags)g(=)f Fq(f)p Fp(Get,)g(Put)p Fq(g)33 b Ft(and)15 b(a)h(priv)n(ate)f(function) h Fp(Mo)n(de:)22 b(tags)e Ft(to)15 b(distinguish)g(b)q(et)o(w)o(een)j (these)0 698 y(activities.)0 824 y Fg(3.2)56 b(Mo)r(dule)17 b(Sp)r(eci\014cations)0 904 y Ft(The)12 b(sender)h(and)e(receiv)o(er)i (mo)q(dule)d(is)i(giv)o(en)f(in)g(Fig.)f(5.)17 b(The)12 b(comm)o(unicatio)o(ns)d(mo)q(dules,)i(sho)o(wn)g(in)g(Fig.)f(6,)i(are) f(similar)0 954 y(to)j(those)g(giv)o(en)g(earlier.)k(The)c(only)f (unfair)h(mo)q(dules)e(are)j(those)f(pro)q(duced)h(b)o(y)f(the)h Fc(LoseMessage)g Ft(template.)62 1005 y(The)i(initial)d(state)j(for)f (the)h(symmetric)e(ABP)i(satis\014es)g(the)g(conditions)f(sho)o(wn)g (in)g(Fig.)f(7,)h(where)h Fp(Sender.X)23 b Ft(and)0 1055 y Fp(R)n(e)n(c)n(eiver.X)d Ft(refer)15 b(to)e(the)i(v)n(alues)e(of)h (the)g(priv)n(ate)g(function)f Fp(X)21 b Ft(as)14 b(seen)h(b)o(y)e(the) i(sender)g(and)f(receiv)o(er,)h(resp)q(ectiv)o(ely)m(.)0 1181 y Fg(3.3)56 b(Correctness)0 1260 y Ft(The)18 b(pro)q(of)f(of)h (correctness)i(for)e(the)g(symmetric)e(ABP)i(is)g(similar)d(to)j(that)f (of)g(the)i(non-symmetric)c(ABP)k(presen)o(ted)0 1310 y(earlier.)25 b(Rather)16 b(than)h(rep)q(eat)g(the)g(pro)q(of,)f(w)o(e) g(instead)g(explain)g(the)h(similariti)o(es)d(b)q(et)o(w)o(een)k(the)f (t)o(w)o(o)e(proto)q(cols.)26 b(The)0 1360 y(reader)15 b(should)f(b)q(e)g(able)g(to)g(reconstruct)i(our)e(pro)q(of)f(of)h (correctness)i(without)e(di\016cult)o(y)m(.)62 1412 y(Man)o(y)f (expressions)i(ha)o(v)o(e)d(di\013eren)o(t)j(names)d(in)g(the)i(t)o(w)o (o)f(proto)q(cols;)g(w)o(e)g(presen)o(t)i(a)e(table)g(of)f(equiv)n (alen)o(t)g(expressions)0 1461 y(b)q(elo)o(w.)24 b(It)16 b(is)f(easy)i(to)e(v)o(erify)h(that)g(eac)o(h)g(pair)g(of)f (expressions)i(yield)f(elemen)o(ts)f(of)h(the)g(same)f(univ)o(erse)i (\(or)f(are)g(of)f(the)0 1511 y(same)e(\\t)o(yp)q(e"\):)419 1607 y(S)p Fo(ender)q(Queue=Receiv)q(er)q(Queue)43 b Fq(\021)e Ft(Q\()p Fo(S)r(ender)q Ft(\))p Fo(=Q)p Ft(\()p Fo(Receiv)q(er)q Ft(\))419 1657 y(S)p Fo(ender)q(I)s(nM)5 b(sg)334 b Fq(\021)41 b Ft(I)p Fo(nM)5 b(sg)q Ft(\()p Fo(S)r(ender)q Ft(\))419 1707 y(R)p Fo(eceiv)q(er)q(I)s(nM)g(sg)301 b Fq(\021)41 b Ft(I)p Fo(nM)5 b(sg)q Ft(\()p Fo(Receiv)q(er)q Ft(\))419 1757 y(S)p Fo(ender)q(F)h(il)q(e=Receiv)q(er)q(F)g(il)q(e)123 b Fq(\021)41 b Ft(F)p Fo(il)q(e)419 1807 y Ft(S)p Fo(ender)q(N)5 b(o=Receiv)q(er)q(N)g(o)165 b Fq(\021)41 b Ft(M)p Fo(y)q(N)5 b(um)419 1856 y Ft(S)p Fo(ender)q(B)r(it=Receiv)q(er)q(B)r(it)157 b Fq(\021)41 b Ft(M)p Fo(y)q(N)5 b(um)15 b Fp(mo)n(d)g(2)62 1951 y Ft(W)m(e)d(ha)o(v)o(e)f(replaced)i Fp(SenderBit)j Ft(and)c Fp(R)n(e)n(c)n(eiverBit)j Ft(b)o(y)d(references)i(to)e Fp(MyNum)h(mo)n(d)h(2)6 b Ft(.)17 b(In)11 b(the)i(old)e(ABP)m(,)h Fp(SenderBit)0 2001 y Ft(is)20 b(\015ipp)q(ed)h(precisely)g(when)g Fp(SenderNo)i Ft(is)d(incremen)o(ted;)k(th)o(us,)d(if)f(initially)e(w)o (e)i(ha)o(v)o(e)g Fp(SenderBit)h(=)g(SenderNo)g(=)0 2051 y(0)6 b Ft(,)21 b Fp(SenderBit)j Ft(will)18 b(alw)o(a)o(ys)h(b)q(e)h (equal)g(to)f Fp(SenderNo)i(mo)n(d)g(2)6 b Ft(.)35 b(A)20 b(similar)d(argumen)o(t)i(holds)h(for)f Fp(R)n(e)n(c)n(eiverBit)k Ft(and)0 2101 y Fp(R)n(e)n(c)n(eiverNo)s Ft(.)62 2152 y Fp(L)n(astMsg)18 b Ft(stores)e(the)f(last)f(message)g(sen)o(t)h(b)o (y)f(an)g(agen)o(t)g(to)g(b)q(e)h(used)g(later)f(in)g(re-transmission.) k Fp(L)n(astMsg)g Ft(do)q(es)d(not)0 2202 y(app)q(ear)g(in)f(the)h(old) f(ABP;)h(th)o(us,)g(w)o(e)g(m)o(ust)f(sho)o(w)g(that)h(whenev)o(er)h (the)f(sender)h(of)e(the)i(symmetric)c(ABP)k(sends)g(a)e(cop)o(y)0 2252 y(of)f Fp(L)n(astMsg)t Ft(,)h(the)g(sender)h(of)f(the)g(old)f(ABP) i(sends)g(an)f(iden)o(tical)f(message.)62 2303 y(F)m(or)g(the)h(sender) h(agen)o(t,)e Fp(Num\(L)n(astMsg\))i(=)f(MyNum)h(mo)n(d)f(2)19 b Ft(is)14 b(an)f(in)o(v)n(arian)o(t;)e(This)i(is)g(easily)g(pro)o(v)o (ed:)18 b Fp(MyNum)f Ft(is)0 2353 y(incremen)o(ted)d(precisely)h(when)g Fp(L)n(astMsg)j Ft(is)c(up)q(dated,)g(and)g(the)h(up)q(dates)g(for)e Fp(L)n(astMsg)18 b Ft(yield)c(the)g(in)o(v)n(arian)o(t)f(condition)0 2403 y(immediately)l(.)22 b(Similarly)m(,)13 b(it)j(can)h(b)q(e)g(seen) g(that)g Fp(Data\(L)n(astMsg\))h(=)f(File\(MyNum\))g Ft(is)g(an)f(in)o(v)n(arian)o(t)e(for)i(the)h(sender)0 2453 y(agen)o(t.)29 b(The)18 b(sender)h(of)e(the)h(symmetric)e(ABP)j (sends)f(a)g(cop)o(y)f(of)g Fp(L)n(astMsg)22 b Ft(precisely)c(when)g (the)g(sender)i(of)c(the)j(old)0 2503 y(ABP)d(sends)h(a)f(cop)o(y)f(of) g Fp(Msg\(SenderFile\(SenderNo\),SenderBit\))r Ft(;)i(our)f(argumen)o (t)e(sho)o(ws)i(that)g(these)h(messages)f(are)0 2552 y(iden)o(tical.)62 2604 y(The)h(reader)h(can)f(easily)f(v)o(erify)g (that)g(eac)o(h)h(mo)o(v)o(e)e(of)h(the)h(old)f(ABP)h(is)f(duplicated)h (b)o(y)f(one)h(or)f(t)o(w)o(o)g(mo)o(v)o(es)f(of)h(the)0 2654 y(symmetric)c(ABP)m(.)h(The)h(symmetric)e(ABP)i(di\013ers)g(in)f (that)h(the)g(receiv)o(er)h(has)e(the)h(capabilit)o(y)e(of)h (re-transmitting)f(when)0 2704 y(a)i(timeout)f(o)q(ccurs)j(\(whic)o(h)e (only)g(the)h(sender)h(do)q(es)f(in)f(the)h(old)f(ABP\);)g(this)h (di\013erence)h(means)e(that)g(the)h(receiv)o(er)h(ma)o(y)p eop %%Page: 11 11 11 10 bop 0 50 a Fk(3.3)41 b(Correctness)1605 b Ft(11)p 0 621 1950 3 v 322 671 a Ff(Mo)q(dule:)20 b(Sender/Receiver)e(T)l (emplate)322 770 y Fh(if)f Fp(Mo)n(de)e(=)g(Put)g Fh(then)390 820 y(if)i Fp(Me)e(=)g(Sender)g Fh(then)458 870 y Fp(Q\(Y)m(ou\))g(:=) 526 920 y(Q\(Y)m(ou\))g Ft(++)g Fp(Msg\(File\(MyNum+1\),)g(\(MyNum+1\)) g(mo)n(d)g(2\))458 970 y(L)n(astMsg)g(:=)g(Msg\(File\(MyNum+1\),)f (\(MyNum+1\))i(mo)n(d)f(2\))390 1019 y Fh(else)458 1069 y Fp(Q\(Y)m(ou\))g(:=)f(Q\(Y)m(ou\))h Ft(++)h Fp(Msg\(Nul)r(l,)e (\(MyNum)h(mo)n(d)g(2\)\))458 1119 y(L)n(astMsg)g(:=)g(Msg\(Nul)r(l,)f (\(MyNum)h(mo)n(d)g(2\))390 1169 y Fh(endif)390 1219 y Fp(MyNum)h(:=)e(MyNum)h(+)g(1,)g(Mo)n(de)g(:=)g(Get)322 1269 y Fh(endif)322 1368 y(if)i Fp(Mo)n(de)e(=)g(Get)g Fh(then)390 1418 y(if)i Fp(De\014ne)n(d\(InMsg\(Me\)\))526 1468 y Fh(and)f Fp(Num\(InMsg\(Me\)\))g(=)f(\(MyNum)g(mo)n(d)g(2\))g Fh(then)458 1518 y(if)i Fp(Me)e(=)g(R)n(e)n(c)n(eiver)f Fh(then)526 1567 y Fp(File\(MyNum\))h(:=)f(Data\(InMsg\(Me\)\))458 1617 y Fh(endif)458 1667 y Fp(Mo)n(de)i(:=)e(Put)390 1717 y Fh(endif)390 1767 y(if)j Fp(\(De\014ne)n(d\(InMsg\(Me\)\))g Fh(and)f Fp(Num\(InMsg\(Me\)\))g Fq(6)p Ft(=)p Fp(\(MyNum)f(mo)n(d)g (2\)\))526 1817 y Fh(or)i Fp(Time)n(out\(Me\))d Fh(then)458 1866 y Fp(Q\(Y)m(ou\))h(:=)f(Q\(Y)m(ou\))h Ft(++)h Fp(L)n(astMsg)f Fh(endif)458 1916 y Fp(Time)n(out\(Me\))g(:=)f(false)390 1966 y Fh(endif)390 2016 y(if)j Fp(De\014ne)n(d\(InMsg\(Me\)\))g Fh(then)g Fp(Cle)n(ar\(InMsg\))d Fh(endif)322 2066 y(endif)p 0 2137 V 563 2270 a Ft(Figure)g(5:)k(Symmetric)12 b(sender/receiv)o(er) 17 b(mo)q(dule.)p eop %%Page: 12 12 12 11 bop 0 50 a Ft(12)1468 b Fk(3.)40 b(SYMMETRIC)14 b(ABP)p 0 450 1950 3 v 324 499 a Ff(Mo)q(dule:)20 b(Communicate)13 b(T)l(emplate)324 549 y Fh(if)j Fp(Unde\014ne)n(d\(InMsg\(Me\)\))h Fh(and)f Fp(Q\(Me\))f Fq(6)p Ft(=)p Fp(EmptyQueue)h Fh(then)391 599 y Fp(InMsg\(Me\))g(:=)f(He)n(ad\(Q\(Me\)\),)f(Q\(Me\))h(:=)g(T)m (ail\(Q\(Me\)\))324 649 y Fh(endif)324 748 y Ff(Mo)q(dule:)20 b(LoseMessage)13 b(T)l(emplate)324 798 y Fp(Q\(Me\))h(:=)h (Shrink\(Q\(Me\)\))g Fh(endif)324 898 y Ff(Mo)q(dule:)20 b(Timeout)14 b(T)l(emplate)324 948 y Fh(if)i Fp(Unde\014ne)n (d\(InMsg\(Me\)\))h Fh(and)f Fp(Q\(Me\))f(=)g(EmptyQueue)459 998 y Fh(and)i Fp(Unde\014ne)n(d\(InMsg\(Y)m(ou\)\))f Fh(and)h Fp(Q\(Y)m(ou\))e(=)f(EmptyQueue)i Fh(then)391 1047 y Fp(Time)n(out\(Me\))f(:=)g(true)324 1097 y Fh(endif)p 0 1169 V 547 1302 a Ft(Figure)f(6:)j(Symmetric)12 b(comm)o(unications)f (mo)q(dules.)p 0 1891 V 367 1940 a Fp(Sender.Me)k(=)g(Sender)234 b(R)n(e)n(c)n(eiver.Me)14 b(=)h(R)n(e)n(c)n(eiver)367 1990 y(Sender.Mo)n(de)g(=)g(Put)253 b(R)n(e)n(c)n(eiver.Mo)n(de)15 b(=)f(Get)367 2040 y(Sender.MyNum)h(=)g(0)248 b(R)n(e)n(c)n (eiver.MyNum)14 b(=)h(0)367 2090 y Fq(8)p Fo(x)f Fp(R)n(e)n(c)n (eiver.File\(x\))g(=)h(undef)105 b(R)n(e)n(c)n(eiver.L)n(astMsg)14 b(=)h(Msg\(Nul)r(l,-1\))367 2140 y(Q\(Sender\))g(=)g(Q\(R)n(e)n(c)n (eiver\))f(=)h(EmptyQueue)367 2189 y(InMsg\(Sender\))h(=)e(InMsg\(R)n (e)n(c)n(eiver\))h(=)g(undef)367 2239 y(Time)n(out\(Sender\))g(=)f (Time)n(out\(R)n(e)n(c)n(eiver\))g(=)h(false)p 0 2311 V 679 2444 a Ft(Figure)f(7:)k(New)c(initial)e(conditions.)p eop %%Page: 13 13 13 12 bop 1908 50 a Ft(13)0 195 y(re-transmit)11 b(a)g(lost)g(ac)o(kno) o(wledgmen)o(t)f(more)g(often)i(than)f(in)g(the)h(old)f(ABP)m(,)g(but)h (that)f(do)q(es)h(no)g(harm)e(to)h(the)h(correctness)0 245 y(of)h(the)i(proto)q(col.)0 383 y Fr(4)67 b(Sliding)25 b(Windo)n(ws)0 474 y Ft(The)11 b(sliding)e(windo)o(w)h(proto)q(col)g (\(SWP\))h(is)g(an)f(extension)h(of)f(the)h(ABP)m(.)g(In)f(a)g(comm)o (unications)e(medium)g(where)j(t)o(w)o(o-w)o(a)o(y)0 523 y(sim)o(ultaneous)k(comm)o(unicatio)o(n)f(is)i(p)q(ossible,)h(it)f (can)g(b)q(e)h(w)o(asteful)f(to)h(ha)o(v)o(e)f(only)f(one)i(datum)e(in) h(transition)g(b)q(et)o(w)o(een)0 573 y(the)g(agen)o(ts,)h(since)f(the) h(capacit)o(y)e(of)h(the)g(underlying)g(net)o(w)o(ork)g(ma)o(y)e(b)q(e) i(grossly)g(underutilized.)24 b(In)16 b(suc)o(h)h(situations,)0 623 y(it)e(is)g(desirable)h(to)f(ha)o(v)o(e)g(a)g(n)o(um)o(b)q(er)f(of) h(distinct)g(data)g(curren)o(tly)h(in)f(transit)h(b)q(et)o(w)o(een)g (the)g(t)o(w)o(o)f(agen)o(ts,)g(pro)o(viding)f(for)0 673 y(a)g(con)o(tin)o(ual)f(stream)g(of)g(data)h(rather)h(than)f(the)g (sp)q(oradic)g(activit)o(y)f(c)o(haracteristic)j(of)d(\\stop)h(and)g(w) o(ait")f(proto)q(cols)h(lik)o(e)0 723 y(the)g(ABP)m(.)62 772 y(In)j(the)g(case)g(where)h(the)f(size)g(of)f(the)h(windo)o(w)f(b)q (eing)h(used)g(is)f(1,)h(the)g(b)q(eha)o(vior)f(of)g(the)h(sliding)e (windo)o(w)h(proto)q(col)0 822 y(is)h(similar)e(to)j(that)f(of)g(the)h (ABP)m(.)f(Other)i(than)e(the)h(use)g(of)f(un)o(b)q(ounded)h(message)f (n)o(um)o(b)q(ers)h(in)f(the)h(sliding)e(windo)o(w)0 872 y(proto)q(col,)d(eac)o(h)i(agen)o(t)e(in)h(either)h(proto)q(col)e (mak)o(es)g(similar)f(mo)o(v)o(es.)62 922 y(One)17 b(should)g(probably) e(not)h(sp)q(eak)h(of)f(a)g(single)g(SWP;)g(man)o(y)f(sliding)g(windo)o (w)g(algorithms)f(use)j(that)g(windo)o(w)e(in)0 972 y(di\013eren)o(t)f (w)o(a)o(ys.)k(W)m(e)13 b(base)h(our)f(SWP)g(up)q(on)h(one)f(giv)o(en)g (in)g([DaC)o(])g(for)g(Kermit's)f(implemen)o(tation)e(of)j(sliding)f (windo)o(ws.)0 1088 y Fg(4.1)56 b(F)-5 b(unction)19 b(Descriptions)0 1165 y Ft(W)m(e)13 b(use)g(the)h Fp(Msg)t Ft(,)f Fp(Data)s Ft(,)g Fp(Num)s Ft(,)g(and)g Fp(Nul)r(l)j Ft(functions)e(de\014ned)g (in)e(the)i(symmetric)d(ABP)j(to)f(comp)q(ose)f(and)h(decomp)q(ose)0 1215 y(messages.)24 b(W)m(e)15 b(still)g(represen)o(t)j(our)e(comm)o (unicati)o(on)d(net)o(w)o(ork)j(with)f(queues,)i(using)f(the)g Fp(App)n(end)t Ft(,)h Fp(He)n(ad)t Ft(,)f Fp(T)m(ail)t Ft(,)f(and)0 1265 y Fp(EmptyQueue)g Ft(functions)10 b(as)h(de\014ned)h (previously)m(.)k(The)11 b(data)f(storage)h(functions)g Fp(SenderFile)j Ft(and)c Fp(R)n(e)n(c)n(eiverFile)j Ft(remain)0 1314 y(as)h(in)f(the)i(ABP)m(,)f(as)g(do)q(es)g Fp(Time)n(out)t Ft(.)62 1364 y(Eac)o(h)20 b(agen)o(t)f(uses)h Fp(SenderInMsg)25 b Ft(and)19 b Fp(R)n(e)n(c)n(eiverInMsg)k Ft(as)c(in)g(the)h(ABP)g(to)f (hold)f(the)i(curren)o(t)h(message)e(b)q(eing)0 1414 y(pro)q(cessed.)h(Priv)n(ate)13 b(distinguished)g(elemen)o(ts)h Fp(SenderL)n(o,)g(SenderHi,)h(R)n(e)n(c)n(eiverL)n(o,)e(R)n(e)n(c)n (eiverHi:)18 b(inte)n(gers)e Ft(denote)e(the)0 1464 y(b)q(oundaries)f (of)f(eac)o(h)g(agen)o(t's)h(curren)o(t)g(windo)o(w.)k(Additionally)m (,)10 b(the)j(sender)h(has)e(a)g(function)g Fp(R)n(e)n(c)n(eive)n(dA)n (ck:)19 b(inte)n(gers)12 b Fq(!)0 1514 y Fp(Bo)n(ol)17 b Ft(whic)o(h)12 b(notes)h(whic)o(h)f(messages)h(ha)o(v)o(e)f(b)q(een)i (successfully)f(ac)o(kno)o(wledged.)18 b(The)12 b(distinguished)h (elemen)o(t)f Fp(WinSize:)0 1564 y(inte)n(gers)17 b Ft(denotes)e(the)f (maxim)o(um)9 b(windo)o(w)k(size)i(for)e(b)q(oth)h(agen)o(ts.)0 1680 y Fg(4.2)56 b(Mo)r(dule)17 b(Sp)r(eci\014cations)0 1757 y Ft(W)m(e)d(de\014ne)h Fp(SenderWindowF)m(ul)r(l)k Ft(as)c(an)f(abbreviation)f(for)h Fp(SenderHi)h Fq(\000)h Fp(SenderL)n(o)g Ft(+)f Fp(1)h(=)f(WinSize)s Ft(.)k(Th)o(us,)c Fp(Sender-)0 1807 y(WindowF)m(ul)r(l)23 b Ft(is)c(true)g(exactly)g (when)h(there)g(are)f(exactly)g Fp(WinSize)j Ft(messages)d(b)q(et)o(w)o (een)h Fp(SenderL)n(o)i Ft(and)d Fp(SenderHi)t Ft(,)0 1856 y(inclusiv)o(e.)62 1906 y(As)13 b(b)q(efore,)f(the)g(sender)i (examines)d(eac)o(h)h(ac)o(kno)o(wledgmen)o(t)e(message)i(sen)o(t)g(to) g(her)g(b)o(y)g(the)g(receiv)o(er.)19 b(If)12 b(the)g(ac)o(kno)o(wl-)0 1956 y(edgmen)o(t)k(n)o(um)o(b)q(er)h(is)g(within)f(the)i(curren)o(t)g (windo)o(w,)f(the)g(sender)i(marks)d(that)h(message)g(as)g(ac)o(kno)o (wledged.)27 b(A)o(t)17 b(an)o(y)0 2006 y(time,)11 b(if)i(the)g (sender's)i(windo)o(w)d(is)h(not)g(full,)f(the)h(sender)i(sends)f (another)g(message)e(to)h(the)h(receiv)o(er,)g(increasing)g(the)f(size) 0 2056 y(of)h(her)h(windo)o(w)e(accordingly)m(.)18 b(Also,)c(if)f(the)i (oldest)g(en)o(try)g(in)f(her)h(windo)o(w)e(has)h(b)q(een)i (successfully)f(ac)o(kno)o(wledged,)f(she)0 2106 y(slides)g(up)g(the)h (lo)o(w)o(er)e(edge)i(of)e(her)i(windo)o(w,)d(th)o(us)i(decreasing)h (the)g(size)g(of)e(the)h(windo)o(w.)62 2155 y(The)k(receiv)o(er's)g (action)f(up)q(on)h(receipt)g(of)f(a)f(message)h(dep)q(ends)i(up)q(on)e (the)h(message)f(n)o(um)o(b)q(er.)27 b(If)17 b(the)h(n)o(um)o(b)q(er)e (is)0 2205 y(within)f(his)g(curren)o(t)i(windo)o(w,)e(he)h(ac)o(kno)o (wledges)g(the)g(message)f(and)h(records)h(the)f(data)f(in)g(his)h (data)f(storage)h(area.)23 b(If)0 2255 y(the)15 b(n)o(um)o(b)q(er)f (follo)o(ws)f(his)i(curren)o(t)h(windo)o(w,)d(the)i(receiv)o(er)i (slides)d(his)h(windo)o(w)f(up)g(un)o(til)g(the)h(message)g(falls)e (within)h(his)0 2305 y(windo)o(w.)62 2355 y(The)f(sender)g(and)f (receiv)o(er)i(mo)q(dules)d(are)h(giv)o(en)g(in)g(Fig.)f(8.)17 b(The)12 b(observ)n(an)o(t)g(reader)i(ma)o(y)c(note)i(that)g(no)g(rule) h(is)e(giv)o(en)0 2405 y(for)i(the)h(case)h(when)f(the)g(receiv)o(er)i (receiv)o(es)f(a)e(message)h(with)f(a)g(message)g(n)o(um)o(b)q(er)g (preceding)i(the)f(curren)o(t)h(windo)o(w;)e(w)o(e)0 2454 y(will)f(pro)o(v)o(e)i(that)g(this)g(situation)f(nev)o(er)i(o)q (ccurs.)62 2504 y(W)m(e)h(use)h(the)f(same)f(comm)o(unications)e(mo)q (dules)i(\()p Fc(SenderCommunicate)p Ft(,)i Fc(ReceiverCommunicate)p Ft(,)g Fc(SenderLoseMes-)0 2554 y(sage)p Ft(,)c(and)h Fc(ReceiverLoseMessage)p Ft(\))j(used)e(in)f(the)g(ABP)m(.)62 2604 y(W)m(e)i(use)g(the)h(same)e(de\014nitions)g(of)g(regular)h(and)g (fair)f(run)h(as)g(in)f(the)i(ABP)m(.)e(The)h(initial)e(state)j(of)e (the)h(SWP)g(satis-)0 2654 y(\014es)i(the)f(conditions)g(sho)o(wn)g(in) f(Fig.)g(9.)26 b(The)18 b(only)e(mo)q(dules)f(whic)o(h)i(are)g(not)g(p) q(ositiv)o(e)g(are)g Fc(SenderLoseMessage)j Ft(and)0 2704 y Fc(ReceiverLoseMessage)p Ft(.)p eop %%Page: 14 14 14 13 bop 0 50 a Ft(14)1429 b Fk(4.)40 b(SLIDING)14 b(WINDO)o(WS)p 0 423 1950 3 v 0 473 a Ff(Mo)q(dule:)20 b(Sender)0 523 y Fe(Rule:)f(SendMessage)0 572 y Fh(if)e Fp(Not\(SenderWindowF)m(ul)r (l\))e Fh(then)68 622 y Fp(R)n(e)n(c)n(eiverQueue)g(:=)136 672 y(R)n(e)n(c)n(eiverQueue)g Ft(++)g Fp (Msg\(SenderFile\(SenderHi+1\),SenderHi+1\))68 722 y(SenderHi)g(:=)f (SenderHi+1)0 772 y Fh(elseif)j Fp(Time)n(out)e Fh(then)68 821 y Fp(R)n(e)n(c)n(eiverQueue)g(:=)136 871 y(R)n(e)n(c)n(eiverQueue)g Ft(++)g Fp(Msg\(SenderFile\(SenderL)n(o\),SenderL)n(o\))68 921 y(Time)n(out)f(:=)h(false)0 971 y Fh(endif)0 1070 y Fe(Rule:)k(Pro)q(cessAck)0 1120 y Fh(if)e Fp(De\014ne)n (d\(SenderInMsg\))g Fh(then)68 1170 y(if)f Fp(SenderL)n(o)g Fq(\024)f Fp(Num\(SenderInMsg\))h Fq(\024)f Fp(SenderHi)g Fh(then)136 1220 y Fp(R)n(e)n(c)n(eive)n(dA)n(ck\(Num\(SenderInMsg\)\)) h(:=)e(true)68 1270 y Fh(endif)68 1320 y Fp(Cle)n(ar\(SenderInMsg\))0 1369 y Fh(endif)0 1469 y Fe(Rule:)19 b(SlideSenderWin)0 1519 y Fh(if)e Fp(R)n(e)n(c)n(eive)n(dA)n(ck\(SenderL)n(o\))e Fh(then)i Fp(SenderL)n(o)f(:=)e(SenderL)n(o)i(+)e(1)h Fh(endif)p 98 1569 1755 3 v 0 1618 a Ff(Mo)q(dule:)20 b(Receiver)0 1668 y Fe(Rule:)f(AcceptMessage)0 1718 y Fh(if)e Fp(De\014ne)n(d\(R)n(e)n(c)n(eiverInMsg\))f Fh(and)136 1768 y Fp(R)n(e)n(c)n(eiverL)n(o)e Fq(\024)i Fp(Num\(R)n(e)n(c)n (eiverInMsg\))f Fq(\024)g Fp(R)n(e)n(c)n(eiverHi)f Fh(then)68 1818 y Fp(SenderQueue)i(:=)e(SenderQueue)i Ft(++)g Fp(Msg\(Nul)r (l,Num\(R)n(e)n(c)n(eiverInMsg\)\))68 1867 y(R)n(e)n(c)n (eiverFile\(Num\(R)n(e)n(c)n(eiverInMsg\)\))e(:=)h(Data\(R)n(e)n(c)n (eiverInMsg\))68 1917 y(Cle)n(ar\(R)n(e)n(c)n(eiverInMsg\))0 1967 y Fh(endif)0 2067 y Fe(Rule:)k(SlideReceiverWin)0 2117 y Fh(if)e Fp(De\014ne)n(d\(R)n(e)n(c)n(eiverInMsg\))f Fh(and)g Fp(Num\(R)n(e)n(c)n(eiverInMsg\))f Fo(>)g Fp(R)n(e)n(c)n (eiverHi)g Fh(then)68 2166 y Fp(R)n(e)n(c)n(eiverHi)f(:=)g(Num\(R)n(e)n (c)n(eiverInMsg\))68 2216 y(R)n(e)n(c)n(eiverL)n(o)g(:=)h (Max\(0,Num\(R)n(e)n(c)n(eiverInMsg\))p Fq(\000)p Fp(WinSize)p Ft(+)p Fp(1\))0 2266 y Fh(endif)p 0 2338 1950 3 v 478 2471 a Ft(Figure)f(8:)k(Sliding)12 b(windo)o(w)h(sender)i(and)f(receiv) o(er)i(mo)q(dules.)p eop %%Page: 15 15 15 14 bop 0 50 a Fk(4.3)41 b(Pro)q(of)13 b(of)h(Correctness)1444 b Ft(15)p 0 198 1950 3 v 546 248 a Fq(8)p Fo(x)12 b Fq(\025)g Ft(0)i Fp(R)n(e)n(c)n(eiverFile\(x\))g(=)h(undef)546 298 y Fq(8)p Fo(x)d Fq(\025)g Ft(0)i Fp(R)n(e)n(c)n(eive)n(dA)n (ck\(x\))h(=)g(false)546 348 y(SenderL)n(o)h(=)f(R)n(e)n(c)n(eiverL)n (o)f(=)h(0)546 397 y(SenderHi)g(=)g(R)n(e)n(c)n(eiverHi)f(=)h Fq(\000)p Fp(1)546 447 y(SenderInMsg)h(=)f(R)n(e)n(c)n(eiverInMsg)g(=)g (undef)546 497 y(R)n(e)n(c)n(eiverQueue)g(=)g(SenderQueue)h(=)f (EmptyQueue)p 0 569 V 672 702 a Ft(Figure)f(9:)k(SWP)c(initial)e (conditions.)0 828 y Fg(4.3)56 b(Pro)r(of)18 b(of)h(Correctness)0 905 y Fs(Lemma)c(8)21 b Fp(In)g(any)h(r)n(e)n(achable)g(state,)g(for)f (any)h(message)f Fo(\026)h Fp(sent)f(by)g(the)h(sender)f(and)h(pr)n (esent)f(within)g(the)g(state,)0 955 y Fo(N)5 b(um)p Ft(\()p Fo(\026)p Ft(\))12 b Fq(\024)g Fo(S)r(ender)q(H)s(i)p Fp(.)0 1038 y Fs(Pro)q(of.)h Ft(By)h(induction.)k(Initially)12 b(the)i(sender)i(has)e(sen)o(t)g(no)g(messages.)62 1088 y Fc(SendMessage)h Ft(is)e(the)h(only)e(rule)h(whic)o(h)g(ma)o(y)e (a\013ect)j(the)g(in)o(v)n(arian)o(t.)i(If)c(the)i(sender's)g(windo)o (w)f(is)f(not)h(full,)f Fp(SenderHi)0 1138 y Ft(is)17 b(incremen)o(ted)f(\(whic)o(h)h(main)o(tains)d(the)k(in)o(v)n(arian)o (t)d(for)h(an)o(y)g(messages)h(previously)f(sen)o(t\),)i(and)f(a)f(new) h(message)f Fo(\026)h Ft(is)0 1188 y(sen)o(t)e(with)e Fp(Num\()p Fo(\026)p Fp(\))i(=)f(SenderHi)t Ft(.)19 b(If)13 b(the)h(sender's)h(windo)o(w)e(is)h(full,)e(an)o(y)h(message)h Fo(\026)f Ft(that)h(is)g(sen)o(t)g(will)e(ha)o(v)o(e)i Fp(Num\()p Fo(\026)p Fp(\))0 1237 y(=)h(SenderL)n(o)s Ft(,)e(and)h Fp(SenderWindowF)m(ul)r(l)19 b Ft(implies)12 b(that)i Fp(SenderL)n(o)h Fq(\024)g Fp(SenderHi)t Ft(.)k Fb(2)0 1321 y Fs(Lemma)c(9)21 b Fp(In)16 b(any)h(r)n(e)n(achable)f (state,)g(\(SenderHi)p Fq(\000)p Fp(SenderL)n(o)p Ft(+)p Fp(1)h Fq(\024)g Fp(WinSize\))f(and)h(\(R)n(e)n(c)n(eiverHi)p Fq(\000)p Fp(R)n(e)n(c)n(eiverL)n(o)p Ft(+)p Fp(1)f Fq(\024)0 1371 y Fp(WinSize\).)j(That)c(is,)g(the)f(size)h(of)g(b)n(oth)g(the)g (sender's)g(and)g(r)n(e)n(c)n(eiver's)f(windows)g(is)h Fq(\024)g Fp(WinSize.)0 1455 y Fs(Pro)q(of.)e Ft(By)h(induction.)k (Initially)12 b Fp(SenderHi)j Fq(\000)g Fp(SenderL)n(o)g Ft(+)g Fp(1)g(=)g(0)6 b Ft(,)13 b(and)h Fp(R)n(e)n(c)n(eiverHi)g Fq(\000)h Fp(R)n(e)n(c)n(eiverL)n(o)g Ft(+)g Fp(1)g(=)g(0)6 b Ft(.)17 b(W)m(e)0 1504 y(consider)e(all)d(mo)o(v)o(es)h(that)h (a\013ect)h(functions)f(presen)o(t)h(in)f(the)g(in)o(v)n(arian)o(t.)62 1554 y Fc(SlideSenderWin)k Ft(incremen)o(ts)c Fp(SenderL)n(o)s Ft(,)f(whic)o(h)h(main)o(tains)e(the)i(in)o(v)n(arian)o(t.)62 1604 y Fc(SendMessage)23 b Ft(ma)o(y)18 b(incremen)o(t)i Fp(SenderHi)25 b Ft(if)20 b Fp(SenderHi)h Fq(\000)g Fp(SenderL)n(o)g Ft(+)g Fp(1)g Fo(<)g Fp(WinSize)s Ft(;)j(after)d(incremen)o(ting)0 1654 y Fp(SenderHi)t Ft(,)14 b(the)g(in)o(v)n(arian)o(t)e(still)h (holds.)62 1704 y Fc(SlideReceiverWin)21 b Ft(incremen)o(ts)d Fp(R)n(e)n(c)n(eiverHi)j Ft(and)c(ma)o(y)f(also)h(incremen)o(t)g Fp(R)n(e)n(c)n(eiverL)n(o)s Ft(;)h(the)g(rule)g(insures)h(that)e(the)0 1753 y(in)o(v)n(arian)o(t)12 b(is)i(main)o(tained.)i Fb(2)0 1837 y Fs(Lemma)f(10)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e (state,)h(\(0)g Fq(\024)g Fp(x)g Fo(<)g Fp(SenderL)n(o)h Fq(!)e Fp(R)n(e)n(c)n(eive)n(dA)n(ck\(x\)\).)0 1921 y Fs(Pro)q(of.)d Ft(By)g(induction.)17 b(Initially)m(,)9 b Fp(SenderL)n(o)k(=)g(0)6 b Ft(.)17 b(Only)11 b Fc(SlideSenderWin)k Ft(ma)o(y)9 b(c)o(hange)j Fp(SenderL)n(o)s Ft(;)g(its)g(guard)f (ensures)0 1971 y(that)j(the)g(in)o(v)n(arian)o(t)f(is)g(preserv)o(ed.) 21 b Fb(2)0 2054 y Fs(Lemma)15 b(11)21 b Fp(In)12 b(any)g(r)n(e)n (achable)f(state,)h(for)f(any)h(message)g Fo(\026)f Fp(which)g(exists)g (in)h(SenderInMsg)h(or)e(SenderQueue,)i(De\014ne)n(d)0 2104 y(\(R)n(e)n(c)n(eiverFile\(Num\()p Fo(\026)p Fp(\)\)\))h(is)g (true.)0 2188 y Fs(Pro)q(of.)e Ft(By)h(induction.)18 b(Initially)m(,)10 b(b)q(oth)j Fp(SenderInMsg)18 b Ft(and)13 b Fp(SenderQueue)k Ft(are)d(empt)o(y)m(.)i(W)m(e)c(consider)i(all)e(mo) o(v)o(es)g(that)0 2237 y(a\013ect)j(functions)f(presen)o(t)h(in)f(the)g (in)o(v)n(arian)o(t.)62 2287 y Fc(AcceptMessage)22 b Ft(app)q(ends)f(a)e(new)i(message)e(to)h Fp(SenderQueue)s Ft(.)37 b(Its)20 b(guard)g(sho)o(ws)g(that)g(when)g Fp(Msg\(Nul)r (l,x\))h Ft(is)0 2337 y(app)q(ended)15 b(to)f Fp(SenderQueue)s Ft(,)g Fp(R)n(e)n(c)n(eiverFile\(x\))h Ft(is)f(b)q(eing)g(de\014ned)h (at)e(the)i(same)e(momen)o(t.)62 2387 y Fc(Pro)q(cessAck)p Ft(,)23 b Fc(SenderCommunicate)p Ft(,)g(and)d Fc(SenderLoseMe)q(ssage)j Ft(discard)f(messages)e(from)f(or)i(transfer)h(messages)0 2437 y(b)q(et)o(w)o(een)15 b Fp(SenderQueue)j Ft(and)c Fp(SenderInMsg)t Ft(,)g(whic)o(h)g(do)q(es)h(not)f(a\013ect)g(the)h(in) o(v)n(arian)o(t.)h Fb(2)0 2520 y Fs(Lemma)f(12)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e(state,)h(R)n(e)n(c)n(eive)n(dA)n(ck\(x\))g Fq(!)f Fp(De\014ne)n(d\(R)n(e)n(c)n(eiverFile\(x\)\).)0 2604 y Fs(Pro)q(of.)e Ft(By)h(induction.)k(Fix)12 b(an)h Fo(x)p Ft(.)k(Initially)m(,)10 b Fp(R)n(e)n(c)n(eive)n(dA)n(ck\(x\))k (=)f(false)s Ft(.)18 b(The)13 b(only)f(rule)h(whic)o(h)f(mo)q(di\014es) g Fp(R)n(e)n(c)n(eive)n(dA)n(ck)0 2654 y Ft(is)17 b Fc(Pro)q(cessAck)p Ft(,)i(whic)o(h)f(sets)h Fp(R)n(e)n(c)n(eive)n(dA)n(ck\(x\))g Ft(to)f(true)g(if)f Fp(Num\(SenderInMsg\))j(=)e(x)23 b Ft(and)17 b Fp(x)23 b Ft(is)17 b(within)g(the)h(sender's)0 2704 y(curren)o(t)d(windo)o(w.)j(By)c(Lemma)d(11,)i(w)o(e)h(kno)o(w)f (that)h Fp(R)n(e)n(c)n(eiverFile\(x\))h Ft(is)f(de\014ned.)19 b Fb(2)p eop %%Page: 16 16 16 15 bop 0 50 a Ft(16)1429 b Fk(4.)40 b(SLIDING)14 b(WINDO)o(WS)0 195 y Fs(Lemma)h(13)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e(state,)h (\(R)n(e)n(c)n(eiverHi)f Fq(\024)h Fp(SenderHi\).)0 278 y Fs(Pro)q(of.)f Ft(By)i(induction.)21 b(Initially)m(,)12 b Fp(R)n(e)n(c)n(eiverHi)j(=)h(SenderHi)g(=)g Fq(\000)p Fp(1)6 b Ft(.)21 b(W)m(e)15 b(consider)h(all)e(mo)o(v)o(es)g(that)h (a\013ect)h(functions)0 328 y(presen)o(t)f(in)f(the)g(in)o(v)n(arian)o (t.)62 378 y Fc(SendMessage)i Ft(incremen)o(ts)e Fp(SenderHi)t Ft(,)g(main)o(taining)d(the)j(in)o(v)n(arian)o(t.)62 428 y Fc(SlideReceiverWin)i Ft(up)q(dates)e Fp(R)n(e)n(c)n(eiverHi)j Ft(to)c(the)g(curren)o(t)i(v)n(alue)d(of)h Fp(Num\(R)n(ec)n (eiverInMsg\))r Ft(,)f(whic)o(h)h(b)o(y)g(Lemma)d(8)j(is)0 477 y(b)q(ounded)i(ab)q(o)o(v)o(e)e(b)o(y)h Fp(SenderHi)t Ft(,)g(main)o(taini)o(ng)d(the)j(in)o(v)n(arian)o(t.)j Fb(2)0 561 y Fs(Lemma)e(14)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e (state,)h(\(R)n(e)n(c)n(eiverL)n(o)f Fq(\024)h Fp(SenderL)n(o\).)0 644 y Fs(Pro)q(of.)h Ft(By)i(induction.)28 b(The)18 b(in)o(v)n(arian)o (t)d(is)j(true)g(initially)m(,)d(since)j Fp(SenderL)n(o)g(=)g(R)n(e)n (c)n(eiverL)n(o)g(=)g(0)6 b Ft(.)28 b(W)m(e)17 b(consider)h(all)0 694 y(mo)o(v)o(es)13 b(that)h(a\013ect)g(functions)g(presen)o(t)i(in)d (the)i(in)o(v)n(arian)o(t.)62 743 y Fc(SlideSenderWin)j Ft(incremen)o(ts)c Fp(SenderL)n(o)s Ft(,)f(main)o(taining)e(the)j(in)o (v)n(arian)o(t.)62 793 y Fc(SlideReceiverWin)19 b Ft(up)q(dates)f Fp(R)n(e)n(c)n(eiverL)n(o)s Ft(.)23 b(If)16 b Fp(R)n(e)n(c)n(eiverL)n (o)i Ft(is)e(c)o(hanged)h(to)f(a)f(non-zero)i(v)n(alue,)f(the)g(guard)g (for)g Fc(Slid-)0 843 y(eReceiverWin)22 b Ft(assures)f(us)e(that)g Fp(R)n(e)n(c)n(eiverL)n(o)h(=)f(R)n(e)n(c)n(eiverHi)p Fq(\000)p Fp(WinSize)p Ft(+)p Fp(1)6 b Ft(.)34 b(Lemmas)17 b(9)i(and)g(13)f(yield)h(the)h(result.)0 893 y Fb(2)0 976 y Fs(Lemma)15 b(15)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e(state,)h (\(0)g Fq(\024)g Fp(x)g Fo(<)g Fp(R)n(e)n(c)n(eiverL)n(o)g Fq(!)f Fp(De\014ne)n(d\(R)n(ec)n(eiverFile\(x\)\)\).)0 1059 y Fs(Pro)q(of.)f Ft(Immediate)e(from)i(Lemmas)e(14,)i(10,)g(and)h (12.)j Fb(2)0 1142 y Fs(Lemma)e(16)21 b Fp(In)16 b(any)h(r)n(e)n (achable)f(state,)f(c)n(onsider)h(the)g(se)n(quenc)n(e)h(of)f(messages) g(RIM+R)o(Q.)g(F)m(or)g(any)g(two)g(messages)g Fo(\013)0 1192 y Fp(and)g Fo(\014)h Fp(in)e(that)g(se)n(quenc)n(e,)g(if)g Fo(\013)f Fp(pr)n(e)n(c)n(e)n(des)h Fo(\014)r Fp(,)g(then)g Ft(\()p Fo(N)5 b(um)p Ft(\()p Fo(\013)p Ft(\))10 b Fq(\000)f Fo(N)c(um)p Ft(\()p Fo(\014)r Ft(\)\))16 b Fp(is)f(at)g(most)g Fo(W)6 b(inS)r(iz)r(e)11 b Fq(\000)e Ft(1)p Fp(.)0 1275 y Fs(Pro)q(of.)14 b Ft(By)g(induction.)19 b(Initially)m(,)12 b(no)i(messages)h(exist)f(in)g Fp(RIM+R)o(Q)t Ft(.)g(W)m(e)g(consider)i (all)d(mo)o(v)o(es)g(that)i(a\013ect)g(functions)0 1325 y(presen)o(t)g(in)f(the)g(in)o(v)n(arian)o(t.)62 1375 y Fc(SendMessage)20 b Ft(app)q(ends)f(a)e(message)g Fo(\014)k Ft(to)c Fp(R)n(e)n(c)n(eiverQueue)s Ft(.)30 b(If)17 b Fp(Num\()p Fo(\014)r Fp(\))i(=)f(SenderHi+1)24 b Ft(\(b)q(efore)18 b Fp(SenderHi)k Ft(is)0 1425 y(up)q(dated\),)g(w)o(e)e(kno)o(w)g(from)e (Lemma)g(8)h(that)i(all)d(other)j(messages)f Fo(\013)g Ft(in)g Fp(R)n(e)n(c)n(eiverInMsg)k Ft(or)c Fp(R)n(e)n(c)n(eiverQueue)j Ft(ha)o(v)o(e)0 1474 y Fp(Num\()p Fo(\013)p Fp(\))15 b Fq(\024)g Fp(SenderHi)g Fo(<)g Fp(Num\()p Fo(\014)r Fp(\))r Ft(,)e(and)h(the)h(in)o(v)n(arian)o(t)d(is)i(preserv)o(ed.)62 1524 y(Otherwise,)20 b Fp(Num\()p Fo(\014)r Fp(\))g(=)e(SenderL)n(o)s Ft(.)31 b(Lemma)15 b(8)j(tells)g(us)h(that)f(that)g(the)g(largest)h (message)e(n)o(um)o(b)q(er)h(presen)o(t)h(in)0 1574 y Fp(R)n(e)n(c)n(eiverInMsg)h Ft(or)c Fp(R)n(e)n(c)n(eiverQueue)k Ft(is)c Fp(SenderHi)t Ft(;)h(Lemma)c(9)j(sho)o(ws)h(that)f Fp(SenderHi)p Fq(\000)p Fp(SenderL)n(o)k Ft(is)c(at)g(most)f Fo(W)6 b(in)p Ft(-)0 1624 y Fo(S)r(iz)r(e)11 b Fq(\000)e Ft(1.)62 1674 y Fc(ReceiverCommunicate)p Ft(,)18 b Fc (ReceiverLoseMessage)p Ft(,)h(and)e Fc(AcceptMessage)h Ft(remo)o(v)o(e)e(messages)g(from)f(or)h(transfer)i(mes-)0 1723 y(sages)d(b)q(et)o(w)o(een)g Fp(R)n(e)n(c)n(eiverQueue)i Ft(and)d Fp(R)n(e)n(c)n(eiverInMsg)t Ft(,)f(whic)o(h)h(do)q(es)g(not)g (a\013ect)h(the)g(in)o(v)n(arian)o(t.)h Fb(2)0 1807 y Fs(Theorem)f(5)20 b Fp(In)g(any)h(r)n(e)n(achable)e(state,)h(for)g(any) g(message)g Fo(\026)f Fp(in)h(R)n(e)n(c)n(eiverInMsg)g(or)f(R)n(e)n(c)n (eiverQueue,)i(Num\()p Fo(\026)p Fp(\))f Fq(\025)0 1856 y Fp(R)n(e)n(c)n(eiverL)n(o.)28 b(That)18 b(is,)g(the)g(r)n(e)n(c)n (eiver)e(mo)n(dule)j(wil)r(l)d(never)i(r)n(e)n(c)n(eive)f(a)h(message)h (whose)f(numb)n(er)g(pr)n(e)n(c)n(e)n(des)g(the)g(curr)n(ent)0 1906 y(window.)0 1989 y Fs(Pro)q(of.)12 b Ft(By)h(induction.)k (Initially)m(,)10 b(no)i(messages)h(exist.)18 b(W)m(e)12 b(consider)i(all)d(mo)o(v)o(es)h(that)g(a\013ect)i(functions)f(presen)o (t)h(in)e(the)0 2039 y(in)o(v)n(arian)o(t.)62 2089 y Fc(SendMessage)20 b Ft(creates)f(a)f(new)g(message)f Fo(\026)p Ft(.)29 b Fc(SendMessage)20 b Ft(implies)15 b Fp(Num\()p Fo(\026)p Fp(\))k Fq(\025)f Fp(SenderL)n(o)s Ft(;)h(Lemma)c(14)i(asserts)0 2139 y(that)d Fp(SenderL)n(o)i Fq(\025)f Fp(R)n(e)n(c)n(eiverL)n(o)s Ft(.)62 2189 y Fc(SlideReceiverWin)k Ft(incremen)o(ts)c Fp(R)n(e)n(c)n(eiverL)n(o)s Ft(.)23 b(If)15 b Fp(Num\(R)n(e)n(c)n(eiverInMsg\))h(=)g(x)5 b Ft(,)16 b Fc(SlideReceiverWin)j Ft(sets)d Fp(R)n(e)n(c)n(eiverL)n(o)0 2238 y Ft(to)i Fp(\(x)p Fq(\000)p Fp(WinSize)p Ft(+)p Fp(1\))r Ft(.)33 b(Lemma)15 b(16)j(implies)e(that)j(all)e(messages)h (in)g Fp(R)n(e)n(c)n(eiverQueue)k Ft(ha)o(v)o(e)c(n)o(um)o(b)q(ers)g (in)g(the)h(desired)0 2288 y(range.)62 2338 y Fc(ReceiverCommunicate)p Ft(,)f Fc(ReceiverLoseMessage)p Ft(,)h(and)e Fc(AcceptMessage)h Ft(remo)o(v)o(e)e(messages)g(from)f(or)h(transfer)i(mes-)0 2388 y(sages)d(b)q(et)o(w)o(een)g Fp(R)n(e)n(c)n(eiverQueue)i Ft(and)d Fp(R)n(e)n(c)n(eiverInMsg)t Ft(,)f(whic)o(h)h(do)q(es)g(not)g (a\013ect)h(the)g(in)o(v)n(arian)o(t.)h Fb(2)0 2471 y Fs(Theorem)f(6)20 b Fp(In)c(any)f(r)n(e)n(achable)g(state)g(De\014ne)n (d\(R)n(e)n(c)n(eiverFile\(x\)\))g Fq(!)f Fp(R)n(e)n(c)n (eiverFile\(x\))h(=)f(SenderFile\(x\).)0 2554 y Fs(Pro)q(of.)f Ft(Fix)g(an)h Fo(x)p Ft(.)k(Initially)m(,)11 b Fp(R)n(e)n(c)n (eiverFile\(x\))j(=)h(undef)9 b Ft(.)62 2604 y(Only)14 b(rule)g Fc(AcceptMessage)i Ft(can)f(c)o(hange)f Fp(R)n(e)n(c)n (eiverFile\(x\))r Ft(.)j(Rule)d Fc(SendMessage)i Ft(sho)o(ws)e(that)g (ev)o(ery)h(message)f(from)0 2654 y(the)f(sender)g(to)f(the)h(receiv)o (er)g(has)f(the)h(form)d Fp(Message\(SenderFile\(n\),n\))15 b Ft(for)c(some)h Fo(n)p Ft(;)g(th)o(us,)g(the)h(receiv)o(er's)g (assignmen)o(t)0 2704 y(to)h Fp(R)n(e)n(c)n(eiverFile)i Ft(m)o(ust)d(set)i Fp(R)n(e)n(c)n(eiverFile\(x\))f Ft(to)g(the)g(v)n (alue)g(of)f Fp(SenderFile\(x\))r Ft(.)18 b Fb(2)p eop %%Page: 17 17 17 16 bop 1908 50 a Ft(17)0 195 y Fs(Theorem)15 b(7)20 b Fp(In)c(any)f(fair)f(run,)h(any)g(datum)h(is)e(eventual)r(ly)h(sent,) g(r)n(e)n(c)n(eive)n(d,)f(and)i(acknow)r(le)n(dge)n(d.)0 292 y Fs(Pro)q(of.)11 b Ft(The)h(pro)q(of)g(generally)f(follo)o(ws)f (that)i(of)f(Theorems)h(2)g(and)f(3.)17 b(Lemma)9 b(15)j(and)f(Theorem) h(6)f(assure)i(us)f(that)g(once)0 342 y(the)k(receiv)o(er's)h(windo)o (w)e(mo)o(v)o(es)g(past)h(p)q(osition)e Fo(x)p Ft(,)i(message)f Fo(x)g Ft(will)g(ha)o(v)o(e)g(b)q(een)i(correctly)g(receiv)o(ed)g(and)e (stored.)25 b(The)0 392 y(pro)q(of)14 b(that)f(the)i(receiv)o(er's)g (and)f(sender's)h(windo)o(ws)f(con)o(tin)o(ue)g(to)g(mo)o(v)o(e)e(forw) o(ard)h(is)h(similar)d(to)j(those)h(sho)o(wn)f(b)q(efore.)62 443 y(An)h(imp)q(ortan)o(t)d(di\013erence)17 b(in)o(v)o(olv)o(es)c(the) i(loss)f(of)g(messages)g(within)g(the)h(curren)o(t)h(sender's)g(windo)o (w)d(whic)o(h)h(are)h(not)0 493 y(at)e(the)h(b)q(ottom)e(of)g(the)i (windo)o(w.)j(Since)d(the)f(sender)i(only)e(re-transmits)f(messages)i (at)f(the)h(b)q(ottom)d(of)i(the)h(windo)o(w,)e(w)o(e)0 543 y(m)o(ust)i(assure)j(ourselv)o(es)f(that)g(a)f(lost)g(message)g (whic)o(h)g(is)h(not)f(at)g(the)h(b)q(ottom)e(of)h(the)h(windo)o(w)f (will)f(ev)o(en)o(tually)g(b)q(e)i(re-)0 592 y(transmitted.)g(But)c (this)f(is)g(easy)g(to)g(sho)o(w;)g(since)h(the)f(message)g(at)f(the)i (b)q(ottom)d(of)h(the)i(windo)o(w)e(is)h(b)q(eing)f(re-transmitted,)0 642 y(ev)o(en)o(tually)i(the)g(message)g(at)g(the)h(b)q(ottom)e(of)g (the)i(windo)o(w)e(will)g(b)q(e)i(receiv)o(ed)g(b)o(y)f(the)h(receiv)o (er)g(and)f(its)h(ac)o(kno)o(wledgmen)o(t)0 692 y(receiv)o(ed)k(b)o(y)e (the)g(sender.)24 b(The)16 b(sender)h(will)c(then)j(mo)o(v)o(e)e(her)i (windo)o(w)e(forw)o(ard,)h(th)o(us)g(mo)o(ving)e(the)j(lost)f(message)g (one)0 742 y(p)q(osition)c(closer)i(to)f(the)g(b)q(ottom)f(of)g(the)i (windo)o(w.)j(A)c(short)h(inductiv)o(e)f(argumen)o(t)f(sho)o(ws)h(that) g(ev)o(en)o(tually)f(this)h(message)0 792 y(will)g(reac)o(h)j(the)g(b)q (ottom)d(of)h(the)i(windo)o(w)e(and)h(b)q(e)g(successfully)h (transmitted.)j Fb(2)0 936 y Fr(5)67 b(Bounded)23 b(Sliding)i(Windo)n (ws)0 1030 y Ft(The)c(SWP)f(presen)o(ted)i(in)e(the)h(previous)f (section)h(uses)h(arbitrary)e(in)o(tegers)h(as)f(message)g(n)o(um)o(b)q (ers.)37 b(In)20 b(real-w)o(orld)0 1080 y(settings,)15 b(one)f(cannot)h(use)g(an)f(arbitrarily)f(increasing)h(in)o(teger)h(as) f(a)g(unique)h(message)e(iden)o(ti\014er.)20 b(Th)o(us,)14 b(most)f(sliding)0 1130 y(windo)o(w)d(proto)q(cols)h(\(including)g(the) g(one)h(implem)o(en)o(ted)d(in)i(Kermit\))f(use)i(a)f(\014xed)h(set)f (of)g(message)g(n)o(um)o(b)q(ers,)g(and)f(restrict)0 1179 y(the)k(size)h(of)e(the)i(sliding)e(windo)o(w)g(to)g(one)h(half)f (of)h(the)g(total)f(n)o(um)o(b)q(er)g(of)h(message)f(n)o(um)o(b)q(ers)h (allo)o(w)o(ed.)62 1231 y(W)m(e)d(presen)o(t)i(mo)q(di\014ed)d(rules)i (for)g(the)g(SWP)f(whic)o(h)g(use)i(only)d(\014nitely)h(man)o(y)f (message)h(n)o(um)o(b)q(ers)g(and)g(pro)o(v)o(e)h(that)f(the)0 1280 y(b)q(eha)o(vior)i(of)h(this)f(proto)q(col)h(is)g(iden)o(tical)f (to)g(that)h(of)f(the)h(one)g(presen)o(ted)i(previously)m(.)i(Our)c(v)o (ersion)g(has)g(di\013eren)o(t)g(rules)0 1330 y(for)h(the)h(sender)h (and)f(receiv)o(er;)h(a)e(symmetric)f(v)o(ersion)i(could)f(b)q(e)h(pro) q(duced)h(\(as)f(with)f(the)h(ABP\))h(but)e(is)h(unnecessary)0 1380 y(for)e(our)f(purp)q(oses,)i(since)g(Kermit's)e(sliding)g(windo)o (w)g(proto)q(col)h(description)g(is)g(not)g(symmetric.)0 1496 y Fs(Remark.)41 b Ft(The)15 b(use)h(of)d(\014nitely)i(man)o(y)d (message)i(n)o(um)o(b)q(ers,)g(as)h(w)o(ell)f(as)g(the)h(b)q(ounds)g (whic)o(h)g(w)o(e)f(will)f(pro)o(v)o(e,)i(are)g(w)o(ell)0 1545 y(kno)o(wn)g(\(see)h(for)f(example)f([W)m(al)n(]\).)21 b(W)m(e)15 b(do)g(not)g(claim)e(that)i(our)g(pro)q(of)g(of)f(this)h(b)q (ound)g(is)g(unique;)h(rather,)g(w)o(e)f(in)o(tend)0 1595 y(to)f(sho)o(w)g(that)g(this)f(b)q(ound)h(can)h(b)q(e)f(easily)f (pro)o(v)o(en)h(within)g(our)g(framew)o(ork.)0 1719 y Fg(5.1)56 b(F)-5 b(unction)19 b(Descriptions)0 1798 y Ft(All)14 b(functions)h(previously)g(de\014ned)h(will)d(b)q(e)i(used.) 22 b(W)m(e)15 b(will)e(also)h(use)i(the)f(in\014x)g(functions)g Fq(\003)p Ft(,)f Fo(=)p Ft(,)g(and)h Fp(mo)n(d)20 b Ft(op)q(erators,)0 1848 y(represen)o(ting)c(in)o(teger)e(m)o(ultiplicatio)o(n,)d (division,)h(and)i(remainder)f(\(or)h(mo)q(dulus\).)62 1899 y(Additionally)m(,)8 b(w)o(e)j(de\014ne)h(t)o(w)o(o)e(functions)g Fp(SenderNum,)j(R)n(e)n(c)n(eiverNum:)k(messages)12 b Fq(!)f Fp(inte)n(gers)f Ft(as)h(follo)o(ws:)k Fp(Sender-)0 1949 y(Num)22 b Ft(is)c(the)h(largest)g(in)o(teger)g(less)g(than)g(or)f (equal)h(to)f Fp(SenderHi)23 b Ft(and)18 b(equiv)n(alen)o(t)g(to)h Fp(Num\()p Fo(\026)p Fp(\))g(mo)n(d)g(\(2)p Fq(\003)p Fp(WinSize\))r Ft(.)0 1999 y Fp(R)n(e)n(c)n(eiverNum)i Ft(is)d(the)g(smallest)f(in)o(teger)i(greater)g(than)f(or)g(equal)g(to) f Fp(R)n(e)n(c)n(eiverL)n(o)k Ft(and)d(equiv)n(alen)o(t)f(to)h Fp(Num\()p Fo(\026)p Fp(\))h(mo)n(d)0 2049 y(\(2)p Fq(\003)p Fp(WinSize\))r Ft(.)f(W)m(e)13 b(will)f(see)i(that)f Fp(SenderNum)18 b Ft(and)13 b Fp(R)n(e)n(c)n(eiverNum)j Ft(represen)o(t)f(the)f(\\true")g(message)f(n)o(um)o(b)q(er;)f(that)i (is,)0 2098 y(the)g(n)o(um)o(b)q(er)g(whic)o(h)f(w)o(as)h(used)h(b)o(y) f(the)g(agen)o(t)g(who)g(created)h(that)f(message.)0 2222 y Fg(5.2)56 b(Mo)r(dule)17 b(Sp)r(eci\014cations)0 2301 y Ft(Our)c(comm)o(uni)o(cations)c(mo)q(dules)i(remain)g(unc)o (hanged.)18 b(W)m(e)12 b(need)h(to)e(c)o(hange)i(the)f(sender)i(and)e (receiv)o(er)h(mo)q(dules)e(to)h(use)0 2351 y(message)i(n)o(um)o(b)q (ers)g(mo)q(dulo)e Fp(2)p Fq(\003)p Fp(WinSize)18 b Ft(instead)d(of)f (an)g(un)o(b)q(ounded)h(set)g(of)e(n)o(um)o(b)q(ers.)19 b(The)c(revised)g(transition)f(rules)0 2401 y(are)g(giv)o(en)g(in)f (Fig.)g(10,)g(where)i(c)o(hanges)f(to)g(the)h(previous)f(rules)g(are)h (written)f(in)f Ff(b)q(old)p Ft(.)0 2525 y Fg(5.3)56 b(Pro)r(of)18 b(of)h(Correctness)0 2604 y Ft(Our)c(in)o(ten)o(tion)e (here)j(is)e(to)g(sho)o(w)g(that)g Fp(SenderNum)k Ft(and)c Fp(R)n(e)n(c)n(eiverNum)j Ft(p)q(erform)d(the)g(same)g(function)g(that) g Fp(Num)j Ft(did)0 2654 y(in)c(the)h(un)o(b)q(ounded)g(SWP)m(.)f(Ha)o (ving)f(done)i(this,)g(the)g(pro)q(ofs)f(presen)o(ted)j(in)d(the)h (previous)g(section)g(will)f(still)f(b)q(e)i(v)n(alid)e(for)0 2704 y(the)i(b)q(ounded)h(SWP)m(.)e(All)g(of)g(our)h(pro)q(ofs)g(use)h (the)f(un)o(b)q(ounded)h(SWP)m(.)p eop %%Page: 18 18 18 17 bop 0 50 a Ft(18)1199 b Fk(5.)41 b(BOUNDED)14 b(SLIDING)g(WINDO)o (WS)p 0 373 1950 3 v 0 423 a Ff(Mo)q(dule:)20 b(Sender)0 473 y Fe(Rule:)f(SendMessage)0 523 y Fh(if)e Fp(Not\(SenderWindowF)m (ul)r(l\))e Fh(then)68 572 y Fp(R)n(e)n(c)n(eiverQueue)g(:=)136 622 y(R)n(e)n(c)n(eiverQueue)g Ft(++)g Fp (Msg\(SenderFile\(SenderHi+1\),)272 672 y Ff(\(SenderHi+1\))g(mo)q(d)g (\(2)p Fq(\003)p Ff(WinSize\))p Fp(\))68 722 y(SenderHi)g(:=)f (SenderHi+1)0 772 y Fh(elseif)j Fp(Time)n(out)e Fh(then)68 821 y Fp(R)n(e)n(c)n(eiverQueue)g(:=)136 871 y(R)n(e)n(c)n(eiverQueue)g Ft(++)g Fp(Msg\(SenderFile\(SenderL)n(o\),)585 921 y Ff(SenderLo)i(mo)q(d)d(\(2)p Fq(\003)p Ff(WinSize\))p Fp(\))0 971 y Fh(endif)0 1070 y Fe(Rule:)19 b(Pro)q(cessAck)0 1120 y Fh(if)e Fp(De\014ne)n(d\(SenderInMsg\))g Fh(then)68 1170 y(if)f Fp(SenderL)n(o)g Fq(\024)f Ff(SenderNum\(SenderInMsg\))h Fq(\024)g Fp(SenderHi)f Fh(then)136 1220 y Fp(R)n(e)n(c)n(eive)n(dA)n (ck\()p Ff(SenderNum\(SenderInMsg\))p Fp(\))h(:=)f(true)68 1270 y Fh(endif)68 1320 y Fp(Cle)n(ar\(SenderInMsg\))0 1369 y Fh(endif)0 1469 y Fe(Rule:)k(SlideSenderWin)0 1519 y Fh(if)e Fp(R)n(e)n(c)n(eive)n(dA)n(ck\(SenderL)n(o\))e Fh(then)i Fp(SenderL)n(o)f(:=)e(SenderL)n(o)i(+)e(1)h Fh(endif)p 98 1569 1755 3 v 0 1618 a Ff(Mo)q(dule:)20 b(Receiver)0 1668 y Fe(Rule:)f(AcceptMessage)0 1718 y Fh(if)e Fp(De\014ne)n(d\(R)n(e)n(c)n(eiverInMsg\))f Fh(and)136 1768 y Fp(R)n(e)n(c)n(eiverL)n(o)e Fq(\024)i Ff (ReceiverNum\(ReceiverInMsg\))e Fq(\024)h Fp(R)n(e)n(c)n(eiverHi)f Fh(then)68 1818 y Fp(SenderQueue)i(:=)e(SenderQueue)i Ft(++)g Fp(Msg\(Nul)r(l,Num\(R)n(e)n(c)n(eiverInMsg\)\))68 1867 y(R)n(e)n(c)n(eiverFile\()p Ff(ReceiverNum\(ReceiverInMsg\))p Fp(\))d(:=)i(Data\(R)n(e)n(c)n(eiverInMsg\))68 1917 y(Cle)n(ar\(R)n(e)n (c)n(eiverInMsg\))0 1967 y Fh(endif)0 2067 y Fe(Rule:)k (SlideReceiverWin)0 2117 y Fh(if)e Fp(De\014ne)n(d\(R)n(e)n(c)n (eiverInMsg\))f Fh(and)136 2166 y Ff(ReceiverNum\(ReceiverInMsg\))e Fo(>)h Fp(R)n(e)n(c)n(eiverHi)f Fh(then)68 2216 y Fp(R)n(e)n(c)n (eiverHi)g(:=)g Ff(ReceiverNum\(ReceiverInMsg\))68 2266 y Fp(R)n(e)n(c)n(eiverL)n(o)g(:=)h(Max\(0,)p Ff (ReceiverNum\(ReceiverInMsg\))g Fq(\000)g Fp(WinSize)h(+)e(1\))0 2316 y Fh(endif)p 0 2388 1950 3 v 575 2521 a Ft(Figure)g(10:)k(Revised) c(sliding)e(windo)o(w)h(mo)q(dules.)p eop %%Page: 19 19 19 18 bop 0 50 a Fk(5.3)41 b(Pro)q(of)13 b(of)h(Correctness)1444 b Ft(19)0 195 y Fs(Lemma)15 b(17)21 b Fp(In)11 b(any)g(r)n(e)n(achable) g(state,)g(for)f(any)h(message)g Fo(\026)g Fp(which)f(exists)h(in)f (SenderInMsg)i(or)f(SenderQueue,)h(Num\()p Fo(\026)p Fp(\))0 245 y Fq(\024)j Fp(R)n(e)n(c)n(eiverHi.)0 340 y Fs(Pro)q(of.)d Ft(By)h(induction.)18 b(Initially)m(,)10 b Fp(SenderInMsg)18 b Ft(and)13 b Fp(SenderQueue)k Ft(con)o(tain)12 b(no)h(messages.)18 b(W)m(e)13 b(consider)g(all)f(mo)o(v)o(es)0 390 y(that)i(a\013ect)h(functions)f(presen)o(t)h(in)f(the)g(in)o(v)n (arian)o(t.)62 441 y Fc(AcceptMessage)h Ft(app)q(ends)e(a)f(new)g (message)g(to)g Fp(SenderQueue)s Ft(;)i(the)f(rule)f(assures)i(that)e (the)h(n)o(um)o(b)q(er)f(of)f(the)i(message)0 491 y(is)h(b)q(ounded)g (ab)q(o)o(v)o(e)g(b)o(y)g Fp(R)n(e)n(c)n(eiverHi)t Ft(.)62 542 y Fc(SlideReceiverWin)j Ft(incremen)o(ts)d Fp(R)n(e)n(c)n(eiverHi)t Ft(,)f(main)o(taining)e(the)j(in)o(v)n(arian)o(t.)62 592 y Fc(Pro)q(cessAck)p Ft(,)h Fc(SenderLoseMessage)p Ft(,)i(and)d Fc(SenderCommunicate)i Ft(transfer)f(messages)f(b)q(et)o (w)o(een)i(or)e(remo)o(v)o(e)g(messages)0 642 y(from)e Fp(SenderInMsg)19 b Ft(and)14 b Fp(SenderQueue)s Ft(,)g(whic)o(h)g(do)q (es)h(not)e(a\013ect)i(the)g(in)o(v)n(arian)o(t.)h Fb(2)0 738 y Fs(Lemma)f(18)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e(state,)h(R) n(e)n(c)n(eive)n(dA)n(ck\(x\))g Fq(!)f Fp(R)n(e)n(c)n(eiverHi)g Fq(\025)h Fp(x.)0 834 y Fs(Pro)q(of.)d Ft(By)i(induction.)j(Initially)m (,)10 b Fp(R)n(e)n(c)n(eive)n(dA)n(ck\(x\))15 b(=)f(false)i Ft(for)c(all)g Fp(x)5 b Ft(.)18 b(W)m(e)13 b(consider)h(all)e(mo)o(v)o (es)g(that)h(a\013ect)h(functions)0 884 y(presen)o(t)h(in)f(the)g(in)o (v)n(arian)o(t.)62 934 y Fc(Pro)q(cessAck)j Ft(sets)g Fp(R)n(e)n(c)n(eive)n(dA)n(ck\(Num\(SenderInMsg\)\))g(:=)g(true)s Ft(.)23 b(By)16 b(Lemma)d(17,)i(w)o(e)h(kno)o(w)f(that)h Fp(Num\(Sender-)0 984 y(InMsg\))f Fq(\024)h Fp(R)n(e)n(c)n(eiverHi)t Ft(,)c(so)i(the)h(in)o(v)n(arian)o(t)d(is)i(main)o(tained.)62 1035 y Fc(SlideReceiverWin)j Ft(incremen)o(ts)d Fp(R)n(e)n(c)n(eiverHi) t Ft(,)f(main)o(taining)e(the)j(in)o(v)n(arian)o(t.)j Fb(2)0 1131 y Fs(Lemma)e(19)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e (state,)h(SenderL)n(o)g Fq(\000)g Fp(R)n(e)n(c)n(eiverHi)f Fq(\024)i Fp(1.)0 1227 y Fs(Pro)q(of.)d Ft(By)h(induction.)k(Initially) m(,)11 b Fp(SenderL)n(o)k Fq(\000)g Fp(R)n(e)n(c)n(eiverHi)f(=)h(0)g Fq(\000)g Fp(\()p Fq(\000)p Fp(1\))g(=)g(1)6 b Ft(.)18 b(W)m(e)13 b(consider)i(all)e(mo)o(v)o(es)f(that)i(a\013ect)0 1277 y(functions)g(presen)o(t)h(in)f(the)g(in)o(v)n(arian)o(t.)62 1327 y Fc(SlideSenderWin)19 b Ft(incremen)o(ts)d Fp(SenderL)n(o)s Ft(.)24 b(The)16 b(rule)g(implies)e(that)i Fp(R)n(e)n(c)n(eive)n(dA)n (ck\(SenderL)n(o\))i Ft(is)d(true;)i(b)o(y)f(Lemma)0 1377 y(18,)d(w)o(e)h(kno)o(w)f(that)h Fp(SenderL)n(o)i Fq(\000)f Fp(R)n(e)n(c)n(eiverHi)f Fq(\024)h Fp(0)6 b Ft(.)18 b(Incremen)o(ting)c Fp(SenderL)n(o)j Ft(then)d(giv)o(es)g(us)g (the)h(desired)g(result.)62 1428 y Fc(SlideSenderWin)j Ft(incremen)o(ts)c Fp(R)n(e)n(c)n(eiverHi)t Ft(,)e(main)o(taining)f (the)j(in)o(v)n(arian)o(t.)j Fb(2)0 1524 y Fs(Lemma)e(20)21 b Fp(In)15 b(any)g(r)n(e)n(achable)g(state,)f(SenderHi)h Fq(\000)g Fp(R)n(e)n(c)n(eiverL)n(o)f Fq(\024)h Fp(2)g Fq(\003)g Fp(WinSize)g Fq(\000)g Fp(1.)k(That)c(is,)f(ther)n(e)g(ar)n (e)g(at)h(most)0 1574 y Ft(2)9 b Fq(\003)g Fo(W)d(inS)r(iz)r(e)17 b Fp(messages)e(b)n(etwe)n(en)g(the)f(b)n(ottom)h(of)g(the)g(r)n(e)n(c) n(eiver's)e(window)i(and)h(the)f(top)g(of)f(the)h(sender's)g(window.)0 1670 y Fs(Pro)q(of.)e Ft(Immediate)e(from)i(Lemmas)e(9)j(and)f(19.)18 b Fb(2)0 1766 y Fs(Theorem)d(8)20 b Fp(In)c(any)f(r)n(e)n(achable)g (state,)f(for)h(any)g(message)g Fo(\026)p Fp(,)g(SenderNum\()p Fo(\026)p Fp(\))g(=)g(R)n(e)n(c)n(eiverNum\()p Fo(\026)p Fp(\).)0 1861 y Fs(Pro)q(of.)i Ft(By)i(the)g(de\014nitions)f(of)g Fp(SenderNum)k Ft(and)c Fp(R)n(e)n(c)n(eiverNum)s Ft(,)h(w)o(e)g(kno)o (w)f(that)g Fp(SenderNum\()p Fo(\026)p Fp(\))i Ft(and)f Fp(R)n(e)n(c)n(eiver-)0 1911 y(Num\()p Fo(\026)p Fp(\))c Ft(are)g(congruen)o(t)f(mo)q(dulo)e(2)d Fq(\003)g Fo(W)d(inS)r(iz)r(e)p Ft(.)20 b(The)14 b(de\014nitions)g(also)f(tell)h(us)g(that)g(the)h (follo)o(wing)c(are)j(in)o(v)n(arian)o(ts:)368 2016 y Fo(Receiv)q(er)q(Lo)f Fq(\024)f Fo(Receiv)q(er)q(N)5 b(um)p Ft(\()p Fo(\026)p Ft(\))14 b Fq(\024)e Fo(Receiv)q(er)q(Lo)f Ft(+)e(2)g Fq(\003)g Fo(W)d(inS)r(iz)r(e)11 b Fq(\000)f Ft(1)p Fo(;)410 2112 y(S)r(ender)q(H)s(i)g Fq(\000)g Ft(2)f Fq(\003)g Fo(W)d(inS)r(iz)r(e)11 b Ft(+)e(1)j Fq(\024)g Fo(S)r(ender)q(N)5 b(um)p Ft(\()p Fo(\026)p Ft(\))12 b Fq(\024)g Fo(S)r(ender)q(H)s(i:)62 2191 y Ft(If)i Fp(SenderNum\()p Fo(\026)p Fp(\))i Fq(6)p Ft(=)g Fp(R)n(e)n(c)n(eiverNum\()p Fo(\026)p Fp(\))r Ft(,)d(w)o(e)h(m)o(ust)f (ha)o(v)o(e)i Fp(SenderNum\()p Fo(\026)p Fp(\))g(=)h(R)n(e)n(c)n (eiverNum\()p Fo(\026)p Fp(\))e(+)h(d)t Ft(,)g(where)g Fp(d)k Ft(is)0 2241 y(some)12 b(non-zero)h(m)o(ultiple)d(of)h(2)6 b Fq(\003)g Fo(W)g(inS)r(iz)r(e)p Ft(.)20 b(If)12 b Fp(d)17 b Ft(is)12 b(p)q(ositiv)o(e,)g(w)o(e)h(ha)o(v)o(e)f Fp(R)n(e)n(c)n (eiverL)n(o)h Fq(\024)h Fp(SenderNum)g(+)g(d)f Fq(\024)h Fp(SenderHi)t Ft(,)0 2290 y(whic)o(h)e(implies)d(that)j Fp(SenderHi)h Fq(\000)g Fp(R)n(e)n(c)n(eiverL)n(o)f Fq(\025)h Fp(2)p Fq(\003)p Fp(WinSize)s Ft(,)g(con)o(tradicting)e(Lemma)e(20.)17 b(If)11 b Fp(d)16 b Ft(is)c(negativ)o(e,)f(a)g(similar)0 2340 y(argumen)o(t)i(also)g(creates)j(a)d(con)o(tradiction.)18 b Fb(2)0 2454 y Fs(Remark.)41 b Ft(It)16 b(turns)h(out)f(that)g(2)10 b Fq(\003)h Fo(W)6 b(inS)r(iz)r(e)18 b Ft(message)d(n)o(um)o(b)q(ers)h (are)g(not)g(only)f(su\016cien)o(t)i(for)e(the)i(sliding)e(windo)o(w)0 2503 y(proto)q(col,)d(but)g(also)f(necessary)j([W)m(al)n(].)j(Supp)q (ose)12 b(that)g(b)q(oth)g(agen)o(ts)h(are)f(using)g(only)f Fp(2)p Fq(\003)p Fp(WinSize)i(-)g(1)18 b Ft(message)11 b(n)o(um)o(b)q(ers)0 2553 y(and)16 b(consider)h(the)f(follo)o(wing)e (run.)25 b(The)16 b(sender)i(sends)f Fp(WinSize)j Ft(messages)c(to)g (the)h(receiv)o(er,)g(n)o(um)o(b)q(ered)f Fp(0)22 b Ft(through)0 2603 y Fp(WinSize)c Fq(\000)f Fp(1)6 b Ft(.)26 b(The)17 b(receiv)o(er)h(receiv)o(es)g(all)d(of)h(the)h(messages)f(and)h(sends)g (ac)o(kno)o(wledgmen)o(ts)e(n)o(um)o(b)q(ered)i Fp(0)22 b Ft(through)0 2653 y Fp(WinSize)16 b Fq(\000)f Fp(1)k Ft(to)14 b(the)h(sender.)62 2704 y(The)d(next)f(message)g(the)h(receiv) o(er)g(receiv)o(es)h(has)e(a)g(message)f(n)o(um)o(b)q(ered)h Fp(0)6 b Ft(.)17 b(What)11 b(should)g(he)g(do)g(with)g(this)g(message?) p eop %%Page: 20 20 20 19 bop 0 50 a Ft(20)786 b Fk(6.)41 b(AL)m(TERNA)m(TING)13 b(BIT)h(KERMIT:)g(THE)g(SESSION)g(LA)m(YER)62 195 y Fq(\017)21 b Ft(If)13 b(the)h(sender)h(receiv)o(ed)f(all)e(of)h(the)h(receiv)o (er's)h(ac)o(kno)o(wledgmen)o(ts,)d(the)h(sender)i(w)o(ould)e(ha)o(v)o (e)g(mo)o(v)o(ed)f(her)i(windo)o(w)104 245 y(forw)o(ard)e(b)o(y)h Fp(WinSize)s Ft(,)g(th)o(us)h(enabling)e(her)i(to)e(send)i(messages)f (n)o(um)o(b)q(ered)g Fp(WinSize)k Ft(through)c(2)7 b Fq(\003)g Fo(W)f(inS)r(iz)r(e)j Fq(\000)f Ft(1.)104 295 y(In)14 b(that)g(case,)h(the)g(message)f(n)o(um)o(b)q(ered)g(2)9 b Fq(\003)g Fo(W)d(inS)r(iz)r(e)11 b Fq(\000)f Ft(1)k(w)o(ould)f(ha)o (v)o(e)h(arriv)o(ed)g(at)h(the)f(receiv)o(er)i(as)e(message)g(0)104 345 y(\(since)h(w)o(e)f(are)g(coun)o(ting)g(mo)q(dulo)d(2)e Fq(\003)g Fo(W)d(inS)r(iz)r(e)11 b Fq(\000)f Ft(1\),)j(and)h(this)g (message)f(should)h(b)q(e)g(accepted)i(and)e(stored.)62 444 y Fq(\017)21 b Ft(If)11 b(the)h(sender)i(didn't)d(receiv)o(e)i(the) f(receiv)o(er's)h(ac)o(kno)o(wledgmen)o(t)d(for)i(message)f Fp(0)6 b Ft(,)12 b(the)g(sender)h(w)o(ould)e(ha)o(v)o(e)h(re-sen)o(t) 104 494 y(her)i(message)g Fp(0)6 b Ft(.)18 b(In)c(that)g(case,)g(this)g (message)g(should)f(b)q(e)i(ac)o(kno)o(wledged,)e(but)h(not)g(stored.) 62 590 y(The)g(receiv)o(er)h(cannot)e(determine)g(whether)i(this)e (message)g(is)g(an)g(old,)f(re-transmitted)h(message)g(or)g(a)g(new)g (message)0 639 y(whic)o(h)h(should)f(b)q(e)i(stored.)k(Th)o(us,)14 b(at)f(least)h(2)9 b Fq(\003)g Fo(W)d(inS)r(iz)r(e)16 b Ft(message)e(n)o(um)o(b)q(ers)f(are)i(necessary)m(.)0 799 y Fr(6)67 b(Alternating)24 b(Bit)f(Kermit:)30 b(The)22 b(Session)h(La)n(y)n(er)0 897 y Ft(W)m(e)10 b(consider)i(Kermit,)e(as)h (sp)q(eci\014ed)i(b)o(y)d([DaC)o(],)h(at)f(three)i(di\013eren)o(t)g(la) o(y)o(ers)f(of)f(abstraction:)17 b(the)11 b(session,)h(transp)q(ort,)g (and)0 947 y(datalink)g(la)o(y)o(ers.)18 b(The)c(session)g(la)o(y)o(er) f(con)o(trols)h(sending)f(and)h(receiving)f(\014les;)h(the)g(net)o(w)o (ork)g(connection)g(is)f(assumed)g(to)0 997 y(b)q(e)h(reliable,)e (deliv)o(ering)h(messages)h(in)o(tact)f(and)g(in)g(the)h(prop)q(er)g (order.)19 b(The)13 b(task)h(of)f(the)h(transp)q(ort)g(la)o(y)o(er)f (is)g(to)g(pro)o(vide)0 1047 y(a)18 b(reliable)f(connection)i(ev)o(en)g (though)f(the)h(actual)e(connection)i(ma)o(y)d(lose)i(or)h(alter)f (messages)g(during)g(transmission.)0 1097 y(The)e(datalink)e(la)o(y)o (er)h(con)o(trols)h(message)f(represen)o(tation,)i(transforming)d (abstract)i(messages)g(in)o(to)e(strings)i(whic)o(h)g(can)0 1147 y(b)q(e)f(sen)o(t)f(through)g(t)o(ypical)f(comm)o(unication)e(net) o(w)o(orks.)62 1200 y(Kermit)16 b(also)g(uses)i(a)e(presen)o(tation)i (la)o(y)o(er,)e(whic)o(h)g(transforms)g(a)g(\014le)h(\(seen)h(here)g (as)e(a)h(\014nite)f(string)h(of)f(arbitrary)0 1250 y(length\))e(in)o (to)g(a)f(sequence)j(of)e(shorter)h(strings)g(whic)o(h)f(are)g(to)g(b)q (e)h(sen)o(t)g(through)f(the)g(net)o(w)o(ork.)19 b(These)c (transformations)0 1300 y(are)20 b(fairly)e(mec)o(hanical,)g(and)h(w)o (e)h(presen)o(t)g(without)f(commen)o(t)e(a)i(couple)h(of)e(static)i (functions)f(whic)o(h)g(p)q(erform)g(this)0 1350 y(transformation.)62 1404 y(The)g(names)f(giv)o(en)g(to)h(these)h(la)o(y)o(ers)e(are)h (similar)d(to)j(those)g(used)g(in)g(the)g(ISO)g(Op)q(en)g(Systems)g(In) o(terconnection)0 1454 y(Reference)g(Mo)q(del)d(\(or)h(OSI)g(mo)q (del\))f([T)m(an)o(].)26 b(Ho)o(w)o(ev)o(er,)18 b(since)f(Kermit)f(w)o (as)h(dev)o(elop)q(ed)h(b)q(efore)f(the)h(OSI)f(mo)q(del,)e(the)0 1504 y(la)o(y)o(er)e(names)h(do)f(not)h(alw)o(a)o(ys)f(ha)o(v)o(e)g (the)i(same)e(connotations.)62 1558 y(F)m(rom)h(the)j(session)g(la)o(y) o(er,)e(Kermit)g(is)h(driv)o(en)g(b)o(y)g(a)f(\014nite)h(state)h (automaton.)22 b(Tw)o(o)16 b(agen)o(ts)g(generate)h(and)f(accept)0 1607 y(strings)e(of)g(the)g(form)e Fo(S)r Ft(\()p Fo(F)6 b(D)462 1592 y Fd(\003)482 1607 y Fo(Z)s Ft(\))529 1592 y Fd(\003)549 1607 y Fo(B)r Ft(,)14 b(where)h(eac)o(h)f(letter)h (represen)o(ts)i(a)c(di\013eren)o(t)i(t)o(yp)q(e)f(of)g(message)f(b)q (eing)h(sen)o(t:)62 1703 y Fq(\017)21 b Fo(S)16 b Ft(represen)o(ts)h (the)e Fp(start)i Ft(of)c(a)g(comm)o(unications)e(session.)62 1803 y Fq(\017)21 b Fo(B)16 b Ft(represen)o(ts)h(the)d(end)h(\(or)f Fp(br)n(e)n(ak)t Ft(\))g(of)f(a)h(comm)o(unicati)o(ons)e(session.)62 1902 y Fq(\017)21 b Fo(F)e Ft(represen)o(ts)e(the)d(name)f(of)g(a)h Fp(\014le)s Ft(.)62 2002 y Fq(\017)21 b Fo(Z)14 b Ft(represen)o(ts)g (the)e(end)g(of)f(a)g(\014le.)17 b(\(Most)11 b(lik)o(ely)f(the)i Fo(Z)j Ft(is)c(due)h(to)f(the)h(widespread)g(use)g(of)e(the)i(con)o (trol-Z)g(c)o(haracter)104 2052 y(as)e(an)f(end-of-\014le)g(mark)o(er)g (in)g(man)o(y)f(op)q(erating)i(systems.)17 b(Alternativ)o(ely)m(,)9 b(the)h(last)g(letter)g(of)f(the)i(English)e(alphab)q(et)104 2102 y(ma)o(y)j(b)q(e)i(appropriate)g(to)g(signal)f(the)h(last)g(datum) e(of)i(a)f(\014le.\))62 2201 y Fq(\017)21 b Fo(D)15 b Ft(represen)o(ts)i Fp(data)s Ft(.)62 2297 y(A)i(few)h(other)f(message)g (t)o(yp)q(es)h(are)g(used:)29 b Fo(Y)g Ft(indicates)19 b(a)g(p)q(ositiv)o(e)g(ac)o(kno)o(wledgmen)o(t)e(\(\\)p Fp(yes)s Ft("\),)k Fo(N)j Ft(indicates)19 b(a)0 2347 y(negativ)o(e)14 b(ac)o(kno)o(wledgmen)o(t)e(\(\\)p Fp(no)s Ft("\),)h(and)h Fo(E)i Ft(indicates)e(the)h(o)q(ccurrence)h(of)e(an)f (unreco)o(v)o(erable)i Fp(err)n(or)t Ft(.)62 2401 y(The)e(\014nite)g (state)g(automata)e(used)i(b)o(y)g(the)g(sender)h(and)e(receiv)o(er)j (agen)o(ts)d(are)h(sho)o(wn)g(in)f(Fig.)g(11.)17 b(The)c(lab)q(els)f (on)g(the)0 2450 y(transitions)h(should)g(b)q(e)g(read)h(in)e(this)h (manner:)k(if)12 b(an)h(arc)g(from)f(state)h Fp(S)19 b Ft(to)12 b(state)i Fp(T)k Ft(is)13 b(lab)q(eled)g Fp(A/B)t Ft(,)g(then)h(in)e(state)i Fp(S)5 b Ft(,)0 2500 y(if)13 b(the)i(agen)o(t)e(receiv)o(es)j(a)e(message)f(lab)q(eled)h Fp(A)p Ft(,)f(the)i(agen)o(t)f(ma)o(y)d(send)k(a)f(message)f(lab)q (eled)h Fp(B)19 b Ft(and)13 b(en)o(ter)i(state)g Fp(T)6 b Ft(.)62 2554 y(Most)17 b(of)e(the)i(names)e(of)h(the)h(states)g(used) g(in)f(the)h(automata)d(are)j(used)g(in)e(the)i(original)e(sp)q (eci\014cation)h([DaC)o(])g(and)0 2604 y(ma)o(y)e(b)q(e)i(read)h(as)f (follo)o(ws:)k Fp(ssini)g Ft(is)c(the)g(sender's)i(initial)c(state,)i Fp(ss\014l)21 b Ft(is)15 b(the)i(sender's)g(state)g(for)e(receiving)i (new)f(\014les,)0 2654 y Fp(ssdat)k Ft(is)15 b(the)h(sender's)h(state)f (for)f(receiving)h(data,)f(and)h Fp(sse)n(ot)j Ft(is)c(the)h(sender's)h (state)g(for)e(ending)g(a)g(transaction.)24 b(The)0 2704 y(states)15 b(of)e(the)i(receiv)o(er's)g(automaton)d(are)i(similar.)p eop %%Page: 21 21 21 20 bop 0 50 a Fk(6.1)41 b(F)m(unction)13 b(Descriptions)1417 b Ft(21)0 154 y 20511477 6358555 7433338 34206515 30325391 41508290 startTexFig 0 154 a %%BeginDocument: kermpic.ps /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 52 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/minus/period/slash /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica reencodeISO def /Helvetica-Oblique reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l w add b translate w neg h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def %I Idraw 10 Grid 9.02247 9.02247 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.78544 0 0 0.78544 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.399555 0 0 0.718709 320.362 393.836 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -3.50061 96 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 0 -2 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 131.5 -249 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 183 366 ] concat %I [ (SRINI) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -0.5 1 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 264.5 -252 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 315 363 ] concat %I [ (SRFIL) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 0 2 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 398.5 -253 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 445 362 ] concat %I [ (SRDAT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 264 -178 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 311 437 ] concat %I [ (ERROR) ] Text End End %I eop Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -0 130 ] concat %I 3 236 219 267 202 298 219 3 BSpl %I 1 End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -0 130 ] concat %I 3 372 222 402 256 427 233 3 BSpl %I 1 End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -0 130 ] concat %I 3 433 221 397 203 371 220 3 BSpl %I 1 End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -0 130 ] concat %I 3 214 253 233 307 294 302 3 BSpl %I 1 End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -0 130 ] concat %I 3 337 254 352 266 336 279 3 BSpl %I 1 End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -0 130 ] concat %I 3 470 256 464 316 372 306 3 BSpl %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 246 336 ] concat %I [ (S/Y) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 385 394 ] concat %I [ (F/Y) ] Text End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -0 130 ] concat %I 5 507 226 525 203 544 227 526 250 507 231 5 BSpl %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 550 374 ] concat %I [ (D/Y) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 389 338 ] concat %I [ (Z/Y) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 470 296 ] concat %I [ (B/Y) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 219 448 ] concat %I [ (E/E) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 311 401 ] concat %I [ (E/E) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 463 458 ] concat %I [ (E/E) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 288.5 -199 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 261.5 -54.9999 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 312 560 ] concat %I [ (DONE) ] Text End End %I eop Begin %I BSpl %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -142 166 ] concat %I 4 476 169 516 140 700 136 762 166 4 BSpl %I 1 End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.912805 -0 -0 0.965001 -89.521 171.935 ] concat %I 259 113 830 311 Rect End End %I eop Begin %I BSpl %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -142 166 ] concat %I 3 289 285 294 303 300 290 3 BSpl %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-o-normal-*-14-*-*-*-*-*-*-* Helvetica-Oblique 14 SetF %I t [ 1 0 0 1 558 563 ] concat %I [ (Receiver) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.828244 0 0 0.742105 25.0701 207.133 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.504854 0 0 1.00885 73.0018 11.8849 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 269.5 52 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 320 667 ] concat %I [ (SSFIL) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.504854 0 0 1.00885 73.2542 9.86722 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 375.5 54 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 422 669 ] concat %I [ (SSDAT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.504854 0 0 1.00885 256.516 8.85837 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 166 51 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 213 666 ] concat %I [ (SSEOT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.504854 0 0 1.00885 73.2542 10.8761 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 269 147 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 316 762 ] concat %I [ (ERROR) ] Text End End %I eop Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.504854 0 0 1.00885 73.2542 142.027 ] concat %I 3 374 545 390 568 409 543 3 BSpl %I 1 End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.504854 0 0 1.00885 73.2542 142.027 ] concat %I 3 412 525 392 503 375 524 3 BSpl %I 1 End Begin %I BSpl %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.504854 0 0 1.00885 73.2542 142.027 ] concat %I 3 301 538 285 571 271 539 3 BSpl %I 1 End Begin %I BSpl %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.504854 0 0 1.00885 73.2542 142.027 ] concat %I 3 338 559 349 586 338 602 3 BSpl %I 1 End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.504854 0 0 1.00885 73.2542 142.027 ] concat %I 3 446 559 442 624 379 629 3 BSpl %I 1 End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.504854 0 0 1.00885 73.2542 142.027 ] concat %I 5 477 519 493 506 513 522 494 545 484 534 5 BSpl %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 0.504854 0 0 1.00885 211.584 725.142 ] concat %I [ (\(\)/S) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 0.504854 0 0 1.00885 266.109 726.151 ] concat %I [ (Y/F) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 0.504854 0 0 1.00885 333.759 687.814 ] concat %I [ (Y/D) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 0.504854 0 0 1.00885 267.118 650.487 ] concat %I [ (Y/Z) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 0.504854 0 0 1.00885 327.021 645.204 ] concat %I [ (Y/B) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 0.504854 0 0 1.00885 380.206 727.159 ] concat %I [ (Y/\(\)) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 0.504854 0 0 1.00885 234.303 740.274 ] concat %I [ (E/E) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 0.504854 0 0 1.00885 295.895 770.54 ] concat %I [ (E/E) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.504854 0 0 1.00885 207.798 200.54 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 261.5 -54.9999 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 312 560 ] concat %I [ (DONE) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.504854 0 0 1.00885 146.963 11.8849 ] concat Begin %I Elli %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 16.5 52 ] concat %I 70 610 38 24 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-* Helvetica 14 SetF %I t [ 1 0 0 1 68 667 ] concat %I [ (SSINI) ] Text End End %I eop Begin %I BSpl %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.504854 0 0 1.00885 1.56492 178.345 ] concat %I 3 305 500 323 519 337 498 3 BSpl %I 1 End Begin %I BSpl %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.504854 0 0 1.00885 1.56492 178.345 ] concat %I 3 742 519 728 536 741 553 3 BSpl %I 1 End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.483301 0 0 0.818482 13.0559 280.976 ] concat %I 275 409 812 638 Rect End Begin %I BSpl %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.504854 0 0 1.00885 127.779 182.381 ] concat %I 3 465 508 420 594 276 589 3 BSpl %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-o-normal-*-14-*-*-*-*-*-*-* Helvetica-Oblique 14 SetF %I t [ 0.504854 0 0 1.00885 156.05 793.903 ] concat %I [ (Sender) ] Text End Begin %I BSpl %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 -0 -0 1 -85 96 ] concat %I 4 329 558 356 527 446 527 459 554 4 BSpl %I 1 End End %I eop End %I eop showpage end %%EndDocument endTexFig 538 648 a Ft(Figure)14 b(11:)k(Kermit)13 b(session)i(la)o(y)o(er)e (\014nite)h(automata.)0 783 y Fg(6.1)56 b(F)-5 b(unction)19 b(Descriptions)0 863 y Ft(As)e(with)f(the)h(symmetric)e(ABP)m(,)h(eac)o (h)h(agen)o(t)f(participating)f(in)h(a)g(Kermit)g(\014le)g(transfer)i (has)e(b)q(oth)h(the)g(capabilit)o(y)e(of)0 912 y(sending)g(and)f (receiving.)21 b(Our)15 b(descriptions)g(assume)f(that)h(the)g (external)g(w)o(orld)f(\()p Fp(i.e.)20 b Ft(the)15 b(p)q(ersons)h (using)f(the)g(Kermit)0 962 y(program\))g(determine)g(whic)o(h)h(agen)o (t)g(will)f(act)h(as)g(the)h(sender)g(and)f(whic)o(h)g(as)g(the)h (receiv)o(er)g(for)f(a)g(giv)o(en)f(transmission)0 1012 y(session.)25 b(W)m(e)16 b(describ)q(e)h(a)f(single)f(mo)q(dule)g(whic) o(h)h(con)o(tains)f(the)i(rules)g(for)e(an)o(y)h(Kermit)f(agen)o(t,)h (as)g(w)o(ell)f(as)h(additional)0 1062 y(mo)q(dules)d(whic)o(h)h (describ)q(e)h(the)g(comm)o(unicati)o(ons)c(medium.)0 1178 y Fs(6.1.1)48 b(Common)15 b(F)l(unctions)0 1257 y Ft(The)j(states)h(of)e(the)h(\014nite)g(state)g(mac)o(hines)f(sho)o (wn)g(ab)q(o)o(v)o(e)g(are)h(represen)o(ted)j(b)o(y)c(a)g(univ)o(erse)i (of)e Fp(mo)n(des)s Ft(.)29 b(A)18 b(univ)o(erse)0 1307 y(of)e Fp(symb)n(ols)21 b Ft(con)o(tains)c(the)g(sym)o(b)q(ols)f(\\)p Fo(S)r Ft(",)h(\\)p Fo(F)6 b Ft(",)17 b Fp(etc.)27 b Ft(that)17 b(are)h(transmitted)e(b)q(et)o(w)o(een)i(agen)o(ts)g(as)f (describ)q(ed)i(ab)q(o)o(v)o(e.)0 1357 y(These)14 b(sym)o(b)q(ols)e (are)h(used)h(in)e(messages)h(whic)o(h)g(con)o(tain)f(other)i(textual)f (data;)f(this)h(leads)g(us)g(to)g(univ)o(erses)h(of)f Fp(messages)0 1407 y Ft(and)i Fp(strings)s Ft(.)23 b(W)m(e)15 b(use)h(the)g(univ)o(erse)g(of)f Fp(inte)n(gers)j Ft(to)d(coun)o(t)h (\014les.)23 b(Finally)m(,)13 b(to)i(distinguish)g(b)q(et)o(w)o(een)i (the)f(sender)h(and)0 1456 y(receiv)o(er,)e(w)o(e)f(use)h(a)e(univ)o (erse)i(of)e Fp(ids)s Ft(.)62 1508 y(Messages)20 b(are)f(comp)q(osed)f (of)g(a)g(sym)o(b)q(ol)e(\(the)k(t)o(yp)q(e)e(of)g(the)h(message\))f (and)h(a)f(string)g(\(the)h(data)f(con)o(ten)o(t)i(of)d(the)0 1557 y(message\).)30 b(W)m(e)17 b(th)o(us)h(use)h(functions)f Fp(Msg:)26 b(symb)n(ols)18 b Fq(\002)h Fp(strings)f Fq(!)g Fp(messages)s Ft(,)h Fp(T)m(yp)n(e:)26 b(messages)19 b Fq(!)f Fp(symb)n(ols)s Ft(,)g(and)0 1607 y Fp(Data:)h(messages)14 b Fq(!)g Fp(strings)h Ft(in)e(the)g(usual)f(manner:)17 b(if)12 b Fp(Msg\(t,d\))i(=)g(m)s Ft(,)e(then)i Fp(T)m(yp)n(e\(m\))f(=) h(t)j Ft(and)12 b Fp(Data\(m\))j(=)e(d)t Ft(.)19 b(The)0 1657 y(function)14 b Fp(InMsg:)19 b(ids)c Fq(!)f Fp(messages)k Ft(indicates)c(the)g(curren)o(t)i(incoming)11 b(message)j(for)g(eac)o (h)g(agen)o(t.)62 1708 y(The)k(function)f Fp(Conc)n(at:)25 b(strings)18 b Fq(\002)g Fp(strings)f Fq(!)h Fp(strings)i Ft(is)d(the)h(usual)f(string)g(concatenation,)h(whic)o(h)g(w)o(e)f (denote)0 1758 y(with)d(the)g(in\014x)f(op)q(erator)i(+.)j(The)c (distinguished)g(elemen)o(t)g Fo(\017)p Fp(:)k(strings)f Ft(is)d(the)g(empt)o(y)f(string.)62 1810 y(F)m(or)f(historical)f (reasons,)i(the)g(data)f(transmitted)f(b)o(y)h(Kermit)f(is)h(usually)f (translated)i(at)f(the)g(presen)o(tation)h(la)o(y)o(er)f(in)o(to)0 1859 y(prin)o(table)k(ASCI)q(I)g(c)o(haracters)i(b)q(efore)f (transmission.)23 b(\(This)16 b(a)o(v)o(oids)f(the)i(transmission)d(of) i(non-prin)o(table)f(c)o(haracters)0 1909 y(whic)o(h)i(the)g(comm)o (unicatio)o(ns)e(medium)f(migh)o(t)g(in)o(terpret)k(as)f(commands.\))24 b(W)m(e)17 b(represen)o(t)i(this)d(enco)q(ding)h(b)o(y)g(a)f(pair)0 1959 y(of)f(functions)i Fp(Enc)n(o)n(dePr)n(e\014x:)23 b(strings)17 b Fq(\002)g Fp(strings)f Fq(!)g Fp(strings)j Ft(and)d Fp(R)n(emainder:)23 b(strings)16 b Fq(\002)i Fp(strings)e Fq(!)g Fp(strings)s Ft(.)25 b(The)0 2009 y(input)16 b(to)g(b)q(oth)g(of)f(these)j(functions)e(is)g(a)f(pair)h Fp(\(sour)n(c)n(e,)h(p)n(ar)n(ams\))r Ft(,)e(where)j Fp(sour)n(c)n(e)h Ft(is)c(the)i(string)f(to)g(b)q(e)h(enco)q(ded,)g (and)0 2059 y Fp(p)n(ar)n(ams)e Ft(is)c(a)g(string)g(con)o(taining)f(v) n(arious)h(enco)q(ding)h(parameters,)f(suc)o(h)h(as)g(the)g(maxim)n(um) 7 b(length)k(of)g(an)o(y)g(enco)q(ding,)g(the)0 2108 y(pre\014x)16 b(c)o(haracter)g(to)f(b)q(e)h(used)g(for)f(non-prin)o (table)f(c)o(haracters,)j(and)e(so)g(on.)22 b Fp(Enc)n(o)n(dePr)n (e\014x)17 b(\(sour)n(c)n(e,)f(p)n(ar)n(ams\))g Ft(returns)0 2158 y(the)e(enco)q(ding)g(of)e(an)h(initial)f(segmen)o(t)h(of)g Fp(sour)n(c)n(e)s Ft(;)g Fp(R)n(emainder)h(\(sour)n(c)n(e,)g(p)n(ar)n (ams\))h Ft(returns)g(the)f(segmen)o(t)f(of)g Fp(sour)n(c)n(e)j Ft(not)0 2208 y(translated)d(b)o(y)g Fp(Enc)n(o)n(dePr)n(e\014x)5 b Ft(.)19 b(A)12 b(function)h Fp(De)n(c)n(o)n(de:)19 b(strings)13 b Fq(\002)h Fp(strings)f Fq(!)h Fp(strings)h Ft(deco)q(des)g(an)o(y)d(input)h(string,)f(using)0 2258 y(a)i(similar)d(string)j(of)f(deco)q(ding)h(parameters.)62 2309 y(W)m(e)20 b(require)h(that)f(applying)f Fp(De)n(c)n(o)n(de)24 b Ft(to)c(an)g(enco)q(ded)i(datum)d(with)h(the)h(same)e(parameter)h (string)g(used)h(in)f(its)0 2359 y(enco)q(ding)g(should)g(yield)f(the)i (original)d(datum;)j(that)f(is,)h(if)e Fp(De)n(c)n(o)n(de)j(\(Enc)n(o)n (de)f(\(sour)n(c)n(e,)g(p)n(ar)n(ams\)\))g(=)f(x)5 b Ft(,)21 b(then)g Fp(x)g Ft(+)0 2409 y Fp(R)n(emainder)c(\(sour)n(c)n (e,)g(p)n(ar)n(ams\))g(=)g(sour)n(c)n(e)s Ft(.)25 b(F)m(urther,)17 b(w)o(e)f(require)h(that)f(the)h(length)f(of)g Fp(R)n(emainder\(sour)n (c)n(e,)h(p)n(ar)n(ams\))0 2459 y Ft(should)d(b)q(e)g(less)h(than)f (the)g(length)g(of)f Fp(sour)n(c)n(e)k Ft(as)d(long)f(as)h Fp(sour)n(c)n(e)h Fq(6)p Ft(=)d Fo(\017)p Ft(.)0 2574 y Fs(6.1.2)48 b(Priv)m(ate)15 b(F)l(unctions)0 2654 y Ft(Eac)o(h)g(agen)o(t)f(has)h(a)f(priv)n(ate)h(function)f Fp(Mo)n(de:)21 b(mo)n(des)d Ft(whic)o(h)c(indicates)h(the)g(curren)o(t) h(state)g(of)e(its)g(\014nite)h(automata.)j(A)0 2704 y(priv)n(ate)c(function)g Fp(L)n(ayer:)20 b Fq(f)p Fp(session,)15 b(tr)n(ansp)n(ort)p Fq(g)f Ft(indicates)h(whether)g(con)o(trol)g(is)f (curren)o(tly)h(fo)q(cused)h(in)e(the)h(session)g(or)p eop %%Page: 22 22 22 21 bop 0 50 a Ft(22)786 b Fk(6.)41 b(AL)m(TERNA)m(TING)13 b(BIT)h(KERMIT:)g(THE)g(SESSION)g(LA)m(YER)0 195 y Ft(transp)q(ort)f (la)o(y)o(er.)k(Initially)m(,)10 b Fp(L)n(ayer)j(=)g(session)g Ft(for)f(b)q(oth)g(agen)o(ts.)18 b(As)13 b(in)e(the)i(symmetric)e(ABP)m (,)h(eac)o(h)h(agen)o(t)f(has)g(priv)n(ate)0 245 y(functions)i Fp(Me:)19 b(ids)e Ft(and)d Fp(Y)m(ou:)19 b(ids)s Ft(.)62 295 y(The)d(priv)n(ate)g(functions)f Fp(R)n(e)n(cvdT)m(yp)n(e:)23 b(symb)n(ols)c Ft(and)c Fp(R)n(e)n(cvdData:)23 b(strings)c Ft(indicate)c(the)i(t)o(yp)q(e)f(and)f(datum)f(of)h(the)0 345 y(last)d(message)g(receiv)o(ed)h(from)d(the)j(other)f(agen)o(t.)18 b(The)12 b(priv)n(ate)g(functions)g Fp(SendT)m(yp)n(e:)19 b(symb)n(ols)c Ft(and)d Fp(SendData:)20 b(strings)0 394 y Ft(indicate)g(the)g(t)o(yp)q(e)g(and)g(datum)e(of)i(the)g(next)g (message)g(to)f(b)q(e)i(sen)o(t)f(to)g(the)g(other)h(agen)o(t.)35 b(The)21 b(priv)n(ate)e(function)0 444 y Fp(T)m(r)n(ansp)n(ortCommand:) f Fq(f)p Fp(send,)d(r)n(e)n(c)n(eive)p Fq(g)e Ft(indicates)i(the)f (latest)g(command)d(giv)o(en)j(to)f(the)i(transp)q(ort)g(la)o(y)o(er.) 62 494 y(Kermit)i(allo)o(ws)f(for)h(more)g(than)g(one)h(\014le)f(to)g (b)q(e)i(sen)o(t)f(b)q(et)o(w)o(een)h(the)f(sender)h(and)e(the)h (receiv)o(er)h(in)e(a)g(single)g(com-)0 544 y(m)o(unications)f (session;)j(th)o(us,)f(w)o(e)g(need)g(to)g(store)g(the)g(list)f(of)g (\014les)h(b)q(eing)f(sen)o(t)h(and)g(receiv)o(ed,)h(as)e(w)o(ell)g(as) h(the)g(list)f(of)0 594 y(corresp)q(onding)c(\014le)g(names.)k(W)m(e)12 b(do)g(this)h(with)f(the)h(priv)n(ate)g(functions)f Fp(FileT)m(ext:)18 b(inte)n(gers)13 b Fq(!)g Fp(strings)i Ft(and)e Fp(FileName:)0 643 y(inte)n(gers)i Fq(!)g Fp(strings)s Ft(,)f(where)i(the)g(in)o (teger)f(argumen)o(t)e(to)i(eac)o(h)g(function)f(denotes)i(the)g(p)q (osition)e(within)g(the)h(list)f(of)g(the)0 693 y(appropriate)h(\014le) f(and)g(\014le)h(name.)j(The)d(priv)n(ate)g(function)f Fp(FileNo:)19 b(inte)n(gers)f Ft(indicates)c(whic)o(h)h(\014le)f(is)h (curren)o(tly)g(b)q(eing)0 743 y(sen)o(t;)d(the)g(priv)n(ate)e (function)h Fp(T)m(extT)m(oSend:)18 b(strings)13 b Ft(indicates)f (\(for)e(the)i(sender\))g(what)f(data)g(in)f(the)i(curren)o(t)g(\014le) f(remains)0 793 y(to)j(b)q(e)g(sen)o(t.)62 843 y(Finally)m(,)9 b(eac)o(h)h(agen)o(t)g(has)h(a)e(priv)n(ate)h(function)g Fp(MyPar)n(ams:)18 b(strings)12 b Ft(whic)o(h)e(pro)o(vides)h(lo)q(cal) e(parameters)h(used)h(during)0 892 y(the)j(initialization)e(of)h(the)h (transaction.)0 1007 y Fg(6.2)56 b(T)-5 b(ransition)18 b(Rules)0 1083 y Fs(6.2.1)48 b(Sending)13 b(Rules)0 1160 y Ft(The)20 b(sender)i(agen)o(t)e(b)q(egins)g(in)g(state)g Fp(ssini)k Ft(b)o(y)c(sending)g(an)g(\\)p Fo(S)r Ft(")g(to)g(the)g (receiv)o(er,)j(along)18 b(with)i(her)h(initialization)0 1210 y(parameters,)c(and)g(en)o(tering)g(state)h Fp(ss\014l)t Ft(.)27 b(The)17 b(transition)f(rule)h(for)g(this)g(state)g(is)g(sho)o (wn)g(in)f(Fig.)g(12.)26 b(Later)17 b(w)o(e)g(will)0 1260 y(presen)o(t)e(transition)f(rules)g(whic)o(h)g(p)q(erform)f(the)i (actual)e(transmission)g(of)g(data)h(implied)d(b)o(y)j Fp(TSEND)t Ft(.)p 0 1358 1950 3 v 319 1407 a Fe(Rule:)19 b(SSINI)319 1457 y Fh(if)e Fp(L)n(ayer)e(=)f(session)h Fh(and)i Fp(Mo)n(de)e(=)g(ssini)g Fh(then)101 b Fe(Abb)o(reviation:)19 b(GOTO\(x\))387 1507 y Fp(TSEND\(\\S",MyPar)n(ams\))408 b(Cle)n(ar\(R)n(e)n(cvdT)m(yp)n(e\))387 1557 y(GOTO\(ss\014l\))629 b(Mo)n(de)15 b(:=)g(x)319 1607 y Fh(endif)319 1706 y Fe(Abb)o(reviation:)20 b(TSEND\(t)o(yp)q(e,datum\))387 1756 y Fp(T)m(r)n(ansp)n(ortCommand)15 b(:=)f(send,)h(L)n(ayer)g(:=)f (tr)n(ansp)n(ort)387 1806 y(SendT)m(yp)n(e)i(:=)e(typ)n(e,)h(SendData)h (:=)f(datum)p 0 1878 V 600 2011 a Ft(Figure)f(12:)k(T)m(ransition)13 b(rule)h(for)f(state)i Fp(ssini)t Ft(.)62 2106 y(Automata)e(state)i Fp(ssini)j Ft(is)c(the)h(only)f(state)h(in)f(whic)o(h)g(an)g(agen)o(t)g (acts)h(without)f(\014rst)i(receiving)e(a)g(message.)19 b(Fig.)13 b(13)0 2156 y(presen)o(ts)h(a)e(transition)f(rule)h(whic)o(h) g(p)q(erforms)g(the)g(action)g(of)f(receiving)i(input)e(for)h(all)f (other)h(automata)e(states.)19 b(As)12 b(with)0 2205 y Fp(TSEND)t Ft(,)i(w)o(e)g(will)e(presen)o(t)k(transition)d(rules)i (whic)o(h)e(p)q(erform)g(this)h(action)g(later.)62 2255 y(In)19 b(automata)e(state)i Fp(ss\014l)t Ft(,)h(the)g(sender)g(can)f (either)h(b)q(egin)e(transmission)g(of)g(a)h(new)g(\014le)g(\(if)f(one) h(remains)f(to)g(b)q(e)0 2305 y(sen)o(t\))e(or)f(end)h(the)f (transaction.)22 b(T)m(o)14 b(b)q(egin)h(sending)g(a)g(\014le,)g(the)h (sender)g(sends)h(the)e(\014le)g(name)f(in)h(an)f(\\)p Fo(F)6 b Ft(")14 b(message)h(to)0 2355 y(the)g(receiv)o(er)g(and)g(mo)o (v)o(es)d(to)i(state)h Fp(ssdat)t Ft(,)f(initializing)e(the)j(lo)q(cal) e Fp(T)m(extT)m(oSend)19 b Ft(v)n(ariable)13 b(with)h(the)g(data)g(con) o(tained)g(in)0 2405 y(that)i(\014le.)24 b(T)m(o)15 b(end)h(the)h (transaction,)f(the)g(sender)i(sends)f(a)e(\\)p Fo(B)r Ft(")h(message)g(to)g(the)g(receiv)o(er.)25 b(The)17 b(transition)e(rule)h(for)0 2455 y(this)f(automata)e(state)j(is)g(sho)o (wn)f(in)g(Fig.)f(14.)21 b(\(Note)16 b(that)f(here)i(and)e(elsewhere,)i (\\)p Fs(ENDIF)p Ft(")e(abbreviates)h(a)f(series)i(of)0 2504 y(\\)p Fs(endif)p Ft("s\).)62 2554 y Fp(HANDLE-INITS)d Ft(is)c(an)f(abbreviation)f(for)h(a)g(set)i(of)e(transition)f(rules)i (whic)o(h)g(handles)f(the)h(initialization)d(parameters)0 2604 y(sen)o(t)16 b(b)q(et)o(w)o(een)h(agen)o(ts)e(\(whic)o(h)h(o)q (ccurs)h(only)d(on)h(the)h(\014rst)g(exc)o(hange)g(of)f(messages\).)22 b(See)16 b(10)f(for)g(a)g(fuller)g(explanation)0 2654 y(of)g Fp(HANDLE-INITS)5 b Ft(.)14 b Fp(EINF)o(O)19 b Ft(is)c(a)g(string)g(con)o(taining)f(information)e(needed)17 b(to)e(enco)q(de)h(text)g(prop)q(erly)g(in)e(order)i(to)0 2704 y(b)q(e)f(deco)q(ded)g(b)o(y)e(the)i(receiv)o(er.)p eop %%Page: 23 23 23 22 bop 0 50 a Fk(6.2)41 b(T)m(ransition)12 b(Rules)1514 b Ft(23)p 0 462 1950 3 v 330 512 a Fe(Rule:)19 b(GetInput)330 562 y Fh(if)e Fp(L)n(ayer)e(=)f(session)i Fh(and)g Fp(Unde\014ne)n (d\(R)n(e)n(cvdT)m(yp)n(e\))g Fh(and)h Fp(Mo)n(de)e Fq(6)p Ft(=)p Fp(ssini)g Fh(then)398 611 y Fp(L)n(ayer)g(:=)f(tr)n(ansp)n(ort) 398 661 y(T)m(r)n(ansp)n(ortCommand)h(:=)f(r)n(e)n(c)n(eive)330 711 y Fh(endif)p 0 783 V 559 916 a Ft(Figure)g(13:)k(T)m(ransition)13 b(rule)h(for)f(receiving)h(input.)p 0 1529 V 353 1579 a Fe(Rule:)k(SSFIL)353 1629 y Fh(if)e Fp(L)n(ayer)f(=)g(session)g Fh(and)h Fp(Mo)n(de)g(=)e(ss\014l)h Fh(and)h Fp(De\014ne)n(d\(R)n(e)n (cvdT)m(yp)n(e\))h Fh(then)421 1679 y(if)f Fp(R)n(e)n(cvdT)m(yp)n(e)f Fq(6)p Ft(=)p Fp(\\Y")h Fh(then)h Fp(ERR)o(OR)f Fh(endif)421 1729 y(if)g Fp(R)n(e)n(cvdT)m(yp)n(e)f(=)g(\\Y")g Fh(then)488 1779 y(if)i Fp(FileNo)d(=)h(0)g Fh(then)i Fp(HANDLE-INITS)e Fh(endif)488 1828 y(if)i Fp(De\014ne)n(d\(FileName\(FileNo\)\))e Fh(then)556 1878 y Fp(TSEND\(\\F",Enc)n(o)n(dePr)n (e\014x\(FileName\(FileNo\),EINF)o(O\)\))556 1928 y(T)m(extT)m(oSend)h (:=)e(FileT)m(ext\(FileNo\),)f(GOTO\(ssdat\))488 1978 y Fh(else)556 2028 y Fp(TSEND\(\\B",)p Fo(\017)p Fp(\),)j(GOTO\(sse)n (ot\))353 2077 y Fh(ENDIF)353 2177 y Fe(Abb)o(reviation:)j(ERROR)421 2227 y Fp(TSEND\(\\E",)c(\\Unexp)n(e)n(cte)n(d)h(Message"\),)g (GOTO\(err)n(or\))p 0 2299 V 608 2432 a Ft(Figure)e(14:)j(T)m (ransition)c(rule)h(for)g(state)g Fp(ss\014l)t Ft(.)p eop %%Page: 24 24 24 23 bop 0 50 a Ft(24)786 b Fk(6.)41 b(AL)m(TERNA)m(TING)13 b(BIT)h(KERMIT:)g(THE)g(SESSION)g(LA)m(YER)62 195 y Ft(In)e(automata)e (state)j Fp(ssdat)t Ft(,)e(the)i(sender)g(either)g(sends)g(the)f(next)h (segmen)o(t)e(of)h(the)g(\014le)g(b)q(eing)g(transmitted,)f(or)h (signals)0 245 y(the)i(end)h(of)e(transmission)f(of)h(this)h(\014le.)k (T)m(o)13 b(send)h(a)g(new)g(\014le)g(segmen)o(t,)f(the)h(sender)h (sends)g(the)g(text)f(in)f(a)h(\\)p Fo(D)q Ft(")f(message)0 295 y(to)j(the)g(receiv)o(er,)i(and)e(up)q(dates)h(the)g(lo)q(cal)e Fp(T)m(extT)m(oSend)20 b Ft(v)n(ariable)15 b(accordingly)m(.)24 b(T)m(o)15 b(end)h(transmission)f(of)h(a)f(\014le,)h(the)0 345 y(sender)f(sends)g(a)e(\\)p Fo(Z)s Ft(")g(message)h(to)f(the)h (receiv)o(er.)19 b(The)14 b(transition)f(rule)h(for)f(this)h(automata)d (state)k(is)e(sho)o(wn)h(in)f(Fig.)f(15.)p 0 455 1950 3 v 342 505 a Fe(Rule:)18 b(SSD)o(A)m(T)342 555 y Fh(if)e Fp(L)n(ayer)f(=)g(session)g Fh(and)h Fp(Mo)n(de)f(=)g(ssdat)g Fh(and)h Fp(De\014ne)n(d\(R)n(e)n(cvdT)m(yp)n(e\))h Fh(then)409 605 y(if)g Fp(R)n(e)n(cvdT)m(yp)n(e)e Fq(6)p Ft(=)p Fp(\\Y")h Fh(then)h Fp(ERR)o(OR)e Fh(endif)409 654 y(if)i Fp(R)n(e)n(cvdT)m(yp)n (e)e(=)g(\\Y")g Fh(then)477 704 y(if)i Fp(T)m(extT)m(oSend)e Fq(6)p Ft(=)p Fo(\017)g Fh(then)545 754 y Fp(TSEND\(\\D",Enc)n(o)n (dePr)n(e\014x\(T)m(extT)m(oSend,EINF)o(O\)\))545 804 y(T)m(extT)m(oSend)g(:=)g(R)n(emainder\(T)m(extT)m(oSend,EINF)o(O\))545 854 y(GOTO\(ssdat\))477 903 y Fh(else)545 953 y Fp(TSEND\(\\Z",)p Fo(\017)p Fp(\),)h(FileNo)e(:=)h(FileNo)f(+)h(1,)g(GOTO\(ss\014l\))342 1003 y Fh(ENDIF)p 0 1075 V 597 1208 a Ft(Figure)f(15:)j(T)m(ransition)c (rule)h(for)g(state)h Fp(ssdat)t Ft(.)62 1316 y(In)d(automata)d(state)j Fp(sse)n(ot)t Ft(,)f(the)h(sender)h(w)o(aits)e(for)f(an)i(ac)o(kno)o (wledgmen)o(t)d(of)i(its)g(last)g(message)g(to)g(the)h(receiv)o(er,)h (whic)o(h)0 1365 y(w)o(as)h(a)f(\\)p Fo(B)r Ft(")h(message.)j(Up)q(on)d (receipt,)h(the)f(sender)h(terminates.)j(The)c(transition)f(rule)h(for) f(this)h(state)h(is)e(sho)o(wn)h(in)f(Fig.)0 1415 y(16.)p 0 1518 V 344 1567 a Fe(Rule:)18 b(SSEOT)344 1617 y Fh(if)e Fp(L)n(ayer)f(=)g(session)g Fh(and)h Fp(Mo)n(de)g(=)e(sse)n(ot)h Fh(and)h Fp(De\014ne)n(d\(R)n(e)n(cvdT)m(yp)n(e\))h Fh(then)412 1667 y(if)f Fp(R)n(e)n(cvdT)m(yp)n(e)f(=)g(\\Y")g Fh(then)i Fp(GOTO\(done\))e Fh(endif)412 1717 y(if)h Fp(R)n(e)n(cvdT)m(yp)n(e)f Fq(6)p Ft(=)p Fp(\\Y")h Fh(then)h Fp(ERR)o(OR)e Fh(endif)344 1767 y(endif)p 0 1839 V 599 1971 a Ft(Figure)f(16:)j(T)m(ransition)c (rule)h(for)g(state)h Fp(sse)n(ot)t Ft(.)0 2163 y Fs(6.2.2)48 b(Receiv)o(er)14 b(Rules)0 2247 y Ft(The)g(receiv)o(er)i(agen)o(t)d (starts)i(in)e(a)h(state)g(with)g Fp(Mo)n(de)h(=)g(srini)t Ft(,)e(where)i(he)f(w)o(aits)f(for)h(the)g(initial)e(\\)p Fo(S)r Ft(")i(message)f(from)f(the)0 2297 y(sender.)19 b(After)13 b(receipt,)h(the)f(receiv)o(er)h(pro)q(cesses)h(the)e (sender's)h(initialization)c(parameters,)j(sends)g(his)g(o)o(wn)f (parameters)0 2347 y(to)h(the)h(sender)g(in)f(an)g(ac)o(kno)o(wledgmen) o(t)f(message)g(\(\\)p Fo(Y)e Ft("\),)i(and)h(mo)o(v)o(es)f(to)h(state) h Fp(sr\014l)j Ft(to)c(prepare)h(to)f(receiv)o(e)h(\014les.)19 b(The)0 2397 y(transition)13 b(rule)i(for)e(this)h(state)h(is)f(sho)o (wn)f(in)h(Fig.)f(17.)62 2450 y(In)i(automata)e(state)j Fp(sr\014l)t Ft(,)e(the)i(receiv)o(er)h(receiv)o(es)f(either)g(an)f(\\) p Fo(F)6 b Ft(")14 b(message)h(or)g(a)f(\\)p Fo(B)r Ft(")h(message)g (from)e(the)j(sender,)0 2500 y(indicating)c(whether)i(another)f(\014le) g(is)g(ab)q(out)f(to)h(b)q(e)h(sen)o(t.)k(The)13 b(receiv)o(er)i(mo)o (v)o(es)c(to)i(the)g(appropriate)g(state,)h(storing)e(an)o(y)0 2550 y(\014le)i(name)f(sen)o(t.)18 b(The)d(transition)e(rule)h(for)g (this)g(automata)e(state)i(is)g(sho)o(wn)g(in)f(Fig.)g(18.)62 2604 y(In)i(automata)e(state)j Fp(sr)n(dat)t Ft(,)f(the)g(receiv)o(er)i (either)f(stores)g(the)g(next)g(\014le)f(segmen)o(t)g(transmitted)f(in) h(a)g(\\)p Fo(D)q Ft(")g(message,)0 2654 y(or)f(ends)h(\014le)f (reception)i(when)f(a)e(\\)p Fo(Z)s Ft(")h(message)g(is)g(receiv)o(ed.) 21 b(The)14 b(transition)g(rule)h(for)e(this)i(automata)d(state)j(is)f (sho)o(wn)0 2704 y(in)f(Fig.)g(19.)p eop %%Page: 25 25 25 24 bop 0 50 a Fk(6.2)41 b(T)m(ransition)12 b(Rules)1514 b Ft(25)p 0 259 1950 3 v 345 309 a Fe(Rule:)19 b(SRINI)345 359 y Fh(if)e Fp(L)n(ayer)d(=)h(session)g Fh(and)h Fp(Mo)n(de)g(=)f (srini)f Fh(and)i Fp(De\014ne)n(d\(R)n(e)n(cvdT)m(yp)n(e\))g Fh(then)413 409 y(if)g Fp(R)n(e)n(cvdT)m(yp)n(e)g Fq(6)p Ft(=)p Fp(\\S")g Fh(then)h Fp(ERR)o(OR)e Fh(endif)413 458 y(if)h Fp(R)n(e)n(cvdT)m(yp)n(e)g(=)e(\\S")i Fh(then)481 508 y Fp(HANDLE-INITS,)e(TSEND\(\\Y",MyPar)n(ams\),)i(GOTO\(sr\014l\)) 345 558 y Fh(ENDIF)p 0 630 V 600 763 a Ft(Figure)e(17:)k(T)m(ransition) 12 b(rule)j(for)e(state)i Fp(srini)t Ft(.)p 0 971 V 352 1021 a Fe(Rule:)k(SRFIL)352 1070 y Fh(if)e Fp(L)n(ayer)e(=)f(session)i Fh(and)g Fp(Mo)n(de)f(=)g(sr\014l)f Fh(and)i Fp(De\014ne)n(d\(R)n(e)n (cvdT)m(yp)n(e\))h Fh(then)420 1120 y(if)g Fp(R)n(e)n(cvdT)m(yp)n(e)e Fq(6)p Ft(=)p Fp(\\F")h Fh(and)g Fp(R)n(e)n(cvdT)m(yp)n(e)g Fq(6)p Ft(=)p Fp(\\B")g Fh(then)g Fp(ERR)o(OR)g Fh(endif)420 1170 y(if)h Fp(R)n(e)n(cvdT)m(yp)n(e)e(=)g(\\F")g Fh(then)488 1220 y Fp(FileName\(FileNo\))f(:=)h(De)n(c)n(o)n(de\(R)n(e)n (cvdData,DINF)o(O\))488 1270 y(TSEND\(\\Y",)p Fo(\017)p Fp(\),)g(GOTO\(sr)n(dat\))420 1320 y Fh(endif)420 1369 y(if)i Fp(R)n(e)n(cvdT)m(yp)n(e)e(=)g(\\B")h Fh(then)488 1419 y Fp(TSEND\(\\Y",)p Fo(\017)p Fp(\),)f(GOTO\(done\))352 1469 y Fh(ENDIF)p 0 1541 V 599 1674 a Ft(Figure)f(18:)k(T)m(ransitions) 13 b(rule)h(for)g(state)g Fp(sr\014l)t Ft(.)p 0 1882 V 342 1932 a Fe(Rule:)19 b(SRD)o(A)m(T)342 1981 y Fh(if)e Fp(L)n(ayer)e(=)f(session)h Fh(and)i Fp(Mo)n(de)e(=)g(sr)n(dat)f Fh(and)j Fp(De\014ne)n(d\(R)n(e)n(cvdT)m(yp)n(e\))f Fh(then)410 2031 y(if)h Fp(R)n(e)n(cvdT)m(yp)n(e)e Fq(6)p Ft(=)p Fp(\\D")h Fh(and)g Fp(R)n(e)n(cvdT)m(yp)n(e)g Fq(6)p Ft(=)p Fp(\\Z")g Fh(then)h Fp(ERR)o(OR)e Fh(endif)410 2081 y(if)i Fp(R)n(e)n(cvdT)m(yp)n(e)e(=)g(\\D")h Fh(then)478 2131 y Fp(FileT)m(ext\(FileNo\))e(:=)546 2181 y(FileT)m(ext\(FileNo\))g (+)g(De)n(c)n(o)n(de\(R)n(e)n(cvdData,DINF)o(O\))478 2230 y(TSEND\(\\Y",)p Fo(\017)p Fp(\),)h(GOTO\(sr)n(dat\))410 2280 y Fh(endif)410 2330 y(if)i Fp(R)n(e)n(cvdT)m(yp)n(e)e(=)g(\\Z")h Fh(then)478 2380 y Fp(FileNo)f(:=)f(FileNo)g(+)h(1,)g(TSEND\(\\Y",)p Fo(\017)p Fp(\),)g(GOTO\(sr\014l\))342 2430 y Fh(ENDIF)p 0 2502 V 598 2634 a Ft(Figure)f(19:)j(T)m(ransition)c(rule)h(for)g (state)g Fp(sr)n(dat)t Ft(.)p eop %%Page: 26 26 26 25 bop 0 50 a Ft(26)786 b Fk(6.)41 b(AL)m(TERNA)m(TING)13 b(BIT)h(KERMIT:)g(THE)g(SESSION)g(LA)m(YER)0 195 y Fs(6.2.3)48 b(In)o(terim)13 b(T)l(ransp)q(ort)i(La)o(y)o(er)f(Mo)q(dule)0 275 y Ft(In)20 b(our)h(pro)q(ofs)f(of)g(correctness,)k(w)o(e)d(in)o (tend)f(to)h(pro)o(v)o(e)f(the)h(correctness)i(of)d(eac)o(h)h(la)o(y)o (er)f(separately)m(,)i(assuming)c(the)0 325 y(correctness)d(of)d(an)o (y)g(lo)o(w)o(er)g(la)o(y)o(ers)g(on)h(whic)o(h)f(that)g(la)o(y)o(er)g (dep)q(ends.)19 b(Through)13 b(this)f(separation)h(of)e(concerns,)k (our)d(pro)q(ofs)0 374 y(b)q(ecome)k(smaller)f(and)h(more)g (manageable.)23 b(Consequen)o(tly)m(,)17 b(at)f(eac)o(h)h(la)o(y)o(er,) f(w)o(e)h(presen)o(t)g(transition)f(rules)h(whic)o(h)g(act)0 424 y(as)e(a)f(correct)i(implemen)o(tation)11 b(of)j(the)i(succeeding)g (la)o(y)o(ers.)k(These)c(rules)f(will)e(b)q(e)i(replaced)h(with)e(more) g(detailed)g(rules)0 474 y(later.)62 526 y(The)19 b(session)g(la)o(y)o (er)f(of)g(Kermit)f(calls)h(up)q(on)g(the)h(transp)q(ort)g(la)o(y)o(er) f(to)g(p)q(erform)g(the)g(actual)g(task)h(of)e(transferring)0 575 y(messages)12 b(b)q(et)o(w)o(een)i(the)e(t)o(w)o(o)g(agen)o(ts.)17 b(W)m(e)12 b(presen)o(t)i(a)d(simple)g(mo)q(dule)g(template)g(in)g (Fig.)g(20)h(whic)o(h)g(describ)q(es)i(a)d(reliable)0 625 y(comm)o(unications)g(medium)g(from)h(one)i(agen)o(t)g(to)g(the)g (other.)p 0 731 1950 3 v 339 781 a Ff(Mo)q(dule:)20 b(InterimT)l(ransp) q(o)o(rt)339 831 y Fe(Rule:)f(TSEND)339 880 y Fh(if)e Fp(L)n(ayer)d(=)h(tr)n(ansp)n(ort)f Fh(and)j Fp(T)m(r)n(ansp)n (ortCommand)d(=)h(send)g Fh(then)407 930 y Fp(InMsg\(Y)m(ou\))h(:=)e (Msg\(SendT)m(yp)n(e,)i(SendData\))407 980 y(Cle)n(ar\(SendT)m(yp)n (e\),)e(Cle)n(ar\(SendData\),)i(L)n(ayer)e(:=)h(session)339 1030 y Fh(endif)339 1129 y Fe(Rule:)k(TGET)339 1179 y Fh(if)e Fp(L)n(ayer)d(=)h(tr)n(ansp)n(ort)f Fh(and)j Fp(T)m(r)n(ansp)n(ortCommand)d(=)h(r)n(e)n(c)n(eive)475 1229 y Fh(and)h Fp(De\014ne)n(d\(InMsg\(Me\)\))h Fh(then)407 1279 y Fp(R)n(e)n(cvdT)m(yp)n(e)e(:=)g(T)m(yp)n(e\(InMsg\(Me\)\),)g(R)n (e)n(cvdData)h(:=)e(Data\(InMsg\(Me\)\))407 1329 y(Cle)n (ar\(InMsg\(Me\)\),)h(L)n(ayer)f(:=)h(session)339 1379 y Fh(endif)p 0 1450 V 609 1583 a Ft(Figure)f(20:)k(In)o(terim)12 b(transp)q(ort)j(la)o(y)o(er)f(rules.)0 1752 y Fs(6.2.4)48 b(Regular)14 b(Run)0 1831 y Ft(The)g(initial)e(state)j(of)e(our)h (Kermit)f(algebra)h(satis\014es)h(the)f(conditions)g(sho)o(wn)g(in)f (Fig.)g(21.)p 0 1937 V 473 1987 a Fp(S.Mo)n(de)j(=)e(ssini)334 b(R.Mo)n(de)16 b(=)e(srini)473 2037 y(S.L)n(ayer)h(=)g(session)284 b(R.L)n(ayer)15 b(=)g(session)473 2087 y(S.R)n(e)n(cvdT)m(yp)n(e)h(=)e (undef)226 b(R.R)n(e)n(cvdT)m(yp)n(e)15 b(=)g(undef)473 2136 y(S.FileNo)g(=)f(0)371 b(R.FileNo)15 b(=)f(0)p 0 2208 V 611 2341 a Ft(Figure)g(21:)j(Initial)12 b(conditions)i(for)g (Kermit.)0 2518 y Fg(6.3)56 b(Pro)r(of)18 b(of)h(Correctness)0 2597 y Ft(Throughout)14 b(our)h(pro)q(ofs,)f(w)o(e)h(use)g Fp(S.X)21 b Ft(and)15 b Fp(R.X)20 b Ft(to)15 b(refer)g(to)g(the)g(priv) n(ate)f(function)g Fp(X)21 b Ft(of)14 b(the)h(sender)i(and)d(receiv)o (er,)0 2647 y(resp)q(ectiv)o(ely)m(.)p eop %%Page: 27 27 27 26 bop 0 50 a Fk(6.3)41 b(Pro)q(of)13 b(of)h(Correctness)1444 b Ft(27)0 195 y Fs(Lemma)15 b(21)21 b Fp(De\014ne)346 359 y Fo(R:N)5 b(ext)11 b Ft(=)541 249 y Fa(8)541 286 y(>)541 298 y(>)541 311 y(<)541 386 y(>)541 398 y(>)541 410 y(:)599 283 y Fo(R:Recv)q(dT)6 b(y)q(pe)246 b Fp(if)15 b(De\014ne)n(d\(R)n(e)n(cvdT)m(yp)n(e\))599 333 y Fo(T)6 b(y)q(pe)p Ft(\()p Fo(I)s(nM)f(sg)q Ft(\()p Fo(Receiv)q(e)q(r)q Ft(\)\))44 b Fp(if)15 b(Unde\014ne)n(d\(R)n(e)n(cvdT)m(yp)n(e\))h Fq(^)1092 383 y Fp(De\014ne)n(d\(InMsg\(R)n(e)n(c)n(eiver\)\))599 433 y Fo(S:S)r(endT)6 b(y)q(pe)272 b Fp(otherwise)0 522 y(and)16 b(de\014ne)g(S.Next)e(similarly.)k(Then)d(in)g(any)g(r)n(e)n (achable)g(glob)n(al)g(state,)f(the)h(values)g(of)g(S.Mo)n(de,)g (S.Next,)g(R.Mo)n(de,)g(and)0 572 y(R.Next)g(match)g(one)g(of)g(the)g (lines)g(of)g(the)g(fol)r(lowing)f(table:)p 564 627 822 2 v 563 677 2 50 v 668 677 V 694 662 a(S.Mo)n(de)p 851 677 V 51 w(S.Next)p 1020 677 V 49 w(R.Mo)n(de)p 1209 677 V 51 w(R.Next)p 1385 677 V 564 678 822 2 v 564 687 V 563 737 2 50 v 589 722 a(\(a\))p 668 737 V 50 w(ssini)p 851 737 V 100 w(undef)p 1020 737 V 70 w(srini)p 1209 737 V 106 w(undef)p 1385 737 V 564 738 822 2 v 563 788 2 50 v 589 773 a(\(b\))p 668 788 V 52 w(ss\014l)p 851 788 V 115 w(undef)p 1020 788 V 70 w(srini)p 1209 788 V 106 w(\\S")p 1385 788 V 564 790 822 2 v 563 840 2 50 v 589 825 a(\(c\))p 668 840 V 52 w(ss\014l)p 851 840 V 115 w(\\Y")p 1020 840 V 95 w(sr\014l)p 1209 840 V 121 w(undef)p 1385 840 V 564 841 822 2 v 563 891 2 50 v 589 876 a(\(d\))p 668 891 V 50 w(ssdat)p 851 891 V 93 w(undef)p 1020 891 V 70 w(sr\014l)p 1209 891 V 121 w(\\F")p 1385 891 V 564 893 822 2 v 563 942 2 50 v 589 928 a(\(e\))p 668 942 V 52 w(ssdat)p 851 942 V 93 w(\\Y")p 1020 942 V 95 w(sr)n(dat)p 1209 942 V 101 w(undef)p 1385 942 V 564 944 822 2 v 563 994 2 50 v 589 979 a(\(f)t(\))p 668 994 V 54 w(ssdat)p 851 994 V 93 w(undef)p 1020 994 V 70 w(sr)n(dat)p 1209 994 V 101 w(\\D")p 1385 994 V 564 996 822 2 v 563 1045 2 50 v 589 1030 a(\(g\))p 668 1045 V 52 w(ss\014l)p 851 1045 V 115 w(undef)p 1020 1045 V 70 w(sr)n(dat)p 1209 1045 V 101 w(\\Z")p 1385 1045 V 564 1047 822 2 v 563 1097 2 50 v 589 1082 a(\(h\))p 668 1097 V 50 w(sse)n(ot)p 851 1097 V 97 w(undef)p 1020 1097 V 70 w(sr\014l)p 1209 1097 V 121 w(\\B")p 1385 1097 V 564 1099 822 2 v 563 1148 2 50 v 589 1133 a(\(i\))p 668 1148 V 58 w(sse)n(ot)p 851 1148 V 97 w(\\Y")p 1020 1148 V 95 w(done)p 1209 1148 V 106 w(undef)p 1385 1148 V 564 1150 822 2 v 563 1200 2 50 v 589 1185 a(\(j\))p 668 1200 V 58 w(done)p 851 1200 V 99 w(undef)p 1020 1200 V 70 w(done)p 1209 1200 V 106 w(undef)p 1385 1200 V 564 1201 822 2 v 0 1278 a Fs(Pro)q(of.)f Ft(By)h(induction.)k(The)c(initial)e (state)j(satis\014es)g(condition)e(\(a\))h(of)f(the)i(table.)62 1369 y Fq(\017)21 b Fc(GetInput)p Ft(,)14 b Fc(TSEND)p Ft(,)g(and)g Fc(TGET)f Ft(do)h(not)g(a\013ect)h(an)o(y)e(condition)g (in)h(the)g(table.)62 1452 y Fq(\017)21 b Ft(Rule)13 b Fc(SSINI)h Ft(transforms)f(condition)g(\(a\))h(to)g(\(b\).)62 1535 y Fq(\017)21 b Ft(Rule)13 b Fc(SRINI)g Ft(transforms)g(condition)h (\(b\))g(to)g(\(c\).)62 1618 y Fq(\017)21 b Ft(Rule)13 b Fc(SSFIL)h Ft(transforms)f(condition)g(\(c\))i(to)e(\(d\))i(or)e (\(h\).)62 1701 y Fq(\017)21 b Ft(Rule)13 b Fc(SRFIL)h Ft(transforms)f(condition)g(\(d\))h(to)g(\(e\))g(and)g(transforms)f (condition)g(\(h\))i(to)e(\(i\).)62 1784 y Fq(\017)21 b Ft(Rule)13 b Fc(SSD)o(A)m(T)g Ft(transforms)h(condition)f(\(e\))h(to) g(\(f)s(\))g(or)g(\(g\).)62 1867 y Fq(\017)21 b Ft(Rule)13 b Fc(SRD)o(A)m(T)g Ft(transforms)g(condition)g(\(f)s(\))i(to)e(\(e\))i (and)f(transforms)f(condition)g(\(g\))h(to)f(\(c\).)62 1949 y Fq(\017)21 b Ft(Rule)13 b Fc(SSEOT)h Ft(transforms)f(condition)g (\(i\))h(to)f(\(j\).)18 b Fb(2)0 2041 y Fs(Lemma)d(22)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e(state,)h(the)g Ft(ERR)o(OR)f Fp(macr)n(o)g(is)h(never)g(exe)n(cute)n(d.)0 2132 y Fs(Pro)q(of.)20 b Ft(It)h(is)g(observ)n(able)g(from)e(the)j(table)f(in)f(Lemma)e(21)j (and)g(the)g(transition)g(rules)g(that)g(in)g(an)o(y)f(state)i(where)0 2181 y Fp(S.R)n(e)n(cvdT)m(yp)n(e)17 b Ft(or)d Fp(R.R)n(e)n(cvdT)m(yp)n (e)k Ft(is)13 b(de\014ned,)i(its)f(v)n(alue)f(will)f(not)i(allo)o(w)e (the)j Fp(ERR)o(OR)h Ft(macro)d(to)h(b)q(e)g(executed.)20 b Fb(2)0 2272 y Fs(Lemma)15 b(23)21 b Fp(In)15 b(any)h(r)n(e)n(gular)d (run,)i(any)h(message)f(sent)g(by)g(the)g(sender)g(is)g(acknow)r(le)n (dge)n(d)g(by)g(the)g(r)n(e)n(c)n(eiver.)0 2363 y Fs(Pro)q(of.)g Ft(By)h(Lemma)d(21,)j(w)o(e)g(kno)o(w)f(that)h(an)o(y)f(message)h(sen)o (t)h(b)o(y)e(the)i(sender)g(is)f(exp)q(ected)i(b)o(y)d(the)i(receiv)o (er;)h Fp(i.e.)23 b Ft(the)0 2413 y(receiv)o(er)15 b(will)e(not)g (execute)j(the)e Fp(ERR)o(OR)i Ft(macro,)c(but)i(execute)i(some)d (other)h(transition)g(rules.)k(The)c(message)g(will)e(not)0 2463 y(b)q(e)18 b(discarded)h(b)o(y)f(the)g(reliable)g(net)o(w)o(ork;)h (th)o(us,)g(the)f(receiv)o(er)i(will)c(accept)j(the)f(message.)30 b(An)18 b(examination)d(of)i(the)0 2513 y(receiv)o(er's)g(rules)g(sho)o (ws)f(that)g(ev)o(ery)h(message)e(whic)o(h)h(do)q(es)h(not)f(generate)h (an)e(error)i(\(as)f(these)i(messages)e(will)e(not\))i(is)0 2563 y(ac)o(kno)o(wledged.)i Fb(2)0 2654 y Fs(Lemma)d(24)21 b Fp(In)16 b(any)g(r)n(e)n(achable)f(state,)g(if)g(R.Mo)n(de)h(=)f(sr)n (dat,)g(then)h(R.FileT)m(ext\(x\))f(=)g Fo(\017)g Fp(for)g(every)g Fo(x)e(>)f(R:F)6 b(il)q(eN)f(o)p Fp(;)16 b(if)0 2704 y(R.Mo)n(de)f Fq(6)p Ft(=)h Fp(sr)n(dat,)e(then)h(R.FileT)m(ext\(x\))f (=)h Fo(\017)g Fp(for)f(every)h Fo(x)c Fq(\025)h Fo(R:F)6 b(il)q(eN)f(o)p Fp(.)p eop %%Page: 28 28 28 27 bop 0 50 a Ft(28)786 b Fk(6.)41 b(AL)m(TERNA)m(TING)13 b(BIT)h(KERMIT:)g(THE)g(SESSION)g(LA)m(YER)0 195 y Fs(Pro)q(of.)c Ft(By)h(induction.)17 b(Initially)m(,)8 b Fp(R.FileT)m(ext\(x\))j(=)h Fo(\017)f Ft(for)f(ev)o(ery)i Fo(x)f Fq(\025)h Ft(0.)k(W)m(e)11 b(consider)g(all)f(mo)o(v)o(es)f(that)i(a\013ect)h(functions)0 245 y(presen)o(t)j(in)f(the)g(in)o(v)n(arian)o(t.)62 295 y Fc(SRFIL)h Ft(ma)o(y)e(set)k Fp(R.Mo)n(de)i Ft(to)c Fp(sr)n(dat)t Ft(,)g(but)g(will)f(lea)o(v)o(e)h Fp(R.FileNo)i Ft(and)f Fp(R.FileT)m(ext)i Ft(unc)o(hanged;)e(th)o(us,)g(the)g(truth)g (of)0 345 y(the)e(in)o(v)n(arian)o(t)f(is)g(una\013ected.)62 395 y Fc(SRD)o(A)m(T)21 b Ft(has)g(di\013eren)o(t)i(e\013ects)g(on)e (the)h(functions)g(named)e(in)h(the)h(in)o(v)n(arian)o(t,)f(dep)q (ending)h(up)q(on)g(the)g(v)n(alue)f(of)0 445 y Fp(R.R)n(e)n(cvdT)m(yp) n(e)s Ft(.)37 b(Before)20 b Fc(SRD)o(A)m(T)f Ft(\014res,)j(the)f(in)o (v)n(arian)o(t)d(asserts)k(that)e Fp(R.FileT)m(ext\(x\))g(=)g Fo(\017)f Ft(for)h(all)f Fo(x)i(>)h(R:F)6 b(il)q(eN)f(o)p Ft(.)0 495 y(If)14 b Fp(R.R)n(e)n(cvdT)m(yp)n(e)h(=)g(\\Z")s Ft(,)g Fc(SRD)o(A)m(T)e Ft(up)q(dates)j Fp(R.Mo)n(de)h Ft(to)d Fp(sr\014l)k Ft(and)c(incremen)o(ts)h Fp(R.FileNo)s Ft(;)e(afterw)o(ards,)h(w)o(e)g(will)f(ha)o(v)o(e)0 545 y Fp(R.FileT)m(ext\(x\))j(=)g Fo(\017)g Ft(for)f(all)g Fo(x)f Fq(\025)h Fo(R:F)6 b(il)q(eN)f(o)p Ft(.)24 b(Otherwise,)17 b Fp(FileT)m(ext\(FileNo\))f Ft(ma)o(y)e(b)q(e)i(mo)q(di\014ed,)f(but)h (this)g(do)q(es)g(not)0 594 y(a\013ect)f(the)f(in)o(v)n(arian)o(t.)j Fb(2)0 688 y Fs(Lemma)e(25)21 b Fp(In)15 b(any)h(r)n(e)n(achable)e (state,)h(the)g(fol)r(lowing)f(c)n(onditions)h(ar)n(e)g(true:)377 780 y Fo(S:M)5 b(ode)11 b Ft(=)h Fo(ssf)t(il)h Fq(^)c Fo(R:M)c(ode)10 b Ft(=)i Fo(sr)q(dat)g Fq(!)f Fo(S:F)6 b(il)q(eN)f(o)12 b Ft(=)f Fo(R:F)6 b(il)q(eN)f(o)k Ft(+)h(1)p Fo(;)383 874 y Fq(:)p Ft(\()p Fo(S:M)5 b(ode)11 b Ft(=)h Fo(ssf)t(il)g Fq(^)d Fo(R:M)c(ode)11 b Ft(=)h Fo(sr)q(dat)p Ft(\))f Fq(!)g Fo(S:F)6 b(il)q(eN)f(o)12 b Ft(=)g Fo(R:F)6 b(il)q(eN)f(o:)0 1043 y Fs(Pro)q(of.)13 b Ft(By)h(induction.)k (Initially)m(,)11 b Fp(S.Mo)n(de)k(=)g(ssini)t Ft(,)e Fp(R.Mo)n(de)j(=)e(srini)t Ft(,)f(and)h Fp(S.FileNo)h(=)f(R.FileNo)h(=) f(0)6 b Ft(.)62 1093 y(F)m(rom)11 b(Lemma)f(21,)i(w)o(e)h(see)h(that)f (w)o(e)g(ma)o(y)e(en)o(ter)j(a)f(state)g(where)h Fp(S.Mo)n(de)h(=)e (ss\014l)k Ft(and)c Fp(R.Mo)n(de)i(=)e(sr)n(dat)k Ft(\(condition)0 1143 y(\(g\)\))i(only)f(when)i Fp(S.Mo)n(de)g(=)f(ssdat)k Ft(and)c Fp(R.Mo)n(de)h(=)f(sr)n(dat)k Ft(\(condition)18 b(\(e\)\),)j(b)o(y)e(rule)g Fc(SSD)o(A)m(T)p Ft(.)f(By)h(the)g (induction)0 1193 y(h)o(yp)q(othesis,)12 b Fp(S.FileNo)h(=)g(R.FileNo)h Ft(b)q(efore)e Fc(SSD)o(A)m(T)g Ft(\014res,)g(and)g(w)o(e)g(will)e(ha)o (v)o(e)i Fp(S.FileNo)h(=)f(R.FileNo+1)18 b Ft(after)12 b Fc(SSD)o(A)m(T)0 1243 y Ft(\014res,)j(since)f Fc(SSD)o(A)m(T)f Ft(incremen)o(ts)i Fp(S.FileNo)s Ft(.)62 1293 y(Similarly)m(,)d(w)o(e)j (ma)o(y)f(only)g(lea)o(v)o(e)h(a)g(state)h(where)h Fp(S.Mo)n(de)f(=)g (ss\014l)k Ft(and)15 b Fp(R.Mo)n(de)i(=)f(sr)n(dat)i Ft(\(condition)d(\(g\)\))h(b)o(y)f(rule)0 1343 y Fc(SRD)o(A)m(T)p Ft(.)d Fc(SRD)o(A)m(T)g Ft(incremen)o(ts)h Fp(R.FileNo)s Ft(;)f(th)o(us,)h(w)o(e)g(will)f(ha)o(v)o(e)h Fp(S.FileNo)h(=)f (R.FileNo)j Ft(as)d(desired)h(after)f Fc(SRD)o(A)m(T)f Ft(\014res.)0 1392 y Fb(2)0 1486 y Fs(Lemma)j(26)21 b Fp(De\014ne)363 1651 y Fo(code)11 b Ft(=)497 1541 y Fa(8)497 1578 y(>)497 1590 y(>)497 1603 y(<)497 1677 y(>)497 1690 y(>)497 1702 y(:)555 1575 y Fo(R:Recv)q(dD)q(ata)246 b Fp(if)14 b Ft(De\014ned\(R.RecvdData\))555 1625 y Fo(D)q(ata)p Ft(\()p Fo(I)s(nM)5 b(sg)q Ft(\()p Fo(Receiv)q(er)q Ft(\)\))45 b Fp(if)14 b Ft(Unde\014ned\(R.RecvdData\))1051 1675 y Fq(^)g Ft(De\014ned\(InMsg\(Receiv)o(er\)\))555 1725 y Fo(\017)479 b Fp(otherwise)62 1818 y(Then)18 b(in)g(any)g(r)n(e)n (achable)f(state,)h(if)e Ft(S.Mo)q(de)h(=)g(ssdat)p Fp(,)i(then)e (S.FileT)m(ext\(S.FileNo\))g(=)g(R.FileT)m(ext\(R.FileNo\))f(+)0 1868 y(De)n(c)n(o)n(de\(c)n(o)n(de,DINF)o(O\))g(+)e(S.T)m(extT)m (oSend.)0 1961 y Fs(Pro)q(of.)h Ft(By)i(induction.)24 b(Initially)m(,)13 b Fp(S.Mo)n(de)18 b(=)f(ssini)t Ft(,)f(making)d(the) k(premise)f(of)f(the)i(in)o(v)n(arian)o(t)d(false,)i(th)o(us)h (satisfying)0 2011 y(the)d(in)o(v)n(arian)o(t.)j(W)m(e)c(consider)i (all)e(mo)o(v)o(es)f(that)i(a\013ect)h(functions)f(presen)o(t)i(in)d (the)i(in)o(v)n(arian)o(t.)62 2061 y Fc(SSFIL)h Ft(ma)o(y)e(up)q(date)i Fp(S.Mo)n(de)k Ft(to)c Fp(ssdat)t Ft(;)g(if)g(it)f(do)q(es,)i(w)o(e)f (will)e(ha)o(v)o(e)i Fp(S.T)m(extT)m(oSend)h(=)g(S.FileT)m (ext\(S.FileNo\))f Ft(and)0 2111 y Fp(c)n(o)n(de)d(=)g Fo(\017)p Ft(.)k(Applying)10 b(Lemmas)f(21)i(and)h(24)f(sho)o(ws)h (that)f Fp(R.FileT)m(ext\(R.FileNo\))h(=)g Fo(\017)p Ft(.)17 b(If)11 b(\014ring)g Fc(SSFIL)h Ft(do)q(es)g(not)f(up)q(date)0 2160 y Fp(S.Mo)n(de)18 b Ft(to)13 b Fp(ssdat)t Ft(,)h(the)g(in)o(v)n (arian)o(t)f(is)g(not)h(a\013ected.)62 2211 y Fc(SSD)o(A)m(T)f Ft(ma)o(y)e(up)q(date)j Fp(S.Mo)n(de)j Ft(to)c Fp(ss\014l)t Ft(;)g(in)g(that)h(case,)f(the)h(premise)f(of)g(the)h(in)o(v)n(arian)o (t)d(b)q(ecomes)j(false,)f(making)d(the)0 2261 y(in)o(v)n(arian)o(t)j (true.)20 b(Otherwise,)c(text)f(ma)o(y)d(b)q(e)j(transferred)h(from)d Fp(S.T)m(extT)m(oSend)19 b Ft(in)o(to)14 b Fp(c)n(o)n(de)s Ft(,)g(whic)o(h)h(do)q(es)g(not)f(a\013ect)h(the)0 2310 y(in)o(v)n(arian)o(t.)62 2361 y Fc(TGET)d Ft(ma)o(y)f(mo)o(v)o(e)f (text)j(from)d Fp(InMsg\(R)n(e)n(c)n(eiver\))k Ft(in)o(to)d Fp(R.R)n(e)n(cvdData)s Ft(,)j(whic)o(h)e(do)q(es)h(not)f(a\013ect)h (the)g(in)o(v)n(arian)o(t)d(\(since)0 2410 y(b)q(oth)k(are)g(part)g(of) g(the)g(de\014nition)g(of)f Fp(c)n(o)n(de)s Ft(\).)62 2461 y Fc(SRD)o(A)m(T)f Ft(ma)o(y)f(mo)o(v)o(e)h(text)h(from)e Fp(c)n(o)n(de)17 b Ft(in)o(to)12 b Fp(R.FileT)m(ext\(R.FileNo\))r Ft(,)f(whic)o(h)i(main)o(tains)d(the)k(truth)f(of)g(the)g(in)o(v)n (arian)o(t.)0 2510 y(Otherwise,)i Fc(R.FileNo)f Ft(ma)o(y)f(b)q(e)h (incremen)o(ted;)h(but)f(Lemma)e(21)i(sho)o(ws)h(that)f Fp(S.Mo)n(de)i Fq(6)p Ft(=)f Fp(ssdat)k Ft(in)14 b(this)g(case,)h (violating)0 2560 y(our)f(premise.)k Fb(2)0 2654 y Fs(Theorem)d(9)20 b Fp(In)15 b(any)g(r)n(e)n(gular)e(run,)h(assuming)h(\014nite)f(input)h (b)n(oth)f(sides)g(wil)r(l)f(terminate)h(with)f Ft(Mo)q(de)h(=)f(done)p Fp(,)i(and)g(for)0 2704 y(al)r(l)f Fo(x)p Fp(,)h Ft(S.FileT)m(ext\(x\)) e(=)h(R.FileT)m(ext\(x\))g Fp(and)h Ft(S.FileName\(x\))e(=)h (R.FileName\(x\))p Fp(.)p eop %%Page: 29 29 29 28 bop 1908 50 a Ft(29)0 195 y Fs(Pro)q(of.)19 b Ft(W)m(e)h (consider)h(a)f(regular)g(run)h(from)d(the)j(sender's)h(p)q(ersp)q (ectiv)o(e,)h(since)e(the)g(receiv)o(er)h(ac)o(kno)o(wledges)e(ev)o (ery)0 245 y(message)14 b(sen)o(t)i(b)o(y)e(the)h(sender)h(\(Lemma)c (23\).)20 b(By)15 b(Lemma)d(22,)i(w)o(e)g(kno)o(w)h(the)g(regular)f (run)h(will)e(nev)o(er)j(en)o(ter)g(an)e(error)0 295 y(state.)62 346 y(The)f(sender)h(starts)g(b)o(y)e(sending)h(an)g Fp(\\S")j Ft(and)d(en)o(ters)h(mo)q(de)d Fp(ss\014l)t Ft(,)i(whic)o(h)f(is)h(also)f(en)o(tered)i(an)o(y)e(time)f(a)i(\014le)f (has)h(b)q(een)0 395 y(successfully)18 b(sen)o(t.)29 b(If)17 b(there)h(are)g(more)e(\014les)i(to)f(send,)h(a)f(new)h Fp(\\F")j Ft(message)c(is)g(sen)o(t)h(with)f(the)g(new)h(\014le)f(name) f(and)0 445 y(the)h(sender)g(en)o(ters)h(mo)q(de)d Fp(ssdat)t Ft(.)25 b(In)16 b(a)g(momen)o(t,)d(w)o(e)k(will)d(sho)o(w)j(that)f(the) g(sender)i(ev)o(en)o(tually)e(returns)h(to)f Fp(ss\014l)g Ft(with)0 495 y Fp(FileNo)h Ft(incremen)o(ted)e(b)o(y)g(one.)21 b(Th)o(us,)15 b(if)f(only)g(\014nitely)g(man)o(y)f(\014les)j(ha)o(v)o (e)e(b)q(een)i(sp)q(eci\014ed)h(for)d(sending,)h(ev)o(en)o(tually)f(no) 0 545 y(more)h(\014les)h(will)e(b)q(e)j(a)o(v)n(ailable)c(and)j(the)g (sender)h(pro)q(ceeds)h(to)e(mo)q(de)f Fp(sse)n(ot)k Ft(where)e(a)e Fp(\\B")20 b Ft(message)15 b(is)h(sen)o(t.)25 b(After)16 b(its)0 595 y(ac)o(kno)o(wledgmen)o(t,)c(b)q(oth)i(sides)h (mo)o(v)o(e)d(to)h(mo)q(de)g Fp(done)s Ft(.)62 646 y(It)f(remains)f(to) h(sho)o(w)g(that)g(from)e(mo)q(de)h Fp(ssdat)t Ft(,)h(the)g(sender)i (ev)o(en)o(tually)d(returns)j(to)d(mo)q(de)g Fp(ss\014l)t Ft(.)18 b(In)12 b(mo)q(de)e Fp(ssdat)t Ft(,)i(the)0 695 y(length)j(of)e Fp(T)m(extT)m(oSend)20 b Ft(decreases)d(eac)o(h)e(time) e(a)h Fp(\\D")19 b Ft(message)14 b(is)g(sen)o(t,)h(whic)o(h)g(is)f(ev)o (en)o(tually)g(ac)o(kno)o(wledged.)20 b(Th)o(us,)0 745 y(ev)o(en)o(tually)13 b(the)h(en)o(tire)g(\014le)f(will)f(b)q(e)i(sen)o (t,)f Fp(FileNo)j Ft(will)c(b)q(e)i(incremen)o(ted,)f(and)g(con)o(trol) g(will)f(b)q(e)i(returned)h(bac)o(k)e(to)g Fp(ss\014l)t Ft(.)62 796 y(Ho)o(w)j(do)g(w)o(e)g(kno)o(w)f(that)h(\014le)g(names)f (and)h(texts)h(are)f(transmitted)f(correctly?)26 b(Lemma)13 b(25)i(sho)o(ws)h(that)g Fp(S.FileNo)0 846 y(=)i(R.FileNo)i Ft(when)e(\014le)g(names)f(and)g(\014le)h(texts)h(are)f(transmitted;)g (th)o(us,)h(\014le)f(names)f(sen)o(t)h(from)e(the)i(sender)i(to)d(the)0 896 y(receiv)o(er)i(will)e(b)q(e)h(placed)g(in)g(corresp)q(onding)g (places)h(in)e(the)i(priv)n(ate)e(function)h Fp(FileName)s Ft(.)29 b(Lemma)15 b(26)j(sho)o(ws)g(that)0 946 y(when)e(the)h(sender)g (is)f(ab)q(out)f(to)h(send)h(the)f(end-of-\014le)g Fp(\\Z")j Ft(mark)o(er,)c Fp(S.T)m(extT)m(oSend)i(=)g(c)n(o)n(de)g(=)f Fo(\017)p Ft(.)24 b(Th)o(us,)16 b Fp(S.FileT)m(ext)0 995 y Ft(and)e Fp(R.FileT)m(ext)j Ft(will)12 b(matc)o(h)h(with)g(resp)q (ect)k(to)c(the)i(curren)o(t)g(v)n(alue)e(of)h Fp(FileNo)s Ft(.)j Fb(2)0 1138 y Fr(7)67 b(Alternating)24 b(Bit)f(Kermit:)30 b(The)22 b(T)-6 b(ransp)r(ort)24 b(La)n(y)n(er)0 1231 y Ft(The)c(goal)e(of)h(the)g(transp)q(ort)i(la)o(y)o(er)e(is)g(to)g (transform)f(a)h(p)q(ossibly)g(unreliable)g(connection)h(in)o(to)f(a)g (reliable)f(one.)35 b(In)0 1281 y(Alternating)14 b(Bit)g(Kermit,)f(the) h(transp)q(ort)h(la)o(y)o(er)f(is)f(a)h(v)n(arian)o(t)f(on)h(the)g(ABP) m(,)g(describ)q(ed)i(in)d(section)i(3.)j(This)c(similarit)o(y)0 1331 y(allo)o(ws)f(us)h(to)g(rely)g(on)f(the)i(pro)q(ofs)f(of)f (correctness)k(for)c(the)i(ABP)f(for)g(the)g(correctness)j(of)d(the)g (transp)q(ort)h(la)o(y)o(er.)62 1382 y(A)i(couple)g(of)f(new)h(message) g(t)o(yp)q(es)g(are)g(used)h(b)o(y)e(the)i(transp)q(ort)f(la)o(y)o(er.) 26 b Fo(Q)17 b Ft(indicates)g(that)f(a)h(message)f(has)h(b)q(een)0 1432 y(corrupted)c(\(altered\))g(during)e(transmission)g(through)g(the) i(net)o(w)o(ork.)k Fo(T)h Ft(indicates)12 b(that)g(a)f(timeout)g (signal)f(has)i(o)q(ccurred)0 1482 y(while)h(w)o(aiting)g(for)g(a)h (message)g(to)f(arriv)o(e.)0 1604 y Fg(7.1)56 b(New)18 b(F)-5 b(unction)19 b(Descriptions)0 1682 y Fs(7.1.1)48 b(Common)15 b(F)l(unctions)0 1761 y Ft(Messages)c(will)d(no)o(w)h(b)q (e)h(comp)q(osed)g(of)f(three)h(parts:)17 b(a)9 b(sym)o(b)q(ol)f (indicating)g(the)i(t)o(yp)q(e)g(of)f(the)i(message,)e(a)g(string)h (indicating)0 1811 y(the)16 b(data)e(con)o(ten)o(t)i(of)e(the)i (message,)e(and)h(an)g(in)o(teger)g(used)h(to)f(main)o(tain)d(prop)q (er)k(sequencing)g(of)f(messages.)21 b(W)m(e)15 b(th)o(us)0 1860 y(re-de\014ne)20 b Fp(Msg:)26 b(symb)n(ols)19 b Fq(\002)f Fp(strings)g Fq(\002)h Fp(inte)n(gers)f Fq(!)g Fp(messages)s Ft(,)i(and)d(de\014ne)i(a)f(new)h(function)e Fp(Num:)27 b(messages)18 b Fq(!)0 1910 y Fp(inte)n(gers)s Ft(.)f(W)m(e)12 b(will)f(only)g(n)o(um)o(b)q(er)h(messages)g(with)g (the)h(in)o(tegers)g Fq(f)p Ft(0)p Fo(;)7 b(:)g(:)g(:)e(;)i Ft(63)p Fq(g)p Ft(;)k(consequen)o(tly)m(,)h(w)o(e)h(will)d(use)k(the)e (mo)q(dulus)0 1960 y(function)i(o)o(v)o(er)f(the)i(in)o(tegers)g(to)e (compute)h(message)f(n)o(um)o(b)q(ers.)62 2011 y(The)k(comm)o(unicati)o (ons)d(paths)i(b)q(et)o(w)o(een)h(agen)o(ts)g(are)f(represen)o(ted)j(b) o(y)d Fp(queues)s Ft(,)h(as)f(in)f(the)i(ABP)m(.)f(F)m(unctions)g Fp(Emp-)0 2061 y(tyQueue:)31 b(queues)s Ft(,)22 b Fp(App)n(end:)32 b(queues)21 b Fq(\002)g Fp(messages)g Fq(!)f Fp(queues)s Ft(,)i Fp(He)n(ad:)31 b(queues)21 b Fq(!)g Fp(messages)s Ft(,)h Fp(T)m(ail:)29 b(queues)21 b Fq(!)0 2111 y Fp(queues)s Ft(,)g(and)e Fp(Shrink:)28 b(queues)20 b Fq(!)f Fp(queues)h Ft(p)q(erform)e(the)i(usual)e(op)q(erations.)34 b(In)19 b(addition,)f(the)i(external)f(function)0 2160 y Fp(Corrupt:)f(queues)e Fq(!)e Fp(queues)h Ft(replaces)g(zero)g(or)e(more)g(messages)h(in)g (the)g(input)g(queue)h(with)e(messages)h(of)g(t)o(yp)q(e)g(\\)p Fo(Q)p Ft(".)62 2211 y(The)19 b(function)f Fp(Q:)h(ids)g Fq(!)f Fp(queues)23 b Ft(represen)o(ts)e(the)e(queues)g(b)q(et)o(w)o (een)h(the)f(pair)f(of)g(agen)o(ts.)32 b(F)m(or)18 b(a)g(giv)o(en)f (agen)o(t,)0 2261 y Fp(Q\(Me\))f Ft(is)d(the)i(queue)g(of)e(messages)h (to)g(b)q(e)g(receiv)o(ed)i(b)o(y)d(that)h(agen)o(t,)g(and)g Fp(Q\(Y)m(ou\))h Ft(is)f(the)g(queue)h(of)e(messages)h(sen)o(t)h(b)o(y) 0 2311 y(that)f(agen)o(t)g(but)g(not)g(y)o(et)g(receiv)o(ed)h(b)o(y)f (the)g(other)h(agen)o(t.)0 2425 y Fs(7.1.2)48 b(Priv)m(ate)15 b(F)l(unctions)0 2503 y Ft(Eac)o(h)i(agen)o(t)g(has)g(a)g(priv)n(ate)g (function)f Fp(Se)n(qNo:)25 b(inte)n(gers)20 b Ft(whic)o(h)d(holds)g (the)g(message)g(n)o(um)o(b)q(er)f(it)h(exp)q(ects)i(to)e(receiv)o(e)0 2553 y(in)f(the)i(next)f(message)f(from)f(the)j(other)f(agen)o(t.)26 b(Priv)n(ate)17 b(functions)g Fp(F)m(etchT)m(yp)n(e:)24 b(symb)n(ols)s Ft(,)17 b Fp(F)m(etchNo:)24 b(inte)n(gers)s Ft(,)17 b(and)0 2603 y Fp(F)m(etchData:)i(strings)d Ft(hold)c(the)h (message)f(sym)o(b)q(ol,)f(n)o(um)o(b)q(er,)h(and)h(datum)e(from)g(the) i(most)f(recen)o(tly)i(retriev)o(ed)g(message.)62 2654 y(The)j(priv)n(ate)g(function)f Fp(R)n(etry:)24 b(inte)n(gers)c Ft(indicates)d(the)g(n)o(um)o(b)q(er)f(of)g(times)g(the)h(transp)q(ort) h(la)o(y)o(er)e(has)h(attempted)0 2704 y(to)e(send)g(the)h(curren)o(t)g (message.)21 b(The)15 b(priv)n(ate)g(function)f Fp(R)n(etryLimit:)20 b(inte)n(gers)d Ft(indicates)e(the)h(maxim)n(um)10 b(n)o(um)o(b)q(er)15 b(of)p eop %%Page: 30 30 30 29 bop 0 50 a Ft(30)699 b Fk(7.)40 b(AL)m(TERNA)m(TING)13 b(BIT)h(KERMIT:)g(THE)g(TRANSPOR)m(T)f(LA)m(YER)0 195 y Ft(times)h(re-transmission)g(of)g(a)g(particular)h(message)f(should)h (o)q(ccur.)21 b(The)15 b(priv)n(ate)g(function)f Fp(L)n(astMsg:)21 b(messages)d Ft(holds)0 245 y(a)c(cop)o(y)f(of)h(the)g(last)g(message)f (sen)o(t)i(to)f(the)g(other)h(agen)o(t.)0 367 y Fg(7.2)56 b(T)-5 b(ransition)18 b(Rules)0 446 y Ft(W)m(e)11 b(replace)i(the)f(in) o(terim)e(mo)q(dule)g(template)h(presen)o(ted)j(in)d(the)h(last)g (section)g(with)f(the)i(rules)f(presen)o(ted)i(in)d(this)h(section.)62 497 y(The)17 b(transp)q(ort)h(la)o(y)o(er)e(mo)q(dule)g(has)h(t)o(w)o (o)f(transition)g(rules)h(\(sho)o(wn)g(in)g(Fig.)25 b(22\))17 b(whic)o(h)f(implemen)o(t)e(the)k(sending)0 546 y(and)d(receiving)g(of) f(messages;)h(they)g(are)g(essen)o(tially)g(those)g(of)f(the)h (symmetric)e(ABP)m(.)i(Rule)f Fp(TSEND)19 b Ft(uses)d(a)f(couple)g(of)0 596 y(abbreviations;)h(these)i(are)f(de\014ned)g(in)f(Fig.)f(23.)24 b(Finally)m(,)14 b(w)o(e)j(need)g(to)f(de\014ne)h(the)g Fp(SEND)k Ft(and)16 b Fp(GET)21 b Ft(abbreviations)0 646 y(used)15 b(throughout)f(these)h(rules;)f(they)g(are)h(sho)o(wn)f (in)f(Fig.)g(24.)p 0 751 1950 3 v 302 800 a Fe(Rule:)18 b(TSEND)302 850 y Fh(if)e Fp(L)n(ayer)f(=)g(tr)n(ansp)n(ort)f Fh(and)i Fp(T)m(r)n(ansp)n(ortCommand)f(=)f(send)i Fh(then)370 900 y(if)g Fp(Sender)g(=)e(Me)i Fh(then)438 950 y Fp(SEND\(SendT)m(yp)n (e,)g(SendData,)g(\(Se)n(qNo)f(+)g(1\))g(mo)n(d)g(64\))370 1000 y Fh(else)j Fp(SEND\(SendT)m(yp)n(e,)e(SendData,)g(Se)n(qNo\))370 1049 y Fh(endif)370 1099 y Fp(Se)n(qNo)f(:=)f(\(Se)n(qNo)i(+)e(1\))i (mo)n(d)f(64)370 1149 y(Cle)n(ar\(SendT)m(yp)n(e\),)f(Cle)n (ar\(SendData\),)h(L)n(ayer)g(:=)f(session)302 1199 y Fh(endif)302 1299 y Fe(Rule:)k(TGET)302 1348 y Fh(if)e Fp(L)n(ayer)f(=)g(tr)n(ansp)n(ort)f Fh(and)i Fp(T)m(r)n(ansp)n (ortCommand)f(=)f(r)n(e)n(c)n(eive)h Fh(then)370 1398 y(if)h Fp(Unde\014ne)n(d\(F)m(etchT)m(yp)n(e\))g Fh(then)h Fp(GET)e Fh(endif)370 1448 y(if)h Fp(De\014ne)n(d\(F)m(etchT)m(yp)n (e\))g Fh(then)438 1498 y(if)g Fp(\(F)m(etchNo)f(=)g(Se)n(qNo\))g Fh(and)h Fp(\(F)m(etchT)m(yp)n(e)f Fq(62)g(f)p Fp(\\N",)g(\\Q",)g(\\T") p Fq(g)p Fp(\))g Fh(then)506 1548 y Fp(RETURN\(F)m(etchT)m(yp)n(e,)f(F) m(etchData\))438 1597 y Fh(elseif)j Fp(F)m(etchT)m(yp)n(e)e(=)f(\\N")i Fh(and)g Fp(F)m(etchNo)f(=)g(\(Se)n(qNo+1\))g(mo)n(d)g(64)h Fh(then)506 1647 y Fp(RETURN\(\\Y",)f(F)m(etchData\))438 1697 y Fh(else)j Fp(RESEND)302 1747 y Fh(ENDIF)p 0 1819 V 352 1952 a Ft(Figure)c(22:)j(T)m(ransition)c(rules)i(for)e(transp)q (ort-lev)o(el)h(sending)h(and)e(receiving.)62 2053 y(The)e(net)o(w)o (ork)f(mo)q(dules)f(for)h(Kermit,)g(whic)o(h)g(allo)o(w)f(for)g (corruption)i(of)e(messages)i(as)f(w)o(ell)g(as)g(discarding)g(of)f (messages,)0 2103 y(are)14 b(a)g(simple)e(extension)j(of)e(those)i(for) e(the)i(ABP)f(and)g(are)g(sho)o(wn)g(in)g(Fig.)f(25.)0 2225 y Fg(7.3)56 b(Correctness)0 2304 y Ft(The)13 b(transition)f(rules) i(presen)o(ted)g(in)f(the)g(last)f(section)i(are)f(functionally)e (equiv)n(alen)o(t)h(to)g(those)i(of)e(the)h(symmetric)e(ABP)m(.)0 2354 y Fp(TSEND)19 b Ft(corresp)q(onds)e(to)d(the)i(transition)e(rules) i(of)e(the)h(symmetric)e(ABP)j(in)o(v)o(ok)o(ed)e(when)h Fp(Mo)n(de)h(=)g(Put)t Ft(,)f(and)f Fp(TGET)0 2404 y Ft(corresp)q(onds)19 b(to)d(the)h(rules)g(in)o(v)o(ok)o(ed)f(when)h Fp(Mo)n(de)h(=)f(Get)t Ft(.)26 b(The)17 b(alternation)f(b)q(et)o(w)o (een)i(mo)q(des)e Fp(Get)k Ft(and)c Fp(Put)21 b Ft(whic)o(h)0 2453 y(app)q(ears)11 b(naturally)f(in)f(the)i(symmetric)e(ABP)i(is)f (assured)i(b)o(y)e(the)h(session-la)o(y)o(er)g(rules,)g(whic)o(h)g (alternate)f(calls)g(to)h Fp(TSEND)0 2503 y Ft(and)j Fp(TGET)6 b Ft(.)62 2554 y(The)15 b(symmetric)e(ABP)i(used)h(0)e(and)h (1)f(as)h(message)f(n)o(um)o(b)q(ers,)g(while)g(Kermit)g(uses)i(the)f (en)o(tire)g(set)h Fq(f)p Ft(0)p Fo(;)7 b(:)g(:)g(:)t(;)g Ft(63)p Fq(g)p Ft(.)19 b(It)0 2604 y(can)f(easily)f(b)q(e)h(sho)o(wn,)g (as)f(in)g(the)h(ABP)m(,)g(that)f(only)g(t)o(w)o(o)g(distinct)h (message)f(n)o(um)o(b)q(ers)g(exist)h(in)f(the)h(v)n(arious)f(queues)0 2654 y(and)d(message)g(holders)h(in)f(the)h(Kermit)f(proto)q(col)g(at)g (an)o(y)g(one)h(momen)o(t.)i(F)m(urthermore,)c(these)j(t)o(w)o(o)e (message)g(n)o(um)o(b)q(ers)0 2704 y(are)h(consecutiv)o(e)i(mo)q(d)c (64;)i(th)o(us,)g(they)h(can)f(b)q(e)h(seen)g(to)f(corresp)q(ond)i(to)e (the)g(ABP's)h(0)f(and)g(1)f(bits,)h(where)h(a)f(message)p eop %%Page: 31 31 31 30 bop 0 50 a Fk(7.3)41 b(Correctness)1605 b Ft(31)p 0 209 1950 3 v 374 259 a Fe(Abb)o(reviation:)19 b(RESEND)442 309 y Fh(if)e Fp(R)n(etry)d Fo(>)h Fp(R)n(etryLimit)f Fh(then)510 359 y Fp(SEND\(\\E",)i Fo(\017)p Fp(\),)f(RETURN\(\\E",)g Fo(\017)p Fp(\))442 409 y Fh(elseif)i Fp(L)n(astMsg)f Fq(6)p Ft(=)p Fp(undef)f Fh(then)i Fp(Q\(Y)m(ou\))e(:=)f(Q\(Y)m(ou\))h Ft(++)h Fp(L)n(astMsg)442 458 y Fh(else)i Fp(SEND\(\\N",)e Fo(\017)p Fp(,)e(Se)n(qNo\))442 508 y Fh(endif)442 558 y Fp(Cle)n(ar\(F)m(etchT)m(yp)n(e\),)g(Cle)n(ar\(F)m(etchData\))374 658 y Fe(Abb)o(reviation:)19 b(RETURN)14 b(\(t)o(yp)q(e,)g(datum\))442 708 y Fp(R)n(etry)h(:=)f(0,)h(R)n(e)n(cvdT)m(yp)n(e)g(:=)g(typ)n(e,)f (R)n(e)n(cvdData)i(:=)f(datum)442 757 y(Cle)n(ar\(F)m(etchT)m(yp)n (e\),)f(Cle)n(ar\(F)m(etchData\),)g(L)n(ayer)h(:=)f(session)p 0 829 V 503 962 a Ft(Figure)g(23:)j(De\014nitions)d(for)f Fp(RESEND)19 b Ft(and)14 b Fp(RETURN)7 b Ft(.)p 0 1070 V 331 1120 a Fe(Abb)o(reviation:)19 b(SEND)14 b(\(t)o(yp)q(e,)g(datum,) g(num\))399 1170 y Fp(L)n(astMsg)h(:=)f(Msg\(typ)n(e,)h(datum,)g(num\)) 399 1220 y(Q\(Y)m(ou\))f(:=)h(Q\(Y)m(ou\))g Ft(++)g Fp(Msg\(typ)n(e,)g (datum,)g(num\))331 1320 y Fe(Abb)o(reviation:)k(GET)399 1369 y Fh(if)d Fp(De\014ne)n(d\(InMsg\(Me\)\))h Fh(then)466 1419 y Fp(F)m(etchT)m(yp)n(e)e(:=)g(T)m(yp)n(e\(InMsg\(Me\)\),)g(F)m (etchNo)g(:=)f(Num\(InMsg\(Me\)\))466 1469 y(F)m(etchData)i(:=)e (Data\(InMsg\(Me\)\),)i(Cle)n(ar\(InMsg\(Me\)\))399 1519 y Fh(elseif)h Fp(Time)n(out\(Me\))e Fh(then)466 1569 y Fp(F)m(etchT)m(yp)n(e)g(:=)g(\\T",)g(F)m(etchNo)g(:=)f(Se)n(qNo)466 1618 y(Time)n(out\(Me\))h(:=)g(false)399 1668 y Fh(endif)p 0 1740 V 578 1873 a Ft(Figure)f(24:)j(De\014nitions)d(for)f Fp(SEND)19 b Ft(and)13 b Fp(GET)6 b Ft(.)p 0 1981 V 436 2031 a Ff(Mo)q(dule:)20 b(T)l(ransfer)c(T)l(emplate)436 2081 y Fh(if)g Fp(Unde\014ne)n(d\(InMsg\(Me\)\))h Fh(and)g Fp(Q\(Me\))e Fq(6)p Ft(=)p Fp(EmptyQueue)h Fh(then)504 2131 y Fp(InMsg\(Me\))f(:=)g(He)n(ad\(Q\(Me\)\),)g(Q\(Me\))g(:=)f(T)m (ail\(Q\(Me\)\))436 2181 y Fh(endif)436 2280 y Ff(Mo)q(dule:)20 b(Shrink)c(T)l(emplate)436 2330 y Fp(Q\(Me\))f(:=)f(Shrink\(Q\(Me\)\))h Fh(endif)436 2430 y Ff(Mo)q(dule:)20 b(Co)o(rrupt)c(T)l(emplate)436 2479 y Fp(Q\(Me\))f(:=)f(Corrupt\(Q\(Me\)\))g Fh(endif)p 0 2551 V 521 2684 a Ft(Figure)g(25:)j(Net)o(w)o(ork)d(mo)q(dule)f (templates)g(for)h(Kermit.)p eop %%Page: 32 32 32 31 bop 0 50 a Ft(32)742 b Fk(8.)41 b(AL)m(TERNA)m(TING)12 b(BIT)j(KERMIT:)e(THE)h(D)o(A)m(T)m(ALINK)f(LA)m(YER)0 195 y Ft(n)o(um)o(b)q(er)h(is)h(mapp)q(ed)e(to)i(0)f(if)g(it)g(is)h(ev) o(en)g(and)g(1)f(if)g(it)g(is)h(o)q(dd.)20 b(Th)o(us,)15 b(using)f(this)h(larger)g(set)g(of)f(message)h(n)o(um)o(b)q(ers)f(do)q (es)0 245 y(not)g(a\013ect)h(the)f(correctness)j(of)c(the)i(proto)q (col.)62 295 y(Kermit)f(also)h(detects)i(that)e(an)g Fp(\\N")j Ft(message)d(n)o(um)o(b)q(ered)g Fo(x)f Ft(is)h(equiv)n(alen) o(t)f(to)h(a)g Fp(\\Y")j Ft(message)d(n)o(um)o(b)q(ered)g Fo(x)9 b Fq(\000)i Ft(1,)0 345 y(since)k(an)f Fp(\\N")k Ft(message)c(n)o(um)o(b)q(ered)g Fo(x)g Ft(cannot)g(b)q(e)h(sen)o(t)g (b)q(efore)g(a)f Fp(\\Y")k Ft(message)c(n)o(um)o(b)q(ered)g Fo(x)9 b Fq(\000)h Ft(1.)19 b(This)14 b(feature)h(can)0 395 y(impro)o(v)o(e)d(e\016ciency)j(sligh)o(tly)d(but)i(has)g(no)g (a\013ect)h(on)f(correctness.)62 446 y(Kermit)e(do)q(es)h(not)f (re-transmit)f(messages)h(in\014nitely)g(often,)g(as)g(our)g(v)o (ersion)h(of)e(the)i(ABP)g(do)q(es;)g(otherwise,)g(Kermit)0 495 y(w)o(ould)i(nev)o(er)i(terminate)e(if)g(a)h(net)o(w)o(ork)g (failure)f(prohibited)g(all)g(messages)h(from)e(reac)o(hing)i(their)g (destinations.)24 b(Since)0 545 y(suc)o(h)17 b(a)f(failure)g(ma)o(y)e (not)i(b)q(e)h(detectable,)h(Kermit)e(\\giv)o(es)g(up")g(after)g(a)g (\014xed)h(n)o(um)o(b)q(er)f(of)f(re-transmissions)h(without)0 595 y(receiving)e(a)g(resp)q(onse.)20 b(This)14 b(n)o(um)o(b)q(er)f(ma) o(y)f(b)q(e)i(c)o(hanged)g(b)o(y)g(the)h(user.)62 645 y(The)h(net)o(w)o(ork)g(mo)q(dules)f(for)g(Kermit)g(ma)o(y)f(corrupt)j (messages)f(as)f(w)o(ell)g(as)h(discarding)g(them;)f(Kermit)g(treats)i (cor-)0 695 y(rupted)e(messages)f(similarly)d(to)i(timeout)g(signals)g (b)o(y)h(requesting)h(re-transmission)e(of)g(the)i(last)e(message)h (sen)o(t.)62 746 y(Th)o(us,)h(the)g(transp)q(ort)h(la)o(y)o(er)e(of)g (Alternating)h(Bit)f(Kermit)g(is)h(correct)h(if)e(and)g(only)g(if)g (the)h(ABP)h(is)e(correct.)23 b(Imme-)0 796 y(diately)13 b(w)o(e)h(ha)o(v)o(e)g(the)h(follo)o(wing)c(theorem:)0 890 y Fs(Theorem)k(10)20 b Fp(A)o(ny)15 b(message)f(sent)h(by)f(the)g (tr)n(ansp)n(ort)g(layer)g(of)g(one)h(agent,)f(if)g(it)g(is)g(not)g (lost)g(or)g(c)n(orrupte)n(d)g(mor)n(e)f(than)0 940 y(R)n(etryLimit)h (times,)g(eventual)r(ly)h(is)g(r)n(e)n(c)n(eive)n(d)f(by)h(the)g(tr)n (ansp)n(ort)f(layer)h(of)f(the)h(other)g(agent.)62 1034 y Ft(In)g(addition,)e(if)h(all)f(rules)j(in)o(v)o(olving)c Fp(R)n(etryLimit)18 b Ft(w)o(ere)d(to)g(b)q(e)g(remo)o(v)o(ed)f(from)f (our)h(description)i(of)e(Kermit,)f(it)i(can)0 1084 y(b)q(e)e(pro)o(v)o (ed)f(that)g(the)g(only)f(regular)h(Kermit)g(runs)g(whic)o(h)g(do)g (not)g(terminate)f(are)h(\\unfair")f(runs;)i(that)f(is,)g(runs)h(in)e (whic)o(h)0 1134 y(the)i(mo)q(dules)e(whic)o(h)g(discard)i(or)f (corrupt)h(messages)f(in)o(terfere)h(do)f(not)g(allo)o(w)e(the)j(other) f(net)o(w)o(ork)g(mo)q(dules)f(to)h(transmit)0 1184 y(messages.)0 1325 y Fr(8)67 b(Alternating)24 b(Bit)f(Kermit:)30 b(The)22 b(Datalink)i(La)n(y)n(er)0 1417 y Ft(The)13 b(datalink)f(la)o(y)o(er)h (of)f(Kermit)g(translates)i(the)g(abstract)g(domain)c(of)j(\\messages") f(in)o(to)h(strings)g(whic)o(h)g(ma)o(y)e(b)q(e)j(trans-)0 1467 y(mitted)19 b(across)i(the)g(net)o(w)o(ork.)37 b(The)20 b(string)h(corresp)q(onding)g(to)f(a)f(Kermit)h(message)g(is)g(the)g (concatenation)h(of)e(the)0 1516 y(follo)o(wing:)62 1611 y Fq(\017)i Ft(A)16 b(\014xed)g(n)o(um)o(b)q(er)g(of)f(padding)g(c)o (haracters,)j(needed)g(b)o(y)d(some)h(implem)o(en)o(tations)d(to)j (allo)o(w)f(an)g(agen)o(t)h(to)g(detect)104 1660 y(the)f(b)q(eginning)f (of)g(a)h(message.)20 b(The)15 b(n)o(um)o(b)q(er)f(of)g(padding)g(c)o (haracters,)i(as)f(w)o(ell)f(as)h(the)g(c)o(haracters)h(themselv)o(es,) 104 1710 y(are)e(determined)g(during)g(the)g(initial)e(negotiations.)62 1796 y Fq(\017)21 b Ft(A)14 b(sp)q(ecial)g(\\mark")e(c)o(haracter,)j (denoting)e(the)i(true)f(start)h(of)e(the)i(message.)62 1882 y Fq(\017)21 b Ft(The)11 b(length)f(of)f(the)i(\\true")g(message)f (\(consisting)h(of)e(the)i(length,)g(message)f(n)o(um)o(b)q(er,)f (message)i(t)o(yp)q(e,)g(and)f(datum\),)104 1932 y(enco)q(ded)15 b(as)f(a)g(single)f(prin)o(table)h(c)o(haracter.)62 2017 y Fq(\017)21 b Ft(The)14 b(message)g(n)o(um)o(b)q(er,)e(enco)q(ded)k (as)e(a)f(single)h(prin)o(table)f(c)o(haracter.)62 2103 y Fq(\017)21 b Ft(The)14 b(message)g(t)o(yp)q(e)g(sym)o(b)q(ol.)62 2189 y Fq(\017)21 b Ft(The)14 b(datum)f(b)q(eing)g(sen)o(t.)62 2275 y Fq(\017)21 b Ft(A)11 b(c)o(hec)o(ksum)f(computed)g(on)h(the)g (whole)f(string)h(pro)q(duced)h(so)f(far,)f(excluding)h(the)g(padding)f (and)h(mark)e(c)o(haracters,)104 2324 y(enco)q(ded)k(as)e(a)g(few)h (prin)o(table)f(c)o(haracters)i(\(dep)q(enden)o(t)h(on)d(the)h(c)o(hec) o(ksum)g(algorithm)c(selected)14 b(during)d(the)h(initial)104 2374 y(negotiations\).)62 2460 y Fq(\017)21 b Ft(A)14 b(sp)q(ecial)g(end-of-line)f(c)o(haracter.)62 2554 y(Th)o(us,)f(all)f (that)h(is)g(required)h(to)e(mo)q(dify)f(for)h(the)i(datalink)e(la)o(y) o(er)g(of)g(Kermit)g(is)h(to)g(pro)o(vide)g(more)f(sp)q(eci\014c)i (de\014nitions)0 2604 y(for)f(the)i Fp(Msg)t Ft(,)e Fp(T)m(yp)n(e)s Ft(,)h Fp(Data)s Ft(,)g(and)g Fp(Num)j Ft(functions)c(sp)q(eci\014ed)j (earlier.)j(W)m(e)12 b(sho)o(w)h(their)g(de\014nitions)g(in)f(Fig.)g (26,)g(where)i(+)0 2654 y(denotes)i(string)f(concatenation)g(and)g(the) g(b)q(eha)o(vior)g(of)f(previously)h(unsp)q(eci\014ed)h(functions)f (should)g(b)q(e)g(clear)g(from)e(the)0 2704 y(ab)q(o)o(v)o(e)h (descriptions.)p eop %%Page: 33 33 33 32 bop 0 50 a Fk(8.1)41 b(Correctness)1605 b Ft(33)p 0 198 1950 3 v 314 248 a Fp(Msg\(typ)n(e,)15 b(data,)g(num\))h(=)e (Pad\(PadChar,PadL)n(en\))j(+)d(Mark)h(+)g(BOD)o(Y)767 298 y(+)g(T)m(oChar\(ChkSum\(BOD)o(Y\)\))g(+)g(Eol)359 348 y(\(wher)n(e)f(BOD)o(Y)h(=)g(T)m(oChar\(L)n(ength\(data\)+3\))g(+)g (T)m(oChar\(num\))677 397 y(+)f(typ)n(e)h(+)g(data\))314 497 y(T)m(yp)n(e\(msg\))g(=)344 547 y Fh(if)i Fp(Chksum\(Substr\(D)o(A) m(T)m(A,2,LEN\)\))d Fq(6)p Ft(=)p Fp(UnChar\(Substr\(D)o(A)m(T)m (A,LEN+2,1\)\))344 597 y Fh(then)j Fp(\\Q")e Fh(else)j Fp(Substr\(D)o(A)m(T)m(A,4,1\))314 646 y(Data\(msg\))e(=)e(Substr\(D)o (A)m(T)m(A,5,LEN-3\))314 696 y(Num\(msg\))h(=)g(UnChar\(Substr\(D)o(A)m (T)m(A,3,1\)\))802 746 y(\(wher)n(e)f(D)o(A)m(T)m(A)g(=)h (FindStr\(msg,)f(Mark\))816 796 y(and)i(LEN)f(=)g(UnChar\(Substr\(D)o (A)m(T)m(A,2,1\)\)\))p 0 868 V 576 1001 a Ft(Figure)f(26:)j (De\014nitions)d(of)f(datalink)g(functions.)62 1142 y(W)m(e)g(also)g (mo)q(dify)f(the)i Fp(Corrupt)j Ft(function)c(\(whic)o(h)h(corrupts)h (messages)e(in)g(transit\))h(to)g(mo)q(dify)d(messages)j(in)f(suc)o(h)h (a)0 1192 y(manner)e(that)h(the)g(alteration)f(is)h(detectable)h(b)o(y) e(the)i Fp(Chksum)i Ft(function)c(as)h(de\014ned)h(here.)19 b(Certainly)12 b(a)h(message)f(could)0 1242 y(b)q(e)18 b(altered)g(and)f(still)f(pass)i(this)f(t)o(yp)q(e)h(of)e(test;)k(ho)o (w)o(ev)o(er,)d(there)i(is)e(no)g(w)o(a)o(y)g(in)f(general)i(to)f(b)q (e)h(certain)f(that)h(a)e(giv)o(en)0 1292 y(message)d(has)g(b)q(een)h (unaltered)g(b)o(y)f(transmission)f(through)h(an)g(unreliable)g (medium.)i(Man)o(y)e(c)o(hec)o(ksum)g(functions)g(ha)o(v)o(e)0 1342 y(b)q(een)19 b(dev)o(elop)q(ed)f(whic)o(h)g(can)g(detect)h(most)e (t)o(yp)q(es)h(of)f(errors)j(common)14 b(in)k(net)o(w)o(ork)g (transmissions;)g([DaC)o(])f(sp)q(eci\014es)0 1391 y(three)e (di\013eren)o(t)g(c)o(hec)o(ksum)f(functions)g(whic)o(h)g(ma)o(y)e(b)q (e)i(used)h(in)e(Kermit.)0 1532 y Fg(8.1)56 b(Correctness)0 1617 y Ft(Since)15 b(the)f(only)g(c)o(hanges)g(w)o(e)h(ha)o(v)o(e)e (made)g(in)h(the)h(datalink)d(la)o(y)o(er)i(are)g(to)g(the)h(functions) f Fp(Msg)t Ft(,)g Fp(T)m(yp)n(e)s Ft(,)f Fp(Data)s Ft(,)i(and)f Fp(Msg)t Ft(,)0 1667 y(the)g(correctness)j(of)d(the)g(datalink)f(la)o (y)o(er)g(is)h(directly)g(related)h(to)e(the)i(relationships)e(b)q(et)o (w)o(een)j(these)f(functions:)0 1781 y Fs(Theorem)g(11)20 b Fp(F)m(or)13 b(any)h(symb)n(ol)e(t,)h(datum)h(d,)f(and)h(message)f (numb)n(er)g(n,)h(T)m(yp)n(e)f(\(Msg)g(\(t,d,n\)\))g(=)g(t,)f (Data\(Msg\(t,d,n\)\))0 1831 y(=)j(d,)f(and)i(Num\(Msg\(T,d,n\)\))f(=)g (n.)0 1940 y Fs(Pro)q(of.)e Ft(Immediate)e(from)i(the)h(de\014nitions)g (giv)o(en)f(ab)q(o)o(v)o(e.)18 b Fb(2)0 2102 y Fr(9)67 b(Sliding)25 b(Windo)n(ws)e(Kermit)0 2201 y Ft(Since)18 b(the)g(basic)g(Kermit)f(proto)q(col)g(w)o(as)h(standardized,)g(a)g(n)o (um)o(b)q(er)f(of)g(optional)f(extensions)i(to)g(Kermit)e(ha)o(v)o(e)i (b)q(een)0 2251 y(dev)o(elop)q(ed.)24 b(A)16 b(Kermit)f(agen)o(t)h(can) g(b)q(e)g(instructed)h(to)f(act)g(as)g(a)f(\014le)h(serv)o(er,)h(b)q (oth)f(sending)g(and)g(receiving)g(\014les)g(from)0 2301 y(the)e(other)g(agen)o(t)f(at)g(her)h(request.)19 b(A)13 b(proto)q(col)g(extension)h(is)f(de\014ned)i(for)d(enco)q(ding)i(8-bit) e(data)h(for)g(transmission)f(o)o(v)o(er)0 2350 y(7-bit)h(net)o(w)o (orks.)20 b(Most)14 b(of)f(these)j(extensions)f(can)f(b)q(e)h(mo)q (deled)e(easily)h(using)g(ev)o(olving)e(algebras,)i(but)g(do)g(not)g (pro)o(vide)0 2400 y(m)o(uc)o(h)e(of)h(a)g(c)o(hallenge.)18 b(W)m(e)12 b(describ)q(e)j(here)g(an)e(optional)f(extension)i(of)f (greater)h(in)o(terest:)19 b(the)14 b(use)g(of)f(a)g(sliding)f(windo)o (w)0 2450 y(proto)q(col.)62 2504 y(If)18 b(b)q(oth)g(sides)g(agree)h (to)f(the)g(use)h(of)e(sliding)g(windo)o(ws,)h(eac)o(h)g(agen)o(t)g(ma) o(y)e(use)i(Kermit's)f(v)o(ersion)h(of)g(the)g(sliding)0 2554 y(windo)o(w)12 b(proto)q(col)g(while)g(\014le)h(data)f(is)g(b)q (eing)h(transmitted)f(in)g(states)h Fp(ssdat)k Ft(and)12 b Fp(sr)n(dat)t Ft(.)17 b(The)c(standard)g(ABP)h(is)e(used)h(in)0 2604 y(all)g(other)i(states.)21 b(The)15 b(sp)q(eci\014cation)g(giv)o (en)f(in)g([DaC)o(])g(is)g(a)g(com)o(bination)e(of)i(the)h(session)g (and)f(transp)q(ort)h(la)o(y)o(ers,)f(with)0 2654 y(the)f(sliding)e (windo)o(w)g(proto)q(col)h(used)h(in)f(place)h(of)e(the)i(ABP)m(.)f (Consequen)o(tly)m(,)g(w)o(e)h(presen)o(t)g(transition)f(rules)h(for)f (Kermit's)0 2704 y(use)j(of)e(sliding)g(windo)o(ws)g(whic)o(h)h(are)g (a)g(com)o(bination)d(of)i(the)i(session)g(and)e(transp)q(ort)i(la)o(y) o(er)f(rules.)p eop %%Page: 34 34 34 33 bop 0 50 a Ft(34)1241 b Fk(9.)40 b(SLIDING)14 b(WINDO)o(WS)f (KERMIT)0 195 y Fg(9.1)56 b(New)18 b(F)-5 b(unctions)0 276 y Ft(The)13 b(sender)h(agen)o(t)f(has)f(a)h(priv)n(ate)f(function)g Fp(WinMsg:)19 b(inte)n(gers)14 b Fq(!)f Fp(messages)j Ft(whic)o(h)c(is)h(used)g(to)g(store)g(messages)g(that)0 326 y(ha)o(v)o(e)k(b)q(een)g(sen)o(t;)i(the)e(receiv)o(er)h(agen)o(t)f (has)g(a)f(corresp)q(onding)i(function)e Fp(WinData:)26 b(inte)n(gers)17 b Fq(!)g Fp(data)j Ft(used)d(to)g(store)0 375 y(data)c(that)g(has)h(b)q(een)g(receiv)o(ed.)19 b(Both)14 b(agen)o(ts)f(ha)o(v)o(e)g(a)g(priv)n(ate)g(function)g Fp(WinA)n(ck:)19 b(inte)n(gers)14 b Fq(!)g Fp(Bo)n(ol)k Ft(whic)o(h)13 b(indicates)0 425 y(whic)o(h)h(messages)g(ha)o(v)o(e)f (b)q(een)i(ac)o(kno)o(wledged.)62 477 y(Both)g(agen)o(ts)g(ha)o(v)o(e)g (priv)n(ate)f(functions)h Fp(WinL)n(o,)h(WinHi:)21 b(inte)n(gers)c Ft(whic)o(h)e(indicate)g(the)g(curren)o(t)h(windo)o(w)e(b)q(ound-)0 527 y(aries.)23 b(A)15 b(global)f(static)h(function)g Fp(WinMax:)23 b(inte)n(gers)18 b Ft(indicates)e(the)f(largest)h(windo)o (w)e(size)i(p)q(ermitted;)g(as)f(sho)o(wn)g(in)0 577 y(section)d(5,)f(at)f(least)i(2)s Fq(\003)s Fo(W)6 b(inM)f(ax)11 b Ft(distinct)g(messages)g(are)g(needed)i(to)e(use)h(a)e(windo)o(w)h (of)f(size)i Fo(W)6 b(inM)f(ax)p Ft(.)16 b(Consequen)o(tly)m(,)0 627 y(w)o(e)e(assume)g(that)f(all)g(our)h(arithmetic)f(with)g(resp)q (ect)k(to)c(message)h(n)o(um)o(b)q(ers)f(is)h(done)g(mo)q(dulo)e(2)d Fq(\003)g Fo(W)d(inM)f(ax)p Ft(.)62 679 y(A)16 b(function)g Fp(Windows:)23 b(Bo)n(ol)d Ft(indicates)c(whether)i(or)d(not)h(the)h (sliding)d(windo)o(ws)i(proto)q(col)g(is)f(to)h(b)q(e)g(used)h(during)0 728 y(data)d(transmission.)i(Its)f(v)n(alue)e(is)h(determined)g(during) f(the)i(initial)d(proto)q(col)h(negotiations.)0 856 y Fg(9.2)56 b(T)-5 b(ransition)18 b(Rules)0 937 y Ft(Rule)f Fc(GetInput)p Ft(,)j(presen)o(ted)g(in)d(Fig.)g(13,)h(attempts)f(to)h (get)g(a)g(new)g(input)g(message)f(whenev)o(er)j(there)f(is)f(no)f (message)0 987 y(a)o(v)n(ailable)12 b(\(except)k(in)d(the)i(initial)d (state)j(of)f(the)h(sender,)g(since)g(the)g(sender)h(m)o(ust)d(send)i (the)g(\014rst)g(message\).)j(In)c(Sliding)0 1036 y(Windo)o(ws)d (Kermit,)g(w)o(e)h(only)e(wish)i(to)f(obtain)g(messages)h(at)f(sp)q (eci\014c)i(momen)o(ts;)d(in)h(particular,)h(w)o(e)f(need)i(to)f (disable)f(this)0 1086 y(automatic)h(retriev)n(al)h(of)g(messages)h (when)g(our)f(sliding)g(windo)o(w)f(is)i(in)f(op)q(eration.)18 b(Th)o(us,)13 b(w)o(e)h(need)g(to)g(disable)f Fc(GetInput)0 1136 y Ft(for)i(certain)g(v)n(alues)g(of)g Fp(Mo)n(de)s Ft(.)22 b(The)15 b(mo)q(di\014ed)f(transition)h(rule)g(is)g(sho)o(wn)g (in)g(Fig.)f(27.)21 b(F)m(urther,)15 b(w)o(e)h(add)e(the)i(Bo)q(olean)0 1186 y(condition)11 b(\()p Fo(W)6 b(indow)q(s)12 b Ft(=)g Fo(f)t(al)q(se)p Ft(\))i(to)e(the)h(outermost)e(guard)h(of)g(rules)h Fp(SSD)o(A)m(T)18 b Ft(and)12 b Fp(SRD)o(A)m(T)18 b Ft(presen)o(ted)c (in)e(section)g(6.2.)p 0 1295 1950 3 v 342 1345 a Fe(Rule:)18 b(GetInput)342 1394 y Fh(if)e Fp(L)n(ayer)f(=)g(session)g Fh(and)h Fp(Unde\014ne)n(d\(R)n(e)n(cvdT)m(yp)n(e\))h Fh(and)f Fp(\(Mo)n(de)f Fq(6)p Ft(=)p Fp(ssini)g Fh(or)478 1444 y Fp(\(Windows)g(=)g(true)f Fh(and)i Fp(Mo)n(de)g Fq(62)e(f)p Fp(ssdat,)h(ssdatr)n(otate,)f(sr)n(dat,)1076 1494 y(sr)n(datnak,)h(sr)n(datr)n(otate)p Fq(g)p Fp(\)\))f Fh(then)410 1544 y Fp(L)n(ayer)g(:=)h(tr)n(ansp)n(ort,)f(T)m(r)n(ansp)n (ortCommand)g(:=)h(r)n(e)n(c)n(eive)342 1594 y Fh(endif)p 0 1666 V 478 1798 a Ft(Figure)f(27:)j(Mo)q(di\014ed)d(transition)g (rule)g(for)f(receiving)i(input.)62 1900 y(Once)e(the)f(sender)h(arriv) o(es)e(in)g(state)h Fp(ssdat)k Ft(during)11 b(a)g(sliding)f(windo)o(w)g (\014le)h(transfer,)i(she)f(rep)q(eatedly)g(sends)h(messages)0 1950 y(un)o(til)i(an)h(ac)o(kno)o(wledgmen)o(t)e(arriv)o(es,)i(the)h (windo)o(w)e(of)g(unac)o(kno)o(wledged)h(messages)g(\014lls,)g(or)g (the)g(en)o(tire)h(\014le)f(has)g(b)q(een)0 2000 y(sen)o(t.)26 b(The)16 b(transition)g(rule)g(for)g(sending)g(messages)g(in)g(state)h Fp(ssdat)j Ft(is)c(sho)o(wn)g(in)g(Fig.)f(28,)h(and)g(corresp)q(onds)i (to)e(rule)0 2050 y Fc(SendMessage)g Ft(of)d(the)i(SWP)f(sho)o(wn)f(in) h(Fig.)f(8.)62 2102 y(If)e(ac)o(kno)o(wledgmen)o(ts)f(within)g(the)i (sender's)g(windo)o(w)f(are)g(w)o(aiting)f(to)h(b)q(e)g(pro)q(cessed,)j (the)d(appropriate)h(windo)o(w)e(slots)0 2151 y(are)15 b(mark)o(ed)f(as)h(ac)o(kno)o(wledged)g(and)g(con)o(trol)f(passes)j(to) d Fp(ssdatr)n(otate)s Ft(,)h(whic)o(h)f(rotates)i(the)g(windo)o(w)e (forw)o(ard)g(as)h(far)g(as)0 2201 y(p)q(ossible.)21 b(Otherwise,)16 b(a)f(retry)h(mec)o(hanism)d(is)h(used)i(to)f (re-transmit)f(certain)i(messages)f(a)f(limited)f(n)o(um)o(b)q(er)h(of) g(times.)0 2251 y(The)i(transition)f(rule)h(for)g(pro)q(cessing)h(ac)o (kno)o(wledgmen)o(ts)d(in)h(state)i Fp(ssdat)j Ft(is)15 b(sho)o(wn)h(in)f(Fig.)g(29,)g(and)g(corresp)q(onds)j(to)0 2301 y(rule)c Fc(Pro)q(cessAck)h Ft(of)e(the)h(SWP)g(sho)o(wn)g(in)g (Fig.)e(8.)62 2353 y(The)18 b(rules)g(for)g Fp(ssdatr)n(otate)i Ft(slide)d(the)h(sender's)h(windo)o(w)e(forw)o(ard)g(as)h(far)f(as)g(p) q(ossible.)30 b(Additionally)m(,)15 b(if)i(all)f(ac-)0 2403 y(kno)o(wledgmen)o(ts)j(ha)o(v)o(e)g(b)q(een)i(receiv)o(ed)g(for)f (a)f(particular)h(\014le,)h(w)o(e)f(send)h(the)f(end-of-\014le)g Fo(Z)j Ft(indicator)c(and)h(resume)0 2452 y(normal)13 b(Kermit)h(op)q(erations.)21 b(The)16 b(transition)e(rule)h(for)g Fp(ssdatr)n(otate)i Ft(is)e(sho)o(wn)g(in)f(Fig.)g(30,)g(and)h(corresp) q(onds)i(to)e(rule)0 2502 y Fc(SlideSenderWin)i Ft(of)d(the)g(SWP)g (sho)o(wn)g(in)f(Fig.)g(8.)62 2554 y(In)f(state)h Fp(sr)n(dat)t Ft(,)e(the)i(receiv)o(er)g(using)f(sliding)f(windo)o(ws)g(pro)q(cesses) k(data)c(\()p Fo(D)q Ft(\))i(messages)f(within)f(the)h(curren)o(t)i (windo)o(w)0 2604 y(b)o(y)k(storing)h(the)g(receiv)o(ed)h(data)f(and)f (sending)h(an)g(ac)o(kno)o(wledgmen)o(t)e(message.)32 b(When)19 b(the)g(end-of-\014le)f Fo(Z)k Ft(message)0 2654 y(arriv)o(es,)c(the)g(receiv)o(er)h(clears)f(his)f(windo)o(w)g(of) f(all)h(data)g(whic)o(h)g(has)g(b)q(een)i(receiv)o(ed)f(but)g(not)f(y)o (et)h(shifted)f(out)h(of)e(the)0 2704 y(windo)o(w.)21 b(Finally)m(,)13 b(if)i(a)g(timeout)f(or)h(corrupted)i(message)e(arriv) o(es,)g(a)g(negativ)o(e)g(ac)o(kno)o(wledgmen)o(t)f(\(NAK\))i(message)f (is)p eop %%Page: 35 35 35 34 bop 0 50 a Fk(9.2)41 b(T)m(ransition)12 b(Rules)1514 b Ft(35)p 0 325 1950 3 v 319 375 a Fe(Rule:)19 b(SSD)o(A)m(T:Windo)o (ws:1)319 425 y Fh(if)e Fp(Mo)n(de)e(=)g(ssdat)g Fh(and)h Fp(Windows)g(=)e(true)h Fh(and)h Fp(Unde\014ne)n(d\(F)m(etchT)m(yp)n (e\))g Fh(then)387 474 y(if)h Fp(Se)n(qNo)e Fq(\000)g Fp(WinL)n(o)h Ft(+)f Fp(1)g Fq(\024)g Fp(WinMax)h Fh(and)g Fp(T)m(extT)m(oSend)g Fq(6)p Ft(=)p Fo(\017)f Fh(then)455 524 y Fp(WinMsg\(Se)n(qNo\))h(:=)523 574 y(Msg\(\\D",)g(Enc)n(o)n(dePr) n(e\014x\(T)m(extT)m(oSend,EINF)o(O\),)f(Se)n(qNo\))455 624 y(SEND\(\\D",)h(Enc)n(o)n(dePr)n(e\014x\(T)m(extT)m(oSend,)g(EINF)o (O\),)f(Se)n(qNo\))455 674 y(T)m(extT)m(oSend)g(:=)g(R)n(emainder\(T)m (extT)m(oSend,)g(EINF)o(O\))455 724 y(Se)n(qNo)g(:=)g(Se)n(qNo)g(+)g(1) 387 773 y Fh(else)j Fp(GET)319 823 y Fh(ENDIF)p 0 895 V 375 1028 a Ft(Figure)c(28:)k(T)m(ransition)13 b(rule)h(for)f(sending) i(data)e(using)h(sliding)e(windo)o(ws.)p 0 1368 V 358 1417 a Fe(Rule:)19 b(SSD)o(A)m(T:Windo)o(ws:2)358 1467 y Fh(if)e Fp(Mo)n(de)e(=)g(ssdat)g Fh(and)h Fp(Windows)g Fh(and)g Fp(De\014ne)n(d\(F)m(etchT)m(yp)n(e\))g Fh(then)426 1517 y(if)h Fp(WinL)n(o)e Fq(\024)g Fp(F)m(etchNo)h Fq(\024)f Fp(Se)n(qNo)g Fh(then)494 1567 y(if)i Fp(F)m(etchT)m(yp)n(e)e(=)f(\\Y") i Fh(then)562 1617 y Fp(WinA)n(ck\(F)m(etchNo\))f(:=)g(true,)f(R)n (etry\(F)m(etchNo\))h(:=)f(0)562 1666 y(Cle)n(ar\(F)m(etchT)m(yp)n(e\)) 562 1716 y Fh(if)j Fp(F)m(etchNo)e(=)f(WinL)n(o)i Fh(then)h Fp(Mo)n(de)e(:=)g(ssdatr)n(otate)f Fh(endif)494 1766 y(endif)494 1816 y(if)j Fp(F)m(etchT)m(yp)n(e)e(=)f(\\N")i Fh(then)g Fp(RETR)m(Y\(F)m(etchNo\))g Fh(endif)494 1866 y(if)h Fp(F)m(etchT)m(yp)n(e)e(=)f(\\T")h Fh(then)i Fp(RETR)m(Y\(WinL)n (o\))f Fh(endif)494 1916 y(if)h Fp(F)m(etchT)m(yp)n(e)e Fq(62)f(f)p Fp(\\Y",)h(\\N",)g(\\T",)g(\\Q")p Fq(g)g Fh(then)i Fp(ERR)o(OR)f Fh(endif)426 1965 y(endif)358 2015 y(endif)358 2115 y Fe(Abb)o(reviation:)k(RETRY\(num\))358 2165 y Fh(if)d Fp(R)n(etry\(num\))e Fo(>)g Fp(R)n(etryLimit)f Fh(then)j Fp(ERR)o(OR)358 2214 y Fh(else)426 2264 y Fp(Q\(Y)m(ou\))e (:=)f(Q\(Y)m(ou\))h Ft(++)h Fp(WinMsg\(num\))426 2314 y(R)n(etry\(num\))f(:=)g(R)n(etry\(num\))g(+)f(1,)h(Cle)n(ar\(F)m (etchT)m(yp)n(e\))358 2364 y Fh(endif)p 0 2436 V 247 2569 a Ft(Figure)f(29:)j(T)m(ransition)c(rule)h(for)g(receiving)g(ac)o (kno)o(wledgmen)o(ts)f(using)g(sliding)g(windo)o(ws.)p eop %%Page: 36 36 36 35 bop 0 50 a Ft(36)1241 b Fk(9.)40 b(SLIDING)14 b(WINDO)o(WS)f (KERMIT)p 0 198 1950 3 v 464 248 a Fe(Rule:)19 b(SSD)o(A)m(TROT)m(A)m (TE)464 298 y Fh(if)e Fp(Mo)n(de)e(=)g(ssdatr)n(otate)f Fh(then)532 348 y(if)j Fp(WinA)n(ck\(WinL)n(o\))f(=)e(true)h Fh(then)600 397 y Fp(WinA)n(ck\(WinL)n(o\))h(:=)e(false,)g(WinL)n(o)i (:=)e(WinL)n(o)i(+)f(1)532 447 y Fh(elseif)i Fp(WinL)n(o)f(=)f(Se)n (qNo)g Fh(and)h Fp(T)m(extT)m(oSend)f(=)g Fo(\017)g Fh(then)600 497 y Fp(TSEND\(\\Z",)p Fo(\017)p Fp(\),)h(GOTO\(ss\014l\))532 547 y Fh(else)i Fp(GOTO\(ssdat\))532 597 y Fh(endif)464 646 y(endif)p 0 718 V 545 851 a Ft(Figure)c(30:)j(T)m(ransition)c(rule) h(for)g(state)h Fp(ssdatr)n(otate)s Ft(.)0 977 y(generated)g(for)f(the) g(oldest)h(message)e(in)h(the)g(curren)o(t)i(windo)o(w)d(not)g(y)o(et)i (receiv)o(ed.)k(The)14 b(transition)g(rule)g(for)g(state)g Fp(sr)n(dat)0 1027 y Ft(is)g(giv)o(en)f(in)h(Fig.)e(31;)h(it)h(corresp) q(onds)i(to)d(rule)h Fc(AcceptMessage)i Ft(of)e(the)g(SWP)g(sho)o(wn)g (in)f(Fig.)g(8.)62 1077 y(In)18 b(state)h Fp(sr)n(datnak)t Ft(,)h(the)e(receiv)o(er)i(generates)g(a)e(NAK)g(message)g(for)g(the)h (unac)o(kno)o(wledged)f(message)g(within)f(his)0 1126 y(windo)o(w)h(with)g(the)i(lo)o(w)o(est)f(message)f(n)o(um)o(b)q(er.)32 b(If)19 b(there)h(are)f(no)g(suc)o(h)g(messages,)h(the)f(receiv)o(er)h (generates)h(a)d(NAK)0 1176 y(message)13 b(for)h(the)g(\014rst)g (message)f(outside)h(of)f(the)h(windo)o(w)f(\()p Fp(i.e.)18 b Ft(the)c(next)g(message)g(exp)q(ected)h(b)o(y)f(the)g(receiv)o(er\))h (only)e(if)0 1226 y(this)i(NAK)g(w)o(as)g(generated)h(b)o(y)e(a)h (timeout)e(condition.)20 b(The)15 b(transition)f(rule)h(for)f(state)i Fp(sr)n(datnak)j Ft(is)c(giv)o(en)f(in)g(Fig.)g(32;)0 1276 y(it)g(has)g(no)f(corresp)q(onding)i(rule)f(in)g(the)g(SWP)m(.)62 1326 y(Messages)j(arriving)e(outside)g(of)g(the)h(curren)o(t)h(windo)o (w)d(require)j(that)e(the)h(receiv)o(er's)h(windo)o(w)d(b)q(e)i (shifted)g(forw)o(ard;)0 1375 y(con)o(trol)11 b(passes)h(to)f(state)h Fp(sr)n(datr)n(otate)i Ft(to)d(accomplish)e(this.)18 b(State)11 b Fp(sr)n(datr)n(otate)j Ft(rotates)e(the)f(receiv)o(er's)i (windo)o(w)d(forw)o(ard)0 1425 y(un)o(til)h(the)i(just-receiv)o(ed)g (datum)e(can)h(b)q(e)h(placed)g(in)o(to)e(the)i(message.)k(A)o(t)12 b(the)h(same)e(time,)f(all)h(the)i(data)f(whic)o(h)g(is)g(shifted)0 1475 y(out)h(of)g(the)g(windo)o(w)g(is)g(stored)h(in)f(the)g(output)h (\014le.)k(The)13 b(transition)g(rule)g(is)g(sho)o(wn)h(in)e(Fig.)g (33;)h(it)g(corresp)q(onds)i(to)e(rule)0 1525 y Fc(SlideReceiverWin)k Ft(of)c(the)i(SWP)f(sho)o(wn)g(in)f(Fig.)g(8.)0 1640 y Fg(9.3)56 b(Correctness)0 1716 y Ft(The)16 b(pro)q(of)e(of)h (correctness)j(for)d(this)g(extension)h(to)f(Kermit)f(is)h(similar)e (to)i(that)g(for)g(the)g(b)q(ounded)h(SWP)f(presen)o(ted)i(in)0 1766 y(section)e(5.)i(W)m(e)d(p)q(oin)o(t)f(out)h(here)h(the)g(main)c (similarities)h(and)h(di\013erences)k(b)q(et)o(w)o(een)e(the)f(proto)q (cols.)62 1816 y(The)h(principal)e(di\013erence)j(b)q(et)o(w)o(een)f (the)g(t)o(w)o(o)e(proto)q(cols)i(is)e(that)h(Kermit)g(runs)g(for)g(a)g (\014nite)g(amoun)o(t)e(of)h(time.)18 b(The)0 1866 y(Kermit)d(sender)i (m)o(ust)e(w)o(ait)g(to)g(send)i(the)f Fo(Z)j Ft(message)d(un)o(til)f (ev)o(ery)h(message)f(con)o(taining)g(data)g(from)f(the)j(curren)o(t)g (\014le)0 1915 y(has)12 b(b)q(een)h(successfully)h(ac)o(kno)o(wledged.) j(In)12 b(addition,)f(the)i(Kermit)e(receiv)o(er)j(m)o(ust)d(rotate)h (all)f(messages)h(in)g(the)g(curren)o(t)0 1965 y(windo)o(w)h(out)h(of)f (the)i(windo)o(w)e(\(and)h(in)o(to)f(the)h(output)g(\014le\))g(once)h (the)f(end-of-\014le)g(\()p Fo(Z)s Ft(\))g(message)g(has)g(b)q(een)h (receiv)o(ed.)62 2015 y(Agen)o(ts)k(ma)o(y)c(re-transmit)i(lost)h (messages)g(more)e(often)i(in)f(the)i(Kermit)d(proto)q(col)i(than)g(in) f(the)h(SWP)m(,)f(since)h(the)0 2065 y(receiv)o(er)13 b(can)f(generate)h(NAKs)f(for)g(missing)e(messages)h(at)h(certain)g (times.)k(This)c(do)q(es)g(not)g(a\013ect)g(the)h(correctness)h(of)d (the)0 2115 y(proto)q(col;)k(it)f(ma)o(y)m(,)f(ho)o(w)o(ev)o(er,)i (impro)o(v)o(e)e(p)q(erformance)i(as)g(the)h(serv)o(er)g(ma)o(y)d(not)i (w)o(ait)f(as)h(long)g(in)f(order)i(to)f(re-transmit)0 2164 y(a)f(lost)f(or)h(garbled)g(message.)62 2214 y(The)f(w)o(a)o(y)e (in)g(whic)o(h)h(the)h(agen)o(ts)f(slide)g(their)g(windo)o(ws)g(is)f (di\013eren)o(t)i(in)f(the)g(t)o(w)o(o)g(proto)q(cols.)17 b(In)12 b(the)h(SWP)m(,)e(the)h(sender)0 2264 y(ma)o(y)j(slide)h(her)h (windo)o(w)f(in)g(parallel)g(with)g(the)h(sending)g(of)f(new)h (messages;)h(in)e(Kermit,)g(the)h(sender)h(m)o(ust)e(slide)g(her)0 2314 y(windo)o(w)h(separately)h(from)e(sending)i(new)g(messages.)29 b(In)17 b(the)i(SWP)m(,)d(the)i(receiv)o(er)i(ma)o(y)15 b(slide)j(his)f(windo)o(w)g(b)o(y)g(large)0 2364 y(amoun)o(ts;)e(in)g (Kermit,)g(the)h(receiv)o(er)h(slides)f(his)f(windo)o(w)g(only)g(b)o(y) h(single)f(messages.)23 b(The)16 b(net)h(result)f(is)f(the)i(same)d(in) 0 2414 y(eac)o(h)g(case.)62 2463 y(The)h(size)h(of)e(the)h(agen)o(ts')g (windo)o(ws)f(is)g(determined)h(during)f(the)i(initial)c(proto)q(col)j (negotiation,)e(but)i(is)f(at)h(most)e(32)0 2513 y(\(since)i(Kermit)e (uses)i(only)e(64)g(message)h(n)o(um)o(b)q(ers\).)62 2563 y(Immediately)d(w)o(e)j(ha)o(v)o(e)g(the)g(follo)o(wing)e (theorem:)0 2646 y Fs(Theorem)j(12)20 b Fp(Every)f(message)g(sent)g(by) g(Sliding)g(Windows)g(Kermit)e(is)i(eventual)r(ly)g(r)n(e)n(c)n(eive)n (d)f(and)h(suc)n(c)n(essful)r(ly)g(ac-)0 2696 y(know)r(le)n(dge)n(d.)p eop %%Page: 37 37 37 36 bop 0 50 a Fk(9.3)41 b(Correctness)1605 b Ft(37)p 0 238 1950 3 v 319 288 a Fe(Rule:)18 b(SRD)o(A)m(T:Windo)o(ws)319 337 y Fh(if)e Fp(Mo)n(de)g(=)e(sr)n(dat)h Fh(and)h Fp(Windows)f Fh(and)i Fp(De\014ne)n(d\(F)m(etchT)m(yp)n(e\))f Fh(then)386 387 y(if)h Fp(F)m(etchT)m(yp)n(e)e(=)f(\\D")i Fh(then)454 437 y Fp(DSEND\(\\Y",)g Fo(\017)p Fp(,)f(F)m(etchNo\))454 487 y Fh(if)i Fp(WinL)n(o)e Fq(\024)h Fp(F)m(etchNo)f Fq(\024)g Fp(WinHi)g Fh(then)522 537 y Fp(WinData\(F)m(etchNo\))h(:=)f (F)m(etchData,)g(WinA)n(ck\(F)m(etchNo\))g(:=)g(true)522 587 y(GOTO\(sr)n(dat\))454 636 y Fh(else)j Fp(GOTO\(sr)n(datr)n (otate\))454 686 y Fh(endif)386 736 y(endif)386 786 y(if)f Fp(F)m(etchT)m(yp)n(e)e(=)f(\\Z")j Fh(then)454 836 y(if)g Fp(WinL)n(o)e Fq(\024)h Fp(WinHi)f Fh(then)522 885 y Fp(FileT)m(ext\(FileNo\))f(:=)g(FileT)m(ext\(FileNo\))g Ft(+)900 935 y Fp(De)n(c)n(o)n(de\(WinData\(WinL)n(o\),DINF)o(O\))522 985 y(WinL)n(o)i(:=)e(WinL)n(o)i(+)e(1,)h(WinA)n(ck\(WinL)n(o\))h(:=)e (false)454 1035 y Fh(else)522 1085 y Fp(Se)n(qNo)i(:=)e(F)m(etchNo+1,)h (FileNo)f(:=)h(FileNo)f(+)h(1)522 1135 y(DSEND\(\\Y",)h Fo(\017)p Fp(,)f(F)m(etchNo\),)g(GOTO\(sr\014l\))454 1184 y Fh(endif)386 1234 y(endif)386 1284 y(if)i Fp(F)m(etchT)m(yp)n(e) e(=)f(\\Q")i Fh(or)g Fp(F)m(etchT)m(yp)n(e)f(=)g(\\T")g Fh(then)454 1334 y Fp(Mo)n(de)h(:=)e(sr)n(datnak,)h(Counter)g(:=)f (WinL)n(o)386 1384 y Fh(endif)386 1433 y(if)j Fp(F)m(etchT)m(yp)n(e)e Fq(62)f(f)p Fp(\\D",)i(\\Z",)f(\\Q",)h(\\T")p Fq(g)f Fh(then)h Fp(ERR)o(OR)g Fh(endif)319 1483 y(endif)p 0 1555 V 394 1688 a Ft(Figure)e(31:)j(T)m(ransition)c(rule)h(for)g(state) g Fp(sr)n(dat)k Ft(using)13 b(sliding)g(windo)o(ws.)p 0 1853 V 362 1903 a Fe(Rule:)19 b(SRD)o(A)m(TNAK)362 1953 y Fh(if)e Fp(Mo)n(de)e(=)g(sr)n(datnak)g Fh(then)430 2003 y(if)i Fp(Counter)d Fq(\024)i Fp(WinHi)f Fh(then)498 2053 y(if)i Fp(WinA)n(ck\(Counter\))e(=)f(false)h Fh(then)566 2102 y Fp(DSEND\(\\N",)p Fo(\017)p Fp(,)h(Counter\),)e(GOTO\(sr)n (dat\))498 2152 y Fh(else)k Fp(Counter)d(:=)f(Counter)h(+)g(1)498 2202 y Fh(endif)430 2252 y(else)498 2302 y(if)i Fp(F)m(etchT)m(yp)n(e)d (=)h(\\T")g Fh(then)i Fp(DSEND\(\\N",)p Fo(\017)p Fp(,)f(WinHi+1\))f Fh(endif)498 2351 y Fp(GOTO\(sr)n(dat\))430 2401 y Fh(endif)362 2451 y(endif)p 0 2523 V 566 2656 a Ft(Figure)f(32:)j(T)m(ransition)c (rule)h(for)g(state)g Fp(sr)n(datnak)t Ft(.)p eop %%Page: 38 38 38 37 bop 0 50 a Ft(38)958 b Fk(11.)40 b(P)m(AR)m(TIALL)m(Y)13 b(ORDERED)g(R)o(UNS)h(OF)g(KERMIT)p 0 198 1950 3 v 352 248 a Fe(Rule:)19 b(SRD)o(A)m(TROT)m(A)m(TE)352 298 y Fh(if)e Fp(Mo)n(de)f(=)e(sr)n(datr)n(otate)g Fh(then)420 348 y(if)j Fp(WinHi+1)e Fq(\024)g Fp(F)m(etchNo)g Fh(then)488 397 y Fp(DSEND\(\\N",)p Fo(\017)p Fp(,)h(WinHi\))488 447 y Fh(if)h Fp(WinHi)e Fq(\000)g Fp(WinL)n(o)g(+)g(1)g(=)g(WinMax)h Fh(then)556 497 y Fp(FileT)m(ext\(FileNo\))e(:=)g(FileT)m (ext\(FileNo\))g Ft(+)934 547 y Fp(De)n(c)n(o)n(de\(WinData\(WinL)n (o\),DINF)o(O\))556 597 y(WinL)n(o)i(:=)e(WinL)n(o)i(+)e(1,)h(WinA)n (ck\(WinL)n(o\))h(:=)e(false)488 646 y Fh(endif)488 696 y Fp(WinHi)h(:=)g(WinHi)g(+)f(1)420 746 y Fh(else)488 796 y Fp(WinData\(F)m(etchNo\))i(:=)f(F)m(etchData,)g(WinA)n(ck\(F)m (etchNo\))g(:=)g(true)488 846 y(GOTO\(sr)n(dat\))352 895 y Fh(ENDIF)p 0 967 V 546 1100 a Ft(Figure)f(33:)j(T)m(ransition)c (rule)h(for)g(state)g Fp(sr)n(datr)n(otate)s Ft(.)0 1234 y Fr(10)66 b(Kermit)24 b(Initialization)0 1325 y Ft(The)17 b(\014rst)f(messages)h(sen)o(t)f(b)o(y)g(eac)o(h)h(agen)o(t)f(in)f(a)h (Kermit)g(\014le)g(transfer)h(\(that)f(is,)g(the)h(sender's)g(\\S")f (message)f(and)h(the)0 1375 y(receiv)o(er's)f(\014rst)f(\\Y")e (message\))h(con)o(tain)g(initialization)e(parameters.)17 b(The)d(com)o(bination)d(of)h(these)j(t)o(w)o(o)e(sets)h(of)f(param-)0 1425 y(eters)19 b(uniquely)e(determine)h(information)c(of)j(imp)q (ortance)g(to)g(the)h(proto)q(col)g(\(for)f(example,)g(the)h(maxim)n (um)13 b(message)0 1475 y(length)h(to)g(b)q(e)g(used\).)62 1525 y(The)h Fp(HANDLE-INITS)j Ft(transition)c(rules)g(handle)g(the)g (setting)h(of)e(these)i(parameters.)j(W)m(e)c(presen)o(t)h(some)e(of)h (these)0 1575 y(rules)k(in)f(Fig.)f(34,)h(lea)o(ving)f(the)i(reader)h (to)e(deduce)i(the)f(b)q(eha)o(vior)f(of)f(previously)i(unsp)q (eci\014ed)h(functions.)28 b(Rules)17 b(for)0 1625 y(handling)c(other)h (parameter)g(initializations)d(are)k(similar.)0 1764 y Fr(11)66 b(P)n(artially)26 b(Ordered)c(Runs)h(of)f(Kermit)0 1856 y Ft(In)17 b(all)f(our)g(proto)q(col)h(pro)q(ofs)g(presen)o(ted)i (ab)q(o)o(v)o(e,)e(w)o(e)g(used)h(sequen)o(tial)f(runs.)27 b(In)17 b(distributed)h(computations)d(suc)o(h)j(as)0 1905 y(those)g(of)e(Kermit,)h(sequen)o(tial)g(runs)g(are)h(to)q(o)f (restructiv)o(e;)j Fp(e.g.)27 b Ft(mo)o(v)o(es)16 b(of)g(the)i(sender)g (and)f(receiv)o(er)i(ma)o(y)c(certainly)0 1955 y(o)o(v)o(erlap)e(in)h (time.)i(F)m(ortunately)m(,)d(our)h(theorems)g(surviv)o(e)g(when)g(w)o (e)h(consider)f(partial)f(runs)i(\(de\014ned)g(in)e([Gur]\).)62 2005 y(Our)j(safet)o(y)f(prop)q(erties)i(are)f(of)e(the)i(form)d(\\Ev)o (ery)j(state)g(reac)o(hable)g(in)e(a)h(regular)g(run)h(satis\014es)g (prop)q(ert)o(y)g(\010")f(and)0 2055 y(are)g(pro)o(v)o(ed)g(b)o(y)f (induction)g(o)o(v)o(er)h(regular)g(sequen)o(tial)f(runs.)21 b(Recall)14 b(that)h(a)f(sequen)o(tial)h(run)g(is)f Fp(r)n(e)n(gular)19 b Ft(if)13 b(it)i(satis\014es)g(a)0 2105 y(sp)q(eci\014ed)g(set)g(of)e (initial)f(conditions.)18 b(Call)12 b(a)i(partial)e(run)j Fp(r)n(e)n(gular)i Ft(if)c(its)h(initial)d(state)k(satis\014es)g(the)f (same)f(set)i(of)e(initial)0 2155 y(conditions.)20 b(It)14 b(is)h(sho)o(wn)f(in)g([Gur])g(that)g(a)h(prop)q(ert)o(y)g(\010)g (holds)f(in)g(ev)o(ery)h(reac)o(hable)g(state)h(of)e(a)g(partially)f (ordered)j(run)0 2205 y Fo(\032)g Ft(if)f(it)h(holds)f(in)g(ev)o(ery)i (reac)o(hable)f(state)h(of)e(ev)o(ery)i(linearization)d(of)h Fo(\032)p Ft(;)i(eac)o(h)f(of)g(these)h(linearizations)e(is)g(a)h (sequen)o(tial)0 2254 y(run)g(of)e(the)i(program)e(in)h(question.)23 b(Th)o(us,)15 b(ev)o(ery)h(safet)o(y)g(result)g(for)f(regular)g(sequen) o(tial)h(runs)g(giv)o(es)f(the)h(same)e(result)0 2304 y(for)g(regular)f(partial)g(runs.)62 2355 y(Our)g(liv)o(eness)f(prop)q (erties)i(ha)o(v)o(e)e(the)h(form)d(\\Ev)o(ery)i(fair)g(run)g (satis\014es)h(suc)o(h)g(and)f(suc)o(h)h(prop)q(ert)o(y)m(.")k(Our)c (de\014nition)f(of)0 2404 y(sequen)o(tial)h(fair)f(runs)i(relies)g (implicitly)9 b(on)k(the)h(total)e(ordering)h(of)g(steps)h(in)f(a)g (run;)g(consequen)o(tly)m(,)g(w)o(e)g(need)h(a)f(di\013eren)o(t)0 2454 y(de\014nition)f(of)g(fairness)g(for)g(partially)f(ordered)i (runs.)19 b(Recall)11 b(that)i(a)f(sequen)o(tial)g(run)h(is)f Fp(fair)k Ft(if)11 b(for)h(ev)o(ery)h(p)q(ositiv)o(e)f(agen)o(t)0 2504 y Fo(X)19 b Ft(and)c(ev)o(ery)i(tail)d Fo(\032)343 2489 y Fd(0)371 2504 y Ft(of)h Fo(\032)p Ft(,)h(if)e Fo(X)19 b Ft(is)d(enabled)g(in\014nitely)e(often)i(in)f Fo(\032)1112 2489 y Fd(0)1124 2504 y Ft(,)g(then)i Fo(X)i Ft(m)o(ust)14 b(mak)o(e)g(a)h(mo)o(v)o(e)f(in)h Fo(\032)1731 2489 y Fd(0)1744 2504 y Ft(.)22 b(W)m(e)16 b(call)e(a)0 2554 y(partially)e(ordered)j(run)g Fo(\032)f Fp(fair)j Ft(if)c(some)h(linearization)e(of)h Fo(\032)i Ft(is)e(fair.)62 2604 y(With)k(this)h(new)g(de\014nition,)f(it)h(can)f(b)q(e)i(seen)f (that)g(an)o(y)f(of)g(our)h(fairness)g(prop)q(erties)h(of)e(sequen)o (tial)g(runs)i(can)e(b)q(e)0 2654 y(pro)o(v)o(ed)f(o)o(v)o(er)f (partially)f(ordered)j(runs)f(as)g(w)o(ell.)22 b(As)16 b(an)f(example,)g(consider)h(Theorem)f(2,)g(whic)o(h)h(asserts)h(that)e (in)g(an)o(y)0 2704 y(sequen)o(tial)f(fair)f(run)h(of)g(the)g(ABP)m(,)g (an)o(y)f(datum)g(sen)o(t)h(is)g(ev)o(en)o(tually)f(receiv)o(ed.)p eop %%Page: 39 39 39 38 bop 1908 50 a Ft(39)p 0 672 1950 3 v 307 722 a Fh(if)17 b Fp(L)n(ength\(R)n(e)n(cvdData\))f Fq(\025)f Fp(1)g Fh(then)375 772 y(if)i Fp(MAXL)d Fq(\025)i Fp(10)f Fh(then)i Fp(MaxMsgL)n(en)f(:=)e(MAXL)375 821 y Fh(else)k Fp(MaxMsgL)n(en)e(:=)f(80)g Fh(endif)307 871 y(endif)307 921 y(if)i Fp(L)n(ength\(R)n(e)n(cvdData\))f Fq(\025)f Fp(2)g Fh(then)375 971 y(if)i Fp(TIME)e Fo(>)g Fp(0)g Fh(then)i Fp(Time)n(outL)n(en)d(:=)h(TIME)375 1021 y Fh(else)j Fp(Time)n(outL)n(en)d(:=)f(5)h Fh(endif)307 1070 y(endif)307 1120 y(if)i Fp(L)n(ength\(R)n(e)n(cvdData\))f Fq(\025)f Fp(3)g Fh(then)375 1170 y(if)i Fp(NP)m(AD)e Fo(>)g Fp(0)g Fh(then)i Fp(PadL)n(en)e(:=)g(NP)m(AD)g Fh(else)j Fp(PadL)n(en)d(:=)g(0)g Fh(endif)307 1220 y(endif)307 1270 y(if)i Fp(L)n(ength\(R)n(e)n(cvdData\))f Fq(\025)f Fp(4)g Fh(then)i Fp(PadChar)e(:=)g(P)m(ADC)f Fh(endif)307 1320 y(if)j Fp(L)n(ength\(R)n(e)n(cvdData\))f Fq(\025)f Fp(5)g Fh(then)375 1369 y(if)i Fp(2)e Fq(\024)g Fp(EOL)g Fq(\024)g Fp(31)g Fh(then)i Fp(Eol)e(:=)f(EOL)375 1419 y Fh(else)k Fp(Eol)d(:=)f(CarriageR)n(eturn)g Fh(endif)307 1469 y(endif)307 1519 y(if)j Fp(L)n(ength\(R)n(e)n(cvdData\))f Fq(\025)f Fp(6)g Fh(then)375 1569 y(if)i Fp(32)e Fq(\024)g Fp(QCTL)f Fq(\024)e Ft(63)i Fh(or)j Fp(95)e Fq(\024)g Fp(QCTL)f Fq(\024)i Fp(127)f Fh(then)i Fp(CtlPr)n(e\014x)d(:=)h(QCTL) 375 1618 y Fh(else)j Fp(CtlPr)n(e\014x)c(:=)h(\\#")g Fh(endif)307 1668 y(endif)307 1768 y Fp(wher)n(e)f(MAXL)h(=)g (UnChar\(Substr\(R)n(e)n(cvdData,1,1\)\))424 1818 y(TIME)g(=)g (UnChar\(Substr\(R)n(e)n(cvdData,2,1\)\))424 1867 y(NP)m(AD)g(=)g (UnChar\(Substr\(R)n(e)n(cvdData,3,1\)\))424 1917 y(P)m(ADC)g(=)g (Ctl\(Substr\(R)n(e)n(cvdData,4,1\)\))424 1967 y(EOL)g(=)g (Unchar\(Substr\(R)n(e)n(cvdData,5,1\)\))424 2017 y(QCTL)g(=)f (Substr\(R)n(e)n(cvdData,6,1\))p 0 2089 V 331 2222 a Ft(Figure)g(34:)k(Some)12 b(transition)i(rules)g(of)g(the)g Fp(HANDLE-INITS)19 b Ft(abbreviation.)p eop %%Page: 40 40 40 39 bop 0 50 a Ft(40)1623 b Fk(REFERENCES)0 195 y Fs(Theorem)15 b(13)20 b Fp(In)f(every)g(fair)f(run)i Fo(\032)p Fp(,)g(every)f(datum)g (sent)g(is)g(eventual)r(ly)g(r)n(e)n(c)n(eive)n(d.)31 b(That)18 b(is,)i(if)e(the)h(sender)g(sends)0 245 y(a)f(datum)g Fo(d)f Fp(during)g(a)h(move)g Fo(\026)p Fp(,)g(ther)n(e)f(exists)g(a)h (move)g Fo(\027)h Fp(during)f(which)f(the)h(r)n(e)n(c)n(eiver)e(ac)n(c) n(epts)i Fo(d)f Fp(and)h(wher)n(e)f Fo(\027)i(>)d(\026)p Fp(.)0 295 y(Mor)n(e)n(over,)d(ther)n(e)g(is)f(a)i(c)n(onstant)g Fo(N)k Fp(such)13 b(that)g(every)g(initial)g(se)n(gment)g(of)g Fo(\032)h Fp(c)n(ontaining)g(mor)n(e)e(than)i Fo(N)k Fp(moves)13 b(c)n(ontains)0 345 y Fo(\027)s Fp(.)0 436 y Fs(Pro)q(of.)g Ft(W)m(e)h(sho)o(w)g(\014rst)h(that)f Fo(\032)h Ft(con)o(tains)f(a)f(mo)o(v)o(e)g Fo(\027)j Ft(of)e(the)g(receiv)o(er)i(accepting)f Fo(d)p Ft(,)e(where)i Fo(\026)d(<)g(\027)s Ft(.)18 b(Since)d Fo(\032)f Ft(is)g(fair,)f(let)0 486 y Fo(\032)21 471 y Fd(0)47 486 y Ft(b)q(e)h(a)g(linearization)f(of) g Fo(\032)h Ft(whic)o(h)g(is)g(fair.)j(Theorem)c(2)h(sho)o(ws)g(that)g Fo(\032)1150 471 y Fd(0)1176 486 y Ft(m)o(ust)f(con)o(tain)g(the)i (desired)g Fo(\027)s Ft(.)62 535 y(Let)i Fo(I)h Ft(=)d Fq(f)p Fo(\026)268 520 y Fd(0)295 535 y Ft(:)f Fo(\026)346 520 y Fd(0)373 535 y Fq(6)p Fo(>)h(\027)s Fq(g)p Ft(.)23 b(Since)17 b Fo(\032)f Ft(is)g(a)f(partial)g(run,)i Fo(I)i Ft(is)d(\014nite.)24 b(Let)17 b Fo(N)j Ft(=)15 b Fq(k)p Fo(I)s Fq(k)p Ft(.)24 b(By)16 b(the)h(de\014nition)e(of)h Fo(I)s Ft(,)g(if)f(an)0 585 y(initial)d(segmen)o(t)i Fo(\033)h Ft(of)e Fo(\032)i Ft(con)o(tains)f(more)f(than)h Fo(N)19 b Ft(mo)o(v)o(es,)12 b Fo(\033)j Ft(either)g(con)o(tains)f Fo(\027)i Ft(or)e(a)g(mo)o(v)o(e)e Fo(\027)1528 570 y Fd(0)1553 585 y Ft(suc)o(h)j(that)f Fo(\027)g(<)e(\027)1840 570 y Fd(0)1851 585 y Ft(.)18 b(But)0 635 y(since)d Fo(\033)g Ft(is)e(do)o(wn)o(w)o(ard)h(closed,)g Fo(\033)h Ft(m)o(ust)e(con)o (tain)g Fo(\027)j Ft(as)e(w)o(ell.)j Fb(2)62 720 y Ft(All)c(other)i (pro)q(ofs)f(of)f(fairness)h(can)g(b)q(e)h(applied)e(to)h(partially)e (ordered)j(runs)g(in)e(a)h(similar)d(manner.)0 858 y Fr(References)0 949 y Ft([BSW])39 b(K.)11 b(A.)h(Bartlett,)g(R.)f(A.)h (Scan)o(tlebury)m(,)f(and)h(P)m(.)f(T.)g(Wilkinson,)f(\\A)i(note)g(on)f (reliable)h(full-duplex)e(transmission)158 998 y(o)o(v)o(er)k (half-duplex)f(links",)f Fp(Communic)n(ations)j(of)g(the)g(A)o(CM)p Ft(,)e(v)o(olume)f(12)i(\(1969\),)e(no.)h(5,)h(pp.)f(260{261,)f(265.)0 1081 y([DaC])51 b(F.)13 b(DaCruz,)h Fp(Kermit:)k(A)d(File)f(T)m(r)n (ansfer)g(Pr)n(oto)n(c)n(ol)t Ft(,)f(Digital)e(Press,)k(1987.)0 1164 y([Gur])62 b(Y.)13 b(Gurevic)o(h,)g(\\Ev)o(olving)e(Algebras)i (1993:)k(Lipari)12 b(Guide",)g(in)h Fp(Sp)n(e)n(ci\014c)n(ation)i(and)f (V)m(alidation)g(Metho)n(ds)s Ft(,)g(ed.)158 1214 y(E.)g(B\177)-21 b(orger,)14 b(Oxford)g(Univ)o(ersit)o(y)f(Press,)j(1995.)0 1297 y([Kr])86 b(F.)13 b(Kr\177)-21 b(oger,)15 b Fp(T)m(emp)n(or)n(al)f (L)n(o)n(gic)g(of)h(Pr)n(o)n(gr)n(ams)s Ft(,)e(Springer-V)m(erlag,)g (1987.)0 1380 y([LM])70 b(K.)16 b(G.)f(Larsen)i(and)e(R.)g(Milner,)h (\\A)g(Comp)q(ositional)d(Proto)q(col)j(V)m(eri\014cation)f(Using)h (Relativized)g(Bisim)o(ula-)158 1430 y(tion,")d Fp(Information)h(and)i (Computation)s Ft(,)e(v)o(olume)e(99)h(\(1992\),)g(no.)g(1,)g(pp.)h (80{108.)0 1513 y([SL])85 b(A.)13 b(U.)g(Shank)n(ar)g(and)g(S.)g(S.)g (Lam,)f(\\A)h(Step)o(wise)h(Re\014nemen)o(t)f(Heuristic)h(for)g(Proto)q (col)f(Construction,")g Fp(A)o(CM)158 1563 y(T)m(r)n(ansactions)i(on)g (Pr)n(o)n(gr)n(amming)f(L)n(anguages)i(and)g(Systems)s Ft(,)e(v)o(olume)e(14)h(\(1992\),)g(no.)g(3,)g(pp.)h(417{461.)0 1646 y([T)m(an])63 b(A.)13 b(S.)h(T)m(anen)o(baum,)d Fp(Computer)k(Networks)s Ft(,)e(Pren)o(tice-Hall,)h(1981.)0 1729 y([W)m(al])61 b(J.)14 b(W)m(alrand,)e Fp(Communic)n(ation)j (Networks:)j(A)d(First)f(Course)s Ft(,)f(Aksen)i(Asso)q(ciates,)f (1991.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF