%!PS-Adobe-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: main.dvi %%Pages: 93 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: Times-Bold Times-Italic Times-Roman Courier %%+ Courier-Bold CMSY10 Helvetica PazoMath-Italic Palatino-Italic %%+ PazoMath CMR10 Palatino-Roman CMMI10 PazoMathBlackboardBold CMEX10 %%+ CMSY8 Courier-Oblique %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips main.dvi -o main.ps %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2003.06.12:1450 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}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{A A 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/IEn 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 IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A 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/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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 A 1 get A mul exch 0 get A 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/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 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/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/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: 8r.enc % File 8r.enc as of 2002-03-12 for PSNFSS 9 % % This is the encoding vector for Type1 and TrueType fonts to be used % with TeX. This file is part of the PSNFSS bundle, version 9 % % Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % % (6) /Euro is assigned to 128, as in Windows ANSI % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: bbad153f.enc % Thomas Esser, Dec 2002. public domain % % Encoding for: % cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 % /TeXbbad153fEncoding [ /minus /periodcentered /multiply /asteriskmath /divide /diamondmath /plusminus /minusplus /circleplus /circleminus /circlemultiply /circledivide /circledot /circlecopyrt /openbullet /bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal /greaterequal /precedesequal /followsequal /similar /approxequal /propersubset /propersuperset /lessmuch /greatermuch /precedes /follows /arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast /arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup /arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional /prime /infinity /element /owner /triangle /triangleinv /negationslash /mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur /latticetop /perpendicular /aleph /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 /union /intersection /unionmulti /logicaland /logicalor /turnstileleft /turnstileright /floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright /angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv /backslash /wreathproduct /radical /coproduct /nabla /integral /unionsq /intersectionsq /subsetsqequal /supersetsqequal /section /dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft /.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 /minus /periodcentered /multiply /asteriskmath /divide /diamondmath /plusminus /minusplus /circleplus /circleminus /.notdef /.notdef /circlemultiply /circledivide /circledot /circlecopyrt /openbullet /bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal /greaterequal /precedesequal /followsequal /similar /approxequal /propersubset /propersuperset /lessmuch /greatermuch /precedes /follows /arrowleft /spade /.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 /.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 ] def %%EndProcSet %%BeginProcSet: f7b6d320.enc % Thomas Esser, Dec 2002. public domain % % Encoding for: % cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 % cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 % cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 % cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 % /TeXf7b6d320Encoding [ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /exclamdown /equal /questiondown /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 /quotedblleft /bracketright /circumflex /dotaccent /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 /endash /emdash /hungarumlaut /tilde /dieresis /suppress /.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 /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash /suppress /dieresis /.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 /.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 ] def %%EndProcSet %%BeginProcSet: aae443f0.enc % Thomas Esser, Dec 2002. public domain % % Encoding for: % cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10 % /TeXaae443f0Encoding [ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi /omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf /arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft /arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle /twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle /sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash /greater /star /partialdiff /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 /flat /natural /sharp /slurbelow /slurabove /lscript /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 /dotlessi /dotlessj /weierstrass /vector /tie /psi /.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 /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi /tie /.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 /.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 ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}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 %%BeginFont: CMSY8 %!PS-AdobeFont-1.1: CMSY8 1.0 %%CreationDate: 1991 Aug 15 07:22:10 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put readonly def /FontBBox{-30 -955 1185 779}readonly def /UniqueID 5000818 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A 221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0 5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F 80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107 1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20 9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1 CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA F83C7D393392BCBC227771CDCB976E93302531886DDA73EBC9178917EFD0C20B 133F1E59AA9B568B69ECCFC0900517036FE3D4C09BBFD937BC5A9C0B89894A8F 63BCCA3746BA056D1B408B16E976D7BAA7D0F7693814ECF52D90BDB3398CF007 CAD14DF246B4D1886070D41A28110F88C9D3EB1F30B1823E0EAA1A35733AD321 E6338D62C26AB6FCD4BBB703248CD7C5CEE83E0167A63F89ACC9D09117C4D017 E773665CB7FA79D22231C8F858735B554E2ED612A436D299491FD31F810F202C C865B87083F980C8DF6A3DD43D437617A69D3E58FFE85F106F7E7F6E50D4D25E 328F7A76B73078B3604C51CCDEAEFA74ADFB9A6C3A5A0EBDCFB578CCBC3553F8 44D4B2853DC7C8415AE3174A4C2209F4107C23000ECC343882C5E2ECA42D8B33 F4846EB85076770BD7E5AF795E1EEEFDC5F0229761DE6BA728FA78549D6E31AC 55ECFE0C64351DCC357F619E3771692B7DF8FFD7FAF48B4299C702F866374FDC 696E83BF09BDB1C40B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.1: CMR10 1.00B %%CreationDate: 1992 Feb 19 19:54:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put readonly def /FontBBox{-251 -250 1009 969}readonly def /UniqueID 5000793 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C 295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C 4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF 2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E 0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B 43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC 96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3C8578EF9A20A0E06E 4F7ADDAF0E7D1E182D115BF1AD931977325AD391E72E2B13CC108E3726C11099 E2000623188AAAC9F3E233EB253BDD8B0A4759A66A113E066238B0086AC1B634 5ABFF90E4B5ED3FA69C22541981B2BFC9710AEF6B50A8BB53431C7B4D380D721 639E005D6B4688EE16BFF48443E7C9E5FB5BC5883E271CB03428966C96B6988B 2C9127404E8C64B122D405610B1207E61D6CB678BF414E64299C22D6B8DA233B 8E0E897EEAF81E43E962BD1DE1D8F24C8350761B0E688E433D01BCC9ADD5857E BE9564F01D501D5F99C4272CA490100395D23DEC1BE59A6DE8D20B90C61434C9 062B6856C5C61184BD58F20E01B447F6140CB149BD370D59069F121FCA8AC937 4A86AF9E00E141BE1F2B0DEF30A4AC17817E4B58B1A8921B990F237E64A938AD 284A1DAB4F3BF58231B22F57219F9BF0E38585D631CF24EB1DDCBB1EA6E3DB31 88D7C3F8D9EAF27F7239557A2D2EA7AC5AED0DC02CDB0A2C9E4D64C24C3616F3 AA98D473C46596DC975C149FD66CE806C4529D92B0173BBCDA0D18B2956E0F51 179D7861557A915D2AA59CE21800265DAF737E83C7B4E9C41F80195E51A95158 F9CEAFA5ABDEBCDF332BC7107FEA70FDE84269ACCD15BB35D961846217D54B02 88995D6A3304BF88EEA7ACB9C548195606C4E601789F3562E89A69C40BEA9167 D3F49BF39DB2D57630674554F297DA605A079220182EA752B31072D46E091410 D021BFC8B8A1E4D6E2AC110AE143BE32F407F6AAD2FEE259839BF6AEE1B7FAC4 7597F8E3347EFB48F3DDE6E9198354D1D408AD5657D41F5D11FE6B805FBFA2E2 F92F6332DDAD4AE77D30758E37B67866D6CEA29B6027812977B8D68A570904DF 47550EA6773ED0DFE830F8B80BBECAA80EC33DC5ACDD4E683E5B688F5D1F14FA A5778EE610C3FCF3429021E2A014F8B0B97BEAFFA7F3868E61B35678D54173BC 93A7BF29949C2814BB364594DA9ABAA2F2AEC654B0FB8C022B5775582D8CBA0D D1AD19333BD74415F40C24E839E48B674B003359EAB05AC8A0ABD358DA7E999D 1AFE8359E410DE798A76FBF289C701E5DC730913F6FC2FD9693C34013B47C8CF 84670F3925D2FB69CA3C2C61029C9FD1066AD2C1D640A556E226D7056118CBBB CB4C859D64B04B08751F3EFBDEF6F1F352DCBD682F73C89910D7A937D07ED50E 5DCA560DBAD3A96F708B639F62730A566E7D4D3C6C89BF3868707B721ED3ECD8 F185314C9D5B4E8456BC0B096F99F1A9AD67E40E0EBF19B06BFE1DE82BA32980 AA 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: PazoMath %!PS-AdobeFont-1.0: PazoMath 001.003 %%CreationDate: Fri May 17 11:17:28 2002 %%VMusage: 120000 150000 11 dict begin /FontInfo 14 dict dup begin /version (001.003) readonly def /Copyright ((c) Diego Puga, 2000, 2002.) readonly def /Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /FullName (Pazo Math) readonly def /FamilyName (PazoMath) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /Weight (Regular) readonly def end readonly def /FontName /PazoMath def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 198 /emptyset put dup 229 /summation put readonly def /PaintType 0 def /FontType 1 def /FontMatrix [0.00100 0 0 0.00100 0 0] readonly def /UniqueID 5116633 def /FontBBox {-40 -283 878 946} readonly def currentdict end currentfile eexec D9D66F633B846A989B9974B0179FC6CC445BCF7C3C3333173232E3FDBFF43949 1DB866C39088C203DC22FDC758584860EC7BB67FDA28CC6208249060E18FAB32 204779B5C03C0493BBBBC95CF02692CC4DEAA8D2EA90B5C2E64374E92BCB8501 429B8FAE4A76C0C6B76D6FF7CF9A7D5EDFBCA0E959541C59BD05B7DE43D25D53 FC3DDA6EF0C2743978A6D03E19CCED4A11F2EA4BCC3110BE8B8D9E2772361969 C19258EFAFDC276CB1ADE9208A941A36D18F9FB1C33DEF76AA315DD8F6FC13F6 956DF14F0BC043FC51433EF506A869D4DC4F4CC8551813BD4FB32A549ACA63E0 54D96D2899DF1C91C0DF800BE3BA3183ED98550A1B6E8341018E5958D6FE55D9 31F13205A8D7E8E8D272D572FA455E4F79A422E23BF4446DD2E07B074F30D20B 7B327FC652BF42CA69B3AF4EB4EDCC4DC3FDD9F6E97566FB964CB4941B14186F 90ACF11EB96EF5DBE23EE591471C6CBB1E5FEBED31B6233CF057945C928EEF4A BA00C461E2BD02E6845FABF2469862C1868AC67E9820944DF750735283EE93DB C5AC907F4DB0E3FFAA4879F572B8A31E142821042905BCE7CDD20581B4566DEF 6C7308188CA240DD953378AE17C8F146670B99CE786C72D24D538A986424AC14 F9616D0DF97D915C8E27F2F99C3BC0F97A7F58D0DA960A5241DB44CCC3AAD3EB B33F0BAFA3A307D3A12D586EBD694D666DEC2DE5F336192F0FC8CA12F2873A97 3A5233DB87054ABC74E097E919D8AFFE50E496365F3FF99CA21C0E7914253F12 97E11974DB6201F01987F082178ED90876E981DA2BC21E8A3E1BC06B64C0496B 6168202BDF877EE0627B3A422374E4B5F1AE5FB419EAF4012354EECFC0E86647 F34168C09224513607BB45FBBE45184DBE99D6276A99A79E5F72A0C22BC630F2 1C80258BFCB5CF958AA75E68D9A2B7BAE95BCBABBEA8CDD6D173A8B2829A91A8 202146B6BDBA12756472D83845580B897B0670DBA5093DE4BFF241556278867B FA4BD8F6B16BA3DB087744731F1B354F905CE1EC277700E17B3873714FF586D8 D8805E82BEEFFFD7E1A5BBC8064FCA6873AF4963E1AEB4556E9E50DEC15E6C86 9F6F483D23EBB55678821D43F68B570B0C2254239D644A205940CFCBC5D893A7 C6180C939327BD93B8DDAF770335D9255CDB6FBE2AFF74CAAE8D1CB13A12FA4F DBE9ECAD5A374C948FC10EF8049044A4BE109CA21B610D75453D75D618EF81DB BBD55B4C46DFC11592954E10D29A3C9F823445AEA45158E2946EBB55E87CD195 1AA77B2B2A73039B66EA4D2CAFA649D1AC291B0C7A3A82B7D9D7A60E0D3323A0 B709F40562D01C19C91E637A132BC8D6E023FED6817B1AECBA92325205A358F5 0893E39108F4A2128D046C3861AF304CD788C83E960F452C7FE3C53FD30C838C 3019AD019D719EF487B22532E8976800D6F7BD0FCCFF837E1CD0A59D88ABE3C8 FF2C7F99930FE769403B46E25CFC2041759BBC27CBA7D3F3F15E77B3FF03CA99 C867D2C9933AE39EC903795A6CB08AF08E8E864A163A4B146C17049270201098 006F532E9227C04A548A84E8652AE73A8A984BA235A8448523E4FB61522B5153 6AD69F860DA404DD8C5BB3FF454B2C31CB7BA76413412F7046CE9102494B520E DF15AFFCA053668051E605E96825738C499DB04C8D0972A9E22915D6453A0C46 FCF77C04DB06A8403149E46F78BB6AC81DE809BFBCF8A569CFE3C215686B71FE 3E96FD537BF84868DCED8D2F186DA1436F3EE8E6192E8598D13746B031AB6DB7 538DDFCE9441D1B20F0D8EDE5E0BEC400A624470B80644208DC905CCC7D131A2 2F9DDD18A15283213F9B0F7AAD043A61494EA09A3C18863494799AB90F0B0FF8 A490CE84D587DDD404831D268447DB51CDC11FBC541426DF090BD9760630CFFF 16DBAE0E230887AEED675B468DC2D3665ED8B8C46ED1B4A763CC46684C252AA2 E7CD068D67152D4608394B82E83877E96D5FF7F7C34ED8E4896E1A5FA86D1DB5 64A1B23D443CFE12D85553FCA47DE7003D92A42252C0BB59671471F7A62DE9A6 6C326AEEDFAF486F58FEF25284B5B5618A6762967822C188007FF162F64ED659 62C52C7A22BF7AF3BC490D23DB2A8D5B9649141BBE104795D5D90AA454C1E99D 802024B0727ED9A42949C0DB281F577FEB3FA5D85CB7E6B1733FCD50FD461780 04C1FF0F2606AE7022A336431017A9B4017D9A660E62AEC1DAB9EAB216693978 F919421FA0D6027EF8C615112A29AD57AF9DCF94E1553D2BEE7D6858FD8EB114 AACBAE769A5115F7BFDB68FB0C77BE269DE3B2C0C46E879C36143840EC16F66F 11B674E02030C1CED85BBEE7CAA241A4025CC664E5E816C918F29EC4F5EE9596 12E75395578DC185918A2DC7D4518AA69116755B434C734B170675CB21F366E2 5D3EB90ACD0A2157892D65BDA098161F8256986D51C0779DAE2CFAAF3F4C13FE 413330E4447790057C7B34824A7D11DCD5168A7A13539C7C8DDB7BB493FF97FB AC2679BFDF3654981CAADA75574B2BDED25612891F0B6306B6FC72E4B1EB87B2 D527B774C765D95BB5002C519339F0002D2FD0113F5AE59619AC0E8ED13E21F2 6DBAE2550DD4ACA051EA0A00301076763AA9EB8342C2773CE38E1EC3132A28B1 5C075DA951FF43872CEC6A2E0D9DCAA71C104CD1F5AAFFC8E3DF9C7E54D85674 D2DB93858819131F3644463D4D0C44A2E997EAA9F19E4E0F4227BB5B79B43DE9 4F521681FE70596EE39E400A6F1ADC0B240D3429A238019D63A8D9BA4F6171F6 B4F26DE03A13FC4CB15A15848581F21DB4FDCBE336D7AC19EC755071FBAE7969 8AB50506B0F52C55196D56988E5FCA6F75FFE97FB18171EE39B996833B796B8C B995B03EE89D82185B3B4E77769007C7BE80285AA5A62886457112DC04A0EE3D 603BEA4173B63A0E2E7FFE9382A570237B4D891245EB3074E0D4D426A37E511A 043B25D4477B713B015A306F1EEFB6689A4A6F9E339D15083D5CC2C528BB2F8D B988718EC8BDCEC7D015551B07AAD8C85C6196DC28076CF4C4A1C7C1F75CDEBB D4BD866647D52BA254D2E4B7016098432B37C053334806B316A54FF378DA0558 E3F663908D06EAD8E149AD5B28578E554F7DDB26D77984A9B045FAEDC2875F4D 6B2C1EA59D629B0FF93EB424BE46D39A4C3089716621AE996B4079044466CCDB EF218CD51F45D03D5D37D781421DC5CCBC42782E8F4F5E0F634244037384B363 72980DE4F1819DC2B4F825D7F2511A4545EEF703557590A7DCA2396B09832EEF 013173951D43521475AA7CD276380276718A1CE8072BD9C6FAB463713A17286F 426FA4A439A7AEA493BA7B5C7E21A60CED57553A7EF6DCE4B6B6FCBC76F3B17E 895A9862CA1C8B8A352C66B61716B0759B6F7E6A09C5569AE9974875994D74CA D21F2BA3847FEFCAC69325430B5D3E6CB35AC57D336F725851852CA820521400 5D23435F29429FB5CDCA5A64F6F99402D0CBC47395596FDC71FD33CD08DC2266 D52916A4B28267A0379899869E890761C465FB95D29BF2111F375F6157053FD3 BEE742201DF1DAA08840B0C10DEB9FCEAAB36A5EA2A97100F08DCF0572903E73 39E3755CB57669C4CAD7A5B5C1C57D7207017198783EFA7B22F7637EAF261FDE 90B6405ECD93D00520D83598FF61F895FBF74F7C88E4D253DC4480273BF46189 45298C9ECD217D39F41D9DA6007678BEC019E811BDF47C361ECE6679E9736F5E BB586085BA0D3CAACB23E88E9837C13FED0F68F1253A5EBEBC1FAC7DF1D7BFF8 7380261ADD959EF5179E1749160D9D78B2EAD54BA5AB5C1641DABB7641656463 8109CFFB81439FED84CDD9B1BAA499D1F0BDAC85441AF8C107294A75A0C7332A 76733BF02F14659337CA0058D798A83B8ADFEA0C9D3A1A2077BCBD36769B51D7 119F1C653AA8282B9C394D9078C8F7E0526C1606CC56FD72F3CB1E2C2873C274 1FA310B68291494090295D13410EDEDD7053F59F7CE84222989A7953CC5E5529 8E5DBDA2CD54950F5CCBC30E27BEAC15145A8F50E1C93642A27604D3768D8F63 1BCFF23884FEBF6A177BFE137F4F12E59497ED6CFB17569558F2634E40EEB902 C45E8AD620B57DAE44AEC0E36FF3F77CF7BD0576200024518774060C61979CF0 2502DF99153B8890FA8031DA56915674F3984DFBFEC6ADE496B32C25F002B350 99EABD946F996D24B02E89F35AA65FB45E2AB4415C48020C18EB94A228A0392F D462705545 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.1: CMSY10 1.0 %%CreationDate: 1991 Aug 15 07:20:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put readonly def /FontBBox{-29 -960 1116 775}readonly def /UniqueID 5000820 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A 221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A 27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF 5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A 71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C 515DB70A8D4F6146FE068DC1E5DE8BC57036519F4E72E76E041E60DC739B2906 AFA7A06FE903D993C8FC4DCB46E5D1FF37F627803666E55BC04CF88F13AFAE5C 4DC98EFCBBB252D8F3040289BB338F38814EB6201436662C91BCB7279B6F841C 85B5C275B42E979A406488CB6768878CAC7B4D1BF636011AF53084ACDCE0DFDA 8B7216128D34902083F5DE7C66A4E82F7295487F494DDE6C1DC2973881F9B169 09571FA0DBC8BB18CB7CB4C2D6FEA93CE590F88A727D7C04CAAE9983B241805D 7844ADD9D9EBB6A21BEE4DFB038912E100CCBF68D2752F11B80481F8D73F2217 5B88D9ABEA4757031EA86031CD3E64676FA4D5BB600B1C542EBDA956585D9C24 984AEB2C4E0B6FAF44AA8AAACD8CB50E253C3D750D4B1C0956F9649C4CA0D9B3 08030D370BC7C5E69A90BD16327E68DDE4109BE238B6B002D055A1603BA992CF E506F9292401EEACCD28A307200C786439FBB3258F7D29F8EFB5E8B7397B8550 66D1C7EE52F5C1E9A5ABF43150133C0DE353BA03FFBC5364F9DA6D7B4BBF7CEC EAAF7796EEF05865125A82399ED0FAAEE4BA359C06D7E190327A31972F417072 4F3DFF4CFEA11AE8C8A00B3F9783FB653C2E8A8FB0E97E25A3A4DC2AFF429B6E 941B65FFE3B7526CA4AE2757160A5FC39D718875CE3D173B50780BDC4D737851 D3CA3C29FBF7E868291FD090C3117B7EFD5F4CB7BE225D1CC1BF3CD0B4073212 151DC29E96A40C9A85DB769A67E9E1D9EC9D980CBCF1AA75184A4A49183C2A06 0D5F00A96D42D24CE600587283BCBA401B7C03CFB280E0856F94FD3541992845 A6B863ABB7B3822539C498C55CC30901B4F57AE4D5203B20FDC7083146769627 7118F218769B8168EE1E607F2D2DEED868BE97115BC1104A9A2684D5425DE481 C2487B566DA1D6C9F34A0D6D8B6B5781D0C583E4596600BCC6F940230F319376 08732C16E228A7710E8104FA7DB0BE1B0EB9582E9B5EC914C98CE35AAC6DB40D D0673FA55CA9D81961480E42BA92EF8040B8B209E0DBA9B0A85053898C162E08 F2B7FAEA91B4ED758033AABB8C350A6B87D5F55A7EA363BCE8F99AC1AF86F06B 7BC5E52765266ED4725AFED984AA75154B308971660F7BACDAE5F96D64C04C44 80668657DD8A161AED0C356E8D9248A0840AE25D3E185F6C114AD2AEEF07CC80 CBDF7422F6AE7C70DD92BE5A81480720052776FCA3053310E53681E092CCEA12 44146482B20A3E36DDB35A8541A7A1B1B776B200CD3613D28C1C8F62144156F1 787E4B901B4EF94331EF181A10D4296AF2236478839F5B3EAB415839B98D81B6 DFFD0F93E9106182F516F8E353F00357BB08C360BD8315A904D3CCD2917B7526 095A22AFE56B4BF3474AE554D473587BFA279DB151D1D1C9F447528858787454 EE912837095ED9E34923EA71AD578CFC4A1C3B20A27E00F45BABB7C042DE3659 27A78C3C5CF28870BC4BDD40DB9A2A4AEEE3C4F518C52D695831E48A0757BEE0 EFF7869E463FA0F70849D06260B82C1986E3A95B47C651E5951AC0E1B4F0DCED 7BFB4ADA391A4B9F033866008591868B1C659646C88FB356EEBADC7ABC8DD6B3 708F8A910F88DC354A6BB08BE144CE25D54D988C64D2B66BDD856505C85EDB29 8A1EFA0CBCE05B20E593CEBAFBD403DE99D5851734E4F0E65F135DBFE2E8720F EFB9287D7C302DBE2CA9FD0D4AB176030FB0B2F768A5852A15B8237405053E2F 433479F55670FA8C107AB2628D0A73F8B2540FF225C1D2776668A79C25618E6F 72482BD9575AD99C0467A9ECE4881C4F7CE32E35B571FEFB9867B17006DBE7C9 FAF86FDF731C5DF0E1CB275418C88181154944BD00789E79FCD04610F81C1AFE 2C25249D3467A7B0A051EE80BC72131F96B32771872055A7BFF2EB6586FD7DFF A28C389B5E2FDBE8477490FF36B9F93D9C29F8AD0B7F669992C616EF9C404A96 93FCFA5B1D609521AA41C5B04B792E747F148A0BFB111107E23B994C01940D87 E7ED33845265E05FC639DB3297B778AD33EDE5AC6A69825C40574BB03E0A6A6F 4B205C6B8A19B630C074138FFB91D8971EF721E17CF2301E1F9C066E0570BB0B 7FA4F46F93E611D447E94944610E83E9131176B33715C59BBE3ED86477B2CC57 3A3CEB223335D396392E7B6785EB7DE8A701DF4B72213AA6BEEAF4377A87BC3C 700CEEE3E1E61E0E3EFA3AE6EAEF3AB937DE3A9EA0B4834163C89B112D0E846B 7F13CBE5B18459643E31AC4376AD5710D099A9005EB3CD22D3D4E4C80E1647D6 1D511828FD1890631EFA1722730C0F64B7EEC8B1574AC0A4648B75F23825D95E 0CE227ED1F9FE2C246670C658FF0695BE938302C3181F9805719509B518D0DB9 B3025D09B0879520FBE685C6D6C8E82B74C899A5B8F2CB1C73FA0C73D80B4576 BB0B845EE9D5F49BB97C540BA61B35510F4D10ED05A9331E26CD3F50122D54A8 2BB1C9D5D1048DC812EAAB116700EC9B7177DB9AE772FCE4AF3074E6930F7DC2 32B303707F0375198AEE9E3B048A1779BF39008E736BCB89504BCE747CADD06B 42AD989B217C19C2E6647DDE55B2329933296CADA47CDAF3B6DBCA5D9ED8FB7D 27B3FA27E595C6AEB5E89926D57D4D1B59C967405E2D7269E39A9D010114E307 8395EA0BB54972FD8C41D7FDB5B8948C02CD6F2FD11E35C1DBA40CCA1D2FD2B9 C58FD5D1E3CB38D0A1DF7D11D2358F509809D0B040CBDD1A1AC4E099197DFA26 B7220514E17426762A2DD6431612C7672943EEE72B267AA7A837A5B3DA1F6BD9 340095B5D6C3F71EDF0449005698D8B23C999699FB510E59BBD4C5DACE9067D3 DFD69B2EF4601678F311D0AD7BEFC604D5A05AAC83A2A9EFA42C80B5D38D59C7 25FB20E065E95D6F19E7F181FA4705CE76DF1E5CB0E54A1C8F497ED2BED7E90A FDDA0FC2D8EE732358F73E25A5C927AA49E90960B5F9F047DEC0B946844B141D 9664A7EB4A8D8829F6B444B00ECFA3C675FAA12C396903BF3938286AADE3BD6A C5A25E65ABC6C9E985A0307C7947E930ED51554F05386B2FA4F074140C4B69FF C01CECDB6BBE5E60E75C4C99DFF78488F350B726D36FB77F6E85FC3F2FD29C14 1163E060EDC6C5F5170A9CE3499445B1FD1A0DC478AB2E5D5B5846A4201E6559 6E4DAEB2E67689909E841324CBBA63E039F7D24603F16F2CC0B4B82F24628ED5 4D8606561F83B8D9ABFEF929492C363E72D2C19DFBA24CD5CC1D78271BBEF0DD 5ABE8E550BB4700A4728A46A7F07788ECFB44E54D26F8503F701DA193A67BA6F 993E75024191DC15AEEC1A461EEE31CC6242DBB2F17C002CE977182B1AAE4625 BDE74CE2915C517269BD7A973BCB9891BBA7D66AC07746D1D7C34DA18D570662 671F2DBFC6999309639110F519628B85D29A5D4CE4097ADBA40A0E2D17A07712 EBC74FB138D3165ED3475C8D41222268625A9503C6ADAB876EE3C85786639DE0 970EA660CB7E266430464F3738B5A54E3E7A17109F4C1CBD532809EF1EF4454E BCDF35106F5D3B093A48F40D6FEF142475927BD5E3FAAA1B9C73519A2AB43DC7 D0F2BA876364EA4ACD8FFB66E51C11E4CB9D6BFD0B4664ABAC3DB8F7F8860A2D 5134559FA3D284364FA0AC8B0F328D55DED9A81ECA978CEA39B9B7460A5CF5D9 B62C4E642CD8D8127268325442EE43D520E1462F8DC89E4B642F947529FBB176 03ABE788CD05F452C6092F325BC43F48EBA9616B25DCF637D77269174D3619CF F289D0735A7E1BB8F8C1D8CA172CFCB911457F34A730D4A4A212A9FEC62374A2 0929BAABBF5C741C9D6BAB63C446E72931387CA21DF619C6F205E58630002109 618F77A5CE198ACD3E8B25C8E2B58D38DCB1B3824AD61011F150E9D9A31DC1A2 A5A8A8A5D0D11421B10C60C330047FCA01E0FEAB23389F8F81E367F7D14BD779 D81C2BC7DD1D893345D2CA99E4ADB3C734EB00CD18075B20326B7CA8AF9CECFF D5B98B96DA7189DC4DD352CD658909D345A88062CD6241A8E4295B64ED84FE95 0B2C59F56B826D060DD70D1CDBD10BC7A4A63599F71EF894EF5DA783CE770754 2405767FB8C34FA7D69B64D88DB66A085E7331AAC2541E3E2F43299C4149839C 89D38099EA60AF40FDC74A60D83B3F5D21CEE44E734306FBAF35C51CCF653CA9 6621F0D5CAC68EF293C883BF8C6DB8028E22C807BCCDF2CE3940C5E9D7465886 BAF0AD73D9E1B9E9B78BD54F3D0C837FFF0246DDC33C8667522BC21ED334E3D5 23031FCF767CB42CAF5C87614604E6FC049959C068EAC3DA3D17DB0979E4A947 28E0D7EC9CA61B7F99C4F6057723DC5C517F0E63CCA7AA2F1D58BD54F1268329 ADA20C896EF94785C71ABB6406708DC681571697C02D203D43B6502FEC38B9BA DFA61ABB0051D03237393BF20771C11510A7675E470F112B883830F3FB6DCB63 74298687BA7F2502170A8080A923671174418861D23699C6216B6C74718E3819 F2AAB945F5BD19F48595B047C785C5F6052321505CD709897EF253608CF1B6C9 E4A22DB6F7B1836F777EDF145B1646B247FFAF63370F397BB24227888DC28279 0D0B9CCEA665B208212D84A58EDB838CE7CEF9332AEDEA1C7B0770C8C1235A88 04111D9F1CD0C6B27C00D4B317EAC76E928210ED5B5888CAD6E3A5F1238003CD DEC7D32689B51D51116C201FCD133E1C6BDBF8D528D5DE820686707C1FDCDABF 7F72A33D825DF8DE4BE95CB4D1D12ECC11B1AD1BFBA516394856A09630DDED10 6D1F68DF34CB447C3EDC546AFC81CA111749F48BC17F787C459B1898105EA1ED 6DFC47C4E36497E63693397D027A12742F67F00FA07076DAC5742A8BCD9935D1 EAD39CDF433585D119A128256EB522A628DEAEEBF9DFAAC8228800A42B905EC6 DAEF60C53B6F6CB2A58C0891491633E4E1D1CD370111FFEB212A2753C5523FF3 7A8549C1659A05022FB3229F57FDBBD40C6D026814EE38910D05AD4CA1924131 70B590062383378E081E1C4395A6A4AE48D7AC8CCC42CD8CE41C16BFD1B09B1E 69F00E8D03A71CF90319206F9B03D0ADDD7C682A4B8E8275BF6BE87A88C83C96 8BB33550F7FC160D7950177886A8181CDDBD05371B6CA8C98441CBE06840E82B E1CED7DC840E9118F900232C3B3C3E4C9B92E1CCBA580ECDFC35BCA6AFDA7775 12976461731E9F41B88FFD4DA99EBF306EC1B6F3502CFB36F73FCD1BFB997204 C1C16F43C547DB30DF97739DD758C419BA342CC5BBFD0B702316F65F6AAB1110 26FFA5CD4CBD38DF18873ABD698788135B98B98A02FD7A8A09395FD8B9CF1511 413EE569E52609B3221AE8E184C709ADCE5BD4B410120DB3E4E2697526B2F1E3 6321332CA637E982C49C1A7A284D5D8C11BEDE6BEE3314C183354BA3980D7BC9 3C9065E4BBD762B3DD4C9F05DEB46CB317604ADC6002ABB7BE03A4116EC69616 FA3D38AF8B0791791BB86F47F29415F76FF84724BF5EFBF8B74F26DF563B1AD6 0606E1C981E07BAC1D1FD768BE701D95ACD5CD5E0618DCED028DC3A1C6A54E00 1558E772BB5C75F689B6DCE628DB1BE03A97941BEC38756796F1FB9735BC093C BD935BAC7237C79251D00150C31A6FC4B28CDE43F8911C221EA72536951EB3EB F859B1A0D2ECE14DD09079701AD935B4C00E40D52A8D5D15C706B19E3AAF8998 4B29D07EA35E1297496372A205FF5B0ADBAA6FCBBC0444972A47C5F892438178 3957B08819BC0F7D5B6FF9966D3FC31521C5DF3C6D7784FB52CB304D9669762D 887CE59242F05913A206ED6CC0C9C18A7199FAC03E4388EC4B1288BCB16E4F3F 8EB12A34580D598F5ADF7DE4DB7DD827EC6228AD90E8139DE0414B0886D8975D 529E67A7CDCB9827B11A726DDCEF592CB6E77A58026030F6BC974C2D5D56BC75 7861E4D0D9302733866357CA765D1AB3601690F73EF0935EE5296A69BDF2715B 1DB14294CC96766244E9A7B02943B01E1E75E19F7FAB1A87C1EC026E5AB84C92 7508DC7AD1226D1918DDD3FD5F36497DDCB41D087F34C20215821FE967B6C6B7 7B7D842C921ABCFE14F7284816559D15F9744558B8E79AEC3AFF7CD818256C1C B77FE09A3FD3E5139BA029C63DE4602ED96C671E9283E7C10C6CF5F38C974997 053B6A57F77E9203C9F088ADA045F98E0016A00120AE91CD0B7C0BF058EBD19B 1C2BB8DA8278D76910BD5400457BB555E930EAD253EF34C9D961ADE76CA22F9E D0E916BF00EC80FF636FD2A51E5D5889BAE77295D3D78431725DBF4CEC743A00 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: PazoMath-Italic %!PS-AdobeFont-1.0: PazoMath-Italic 001.003 %%CreationDate: Fri May 17 11:17:28 2002 %%VMusage: 120000 150000 11 dict begin /FontInfo 14 dict dup begin /version (001.003) readonly def /Copyright ((c) Diego Puga, 2000, 2002.) readonly def /Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /FullName (Pazo Math Italic) readonly def /FamilyName (PazoMath) readonly def /ItalicAngle -9.50 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /Weight (Regular) readonly def end readonly def /FontName /PazoMath-Italic def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 101 /epsilon1 put dup 104 /eta put dup 106 /phi1 put dup 108 /lambda put dup 110 /nu put dup 115 /sigma put dup 116 /tau put readonly def /PaintType 0 def /FontType 1 def /FontMatrix [0.00100 0 0 0.00100 0 0] readonly def /UniqueID 5116634 def /FontBBox {-70 -277 902 733} readonly def currentdict end currentfile eexec D9D66F633B846A989B9974B0179FC6CC445BCF7C3C3333173232E3FDBFF43949 1DB866C39088C203DC22FDC758584860EC7BB67FDA28CC6208249060E18FAB32 204779B5C03C0493BBBBC95CF02692CC4DEAA8D2EA90B5C2E64374E92BCB8501 429B8FAE4A76C0C6B76D6FF7CF9A7D5EDFBCA0E959541C59BD05B7DE43D25D53 FC3DDA6EF0C2743978A6D03E19CCED4A11F2EA4BCC3110BE8B8D9E2772361969 C19258EFAFDC276CB1ADE9208A941A36D18F9FB1C33DEF76AA315DDB0A7F85C4 9167E58A181840EC46CC379EAAE07071FBD381C7EDF50327298FF86A6A4F6812 2553C2CAF67371991CB73DD3F08A7BE3D12E5D0B885AA74F37D1940EEE91E918 45D5847CDBAAB475B142774C14C38D20D16027AAB426CFC43043B69E67862958 8D309D463F6EC259BC9BAB2689D1380DCBB972BC5D1C6C0E70024BB94743B0D3 0E708C018C6FC49FB3675CB4742FEDFE96626AA9EA7D3C796CF48BB4AA39B8A6 F6CE05666C879D0C0A32D94DD56B8F9D70D13AEB18E9CE60CFA59B7C09A1315C F5CA850E22F7A7D830CD703ABA72AF0809353FBF829BFEA6DC6BDBF71868E50F 4FB5CF3E74205306F4A0483E4392234521E9BEE73DCC872013FA0C00CEF2FCE2 56118ECB17B68E6CFE34CA1ACB4ECAFE88D23CEAA9A342E6F99DF3E6D5C384B9 73331941B9FCDC23DE031D356228C697FBA2B4B23D1F6666CD4B46786097125B BB9405A45FAAF63F5368C50330336F4B21261921A08C5A26FD946FC76DAA4D31 DE30F498228E6805F19356249B0CB284D0C92F91C19B50408B9A1CBCACE3A2CD 13642CAC2B58B5C098805B8D26695ABFAC108093696675CFFB67877D51E33527 8A9A4191C6A0F004CB20C4A34BC4446593A38EC5CF591C6CA42E6F2687735A3A 91BA805B7E95C85D8B19F58845029CC7F63FE860355B39504ABBE922C21E84CF 0223052B9600CBD2D7F195ADF94FB5BCFB53393ABA60795FA7875C01CBE21F84 3DE9937E9DFA1FA1FC62E3D51CC8F9BD7B033B181C2E360D4778644FE826B56E 67BBD6442947964BA6234EFFE258C04969109B86BF934FDBDC3A2EDB5A22A727 47C69DE261E264E6D19CE391C9812D7953777F081C42F90C9A7A72B39A1F0DF4 B294926C617885AFF629567C9F7AF2CABC182BEFD7EDD2AE8AA82BF9D60F2FA6 1048F1FCA7F17ECB7CDB1E29C436D1A232F19E436B8B6E503C2E481755CBA7A9 8BC9F176A27F776F07A7CA94474DE1277A94E6D20255339FF569DF7E17EDDE5D 39DA2DB64A52F694A638F30275D7D627FFA0569800C1EE514461129929360F26 2797B3C6D367BE72850BDEF8A8DAAA5DE4C6E0D9C40D0A3BBC285C7AC922CF06 7C6184A2C0CA07761EDD4E519CC813BACB44D6880725F612A0DE4A56CA84B3B5 1AA797687145CF5C7FD74B5E4EC51FCB0964E2C6DBFB0BB25BB13F0D8078406C 22EC33B29D0B19F23F8B1CC70A4338099817FF47B67C72B09D5CD6919ADF2E99 32C4295E25982DE1DC5A7CFA43701E02B831094BE25D3073A6940AECB01AD07E B5DF02284623F4FEB36379DD63F00985881E885DAE24F8B63DB23A8D041AF820 430E7DBD90AE6B141D0CC94768B538891AFC33B1E9929C9CEE82C76A1A232FCD FDB6073730B912C0E56A55E18E0B8D3C521BEA23FE2041BE9D41C128CE151FFF 0B0DE1AAB06A056405F1094AFB2137E531F829BC2AEDC874B4C832C39721EA5C 3464B0245E02013E1666DCE85044D5A75AC0244C26ED6EEA47C3FD8D9159594C BCCB611E3B274C07D85229BBB2BB2F0FB1B3C663840413AF776CCC9C4DAFB2FE AADC8A76E374DBD1AA2E2F1D141E863F5877A8561FC3B716A8AF83B9FAEF975C AA1FF748C2309F541BDF8B1BB46BAB7376FF7C80634400F755FC85D08E90341B 411382A5986E1F3DDF5AEA23709F997BDAE4EF14F9E60E487517C8ECCA81ED1D CF640274DF45A0B3BCD6478ED664774225E83D3E036A9A95E433E0EE5E69DA51 D0AC505C9F715607A353568EAABEEC84B992D45A2680BAC63497C593C90728B1 2C2C1206FAE8F5F752A36C01D95CB3DB66B016182940F790F212398D1FA9D5FF 8CBDDFAFCA66543CFB72E8DB15456438FED1B333FC882FEA17CE5ECA50FE1EA0 CB822F7C5EFD369886C0660238367A24EABFE24B42A1642FCAEB99606BC079F3 230443D11313D6EBB9324A522035B2875A44EF7DAFEEC6B06D7DB4B3BE25BB28 E8757F0C493522A4B260C55A31AA1939D02873061B56823C9811B3B5ED20AD2F E457E763F1E38A6ED86CDA24815820A6A2C9C88C5EC3AE96CD02A7FBF898467C 4A4B362143F510C94C26647858F142DD380FC1B1E6E3B114C105A187E4ADE018 6B8ACBDD4537C983CBD49B3B53718C98D58C9B03171C5A32A41F78AAC8D9C90F 998103A821C35734F0153950E5F72FF6A8ADFE4D814CDCAAC830DD6D2B235301 9C8CBCEF3798266DAD877E9208260AE6AF24100E2B365BF89C5B67937799EA0B 4A4AE8F1ACECD1339A3FC0F865201B6D7973A03CEDE934367F083F6561C93966 9E28B55BC33040583C00360A382EF21A8DD920396F7F52B7D55F12F9F46E7977 789B19EE83C5BC35BFC48D8CD565397A634C5BF95DBE48FE4DA1BB5D3B1B4DA1 454568CE418A67152D4608394B82E83877E96D5FF7F7C34ED8E215AF1DBF25B8 690226C381D7064768461AB4771188905A7BAE80380D6CFDBD82D34A78EBD78B 3998FDC0EF19E076E25C4799D60C2CC73610B087F668AEBDEEB7129973FE3E49 2016FA5C52E9920B3939DD770971219836B983024EE9541B603122C94655B5AF A1C3762C47B28A45D6F516078C72A4B155A2715B713EC35EE7853D94BE904F87 0B9858C36B4B055C846272F1FCA0A1D8287E95DCD5BF08A1FFCA11B8BD493853 D06D6F6B8F4B86C231B10100D1BAA6B29F192CEAAA9956C9D3A6271DD6C27CEA 2D32409DF97C2A92B344786D1887361F7897A2D28A562A935226FF823955C3AE C422ACECFE2FD767EF66EA7CCEA43D155BEA71F01166C3960BCB0E709B78C3E2 ACC996C889BB23ACC950355F6B935D49902A3311994C31A54DDC94C9A8E86255 57BFA0C123C0DBC6205028AE5DA5139E8DBFBEBFF644019D08C6614925E71077 9597A25E678DB4EE7B616DD99080BF79366628762F64A11900664ED4E6D4DAFD F0C64F9446C355711B1DFA5DBD6CA4827C23FFE2BCADEB2F949DC6AADB8B933E F197DBCAAF8B59FC5DFE3FA2D135C8F6FC6AE4B16624C8B15D84C4B7B2B311A7 4FE7C6842F06AB997DA7957671BF273BE962A160DD24F2EF2A38C9A569BE0253 FF8DBE9698D773B5D60948BAB58C2FDFEFF59EB9D415F4A7B7B747DB1E29E155 CA74E621E5E692BE24D08682904BBB58AD8AA3F660833AD6E4DCBE342F18E675 81E10EFF7B4AA1D57B42914BBA7C7250B212F9BCB3FB5F459AA4EEB92E63BF0B 34F238ADB7A3A38D2969A584E3284DF085AB4C08FD4893CB18A392AAF1113876 FD258E84E74FDF75A7EEBE7B49CC5051A67CE534EF5D0DB33EE9B83CAD0AB4F2 994793A361013D9C3FBB27DAF764D2AC0AB3B64BBB67C0718E6C7B5CFB5A51EF 849B0DE9B85122194A874C902B9523FFD6C4F50061BEFA896B09FC40AA8A4384 324AEC98DC54CE465B6E020CFCFBE60E9877E4C8E4680EC61D28A4AC69EA826A 1F70AF7762528F25BD014F1FF110E58B15FD42A8760737EC68D3B5710D918ED0 0E718349011CAA673350B61D2BDB39F211FABA6E5DB0C899EE3802F6965A8BDB 7B127FECD93F81DD5A12DC4029D0BF335B4CA5FEE11986B156C19ED42D2E5463 A036AFE5C118E575B0AAFFE43461616709A22EB33A632E7C315E3F20E8B2685B 0247D029E41811FCA18CD2CF747E5BD66333BCAFD051654C38B69D05BFDF66EA 93C73FE791EDA42CA8EE97694DF8C859AEF5BD1CE6A8B8AB537EA9C024384EA6 AC5CF2BC73704B9B48443803D47CA794EE603C7A94043BCE169041506B4D73B9 5F50269AD372E7743B8957051F0759455CDEAD157DC91D5EEB21CBA2357B29E9 D0BF7DB1422E7A3C54B81CAD71F54D607B1DA5FB844B60C582A5373510DB04FE 16F80BCF6374BD01A5966B98DEEAB8F5B43C61439AA9D6EC6D9D4FE50EBFA0B8 3A08973741CF62ED1EE5626AAC7F2CB6E70C76078BE332703D5E73B456BAF314 D9267B15CC6169B0B416CCDCEA79432240D8166F9E0B2EC0428806DB3EE731F9 ACC02F48BB8C2F80DF319C00C8A2A0E5879281730995543A89E70F9AE216381F 69AC0CAD7027B8E42C5B9378F6CC16FB3235C132F5B813B27BF304780C07CD5A D9BCD303C3D0497426B5559B15F6D3E483EC08445AAEB138C94C3BEAC030EC3D F133B94E19CB4212BE6505687FA3A38795E6D0A8E7AEA8CA7C8FBA86F231FD0B AF9A8634A844556FAD6CCBBD72788E7E77685B943D21E34B1E5F96BB141282CC AD53516FC3A6D12CDC227D50CCDCE22E9A611112336CA96BC2F33E15A956640C E3BF724B92407E613038F9AD944DF27CCD6CB20FBF49D2DBF50DE575E7A7EA81 53BCCE0DFBBD2D113E26C120033E175D638E237DADCD14E253A57B679A6AAD75 66109125BF20EDAF8629C7AFDDFE0CE096CAD672B8567181CDCC387813815113 422D3F6B2716589C96EA877097E09749756BE3FE70AA3E91AFE9A5A052F95CC1 1B64531D5347A9BB62BBCCED19DF9824FE699AB8C11D95EEEA508A956EF0A4EE 0070F7689A8CE7E11E70D02E591156A66655A24E748709FC62EE07A458AF4F67 C60BED557B92C9B9FF28352572629AD722C9CAC8E68659156D4192E39B888EBD 554CFE295E28DAFEB87A0C24B6A8A74E2C384449A0E1C9AAC353458B102794A8 0F3BB17390EBE8A95E515948EDEFBA23B2BF79649DFDBFF29BEE4AE2F7308CCE A99FAB7BD5BFFBB018EB320A87BDDB72AD0A7FF282F69E69297303462C2007F8 785ECB3BE171742AA5AC40D1C87F0C5DEAE7EB5C76BD53BFD32156DC21B99DC7 511A9398F1881F34A0F2CCF261A896370AFDED043C50A793F98E1EA4C1E0F6EE C47700EC320D456BFBB90D6E8C42EE2E7EF30F8760D0FA758C84641A95EA7EF6 A553A1F20CA28E8A538FE8DA6532933BE5DA81DF5CBBD1C1D125E0B5839F71B6 523AD2DD7A235007993EEEC3DF7739562842F0B19729E3A86E76FE9B72BE9BA9 D753E83A94EEE569B7B91E38F1895C1994316AF26D33BB585875DB879DB4D1B3 1B46EF208122C5E118409814E25F7DFBA8FAE2ABFCD4D5A2B37B7230C02AD5F6 867EF808C24FD1E26DAE5BCE8B5B2AA8C244302DBD5505C5279988C295C989F7 FF636E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMEX10 %!PS-AdobeFont-1.1: CMEX10 1.00 %%CreationDate: 1992 Jul 23 21:22:48 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMEX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMEX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 22 /floorleftbigg put dup 23 /floorrightbigg put dup 56 /bracelefttp put dup 58 /braceleftbt put dup 60 /braceleftmid put dup 62 /braceex put dup 99 /hatwider put readonly def /FontBBox{-24 -2960 1454 772}readonly def /UniqueID 5000774 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF5B8CAC6A7BEB5D02276E511FFAF2AE11910 DE076F24311D94D07CACC323F360887F1EA11BDDA7927FF3325986FDB0ABDFC8 8E4B40E7988921D551EC0867EBCA44C05657F0DC913E7B3004A5F3E1337B6987 FEBC45F989C8DC6DC0AD577E903F05D0D54208A0AE7F28C734F130C133B48422 BED48639A2B74E4C08F2E710E24A99F347E0F4394CE64EACB549576E89044E52 EABE595BC964156D9D8C2BAB0F49664E951D7C1A3D1789C47F03C7051A63D5E8 DF04FAAC47351E82CAE0794AA9692C6452688A74A7A6A7AD09B8A9783C235EC1 EA2156261B8FB331827145DE315B6EC1B3D8B67B3323F761EAF4C223BB214C4C 6B062D1B281F5041D068319F4911058376D8EFBA59884BA3318C5BC95684F281 E0591BC0D1B2A4592A137FF301610019B8AC46AE6E48BC091E888E4487688350 E9AD5074EE4848271CE4ACC38D8CBC8F3DB32813DDD5B341AF9A6601281ABA38 4A978B98483A63FCC458D0E3BCE6FD830E7E09B0DB987A6B63B74638FC9F21A5 8C68479E1A85225670D79CDDE5AC0B77F5A994CA700B5F0FF1F97FC63EFDE023 8135F04A9D20C31998B12AE06676C362141AAAA395CDEF0A49E0141D335965F2 FB4198499799CECCC8AA5D255264784CD30A3E8295888EFBC2060ADDD7BAC45A EEEECDFF7A47A88E69D84C9E572616C1AC69A34B5F0D0DE8EE4EDF9F4ADE0387 680924D8D5B73EF04EAD7F45977CA8AD73D4DD45DE1966A3B8251C0386164C35 5880DD2609C80E96D1AB861C9259748E98F6711D4E241A269ED51FF328344664 3AF9F18DCE671611DB2F5D3EA77EE734D2BED623F973E6840B8DAD1E2C3C2666 DD4DD1C1C261F8E7BD4643B16ABD7E1B7F1C70A92FD52D205C5536FD3E5F1FE2 CCB677FE41FB72C4D5B3142351265BFD748B68341D7FA7F5BCA25673935C854F F58FDE0AA1A31B610E6D1D962E71E9C02C260F1B766AFB7046E21446B7CE448E 4B64D97A593781BEF0C5F2A7C1A60D7FEF7E68968B6BA40D314B467DC137C536 2CB57569E96E05C3352AD1FB5939EDABB0C91DC9B487EBB10FD71A7C90A24ED7 9E2C3FFF784414ED700F513D676C70153557681DB8F34358E7E320F237ADC6B6 47F7D4011ACFBA93872B83462D454C8D86FD6D054422029E7C448C331D79EF24 3475CDD788C4317346DABC4FC93573C997A8503C39EE38250CE12A557AE8D3C2 3153367EB7EFA340EF90AF8C2AB8D986EC9BA8C1E84D4DE40F448200FBDEFEE7 1C0CDCFEF05165F660302FC174B6679241399763CA27D70FC128363E9D259314 C9A646C409A703F549A08FCA26A8E22ACF9A30D1B16B0406F0F9208915E8A8BF B90540A6679E48C35DB048902E25DC70503FE7195D56AC30FE93E46B3536802E 4769DB5658D05D9721577DDF648FD0F860CC039D97A48C6BDCF61ECD5C2C8F04 632543DB7C84C330DD1D459CB30D20ADF723C38317D0F3FCE9B8016795C8603A CED85612A34C37980EB531E1999CD891AC0A0B2A8F9B76782813DC5E4C9A58C8 1BC25D192EE4BD82C84D7501EB0693CABFB13B4A17DB8554CCECF5D25A837A29 3C520A97096096450598592E6475AE26F2D4B4B0983881CC3203F4DBB3C9B56C D5D2D21550E9C31926DC2F6473AA815EE5C15E837BB692DCABBA9D188B15ED82 7B9B56D7C8417AAA72F49D623371CE68417F6616F27A862009A22073737DCCA8 53853A508C2E685B7A8817A82C2D2E1A9A4AA5015358DB3FD1521795B6B0FFF2 CFEE98C878FD767BE1CA6E32B3245B986BCFDDD5B747A97A7F82541999C31560 B9617C036216D1BDD714618D572A8D8F7D76A0B0A4FE57FB4A29F7CF409D493B F097F015CE4D62FDD3588D7BF1B20FA34F30A0FAF0603FA01266D52B821FB292 C266FEBA4EEF391463207DFFD8AF1889445A31E103100179A29A09552C160717 E0A7C760102E602F7B113315A25078EEB6A4FED5E095F2F0A6A847BD16E183AC 939CD44BB2B9B37015EE76BD10089D891A0897A1509BA0A910D2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: PazoMathBlackboardBold %!PS-AdobeFont-1.0: PazoMathBlackboardBold 001.003 %%CreationDate: Fri May 17 11:17:28 2002 %%VMusage: 120000 150000 11 dict begin /FontInfo 14 dict dup begin /version (001.003) readonly def /Copyright ((c) Diego Puga, 2000, 2002.) readonly def /Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /FullName (Pazo Math Blackboard Bold) readonly def /FamilyName (PazoMathBlackboardBold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /Weight (BlackboardBold) readonly def end readonly def /FontName /PazoMathBlackboardBold def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 69 /E put dup 78 /N put dup 82 /R put dup 90 /Z put readonly def /PaintType 0 def /FontType 1 def /FontMatrix [0.00100 0 0 0.00100 0 0] readonly def /UniqueID 5116637 def /FontBBox {-15 -195 1118 709} readonly def currentdict end currentfile eexec D9D66F633B846A989B9974B0179FC6CC445BCF7C3C3333173232E3FDBFF43949 1DB866C39088C203DC22FDC758584860EC7BB67FDA28CC6208249060E18FAB32 204779B5C03C0493BBBBC95CF02692CC4DEAA8D2EA90B5C2E64374E92BCB8501 429B8FAE4A76C0C6B76D6FF7CF9A7D5EDFBCA0E959541C59BD05B7DE43D25D53 FC3DDA6EF0C2743978A6D03E19CCED4A11F2EA4BCC3110BE8B8D9E2772361969 C19258EFAFDC276CB1ADE9208A941A36D18F9FB1C33DEF76AA315DD8F6FC13F6 956DF14F0BC043FC51433EF506A869D4DC4F4CC8551813BD4FB32A549ACA63E0 54D96D2899DF1C91C0DF800BE3BA3183ED98550A1B6E8341018E5958D6FE55D9 31F13205A8D7E8E8D272D572FA455E4F79A422E23BF4446DD2E07B074F30D20B 7B327FC652BF42CA69B3AF4EB4EDCC4DC3FDD9F6E97566FB964CB4941B14186F 90ACF11EB96EF5DBE23EE591471C6CBB1E5FEBED31B6233CF057945C928EEF4A BA00C461E2BD02E6845FABF2469862C1868AC67E9820944DF750735283EE93DB C5AC907F4DB0E3FFAA4879F572B8A31E14282100F00A93CC110AB9DB3D83E5A1 F4A3B69A6847A30060728BF2FE4ECFA2CC78D6D332E81D449B54D4C5ED4B0743 4B7F2FC9ACE090F2E35DB9BCD03AE87894485BCCD3DB72684636A4E42E58436C A6A21BA4F014B9C6BF83C7FDC71368E1710460D3FEBFCD506C3C37CFC202E0FD E93B06F345D460E8B09FB4BD3E3C8F6298DD646E421A6213EAB9714E2F770AD8 F73B72AF134C745D08A1B27D8524D8A3B26602FC08FE91B6EA727A66370A25B0 26278282F06DC022F2B5B73313D4CAE299EA9D6E460C9053DED9BEFC5D4AFA4A D2F3A52F7C51CA75C57255288CEBCAC17E5FF702FF96EBA92A735856224DC0AB F42956ABF57816DF995F73554C9731F708C2ACC44A8445A70674C80F2C802851 F9B56D4BCE72BA21D204950920F6693ECDFA6045CEA1E3ECEC4557F79DCCBAE8 A6449BCC4612C44B46B6C3F868B90CE48D0EB31D50D450AF1B73F38BF5C1183F 3D03D74C5C90E114F70FF1C5A57C6B65905F08E67DB1D2AA4B56D9871EF9D678 1F9E0973C62CA6023BE0867F8CB0D212ED40902165CF886FD6E41E5DF3F3D491 18A16198EF898EE374D37409110FA3A9431A57BD918BCD631490291AB39A8DBF 29A3A36A015163334C085CB8025AE64294CD7BF78C4017107490975F8FE6E41D AA22BB2A22B74AD053CDE3255CA12B992CD45602DDD0F3E0D4F5DAA611CB4FC4 662C2F9F45B95EA681BA63F4C6FD80EB3DBEE006A5C80434E7E9A13E3531BA41 0DE548B6276DEF3DB4ABDAFDFA058276259D8DC890577848C5DA4B9D780F0046 CF004AF4E6AA6DD7723E4873A95B1DDBDEA35C46D64E85D92DCFA0250A63B9E4 CD5F09CF85786A24C555F07115492493201FDE2D2E1EA7349E324829A88CD392 30CE9340C50778EDDB5E0A218C79625498AFDDA45200D203C9F199C8D54B4660 6807DD209828B487303B3788CC991B61ACB6AD7863E30EF2DEECFCD5E0A01D16 45E399B20090DBB60D0B3F5EA1A13FB288AC5486C0382E7D2547C9B47869DA6F 735671291F976CAF712D30EBD40C7BECE058645C6876A647C19F9C6A258E6060 A64682DADC55C79F30CC5F2B3D73FD3EAFA4086BBB9BDEA30FE67FB424B3373F 37DC4B4FBB23C830352B8B7F8EAC363D0D75730D6DEBDCBF85188E263CC5ECCA 686818060AD02A38890882836514F597118E85FD6770BE16471D811569F9AE4A 101D1CE22356AA459B4B19F3D15F6C7215840AB673F35C1710F5B70885282382 FB1854E2317ABB61D9F28207671D7AF7F132BC70894EDD4B14385F5BF95ECC01 C22DF26ADCB25927B9001E6ADAAB86BA6B2B4E28F3C65566E4B6424BBB2D3207 9DD408226AEAA0C4DCB8DF16CC676193A92ACFFB374247724A3901FD546D465B 4A494492FF24BAC582AD3F7DD4F42C692F7438519AAAEEF608DB4AA22987C464 E4755C82C778E10B5E035D31067F1FF70541B62B7A5BCF585874F70E71186F25 617D674AEEF56E8BE28042A34829633ADB0E45281FF26A79BFF156A8B77F91D5 14DFD28E77F4EC64F8856FB3F5E61A4B96A6A1C44BE97917D57F0C2E002B632D 220FC1BC93C07846976E912963C9B269EF536ACFF87C0F8652657F640261462A E160B9E1648717934572F97276E704F4293D1D7D5BD0405A163AC9894C524D7A BB10E29D1FE4523E35F76D248774FB0F3625D327174BE0610C564183F2641C90 D3BC9C9C20473D6FAEBE70ED14CFF0AD50200A157151F7625E63296E325E2C34 763D5C30D20FD1358CBB61AA05EF45403C3B8019EEC21F285D3BD320E14BBA53 523C51904867D723EBAE81383A5CF1546572770BBA3CB09E41AB8CD211371C3A A6D825DE96A8A5AAF64EAAA61967F079C4B3C2F92A717444C8E2C33EA2B27F17 185FF2C992D480DE33565DB05D6BC44417E8CB8E2472EF2624C23DF65B80C36A 1AA148C5E9680DC50E67D95B2D0C57BC179F1B2D0B1273766151F36B081FFA1E 403BB81EEDEF8A145030E60F7BD257B07D538155326C5EE8E3238959CD336C54 D73D83655895D321F9F0E05BCCD097059201A14B5A860155B96B4CD17D25C1F6 918616CE476C17BC751EC56EB5C80EE2A7AAF2CA12D1EB4548266CEEFCD25C8D 5208E1E3019BFD5218EBE79578A07246238B85351DA764DB623D1E0A59B9FE47 D7D4D67C241C7A31D66FAFB55B92D9F7F7887E49FCCF051A2EF3F4FBBEDD6767 403F244060F6227466EF360755DFBF789826A4FC31C9828CF2AC80B73CE2768B 06545FE262BA6116356E147F7D25A6B84A1921CFCC821786A49B605170437D1A D9B992FF3092CACE0E6A101E1F33FAFAFE6D9582A7DD2A35828301408B25709F A7CC2A6690083C78A44D8F044FC9D819B684FC5C31ED493C97F3CDD1C0AE4D8B 48A2D4873D05513D9BDD6B39E62FF64CDF4ED7D0456B8DB3EB1DD58D0B219B70 6394ADF47D81F4B81AE0B98C04F0EBAF6E8DF967D2AADABE145C6D1DFB2A4EDE A121647C09131AF64668146B959F1AF70E1EC49D19A982FE579C36A8FFEB9A98 5EFE1B8127630A9B04301E65E1B5E6EA2EEFCA6E1745FA7051DA3F7C4FDCDCDA 254247EE329CCB8B9B01B6E41841E2DE908976D1E3D4AF398B968C9DFB8B3383 BF9817F355C5B8FC86227B12FAA9D620113A18D118B979650E646A016D67841E 1A749084C0602F13B2F4140A0A7DE0827B66AFDA021AE0199490FEF60016C05F 7A18E46D50CD0F3B7067EF0B13EADA8F6E6D3FAF39BB0D592759D74F91C91228 297AD55C7BD9BCDEC2ED259E9BA2134DF5024531F3545D0A6C5264BA8D841C98 5D01E1648DA6568C0CFE93BC627DD813066805BCCE6AC416E4B2D65CFE125AD3 7AAEE0D58EA5AC1911758F7A37268E3EF4209BCBE770FDC02F6D4AAB41154997 24D8B9052DD1D3BE7DA00D170B6C4BE782A1AAF0D752E7FFF9F25653E2B8064E 1DB19FF9809B3218CFB4EC471D3DFA75D75EC25A96919B0623C4B487F73D78D9 C5A400946A9E861C93447BF902FD4D1EA7EB2FB589656340480B400397CD075E F9CD41082CCBF63E849C48835E1606952F95336FC074602E6957DA97DDFA62CF 9AC0CF12E1E881A86FE19A47333D301D7B28EF54B5027CF875E4D6171BD9AA3B EA81915B81C56CD5055CD7F526B81FCB5723D66953BD9D0A313F39A6A3DAAD30 374EE691BED2FF361ECADB0F68B3324E63C2C65B633803805AC6F0C1302B33EE 58D235F62F761426250D06076F673359610126483D16A35E7C7252CE560E937E 9DB83CBC2445746AFE10719E907FECF47EAA832398C62C37DB197AB6F1F8D7A3 EC6429D5C16C48D3ABD53A4050116CEDE570BDA86A81314B3BC4F207E55DDF11 0249059ADB0351F9DA69C83C5279EB7F122A636EE64933EF0782627AC0937B26 5773A5E86A17A41404FCC091029B671A28024125DF9B1F62F23A07AF8ED0E494 4CF067619C4617AB8C2CE226383AC7C566C008B0B2B6A3A551122FC0FAB32EDE C5A6777AB05E132F788616642EAC2E7C05EF8DA8ACD5913ED913916AE0F32EDE F9432CB9B8E5140D5A4F5F46538B948116DA094D0AF3B8FBD58987739FC7336A CAF900AF2085452ADA7AF89A6BCE056C18F1F54C702957243C97056A498EF404 DA71C927C94326091F3330E59B04557832D80E0968C0A4FB7C3AF643201E7AE7 393162BF141A227A75E7DC7A8BD81F81F350961DB4A67D9B8ADDBCD2A0616854 CB273EEC4387675F9EB7D9708F903232E7931711D13910D2CF3CCE1C353CB70B 01EB8B2C36CB4BE9A7645B7F53095A34524A70888F37659F5CBC8FA0219C2757 AE4F0726B8B7A1979C415F6BD3A12FE8BAF086A8CA16DB361DA932AE92F9C354 633834C350C11F2E9AEEB30CEB9D3D8CD0BD30892D1B02AB9D06B1E7E1C3F43B B2F59201A850FB00E8CBB5018B046A571897B1625FF6633B968C558AA8F9F179 9BA4CE2D0135443BB7FAB7833B2CF703EA7FFD5CF77A41A2C6AE58A161F17F17 DC13C6A4B05EBE0C800CE80A96D620DFFCE3180E666B92290A461DB3B7C398D7 E5A0161CED073E390AC377206BE1349CFC2EC924898260D0359D2C96CCAA2311 4E67DDF5C823134E3A66D3020F7A81B03871DDFCAF3CB1A83F5179F0E4245A46 F538817A16604E7282E863A6C7198F39A5131E571B064EE2890C7542511F0323 67604C35E1C0B32210C2188499561DC9FA9C58937ADE3F57623A0B016E530A64 4487D16F66BF316A95DA5B81A0DCD3CE8F04B82B41D7FFEB55E25C061DBA3BE6 A14D4611BF5E5DB291371D78F028432226AC52B03A6252200D6825D639BB7195 2C5EC69FD3BC5A8FB8A88BDE33BB485A2E5FBD689E6E3A745730793FEF956AB9 F627CB9FE3D5CC9A9A2BAF0AF98E12DA88FC10822850D0E76D53B0E931FED301 C634EF9CDB714EC80E49F3B7AAE89D8259BD0A444115526C139040B416B956AC 477D2B3894A6DBFE2A3D5257B94235515FAF254792B29E335E70F8194CAF032F 42C9288C675D59B9E0299252ACCBEFC6EB1B68D4D66233959606047653E61F67 5CD9B801EEA910852EE0E1040D755E3330045195F822A600000193A3B2F66B4F 3880D0CE9B2AE28EEE7EEC4AA03931EAB4D76D30E2B9D06B3031E787D37F1D6E A2F7ABE1DBD90DC00A046FF5E6CE35EF93F58F92219F28909142FEC462930B9C DFF36E198F98B198EAABA722BE98815301D92B661A93C87D16E67F14948A9A25 92AC38516063527C733B68EE9936F3BC9910F3F4EAFFD22EB0904B8163E65E3C 245CCAEB89500E53F4CEA634D24B8E61985AA4824EAF1EAB8DC38B59ED50D683 E238C442B17B1B5C7A9F80B45399A2985C97273AE1DA6ADE4F58C6996371F347 39A2ACA3219802FC15A5EAD6B1E470A6C6084D58E349B06E0EDA09314160FDAA 21D06F9A71C4ED92CD6B137488E23560462D480A87F47F970CDA90B5936C1E2A 0A37E81F5A1AFDB74D213B82C5502D18CA353194AAE989E8C49819370321A76F 4232C94A05752B312944D88E249380315E616E23669CA2618279CE4EBD32BB2D 2BE8C19691F23CC52A877D9035F6C496C49A4B8994D0616E08C600694118B673 B6D3E69FEA433E7628F873D504167FA2A8C9C526360A0B512508DCAC4C473E89 08FD116B1119CF92350D91523F258BB4B2E71820B54DE99EBCBC96272FC9921E FB226D22304E2E355BC51569BD5AA282B4C79BFF33E8AE 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.1: CMMI10 1.100 %%CreationDate: 1996 Jul 23 07:53:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put readonly def /FontBBox{-32 -250 1048 750}readonly def /UniqueID 5087385 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E 6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF 8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE 03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 9560176671A33FC55340CD04C2DE46FD812FC2711A85F7547EA95AC46D9590FE 389B59BDC83F0032D6CF7DB1500DEE10EA890C3E9D0EEFBBDA76595597400E9B F1B7434A1FE8C838FCC126CD4BA1BD0810D5619AB42E596C85E4971B854958DF 58051B6BD441D4107467011298A7A36B6E5CBBE42143EE96395650C681C20CB5 44B28BB7D7E7A0BB60C5FC01241E4DAE2C694F7C2B26F399CB5A513FC865BA11 1821BA25328EDFD05517CC288CAF498352F6895CDCA5198C0B41E2123204C71C 05500042D594ABF5B9FE1D7A397F018BD2D40BB313CBE874436BC85BCD2BDD7E 0AA0EE45E2BB041A234D45D104F91FF2B3DC0CB7F9877C88299E5916BF77E16D 681164BB85573092F78783DCBAF090ADE0FEFA030CE7A2915F73204A7EB42D68 7BBAAB5FA6FC4F32FAA1C48FA8321826DFB2C39EFBB98C8BE5FB9F49AC86A28D E3D1F2205E7DE9882A04690842380A49827637BA65E2D2DF08B018634BE02623 EF532C83165A7B3DE24CED8825D89DE1F66FBAE31EBFFF2754FD366B800DD0F4 B3955860E1A8FA9DEA2826BAFAD89DA99712A16BB4E1E5C422831073C6BE3EA4 717EF8091E78AA3194A7CD420B0E504FB96B239004BAE4249AB1ED27A2650FDC D97B8A729141DC391692BE8FBF3B7BA86111ADE6D08EEF9F82358D59F2B3C809 BDE90F893A8ECD2C262FB8DBF5C08665EDCD64A32FD96F4C7FF872230750640A 43541F8E8F6AAB1AE418893A8913E62913FF76FFAE13FAA3EBD90B97A621FE71 EE72A68541F7692C9667D2E445B5E929AE1FE8A47CF4C3FD6536723DC5AFD73A 6617091D8793EBDF381D707678ECB450062A8B9607DA62636F99F10E9241FA87 408AC797181F9A81CC1E7ADCC0F2498F310AA85B6C617661344C031C7B114762 EC582AA27F21194D15CB888789A692A550C21454ECAA112B36E480DA78A9B360 1860 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) @start /Fa 208[18 17 4[22 1[22 39[{ TeXBase1Encoding ReEncodeFont }4 66.4176 /Times-Italic rf /Fb 141[55 1[55 11[55 100[{ TeXBase1Encoding ReEncodeFont }3 90.9091 /Courier-Oblique rf /Fc 252[35 3[{ TeXbbad153fEncoding ReEncodeFont }1 66.4176 /CMSY8 rf /Fd 141[124 1[124 11[124 100[{ TeXBase1Encoding ReEncodeFont }3 206.559 /Courier-Bold rf /Fe 141[60 1[60 11[60 100[{ TeXBase1Encoding ReEncodeFont }3 99.6264 /Courier-Bold rf /Ff 140[50 4[50 50 2[50 50 7[50 97[{ TeXBase1Encoding ReEncodeFont }6 83.022 /Courier rf /Fg 212[39 43[{ TeXf7b6d320Encoding ReEncodeFont }1 49.8132 /CMR10 rf /Fi 255[39{ TeXbbad153fEncoding ReEncodeFont }1 49.8132 /CMSY10 rf /Fj 194[52 17[52 43[{ TeXf7b6d320Encoding ReEncodeFont }2 66.4176 /CMR10 rf /Fk 141[19 3[28 3[14 14 33[36 71[{ TeXBase1Encoding ReEncodeFont }5 49.8132 /Palatino-Italic rf /Fl 204[25 25 25 49[{ TeXBase1Encoding ReEncodeFont }3 49.8132 /Palatino-Roman rf /Fn 130[32 13 32 1[33 33 48 33 33 18 26 22 1[33 33 33 52 18 33 1[18 33 1[22 29 33 29 33 29 1[33 31 22 1[22 2[48 1[48 48 41 37 44 1[37 48 48 59 41 2[22 1[48 37 41 48 44 1[48 2[37 37 37 18 18 33 33 33 33 33 33 33 33 33 33 18 17 1[17 37 1[22 22 22 52 55 2[27 22 33[{ TeXBase1Encoding ReEncodeFont }73 66.4176 /Times-Roman rf /Fo 26[98 229[{}1 127.273 /PazoMath rf /Fp 156[91 36[81 1[81 1[81 1[81 32[53 53 22[{}7 90.9091 /CMEX10 rf /Fr 173[56 14[35 18[18 44[33 2[52{ TeXbbad153fEncoding ReEncodeFont } 5 66.4176 /CMSY10 rf /Fs 165[75 7[74 3[89 8[68 69[{}4 90.9091 /PazoMathBlackboardBold rf /Ft 149[25 35 35 45 45 2[40 40 3[61 1[61 61 4[56 1[50 1[77 8[50 2[65 48 1[48 8[61 2[0 0 3[61 8[91 7[91 11[71 71 4[45 11[45 71 25 71{ TeXbbad153fEncoding ReEncodeFont }30 90.9091 /CMSY10 rf /Fu 136[48 33 1[22 1[26 3[37 52 18 1[18 18 2[18 3[31 29 10[48 15[37 70[{ TeXBase1Encoding ReEncodeFont }14 66.4176 /Palatino-Italic rf /Fv 192[33 63[{ TeXaae443f0Encoding ReEncodeFont }1 66.4176 /CMMI10 rf /Fx 162[25 1[25 29[71 17[71 1[35 35 40[{ TeXf7b6d320Encoding ReEncodeFont }6 90.9091 /CMR10 rf /Fy 57[68 198[{}1 90.9091 /PazoMath rf /Fz 198[33 33 33 33 33 33 33 33 33 33 48[{ TeXBase1Encoding ReEncodeFont }10 66.4176 /Palatino-Roman rf /FA 135[45 66 45 1[30 35 2[45 40 51 71 25 40 25 25 3[35 1[37 1[40 7[61 66 86 66 1[56 51 61 2[71 1[86 51 2[30 2[51 56 1[61 56 66 65[{ TeXBase1Encoding ReEncodeFont }32 90.9091 /Palatino-Italic rf /FB 119[30 76[23 23 5[45 45 45 45 45 55 23 1[23 6[76 37[{ TeXBase1Encoding ReEncodeFont }12 90.9091 /Palatino-Roman rf /FC 193[71 1[71 15[25 44[{ TeXaae443f0Encoding ReEncodeFont }3 90.9091 /CMMI10 rf /FD 139[48 51 4[45 1[55 1[54 1[47 2[42 101[{}7 90.9091 /PazoMath-Italic rf /FE 139[21 116[{ TeXBase1Encoding ReEncodeFont }1 63.0968 /Palatino-Italic rf /FG 194[65 19[32 32 40[{ TeXf7b6d320Encoding ReEncodeFont }3 83.022 /CMR10 rf /FH 139[18 25 25 3[32 1[18 2[18 3[28 1[28 32 32 94[32 2[{ TeXBase1Encoding ReEncodeFont }11 63.0968 /Times-Italic rf /FI 139[28 3[42 4[37 107[{ TeXBase1Encoding ReEncodeFont }3 83.022 /Palatino-Italic rf /FJ 193[65 1[65 60[{ TeXaae443f0Encoding ReEncodeFont }2 83.022 /CMMI10 rf /FL 206[42 1[50 47[{ TeXBase1Encoding ReEncodeFont }2 83.022 /Palatino-Roman rf /FN 182[45 2[60 66[42 2[65{ TeXbbad153fEncoding ReEncodeFont }4 83.022 /CMSY10 rf /FO 198[25 25 25 25 25 25 25 25 25 25 48[{ TeXBase1Encoding ReEncodeFont }10 49.8132 /Times-Roman rf /FP 134[50 50 72 50 55 33 39 44 55 55 50 55 83 28 55 1[28 55 50 33 44 55 44 55 50 10[72 72 66 55 72 2[78 2[66 1[50 39 2[61 66 72 72 66 72 7[50 50 50 50 50 50 50 50 50 50 1[25 43[55 2[{ TeXBase1Encoding ReEncodeFont }51 99.6264 /Times-Bold rf /FQ 105[42 27[32 37 37 55 37 42 23 32 32 1[42 42 42 60 23 37 23 23 42 42 23 37 42 37 42 42 3[32 1[32 3[69 2[46 42 3[60 1[69 3[28 2[51 51 1[55 51 51 1[42 1[56 1[28 28 2[42 42 42 42 42 42 42 42 23 21 28 21 2[28 28 37[42 2[{ TeXBase1Encoding ReEncodeFont }58 83.022 /Times-Italic rf /FR 134[42 42 60 42 46 28 32 37 46 46 42 46 69 23 46 1[23 46 42 28 37 46 37 46 42 1[42 46[42 44[46 3[{ TeXBase1Encoding ReEncodeFont }27 83.022 /Times-Bold rf /FS 134[60 60 86 60 66 40 47 53 1[66 60 66 100 33 2[33 66 60 40 53 66 53 66 60 10[86 1[80 66 5[113 2[60 47 2[73 80 86 86 80 86 9[60 60 60 60 60 60 60 2[30 40 42[66 2[{ TeXBase1Encoding ReEncodeFont }44 119.552 /Times-Bold rf /FT 135[86 3[57 1[76 1[96 1[96 4[48 96 2[76 96 2[86 29[124 1[124 11[86 86 86 86 86 49[{ TeXBase1Encoding ReEncodeFont }17 172.188 /Times-Bold rf /FU 130[55 55 55 3[55 2[55 55 55 1[55 55 55 1[55 2[55 55 1[55 55 55 55 5[55 1[55 28[55 55 55 55 17[55 55 1[55 4[55 33[{ TeXBase1Encoding ReEncodeFont }27 90.9091 /Courier-Bold rf /FV 7[45 17[61 79[45 27[35 40 40 61 40 45 25 35 35 45 45 45 45 66 25 40 25 25 45 45 25 40 45 40 45 45 10[56 1[51 45 56 1[56 66 61 76 51 61 40 30 1[66 56 56 66 61 56 56 13[45 45 1[45 1[23 30 23 41[45 2[{ TeXBase1Encoding ReEncodeFont } 55 90.9091 /Times-Italic rf /FW 119[55 9[55 55 55 55 55 55 55 55 55 55 55 55 55 1[55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 3[55 1[55 55 6[55 5[55 10[55 55 2[55 55 55 55 55 55 5[55 55 55 55 55 55 55 1[55 55 55 55 1[55 55 55 1[55 55 33[{ TeXBase1Encoding ReEncodeFont }59 90.9091 /Courier rf /FX 105[45 28[45 45 66 45 51 30 35 40 1[51 45 51 76 25 51 30 25 51 45 30 40 51 40 51 45 10[66 1[61 51 66 1[56 1[66 86 61 1[45 35 2[56 61 66 66 61 66 5[30 30 45 45 45 45 45 45 45 45 45 45 1[23 30 23 40[51 51 2[{ TeXBase1Encoding ReEncodeFont }58 90.9091 /Times-Bold rf /FY 39[60 90[40 17 40 37 42 42 60 42 42 23 32 28 1[42 42 42 65 23 42 23 23 42 42 28 37 42 37 42 37 1[42 39 28 1[28 51 60 1[78 60 1[51 46 55 1[46 60 60 74 51 60 32 28 60 60 46 51 60 55 55 60 2[47 47 47 23 23 42 42 42 42 42 42 42 42 42 42 23 21 28 21 47 1[28 28 28 65 69 2[34 28 29[46 46 2[{ TeXBase1Encoding ReEncodeFont }85 83.022 /Times-Roman rf /FZ 134[72 2[72 1[40 56 48 2[72 72 1[40 2[40 1[72 1[64 2[72 64 11[104 19[104 65[{ TeXBase1Encoding ReEncodeFont }15 143.462 /Times-Roman rf /F0 166[53 53 69 53 53 44 40 49 53 40 53 53 65 44 53 1[24 53 53 40 44 53 49 49 53 65[{ TeXBase1Encoding ReEncodeFont }24 72.7272 /Times-Roman rf /F1 133[40 45 45 1[45 45 25 35 30 1[45 45 45 71 25 45 25 25 45 45 30 40 45 40 45 40 1[45 7[86 66 1[56 51 61 2[66 66 81 56 66 35 30 1[66 1[56 1[61 61 66 11[45 45 45 45 45 2[23 30 3[30 30 37[51 2[{ .167 SlantFont TeXBase1Encoding ReEncodeFont }52 90.9091 /Times-Roman rf /F2 3[45 3[45 97[45 1[40 40 21[44 18 44 40 45 45 66 45 45 25 35 30 45 45 45 45 71 25 45 25 25 45 45 30 40 45 40 45 40 1[45 1[30 1[30 56 2[86 66 66 56 51 61 1[51 66 66 81 56 66 35 30 66 66 51 56 66 61 61 66 1[40 1[51 1[25 25 45 45 45 45 45 45 45 45 45 45 25 23 30 23 51 1[30 30 30 71 76 33[51 51 2[{ TeXBase1Encoding ReEncodeFont }86 90.9091 /Times-Roman rf /F3 137[53 1[33 47 47 1[60 60 60 86 33 2[33 3[53 60 53 1[60 52[30 41[60 2[{ TeXBase1Encoding ReEncodeFont }16 119.552 /Times-Italic rf /F4 134[103 103 2[115 69 80 92 1[115 103 115 172 57 2[57 115 103 69 92 115 92 115 103 10[149 1[138 115 2[126 2[195 138 1[103 80 5[149 138 66[{ TeXBase1Encoding ReEncodeFont }30 206.559 /Times-Bold rf /F5 170[119 110 4[129 119 156 110 2[64 1[129 1[110 3[119 65[{ TeXBase1Encoding ReEncodeFont }10 165.247 /Times-Bold rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: A4 end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 382 1509 2989 12 v 736 1796 a F4(S)10 b F5(I)g(M)g(U)g(L)g(A)-6 b(T)10 b(I)g(O)g(N)66 b F4(L)10 b F5(A)g(N)g(G)g(UA)q(G)g(E)780 1968 y F3(speci\002cation,)30 b(veri\002cation)f(and)g(implementation)p 382 2098 V 941 3263 709 6 v 1742 3289 a F2(E1-209)p 2103 3263 V 1009 3484 a F1(Lau)23 b(Bech)g(Lauritzen)193 b(Jasper)25 b(Kjersgaard)g(Juhl)1009 3614 y(Michael)f(Gade)g(Nielsen)101 b(Anders)25 b(Rune)e(Jensen)1009 3744 y(Ole)g(Laursen)467 b(Janne)25 b(Larsen)p 930 3892 1894 6 v 1691 5078 a F2(May)e(2003)1422 5303 y(A)t F0(A)t(L)t(B)t(O)t(R)t(G)28 b F2(U)t F0(N)t(I)t(V)t(E)t(R)t (S)t(I)t(T)t(Y)p eop end %%Page: 1 2 TeXDict begin 1 1 bop 573 554 a FZ(Aalbor)m(g)34 b(Uni)l(v)n(ersity)573 684 y FY(Department)19 b(of)g(Computer)g(Science,)h(Frederik)f(Bajers)i (V)-9 b(ej)20 b(7E,)g(DK)h(9220)e(Aalbor)o(g)f(\330st)p 573 746 3426 4 v 3424 822 a @beginspecial 0 @llx 0 @lly 341 @urx 300 @ury 311 @rwi @setspecial %%BeginDocument: logo.eps %!PS-Adobe-1.0 EPSF-1.2 %%BoundingBox: 0 0 341 300 %%Creator: Jasc Software, Inc. %%Title: C:\Dokumenter\P2 projekt\pictures\logo.eps %%CreationDate: 0 %%EndComments /width 341 def /height 300 def /pixwidth 341 def /pixheight 300 def /picstr width string def /psppic { gsave width height 8 [width 0 0 height 0 height neg] {currentfile picstr readhexstring pop} image grestore } def 0 height neg translate pixwidth pixheight scale psppic FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF705A4A515A51514A432716100A162127352D303035281C1D1D16161D29211D212828283C514A4A515A4A44FFFF30293545434A3528212121280A00164D4D513521160A162121272121282D1C0A2135353530303C4A82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFBA7C4545453822160A10101C29160A00000000000000000000000000000000000000000000000000000000000000000000000500000000000A10160A00050A0000000000000000000000100500000000000000000000000000000000000000000000001C4E96E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCBAB1A7968C837A7A7A7A72675E5555554E4E3F3238382A1D293838382A1D385E6772727A8CA7968C83838C9E96959EA7B1B1A7A7A7B1B1BAB1A7BACCD3E1FFFFEABAA7968C7A8C9FB1CCCCCCCCD3BA9F8C839FBAB1A7EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFC800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFDA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A67E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFED0A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059DFFFFFFFFFFFFFFFFFFFFFFFFFFFFD80B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC82500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028A8FFFFFFFFFFFFFFFFFFFFFFFFFFFF4E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFF7405000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF4E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059FFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFAD1700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFFFFFFFFFF6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFD81A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000229FFFFFFFFFFFFFFFFFFFFFFFFFFFB8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFFFFFFFFFFFFFFFCE0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037FFFFFFFFFFFFFFFFFFFFFFFFFFFF4E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFB8050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C0FFFFFFFFFFFFFFFFFFFFFFFFFF97110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFBB1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005DFFFFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016D0FFFFFFFFFFFFFFFFFFFFFFFFFF3B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD81A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DFFFFFFFFFFFFFFFFFFFFFFFFFF7A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFF85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFE100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CF5FFFFFFFFFFFFFFFFFFFFFFFFF50B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DFFFFFFFFFFFFFFFFFFFFFFFFFF1E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC81D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFFFFFFFFFFFFFFF3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFFFFFFFFFFFFFF7A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030FFFFFFFFFFFFFFFFFFFFFFFFFF8D11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC81F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AADFFFFFFFFFFFFFFFFFFFFFFFFFF24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFFFFFFFF3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA91400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DFFFFFFFFFFFFFFFFFFFFFFFFFF390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFF5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003DFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFFFFFFFFFFFFFFFFFFFFFF240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFFFFFFFFFFFFFFFFFFFFFF0B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFF7C0B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD31100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFFFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFFFFCE1700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E1F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFFFF9F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023FFFFFFFFFFFFFFFFFFFFFFFFFFFF180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFF97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFFFFFFFFFFFFFFFFFFFFAD28080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045BAFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099FFFFFFFFFFFFFFFFFFFFFF6A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFFFFFFFFFFFFFFFFFFFF61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFFFF74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFFFFFFFFFFFFFFFFFFFF5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AEAFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C0FFFFFFFFFFFFFFFFFFFFFF1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8FFFFFFFFFFFFFFFFFFFFFFFF0E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4FFFFFFFFFFFFFFFFFFFFBC1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016FFFFFFFFFFFFFFFFFFFFFFFF7C080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CD0FFFFFFFFFFFFFFFFFFFF740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFFFFFFFFFFFFFFFFFFFFFF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ADFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFF73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FFFFFFFFFFFFFFFFFFFFFFFFF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4FFFFFFFFFFFFFFFFFFFF9F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AFFFFFFFFFFFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFF970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021F5FFFFFFFFFFFFFFFFFFFFFF9F1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E97FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFFFF490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFF820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFFFF490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002FFFFFFFFFFFFFFFFFFFFFFFFFFF740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028A8FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFF7C050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFFFFFFFFFF18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002DE4FFFFFFFFFFFFFFFFFFFF620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CDFFFFFFFFFFFFFFFFFFFFFFFFF900E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFF460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFFC516000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015DFFFFFFFFFFFFFFFFFFFFFFFFFCC4700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018C5FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFF3B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFF45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFFFFCE23000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063FFFFFFFFFFFFFFFFFFFFFFFFFFBC3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005DFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002AECFFFFFFFFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA405000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFF3B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFA82C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000889FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003DFFFFFFFFFFFFFFFFFFFF9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFF3900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099FFFFFFFFFFFFFFFFFFFF8D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004BFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028FFFFFFFFFFFFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8FFFFFFFFFFFFFFFFFFFFFFFFFFFF0E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005EFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFFFFD82C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038FFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFFFFFFFFFF1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFF6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005EFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CD0FFFFFFFFFFFFFFFFFFA805000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036FFFFFFFFFFFFFFFFFFFFFFFFFFFFAD3A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DCEFFFFFFFFFFFFFFFFFFFFFFFFFFFF220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001EECFFFFFFFFFFFFFFFFFFF53A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8FFFFFFFFFFFFFFFFFFFFFFFFFFDA831200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000119FFFFFFFFFFFFFFFFFFFFFFFFFFFFF22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFF9F050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A92FFFFFFFFFFFFFFFFFFFFFFFFFFDA7416000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021DAFFFFFFFFFFFFFFFFFF620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099FFFFFFFFFFFFFFFFFFFF5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFFFFFFFFFFAD3F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003DFFFFFFFFFFFFFFFFFFFF850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DE1FFFFFFFFFFFFFFFFFFFFFFFFFF3300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFF6A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063FFFFFFFFFFFFFFFFFFFFFFFFFFE197220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022E4FFFFFFFFFFFFFFFFFF97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFFFF4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099FFFFFFFFFFFFFFFFFFFF7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFC53F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012C8FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028FFFFFFFFFFFFFFFFFFFF850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFF79F4B0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFFFFFFFFA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFF3300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EFFFFFFFFFFFFFFFFFFFF97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064FFFFFFFFFFFFFFFFFFFFFFFFFF8D2F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CD8FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD0FFFFFFFFFFFFFFFFFFFF050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004AFFFFFFFFFFFFFFFFFFFF610500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFDA650D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFFFFFFFF8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051F5FFFFFFFFFFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFFF7C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A1FFFFFFFFFFFFFFFFFFFFFFFFEF7A16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFFFFFFFFFF1700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057CFFFFFFFFFFFFFFFFFFFFFFFF5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002DE6FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027FFFFFFFFFFFFFFFFFFFF7C0B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092FFFFFFFFFFFFFFFFFFFFFFEFB14E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFF9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004AFFFFFFFFFFFFFFFFFFFFFFFF2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC1FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9FFFFFFFFFFFFFFFFFF8D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092FFFFFFFFFFFFFFFFFFFFFFCC7A1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005CFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFF110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008BFFFFFFFFFFFFFFFFFFFFFF0E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CC8FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C8FFFFFFFFFFFFFFFFFF740B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFBA55080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFF17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFFFFFFFFFFFFFFFFFF61030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039DFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1FFFFFFFFFFFFFFFFFFB116000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005CFFFFFFFFFFFFFFFFFFEABA4E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000373FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA80500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044F5FFFFFFFFFFFFFFFFFF17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AECFFFFFFFFFFFFFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFF850500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064FFFFFFFFFFFFFFFFFFBC7C160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002BC8FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DDAFFFFFFFFFFFFFFFF9F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039E1FFFFFFFFFFFFFFFFFF18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E97FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFF9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFD37A120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000892FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE411000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003BCEFFFFFFFFFFFFFFFF4A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000882FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044F5FFFFFFFFFFFFFFFFB11D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036FFFFFFFFFFFFFFFFEA7C2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFF0B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001797FFFFFFFFFFFFFFFF610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086CF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C8FFFFFFFFFFFFFFFFA80B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB8FFFFFFFFFFFFFFFF9F4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027FFFFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFFFFFF3F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002297FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CFFFFFFFFFFFFFFFFA8110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FFFFFFFFFFFFFFFFF9732000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002FC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFE11700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032F5FFFFFFFFFFFFFFFF0E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFF9F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC1FFFFFFFFFFFFFFDA6C0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011A8FFFFFFFFFFFFFFFF280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000373FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014D0FFFFFFFFFFFFFFF52C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFE17C12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFF4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097FFFFFFFFFFFFFF6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFFFFFFFFFFE153000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFBC3A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFFFF62000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011CEFFFFFFFFFFFFFF120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002282EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFF53000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFF8203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016C0FFFFFFFFFFFFFF170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003997FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016FFFFFFFFFFFFFFA811000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFEA9017000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B86FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFB80A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023FFFFFFFFFFFFFF7A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D6CD3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FFFFFFFFFFFFFFF4D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000224FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D0FFFFFFFFFFFF7C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CE1FFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001855A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFF74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009BFFFFFFFFFFFFFF740E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003224F86BBF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021FFFFFFFFFFFFFF4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011F5FFFFFFFFFFFF9008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121D2D68FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043FFFFFFFFFFFFFF320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFF6D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C326395D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFF2D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012336197FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFFFFFFFFC51D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFCC30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003324E7895BBE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD8FFFFFFFFFFFF61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C5190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010FFFFFFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033278CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFF1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFF030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000225FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFF730800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000185AB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011D0FFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFF4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5ABCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFFFFFF3F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFF45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001078FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011FFFFFFFFFFFFFF4A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001882FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059DFFFFFFFFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002286F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFF2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033FFFFFFFFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000279DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023A8FFFFFFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010D0FFFFFFFFFFFF2C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFF7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010C0FFFFFFFFFFFF51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFFFFFF8903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFF82000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DC5FFFFFFFFFF300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFA8050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DFFFFFFFFFFFFFF2A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AE1FFFFFFFFE13600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030FFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C0FFFFFFFFFFFF5F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFF820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFF620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFF821800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EB1FFFFFFFF850C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFD81100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023FFFFFFFFFF33000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022A8FFFFFFFFFFFF5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016B1FFFFFFFF8D1500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFF6A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFF300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000583FFFFFFFFD02B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010DAFFFFFFFFFFFF61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFF6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFAF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FBAFFFFFFB858000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFCE0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFFFF74080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001685FFFFFFFFFFFF890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169FF5FFFFFF7F1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFD81D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA8FFFFFF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059FFFFFFFFFFFFF920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083D8FFFFB8300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055FFFFFFFFFFFFA8050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFF550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A97FFFFFFFFFFFFAF0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032C5E1FFA968080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021E4FFFFFFFFFFFF3B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFFFF33000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFFB800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EBAC5FF7F4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AADFFFFFFFFFFFF6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFF7C0E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DDAFFFFFFFFFFFF53000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061ECFFFF5C0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFA817000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032FFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000389FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA40A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067CCFFFFFFFFFFFFC11C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002283FFFFA94A0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AD3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004AFFFFFFFFFFFFFF4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFF4600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029C0FFFFFFFFFFFFFF5C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000559FFFFFE653000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFD833000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010FFFFFF9033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001697FFFFFFFFFFFFDF2F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000597D8FFFFC13B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000382FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA5FFFFFFFFFFFF7C0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFF68120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047CCFFFFFFFFFFFFC11F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061ECF5FFFF921000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000882FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027ADFFFFFFFFFFFFA81D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EC0FFFFFFFFFFFFD83B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049C5FFFF9B4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005DBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168CFFFFFFFFFFFF9F2C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFF902800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EBADAFFFFFFFFFFEC4B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F9FFFFFFF8C1F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFEC5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010FFFFFFFF6D0E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB416000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168DDAFFFFFFFFFFD82F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058DECFFFFFF5100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CFFFFFFFFFFFF9F3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFF7C320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7CBAF5FFFFFFFFFF9B25000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FE1FFFFFF9017000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFF9F24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFF46000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF990E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000226ACCFFFFFFFFFFFF8F0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047CCFFFF9B3B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000382FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFF6A170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFF6C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C6CCCF5FFFFFFFFFFFF7F0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000328DFFFFDF4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001282FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035FFFFFFFFFFFFFF6A0B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFF7A220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055E97D3FFFFFFFFFFFF8F1F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A97CEFFFFA930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFF971E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFF610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000226CCCF5FFFFFFFFFFFFC12F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055E1FFFFC88C08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004BBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED2A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CC8FFFFFFFFFFFF8D240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005597E4FFFFFFFFFFFF9215000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073CEFFFFFF63000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000359DFFFFFFFFFFFFB141000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFF7C22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000459EC0FFFFFFFFFFFFDF4B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ABAFFFFFFA1150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055AFFFFFFFFFFFFF5741100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000597FFFFFF3F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000387CCCE4FFFFFFFFFFF5730A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFF7F150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003AB4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002995C0EDFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CEFFFFB83000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021A5FFFFFFFFFFEC7C17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB11F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045C0E4FFFFFFFFFFFF8F1F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049ECFFFF7F1F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CFFFFFFFFFFFFFF7C1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFF2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C0D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002272A7DAFFFFFFFFFFFF860A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CC5FFFFC12B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A73FFFFFFFFFFFF85100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFF4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000012FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F0D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F8DD3FFFFFFFFFFEC7305000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053E1FFFF923000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CFFFFFFFFFFFFFF3900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000228CC0F5FFFFFFFFFF951A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFA41200000000000000000000000000000000000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000167CFFFFFFFFFF971D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000585FFFFFF2D00000000000000000000000000000000000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FA7D3FFFFFFFFFF5C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFF5100000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D0A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022FFFFFFFFFFA833000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFF6805000000000000000000000000000000000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168CBAE4FFFFFFFF730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016BAFFFFFF36000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003DFFFFFFFFEC971100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024FFFFFF55050000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF990500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000165EBAD3FFFFFFA41500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A9FFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF651000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065FFFFFFFF850B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040FFFFFF46000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF730E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002FA7D3FFFFFFCC430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049F5FFFF680000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030FFFFFFFFCE33000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFF7C180000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF991F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7CBAFFFFFFCC4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFF5100000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029FFFFFFFFB42400000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFF6105000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7CA8FFFFFFC12F000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A97FFFFFF27000000000000000000000000000000000000000000000000000000000000000000000000000055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028C8FFFFFFBC240000000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFFFF46000000000000000000000000000000000000000000000000000000000000000000000000000063FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083C0FFFFFF82000000000000000000000000000000000000000000000000000000000000000000000000000000000000003AF5FFFF6C08000000000000000000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE463050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038FFFFFFC53B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFF29000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD85C08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001083C0FFFFFF6400000000000000000000000000000000000000000000000000000000000000000000000000000000000047A8FFFF3B0000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8516000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035E4FFFFB44900000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFF6D1D0000000000000000000000000000000000000000000000000000000000000000000000004DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD87F2B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085ADFFFFD829000000000000000000000000000000000000000000000000000000000000000000000000000000000041D8FFFF1D00000000000000000000000000000000000000000000000000000000000000000000000038FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD440A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFF5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000AFFFFF2D00000000000000000000000000000000000000000000000000000000000000000000000027FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59E5C240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010659DFFD87F050000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFF6C0E000000000000000000000000000000000000000000000000000000000000000000000021FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA8D3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DFFFFFF320000000000000000000000000000000000000000000000000000000000000000000000000000000017FFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B220800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000299FFFFFA42F0000000000000000000000000000000000000000000000000000000000000000000000000000002285FFFF7F03000000000000000000000000000000000000000000000000000000000000000000002DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C45220A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A73FFFF850500000000000000000000000000000000000000000000000000000000000000000000000000000032FFFFFF120000000000000000000000000000000000000000000000000000000000000000000022D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0A5734B2F180D0303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003797FFFF3F0000000000000000000000000000000000000000000000000000000000000000000000000000003AE1FFFF390000000000000000000000000000000000000000000000000000000000000000000000B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8C0B8A8977C6D553E230A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000589DFF732C00000000000000000000000000000000000000000000000000000000000000000000000000000097FFFF4D0000000000000000000000000000000000000000000000000000000000000000000039EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0CCB18C6B350D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000309DFF7A0000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFF730E00000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D653E050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFA83200000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFF230000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5531400000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F5DFF8229000000000000000000000000000000000000000000000000000000000000000000000000001685FFFF6300000000000000000000000000000000000000000000000000000000000000000040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA5D230000000000000000000000000000000000000000000000000000000000000000000000000000000000000022ADFF7C050000000000000000000000000000000000000000000000000000000000000000000000000032FFFF700500000000000000000000000000000000000000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8630D000000000000000000000000000000000000000000000000000000000000000000000000000000005DFFFF580000000000000000000000000000000000000000000000000000000000000000000000000023B1FFFF22000000000000000000000000000000000000000000000000000000000000000022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF932A000000000000000000000000000000000000000000000000000000000000000000000000000000166BFF7C3B0000000000000000000000000000000000000000000000000000000000000000000000000068FFFF3300000000000000000000000000000000000000000000000000000000000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC630D00000000000000000000000000000000000000000000000000000000000000000000000000379FFF9B0A0000000000000000000000000000000000000000000000000000000000000000000000005AFFFF5F0E000000000000000000000000000000000000000000000000000000000000000E9DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D220000000000000000000000000000000000000000000000000000000000000000000000000055FFFF4300000000000000000000000000000000000000000000000000000000000000000000000005FFFFFF1D00000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD85300000000000000000000000000000000000000000000000000000000000000000000003055FF8B2F0000000000000000000000000000000000000000000000000000000000000000000000056AFFFF5F000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA45000000000000000000000000000000000000000000000000000000000000000000000030FFFF620500000000000000000000000000000000000000000000000000000000000000000000002CFFFF7405000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C00000000000000000000000000000000000000000000000000000000000000000016855DFF39000000000000000000000000000000000000000000000000000000000000000000000032D8FFFF3F00000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED650000000000000000000000000000000000000000000000000000000000000000000035C0733200000000000000000000000000000000000000000000000000000000000000000000002CFFFF46000000000000000000000000000000000000000000000000000000000000089DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1000000000000000000000000000000000000000000000000000000000000000000005DFF820500000000000000000000000000000000000000000000000000000000000000000000167CFF550E0000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF740500000000000000000000000000000000000000000000000000000000000000001DFFFF1D000000000000000000000000000000000000000000000000000000000000000000000023FFFF1D0000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD824000000000000000000000000000000000000000000000000000000000000000A29855115000000000000000000000000000000000000000000000000000000000000000000001D9FFF5C08000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D05000000000000000000000000000000000000000000000000000000000000000051FF62000000000000000000000000000000000000000000000000000000000000000000000048FFFF22000000000000000000000000000000000000000000000000000000000033FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB105000000000000000000000000000000000000000000000000000000000000003029AF3F00000000000000000000000000000000000000000000000000000000000000000000558DFF4A0C0000000000000000000000000000000000000000000000000000000022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3800000000000000000000000000000000000000000000000000000000000000001C9D62240000000000000000000000000000000000000000000000000000000000000000000048FFFF1D000000000000000000000000000000000000000000000000000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F050000000000000000000000000000000000000000000000000000000000000073FFAF1C00000000000000000000000000000000000000000000000000000000000000000041CEFF7A080000000000000000000000000000000000000000000000000000000897FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000002151FF2C0000000000000000000000000000000000000000000000000000000000000000000051FFFF18000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9900000000000000000000000000000000000000000000000000000000000000297C5F360000000000000000000000000000000000000000000000000000000000000000004E85FF1D000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4220000000000000000000000000000000000000000000000000000000000000062FF620000000000000000000000000000000000000000000000000000000000000000000017FF180000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF730000000000000000000000000000000000000000000000000000000000000A38B846000000000000000000000000000000000000000000000000000000000000000000118D282B0000000000000000000000000000000000000000000000000000001D97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD02200000000000000000000000000000000000000000000000000000000000022FF6A320000000000000000000000000000000000000000000000000000000000000000002CFF6C1200000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40000000000000000000000000000000000000000000000000000000000005744D820A0000000000000000000000000000000000000000000000000000000000000000235AFF3F00000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73000000000000000000000000000000000000000000000000000000000000003DFF1700000000000000000000000000000000000000000000000000000000000000000023FF4508000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000016653B1F000000000000000000000000000000000000000000000000000000000000000016B1FF4400000000000000000000000000000000000000000000000000001DB4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54400000000000000000000000000000000000000000000000000000000000022FF7C05000000000000000000000000000000000000000000000000000000000000000023FF731800000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C00000000000000000000000000000000000000000000000000000000001030FF3F00000000000000000000000000000000000000000000000000000000000000001D5AFF33000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB81600000000000000000000000000000000000000000000000000000000000A7C5A32000000000000000000000000000000000000000000000000000000000000000017FF330E000000000000000000000000000000000000000000000000000EADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF380000000000000000000000000000000000000000000000000000000000533E8B1C000000000000000000000000000000000000000000000000000000000000000A7C48530C0000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA3000000000000000000000000000000000000000000000000000000000001DFF510B000000000000000000000000000000000000000000000000000000000000000023FF180000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD825000000000000000000000000000000000000000000000000000000000A5D2A4600000000000000000000000000000000000000000000000000000000000000001673182D00000000000000000000000000000000000000000000000022BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D000000000000000000000000000000000000000000000000000000000000307C100000000000000000000000000000000000000000000000000000000000000000053246080000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA90D000000000000000000000000000000000000000000000000000000000A323F4300000000000000000000000000000000000000000000000000000000000000002C973008000000000000000000000000000000000000000000000061C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500000000000000000000000000000000000000000000000000000000000530972C00000000000000000000000000000000000000000000000000000000000000008DFF4600000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99000000000000000000000000000000000000000000000000000000000022FF682F000000000000000000000000000000000000000000000000000000000000005A6A7A2D00000000000000000000000000000000000000000000005DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA22000000000000000000000000000000000000000000000000000000000A73FF62050000000000000000000000000000000000000000000000000000000000000023FF33080000000000000000000000000000000000000000000012FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F000000000000000000000000000000000000000000000000000000003832825F2F0000000000000000000000000000000000000000000000000000000000002A9F5A6F2B000000000000000000000000000000000000000000129EF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45000000000000000000000000000000000000000000000000000000000038FF7C1D000000000000000000000000000000000000000000000000000000000000001DFF4D280000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F000000000000000000000000000000000000000000000000000000001C30745F46000000000000000000000000000000000000000000000000000000000000118D747F3000000000000000000000000000000000000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC81D00000000000000000000000000000000000000000000000000000000003EFF74170000000000000000000000000000000000000000000000000000000000000051FF5A33000000000000000000000000000000000000000017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F00000000000000000000000000000000000000000000000000000000293846402F0000000000000000000000000000000000000000000000000000000000003AA8FF6F12000000000000000000000000000000000000000883EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52A0000000000000000000000000000000000000000000000000000000000103874320500000000000000000000000000000000000000000000000000000000000AFFFF280000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C0500000000000000000000000000000000000000000000000000000000103EFF771C000000000000000000000000000000000000000000000000000000000A559F2D3B000000000000000000000000000000000000000053DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF460000000000000000000000000000000000000000000000000000000000103DFF511700000000000000000000000000000000000000000000000000000000001DFF4D18000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA900000000000000000000000000000000000000000000000000000000002A655AAF44000000000000000000000000000000000000000000000000000000001C3F730630000000000000000000000000000000000000003FADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF650500000000000000000000000000000000000000000000000000000000003DFF8D6A1D00000000000000000000000000000000000000000000000000000000001D40220800000000000000000000000000000000000033FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6305000000000000000000000000000000000000000000000000000000297C5D746F641C000000000000000000000000000000000000000000000000000000116149510E000000000000000000000000000000000022BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D00000000000000000000000000000000000000000000000000000000000055FFFF74490500000000000000000000000000000000000000000000000000000023FF2808000000000000000000000000000000000018FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC46000000000000000000000000000000000000000000000000000000002F4E74FFFF7F3B00000000000000000000000000000000000000000000000000002283494A15000000000000000000000000000000000D6ADAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD03000000000000000000000000000000000000000000000000000000000000A4DFFFF8D390000000000000000000000000000000000000000000000000000000562332D00000000000000000000000000000000004AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF990500000000000000000000000000000000000000000000000000000000295E555D6F6B1F000000000000000000000000000000000000000000000000000061550B080500000000000000000000000000000028A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF631000000000000000000000000000000000000000000000000000000000000029FFFF512400000000000000000000000000000000000000000000000000000032FF460000000000000000000000000000000028FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD87322000000000000000000000000000000000000000000000000000000162F552A286B733B0E00000000000000000000000000000000000000000000003849182D2400000000000000000000000000002FADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD34D00000000000000000000000000000000000000000000000000000000000029FFFFFF853200000000000000000000000000000000000000000000000032FF40180000000000000000000000000000004DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB4E00000000000000000000000000000000000000000000000000000000103765FFFFCCC153030000000000000000000000000000000000000000002A496A164E1F0000000000000000000000000032B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA6D1D00000000000000000000000000000000000000000000000000000000053EFFFFFFFF7C2C00000000000000000000000000000000000000000000002CFF4D46000000000000000000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E400500000000000000000000000000000000000000000000000000226C96CC8DFF8B7F4B1F0000000000000000000000000000000000000000327C7C68513500000000000000000000000D5DCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D3E000000000000000000000000000000000000000000000000000000000532FFFFFFB46A2C050000000000000000000000000000000000000017FFFF613B1800000000000000000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA54B0D000000000000000000000000000000000000000000000000001D3855656DFFFFA46B2900000000000000000000000000000000000A557397FF7A4A250000000000000000001682FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D380000000000000000000000000000000000000000000000000000000032FFFFFFFF8D512400000000000000000000000000000000000011FFFFFF4D2C0E0000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C350000000000000000000000000000000000000000000000001D4E8D97A8FFFFCCB864220000000000000000000000000000000A4EA79F97FF3E1F03000000000000003AADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED8D450A000000000000000000000000000000000000000000000000001DFFFFFFFFFFBC6A2C000000000000000000000000000000000040FFFFFF5A29000000000000000022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC8C4B1800000000000000000000000000000000000000000005387296B09FFFFFC1926336150000000000000000000000000038619697FF6F63360C0000000000228AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D5A220500000000000000000000000000000000000000000000000AFFFFFFFFFFFF6A4A320B0000000000000000000000000049FFFFFFFF4D1800000000000540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9E4B0D0000000000000000000000000000000000000A38556C6C6C554D6AFF7A4E1500000000000000000000003FA7B1C59FFF6F7F532903000032A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87C381700000000000000000000000000000000000000000000001D5DFFFF74512C1100000000000000000000000017FFFFFFFFFF330E000018FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECA5734B2B0D00000000000000000000000000000000222F3F321D22463F360A0000000000000000000A3F83CCC5FFFFDFB89263FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF936A3E160000000000000000000000000000000000001032FFFF513B0000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECA573350D00000000000000000000002229301D0B145C636B432500000000000047BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD8562300A00000000000000000000000022FFFFFFFFC57C401D00000000006AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC8C5C351D08000000000016FFFFFFFFFFFFFFFFFFFFCC9964DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8565553D1D0005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF %%Trailer %%EndDocument @endspecial 618 1006 a FX(T)n(itle:)800 1173 y F2(Simulation)59 b(language)i(\226)c(speci\002cation,)800 1303 y(v)o(eri\002cation)26 b(and)e(implementation)618 1568 y FX(Pr)n(oject)h(period:)800 1698 y F2(D)l(A)-10 b(T2,)22 b(Feb)l(.)h(3th)h(\226)f(May)h(30th,)g (2003)618 2032 y FX(Pr)n(oject)h(gr)n(oup:)800 2162 y F2(E1-209)618 2497 y FX(Members)f(of)f(the)g(gr)n(oup:)800 2627 y F2(Anders)h(Rune)g(Jensen)800 2756 y(Jasper)h(Kjersgaard)g(Juhl) 800 2886 y(Janne)g(Larsen)800 3016 y(Lau)e(Bech)h(Lauritzen)800 3146 y(Ole)f(Laursen)800 3276 y(Michael)i(Gade)e(Nielsen)618 3610 y FX(Super)o(visor:)800 3740 y F2(Igor)h(T)m(imk)o(o)618 4115 y FX(Number)e(of)i(copies:)g F2(8)618 4320 y FX(Report)g(\226)f (number)f(of)h(pages:)h F2(89)618 4524 y FX(A)n(ppendix)e(\226)h (number)f(of)h(pages:)h F2(2)618 4729 y FX(T)-8 b(otal)24 b(amount)e(of)i(pages:)g F2(91)p 2365 2319 1615 4 v 2365 3440 4 1122 v 2416 2406 a FX(Abstract:)2416 2639 y FY(A)18 b(simulation)f(language)f(with)i(a)h(syntax)e(similar)h(to)2416 2753 y(the)g(C)i(f)o(amily)e(is)h(designed)f(and)g(its)h(formal)f (seman-)2416 2868 y(tics)27 b(de\002ned.)f(A)h(translation)f(to)g(Ja)n (v)n(a)h(virtual)f(ma-)2416 2983 y(chine)g(assembler)g(is)h(then)f (speci\002ed,)f(and)h(pro)o(v)o(ed)2416 3097 y(to)31 b(preserv)o(e)e(the)i(high-le)n(v)o(el)e(semantics.)i(Finally)-5 b(,)2416 3212 y(an)35 b(actual)h(implementation)d(of)i(the)h(compiler)e (is)2416 3326 y(presented.)p 3976 3440 V 2365 3443 1615 4 v eop end %%Page: 1 3 TeXDict begin 1 2 bop 382 1249 a F4(Pr)l(eface)382 1711 y F2(This)18 b(report)i(documents)g(the)f(de)n(v)o(elopment)h(of)e(a)g (simulation)j(language)f(and)f(a)f(compiler)i(for)382 1841 y(the)j(language)i(with)d(the)h(Ja)n(v)n(a)g(virtual)h(machine)g (as)e(the)h(tar)n(get)h(architecture.)h(The)e(language)382 1971 y(and)i(compiler)i(ha)n(v)o(e)e(been)h(de)n(v)o(eloped)h(as)e (part)g(of)g(the)g(D)l(A)-10 b(T2)24 b(semester)i(at)f(Department)h(of) 382 2101 y(Computer)e(Science,)g(Aalbor)n(g)h(Uni)n(v)o(ersity)-6 b(.)523 2231 y(Source)24 b(code)h(for)e(the)h(compiler)h (implementation)h(is)e(a)n(v)n(ailable)i(at:)949 2460 y FW(http://www.cs.a)o(uc)o(.d)o(k/)o(~ja)o(sp)o(er)o(/d)o(at)o(2/)523 2889 y FV(Aalbor)m(g)o(,)e(May)f(2003,)p 645 3336 1182 6 v 1926 3336 V 645 3466 a(Lau)h(Bec)o(h)f(Lauritzen)567 b(J)m(asper)25 b(Kjer)o(sgaar)m(d)h(J)m(uhl)p 645 3725 V 1926 3725 V 645 3855 a(Mic)o(hael)f(Gade)e(Nielsen)471 b(Ander)o(s)24 b(Rune)g(J)n(ensen)p 645 4115 V 1926 4115 V 645 4245 a(Ole)f(Laur)o(sen)832 b(J)m(anne)25 b(Lar)o(sen)1854 5652 y F2(1)p eop end %%Page: 2 4 TeXDict begin 2 3 bop 382 1249 a F4(Contents)382 1802 y FX(1)91 b(Intr)n(oduction)2315 b(5)518 1932 y F2(1.1)96 b(Modeling)26 b(beha)n(viour)34 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)170 b(5)518 2062 y(1.2)96 b(Speci\002cation)26 b(of)d(models)48 b(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)170 b(6)518 2192 y(1.3)96 b(Basic)24 b(model)g(characteristics)51 b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)170 b(6)518 2322 y(1.4)96 b(A)23 b(railroad)i(compan)o(y)g(case)69 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)g(.)h(.)f(.)170 b(7)727 2452 y(1.4.1)110 b(The)23 b(three)i(models)52 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)170 b(8)727 2581 y(1.4.2)110 b(Using)24 b(the)g(models)g(for)g(simulation)59 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(11)727 2711 y(1.4.3)110 b(Or)n(ganising)26 b(the)e(models)g(and)g (the)g(simulation)i(setup)44 b(.)h(.)g(.)g(.)h(.)f(.)125 b(12)518 2841 y(1.5)96 b(Further)25 b(language)h(support)61 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)g(.)h(.)f(.)125 b(14)727 2971 y(1.5.1)110 b(Loops)47 b(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(14)727 3101 y(1.5.2)110 b(T)-7 b(ype)24 b(con)l(v)o(ersion)89 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)g(.)h(.)f(.)125 b(15)727 3231 y(1.5.3)110 b(Symbolic)25 b(constants)43 b(.)i(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(16)518 3360 y(1.6)96 b(Comparison)26 b(with)d(general-purpose)28 b(languages)35 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(16)382 3581 y FX(2)91 b(Syntax)2495 b(18)518 3711 y F2(2.1)96 b(Introduction)51 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h (.)f(.)125 b(18)518 3841 y(2.2)96 b(Conte)o(xt-free)26 b(speci\002cation)36 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(18)727 3971 y(2.2.1)110 b(Abstract)25 b(syntax)48 b(.)d(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(18)727 4101 y(2.2.2)110 b(Concrete)25 b(syntax)j(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)125 b(21)518 4230 y(2.3)96 b(Conte)o(xtual)26 b(speci\002cation)i(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(21)727 4360 y(2.3.1)110 b(Create)24 b(statement)h(requirement)92 b(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(21)727 4490 y(2.3.2)110 b(Identi\002er)25 b(binding)51 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)g(.)h(.)f(.)125 b(22)727 4620 y(2.3.3)110 b(T)-7 b(ype)24 b(rules)31 b(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(23)382 4841 y FX(3)91 b(Semantics)2369 b(27)518 4971 y F2(3.1)96 b(Introduction)51 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) h(.)f(.)125 b(27)518 5100 y(3.2)96 b(De\002nitions)26 b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(27)727 5230 y(3.2.1)110 b(Syntactic)25 b(cate)o(gories)93 b(.)46 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) g(.)h(.)f(.)125 b(27)727 5360 y(3.2.2)110 b(En)l(vironment)78 b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(27)1854 5652 y(2)p eop end %%Page: 3 5 TeXDict begin 3 4 bop 1639 228 a F1(CONTENTS)p 382 266 2989 4 v 727 548 a F2(3.2.3)110 b(Creation)25 b(list)32 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(29)727 678 y(3.2.4)110 b(Con)l(v)o(ersion)26 b(of)e(literals)37 b(.)46 b(.)f(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(29)518 808 y(3.3)96 b(Semantic)24 b(rules)h(for)f(the)f(language)30 b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) h(.)f(.)125 b(30)727 937 y(3.3.1)110 b(Expressions)42 b(.)j(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(30)727 1067 y(3.3.2)110 b(Statements)81 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(33)727 1197 y(3.3.3)110 b(T)-7 b(ople)n(v)o(el)24 b(constructs)50 b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)g(.)h(.)f(.)125 b(36)518 1327 y(3.4)96 b(Built-in)25 b(functions)59 b(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(38)382 1548 y FX(4)91 b(T)-7 b(ranslation)25 b(to)e(JVM)g(code)1797 b(40)518 1678 y F2(4.1)96 b(The)23 b(Ja)n(v)n(a)i(VM)72 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(40)727 1807 y(4.1.1)110 b(The)23 b(basic)i(model)82 b(.)45 b(.)g(.)h(.)f(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(41)727 1937 y(4.1.2)110 b(T)-7 b(ypes)59 b(.)45 b(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)g(.)h(.)f(.)125 b(41)727 2067 y(4.1.3)110 b(V)-10 b(ariables)25 b(and)f(functions)37 b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(42)727 2197 y(4.1.4)110 b(Stack)24 b(manipulation)j(instructions)80 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(42)727 2327 y(4.1.5)110 b(Arithmetic)25 b(instructions)50 b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) h(.)f(.)125 b(42)727 2457 y(4.1.6)110 b(Jump)24 b(instructions)42 b(.)j(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)125 b(43)727 2587 y(4.1.7)110 b(T)-7 b(ype)24 b(con)l(v)o(ersion)i(instructions)52 b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(44)518 2716 y(4.2)96 b(T)m(ranslation)88 b(.)45 b(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)g(.)h(.)f(.)125 b(44)727 2846 y(4.2.1)110 b(Expressions)42 b(.)j(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(45)727 2976 y(4.2.2)110 b(Statements)81 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(47)518 3106 y(4.3)96 b(Correctness)26 b(of)e(the)g(translation)44 b(.)i(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)125 b(48)727 3236 y(4.3.1)110 b(One)23 b(w)o(ay)85 b(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(49)727 3366 y(4.3.2)110 b(The)23 b(other)i(w)o(ay)90 b(.)45 b(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(58)727 3495 y(4.3.3)110 b(Correctness)52 b(.)45 b(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)125 b(66)382 3716 y FX(5)91 b(Implementation)2142 b(67)518 3846 y F2(5.1)96 b(Architecture)45 b(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)g(.)h(.)f(.)125 b(67)518 3976 y(5.2)96 b(Syntactic)25 b(analysis)49 b(.)d(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(69)727 4106 y(5.2.1)110 b FW(rdp)40 b F2(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)125 b(69)727 4236 y(5.2.2)110 b(T)m(ransforming)26 b(the)e(grammar)42 b(.)j(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)g(.)h(.)f(.)125 b(69)727 4365 y(5.2.3)110 b(Representation)27 b(of)d(the)g(abstract)h(syntax)91 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)125 b(71)727 4495 y(5.2.4)110 b(Creating)25 b(the)f(abstract)h(syntax)g(tree)58 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)125 b(73)518 4625 y(5.3)96 b(Conte)o(xtual)26 b(analysis)58 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(74)727 4755 y(5.3.1)110 b(Binding)25 b(identi\002ers)73 b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)125 b(74)727 4885 y(5.3.2)110 b(T)-7 b(ype)24 b(checking)86 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(76)727 5015 y(5.3.3)110 b(Importing)26 b(\002les)76 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(77)727 5145 y(5.3.4)110 b(Declarations)90 b(.)45 b(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f (.)125 b(78)518 5274 y(5.4)96 b(Error)24 b(reporting)87 b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(79)1854 5652 y(3)p eop end %%Page: 4 6 TeXDict begin 4 5 bop 1639 228 a F1(CONTENTS)p 382 266 2989 4 v 518 548 a F2(5.5)96 b(Code)24 b(generation)37 b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(79)727 678 y(5.5.1)110 b(Ov)o(erall)24 b(design)h(of)f(the)g(generated)i(code) 31 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(80)727 808 y(5.5.2)110 b(T)-7 b(ype)24 b(de\002nitions)30 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)125 b(80)727 937 y(5.5.3)110 b(V)-10 b(ariable)25 b(de\002nitions)43 b(.)i(.)h(.)f(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(81)727 1067 y(5.5.4)110 b(V)-10 b(ariable)25 b(lookup)38 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)125 b(82)727 1197 y(5.5.5)110 b(Function)25 b(de\002nitions)91 b(.)46 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(82)727 1327 y(5.5.6)110 b(Function)25 b(call)70 b(.)45 b(.)g(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) 125 b(83)727 1457 y(5.5.7)110 b(Enumerations)44 b(.)h(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)125 b(84)727 1587 y(5.5.8)110 b(Import)27 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(85)727 1717 y(5.5.9)110 b(Create)24 b(statements)41 b(.)k(.)g(.)h(.)f(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(85)727 1846 y(5.5.10)65 b(Declarations)90 b(.)45 b(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f (.)125 b(86)518 1976 y(5.6)96 b(Connecting)26 b(the)e(phases)89 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)125 b(86)518 2106 y(5.7)96 b(Conclusion)85 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)125 b(87)382 2327 y FX(Bibliograph)o(y)2390 b(89)382 2548 y(A)70 b FU(rdp)22 b FX(grammar)2208 b(90)1854 5652 y F2(4)p eop end %%Page: 5 7 TeXDict begin 5 6 bop 382 1202 a FT(Chapter)44 b(1)382 1654 y F4(Intr)l(oduction)382 2116 y F2(This)26 b(chapter)h(gi)n(v)o (es)g(an)f(introduction)j(to)d(the)g(problem)h(that)g(our)f(language)i (is)e(intended)i(to)382 2246 y(help)c(solv)o(e,)g(and)g(presents)i(the) e(v)n(arious)h(constructs)h(that)e(the)g(language)i(supports.)382 2561 y FS(1.1)119 b(Modeling)31 b(beha)m(viour)382 2785 y F2(Most)c(lar)n(ge)h(compan)o(y)g(decisions)i(in)l(v)n(olv)o(e)f (cost/bene\002t)g(analysis)g(based)f(on)f(estimates)i(of)382 2915 y(v)n(arious)21 b(parameters)g([4)q(],)e(such)h(as)f(ho)n(w)g (willing)i(the)e(customers)j(are)d(to)h(b)n(uy)g(a)f(certain)i(prod-) 382 3045 y(uct.)28 b(But)g(estimation)i(of)e(these)h(parameters)h(may)d (require)j(v)o(ery)f(comple)o(x)g(considerations)382 3175 y(and)24 b(considerable)j(e)o(xperience)f(with)e(the)f(speci\002c) i(domain)f(in)g(order)g(to)g(be)f(correct)i([5)q(].)523 3304 y(F)o(or)f(e)o(xample,)i(a)f(transportation)30 b(service)d(pro)o (vider)g(may)e(wish)g(to)g(\002nd)g(out)h(whether)g(a)382 3434 y(reduction)i(of)e(the)h(tick)o(et)g(prices)g(w)o(ould)g(increase) h(or)d(decrease)j(his)f(income.)f(Experiment-)382 3564 y(ing)k(with)g(changing)i(the)e(tick)o(et)i(prices)f(directly)h(may)-6 b(,)29 b(ho)n(we)n(v)o(er)l(,)h(be)g(e)o(xpensi)n(v)o(e)i(and)e(also) 382 3694 y(dif)n(\002cult)24 b(since)h(it)e(can)h(harm)g(the)f (reputation)k(of)c(the)h(service)h(pro)o(vider)-5 b(.)523 3824 y(Instead,)40 b(one)g(can)f(try)g(to)g(model)g(the)g(beha)n(viour) j(of)c(the)h(customers.)i(The)d(service)382 3954 y(pro)o(vider)k(might) f(conjecture)i(that)e(f)o(amilies)g(with)f(lo)n(w)g(income)h(tra)n(v)o (el)h(by)e(b)n(us)h(if)f(it)g(is)382 4083 y(cheaper)35 b(than)f(tra)n(v)o(eling)i(by)e(car)l(,)f(whereas)i(f)o(amilies)f(with) g(high)g(income)g(will)f(tra)n(v)o(el)i(by)382 4213 y(b)n(us)g(if)e(it) h(is)g(more)g(con)l(v)o(enient)j(no)d(matter)g(what.)g(The)g(service)h (pro)o(vider)h(can)f(then)f(\002nd)382 4343 y(the)e(number)g(of)f(lo)n (w-income)i(and)f(high-income)i(f)o(amilies)f(and)f(e)o(xamine)g(the)g (prices)h(for)382 4473 y(gasoline)25 b(and)f(the)g(a)n(v)o(erage)h(tra) n(v)o(el)g(durations)h(to)d(calculate)j(an)e(estimate.)523 4603 y(The)19 b(introduction)24 b(of)c(a)f(model)i(shifts)g(the)f(b)n (urden)h(of)f(determining)j(parameters)f(for)e(the)382 4733 y(decision)h(itself)e(to)g(determining)i(the)e(parameters)i(of)d (the)h(model,)g(which)g(in)f(some)h(situations)382 4862 y(may)f(be)h(much)g(easier)h(and)f(cheaper)-5 b(.)20 b(It)e(does)i(also)f(introduce)i(the)e(problem)h(of)e(ensuring)j(that) 382 4992 y(the)j(model)g(is)f(v)n(alid)h(in)g(itself,)g(ho)n(we)n(v)o (er)-5 b(.)1854 5652 y(5)p eop end %%Page: 6 8 TeXDict begin 6 7 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 382 548 a FS(1.2)119 b(Speci\002cation)32 b(of)d(models)382 772 y F2(So)23 b(ho)n(w)g(can)h(one)g(specify)h(a)e(model?)h(The)f(goal)i(of)e(this)h (project)h(is)f(to)f(help)h(that.)523 902 y(One)g(approach)i(is)e(to)h (e)o(xpress)g(the)g(relations)h(between)g(the)e(objects)i(in)e(terms)g (of)h(math-)382 1032 y(ematical)32 b(functions.)h(F)o(or)d(instance,)i (the)g(transportation)j(service)d(pro)o(vider)h(may)d(assume)382 1161 y(that)h(the)f(fraction)i(of)e(lo)n(w-income)h(f)o(amilies)g (which)g(tra)n(v)o(el)g(by)f(b)n(us)h(depends)h(linearly)g(on)382 1291 y(the)21 b(tick)o(et)i(price)f(between)g(the)f(tw)o(o)g (endpoints,)j(e)n(v)o(eryone)e(tra)n(v)o(eling)i(by)d(b)n(us)h(and)f(e) n(v)o(eryone)382 1421 y(tra)n(v)o(eling)26 b(by)d(car)-5 b(.)523 1551 y(A)23 b(mathematical)j(description)h(is)d(in)g(so)g(f)o (ar)h(good)g(enough,)g(b)n(ut)g(the)f(speci\002cation)j(of)d(a)382 1681 y(model)29 b(is)f(only)h(part)g(of)f(the)h(process.)h(Another)f (part)g(is)f(that)h(of)g(retrie)n(ving)h(data)f(from)g(the)382 1811 y(model.)j(If)f(the)g(amount)i(of)e(data)h(to)f(retrie)n(v)o(e)i (is)e(lar)n(ge,)h(this)g(retrie)n(v)n(al)h(is)f(best)g(done)g(auto-)382 1940 y(matically)25 b(which)e(requires)j(the)d(model)h(to)f(be)g (speci\002ed)i(with)e(a)g(strictly)i(formal)f(language.)382 2070 y(The)i(model)h(can)f(then)i(be)e(run)h(through)h(a)e(simulator)i (that)f(processes)i(the)e(description)i(and)382 2200 y(outputs)c(the)f(needed)h(data.)382 2515 y FS(1.3)119 b(Basic)29 b(model)h(characteristics)382 2739 y F2(Some)h (fundamentally)36 b(dif)n(ferent)e(options)g(e)o(xist)f(for)f (constructing)k(the)c(model.)h(One)f(can)382 2869 y(choose)24 b(a)e(continuous)k(time)c(approach)j(or)d(model)h(time)f(with)g (discrete)j(e)n(v)o(ents)e(so)f(that)h(each)382 2999 y(state)29 b(is)g(calculated)i(from)e(the)g(pre)n(vious)h(state.)f(And) g(when)f(modeling)j(man)o(y)d(similar)i(ob-)382 3129 y(jects,)25 b(one)g(can)g(either)h(actually)h(construct)g(all)e(these)h (objects)g(and)g(simulate)g(their)f(indi)n(vid-)382 3259 y(ual)31 b(beha)n(viour)l(,)i(or)d(only)i(construct)h(one)d(and)h(let)g (it)f(e)o(xhibit)i(an)e(a)n(v)o(erage)i(beha)n(viour)-5 b(.)33 b(The)382 3388 y(best)24 b(choice)h(is)f(not)f(ob)o(vious)j(and) e(may)f(depend)i(on)f(the)g(situation,)i(b)n(ut)e(we)f(ha)n(v)o(e)h (chosen)h(to)382 3518 y(support)g(discrete-e)n(v)o(ent)i(simulation)f (of)d(multiple)i(objects.)523 3648 y(One)d(important)j(adv)n(antage)g (of)e(formulating)i(the)e(models)g(as)g(discrete)i(e)n(v)o(ents)e(is)g (that)g(it)382 3778 y(mak)o(es)c(it)f(possible)i(to)e(e)o(xpress)i (dependencies)i(on)d(past)f(e)n(v)o(ents)i(directly)-6 b(.)20 b(F)o(or)d(instance,)j(with)382 3908 y(the)25 b(transportation)30 b(model)25 b(if)g(someone)i(in)e(a)g(f)o(amily)g (has)h(borro)n(wed)g(the)g(car)f(for)h(a)e(couple)382 4038 y(of)g(days,)h(the)f(car)h(is)f(not)g(a)n(v)n(ailable)j(which)d (af)n(fects)i(the)e(decision)j(process.)f(W)l(ith)e(a)g(discrete)382 4167 y(model,)31 b(we)g(can)g(easily)i(k)o(eep)f(track)g(of)f(such)h (situations,)h(whereas)f(a)f(continuous)j(model)382 4297 y(w)o(ould)24 b(ha)n(v)o(e)g(to)g(concern)h(itself)g(with)e(ho)n(w)g (the)o(y)h(af)n(fect)g(the)g(a)n(v)o(erage)h(case)f(beha)n(viour)-5 b(.)523 4427 y(Also)26 b(using)h(as)f(man)o(y)g(objects)i(as)e(modeled) h(instead)h(of)d(only)i(a)n(v)o(erage-case)j(ones)c(lets)382 4557 y(one)34 b(focus)g(on)f(modeling)i(a)e(particular)j(object)e(of)f (interest,)i(splitting)h(indi)n(vidual)g(dif)n(fer)n(-)382 4687 y(ences)22 b(into)g(dif)n(ferent)h(cases,)f(instead)g(of)f(ha)n (ving)i(to)e(think)i(about)f(all)f(at)g(once)h(to)f(capture)i(the)382 4817 y(a)n(v)o(erage)h(case)f(beha)n(viour)-5 b(.)25 b(A)c(more)i(sophisticated)j(analysis)f(of)d(the)h(data)g(generated)i (by)e(the)382 4947 y(model)28 b(may)g(also)h(be)f(concerned)j(with)d (more)g(than)h(just)f(the)h(a)n(v)o(erages)h(in)e(which)g(case)h(we)382 5076 y(must)23 b(ha)n(v)o(e)i(data)f(from)f(indi)n(vidual)j(objects.) 1854 5652 y(6)p eop end %%Page: 7 9 TeXDict begin 7 8 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 382 548 a FS(1.4)119 b(A)30 b(railr)n(oad)g(company)g(case)382 772 y F2(Based)i(on)g(the)g (observ)n(ations)k(in)c(the)g(pre)n(vious)i(sections,)g(this)e(section) i(will)d(de)n(v)o(elop)j(the)382 902 y(fundamentals)f(of)e(a)f(formal)h (modeling)i(language)g(for)d(simulation)j(in)d(parallel)j(with)d(pre-) 382 1032 y(senting)25 b(a)e(model)h(of)g(some)f(of)h(the)g(customers)h (of)f(a)f(railroad)i(compan)o(y)-6 b(.)523 1161 y(The)31 b(model)h(assumes)h(that)f(the)f(persons)j(can)d(either)i(go)f(by)f (train)h(or)g(by)f(car)h(and)g(in-)382 1291 y(corporates)g(three)f (kinds)f(of)g(persons)h(who)e(often)i(tra)n(v)o(el)f(by)g(train:)g (commuters,)g(b)n(usiness)382 1421 y(men)18 b(\(e.g.)h(mark)o(eting)h (or)f(sales)g(persons\))i(and)e(students)i(visiting)g(their)e(f)o (amily)-6 b(.)19 b(Commuters)382 1551 y(need)30 b(to)g(tra)n(v)o(el)h (each)f(w)o(orkday)h(and)f(we)f(will)h(characterize)j(them)c(as)h(w)o (anting)h(lo)n(w)e(price)382 1681 y(and)21 b(short)g(tra)n(v)o(el)h (times)e(since)i(tra)n(v)o(eling)g(tak)o(es)g(up)e(much)h(of)f(their)i (li)n(v)o(es.)e(Business)i(persons)382 1811 y(do)k(not)g(care)g(much)g (about)h(the)f(price)h(since)g(the)f(compan)o(y)g(pays)h(the)f(bill)g (and)h(presumably)382 1940 y(the)o(y)g(do)f(not)h(mind)f(a)g(long)i (journe)o(y)f(pro)o(vided)i(the)o(y)e(are)f(able)h(to)g(w)o(ork)f (meanwhile.)h(The)o(y)382 2070 y(will)k(tra)n(v)o(el)h(only)g(on)f(w)o (orkdays)i(b)n(ut)e(not)h(e)n(v)o(ery)g(day)-6 b(.)31 b(The)g(students)i(usually)g(only)f(tra)n(v)o(el)382 2200 y(during)26 b(the)f(week-ends,)h(i.e.)d(Friday)i(to)g(Monday)g (\(we)f(will)g(not)h(consider)i(holidays)g(or)d(v)n(a-)382 2330 y(cations\).)f(The)o(y)e(are)h(concerned)i(about)f(price,)f(b)n (ut)h(not)f(as)f(much)h(about)h(the)e(duration)j(of)e(the)382 2460 y(journe)o(y)-6 b(.)523 2590 y(F)o(or)23 b(speci\002cation)j(of)d (the)h(types,)h(we)d(will)h(borro)n(w)h(the)g(class)h(syntax)g(from)e (C++/Ja)n(v)n(a:)391 2754 y FR(t)9 b(y)g(p)g(e)65 b FY(C)5 b(o)g(m)g(m)g(u)g(t)g(e)g(r)48 b({)499 2869 y FQ(/)18 b(/)82 b(v)14 b(a)g(r)g(i)g(a)g(b)g(l)g(e)75 b(d)16 b(e)g(f)h(i)f(n)g (i)h(t)f(i)h(o)f(n)g(s)499 2983 y(/)i(/)82 b(f)14 b(u)g(n)f(c)h(t)g(i)g (o)g(n)80 b(d)16 b(e)g(f)h(i)f(n)g(i)h(t)f(i)h(o)f(n)g(s)491 3212 y FR(v)9 b(o)g(i)g(d)77 b FY(i)18 b(t)g(e)f(r)h(a)f(t)h(e)28 b(\()c FR(i)13 b(n)g(t)81 b FY(i)17 b(t)g(e)g(r)g(a)g(t)g(i)g(o)g(n)28 b(\))487 3327 y({)599 3442 y FQ(/)18 b(/)79 b(p)12 b(r)g(o)g(c)g(e)g(s) g(s)75 b(o)14 b(b)g(j)g(e)g(c)g(t)487 3556 y FY(})387 3671 y(})382 3850 y F2(In)21 b(this)g(and)h(the)f(follo)n(wing)i(code)e (snippets,)i(reserv)o(ed)g(w)o(ords)f(are)f(in)g(bold)h(f)o(ace.)f(The) g(iterate)382 3980 y(method)31 b(is)f(called)i(once)f(for)f(each)h (iteration)i(and)e(is)f(responsible)j(for)e(updating)h(the)f(state)382 4110 y(of)g(the)h(object.)g(W)-7 b(e)31 b(can)g(then)h(e)o(xtend)h(the) e(usual)i(C)d(v)n(ariable)j(de\002nition)g(syntax)g(with)e(an)382 4240 y(e)o(xtra)e(quali\002er)g FR(watched)e F2(which)h(causes)i(the)f (member)f(v)n(ariable)i(to)e(be)g(output)i(after)f(each)382 4370 y(iteration:)391 4534 y FR(t)9 b(y)g(p)g(e)65 b FY(C)5 b(o)g(m)g(m)g(u)g(t)g(e)g(r)48 b({)488 4649 y FR(w)7 b(a)g(t)g(c)g(h)g(e)g(d)63 b(b)9 b(o)g(o)g(l)76 b FY(t)16 b(r)g(a)g(i)h(n)34 b(;)125 b FQ(/)18 b(/)74 b(g)6 b(o)61 b(b)7 b(y)71 b(t)14 b(r)h(a)f(i)h(n)j(?)499 4763 y(/)g(/)85 b(.)23 b(.)g(.)387 4878 y FY(})382 5057 y F2(This)f(simple)i(structure)g(realizes)h(the)e(discrete)h(e)n(v)o (ent)f(model)g(and)g(at)g(the)g(same)f(time)h(allo)n(ws)382 5187 y(us)g(to)h(easily)h(de\002ne)f(what)f(output)i(we)e(w)o(ant)g (from)h(the)g(simulation.)1854 5652 y(7)p eop end %%Page: 8 10 TeXDict begin 8 9 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 382 548 a FP(1.4.1)99 b(The)26 b(thr)n(ee)g(models)382 739 y F2(So)e(sticking)i(to)f(the)g (notation)i(of)d(the)h(C)f(f)o(amily)h(of)g(languages,)i(we)d(can)h (de\002ne)g(a)f(model)h(of)382 869 y(a)e(commuter:)274 1033 y FO(1)92 b FR(t)9 b(y)g(p)g(e)65 b FY(C)5 b(o)g(m)g(m)g(u)g(t)g (e)g(r)48 b({)274 1148 y FO(2)197 b FR(f)14 b(l)h(o)f(a)g(t)72 b FY(i)8 b(n)g(c)g(o)g(m)g(e)58 b(=)53 b(5)15 b(0)h(0)g(0)f(0)53 b(.)15 b(.)h(.)53 b(5)16 b(0)f(0)h(0)f(0)h(0)f(;)71 b FQ(/)18 b(/)77 b(r)9 b(a)g(n)g(d)g(o)g(m)g(l)g(y)71 b(s)15 b(e)f(l)h(e)f(c)h(t)f(e)h(d)274 1263 y FO(3)189 b FR(w)7 b(a)g(t)g(c)g(h)g(e)g(d)63 b(b)9 b(o)g(o)g(l)76 b FY(t)16 b(r)g(a)g(i)h(n)29 b(;)274 1377 y FO(4)274 1492 y(5)192 b FR(v)9 b(o)g(i)g(d)77 b FY(i)18 b(t)g(e)f(r)h(a)f(t)h(e)28 b(\()c FR(i)13 b(n)g(t)81 b FY(i)17 b(t)g(e)g(r)g(a)g(t)g(i)g(o)g(n)28 b(\))274 1606 y FO(6)188 b FY({)274 1721 y FO(7)295 b FR(i)13 b(n)g(t)70 b FY(w)7 b(e)g(e)g(k)g(d)g(a)g(y)54 b(=)69 b(i)17 b(t)g(e)g(r)g(a)g(t)g(i)h(o)e(n)62 b(\045)46 b(7)12 b(;)274 1835 y FO(8)298 b FR(i)17 b(f)71 b FY(\()23 b(w)7 b(e)g(e)g(k)g(d)g(a)g(y)67 b(<)50 b(5)14 b(\))49 b({)274 1950 y FO(9)396 b FR(f)15 b(l)f(o)g(a)h(t)73 b FY(p)9 b(r)g(o)g(b)22 b(;)249 2065 y FO(10)249 2179 y(11)396 b FR(f)15 b(l)f(o)g(a)h(t)78 b FY(p)13 b(r)g(i)h(c)g(e)65 b(=)g(p)14 b(r)f(i)h(c)g(e)g(_)f(c)h(a)g(r)77 b(/)64 b(\()36 b(p)16 b(r)f(i)h(c)f(e)h(_)f(t)h(r)f(a)h(i)g(n)66 b(+)f(p)14 b(r)f(i)h(c)g(e)g(_)f(c)h(a)g(r)30 b(\))16 b(;)249 2294 y FO(12)396 b FR(f)15 b(l)f(o)g(a)h(t)74 b FY(t)10 b(i)g(m)g(e)62 b(=)h(t)12 b(i)g(m)g(e)g(_)g(c)g(a)g(r)74 b(/)64 b(\()35 b(t)15 b(i)f(m)g(e)g(_)g(t)g(r)g(a)g(i)g(n)66 b(+)d(t)12 b(i)g(m)g(e)g(_)g(c)g(a)g(r)27 b(\))15 b(;)249 2408 y FO(13)249 2523 y(14)398 b FR(i)16 b(f)71 b FY(\()25 b(i)8 b(n)g(c)g(o)g(m)g(e)59 b(<)43 b(1)11 b(5)g(0)g(0)g(0)g(0)g(\))249 2637 y FO(15)491 b FY(p)9 b(r)g(o)g(b)64 b(=)55 b(0)17 b(.)g(7)55 b FN(\003)69 b FY(p)13 b(r)h(i)g(c)f(e)69 b(+)56 b(0)16 b(.)i(3)54 b FN(\003)66 b FY(t)10 b(i)g(m)g(e)24 b(;)249 2752 y FO(16)396 b FR(e)14 b(l)g(s)g(e)80 b(i)17 b(f)70 b FY(\()25 b(i)8 b(n)g(c)g(o)g(m)g(e)59 b(<)43 b(3)11 b(0)g(0)g(0)g(0)g(0)g(\))249 2866 y FO(17)491 b FY(p)9 b(r)g(o)g(b)64 b(=)55 b(0)17 b(.)g(3)55 b FN(\003)69 b FY(p)13 b(r)h(i)g(c)f(e)69 b(+)56 b(0)16 b(.)i(7)54 b FN(\003)66 b FY(t)10 b(i)g(m)g(e)24 b(;)249 2981 y FO(18)396 b FR(e)14 b(l)g(s)g(e)249 3096 y FO(19)491 b FY(p)9 b(r)g(o)g(b)60 b(=)h(t)10 b(i)g(m)g(e)25 b(;)249 3210 y FO(20)249 3325 y(21)396 b FR(f)15 b(l)f(o)g(a)h(t)70 b FY(r)6 b(a)g(n)g(d)g(o)g(m)68 b(=)61 b(0)20 b(.)g(0)61 b(.)20 b(.)g(.)61 b(1)20 b(.)g(0)f(;)249 3439 y FO(22)398 b FY(t)16 b(r)g(a)g(i)g(n)67 b(=)58 b(r)6 b(a)g(n)g(d)g(o)g(m)64 b(<)54 b(p)9 b(r)g(o)g(b)22 b(;)249 3554 y FO(23)287 b FY(})249 3668 y FO(24)296 b FR(e)14 b(l)g(s)h(e)249 3783 y FO(25)398 b FY(t)16 b(r)g(a)g(i)g(n)67 b(=)f FR(f)14 b(a)g(l)h(s)g(e)28 b FY(;)249 3898 y FO(26)188 b FY(})249 4012 y FO(27)88 b FY(})382 4192 y F2(On)31 b(line)h(2,)f(the)h(model)g (de\002nes)g(an)g(income)g(in)g(the)f(range)i FY(min_income)28 b F2(to)k FY(max_income)l F2(;)382 4322 y(the)d(binary)h(operator)55 b FY(...)d F2(returns)31 b(a)d(random)h(number)h(linearly)g(distrib)n (uted)i(in)d(the)g(range)382 4452 y(denoted)c(by)f(the)g(tw)o(o)f(ar)n (guments.)i(Then)f(it)f(de\002nes)h(an)g(output)h(boolean)g(v)n (ariable)g(for)f(indi-)382 4581 y(cating)h(whether)f(the)g(person)h (went)f(by)f(train.)523 4711 y(The)55 b FY(iterate)f F2(method)30 b(checks)g(whether)f(it)g(is)f(a)g(w)o(orkday)i(\(line)f (8\);)g(if)f(so,)h(the)f(proba-)382 4841 y(bility)g(of)e(the)h(person)h (choosing)h(the)e(train)g(is)f(calculated)k(by)c(se)o(gmenting)j(the)e (commuters)382 4971 y(into)22 b(three)h(groups)h(depending)g(on)e (income)h(\(line)g(14,)e(16)h(and)h(18\))f(and)g(setting)i(weights)f (for)382 5101 y(the)f(dependenc)o(y)j(on)d(price)h(and)g(journe)o(y)g (duration.)h(Finally)f(a)f(random)h(v)n(alue)f(is)g(generated)382 5231 y(and)i(the)g(outcome)h(is)e(chosen)i(from)f(that)g(\(line)g (22\).)1854 5652 y(8)p eop end %%Page: 9 11 TeXDict begin 9 10 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 523 548 a F2(The)23 b(calculations)k(depend)f(on)e(some)g(v)n(ariables)h(that)g(are)f(not)g (de\002ned)g(abo)o(v)o(e,)g(the)g(cost)382 678 y(of)i(tra)n(v)o(eling)j (by)e(train)g(or)f(car)h(and)g(the)g(respecti)n(v)o(e)h(journe)o(y)g (durations.)h(These)e(depend)h(on)382 808 y(the)c(particular)i(person)f (\226)e(we)g(will)g(later)h(discuss)i(ho)n(w)d(to)g(incorporate)k (them.)523 937 y(A)22 b(simple)j(model)f(of)f(a)g(b)n(usiness)j(man)d (is:)274 1097 y FO(1)92 b FR(t)9 b(y)g(p)g(e)68 b FY(B)8 b(u)g(s)g(i)g(n)g(e)g(s)g(s)g(M)g(a)g(n)59 b({)274 1212 y FO(2)189 b FR(w)7 b(a)g(t)g(c)g(h)g(e)g(d)63 b(b)9 b(o)g(o)g(l)76 b FY(t)16 b(r)g(a)g(i)h(n)29 b(;)274 1326 y FO(3)274 1441 y(4)192 b FR(v)9 b(o)g(i)g(d)77 b FY(i)18 b(t)g(e)f(r)h(a)f(t)h(e)28 b(\()c FR(i)13 b(n)g(t)81 b FY(i)17 b(t)g(e)g(r)g(a)g(t)g(i)g(o)g(n)28 b(\))274 1555 y FO(5)188 b FY({)274 1670 y FO(6)295 b FR(i)13 b(n)g(t)70 b FY(w)7 b(e)g(e)g(k)g(d)g(a)g(y)54 b(=)69 b(i)17 b(t)g(e)g(r)g(a)g(t)g(i)h(o)e(n)62 b(\045)46 b(7)12 b(;)274 1784 y FO(7)274 1899 y(8)298 b FR(i)17 b(f)71 b FY(\()23 b(w)7 b(e)g(e)g(k)g(d)g(a)g(y)71 b(<)53 b(5)f(&)15 b(&)52 b(0)15 b(.)h(0)52 b(.)15 b(.)h(.)52 b(1)15 b(.)h(0)68 b(<)e(t)14 b(r)g(a)g(v)g(e)g(l)g(_)g(p)g(r)g(o)g(b)23 b(\))51 b({)274 2014 y FO(9)398 b FR(i)16 b(f)71 b FY(\()29 b(t)12 b(i)g(m)g(e)g(_)g(c)g(a)g(r)79 b(<)52 b(0)15 b(.)h(5)f(\))219 b FQ(/)18 b(/)83 b(l)15 b(e)g(s)g(s)75 b(t)10 b(h)g(a)g(n)74 b(h)14 b(a)f(l)h(f)70 b(a)6 b(n)62 b(h)8 b(o)g(u)g(r)249 2128 y FO(10)498 b FY(t)16 b(r)g(a)g(i)g(n)67 b(=)f FR(f)14 b(a)g(l)h(s)g(e)27 b FY(;)249 2243 y FO(11)396 b FR(e)14 b(l)g(s)g(e)80 b(i)17 b(f)70 b FY(\()29 b(t)12 b(i)g(m)g(e)g(_)g(c)g(a) g(r)77 b(>)50 b(3)15 b(\))68 b FQ(/)18 b(/)74 b(m)6 b(o)g(r)g(e)64 b(t)10 b(h)g(a)g(n)73 b(t)13 b(h)g(r)g(e)g(e)73 b(h)10 b(o)g(u)g(r)g(s)249 2357 y FO(12)498 b FY(t)16 b(r)g(a)g(i)g(n)67 b(=)61 b FR(t)10 b(r)g(u)g(e)25 b FY(;)249 2472 y FO(13)396 b FR(e)14 b(l)g(s)g(e)61 b FY({)249 2586 y FO(14)496 b FR(f)14 b(l)h(o)f(a)g(t)75 b FY(b)11 b(a)g(s)g(e)g(_)g(p)g(r)g(o)g(b) 60 b(=)54 b(\()28 b(t)12 b(i)g(m)g(e)g(_)g(c)g(a)g(r)79 b FN(\000)53 b FY(0)15 b(.)g(5)h(\))51 b(/)i(\()15 b(3)68 b FN(\000)53 b FY(0)15 b(.)g(5)h(\))f(;)249 2701 y FO(15)496 b FR(f)14 b(l)h(o)f(a)g(t)80 b FY(f)15 b(r)g(a)h(c)f(t)h(i)g(o)f(n)66 b(=)g(t)14 b(i)g(m)g(e)g(_)g(t)g(r)g(a)g(i)h(n)77 b(/)e(t)12 b(i)g(m)g(e)g(_)g(c)g(a)g(r)24 b(;)249 2816 y FO(16)496 b FR(f)14 b(l)h(o)f(a)g(t)78 b FY(f)14 b(i)g(n)f(a)h(l)g(_)f(p)g(r)h(o) f(b)65 b(=)d(b)11 b(a)g(s)g(e)g(_)g(p)g(r)g(o)g(b)60 b(^)71 b(f)15 b(r)h(a)f(c)h(t)f(i)h(o)f(n)29 b(;)249 2930 y FO(17)249 3045 y(18)498 b FY(t)16 b(r)g(a)g(i)g(n)74 b(=)58 b(0)19 b(.)f(0)58 b(.)19 b(.)g(.)58 b(1)18 b(.)h(0)77 b(<)72 b(f)14 b(i)g(n)f(a)h(l)g(_)f(p)g(r)h(o)f(b)27 b(;)249 3159 y FO(19)387 b FY(})249 3274 y FO(20)287 b FY(})249 3388 y FO(21)296 b FR(e)14 b(l)g(s)h(e)131 b FQ(/)18 b(/)73 b(d)6 b(o)65 b(n)11 b(o)g(t)74 b(t)15 b(r)h(a)e(v)h(e)g(l)76 b(t)11 b(o)g(d)g(a)g(y)249 3503 y FO(22)398 b FY(t)16 b(r)g(a)g(i)g(n)67 b(=)f FR(f)14 b(a)g(l)h(s)g(e)28 b FY(;)249 3618 y FO(23)188 b FY(})249 3732 y FO(24)88 b FY(})382 3907 y F2(The)28 b(model)g(assumes)i(that)44 b FY(tra)n(v)o(el_prob)c F2(has)28 b(been)h(de\002ned.)g(On)f(line)g (14,)g(the)h(base)g(prob-)382 4037 y(ability)i(is)e(linearly)i (interpolated)i(between)d(half)g(an)f(hour)h(\(al)o(w)o(ays)h(go)e(by)g (car\))h(and)g(three)382 4167 y(hours)24 b(\(al)o(w)o(ays)g(go)f(by)g (train\).)h(On)e(line)i(16,)f(the)g(\002nal)g(probability)j(is)d(then)g (sk)o(e)n(wed)h(by)f(rais-)382 4296 y(ing)33 b(it)f(to)h(the)g(po)n (wer)g(of)f(the)h(relati)n(v)o(e)h(journe)o(y)g(durations)h(between)f (going)g(by)f(train)g(and)382 4426 y(going)25 b(by)e(car)h(\()p FY(^)f F2(is)g(the)h(po)n(wer)g(operator\);)i(Figure)e(1.1)f (illustrates)k(the)d(ef)n(fect.)523 4556 y(A)e(model)i(of)g(a)f (student)i(is:)274 4716 y FO(1)92 b FR(t)9 b(y)g(p)g(e)72 b FY(S)12 b(t)g(u)g(d)g(e)g(n)g(t)56 b({)274 4830 y FO(2)196 b FR(i)13 b(n)g(t)68 b FY(m)6 b(a)g(x)g(_)g(w)g(e)g(e)g(k)g(s)14 b(;)274 4945 y FO(3)196 b FR(i)13 b(n)g(t)74 b FY(d)12 b(e)g(p)g(a)g(r)g(t)g(u)g(r)g(e)f(_)g(d)g(a)h(y)36 b(,)72 b(r)13 b(e)g(t)g(u)g(r)g(n)g(_)g(d)g(a)f(y)19 b(;)274 5059 y FO(4)189 b FR(w)7 b(a)g(t)g(c)g(h)g(e)g(d)63 b(b)9 b(o)g(o)g(l)76 b FY(t)16 b(r)g(a)g(i)h(n)29 b(;)274 5174 y FO(5)196 b FR(i)13 b(n)g(t)81 b FY(l)18 b(a)g(s)g(t)g(_)g(v)f(i)h(s)h (i)f(t)71 b(=)52 b(0)16 b(;)274 5289 y FO(6)274 5403 y(7)192 b FR(v)9 b(o)g(i)g(d)71 b FY(S)12 b(t)g(u)g(d)g(e)g(n)g(t)25 b(\()14 b(\))1854 5652 y F2(9)p eop end %%Page: 10 12 TeXDict begin 10 11 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 531 2340 a @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 3227 @rwi @setspecial %%BeginDocument: intro/images/train-probability.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: train-probability.eps %%Creator: gnuplot 3.7 patchlevel 1 %%CreationDate: Wed May 21 15:54:29 2003 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth } def /AL { stroke userlinewidth 2 div setlinewidth } def /UL { dup gnulinewidth mul /userlinewidth exch def 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 630 420 M 63 0 V 6269 0 R -63 0 V 546 420 M (0) Rshow 630 1310 M 63 0 V 6269 0 R -63 0 V -6353 0 R (0.2) Rshow 630 2201 M 63 0 V 6269 0 R -63 0 V -6353 0 R (0.4) Rshow 630 3091 M 63 0 V 6269 0 R -63 0 V -6353 0 R (0.6) Rshow 630 3982 M 63 0 V 6269 0 R -63 0 V -6353 0 R (0.8) Rshow 630 4872 M 63 0 V 6269 0 R -63 0 V -6353 0 R (1) Rshow 630 420 M 0 63 V 0 4389 R 0 -63 V 630 280 M (0) Cshow 1896 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R (0.2) Cshow 3163 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R (0.4) Cshow 4429 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R (0.6) Cshow 5696 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R (0.8) Cshow 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R (1) Cshow 1.000 UL LTb 630 420 M 6332 0 V 0 4452 V -6332 0 V 630 420 L 140 2646 M currentpoint gsave translate 90 rotate 0 0 M (Final probability) Cshow grestore 3796 70 M (Base probability) Cshow 1.000 UL LT0 6245 1756 M (1/2) Rshow 6329 1756 M 399 0 V 630 420 M 64 447 V 64 186 V 64 142 V 64 120 V 64 106 V 64 95 V 64 88 V 64 82 V 64 76 V 64 73 V 64 69 V 64 66 V 63 63 V 64 61 V 64 59 V 64 57 V 64 55 V 64 53 V 64 52 V 64 51 V 64 49 V 64 49 V 64 47 V 64 46 V 64 45 V 64 45 V 64 43 V 64 43 V 64 42 V 64 41 V 64 40 V 64 40 V 64 39 V 64 39 V 64 38 V 64 38 V 64 37 V 63 36 V 64 36 V 64 36 V 64 35 V 64 35 V 64 34 V 64 34 V 64 34 V 64 33 V 64 33 V 64 32 V 64 32 V 64 32 V 64 31 V 64 32 V 64 30 V 64 31 V 64 30 V 64 30 V 64 30 V 64 30 V 64 29 V 64 29 V 64 29 V 63 28 V 64 28 V 64 29 V 64 27 V 64 28 V 64 27 V 64 28 V 64 27 V 64 27 V 64 26 V 64 27 V 64 26 V 64 26 V 64 26 V 64 26 V 64 25 V 64 26 V 64 25 V 64 25 V 64 25 V 64 25 V 64 24 V 64 25 V 64 24 V 64 24 V 63 24 V 64 24 V 64 24 V 64 24 V 64 23 V 64 24 V 64 23 V 64 23 V 64 23 V 64 23 V 64 23 V 64 22 V 64 23 V 1.000 UL LT1 6245 1616 M (2/3) Rshow 6329 1616 M 399 0 V 630 420 M 64 208 V 64 122 V 64 103 V 64 91 V 64 84 V 64 79 V 64 74 V 64 71 V 64 68 V 64 66 V 64 63 V 64 61 V 63 60 V 64 58 V 64 57 V 64 56 V 64 54 V 64 54 V 64 52 V 64 52 V 64 50 V 64 50 V 64 49 V 64 49 V 64 48 V 64 47 V 64 46 V 64 46 V 64 46 V 64 45 V 64 44 V 64 44 V 64 43 V 64 43 V 64 43 V 64 42 V 64 42 V 63 41 V 64 41 V 64 41 V 64 41 V 64 40 V 64 39 V 64 40 V 64 39 V 64 39 V 64 38 V 64 39 V 64 38 V 64 37 V 64 38 V 64 37 V 64 37 V 64 37 V 64 37 V 64 36 V 64 36 V 64 36 V 64 36 V 64 35 V 64 36 V 63 35 V 64 35 V 64 35 V 64 34 V 64 35 V 64 34 V 64 34 V 64 34 V 64 33 V 64 34 V 64 33 V 64 34 V 64 33 V 64 33 V 64 33 V 64 32 V 64 33 V 64 32 V 64 32 V 64 33 V 64 32 V 64 31 V 64 32 V 64 32 V 64 31 V 63 32 V 64 31 V 64 31 V 64 31 V 64 31 V 64 31 V 64 30 V 64 31 V 64 30 V 64 31 V 64 30 V 64 30 V 64 30 V 1.000 UL LT2 6245 1476 M (1) Rshow 6329 1476 M 399 0 V 630 420 M 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 63 45 V 64 45 V 64 45 V 64 45 V 64 44 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 63 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 44 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 63 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 44 V 64 45 V 64 45 V 64 45 V 63 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 64 45 V 1.000 UL LT3 6245 1336 M (3/2) Rshow 6329 1336 M 399 0 V 630 420 M 64 5 V 64 8 V 64 10 V 64 13 V 64 15 V 64 15 V 64 18 V 64 18 V 64 20 V 64 21 V 64 22 V 64 23 V 63 24 V 64 25 V 64 26 V 64 26 V 64 28 V 64 28 V 64 29 V 64 30 V 64 31 V 64 31 V 64 33 V 64 32 V 64 34 V 64 34 V 64 35 V 64 36 V 64 36 V 64 37 V 64 37 V 64 38 V 64 39 V 64 39 V 64 40 V 64 40 V 64 41 V 63 42 V 64 42 V 64 42 V 64 44 V 64 43 V 64 44 V 64 45 V 64 45 V 64 46 V 64 46 V 64 47 V 64 47 V 64 48 V 64 48 V 64 49 V 64 49 V 64 49 V 64 51 V 64 50 V 64 51 V 64 51 V 64 52 V 64 53 V 64 52 V 63 53 V 64 54 V 64 54 V 64 54 V 64 55 V 64 56 V 64 55 V 64 56 V 64 57 V 64 57 V 64 57 V 64 58 V 64 58 V 64 59 V 64 58 V 64 60 V 64 59 V 64 61 V 64 60 V 64 61 V 64 61 V 64 62 V 64 62 V 64 62 V 64 63 V 63 63 V 64 63 V 64 64 V 64 64 V 64 64 V 64 65 V 64 65 V 64 66 V 64 66 V 64 66 V 64 67 V 64 67 V 64 67 V 1.000 UL LT4 6245 1196 M (2) Rshow 6329 1196 M 399 0 V 630 420 M 64 0 V 64 2 V 64 2 V 64 3 V 64 4 V 64 5 V 64 6 V 64 7 V 64 8 V 64 8 V 64 10 V 64 10 V 63 12 V 64 12 V 64 13 V 64 14 V 64 15 V 64 16 V 64 17 V 64 18 V 64 18 V 64 20 V 64 20 V 64 22 V 64 22 V 64 23 V 64 24 V 64 25 V 64 26 V 64 27 V 64 28 V 64 28 V 64 30 V 64 30 V 64 31 V 64 33 V 64 33 V 63 34 V 64 35 V 64 36 V 64 37 V 64 37 V 64 39 V 64 39 V 64 41 V 64 41 V 64 42 V 64 44 V 64 44 V 64 45 V 64 45 V 64 47 V 64 48 V 64 49 V 64 49 V 64 50 V 64 52 V 64 52 V 64 53 V 64 54 V 64 55 V 63 56 V 64 57 V 64 58 V 64 58 V 64 60 V 64 60 V 64 61 V 64 63 V 64 63 V 64 64 V 64 65 V 64 66 V 64 66 V 64 68 V 64 69 V 64 69 V 64 71 V 64 71 V 64 72 V 64 73 V 64 74 V 64 75 V 64 76 V 64 77 V 64 78 V 63 78 V 64 80 V 64 80 V 64 81 V 64 83 V 64 83 V 64 84 V 64 85 V 64 86 V 64 86 V 64 88 V 64 89 V 64 89 V stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 453 2537 a FQ(F)l(igur)m(e)26 b(1.1:)j(Illustr)o(ation)d (of)32 b FI(p)1401 2551 y FH(\002nal)1553 2537 y FG(=)42 b FI(p)1704 2507 y FE(t)1703 2564 y FH(base)1849 2537 y FQ(for)27 b(some)g(values)f(of)i FI(t)g FQ(wher)m(e)g FI(t)37 b FG(=)g FI(t)2983 2549 y FH(tr)o(ain)3110 2537 y FL(/)r FI(t)3191 2549 y FH(car)3279 2537 y FQ(.)453 2652 y(When)30 b FI(k)44 b FJ(>)e FL(1)p FQ(,)30 b(the)g(pr)l (obability)f(is)h(sk)o(e)o(wed)h(towar)m(ds)f(zer)l(o;)g(vice)g(ver)o (sa)h(for)g FI(k)44 b FJ(<)e FL(1)p FQ(.)30 b(When)454 2766 y FI(k)25 b FG(=)f FL(1)p FQ(,)c(the)g(\002nal)f(pr)l(obability)g (is)j(simply)e(the)g(base)g(pr)l(obability)-5 b(.)274 3041 y FO(8)188 b FY({)274 3155 y FO(9)300 b FQ(/)18 b(/)80 b(e)13 b(x)g(p)g(e)g(n)g(s)g(i)g(v)g(e)73 b(t)15 b(r)g(a)g(v)g(e)g(l)78 b(i)14 b(m)g(p)g(l)g(i)g(e)g(s)75 b(s)14 b(t)g(a)g(y)g(i)g(n)g(g)64 b(a)5 b(w)g(a)g(y)65 b(l)12 b(o)g(n)g(g)g(e)g(r)249 3270 y FO(10)288 b FY(m)6 b(a)g(x)g(_)g(w)g(e)g(e)g(k)g(s)52 b(=)67 b(p)15 b(r)g(i)h(c)f(e)h(_)f (t)h(r)f(a)h(i)g(n)75 b(/)60 b(1)19 b(0)g(0)60 b(+)g(\()19 b(1)59 b(.)20 b(.)f(.)60 b(1)19 b(2)g(\))g(;)249 3384 y FO(11)300 b FQ(/)18 b(/)82 b(s)14 b(e)h(t)79 b(o)15 b(f)h(f)74 b(F)9 b(r)g(i)g(d)g(a)g(y)37 b(,)71 b(S)11 b(a)g(t)g(u)g(r)g(d)g(a)g(y)67 b(o)9 b(r)65 b(S)8 b(u)g(n)g(d)g(a)g(y) 249 3499 y FO(12)294 b FY(d)12 b(e)g(p)g(a)g(r)g(t)g(u)g(r)g(e)g(_)g(d) g(a)g(y)76 b(=)64 b(0)21 b(.)g(6)63 b(:)h(4)f(|)h(0)21 b(.)g(3)63 b(:)h(5)f(|)g(0)21 b(.)g(1)64 b(:)f(6)21 b(;)249 3613 y FO(13)300 b FQ(/)18 b(/)81 b(r)13 b(e)g(t)g(u)g(r)g(n)72 b(S)10 b(a)g(t)g(u)g(r)g(d)g(a)g(y)36 b(,)67 b(S)8 b(u)g(n)g(d)g(a)g(y) 63 b(o)9 b(r)61 b(M)t(o)t(n)t(d)t(a)t(y)249 3728 y FO(14)295 b FY(r)13 b(e)g(t)g(u)g(r)g(n)g(_)g(d)g(a)f(y)62 b(=)56 b(\()17 b(\()30 b(d)12 b(e)g(p)g(a)g(r)g(t)g(u)g(r)g(e)g(_)g(d)g(a)g(y) 71 b(+)58 b(1)19 b(\))58 b(.)19 b(.)f(.)59 b(7)18 b(\))58 b(\045)h(7)19 b(;)249 3843 y FO(15)188 b FY(})249 3957 y FO(16)249 4072 y(17)k FR(v)9 b(o)g(i)g(d)77 b FY(i)18 b(t)g(e)f(r)h(a)f(t)h(e)28 b(\()c FR(i)13 b(n)g(t)81 b FY(i)17 b(t)g(e)g(r)g(a)g(t)g(i)g(o)g(n)28 b(\))249 4186 y FO(18)188 b FY({)249 4301 y FO(19)295 b FR(i)13 b(n)g(t)70 b FY(w)7 b(e)g(e)g(k)g(d)g(a)g(y)54 b(=)69 b(i)17 b(t)g(e)g(r)g(a)g(t)g(i)h(o)e(n)62 b(\045)46 b(7)12 b(;)249 4415 y FO(20)297 b FR(f)14 b(l)h(o)f(a)g(t)73 b FY(p)9 b(r)g(o)g(b)61 b(=)k(p)13 b(r)h(i)g(c)g(e)f(_)h(c)g(a)f(r)78 b(/)63 b(\()37 b(p)15 b(r)h(i)f(c)h(e)f(_)h(t)f(r)h(a)f(i)h(n)67 b(+)e(p)13 b(r)h(i)g(c)g(e)f(_)h(c)g(a)f(r)30 b(\))16 b(;)249 4530 y FO(21)249 4645 y(22)298 b FY(t)17 b(r)e(a)h(i)h(n)67 b(=)e FR(f)15 b(a)f(l)g(s)h(e)28 b FY(;)249 4759 y FO(23)249 4874 y(24)298 b FR(i)17 b(f)71 b FY(\()23 b(w)7 b(e)g(e)g(k)g(d)g(a)g (y)50 b(=)13 b(=)58 b(d)12 b(e)g(p)g(a)g(r)g(t)g(u)g(r)g(e)g(_)g(d)g(a) g(y)27 b(\))51 b({)249 4988 y FO(25)396 b FR(f)15 b(l)f(o)g(a)h(t)77 b FY(r)13 b(e)g(t)g(u)g(r)g(n)g(_)g(p)g(r)g(o)g(b)60 b(=)69 b(l)18 b(a)g(s)g(t)g(_)g(v)g(i)g(s)g(i)g(t)81 b(/)69 b(m)6 b(a)g(x)g(_)g(w)g(e)g(e)g(k)g(s)14 b(;)249 5103 y FO(26)398 b FR(i)16 b(f)76 b FY(\()19 b(0)g(.)g(0)59 b(.)19 b(.)g(.)60 b(1)19 b(.)g(0)78 b(<)72 b(r)13 b(e)g(t)g(u)g(r)g(n)g (_)g(p)g(r)g(o)g(b)25 b(\))51 b({)249 5217 y FO(27)498 b FY(t)16 b(r)g(a)g(i)g(n)74 b(=)58 b(0)19 b(.)f(0)58 b(.)19 b(.)g(.)58 b(1)18 b(.)h(0)77 b(<)68 b(p)9 b(r)g(o)g(b)22 b(;)249 5332 y FO(28)499 b FY(l)19 b(a)e(s)i(t)f(_)f(v)h(i)g(s)g(i)g(t) 71 b(=)53 b(0)16 b(;)1831 5652 y F2(10)p eop end %%Page: 11 13 TeXDict begin 11 12 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 249 548 a FO(29)387 b FY(})249 663 y FO(30)396 b FR(e)14 b(l)g(s)g(e)249 777 y FO(31)483 b FY(+)r(+)20 b(l)e(a)g(s)g(t)g(_)g(v)g(i)g(s)g(i)g(t) 32 b(;)249 892 y FO(32)287 b FY(})249 1006 y FO(33)249 1121 y(34)298 b FR(i)17 b(f)71 b FY(\()23 b(w)7 b(e)g(e)g(k)g(d)g(a)g (y)50 b(=)13 b(=)58 b(r)13 b(e)g(t)g(u)g(r)g(n)g(_)g(d)g(a)f(y)39 b(&)6 b(&)49 b(l)18 b(a)g(s)g(t)g(_)g(v)f(i)h(s)h(i)f(t)66 b(=)14 b(=)47 b(0)14 b(\))249 1235 y FO(35)398 b FY(t)16 b(r)g(a)g(i)g(n)74 b(=)59 b(0)18 b(.)h(0)58 b(.)18 b(.)h(.)58 b(1)19 b(.)f(0)77 b(<)68 b(p)9 b(r)g(o)g(b)22 b(;)249 1350 y FO(36)188 b FY(})249 1465 y FO(37)88 b FY(})382 1639 y F2(F)o(or)32 b(the)h(student)i(we)d(introduce)j(a)e(constructor) j(\(line)d(7\))g(which)g(initializes)j(each)e(object)382 1769 y(with)27 b(a)g(maximum)g(number)h(of)f(weeks)h(\(line)g(10\))f (before)i(returning)g(home)f(\(based)g(on)g(the)382 1898 y(tick)o(et)f(prices,)g(adding)g(100)f(to)g(the)g(tick)o(et)h(price)f (will)g(enlar)n(ge)h(the)f(possible)i(maximum)e(by)382 2028 y(one)e(week\))g(and)g(chooses)h(the)f(week)g(days)g(for)g (departure)i(and)e(return)h(\(line)f(12)g(and)g(14\).)523 2158 y(The)32 b(decision)j(about)f(whether)g(to)f(depart)h(a)e (speci\002c)i(week)f(is)f(then)i(determined)h(by)382 2288 y FY(max_weeks)20 b F2(and)k(the)g(amount)g(of)g(time)f(elapsed)i (since)g(last)f(visit)g(\(line)g(25\).)g(Whether)g(to)g(go)382 2418 y(by)c(train)h(is)g(probabilistically)k(determined)e(by)d(the)h (relati)n(v)o(e)g(prices)h(of)e(tra)n(v)o(eling)i(by)f(car)f(and)382 2548 y(by)k(train)g(\(line)g(20\).)523 2677 y(The)f(constructor)k(uses) d(the)g(special)h(notation)1384 2882 y FA(e)1420 2897 y Fz(1)1484 2882 y FB(:)i FA(e)1572 2896 y Fu(a)1699 2882 y Ft(j)93 b FA(e)1853 2896 y Fz(2)1917 2882 y FB(:)27 b FA(e)2004 2900 y Fu(b)2132 2882 y Ft(j)108 b FB(.)17 b(.)g(.)382 3087 y F2(which)29 b(mak)o(es)h(a)f(non-deterministic)k (choice)e(between)f(the)f(e)o(xpressions)k FA(e)2856 3101 y Fu(a)2891 3087 y FB(,)16 b FA(e)2967 3105 y Fu(b)3002 3087 y FB(,)g(.)h(.)g(.)30 b F2(using)383 3217 y FA(e)419 3232 y Fz(1)456 3217 y FB(,)16 b FA(e)531 3231 y Fz(2)569 3217 y FB(,)g(.)h(.)g(.)25 b F2(as)g(weights.)h(So)e(the)i(v)n(alue)f (of)g(the)h(whole)f(e)o(xpression)j(is)d(either)i FA(e)2889 3231 y Fu(a)2948 3217 y F2(with)d(proba-)382 3347 y(bility)i FA(e)634 3362 y Fz(1)672 3347 y FB(/)r Fx(\()r FA(e)802 3362 y Fz(1)859 3347 y Fx(+)20 b FA(e)986 3361 y Fz(2)1042 3347 y Fx(+)g FB(.)d(.)g(.)r Fx(\))24 b F2(or)h FA(e)1434 3364 y Fu(b)1492 3347 y F2(with)f(probability)j FA(e)2135 3361 y Fz(2)2174 3347 y FB(/)r Fx(\()r FA(e)2304 3362 y Fz(1)2361 3347 y Fx(+)20 b FA(e)2488 3361 y Fz(2)2544 3347 y Fx(+)f FB(.)e(.)g(.)s Fx(\))q F2(,)23 b(etc.)382 3611 y FP(1.4.2)99 b(Using)24 b(the)i(models)f(f)n(or)f(simulation)382 3802 y F2(The)g(goal)i(of)e(specifying)k(the)d(abo)o(v)o(e)h(models)f (is)g(to)g(simulate)h(their)f(beha)n(viour)j(for)d(a)f(gi)n(v)o(en)382 3932 y(period)d(of)f(time,)g(e.g.)f(a)h(month.)g(F)o(or)f(this)h(we)g (need)g(instances)j(of)d(each)g(of)g(the)g(models.)h(Thus)382 4062 y(the)26 b(basic)h(setup)g(consists)h(of)e(instructing)j(the)e (simulator)g(to)f(realize)i(a)d(number)i(of)f(objects)382 4192 y(of)d(the)h(dif)n(ferent)i(types:)394 4350 y FR(c)12 b(r)g(e)g(a)g(t)g(e)54 b FY(5)12 b(0)g(0)g(0)g(0)g(0)51 b FR(o)10 b(f)65 b FY(C)5 b(o)g(m)g(m)g(u)g(t)g(e)g(r)15 b(;)394 4465 y FR(c)d(r)g(e)g(a)g(t)g(e)54 b FY(1)12 b(0)g(0)g(0)g(0)g(0)51 b FR(o)10 b(f)68 b FY(B)8 b(u)g(s)g(i)g(n)g(e)g (s)g(s)g(M)g(a)g(n)25 b(;)394 4580 y FR(c)12 b(r)g(e)g(a)g(t)g(e)54 b FY(1)12 b(0)g(0)g(0)g(0)g(0)51 b FR(o)10 b(f)72 b FY(S)12 b(t)g(u)g(d)g(e)g(n)g(t)23 b(;)382 4754 y F2(T)-7 b(o)26 b(actually)k(get)e(a)f(w)o(orking)h(simulation,)i(we)c(need)j(to)e (specify)i(the)f(times)g(and)g(prices)h(for)382 4884 y(tra)n(v)o(eling)d(by)d(train)i(and)f(car)f(in)h(the)g(models,)g (though.)523 5014 y(In)e(general,)i(some)e(of)h(the)f(parameters)i (that)f(we)f(wish)g(to)g(control)i(are)e(speci\002c)i(for)e(each)382 5143 y(instantiated)33 b(object)e(of)f(a)g(model)g(and)g(as)g(such)h (parameterise)i(that)d(model)g(speci\002cation,)382 5273 y(and)j(some)f(are)g(the)h(same)f(for)g(all)g(objects.)i(F)o(or)d (instance,)j(if)e(a)g(model)h(were)f(to)g(tak)o(e)h(the)382 5403 y(weather)26 b(into)g(account,)h(the)e(controlling)k(parameter)e (w)o(ould)f(be)f(the)g(same)h(for)f(all)g(objects.)1831 5652 y(11)p eop end %%Page: 12 14 TeXDict begin 12 13 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 382 548 a F2(W)-7 b(e)33 b(can)g(model)h(this)h(kind)f(of)f(parameters)j(with)d(global)i(v)n (ariables)h(de\002ned)e(outside)i(the)382 678 y(types,)24 b(e.g.:)397 839 y FR(f)14 b(l)g(o)h(a)f(t)77 b FY(w)13 b(e)g(a)g(t)g(h)g(e)g(r)g(_)g(f)g(a)g(c)g(t)g(o)g(r)69 b(=)55 b(1)16 b(7)h(.)g(3)f(;)123 b FQ(/)18 b(/)80 b(g)12 b(l)g(o)g(b)g(a)g(l)76 b(v)14 b(a)g(r)g(i)g(a)g(b)g(l)g(e)391 1069 y FR(t)9 b(y)g(p)g(e)69 b FY(W)9 b(e)g(a)g(t)g(h)g(e)g(r)g(D)g(e)g (p)g(e)g(n)g(d)g(e)g(n)g(t)56 b({)491 1183 y FR(v)9 b(o)g(i)g(d)77 b FY(i)18 b(t)g(e)f(r)h(a)f(t)h(e)28 b(\()c FR(i)13 b(n)g(t)81 b FY(i)17 b(t)g(e)g(r)g(a)g(t)g(i)g(o)g(n)28 b(\))487 1298 y({)597 1412 y FR(i)17 b(f)71 b FY(\()30 b(w)13 b(e)g(a)g(t)g(h)g(e)g(r)g(_)g(f)g(a)g(c)g(t)g(o)g(r)76 b(>)48 b(1)14 b(0)g(.)g(0)g(\))699 1527 y FQ(/)k(/)85 b(.)23 b(.)g(.)487 1641 y FY(})387 1756 y(})523 1933 y F2(The)31 b(missing)h(v)n(ariables)i(for)d(the)h(three)g(models)g(we) f(ha)n(v)o(e)h(de)n(v)o(eloped)h(abo)o(v)o(e)f(all)f(f)o(all)382 2063 y(into)22 b(the)f(cate)o(gory)i(of)e(parameterising)j(the)d (models,)h(ho)n(we)n(v)o(er)-5 b(.)21 b(Since)g(we)f(ha)n(v)o(e)i (introduced)382 2193 y(a)h(constructor)k(for)d FR(type)p F2(s,)f(we)g(can)h(con)l(v)o(eniently)k(pass)c(the)g(parameters)i (through)g(that.)e(The)382 2322 y(constructor)j(for)c FY(BusinessMan)f F2(w)o(ould)j(then)f(be:)391 2484 y FR(t)9 b(y)g(p)g(e)68 b FY(B)8 b(u)g(s)g(i)g(n)g(e)g(s)g(s)g(M)g(a)g(n) 59 b({)496 2599 y FR(f)14 b(l)h(o)f(a)g(t)77 b FY(t)13 b(i)g(m)g(e)g(_)g(t)g(r)g(a)g(i)g(n)45 b(,)70 b(t)11 b(i)g(m)g(e)g(_)g(c)g(a)g(r)38 b(,)75 b(t)16 b(r)g(a)f(v)h(e)g(l)g(_)f (p)g(r)h(o)f(b)h(a)f(b)h(i)g(l)g(i)g(t)g(y)28 b(;)499 2713 y FQ(/)18 b(/)85 b(.)23 b(.)g(.)491 2828 y FR(v)9 b(o)g(i)g(d)68 b FY(B)8 b(u)g(s)g(i)g(n)g(e)g(s)g(s)g(M)g(a)g(n)23 b(\()i FR(f)14 b(l)h(o)f(a)g(t)78 b FY(t)14 b(r)f(a)h(i)g(n)47 b(,)74 b FR(f)14 b(l)h(o)f(a)g(t)73 b FY(c)10 b(a)g(r)38 b(,)74 b FR(f)14 b(l)g(o)h(a)f(t)79 b FY(t)16 b(r)g(a)f(v)g(e)h(l)27 b(\))487 2942 y({)595 3057 y(t)15 b(i)f(m)g(e)g(_)g(t)g(r)g(a)g(i)h(n) 65 b(=)i(t)16 b(r)g(a)g(i)g(n)29 b(;)593 3172 y(t)12 b(i)g(m)g(e)g(_)g(c)g(a)g(r)62 b(=)h(c)12 b(a)g(r)25 b(;)597 3286 y(t)16 b(r)g(a)f(v)h(e)f(l)h(_)g(p)f(r)h(o)f(b)g(a)h(b)g (i)g(l)f(i)h(t)g(y)67 b(=)g(t)16 b(r)f(a)h(v)f(e)g(l)29 b(;)487 3401 y(})387 3515 y(})382 3692 y F2(Hence,)24 b(we)e(need)j(to)e(change)i(the)f(create)h(statements:)394 3854 y FR(c)12 b(r)g(e)g(a)g(t)g(e)54 b FY(2)12 b(0)g(0)g(0)g(0)56 b FR(o)10 b(f)540 3968 y FY(B)e(u)g(s)g(i)g(n)g(e)g(s)g(s)g(M)g(a)g(n) 32 b(\()21 b(1)f(.)h(0)62 b(.)20 b(.)h(.)62 b(1)21 b(.)f(3)41 b(,)63 b(0)20 b(.)h(8)62 b(.)20 b(.)h(.)62 b(1)20 b(.)h(1)41 b(,)63 b(0)20 b(.)h(1)62 b(.)20 b(.)h(.)62 b(0)20 b(.)h(6)f(\))h(;)394 4083 y FR(c)12 b(r)g(e)g(a)g(t)g(e)54 b FY(2)12 b(0)g(0)g(0)g(0)56 b FR(o)10 b(f)540 4198 y FY(B)e(u)g(s)g(i)g(n)g(e)g(s)g(s)g(M)g(a)g(n) 32 b(\()21 b(2)f(.)h(0)62 b(.)20 b(.)h(.)62 b(2)21 b(.)f(5)41 b(,)63 b(1)20 b(.)h(8)62 b(.)20 b(.)h(.)62 b(2)20 b(.)h(3)41 b(,)63 b(0)20 b(.)h(1)62 b(.)20 b(.)h(.)62 b(0)20 b(.)h(6)f(\))h(;)400 4312 y FQ(/)d(/)85 b(.)23 b(.)g(.)382 4489 y F2(These)h(create)g (statements)i(could)f(easily)g(be)e(generated)j(from)e(collected)i (real-w)o(orld)f(data.)382 4754 y FP(1.4.3)99 b(Or)o(ganising)24 b(the)i(models)e(and)i(the)f(simulation)g(setup)382 4946 y F2(The)k(simplest)i(approach)h(for)e(physically)i(or)n(ganising)g (the)e(code)g(for)g(the)g(models)h(and)f(the)382 5075 y(simulation)c(setup)e(is)g(to)f(put)h(e)n(v)o(erything)i(into)e(one)g (\002le.)f(But)g(this)h(does)g(not)g(scale)h(well:)518 5273 y Ft(\017)46 b F2(The)31 b(single)h(\002le)f(may)g(become)h(v)o (ery)f(lar)n(ge)i(which)e(mak)o(es)h(it)f(dif)n(\002cult)h(to)f(manage) 609 5403 y(and)24 b(na)n(vigate.)1831 5652 y(12)p eop end %%Page: 13 15 TeXDict begin 13 14 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 518 548 a Ft(\017)46 b F2(Reusing)24 b(models)e(for)h(dif)n(ferent)h(scenarios)g(is)e(only)h (possible)i(by)d(cop)o(ying)i(and)f(past-)609 678 y(ing)h(the)g(code.) 382 882 y(Instead)h(we)e(can)h(break)h(the)e(\002le)g(up)h(into)g (smaller)h(\002les)e(by)h(adding)h(a)e(directi)n(v)o(e)i(for)f(import-) 382 1012 y(ing)g(de\002nitions)h(from)f(other)g(\002les:)390 1177 y FR(i)8 b(m)g(p)g(o)g(r)g(t)57 b FY(")27 b(o)13 b(t)g(h)g(e)g(r)27 b(.)21 b(m)7 b(o)g(d)g(e)g(l)20 b(")14 b(;)382 1356 y F2(This)29 b(means)h(that)g(all)f(de\002nitions)j(of)d (types,)i(functions)g(and)f(v)n(ariables)i(in)d(\223other)-5 b(.model\224)382 1486 y(are)22 b(parsed)h(and)f(imported)h(into)f(the)f (symbol)i(tables)g(of)e(the)h(processing)i(of)e(the)g(current)h (\002le.)382 1616 y(Name)g(clashes)i(are)f(considered)i(errors.)523 1746 y(W)l(ith)21 b(the)g(import)h(directi)n(v)o(e,)g(a)e(reasonable)k (w)o(ay)d(of)g(or)n(ganising)i(the)e(simulation)i(w)o(ould)382 1876 y(be)k(to)h(put)g(the)g(model)g(code)g(in)f(separate)j (\223.model\224)e(\002les)g(which)g(are)f(imported)i(in)f(a)f(main)382 2005 y(\223.scenario\224)36 b(\002le)d(that)g(contains)j(the)e (necessary)i(create)e(statements.)h(The)e(setup)i(is)e(illus-)382 2135 y(trated)24 b(in)f(Figure)g(1.2.)g(This)f(w)o(ay)h(it)g(is)f(also) i(easier)g(to)f(generate)i(the)e(\223.scenario\224)i(\002les)e(from)382 2265 y(an)g(e)o(xternal)j(source)f(with)e(real-w)o(orld)i(data.)1279 2969 y @beginspecial 0 @llx 0 @lly 218 @urx 110 @ury 1434 @rwi @setspecial %%BeginDocument: intro/images/scenario-construction.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: scenario-construction.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Tue Mar 11 14:04:34 2003 %%For: lau@night () %%BoundingBox: 0 0 218 110 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 110 moveto 0 0 lineto 218 0 lineto 218 110 lineto closepath clip newpath -242.3 212.2 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw n 4050 2025 m 5400 2025 l 5400 2475 l 4050 2475 l cp gs col0 s gr % Polyline n 4050 2550 m 5400 2550 l 5400 3000 l 4050 3000 l cp gs col0 s gr % Polyline n 4050 3075 m 5400 3075 l 5400 3525 l 4050 3525 l cp gs col0 s gr % Polyline gs clippath 5790 2280 m 5790 2220 l 5639 2220 l 5759 2250 l 5639 2280 l cp eoclip n 5400 2250 m 5775 2250 l gs col0 s gr gr % arrowhead n 5639 2280 m 5759 2250 l 5639 2220 l 5639 2280 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5805 2489 m 5767 2442 l 5649 2536 l 5762 2485 l 5687 2583 l cp eoclip n 5400 2775 m 5775 2475 l gs col0 s gr gr % arrowhead n 5687 2583 m 5762 2485 l 5649 2536 l 5687 2583 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5808 2703 m 5757 2671 l 5676 2799 l 5766 2714 l 5727 2831 l cp eoclip n 5400 3300 m 5775 2700 l gs col0 s gr gr % arrowhead n 5727 2831 m 5766 2714 l 5676 2799 l 5727 2831 l cp gs 0.00 setgray ef gr col0 s % Polyline n 5775 2025 m 7650 2025 l 7650 3525 l 5775 3525 l cp gs col0 s gr /Times-Roman ff 210.00 scf sf 4125 2850 m gs 1 -1 sc (BusinessMan) col0 sh gr /Times-Roman ff 210.00 scf sf 4125 2325 m gs 1 -1 sc (Commuter) col0 sh gr /Times-Roman ff 210.00 scf sf 4125 3375 m gs 1 -1 sc (Student) col0 sh gr /Times-Roman ff 240.00 scf sf 5850 1875 m gs 1 -1 sc (Scenario) col0 sh gr /Times-Roman ff 180.00 scf sf 5925 2325 m gs 1 -1 sc (import "Comm...") col0 sh gr /Times-Roman ff 180.00 scf sf 5925 2550 m gs 1 -1 sc (import "Busin...") col0 sh gr /Times-Roman ff 180.00 scf sf 5925 2775 m gs 1 -1 sc (import "Stud...") col0 sh gr /Times-Roman ff 240.00 scf sf 4125 1875 m gs 1 -1 sc (Models) col0 sh gr /Times-Roman ff 180.00 scf sf 5925 3075 m gs 1 -1 sc (create 10000 of ...) col0 sh gr $F2psEnd rs %%EndDocument @endspecial 453 3167 a FQ(F)l(igur)m(e)d(1.2:)28 b(The)23 b(scenario)f(is)h(constructed)e(by)h(importing)g(the)g(model)g (\002les.)g(Eac)o(h)g(model)f(\002le)453 3281 y(contains)e(a)h(type)g (de\002nition.)523 3527 y F2(As)k(a)h(bonus,)h(the)g(separation)i(into) d(\002les)g(mak)o(es)h(it)f(possible)i(to)e(de\002ne)g(small)h (function)382 3656 y(libraries)31 b(which)f(can)f(be)g(imported)i(by)e (se)n(v)o(eral)h(\002les;)f(something)i(that)f(can)g(be)f(v)o(ery)g (use-)382 3786 y(ful)h(for)g(a)f(lar)n(ge)i(modeling)g(project.)h(This) d(requires)j(that)e(all)g(\002les)g(are)g(only)g(parsed)h(once,)382 3916 y(though,)25 b(to)e(support)j(the)e(situation)i(in)d(Figure)h (1.3.)1428 4891 y @beginspecial 0 @llx 0 @lly 195 @urx 186 @ury 1076 @rwi @setspecial %%BeginDocument: intro/images/import-files.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: import-files.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Tue Mar 11 09:31:08 2003 %%For: lau@night () %%BoundingBox: 0 0 195 186 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 186 moveto 0 0 lineto 195 0 lineto 195 186 lineto closepath clip newpath -129.8 243.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw gs clippath 3448 3108 m 3477 3055 l 3345 2983 l 3436 3067 l 3316 3035 l cp eoclip n 2625 2625 m 3450 3075 l gs col0 s gr gr % arrowhead n 3316 3035 m 3436 3067 l 3345 2983 l 3316 3035 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4022 3055 m 4051 3108 l 4183 3035 l 4064 3067 l 4154 2983 l cp eoclip n 4875 2625 m 4050 3075 l gs col0 s gr gr % arrowhead n 4154 2983 m 4064 3067 l 4183 3035 l 4154 2983 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2595 1965 m 2655 1965 l 2655 1814 l 2625 1934 l 2595 1814 l cp eoclip n 2625 1650 m 2625 1950 l gs col0 s gr gr % arrowhead n 2595 1814 m 2625 1934 l 2655 1814 l 2595 1814 l cp gs 0.00 setgray ef gr col0 s % Polyline [15 45] 45 sd gs clippath 4845 1965 m 4905 1965 l 4905 1814 l 4875 1934 l 4845 1814 l cp eoclip n 4875 1650 m 4875 1950 l gs col0 s gr gr [] 0 sd % arrowhead n 4845 1814 m 4875 1934 l 4905 1814 l 4845 1814 l cp gs 0.00 setgray ef gr col0 s % Polyline n 2175 1950 m 3150 1950 l 3150 2625 l 2175 2625 l cp gs col0 s gr % Polyline n 2175 975 m 3150 975 l 3150 1650 l 2175 1650 l cp gs col0 s gr % Polyline [60] 0 sd n 4425 975 m 5400 975 l 5400 1650 l 4425 1650 l cp gs col0 s gr [] 0 sd % Polyline n 4425 1950 m 5400 1950 l 5400 2625 l 4425 2625 l cp gs col0 s gr % Polyline n 2700 3075 m 4800 3075 l 4800 4050 l 2700 4050 l cp gs col0 s gr /Times-Roman ff 300.00 scf sf 4800 1425 m gs 1 -1 sc (C) col0 sh gr /Times-Roman ff 300.00 scf sf 4800 2400 m gs 1 -1 sc (B) col0 sh gr /Times-Roman ff 300.00 scf sf 2550 1425 m gs 1 -1 sc (C) col0 sh gr /Times-Roman ff 300.00 scf sf 2550 2400 m gs 1 -1 sc (A) col0 sh gr /Times-Roman ff 300.00 scf sf 3600 3675 m gs 1 -1 sc (S) col0 sh gr $F2psEnd rs %%EndDocument @endspecial 453 5088 a FQ(F)l(igur)m(e)j(1.3:)i(S)f(imports)g(A)g(and) f(B)i(whic)o(h)e(in)h(turn)g(both)f(import)h(C)h(that)f(contains)e(g)o (ener)o(ally)453 5203 y(useful)19 b(functions.)g(T)-8 b(o)20 b(support)g(this)g(scenario)f(C)i(must)f(only)g(be)f(par)o(sed)h (once)f(\226)h(else)g(ther)m(e)g(will)453 5317 y(be)g(name)f(clashes.) 1831 5652 y F2(13)p eop end %%Page: 14 16 TeXDict begin 14 15 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 523 548 a F2(Another)33 b(problem)h(is)e(that)h(global)g(v)n(ariables)h(in)f(a)e(model)i(need)g (to)f(be)g(kno)n(wn)h(prior)382 678 y(to)h(their)i(use.)e(F)o(or)g(e)o (xample,)h(type)g FY(W)-7 b(eatherDependent)31 b F2(cannot)36 b(use)f(the)f(global)i(v)n(ariable)395 808 y FY(weather_f)o(actor)28 b F2(if)k FY(weather_f)o(actor)c F2(has)20 b(not)f(been)h(de\002ned)g (before)h(type)f FY(W)-7 b(eatherDependent)m F2(.)382 937 y(W)g(e)27 b(can)i(remedy)g(this)f(by)g(being)i(careful)f(with)f (ordering)j(the)d(de\002nitions)i(and)f(import)g(di-)382 1067 y(recti)n(v)o(es:)397 1232 y FR(f)14 b(l)g(o)h(a)f(t)77 b FY(w)13 b(e)g(a)g(t)g(h)g(e)g(r)g(_)g(f)g(a)g(c)g(t)g(o)g(r)66 b(=)53 b(1)15 b(5)g(.)h(0)f(;)390 1346 y FR(i)8 b(m)g(p)g(o)g(r)g(t)57 b FY(")24 b(w)10 b(e)g(a)g(t)g(h)g(e)g(r)e FN(\000)s FY(d)j(e)g(p)g(e)g(n)g(d)g(e)g(n)g(t)20 b(.)h(m)7 b(o)g(d)g(e)g(l)19 b(")14 b(;)382 1526 y F2(Ho)n(we)n(v)o(er)l(,)24 b(this)h(mak)o(es)h (the)e(modularisation)29 b(much)c(more)f(fragile.)i(Instead)h(we)c (will)i(intro-)382 1656 y(duce)j(declarations)i(which)d(are)h(simply)f (de\002nitions)i(with)e(the)g(body)h(remo)o(v)o(ed)g(and)f FR(exter)o(n)382 1786 y F2(in)c(front:)392 1950 y FR(e)10 b(x)g(t)g(e)g(r)g(n)76 b(f)14 b(l)h(o)f(a)g(t)78 b FY(w)13 b(e)g(a)g(t)g(h)g(e)g(r)g(_)g(f)g(a)g(c)g(t)g(o)g(r)27 b(;)392 2065 y FR(e)10 b(x)g(t)g(e)g(r)g(n)76 b(f)14 b(l)h(o)f(a)g(t)66 b FY(m)r(a)r(x)11 b(\()25 b FR(f)15 b(l)f(o)g(a)h(t)66 b FY(x)25 b(,)74 b FR(f)14 b(l)h(o)f(a)g(t)68 b FY(y)20 b(\))c(;)382 2244 y F2(Putting)22 b(these)g(in)g(the)f(model) h(\002les)f(corrects)i(the)f(problem,)g(and)g(also)g(mak)o(es)f(it)g(e) o(xplicit)i(that)382 2374 y(the)i(identi\002ers)h(are)f(global.)h(Note) e(that)h(the)g(purpose)i(of)d(a)g(declaration)k(is)c(to)h(mak)o(e)g(a)f (name)382 2504 y(\(with)e(its)h(type\))g(kno)n(wn)g(to)f(the)g (simulator)l(,)i(whereas)g(a)e(de\002nition)i(also)e(has)h(the)g (actual)g(data)382 2634 y(associated)36 b(with)e(it.)f(Thus)h(there)h (is)e(no)h(limit)g(on)g(the)g(number)h(of)e(declarations)k(as)d(long) 382 2764 y(as)h(the)o(y)g(all)f(agree)i(on)f(the)g(type)g(of)g(the)g (name)g(the)o(y)g(are)f(declaring,)j(b)n(ut)f(there)f(must)g(be)382 2893 y(e)o(xactly)26 b(one)f(de\002nition.)h(If)f(a)f(model)h(that)g (refers)h(to)f(a)f(declared,)j(b)n(ut)e(unde\002ned)h(identi\002er)382 3023 y(is)d(created,)i(it)e(is)h(an)f(error)-5 b(.)382 3338 y FS(1.5)119 b(Further)31 b(language)f(support)382 3562 y F2(More)i(language)j(support)f(than)e(presented)j(in)d(the)h (pre)n(vious)h(section)f(is)f(necessary)j(for)d(a)382 3692 y(complete)25 b(modeling)g(language.)382 3959 y FP(1.5.1)99 b(Loops)382 4150 y F2(A)22 b(loop)j(statement)g(may)e(be)h (needed,)h(so)e(we)g(introduce)j(a)d FR(while)g F2(loop:)395 4314 y FR(i)13 b(n)g(t)77 b FY(i)66 b(=)52 b(0)16 b(;)392 4429 y FR(w)10 b(h)g(i)g(l)g(e)65 b FY(\()30 b(i)70 b(<)45 b(1)12 b(0)g(0)g(\))484 4543 y(+)r(+)j(i)26 b(;)382 4723 y F2(F)o(or)h(block)j(structuring)h(we)c(cop)o(y)i(the)g(syntax)h(from) e(C++)f(and)i(Ja)n(v)n(a)g(with)g Ft(f)r(g)h F2(blocks)f(and)382 4853 y(local)24 b(v)n(ariable)i(de\002nitions)f(allo)n(wed)g(e)n(v)o (erywhere)g(single)g(statements)g(are)f(allo)n(wed.)395 5017 y FR(i)13 b(n)g(t)67 b FY(x)17 b(;)387 5132 y({)495 5247 y FR(i)c(n)g(t)67 b FY(y)17 b(;)487 5361 y({)1831 5652 y F2(14)p eop end %%Page: 15 17 TeXDict begin 15 16 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 594 548 a FR(i)13 b(n)g(t)70 b FY(z)20 b(;)487 663 y(})387 777 y(})382 1094 y FP(1.5.2)99 b(T)-7 b(ype)25 b(con)l(v)o(ersion)382 1285 y F2(Since)j(the)g (modeling)h(language)i(supports)f(tw)o(o)d(numeral)i(types,)g (\003oating)g(point)g(numbers)382 1415 y(and)e(inte)o(gers,)i(we)d (need)i(a)e(mechanism)j(for)e(con)l(v)o(erting)j(between)e(them.)f (There)g(are)g(three)382 1544 y(possibilities:)496 1749 y(1.)45 b(Implicitly)26 b(and)e(silently)h(con)l(v)o(ert)g(whene)n(v)o (er)g(needed)496 1954 y(2.)45 b(Implicitly)26 b(con)l(v)o(ert,)f(b)n (ut)f(issue)g(a)f(w)o(arning)496 2158 y(3.)45 b(Do)23 b(not)h(con)l(v)o(ert,)h(issue)g(an)e(error)382 2363 y(The)g(\002rst)g(possibility)k(is)c(unfortunately)28 b(unsafe)d(\226)e(consider)j(the)d(follo)n(wing)i(e)o(xample:)395 2527 y FR(i)13 b(n)g(t)73 b FY(p)10 b(r)g(o)g(b)g(a)70 b(=)61 b(0)19 b(.)h(0)61 b(.)20 b(.)g(.)61 b(0)20 b(.)g(8)g(;)397 2642 y FR(f)14 b(l)g(o)h(a)f(t)73 b FY(p)9 b(r)g(o)g(b)g(b)70 b(=)62 b(0)g(.)21 b(.)f(.)63 b(1)20 b(;)382 2821 y F2(Here)39 b FY(proba)d F2(has)j(accidentally)k(been)c(de\002ned)h(as)f(an)46 b FR(int)g F2(so)39 b FY(proba)d F2(will)j(al)o(w)o(ays)h(be)f(0,)382 2951 y(whereas)34 b FY(probb)d F2(is)i(set)h(to)g(a)f(random)h(inte)o (ger)h(in)f(the)g(interv)n(al)i Fx([)q FB(0;)15 b(1)q Fx(])q F2(,)34 b(i.e.)f(either)i(0)e(or)h(1.)382 3081 y(Clearly)-6 b(,)24 b(both)g(were)g(intended)i(to)d(be)h(continuously)j (distrib)n(uted.)523 3211 y(In)19 b(most)g(programming)i(languages)g (implicit)f(con)l(v)o(ersions)i(from)27 b FR(int)e F2(to)34 b FR(\003oat)e F2(are)19 b(safe,)382 3341 y(b)n(ut)26 b(this)f(is)g(not)h(so)f(for)h(our)f(language)j(since)e(the)50 b FY(...)f F2(operator)27 b(needs)f(to)f(be)h(able)g(to)f(return)389 3471 y FR(int)8 b F2(s)23 b(as)h(well)g(as)39 b FR(\003oat)14 b F2(s.)23 b(If)h(it)f(al)o(w)o(ays)i(returned)41 b FR(\003oat)14 b F2(,)23 b(the)h(e)o(xpression)64 b FY(1)20 b(...)g(3)60 b F2(con)l(v)o(erted)382 3600 y(to)39 b FR(int)g F2(w)o(ould)32 b(not)h(yield)g(a)e(uniform)i(distrib)n(ution)j(\(with)c(truncation)j (1)c(and)i(2)e(w)o(ould)i(be)382 3730 y(equally)28 b(probable,)h(b)n (ut)d(3)h(w)o(ould)f(almost)h(ne)n(v)o(er)g(occur;)h(with)e(normal)h (rounding)i(2)d(w)o(ould)382 3860 y(be)d(approximately)k(twice)d(as)f (probable)j(as)e(1)f(and)h(3\).)523 3990 y(The)18 b(second)i(and)e (third)h(possibilities)j(are)c(in)g(f)o(act)h(v)o(ery)g(similar)g (since)g(the)o(y)f(both)h(require)382 4120 y(e)o(xplicit)27 b(type)f(con)l(v)o(ersion.)i(Ev)o(en)d(when)h(we)e(allo)n(w)i(the)f (con)l(v)o(ersion)k(b)n(ut)d(issue)g(a)f(w)o(arning,)382 4250 y(we)34 b(need)j(a)d(mechanism)j(for)f(turning)h(of)n(f)e(the)h(w) o(arning)g(for)g(that)g(particular)i(statement.)382 4379 y(Else)22 b(it)g(is)h(too)f(disturbing,)k(and)c(the)h(programmer)h(may) e(get)h(into)g(the)g(habit)g(of)g(ignoring)i(the)382 4509 y(w)o(arnings.)523 4639 y(If)31 b(we)f(issue)j(an)e(error)l(,)h (we)e(can)i(be)f(sure)h(that)f(the)h(programmer)h(will)d(notice)j(the)f (po-)382 4769 y(tential)g(problem.)g(But)e(the)h(problem)h(is)e(only)h (potentially)j(a)c(real)i(problem.)f(Setting)h(up)e(a)382 4899 y(lar)n(ge)25 b(simulation)h(just)f(to)e(return)j(later)e(disco)o (v)o(ering)j(that)d(it)g(has)g(not)g(e)n(v)o(en)h(started)g(because)382 5029 y(the)j(simulator)i(halted)g(o)o(v)o(er)e(something)i(that)f(is)f (in)g(f)o(act)h(correct)h(may)e(be)g(v)o(ery)h(anno)o(ying.)382 5159 y(Therefore)c(we)e(will)g(just)h(issue)h(a)e(w)o(arning.)523 5288 y(The)g(syntax)i(for)f(type)g(con)l(v)o(ersion)j(can)d(be)f(borro) n(wed)i(from)f(function)h(calls,)f(thus:)1831 5652 y(15)p eop end %%Page: 16 18 TeXDict begin 16 17 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 395 548 a FR(i)13 b(n)g(t)75 b FY(a)12 b(r)g(e)g(a)61 b(=)49 b(1)14 b(5)f(0)h(;)397 663 y FR(f)g(l)g(o)h(a)f(t)77 b FY(r)14 b(a)g(d)g(i)g(u)g(s)66 b(=)54 b(\()33 b(f)17 b(l)g(o)g(a)g(t)g(i)g(f)g(y)28 b(\()22 b(a)12 b(r)g(e)g(a)32 b(\))58 b(/)h(3)19 b(.)g(1)f(4)h(\))58 b(^)h(0)19 b(.)g(5)f(;)395 777 y FR(i)13 b(n)g(t)75 b FY(c)12 b(i)g(r)g(c)g(u)g(m)g(f)g(e)g(r)g(e)g(n)g(c)g(e)65 b(=)j(i)17 b(n)g(t)g(i)g(f)g(y)33 b(\()17 b(2)f(.)h(0)54 b FN(\003)g FY(3)17 b(.)g(1)f(4)54 b FN(\003)68 b FY(r)14 b(a)g(d)g(i)g(u)g(s)28 b(\))16 b(;)382 953 y F2(Syntax)31 b(similar)g(to)f(this)g(is)g(also)h(allo)n(wed)g(in)f(C++.)g(It)f(has)i (the)f(adv)n(antage)j(of)d(being)i(v)o(ery)382 1082 y(easy)24 b(to)g(implement.)382 1347 y FP(1.5.3)99 b(Symbolic)25 b(constants)382 1538 y F2(Since)31 b(the)h(models)g(presumably)i(will)d (be)g(mostly)h(concerned)i(about)e(making)h(decisions,)382 1668 y(it)d(w)o(ould)g(be)g(con)l(v)o(enient)j(with)d(e)o(xtended)i (support)g(for)e(multiple-choice)k(decisions.)e(The)383 1798 y FA(e)419 1813 y Fz(1)483 1798 y FB(:)c FA(e)572 1812 y Fu(a)623 1798 y Ft(j)17 b FA(e)701 1812 y Fz(2)766 1798 y FB(:)28 b FA(e)854 1815 y Fu(b)906 1798 y Ft(j)33 b FB(.)17 b(.)g(.)24 b F2(e)o(xpression)j(is)d(part)g(of)g(this.)g(But) g(to)g(a)n(v)n(oid)h(placing)h(magic)e(constants)382 1928 y(in)f(the)h(code,)g(one)g(has)g(to)g(de\002ne)g(constants)i(for)d (the)i FA(e)2125 1942 y Fu(a)2160 1928 y FB(,)16 b FA(e)2236 1945 y Fu(b)2271 1928 y FB(,)g(.)h(.)g(.)q F2(,)23 b(e.g.:)395 2088 y FR(i)13 b(n)g(t)74 b(c)11 b(o)g(n)g(s)g(t)64 b FY(B)5 b(u)g(s)58 b(=)53 b(0)31 b(,)60 b(C)7 b(a)g(r)60 b(=)53 b(1)31 b(,)63 b(P)11 b(l)g(a)g(n)g(e)71 b(=)61 b(2)39 b(,)61 b(.)20 b(.)g(.)g(;)382 2263 y F2(Ob)o(viously)-6 b(,)30 b(this)g(is)f(tedious.)i(It)e(also)g(mak)o(es)h(it)f(impossible) i(to)e(type)h(check)g(the)g(type)f(that)382 2393 y(these)24 b(constants)j(implicitly)e(de\002ne;)f(consider:)395 2553 y FR(i)13 b(n)g(t)74 b(c)11 b(o)g(n)g(s)g(t)70 b FY(J)11 b(a)g(n)g(u)g(a)g(r)g(y)64 b(=)53 b(0)31 b(,)64 b(F)11 b(e)g(b)g(r)g(u)g(a)g(r)g(y)61 b(=)52 b(1)32 b(,)57 b(M)5 b(a)g(r)g(c)g(h)67 b(=)61 b(2)40 b(,)60 b(.)20 b(.)g(.)g(;)395 2668 y FR(i)13 b(n)g(t)71 b FY(d)7 b(a)g(y)58 b(=)k(F)11 b(e)g(b)g(r)g(u)g(a)g(r)g(y)60 b(+)i(P)11 b(l)g(a)g(n)g(e)28 b(;)125 b FQ(/)18 b(/)76 b(m)8 b(e)g(a)g(n)g(i)g(n)g (g)h(?)382 2843 y F2(Instead)25 b(we)e(can)h(borro)n(w)g(the)g (enumeration)i(syntax)f(from)e(C)g(and)h(C++:)382 3003 y FR(enum)65 b FY(T)14 b(r)f(a)h(n)f(s)h(p)g(o)f(r)h(t)g(a)g(t)g(i)g(o) f(n)60 b({)486 3118 y(B)t(u)t(s)27 b(,)66 b(C)6 b(a)g(r)30 b(,)69 b(P)9 b(l)g(a)g(n)g(e)43 b(,)69 b(.)24 b(.)g(.)387 3232 y(})382 3408 y F2(Then:)391 3568 y FR(b)9 b(o)g(o)g(l)74 b FY(f)14 b(l)h(y)f(i)g(n)g(g)25 b(\()g(T)13 b(r)h(a)g(n)f(s)h(p)g(o)f (r)h(t)f(a)h(t)g(i)g(o)g(n)76 b(t)25 b(\))387 3683 y({)491 3797 y FR(r)10 b(e)g(t)g(u)g(r)g(n)72 b FY(t)59 b(=)13 b(=)57 b(P)11 b(l)g(a)g(n)g(e)23 b(;)387 3912 y(})382 4087 y F2(Whereas)28 b FY(February)i(+)j(Plane)26 b F2(can)h(be)f (detected)j(as)d(a)h(type)g(error)-5 b(.)27 b(Note)f(that)h(the)g (semantics)382 4217 y(of)e(our)h FR(enum)e F2(construct)k(is)d(dif)n (ferent)i(from)e(that)h(of)f(C)f(and)i(C++)e(where)i(the)f FR(enum)g F2(simply)382 4347 y(de\002nes)f(inte)o(ger)h(constants)h (and)e(con)l(v)o(ersions)j(back)d(and)g(forth)h(are)f(allo)n(wed.)382 4660 y FS(1.6)119 b(Comparison)30 b(with)g(general-pur)o(pose)h (languages)382 4884 y F2(Syntactically)-6 b(,)35 b(our)e(simulation)i (language)f(is)f(deliberately)i(v)o(ery)e(close)h(to)e(the)h(C)e(f)o (amily)382 5014 y(of)i(languages)k(which)d(is)f(supposed)j(to)e(mak)o (e)g(it)f(possible)j(to)e(write)f(simulations)j(almost)382 5143 y(without)24 b(an)o(y)g(training)i(pro)o(vided)f(some)f(f)o (amiliarity)h(with)f(C,)e(C++)h(or)g(Ja)n(v)n(a.)523 5273 y(Although)35 b(the)f(similarity)h(to)e(these)h(languages)j (forces)d(the)g(semantics)h(of)e(the)h(basic)382 5403 y(constructs)i(\(binary)f(operators,)g(the)f(v)n(arious)g(kinds)h(of)e (statements)i(and)e(so)g(forth\))i(to)e(be)1831 5652 y(16)p eop end %%Page: 17 19 TeXDict begin 17 18 bop 1437 228 a F1(Chapter)24 b(1.)51 b(Introduction)p 382 266 2989 4 v 382 548 a F2(similar)22 b(too,)f(there)i(are)e(still)h(quite)h(a)d(lot)i(of)f(important)i(dif)n (ferences)h(between)f(our)f(language)382 678 y(and)i(general-purpose)k (languages)f(in)c(general:)518 882 y Ft(\017)46 b F2(Simplicity)-6 b(.)23 b(In)e(our)h(language,)h(there)g(is)e(no)h(support)h(for)f(data) g(structures)i(\(including)609 1012 y(OOP\),)18 b(dynamic)i(memory)g (management,)h(interf)o(acing)i(with)c(the)h(rest)g(of)f(the)h(system) 609 1142 y(\(e.g.)26 b(I/O\))h(or)f(lo)n(w-le)n(v)o(el)h(bit)g (manipulations.)j(There)d(is)f(not)h(e)n(v)o(en)g(the)f(concept)j(of)d (a)609 1272 y(string)f(since)g(it)e(is)g(not)h(needed.)609 1439 y(This)34 b(mak)o(es)g(the)g(language)i(and)e(language)i (processors)h(much)c(simpler)i(and)f(thus)609 1569 y(easier)23 b(to)f(learn)g(and)g(construct.)i(It)d(also)i(mak)o(es)f(it)f(possible) j(to)d(de\002ne)h(much)g(cleaner)609 1699 y(syntax)27 b(and)e(semantics)h(in)f(some)g(cases,)h(for)f(instance)i(with)d FR(enum)q F2(s)g(where)h(the)g(dis-)609 1829 y(tinction)h(between)e FR(enum)f F2(v)n(ariables)j(and)32 b FR(int)7 b F2(s)23 b(can)h(be)g(unclear)h(in)e(C)g(and)h(C++.)518 2033 y Ft(\017)46 b F2(Models)22 b(are)f(e)o(xpressed)i(directly)-6 b(.)23 b(Since)e(the)g(sole)h(purpose)h(of)e(the)g(language)i(is)e (sim-)609 2163 y(ulation,)30 b(there)f(is)f(no)g(need)h(for)g (auxiliary)h(machinery)g(for)f(e)o(xpressing)i(and)d(setting)609 2293 y(up)c(the)g(models)g(and)g(the)g(simulation.)518 2497 y Ft(\017)46 b F2(Direct)41 b(language)h(support)g(for)f(some)f (of)g(the)g(anticipated)k(most)c(common)g(con-)609 2627 y(structs,)d(e.g.)e(the)h(multiple-choice)k(operator)-5 b(.)37 b(A)e(simpler)h(syntax)i(mak)o(es)e(the)g(in-)609 2757 y(tended)25 b(meaning)g(much)f(clearer)h(and)f(easier)h(to)e (write.)382 2962 y(Hence,)30 b(our)g(language)j(is)d(a)f(v)o(ery)i (simple)f(programming)j(language)f(that)f(supports)h(func-)382 3092 y(tions)27 b(and)f(the)h(basic)g(mathematical)h(tools)e(together)j (with)c(randomised)k(decision-support)382 3221 y(constructs)d(well,)c (i.e.)h(the)g(things)h(that)g(are)f(needed)i(for)e(specifying)j (models,)e(b)n(ut)f(not)h(much)382 3351 y(else.)1831 5652 y(17)p eop end %%Page: 18 20 TeXDict begin 18 19 bop 382 1202 a FT(Chapter)44 b(2)382 1654 y F4(Syntax)382 2116 y F2(This)23 b(chapter)j(de\002nes)e(ho)n(w)f (a)g(correct)i(program)g(in)e(the)h(language)i(looks)f(lik)o(e.)382 2431 y FS(2.1)119 b(Intr)n(oduction)382 2655 y F2(F)o(or)30 b(b)n(uilding)j(a)d(scanner)j(to)e(recognise)i(the)e(tok)o(ens)h(that)g (a)e(simulation)j(is)e(composed)h(of,)382 2785 y(a)g(speci\002cation)k (with)c(re)o(gular)i(e)o(xpressions)i(is)d(enough,)h(b)n(ut)f(for)g (recognising)j(complete)382 2915 y(language)26 b(constructs,)g(a)d (more)g(po)n(werful)i(speci\002cation)h(is)d(needed)i([10)r(].)d(W)l (ith)i(a)f(conte)o(xt-)382 3045 y(free)e(BNF)d(grammar)j([11)q(])f (with)h(production)i(rules)f(on)e(the)h(form)27 b FA(A)f Ft(!)k FA(B)2762 3060 y Fz(1)2801 3045 y FA(B)2856 3059 y Fz(2)2909 3045 y FB(.)17 b(.)g(.)j FA(B)3088 3059 y Fu(n)3149 3045 y F2(where)388 3175 y FA(A)i F2(is)f(a)h(non-terminal)j (and)g FA(B)1320 3190 y Fz(1)1357 3175 y FB(,)18 b FA(B)1453 3189 y Fz(2)1489 3175 y FB(,)e(.)h(.)g(.)g(,)h FA(B)1745 3189 y Fu(n)1807 3175 y F2(may)k(be)g(terminals)h(or)f(non-terminals,)j (most)d(of)382 3304 y(the)28 b(syntax)h(rules)f(can)g(be)f(speci\002ed) i(easily)g(and)f(precisely)-6 b(.)29 b(Some)e(rules,)h(e.g.)f(type)h (rules,)382 3434 y(requires)d(conte)o(xtual)i(information,)e(though,)g (and)f(are)g(de\002ned)g(separately)-6 b(.)382 3749 y FS(2.2)119 b(Context-fr)n(ee)30 b(speci\002cation)382 3973 y F2(W)-7 b(e)22 b(use)g(an)h(e)o(xtended)i(Backus-Naur)f(form)e (\(EBNF\))f([9)q(])h(which)h(is)f(BNF)e(augmented)25 b(with)383 4103 y Ft(\003)f F2(to)g(denote)h(zero)f(or)g(an)o(y)f (number)i(of)e(times)h(and)h Fx([)17 b(])25 b F2(which)e(denotes)j (zero)e(or)g(once.)382 4370 y FP(2.2.1)99 b(Abstract)25 b(syntax)382 4561 y F2(Starting)g(from)e(the)h(top)g(le)n(v)o(el,)f(a)g (v)n(alid)i(\002le)e(for)g(the)h(simulator)h(contains)h(a)d F1(simulation)7 b F2(:)1831 5652 y(18)p eop end %%Page: 19 21 TeXDict begin 19 20 bop 1535 228 a F1(Chapter)25 b(2.)51 b(Syntax)p 382 266 2989 4 v 659 548 a F2(simulation)d(::=)101 b(\(import-directi)n(v)o(e)1313 677 y(|)45 b(v)n(ariable-declaration) 1313 807 y(|)g(function-declaratio)q(n)1313 937 y(|)g(v)n (ariable-de\002nition)1313 1067 y(|)g(enum-de\002nition)1313 1197 y(|)g(function-de\002nition)1313 1327 y(|)g(type-de\002nition)1313 1456 y(|)g(create-statement\))1998 1423 y Fv(?)382 1704 y F2(Hence,)34 b(at)g(the)h(top)f(le)n(v)o(el)h(it)f(is)g(possible)i (to)e(ha)n(v)o(e)h(import)g(directi)n(v)o(es,)h(declarations)h(and)382 1834 y(de\002nitions,)e(and)f(create)g(statements.)i(Imported)e (\002les)f(are)h(also)g(parsed)h(starting)g(from)e(a)382 1964 y F1(simulation)p F2(.)523 2094 y(Further)24 b(speci\002cation)j (yields)e(for)e(the)h(import)g(directi)n(v)o(e:)659 2297 y(import-directi)n(v)o(e)127 b(::=)100 b FW(import)20 b(")p F2(\002lename)p FW(")p FX(;)382 2495 y F2(F)o(or)j(the)g (declarations:)659 2666 y(v)n(ariable-declaration)142 b(::=)100 b FW(extern)20 b F2([)p FW(const)p F2(])h(typename)k (identi\002er)g(\()p FX(,)e F2(identi\002er\))3586 2633 y Fv(?)3626 2666 y FX(;)659 2796 y F2(function-declaratio)q(n)129 b(::=)100 b FW(extern)20 b F2(function-header)28 b FX(;)659 2925 y F2(function-header)290 b(::=)100 b(\(typename)48 b(|)e FW(void)p F2(\))1720 3055 y(identi\002er)25 b FW(\()d F2([typename)k(identi\002er)2215 3185 y(\()p FX(,)d F2(typename)i (identi\002er\))3024 3152 y Fv(?)3065 3185 y F2(])e FW(\))659 3315 y F2(typename)509 b(::=)100 b FW(int)44 b F2(|)i FW(float)d F2(|)i FW(bool)f F2(|)i(identi\002er)382 3495 y(Note)20 b(that)h(we)e(allo)n(w)h(declaring)i(multiple)g(v)n(ariables) g(in)e(one)g(v)n(ariable)i(declaration.)h(A)c F1(type-)382 3624 y(name)30 b F2(can)24 b(be)g(either)h(of)e(the)h(basic)g(types,)h (or)e(it)h(can)f(be)h(the)g(name)f(of)h(an)f FW(enum)p F2(.)523 3754 y(The)g(de\002nitions:)659 3925 y(v)n (ariable-de\002nition)140 b(::=)101 b([)p FW(const)p F2(])21 b(typename)k(identi\002er)g([)p FW(=)d F2(e)o(xpression])1924 4055 y(\()p FX(,)g F2(identi\002er)j([)p FW(=)e F2(e)o(xpression]\)) 2903 4022 y Fv(?)2945 4055 y FX(;)659 4185 y F2(function-de\002nition) 128 b(::=)101 b(function-header)28 b FW({)22 b F2(\(statement\))2747 4152 y Fv(?)2788 4185 y FW(})659 4315 y F2(enum-de\002nition)227 b(::=)101 b FW(enum)21 b F2(identi\002er)j FW({)f F2(identi\002er)i(\() p FX(,)d F2(identi\002er\))3117 4282 y Fv(?)3158 4315 y FW(})659 4444 y F2(type-de\002nition)273 b(::=)101 b FW(type)21 b F2(identi\002er)j FW({)1924 4574 y F2(\([)p FW(watched)p F2(])c(v)n(ariable-de\002nition)1946 4704 y(|)46 b(function-de\002nition)1946 4834 y(|)g(enum-de\002nition\))2618 4801 y Fv(?)1665 4964 y FW(})382 5143 y F2(Inside)31 b(type)f(de\002nitions,)i(only)f(v)n(ariable,)g(enum)f(and)g(function)i (de\002nitions)g(are)d(allo)n(wed.)382 5273 y(There)k(must)f(al)o(w)o (ays)i(be)e(at)g(least)i(one)f(function)h(de\002nition,)g(i.e.)e(the)h FW(iterate\(int\))382 5403 y F2(function,)f(b)n(ut)e(specifying)i(that) f(with)e(the)h(EBNF)e(grammar)i(is)f(cumbersome)j(so)d(we)g(will)1831 5652 y(19)p eop end %%Page: 20 22 TeXDict begin 20 21 bop 1535 228 a F1(Chapter)25 b(2.)51 b(Syntax)p 382 266 2989 4 v 382 548 a F2(instead)36 b(catch)f(the)g (error)g(by)g(a)f(later)h(pass.)g(The)f(constructor)j(function)g (\(with)d(the)h(same)382 678 y(name)25 b(as)g(the)h(type\))g(is)f(also) h(special.)g(By)f(letting)h(its)g(return)g(type)g(be)f FW(void)e F2(we)h(can)i(easily)382 808 y(parse)i(it)f(as)g(a)g(normal)g (function.)j(De\002ning)d(a)g(constructor)j(to)d(be)g(a)g(non-)p FW(void)f F2(type)i(is)f(an)382 937 y(error)-5 b(.)523 1067 y(The)23 b(statement)i(for)f(instantiating)j(objects:)659 1266 y(create-statement)127 b(::=)100 b FW(create)20 b F2(inte)o(ger)n(-v)n(alue)27 b FW(of)22 b F2(function-call)27 b FU(;)382 1458 y F2(By)20 b(reusing)j(the)f(function)h(call)f (notation)h(we)e(ban)g(create)i(statements)g(without)f(paranthesis,)382 1588 y(so)27 b(e)n(v)o(en)g(if)g(the)h(type)g(does)g(not)f(specify)i(a) e(constructor)j(it)d(is)g(still)h(necessary)i(to)d(supply)i(an)382 1718 y(empty)24 b(pair)g(\(\).)523 1848 y(The)f(de\002nitions)j(of)d (the)h(statements:)659 2013 y(statement)241 b(::=)100 b FW({)23 b F2(\(statement\))1932 1980 y Fv(?)1973 2013 y FW(})1470 2143 y F2(|)46 b(v)n(ariable-de\002nition)1470 2273 y(|)g FW(while)20 b(\()i F2(e)o(xpression)27 b FW(\))22 b F2(statement)1470 2403 y(|)46 b FW(if)22 b(\()g F2(e)o(xpression)k FW(\))c F2(statement)j([)e FW(else)e F2(statement)k(])1470 2533 y(|)46 b(identi\002er)25 b FW(=)d F2(e)o(xpression)k FX(;)1470 2662 y F2(|)46 b(function-call)27 b FX(;)1470 2792 y F2(|)46 b FW(+)8 b(+)22 b F2(identi\002er)j FX(;)46 b F2(|)f FW(-)8 b(-)22 b F2(identi\002er)j FX(;)1470 2922 y F2(|)46 b FW(return)20 b F2(e)o(xpression)26 b FX(;)659 3052 y F2(function-call)127 b(::=)100 b(identi\002er)25 b FW(\()e F2([)g(e)o(xpression)j(\()p FX(,)c F2(e)o(xpression\))2829 3019 y Fv(?)2871 3052 y F2(])h FW(\))382 3226 y F2(Note)d(that)g(the)g (increment)i(and)e(decrement)i(operators)g(\()p FW(++)c F2(and)j FW(--)p F2(\))d(are)i(statements)i(\226)e(the)o(y)382 3356 y(possess)28 b(no)e(v)n(alue.)h(This)f(simpli\002es)g(the)h (grammar)l(,)f(and)h(also)g(renders)g(post\002x)g(increment)382 3486 y(and)d(decrement)h(operators)h(super\003uous.)523 3616 y(The)d(e)o(xpressions:)659 3800 y(e)o(xpression)126 b(::=)100 b(identi\002er)1393 3930 y(|)46 b(v)n(alue)1393 4060 y(|)g(function-call)1393 4190 y(|)g(unary-op)26 b(e)o(xpression)1393 4320 y(|)46 b(e)o(xpression)26 b(binary-op)g(e)o (xpression)1393 4450 y(|)46 b FW(\()22 b F2(e)o(xpression)k FW(\))1393 4579 y F2(|)46 b(e)o(xpression)26 b FX(:)d F2(e)o(xpression)j(\()p FW(|)c F2(e)o(xpression)27 b FX(:)c F2(e)o(xpression\))3316 4546 y Fv(?)659 4709 y F2(v)n(alue)317 b(::=)100 b(inte)o(ger)n(-v)n(alue)27 b(|)46 b(\003oat-v)n(alue)25 b(|)46 b(boolean-v)n(alue)659 4839 y(unary-op)185 b(::=)100 b FW(!)45 b F2(|)h FW(-)659 4969 y F2(binary-op)160 b(::=)100 b FW(&&)45 b F2(|)g FW(||)g F2(|)h FW(==)e F2(|)i FW(!=)e F2(|)i FW(<)f F2(|)h FW(>)f F2(|)g FW(<=)g F2(|)g FW(>=)1393 5099 y F2(|)h FW(+)f F2(|)g FW(-)g F2(|)h FW(*)f F2(|)h FW(/)f F2(|)g FW(\045)g F2(|)h FW(\210)f F2(|)g FW(...)382 5273 y F2(Except)25 b(the)f(multiple-choice)k(operators)e(and)e(the)h(e)o(xponentiation)j (operator)e FW(\210)p F2(,)c(all)j(opera-)382 5403 y(tors)f(ha)n(v)o(e) g(the)g(same)g(meaning)g(as)g(in)f(C,)f(C++)h(and)h(Ja)n(v)n(a.)g(\045) f(is)g(the)h(modulo)g(operator)-5 b(.)1831 5652 y(20)p eop end %%Page: 21 23 TeXDict begin 21 22 bop 1535 228 a F1(Chapter)25 b(2.)51 b(Syntax)p 382 266 2989 4 v 382 548 a FP(2.2.2)99 b(Concr)n(ete)26 b(syntax)382 739 y F2(The)d(abstract)i(syntax)g(presented)h(in)e(the)g (pre)n(vious)h(section)g(is)e(not)h(precise)h(enough)h(to)d(con-)382 869 y(struct)33 b(a)f(parser)i(for)f(the)f(language,)j(hence)e(we)f (shall)h(modify)g(it)f(to)h(produce)h(a)e(concrete)382 999 y(grammar)-5 b(.)523 1129 y(The)19 b(abstract)i(grammar)f(for)g(e)o (xpressions)i(is)d(ambiguous)j(since)e(an)g(e)o(xpression)i(such)e(as) 382 1259 y FB(1)d Fx(+)g FB(2)g Fx(+)g FB(3)k F2(can)h(be)g(parsed)h (as)f Fx(\()r(\()q FB(1)c Fx(+)f FB(2)q Fx(\))i(+)e FB(3)q Fx(\))23 b F2(or)f Fx(\()q FB(1)c Fx(+)g(\()q FB(2)f Fx(+)g FB(3)q Fx(\))r(\))q F2(.)22 b(Also,)f(an)h(abstract)h(syntax)382 1388 y(tree)k(produced)i(from)e(the)g(e)o(xpression)j(grammar)d(does)h (not)f(necessarily)j(follo)n(w)d(the)g(usual)382 1518 y(operator)35 b(precedence)g(rules.)e(T)-7 b(o)32 b(remedy)h(this)g (problem)h(we)e(substitute)j(the)e(production)382 1648 y(rules)24 b(for)g F1(e)o(xpression)33 b F2(with)24 b(rules)g(that)g (realize)h(ten)f(e)o(xpression)i(le)n(v)o(els:)659 1810 y(e)o(xpression)126 b(::=)100 b(e)o(xp)1499 1825 y Fz(1)659 1940 y F2(e)o(xp)788 1955 y Fz(1)1169 1940 y F2(::=)g(e)o(xp)1499 1954 y Fz(2)1560 1940 y F2([\()p FW(&&)45 b F2(|)h FW(||)p F2(\))22 b(e)o(xp)2130 1955 y Fz(1)2168 1940 y F2(])659 2070 y(e)o(xp)788 2084 y Fz(2)1169 2070 y F2(::=)100 b(e)o(xp)1499 2084 y Fz(3)1560 2070 y F2([\()p FW(==)45 b F2(|)h FW(!=)p F2(\))22 b(e)o(xp)2130 2084 y Fz(2)2168 2070 y F2(])659 2200 y(e)o(xp)788 2214 y Fz(3)1169 2200 y F2(::=)100 b(e)o(xp)1499 2215 y Fz(4)1560 2200 y F2([\()p FW(<)46 b F2(|)f FW(>)g F2(|)h FW(<=)f F2(|)g FW(>=)p F2(\))22 b(e)o(xp)2457 2214 y Fz(3)2496 2200 y F2(])659 2329 y(e)o(xp)788 2344 y Fz(4)1169 2329 y F2(::=)100 b(e)o(xp)1499 2343 y Fz(5)1560 2329 y F2([)23 b FX(:)g F2(e)o(xp)1795 2343 y Fz(5)1856 2329 y F2(\()p FW(|)g F2(e)o(xp)2093 2343 y Fz(5)2154 2329 y FX(:)g F2(e)o(xp)2336 2343 y Fz(5)2374 2329 y F2(\))2405 2296 y Fv(?)2443 2329 y F2(])659 2459 y(e)o(xp)788 2473 y Fz(5)1169 2459 y F2(::=)100 b(e)o(xp)1499 2473 y Fz(6)1560 2459 y F2([\()p FW(+)46 b F2(|)f FW(-)p F2(\))23 b(e)o(xp)2021 2473 y Fz(5)2059 2459 y F2(])659 2589 y(e)o(xp)788 2603 y Fz(6)1169 2589 y F2(::=)100 b(e)o(xp)1499 2603 y Fz(7)1560 2589 y F2([\()p FW(*)46 b F2(|)f FW(/)g F2(|)h FW(\045)p F2(\))23 b(e)o(xp)2185 2603 y Fz(6)2223 2589 y F2(])659 2719 y(e)o(xp)788 2733 y Fz(7)1169 2719 y F2(::=)100 b(e)o(xp)1499 2733 y Fz(8)1560 2719 y F2([)p FW(\210)23 b F2(e)o(xp)1797 2733 y Fz(7)1835 2719 y F2(])659 2849 y(e)o(xp)788 2863 y Fz(8)1169 2849 y F2(::=)100 b(e)o(xp)1499 2863 y Fz(9)1560 2849 y F2([)p FW(...)22 b F2(e)o(xp)1906 2863 y Fz(8)1944 2849 y F2(])659 2979 y(e)o(xp)788 2993 y Fz(9)1169 2979 y F2(::=)100 b(e)o(xp)1499 2994 y Fz(10)1616 2979 y F2(|)46 b FW(!)22 b F2(e)o(xp)1886 2994 y Fz(10)2003 2979 y F2(|)46 b FW(-)22 b F2(e)o(xp)2273 2994 y Fz(10)659 3108 y F2(e)o(xp)788 3124 y Fz(10)1169 3108 y F2(::=)100 b FW(\()23 b F2(e)o(xp)1577 3124 y Fz(1)1638 3108 y FW(\))45 b F2(|)g(identi\002er)j(|)d(v)n(alue)j (|)d(function-call)382 3260 y(The)36 b(le)n(v)o(els)h(signify)i(the)e (precedence)i(of)e(the)g(operators;)i(the)e(operators)i(on)e(the)g(lo)n (west)382 3390 y(le)n(v)o(els)24 b(ha)n(v)o(e)g(the)g(highest)h (precedence.)523 3520 y(The)d(remaining)i(leaf-le)n(v)o(el)g (non-terminals)i(are)c(de\002ned)i(as)e(\(where)h(digit)g(is)f(an)o(y)h (num-)382 3650 y(ber)h(in)f FW(0)p F2(\226)p FW(9)f F2(and)i(letter)h (is)e(an)h(alphabetic)i(character)l(,)g({)p FW(a)p F2(,)c(.)14 b(.)g(.)g(,)20 b FW(z)p F2(,)i FW(A)p F2(,)g(.)14 b(.)g(.)g(,)21 b FW(Z)p F2(}\):)659 3812 y(identi\002er)309 b(::=)101 b(letter)24 b(\(letter)48 b(|)d(digit\))2227 3779 y Fv(?)659 3942 y F2(inte)o(ger)n(-v)n(alue)165 b(::=)101 b(digit)24 b(\(digit\))1911 3909 y Fv(?)659 4071 y F2(\003oat-v)n(alue)251 b(::=)101 b(digit)24 b(\(digit\))1911 4038 y Fv(?)1951 4071 y FX(.)f F2(digit)h(\(digit\))2412 4038 y Fv(?)659 4201 y F2(boolean-v)n(alue)127 b(::=)101 b FW(true)43 b F2(|)j FW(false)382 4468 y FS(2.3)119 b(Contextual)30 b(speci\002cation)382 4692 y F2(Some)23 b(further)j(rules)f(that)f (depend)i(on)e(conte)o(xtual)j(information)f(are)e(speci\002ed)i(in)e (this)g(sec-)382 4822 y(tion.)382 5082 y FP(2.3.1)99 b(Cr)n(eate)26 b(statement)f(r)n(equir)n(ement)382 5273 y F2(In)19 b(order)h(to)f(be)h(able)g(to)f(start)h(the)f(simulation,)i (there)f(must)g(be)f(at)g(least)h(one)g(create)g(statement)382 5403 y(in)28 b(the)g(program.)g(A)f(consequence)k(of)d(this)g(is)g (that)g(there)h(must)f(also)g(be)g(at)f(least)i(one)f(type)1831 5652 y(21)p eop end %%Page: 22 24 TeXDict begin 22 23 bop 1535 228 a F1(Chapter)25 b(2.)51 b(Syntax)p 382 266 2989 4 v 382 548 a F2(de\002nition.)523 678 y(W)-7 b(e)21 b(could)i(enforce)h(this)e(by)g(means)g(of)g(the)g (EBNF)d(grammar)l(,)k(b)n(ut)f(that)g(w)o(ould)h(compli-)382 808 y(cate)h(it)f(unnecessarily)-6 b(.)382 1074 y FP(2.3.2)99 b(Identi\002er)26 b(binding)382 1265 y F2(The)d(role)h(of)f(the)g(v)n (ariable,)i(function,)g FW(enum)c F2(and)j(type)g(de\002nitions)h(is)e (both)h(to)f(mak)o(e)h(iden-)382 1395 y(ti\002ers)f(kno)n(wn)h(\(with)f (their)h(types\))g(and)g(to)f(bind)h(them)f(to)g(some)g(sort)h(of)f (contents,)i(whereas)382 1525 y(the)e(sole)h(purpose)h(of)e(the)h(v)n (ariable)h(and)e(function)j(declarations)g(is)d(to)g(mak)o(e)h(the)f (identi\002ers)382 1655 y(kno)n(wn.)523 1785 y(W)-7 b(e)19 b(de\002ne)h(that)g(multiple)h(declarations)i(of)d(the)g(same)f (identi\002er)j(are)d(allo)n(wed)i(pro)o(vided)382 1915 y(the)o(y)32 b(all)f(gi)n(v)o(e)g(the)h(identifer)h(the)f(same)f(type,) h(b)n(ut)f(require)i(that)f(an)f(identi\002er)i(must)e(ha)n(v)o(e)382 2045 y(been)26 b(de\002ned)h(or)e(declared)j(before)f(the)f(\002rst)f (applied)j(occurrence)g(of)e(it.)f(Furthermore,)i(all)382 2174 y(declared)f(identi\002ers)f(must)e(be)h(de\002ned)g(e)o(xactly)h (once.)523 2304 y(Hence,)f(the)f(follo)n(wing)i(program)g(is)f(a)f (syntactically)k(correct)e(program:)492 2469 y FR(e)10 b(x)g(t)g(e)g(r)g(n)74 b(i)13 b(n)g(t)68 b FY(x)17 b(;)492 2583 y FR(e)10 b(x)g(t)g(e)g(r)g(n)74 b(i)13 b(n)g(t)68 b FY(x)17 b(;)491 2812 y FR(v)9 b(o)g(i)g(d)71 b FY(f)25 b(\()15 b(\))487 2927 y({)585 3041 y(x)55 b(=)50 b(1)14 b(5)h(;)487 3156 y(})495 3385 y FR(i)e(n)g(t)67 b FY(x)17 b(;)382 3565 y F2(Whereas)25 b(the)e(follo)n(wing)i(listing)h(is)d(not) h(a)f(v)n(alid)h(program:)495 3729 y FR(i)13 b(n)g(t)67 b FY(x)55 b(=)62 b(f)31 b(\()20 b(\))f(;)228 b FQ(/)18 b(/)80 b(e)12 b(r)g(r)g(o)g(r)31 b(:)68 b(f)78 b(i)15 b(s)76 b(n)11 b(o)g(t)71 b(d)12 b(e)g(c)g(l)g(a)g(r)g(e)g(d)495 3958 y FR(i)h(n)g(t)74 b FY(f)25 b(\()15 b(\))487 4073 y({)591 4187 y FR(r)10 b(e)g(t)g(u)g(r)g(n)58 b FY(1)14 b(5)g(;)487 4302 y(})382 4482 y F2(Neither)24 b(is:)492 4646 y FR(e)10 b(x)g(t)g(e)g(r)g(n)74 b(i)13 b(n)g(t)75 b FY(f)28 b(\()17 b(\))h(;)495 4761 y FR(i)13 b(n)g(t)67 b FY(x)55 b(=)62 b(f)29 b(\()17 b(\))g(;)499 4875 y FQ(/)h(/)80 b(e)12 b(r)g(r)g(o)g(r)31 b(:)68 b(f)78 b(i)15 b(s)76 b(n)11 b(e)g(v)g(e)g(r)72 b(d)13 b(e)g(f)g(i)g(n)g(e)g(d)523 5055 y F2(Furthermore,)34 b(local)g(v)n(ariable)g(de\002nitions)h (inside)f(blocks)g(are)e(allo)n(wed)i(to)e(ha)n(v)o(e)i(the)382 5185 y(same)25 b(name)f(as)h(v)n(ariables)i(in)e(outer)g(scopes)i(and)e (simply)g(shado)n(w)h(these.)f(The)f(same)h(is)g(not)382 5315 y(true)f(for)g(function)h(and)f FW(enum)d F2(de\002nitions,)26 b(though.)1831 5652 y(22)p eop end %%Page: 23 25 TeXDict begin 23 24 bop 1535 228 a F1(Chapter)25 b(2.)51 b(Syntax)p 382 266 2989 4 v 382 548 a FP(2.3.3)99 b(T)-7 b(ype)25 b(rules)382 739 y F2(There)19 b(are)h(three)g(dif)n(ferent)h (basic)f(types)g(in)f(the)h(language,)29 b FR(int)7 b F2(,)33 b FR(\003oat)f F2(and)20 b FR(bool)o F2(,)e(plus)i(an)g(un-)382 869 y(limited)27 b(number)g(of)f(user)n(-de\002ned)j FR(enum)d F2(types.)h(A)f(syntactically)k(correct)d(program)h(must)382 999 y(not)36 b(ha)n(v)o(e)h(an)o(y)f(major)g(type)h(mismatches,)g(b)n (ut)g(may)e(ha)n(v)o(e)i(an)o(y)f(number)h(of)f(minor)g(type)382 1129 y(mismatches.)382 1391 y FX(Major)24 b(type)f(mismatches)382 1582 y F2(W)-7 b(e)23 b(de\002ne)g(a)h(major)f(mismatch)i(as)e(one)h (of)g(the)f(follo)n(wing)i(three)g(cases:)496 1782 y(1.)45 b(An)23 b(e)o(xpected)i(type)g(is)e FR(bool)o F2(,)g(b)n(ut)h(the)f (actual)i(type)f(is)31 b FR(int)g F2(or)38 b FR(\003oat)e F2(or)24 b(an)f FR(enum)g F2(type.)496 1985 y(2.)45 b(An)23 b(e)o(xpected)i(type)g(is)31 b FR(int)f F2(or)38 b FR(\003oat)14 b F2(,)22 b(b)n(ut)i(the)g(actual)h(type)f(is)g FR(bool)d F2(or)j(an)f FR(enum)g F2(type.)496 2188 y(3.)45 b(An)23 b(e)o(xpected)i(type)g(is)e(an)g FR(enum)g F2(type,)h(b)n(ut)g(the)g (actual)h(type)f(is)31 b FR(int)8 b F2(,)37 b FR(\003oat)g F2(or)23 b FR(bool)f F2(or)609 2318 y(a)h(dif)n(ferent)j FR(enum)d F2(type.)382 2580 y FX(Minor)g(type)g(mismatches)382 2771 y F2(A)f(minor)i(mismatch)g(is)g(one)g(of)f(the)h(follo)n(wing)h (tw)o(o)e(cases:)496 2972 y(1.)45 b(An)23 b(e)o(xpected)i(type)g(is)31 b FR(int)7 b F2(,)23 b(b)n(ut)h(the)g(actual)g(type)h(is)38 b FR(\003oat)14 b F2(.)496 3174 y(2.)45 b(An)23 b(e)o(xpected)i(type)g (is)38 b FR(\003oat)14 b F2(,)22 b(b)n(ut)i(the)g(actual)h(type)f(is)31 b FR(int)8 b F2(.)382 3375 y(A)31 b(minor)i(mismatch)g(causes)h(a)e(w)o (arning)h(and)g(an)g(implicit)g(con)l(v)o(ersion)j(from)c(the)h(actual) 382 3505 y(type)24 b(to)g(the)f(e)o(xpected)j(type)e(by)g(means)g(of)45 b FY(intify)f F2(and)54 b FY(\003oatify)28 b F2(.)382 3767 y FX(Expected)23 b(types)382 3958 y F2(The)32 b(de\002nition)i(of) e(where)h(e)o(xpected)h(types)g(occur)f(and)g(what)f(the)o(y)h(are)f (is)h(based)g(on)g(the)382 4088 y(abstract)25 b(grammar)-5 b(.)523 4218 y(A)25 b(v)n(ariable)j(de\002nition)g(may)e(contain)i(an)f (initializer)h(e)o(xpression.)h(The)d(e)o(xpected)i(type)382 4347 y(of)23 b(this)h(e)o(xpression)j(is)c(the)h(type)g(of)g(the)f(v)n (ariable)j(being)e(de\002ned.)495 4510 y FR(i)13 b(n)g(t)67 b FY(x)55 b(=)61 b(e)10 b(x)g(p)g(r)29 b(;)126 b FQ(/)17 b(/)80 b(e)12 b(x)g(p)g(e)g(c)g(t)g(e)g(d)73 b(t)12 b(y)g(p)g(e)73 b(o)12 b(f)71 b(e)10 b(x)g(p)g(r)76 b(i)15 b(s)80 b(i)15 b(n)g(t)382 4688 y F2(A)20 b FR(while)h F2(statement)i(contains)h(an)e (e)o(xpression)i(which)e(is)f(tested)i(before)g(each)f(iteration.)h (The)382 4818 y(e)o(xpected)i(type)g(of)e(this)h(e)o(xpression)i(is)e FR(bool)o F2(.)492 4981 y FR(w)10 b(h)g(i)g(l)g(e)65 b FY(\()27 b(e)10 b(x)g(p)g(r)27 b(\))122 b FQ(/)18 b(/)79 b(e)12 b(x)g(p)g(e)g(c)g(t)g(e)g(d)73 b(t)12 b(y)g(p)g(e)73 b(o)12 b(f)72 b(e)10 b(x)g(p)g(r)75 b(i)15 b(s)75 b(b)10 b(o)g(o)g(l)594 5095 y FY(s)j(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)26 b(;)382 5273 y F2(An)34 b FR(if)g F2(statement)24 b(contains)h(a)e (condition)i(e)o(xpression.)h(The)c(e)o(xpected)j(type)e(of)g(this)h(e) o(xpres-)382 5403 y(sion)g(is)g FR(bool)o F2(.)1831 5652 y(23)p eop end %%Page: 24 26 TeXDict begin 24 25 bop 1535 228 a F1(Chapter)25 b(2.)51 b(Syntax)p 382 266 2989 4 v 498 548 a FR(i)16 b(f)71 b FY(\()27 b(e)10 b(x)g(p)g(r)27 b(\))272 b FQ(/)18 b(/)79 b(e)12 b(x)g(p)g(e)g(c)g(t)g(e)g(d)73 b(t)12 b(y)g(p)g(e)73 b(o)12 b(f)72 b(e)10 b(x)g(p)g(r)75 b(i)15 b(s)75 b(b)10 b(o)g(o)g(l)594 663 y FY(s)j(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)26 b(;)496 777 y FR(e)13 b(l)i(s)f(e)594 892 y FY(s)f(t)g(a)g(t)g(e)g(m)g (e)g(n)g(t)26 b(;)382 1071 y F2(An)d(assignment)j(has)e(an)g(e)o (xpression)i(on)e(the)g(right-hand)i(side.)e(The)g(e)o(xpected)h(type)g (of)e(this)382 1201 y(e)o(xpression)30 b(is)e(the)g(type)h(of)f(the)g (v)n(ariable)h(on)f(the)g(left-hand)j(side.)d(Furthermore,)h(the)f (type)382 1331 y(of)23 b(the)h(v)n(ariable)h(may)f(not)g(be)g FR(const)q F2(.)495 1495 y FR(i)13 b(n)g(t)67 b FY(x)17 b(;)486 1610 y(x)55 b(=)61 b(e)10 b(x)g(p)g(r)29 b(;)275 b FQ(/)18 b(/)79 b(e)12 b(x)g(p)g(e)g(c)g(t)g(e)g(d)73 b(t)12 b(y)g(p)g(e)73 b(o)12 b(f)72 b(e)10 b(x)g(p)g(r)75 b(i)15 b(s)80 b(i)16 b(n)f(t)382 1790 y F2(A)23 b(function)k(call)e (may)g(ha)n(v)o(e)g(an)o(y)g(number)g(of)g(actual)h(parameters)g(which) f(are)g(e)o(xpressions.)382 1919 y(The)d(e)o(xpected)i(type)e(of)g(an)o (y)h(such)f(parameter)i(is)e(the)g(e)o(xpected)i(type)f(of)f(the)h (corresponding)382 2049 y(formal)30 b(parameter)-5 b(.)30 b(Since)g(function)h(o)o(v)o(erloading)h(is)d(not)h(supported,)i(this)e (is)f(unambigu-)382 2179 y(ous.)495 2344 y FR(i)13 b(n)g(t)74 b FY(f)22 b(\()i FR(i)13 b(n)g(t)67 b FY(y)15 b(\))487 2458 y({)591 2573 y FR(r)10 b(e)g(t)g(u)g(r)g(n)62 b FY(y)17 b(;)487 2687 y(})495 2802 y FR(i)c(n)g(t)67 b FY(x)55 b(=)62 b(f)22 b(\()f(e)10 b(x)g(p)g(r)29 b(\))20 b(;)77 b FQ(/)18 b(/)80 b(e)12 b(x)g(p)g(e)g(c)g(t)g(e)g(d)72 b(t)12 b(y)g(p)g(e)74 b(o)12 b(f)71 b(e)10 b(x)g(p)g(r)75 b(i)15 b(s)81 b(i)15 b(n)g(t)382 2981 y F2(F)o(or)j(an)h(increment)i (or)e(decrement)i(statement,)f(the)f(e)o(xpected)i(type)f(of)f(the)h (identi\002er)g(is)34 b FR(\003oat)382 3111 y F2(or)d FR(int)f F2(depending)d(on)c(the)h(actual)h(type)f(and)g(may)f(not)h (be)h FR(const)q F2(.)495 3276 y FR(i)13 b(n)g(t)80 b FY(i)18 b(d)f(e)h(n)f(t)h(i)f(f)g(i)h(e)g(r)70 b(=)52 b(0)16 b(;)484 3390 y(+)r(+)j(i)e(d)h(e)f(n)g(t)h(i)g(f)f(i)h(e)f(r)36 b(;)76 b FQ(/)18 b(/)79 b(e)12 b(x)g(p)g(e)g(c)g(t)g(e)g(d)73 b(t)12 b(y)g(p)g(e)73 b(o)12 b(f)79 b(i)17 b(d)h(e)f(n)g(t)h(i)g(f)f(i) h(e)f(r)83 b(i)15 b(s)80 b(i)16 b(n)f(t)469 3505 y FN(\000)-11 b(\000)11 b FY(i)17 b(d)h(e)f(n)g(t)h(i)g(f)f(i)h(e)f(r)31 b(;)382 3685 y F2(A)22 b FR(r)o(etur)o(n)g F2(statement)j(contains)h (an)d(e)o(xpression.)j(The)d(e)o(xpected)j(type)e(of)g(this)g(e)o (xpression)i(is)382 3814 y(the)e(return)h(type)f(of)f(the)h(function.) 495 3979 y FR(i)13 b(n)g(t)74 b FY(f)25 b(\()15 b(\))487 4093 y({)591 4208 y FR(r)10 b(e)g(t)g(u)g(r)g(n)68 b FY(e)10 b(x)g(p)g(r)29 b(;)76 b FQ(/)17 b(/)80 b(e)12 b(x)g(p)g(e)g(c)g(t)g(e)g(d)73 b(t)12 b(y)g(p)g(e)73 b(o)12 b(f)71 b(e)10 b(x)g(p)g(r)76 b(i)15 b(s)80 b(i)15 b(n)g(t)487 4322 y FY(})382 4502 y F2(The)21 b(e)o(xpected)i(type)f(of) f(the)g(operand)i(to)e(the)h(unary)g(operator)28 b FY(!)d F2(is)c FR(bool)o F2(.)f(The)h(e)o(xpected)i(type)382 4632 y(of)h(the)g(operand)h(to)f(the)g(unary)h(sign)f(operator)j FN(\000)c F2(is)39 b FR(\003oat)e F2(or)31 b FR(int)f F2(depending)d(on)d(the)g(actual)382 4762 y(type.)523 4892 y(The)f(e)o(xpected)j(type)e(of)f(the)h(operands)i(to)d(the)h (binary)h(operators)h FY(&&)c F2(and)45 b FY(||)e F2(is)23 b FR(bool)o F2(.)523 5021 y(The)k(types)h(of)f(the)h(tw)o(o)e(operands) k(to)d(the)g(operators)j FY(==)c F2(and)i FY(!=)e F2(should)j(be)e(the) g(same.)382 5151 y(T)-7 b(o)20 b(a)n(v)n(oid)i(ambiguity)-6 b(,)22 b(we)e(specify)j(the)e(follo)n(wing)h(set)f(of)g(rules)h(to)e (determine)j(the)e(e)o(xpected)382 5281 y(type)j(where)g(the)g(last)g (rules)g(are)g(considered)j(only)d(in)f(case)i(the)e(\002rst)h(rules)g (do)g(not)g(apply:)1831 5652 y(24)p eop end %%Page: 25 27 TeXDict begin 25 26 bop 1535 228 a F1(Chapter)25 b(2.)51 b(Syntax)p 382 266 2989 4 v 496 548 a F2(1.)45 b(If)22 b(the)g(left-hand)i(side)e(of)g(the)g(operator)h(is)f(of)f(type)i FR(enum)f FD(h)t F2(,)f(then)i(the)f(e)o(xpected)h(type)609 678 y(of)h(the)f(other)i(operand)h(is)d(also)h FR(enum)g FD(h)t F2(.)496 879 y(2.)45 b(If)23 b(the)h(left-hand)h(side)f(of)f (the)h(operator)h(is)e(of)g(type)h FR(bool)o F2(,)e(then)i(the)g(e)o (xpected)h(type)f(of)609 1009 y(the)g(other)h(operand)g(is)e FR(bool)p F2(.)496 1210 y(3.)45 b(If)20 b(either)i(operand)g(is)e(of)h (type)36 b FR(\003oat)14 b F2(,)19 b(the)h(e)o(xpected)j(type)e(of)f (both)h(operands)i(is)35 b FR(\003oat)14 b F2(.)496 1411 y(4.)45 b(Else)22 b(the)g(left-hand)j(side)d(must)g(be)g(of)g(type)31 b FR(int)d F2(and)23 b(the)f(e)o(xpected)i(type)f(of)f(the)g(other)609 1541 y(operand)k(is)31 b FR(int)7 b F2(.)523 1736 y(F)o(or)28 b(the)i(rest)f(of)g(the)g(binary)i(operators,)g FY(<)p F2(,)d FY(>)p F2(,)g FY(<=)p F2(,)g FY(>=)o F2(,)g FY(+)p F2(,)h FN(\000)q F2(,)f FN(\003)o F2(,)35 b FY(/)8 b F2(,)28 b FY(\045)p F2(,)g FY(^)g F2(and)54 b FY(...)25 b F2(,)j(the)382 1866 y(e)o(xpected)f(type)f(of)f(the)h(operands)i(is)d (either)34 b FR(int)e F2(or)40 b FR(\003oat)14 b F2(.)24 b(If)h(one)h(of)f(the)g(operands)j(has)e(the)382 1996 y(type)43 b FR(\003oat)14 b F2(,)27 b(the)h(e)o(xpected)h(type)g(of)e (both)i(operands)h(is)42 b FR(\003oat)14 b F2(.)27 b(Else)g(the)h(e)o (xpected)i(type)e(of)382 2126 y(both)c(operands)i(is)31 b FR(int)8 b F2(.)523 2256 y(The)34 b(e)o(xpected)i(type)f(of)f(the)h (e)o(xpressions)i(on)e(the)f(left)h(side)g(of)f(the)h(colons)h(in)e(a)g (the)382 2386 y(multiple-choice)d(operator)d(is)42 b FR(\003oat)14 b F2(.)26 b(The)g(types)i(of)f(all)g(the)g(right-hand)i (side)f(e)o(xpressions)382 2515 y(of)21 b(the)g(colon)h(pairs)g(should) h(be)e(the)g(same.)f(Thus)h(the)h(type)f(is)g(determined)i(by)e(the)g (follo)n(wing)382 2645 y(ruleset)k(where)f(the)g(rules)g(again)g(are)g (considered)j(one)d(by)f(one:)496 2841 y(1.)45 b(If)32 b(the)h(type)g(of)f(the)g(\002rst)g(e)o(xpression)j(is)d FR(enum)h FD(h)t F2(,)e(then)i(the)g(e)o(xpected)h(type)f(of)f(all)609 2971 y(e)o(xpressions)27 b(is)c(also)h FR(enum)g FD(h)t F2(.)496 3172 y(2.)45 b(If)21 b(the)g(type)h(of)f(the)g(\002rst)g(e)o (xpression)j(is)c FR(bool)p F2(,)g(then)h(the)h(e)o(xpected)h(type)e (of)g(all)h(e)o(xpres-)609 3302 y(sions)j(is)e FR(bool)o F2(.)496 3503 y(3.)45 b(If)21 b(an)o(y)g(of)f(the)i(e)o(xpressions)h (is)e(of)g(type)36 b FR(\003oat)14 b F2(,)20 b(the)h(e)o(xpected)i (type)e(of)g(all)g(e)o(xpressions)609 3633 y(is)39 b FR(\003oat)13 b F2(.)496 3834 y(4.)45 b(Else)34 b(the)h(\002rst)f(e)o (xpression)j(must)e(be)f(of)g(type)43 b FR(int)e F2(and)35 b(the)g(e)o(xpected)h(type)f(of)g(all)609 3963 y(e)o(xpressions)27 b(is)k FR(int)7 b F2(.)382 4225 y FX(T)-7 b(ype)23 b(deduction)382 4416 y F2(The)31 b(de\002nition)i(of)e(the)g(e)o(xpected)i(types)f(of)g (the)f(language)j(constructs)g(assumes)e(that)g(the)382 4546 y(actual)25 b(types)h(of)e(the)h(immediate)g(constituents)j(are)c (kno)n(wn.)h(These)f(can)h(be)f(deduced)j(quite)382 4675 y(easily)e(by)e(a)g(recursi)n(v)o(e)j(de\002nition:)518 4871 y Ft(\017)46 b F2(The)23 b(type)i(of)e(a)g(v)n(ariable)i(is)f(e)o (xplicitly)i(and)e(uniquely)h(de\002ned)g(in)e(the)h(program.)518 5072 y Ft(\017)46 b F2(The)31 b(type)i(of)e(a)g(literal)i(v)n(alue)g (is)e(deduced)j(from)d(the)h(syntax)h(and)f(is)g(de\002ned)g(with)609 5202 y(EBNF)21 b(notation)26 b(in)d(Section)i(2.2.2.)518 5403 y Ft(\017)46 b F2(The)23 b(type)i(of)e(a)g(function)j(call)e(is)f (the)h(return)h(type)f(of)g(the)f(function.)1831 5652 y(25)p eop end %%Page: 26 28 TeXDict begin 26 27 bop 1535 228 a F1(Chapter)25 b(2.)51 b(Syntax)p 382 266 2989 4 v 518 548 a Ft(\017)46 b F2(The)23 b(type)i(of)e(a)g(unary)i(e)o(xpression)h(is)d(the)h(type)g(of)g(the)g (operand.)518 753 y Ft(\017)46 b F2(The)28 b(type)g(of)g(a)f(binary)j (e)o(xpression)g(is)e(the)g(type)h(of)e(the)i(tw)o(o)e(operands)j (\(due)f(to)f(the)609 882 y(de\002nition)i(in)e(the)g(pre)n(vious)i (section,)g(the)e(tw)o(o)f(types)j(are)e(the)g(same;)g(a)g(minor)g (type)609 1012 y(mismatch)c(w)o(ould)h(ha)n(v)o(e)f(caused)h(a)e(type)h (con)l(v)o(ersion\).)518 1217 y Ft(\017)46 b F2(The)23 b(type)i(of)e(a)g(parenthesized)28 b(e)o(xpression)e(is)d(the)h(type)g (of)g(the)g(e)o(xpression.)518 1421 y Ft(\017)46 b F2(The)30 b(type)g(of)g(a)g(multiple-choice)j(e)o(xpression)g(is)d(the)g(type)g (of)g(right-hand)j(sides)e(of)609 1551 y(the)24 b(colon)h(pairs.)1831 5652 y(26)p eop end %%Page: 27 29 TeXDict begin 27 28 bop 382 1202 a FT(Chapter)44 b(3)382 1654 y F4(Semantics)382 2116 y F2(This)23 b(chapter)j(presents)f(a)e (formal)h(de\002nition)i(of)d(the)h(semantics)h(of)f(the)f(language.) 382 2431 y FS(3.1)119 b(Intr)n(oduction)382 2654 y F2(The)18 b(semantics)j(that)f(we)e(will)g(specify)j(are)e(big-step/natural)24 b([2)q(;)18 b(8])h(semantics)h(which)g(w)o(ork)382 2784 y(by)k(specifying)k(rules)d(for)g(each)g(of)f(the)h(syntactic)i (constructs.)g(Each)d(rule)h(has)g(a)f(number)h(of)382 2914 y(premises)30 b(that)e(must)h(be)f(ful\002lled)i(for)e(the)h(rule) g(to)f(be)g(concluded,)j(and)e(the)f(deri)n(v)n(ation)j(of)382 3044 y(the)24 b(conclusion)j(for)d(the)g(rule)g(that)g(co)o(v)o(ers)g (the)g(whole)g(program)h(is)f(then)g(a)g(speci\002cation)i(of)382 3174 y(the)e(semantics)h(for)f(the)g(program.)382 3488 y FS(3.2)119 b(De\002nitions)382 3716 y FP(3.2.1)99 b(Syntactic)26 b(categories)382 3907 y F2(F)o(or)d(the)i(v)n(arious)h(constructs)i (that)d(are)f(allo)n(wed)h(in)g(the)g(language,)h(we)e(de\002ne)h(a)f (number)h(of)382 4037 y(syntactic)e(cate)o(gories)g(with)e(meta)g(v)n (ariables)i(that)e(will)g(be)g(used)g(to)g(refer)h(to)f(elements)h(of)f (the)382 4167 y(cate)o(gories.)26 b(The)d(cate)o(gories)j(are)d(listed) i(in)e(T)-7 b(able)24 b(3.1.)382 4433 y FP(3.2.2)99 b(En)l(vir)n (onment)382 4624 y F2(An)36 b(en)l(vironment-store)42 b(model)c(is)f(used)h(to)f(model)g(v)n(ariables)j(and)d(the)h(mapping)g (from)382 4754 y(symbolic)24 b(representations)j(to)c(actual)h(v)n (alues.)f(A)f(v)n(ariable)i(en)l(vironment)j FA(e)2830 4769 y Fu(V)2908 4754 y F2(is)22 b(a)h(mapping)382 4884 y(from)e(identi\002ers)i(to)d(store)i(locations.)h(A)d(store)j FA(s)r(t)r(o)h F2(is)d(a)f(mapping)i(from)f(locations)j(to)d(actual)382 5014 y(v)n(alues.)27 b(A)d(v)n(alue)j(is)e(a)g(member)h(of)g(the)g(set) g FX(V)-8 b(al)30 b Fx(=)g Fs(Z)20 b Ft([)f Fs(R)g Ft([)h(f)s F0(T)t FB(,)d F0(F)t Ft(g)k([)e Fs(E)26 b F2(where)g Fs(E)f F2(is)h(the)382 5143 y(set)e(of)f(all)h FW(enum)d F2(v)n(alues.)523 5273 y(Since)29 b(only)g(some)g(identi\002ers)i(ha)n (v)o(e)e(a)f(de\002ned)i(mapping)g(\(i.e.)e(only)h(those)h(that)f(ha)n (v)o(e)382 5403 y(been)c(de\002ned)g(in)f(the)g(program\),)i(and)e(lik) o(e)n(wise)h(since)g(only)g(some)g(store)g(locations)h(map)e(to)1831 5652 y(27)p eop end %%Page: 28 30 TeXDict begin 28 29 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 1155 464 1442 8 v 1205 580 a F2(Cate)o(gory)473 b(Set)237 b(Meta)p 1155 639 1442 5 v 1205 756 a(T)-7 b(ople)n(v)o(el)24 b(constructs)103 b FX(T)-8 b(opl)181 b FA(T)1205 885 y F2(T)-7 b(ype)23 b(members)269 b FX(Memb)105 b FA(M)1205 1015 y F2(Statements)406 b FX(Stat)198 b FA(S)1205 1145 y F2(Expressions)367 b FX(Expr)158 b FA(E)1205 1275 y F2(V)-10 b(ariables)467 b FX(V)-8 b(ar)210 b FA(V)1205 1405 y F2(Functions)447 b FX(Fun)198 b FA(F)1205 1535 y F2(Literal)24 b(v)n(alues)310 b FX(Lit)238 b FA(C)1205 1665 y F2(T)-7 b(ypenames)393 b FX(T)-7 b(yp)204 b FD(t)p 1155 1726 1442 8 v 999 1899 a FQ(T)-8 b(able)20 b(3.1:)29 b(The)20 b(syntactic)g(cate)m(gories)f (for)i(the)f(langua)o(g)o(e)o(.)382 2174 y F2(well-de\002ned)26 b(v)n(alues,)f(both)g(mappings)h(are)e(partial.)i(F)o(or)d(functions)k (with)d(return)i(v)n(alue)f(we)382 2304 y(also)f(need)h(a)f(special)h (location,)h(\223retv)n(al\224,)f(for)g(sa)n(ving)g(the)f(v)n(alue.)h (Thus)f(the)g(set)g(of)g(v)n(ariable)382 2433 y(en)l(vironments)j(is:) 1489 2563 y FX(En)l(v)1642 2578 y Fu(V)1724 2563 y Fx(=)f FX(V)-8 b(ar)26 b FC(,)-15 b Ft(!)27 b FX(Loc)382 2747 y F2(And)c(the)h(set)g(of)f(stores:)1338 2877 y FX(Sto)k Fx(=)f FX(Loc)19 b Ft([)h(f)q F2(retv)n(al)s Ft(g)28 b FC(,)-15 b Ft(!)26 b FX(V)-8 b(al)523 3061 y F2(These)32 b(are)h(updated)h(by)e(choosing)i(ne)n(w)e(mappings)i(that)e(\002lters) h(the)f(identi\002ers.)i(F)o(or)382 3191 y(instance,)24 b(the)e(en)l(vironment)k FA(e)1371 3158 y Fr(0)1370 3218 y Fu(V)1448 3191 y F2(which)c(is)h FA(e)1810 3206 y Fu(V)1888 3191 y F2(e)o(xcept)g(that)g(the)f(identi\002er)h FW(dog)d F2(is)i(bound)i(to)382 3320 y(the)g(location)i FA(l)h F2(is)d(denoted)h(by)g FA(e)1429 3335 y Fu(V)1486 3320 y Fx([)q FW(dog)g Ft(7)r(!)j FA(l)5 b Fx(])q F2(.)23 b(In)h(general,)h(we)d(ha)n(v)o(e)1137 3629 y FA(e)1173 3644 y Fu(V)1230 3629 y Fx([)q FA(V)1328 3592 y Fr(0)1377 3629 y Ft(7)r(!)28 b FA(l)5 b Fx(])r(\()q FA(V)h Fx(\))29 b(=)1825 3443 y Fp(8)1825 3525 y(<)1825 3688 y(:)1908 3560 y FA(l)304 b F2(if)23 b FA(V)31 b Fx(=)c FA(V)2582 3527 y Fr(0)1908 3716 y FA(e)1944 3731 y Fu(V)2001 3716 y Fx(\()q FA(V)6 b Fx(\))93 b F2(if)23 b FA(V)31 b Ft(6)r Fx(=)c FA(V)2584 3683 y Fr(0)382 3931 y F2(The)h(same)h(notation)i (will)e(be)f(used)i(to)f(decorate)i(stores)f(and)f(function)i(en)l (vironments.)h(T)-7 b(o)382 4061 y(f)o(acilitate)22 b(v)n(ariable)f (de\002nitions,)g(the)e(special)i(symbol)f(\223ne)o(xt\224)h(will)e(al) o(w)o(ays)h(map)f(to)g(the)h(ne)o(xt)382 4191 y(unused)25 b(store)g(location.)523 4321 y(Function)e(en)l(vironments)i(are)d(used) g(to)g(k)o(eep)h(track)f(of)g(de\002ned)g(functions.)i(The)d(needed)382 4451 y(information)i(is)d(the)g(function)j(body)e(\(a)f(block)i (statement\),)g(the)f(formal)f(parameters)j(and)e(the)382 4581 y(v)n(ariable)k(and)f(function)i(en)l(vironments)h(at)c(the)h (time)g(of)f(the)h(de\002nition)h(since)g(the)f(language)382 4710 y(is)f(statically)j(scoped.)f(Hence)f(the)g(set)g(of)f(function)j (en)l(vironments)h(is)c(gi)n(v)o(en)h(by)932 4932 y FX(En)l(v)1088 4947 y Fu(F)1157 4932 y Fx(=)i FX(Fun)f FC(,)-15 b Ft(!)26 b FX(Stat)1721 4946 y Fn(block)1891 4932 y Ft(\002)19 b FX(P)o(arm)g Ft(\002)f FX(En)l(v)2461 4947 y Fu(F)2522 4932 y Ft(\002)g FX(En)l(v)2764 4947 y Fu(V)382 5153 y F2(where)28 b FX(Stat)787 5167 y Fn(block)966 5153 y F2(is)f(the)h(set)g(of)g(all)f(block)i(statements)h(and)e FX(P)o(arm)f F2(is)g(the)h(set)g(of)g(all)g(tuples)382 5283 y(of)23 b(length)j Ft(\025)h FB(0)c F2(with)g(elements)i(from)e FX(V)-8 b(ar)23 b F2(as)h(elements.)1831 5652 y(28)p eop end %%Page: 29 31 TeXDict begin 29 30 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 523 548 a F2(T)-7 b(o)22 b(support)i(function)h(and)e(v)n(ariable)i(declarations)h(that)d(allo)n (w)g(usage)h(of)f(v)n(ariables)h(and)382 678 y(functions)35 b(before)g(their)e(de\002nition,)i(tw)o(o)d(le)n(v)o(els)i(of)e(en)l (vironments)37 b(are)c(maintained,)i(the)382 808 y(global)h(and)f(the)g (local)g(en)l(vironment.)i(V)-10 b(ariable)36 b(and)f(function)i (lookup)f(is)e(done)i(by)e(\002rst)382 937 y(looking)27 b(in)f(the)f(local)i(en)l(vironment,)h(and)e(in)f(case)h(it)f(does)h (not)g(contain)h(a)e(binding)j(then)e(in)382 1067 y(the)e(global)h(en)l (vironment.)h(F)o(or)d(v)n(ariables,)i(we)e(de\002ne)28 b FA(L)2216 1082 y Fu(V)2294 1067 y F2(to)23 b(aid)h(this)g(lookup:)932 1373 y FA(L)984 1388 y Fu(V)1040 1373 y Fx(\()q FA(V)5 b FB(,)16 b FA(e)1222 1388 y Fu(V)1279 1373 y FB(,)g FA(e)1354 1388 y Fu(V)1396 1400 y Fk(G)1443 1373 y Fx(\))27 b(=)1604 1187 y Fp(8)1604 1268 y(<)1604 1432 y(:)1687 1304 y FA(e)1723 1319 y Fu(V)1780 1304 y Fx(\()q FA(V)6 b Fx(\))124 b F2(if)25 b FA(e)2163 1319 y Fu(V)2241 1304 y F2(is)f(de\002ned)g(for)g FA(V)1687 1459 y(e)1723 1474 y Fu(V)1765 1486 y Fk(G)1812 1459 y Fx(\()q FA(V)6 b Fx(\))92 b F2(else)386 1682 y FA(L)441 1697 y Fu(F)484 1682 y Fx(\()t FA(F)r FB(,)16 b FA(e)654 1697 y Fu(F)696 1682 y FB(,)g FA(e)774 1697 y Fu(F)806 1709 y Fk(G)852 1682 y Fx(\))25 b F2(is)e(de\002ned)h(similarly)h(for)f(functions.)523 1812 y(Hence)k(a)f(complete)i(en)l(vironment)j FA(e)j Ft(2)e FX(En)l(v)27 b F2(is)h(a)f(tuple)h(consisting)j(of)c(the)h (local)g(and)382 1941 y(global)37 b(function)g(en)l(vironment,)h(the)e (local)g(and)g(global)g(v)n(ariable)h(en)l(vironment)i(and)d(the)382 2071 y(store:)1051 2201 y FX(En)l(v)27 b Fx(=)f FX(En)l(v)1484 2216 y Fu(F)1545 2201 y Ft(\002)18 b FX(En)l(v)1790 2216 y Fu(F)1851 2201 y Ft(\002)h FX(En)l(v)2094 2216 y Fu(V)2168 2201 y Ft(\002)g FX(En)l(v)2411 2216 y Fu(V)2485 2201 y Ft(\002)g FX(Sto)382 2385 y F2(T)-7 b(o)39 b(mak)o(e)h(the)g (semantic)h(rules)g(readable,)h(we)d(shall)i(consider)i FA(e)d F2(as)g(a)g(short-hand)j(no-)382 2515 y(tation)37 b(for)g Fx(\()r FA(e)842 2530 y Fu(F)885 2515 y FB(,)16 b FA(e)963 2530 y Fu(F)995 2542 y Fk(G)1040 2515 y FB(,)g FA(e)1115 2530 y Fu(V)1171 2515 y FB(,)g FA(e)1246 2530 y Fu(V)1288 2542 y Fk(G)1334 2515 y FB(,)g FA(s)r(t)r(o)s Fx(\))q F2(,)36 b(and)h(for)f(instance)h(usually)h(just)e(write)h FA(e)2944 2482 y Fr(0)3003 2515 y F2(instead)g(of)383 2645 y Fx(\()r FA(e)459 2660 y Fu(F)502 2645 y FB(,)16 b FA(e)580 2660 y Fu(F)612 2672 y Fk(G)657 2645 y FB(,)g FA(e)732 2660 y Fu(V)788 2645 y FB(,)g FA(e)863 2660 y Fu(V)905 2672 y Fk(G)951 2645 y FB(,)g FA(s)r(t)r(o)1102 2612 y Fr(0)1127 2645 y Fx(\))q F2(.)523 2774 y(T)-7 b(o)18 b(model)i(return)g(statements,)h(we)e(further)h(introduce)j Ft(R)q F2(-tagging)f(of)d(an)g(en)l(vironment,)382 2904 y(written)33 b FA(e)708 2871 y Fr(R)769 2904 y F2(,)e(to)g(mark)g(an)g (en)l(vironment)j(returned)f(by)e(a)g FW(return)d F2(statement)33 b(transition.)382 3034 y(An)o(y)c(statement)j(e)n(v)n(aluated)g(in)d (an)i Ft(R)q F2(-tagged)h(en)l(vironment)h(will)d(then)g(be)g(skipped)i (up)e(to)382 3164 y(the)c(function)j(calling)f(point)f(where)g(the)f (tag)h(is)f(remo)o(v)o(ed)h(from)f(the)h(en)l(vironment)i(and)e(e)n(v-) 382 3294 y(erything)f(proceeds)f(as)f(usual.)382 3560 y FP(3.2.3)99 b(Cr)n(eation)25 b(list)382 3752 y F2(Create)d (statements)h(are)e(collected)j(and)e(e)n(v)o(entually)h(used)f(to)g (instantiate)i(objects)f(for)e(a)g(sim-)382 3882 y(ulation.)26 b(T)-7 b(o)24 b(model)h(the)g(collection)i(process,)g(we)d(de\002ne)h (a)f(creation)j(list)e(to)g(be)f(an)h(ordered)382 4011 y(sequence)30 b(of)d(tuples)i(belonging)i(to)c(the)h(set)f FX(CL)33 b Fx(=)h Fs(N)20 b Ft(\002)g FX(Fun)f Ft(\002)i Fx(\()q FX(Expr)g Ft(\002)g FB(.)c(.)g(.)k Ft(\002)f FX(Expr)q Fx(\))382 4141 y F2(\(number)39 b(of)e(objects)i(and)f (constructor)j(with)c(actual)i(parameters\).)g(The)e(notation)k FA(c)r(l)57 b FB(:)r(:)383 4271 y Fx(\()t FA(x)r FB(,)18 b FA(F)r FB(,)e Fx(\()s FA(E)695 4286 y Fz(1)733 4271 y FB(,)g(.)h(.)g(.)g(,)g FA(E)988 4285 y Fu(n)1030 4271 y Fx(\))r(\))25 b F2(will)e(be)h(used)g(to)f(append)j(a)d(create)h (directi)n(v)o(e)i(to)d(the)h(list)h FA(c)r(l)t F2(.)382 4538 y FP(3.2.4)99 b(Con)l(v)o(ersion)25 b(of)g(literals)382 4729 y F2(An)32 b(auxiliary)j(function)h Ft(V)52 b FB(:)44 b FX(Lit)f Ft(!)h FX(V)-8 b(al)32 b F2(is)h(used)h(to)e(denote)j(con)l (v)o(ersion)h(of)d(syntactic)382 4859 y(literals)25 b(to)f(v)n(alues,)g (thus)h Ft(V)9 b Fx(\()q FW(12)q Fx(\))28 b(=)e FB(12)p F2(,)f Ft(V)9 b Fx(\()q FW(12.3)p Fx(\))27 b(=)g FB(12.3)c F2(and)i Ft(V)9 b Fx(\()q FW(true)q Fx(\))27 b(=)h F0(T)s F2(.)1831 5652 y(29)p eop end %%Page: 30 32 TeXDict begin 30 31 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 382 548 a FS(3.3)119 b(Semantic)30 b(rules)h(f)m(or)e(the)h(language)382 776 y FP(3.3.1)99 b(Expr)n(essions)382 967 y F2(The)19 b(transition)k(system)e(for)f(e)o (xpressions)j(is)d(\()p FX(Expr)c Ft(\002)f FX(En)l(v)h Ft([)f FX(V)-8 b(al)15 b Ft(\002)g FX(En)l(v)q F2(,)20 b Ft(!)q F2(,)f FX(V)-8 b(al)15 b Ft(\002)g FX(En)l(v)p F2(\))382 1097 y(where)25 b Ft(!)f F2(is)f(de\002ned)h(in)g(the)g (follo)n(wing)h(subsections.)382 1360 y FX(Literals)g(and)d (identi\002ers)648 1642 y F2([lit])322 b Ft(h)r FA(C)r FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)q FB(,)16 b FA(e)r Ft(i)292 b F2(where)24 b FA(v)k Fx(=)g Ft(V)9 b Fx(\()r FA(C)s Fx(\))648 1797 y F2([v)n(ar])284 b Ft(h)q FA(V)5 b FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)q FB(,)16 b FA(e)r Ft(i)285 b F2(where)24 b FA(v)k Fx(=)g FA(s)r(t)r(o)s Fx(\()5 b FA(L)2570 1812 y Fu(V)2628 1797 y Fx(\()q FA(V)g FB(,)16 b FA(e)2810 1812 y Fu(V)2867 1797 y FB(,)g FA(e)2942 1812 y Fu(V)2984 1824 y Fk(G)3030 1797 y Fx(\))r(\))382 2214 y FX(Arithmetic)24 b(operators)382 2406 y F2(The)35 b(transition)j(rules)f(for)f(the)g(arithmetic)h(operators)h(implicitly) g(de\002ne)e(rules)g(for)g(both)382 2535 y(\003oating)30 b(point)h(numbers)g(and)f(inte)o(gers,)h(e)o(xcept)g(di)n(vision)g (where)f(the)g(inte)o(ger)h(rule)f(intro-)382 2665 y(duces)25 b(rounding.)h Ft(b)t FA(x)s Ft(c)g F2(is)d(assumed)i(to)e(round)i(to)n (w)o(ards)f(zero.)388 3026 y([plus])901 2965 y Ft(h)s FA(E)994 2980 y Fz(1)1032 2965 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)1373 2980 y Fz(1)1411 2965 y FB(,)16 b FA(e)1487 2932 y Fr(0)1512 2965 y Ft(i)93 b(h)s FA(E)1733 2979 y Fz(2)1771 2965 y FB(,)16 b FA(e)1847 2932 y Fr(0)1872 2965 y Ft(i)27 b(!)h(h)r FA(v)2136 2979 y Fz(2)2174 2965 y FB(,)16 b FA(e)2250 2932 y Fr(0)r(0)2295 2965 y Ft(i)p 900 3005 1432 4 v 1227 3089 a(h)s FA(E)1320 3104 y Fz(1)1358 3089 y FW(+)q FA(E)1469 3103 y Fz(2)1507 3089 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1923 3062 y Fr(0)r(0)1969 3089 y Ft(i)2440 3026 y F2(where)24 b FA(v)k Fx(=)g FA(v)2903 3041 y Fz(1)2959 3026 y Fx(+)20 b FA(v)3096 3040 y Fz(2)388 3276 y F2([minus])901 3214 y Ft(h)s FA(E)994 3229 y Fz(1)1032 3214 y FB(,)c FA(e)r Ft(i)28 b(!)g(h)r FA(v)1373 3229 y Fz(1)1411 3214 y FB(,)16 b FA(e)1487 3181 y Fr(0)1512 3214 y Ft(i)93 b(h)s FA(E)1733 3228 y Fz(2)1771 3214 y FB(,)16 b FA(e)1847 3181 y Fr(0)1872 3214 y Ft(i)27 b(!)h(h)r FA(v)2136 3228 y Fz(2)2174 3214 y FB(,)16 b FA(e)2250 3181 y Fr(0)r(0)2295 3214 y Ft(i)p 900 3255 V 1227 3338 a(h)s FA(E)1320 3353 y Fz(1)1358 3338 y FW(-)q FA(E)1469 3352 y Fz(2)1507 3338 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1923 3312 y Fr(0)r(0)1969 3338 y Ft(i)2440 3276 y F2(where)24 b FA(v)k Fx(=)g FA(v)2903 3291 y Fz(1)2959 3276 y Ft(\000)20 b FA(v)3096 3290 y Fz(2)388 3525 y F2([mult])901 3464 y Ft(h)s FA(E)994 3479 y Fz(1)1032 3464 y FB(,)c FA(e)r Ft(i)28 b(!)g(h)r FA(v)1373 3479 y Fz(1)1411 3464 y FB(,)16 b FA(e)1487 3431 y Fr(0)1512 3464 y Ft(i)93 b(h)s FA(E)1733 3478 y Fz(2)1771 3464 y FB(,)16 b FA(e)1847 3431 y Fr(0)1872 3464 y Ft(i)27 b(!)h(h)r FA(v)2136 3478 y Fz(2)2174 3464 y FB(,)16 b FA(e)2250 3431 y Fr(0)r(0)2295 3464 y Ft(i)p 900 3505 V 1227 3588 a(h)s FA(E)1320 3603 y Fz(1)1358 3588 y FW(*)q FA(E)1469 3602 y Fz(2)1507 3588 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1923 3562 y Fr(0)r(0)1969 3588 y Ft(i)2440 3525 y F2(where)24 b FA(v)k Fx(=)g FA(v)2903 3541 y Fz(1)2942 3525 y FA(v)2988 3539 y Fz(2)388 3775 y F2([\003oat-di)n(v])901 3714 y Ft(h)s FA(E)994 3729 y Fz(1)1032 3714 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)1373 3729 y Fz(1)1411 3714 y FB(,)16 b FA(e)1487 3681 y Fr(0)1512 3714 y Ft(i)93 b(h)s FA(E)1733 3728 y Fz(2)1771 3714 y FB(,)16 b FA(e)1847 3681 y Fr(0)1872 3714 y Ft(i)27 b(!)h(h)r FA(v)2136 3728 y Fz(2)2174 3714 y FB(,)16 b FA(e)2250 3681 y Fr(0)r(0)2295 3714 y Ft(i)p 900 3754 V 1227 3838 a(h)s FA(E)1320 3853 y Fz(1)1358 3838 y FW(/)q FA(E)1469 3852 y Fz(2)1507 3838 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1923 3811 y Fr(0)r(0)1969 3838 y Ft(i)2440 3775 y F2(where)24 b FA(v)k Fx(=)g FA(v)2903 3790 y Fz(1)2942 3775 y FB(/)r FA(v)3045 3789 y Fz(2)388 4025 y F2([int-di)n(v])901 3963 y Ft(h)s FA(E)994 3978 y Fz(1)1032 3963 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)1373 3978 y Fz(1)1411 3963 y FB(,)16 b FA(e)1487 3930 y Fr(0)1512 3963 y Ft(i)93 b(h)s FA(E)1733 3977 y Fz(2)1771 3963 y FB(,)16 b FA(e)1847 3930 y Fr(0)1872 3963 y Ft(i)27 b(!)h(h)r FA(v)2136 3977 y Fz(2)2174 3963 y FB(,)16 b FA(e)2250 3930 y Fr(0)r(0)2295 3963 y Ft(i)p 900 4004 V 1227 4087 a(h)s FA(E)1320 4102 y Fz(1)1358 4087 y FW(/)q FA(E)1469 4101 y Fz(2)1507 4087 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1923 4061 y Fr(0)r(0)1969 4087 y Ft(i)2440 4025 y F2(where)24 b FA(v)k Fx(=)g Ft(b)r FA(v)2945 4040 y Fz(1)2984 4025 y FB(/)r FA(v)3087 4039 y Fz(2)3127 4025 y Ft(c)388 4275 y F2([mod])901 4213 y Ft(h)s FA(E)994 4228 y Fz(1)1032 4213 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)1373 4228 y Fz(1)1411 4213 y FB(,)16 b FA(e)1487 4180 y Fr(0)1512 4213 y Ft(i)93 b(h)s FA(E)1733 4227 y Fz(2)1771 4213 y FB(,)16 b FA(e)1847 4180 y Fr(0)1872 4213 y Ft(i)27 b(!)h(h)r FA(v)2136 4227 y Fz(2)2174 4213 y FB(,)16 b FA(e)2250 4180 y Fr(0)r(0)2295 4213 y Ft(i)p 900 4254 V 1227 4337 a(h)s FA(E)1320 4352 y Fz(1)1358 4337 y FW(\045)q FA(E)1469 4351 y Fz(2)1507 4337 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1923 4311 y Fr(0)r(0)1969 4337 y Ft(i)2440 4275 y F2(where)24 b FA(v)k Fx(=)g FA(v)2903 4290 y Fz(1)2959 4275 y Ft(\000)3050 4147 y Fp(\026)3115 4213 y FA(v)3161 4228 y Fz(1)p 3114 4254 86 4 v 3115 4337 a FA(v)3161 4351 y Fz(2)3210 4147 y Fp(\027)3281 4275 y FA(v)3327 4289 y Fz(2)388 4526 y F2([po)n(wer])901 4464 y Ft(h)s FA(E)994 4479 y Fz(1)1032 4464 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)1373 4479 y Fz(1)1411 4464 y FB(,)16 b FA(e)1487 4431 y Fr(0)1512 4464 y Ft(i)93 b(h)s FA(E)1733 4478 y Fz(2)1771 4464 y FB(,)16 b FA(e)1847 4431 y Fr(0)1872 4464 y Ft(i)27 b(!)h(h)r FA(v)2136 4478 y Fz(2)2174 4464 y FB(,)16 b FA(e)2250 4431 y Fr(0)r(0)2295 4464 y Ft(i)p 900 4505 1432 4 v 1227 4588 a(h)s FA(E)1320 4603 y Fz(1)1358 4588 y FW(\210)q FA(E)1469 4602 y Fz(2)1507 4588 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1923 4562 y Fr(0)r(0)1969 4588 y Ft(i)2440 4526 y F2(where)24 b FA(v)k Fx(=)g FA(v)2904 4483 y Fu(v)2938 4494 y Fl(2)2903 4555 y Fz(1)388 4775 y F2([un-minus])925 4714 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)1363 4681 y Fr(0)1387 4714 y FB(,)16 b FA(e)1463 4681 y Fr(0)1488 4714 y Ft(i)p 900 4755 649 4 v 901 4838 a(h)r(\000)s FA(E)q FB(,)g FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)1486 4812 y Fr(0)1512 4838 y Ft(i)2440 4775 y F2(where)24 b FA(v)k Fx(=)g Ft(\000)r FA(v)2977 4738 y Fr(0)388 5025 y F2([paren])956 4964 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)1468 4931 y Fr(0)1494 4964 y Ft(i)p 900 5004 685 4 v 901 5087 a(h)q FW(\()r FA(E)q FW(\))p FB(,)g FA(e)r Ft(i)28 b(!)g(h)r FA(v)q FB(,)16 b FA(e)1523 5061 y Fr(0)1548 5087 y Ft(i)1831 5652 y F2(30)p eop end %%Page: 31 33 TeXDict begin 31 32 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 523 548 a F2(Note)29 b(that)g(the)g (rules)h(e)n(v)n(aluate)g(the)f(leftmost)h(operand)h(\002rst,)d(which)h (may)f(change)j(the)382 678 y(en)l(vironment)c(\(by)c(changing)j(the)e (store\))h(for)f(the)g(rightmost)h(operand.)382 941 y FX(Pr)n(obabilistic)g(operators)382 1132 y F2(The)c(outcomes)j(of)d (the)h(probabilistic)k(rules)c(are)g(dra)o(wn)g(from)f(linearly)j (distrib)n(uted)h(sources)382 1262 y(in)e(the)h(gi)n(v)o(en)g(interv)n (als.)655 1623 y([\003oat-rand])1369 1561 y Ft(h)s FA(E)1462 1576 y Fz(1)1499 1561 y FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)1840 1576 y Fz(1)1879 1561 y FB(,)16 b FA(e)1955 1528 y Fr(0)1979 1561 y Ft(i)94 b(h)s FA(E)2201 1575 y Fz(2)2239 1561 y FB(,)16 b FA(e)2315 1528 y Fr(0)2339 1561 y Ft(i)28 b(!)f(h)r FA(v)2603 1575 y Fz(2)2642 1561 y FB(,)16 b FA(e)2718 1528 y Fr(0)r(0)2763 1561 y Ft(i)p 1368 1602 1432 4 v 1640 1685 a(h)s FA(E)1733 1700 y Fz(1)1771 1685 y FW(...)p FA(E)1991 1699 y Fz(2)2029 1685 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2445 1659 y Fr(0)r(0)2491 1685 y Ft(i)1448 1832 y F2(where)25 b FA(v)j Ft(2)f Fx([)r FA(v)1928 1847 y Fz(1)1967 1832 y FB(;)16 b FA(v)2052 1846 y Fz(2)2091 1832 y Fx([)655 2035 y F2([int-rand])1369 1974 y Ft(h)s FA(E)1462 1989 y Fz(1)1499 1974 y FB(,)g FA(e)r Ft(i)29 b(!)e(h)r FA(v)1840 1989 y Fz(1)1879 1974 y FB(,)16 b FA(e)1955 1941 y Fr(0)1979 1974 y Ft(i)94 b(h)s FA(E)2201 1988 y Fz(2)2239 1974 y FB(,)16 b FA(e)2315 1941 y Fr(0)2339 1974 y Ft(i)28 b(!)f(h)r FA(v)2603 1988 y Fz(2)2642 1974 y FB(,)16 b FA(e)2718 1941 y Fr(0)r(0)2763 1974 y Ft(i)p 1368 2014 V 1640 2098 a(h)s FA(E)1733 2113 y Fz(1)1771 2098 y FW(...)p FA(E)1991 2112 y Fz(2)2029 2098 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2445 2071 y Fr(0)r(0)2491 2098 y Ft(i)1448 2244 y F2(where)25 b FA(v)j Ft(2)f(f)r FA(v)1948 2259 y Fz(1)1987 2244 y FB(,)16 b(.)h(.)g(.)f(,)g FA(v)2230 2258 y Fz(2)2269 2244 y Ft(g)523 2620 y F2(The)34 b(multiple-choice)k(operator)f(e)n(v)n(aluates)f(the)f(leftmost)g (operand)i(\(the)e(weight\))g(of)382 2750 y(each)j(colon)g(pair)g(in)f (turn,)g(chooses)i(a)e(pair)h FA(i)g F2(with)f(probability)47 b FA(p)2642 2766 y Fu(i)2702 2750 y F2(and)37 b(e)n(v)n(aluates)i(and) 382 2880 y(returns)25 b(the)f(v)n(alue)g(of)g(the)g(rightmost)h (operand)g(of)f(that)g(pair)-5 b(.)382 3253 y([mult-choice])986 3178 y Ft(h)s FA(E)1080 3192 y Fu(w)1132 3205 y Fk(j)1154 3178 y FB(,)16 b FA(e)1232 3194 y Fu(j)r Fr(\000)q Fz(1)1343 3178 y Ft(i)28 b(!)f(h)r FA(w)1631 3194 y Fu(j)1655 3178 y FB(,)16 b FA(e)1733 3194 y Fu(j)1757 3178 y Ft(i)25 b F2(for)i FA(j)h Fx(=)e FB(1,)16 b(.)h(.)g(.)g(,)f FA(n)93 b Ft(h)s FA(E)2580 3192 y Fu(v)2615 3205 y Fk(i)2638 3178 y FB(,)16 b FA(e)2714 3192 y Fu(n)2756 3178 y Ft(i)28 b(!)g(h)r FA(v)3022 3194 y Fu(i)3046 3178 y FB(,)16 b FA(e)3122 3193 y Fu(n)r Fj(+)q Fz(1)3251 3178 y Ft(i)p 985 3232 2304 4 v 1342 3316 a(h)s FA(E)1436 3330 y Fu(w)1485 3342 y Fl(1)1544 3316 y FB(:)28 b FA(E)1651 3330 y Fu(v)1685 3342 y Fl(1)1734 3316 y Ft(j)17 b FB(.)g(.)g(.)h Ft(j)g FA(E)1996 3330 y Fu(w)2046 3340 y Fk(n)2109 3316 y FB(:)28 b FA(E)2216 3330 y Fu(v)2251 3340 y Fk(n)2287 3316 y FB(,)16 b FA(e)2362 3330 y Fz(0)2400 3316 y Ft(i)28 b(!)g(h)r FA(v)2666 3332 y Fu(i)2690 3316 y FB(,)16 b FA(e)2766 3331 y Fu(n)r Fj(+)q Fz(1)2895 3316 y Ft(i)1066 3514 y F2(where)30 b FA(p)1364 3530 y Fu(i)1414 3514 y Fx(=)d FA(w)1580 3530 y Fu(i)1604 3514 y FB(/)1711 3416 y Fu(n)1681 3533 y Fo(\345)1678 3611 y Fu(j)r Fj(=)q Fz(1)1800 3514 y FA(w)1870 3530 y Fu(j)382 4025 y FX(Relational)e(operators)685 4336 y F2([equals])1308 4275 y Ft(h)s FA(E)1401 4290 y Fz(1)1439 4275 y FB(,)16 b FA(e)r Ft(i)28 b(!)f(h)r FA(v)1779 4290 y Fz(1)1818 4275 y FB(,)16 b FA(e)1894 4242 y Fr(0)1919 4275 y Ft(i)93 b(h)s FA(E)2140 4289 y Fz(2)2178 4275 y FB(,)16 b FA(e)2254 4242 y Fr(0)2279 4275 y Ft(i)27 b(!)h(h)r FA(v)2543 4289 y Fz(2)2581 4275 y FB(,)16 b FA(e)2657 4242 y Fr(0)r(0)2702 4275 y Ft(i)p 1307 4315 1432 4 v 1607 4399 a(h)s FA(E)1700 4414 y Fz(1)1737 4399 y FW(==)q FA(E)1903 4413 y Fz(2)1941 4399 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2357 4372 y Fr(0)r(0)2403 4399 y Ft(i)1388 4641 y F2(where)25 b FA(v)j Fx(=)1805 4454 y Fp(8)1805 4536 y(<)1805 4700 y(:)1889 4571 y F0(T)94 b F2(if)24 b FA(v)2152 4586 y Fz(1)2216 4571 y Fx(=)j FA(v)2360 4585 y Fz(2)1889 4727 y F0(F)98 b F2(else)382 5127 y(W)-7 b(e)24 b(de\002ne)h(the)h(rules)f ([not-equals],)k([less-than],)e([greater)n(-than],)i ([less-than-equals])h(and)382 5257 y([greater)n(-than-equal)q(s])k(in) 29 b(the)g(same)f(manner)l(,)i(replacing)h FW(==)c F2(and)j Fx(=)f F2(with)f FW(!=)f F2(and)j Ft(6)r Fx(=)q F2(,)e FW(<)382 5387 y F2(and)d FC(<)q F2(,)d(etc.)1831 5652 y(31)p eop end %%Page: 32 34 TeXDict begin 32 33 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 382 548 a FX(Boolean)24 b(operators)382 739 y F2(Since)j(the)h(syntax)h(of)e(our)h(language)h (is)e(close)h(to)g(the)f(C)f(f)o(amily)i(of)f(languages,)j(we)d (de\002ne)382 869 y(the)32 b(semantics)h(of)f(the)g(boolean)h (operators)h(to)e(be)f(short-circuiting)37 b(to)31 b(a)n(v)n(oid)i (confusion.)382 999 y(The)24 b([and-sc])j(and)f(the)f([or)n(-sc])i (rules)f(short-circuit)i(the)e(cases)g(where)f(the)g(\002rst)g(operand) i(is)384 1129 y F0(F)f F2(and)h F0(T)r F2(,)e(respecti)n(v)o(ely)-6 b(,)27 b(so)d(that)h(the)g(outcome)h(of)e(the)h([and])g(and)g([or])g (rules)g(is)g(determined)382 1259 y(by)f(the)f(second)j(operand)f (\(e.g.)g F0(T)d Ft(^)e F0(F)30 b Fx(=)e F0(F)d F2(and)h F0(T)c Ft(^)e F0(T)30 b Fx(=)e F0(T)s F2(\).)547 1509 y([and-sc])1117 1448 y Ft(h)s FA(E)1210 1463 y Fz(1)1248 1448 y FB(,)16 b FA(e)r Ft(i)28 b(!)f(h)r FA(v)1588 1463 y Fz(1)1627 1448 y FB(,)16 b FA(e)1703 1415 y Fr(0)1728 1448 y Ft(i)p 1034 1488 812 4 v 1035 1572 a(h)s FA(E)1128 1587 y Fz(1)1166 1572 y FW(&&)q FA(E)1332 1586 y Fz(2)1369 1572 y FB(,)g FA(e)r Ft(i)29 b(!)e(h)s F0(F)t FB(,)16 b FA(e)1785 1545 y Fr(0)1809 1572 y Ft(i)2655 1509 y F2(if)25 b FA(v)2781 1524 y Fz(1)2845 1509 y Fx(=)j F0(F)547 1759 y F2([and])1035 1697 y Ft(h)s FA(E)1128 1712 y Fz(1)1166 1697 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)1507 1712 y Fz(1)1545 1697 y FB(,)16 b FA(e)1621 1664 y Fr(0)1646 1697 y Ft(i)93 b(h)s FA(E)1867 1711 y Fz(2)1905 1697 y FB(,)16 b FA(e)1981 1664 y Fr(0)2006 1697 y Ft(i)28 b(!)f(h)r FA(v)2270 1711 y Fz(2)2309 1697 y FB(,)16 b FA(e)2385 1664 y Fr(0)r(0)2429 1697 y Ft(i)p 1034 1738 1432 4 v 1315 1821 a(h)s FA(E)1408 1836 y Fz(1)1446 1821 y FW(&&)q FA(E)1612 1835 y Fz(2)1649 1821 y FB(,)g FA(e)r Ft(i)29 b(!)e(h)r FA(v)1990 1835 y Fz(2)2029 1821 y FB(,)16 b FA(e)2105 1795 y Fr(0)r(0)2149 1821 y Ft(i)2655 1759 y F2(if)25 b FA(v)2781 1774 y Fz(1)2845 1759 y Fx(=)j F0(T)547 2009 y F2([or)n(-sc])1119 1947 y Ft(h)s FA(E)1212 1962 y Fz(1)1250 1947 y FB(,)16 b FA(e)r Ft(i)28 b(!)f(h)r FA(v)1590 1962 y Fz(1)1629 1947 y FB(,)16 b FA(e)1705 1914 y Fr(0)1730 1947 y Ft(i)p 1034 1988 816 4 v 1035 2071 a(h)s FA(E)1128 2086 y Fz(1)1166 2071 y FW(||)q FA(E)1332 2085 y Fz(2)1369 2071 y FB(,)g FA(e)r Ft(i)29 b(!)e(h)s F0(T)t FB(,)16 b FA(e)1789 2045 y Fr(0)1813 2071 y Ft(i)2655 2009 y F2(if)25 b FA(v)2781 2024 y Fz(1)2845 2009 y Fx(=)j F0(T)547 2258 y F2([or])1035 2197 y Ft(h)s FA(E)1128 2212 y Fz(1)1166 2197 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)1507 2212 y Fz(1)1545 2197 y FB(,)16 b FA(e)1621 2164 y Fr(0)1646 2197 y Ft(i)93 b(h)s FA(E)1867 2211 y Fz(2)1905 2197 y FB(,)16 b FA(e)1981 2164 y Fr(0)2006 2197 y Ft(i)28 b(!)f(h)r FA(v)2270 2211 y Fz(2)2309 2197 y FB(,)16 b FA(e)2385 2164 y Fr(0)r(0)2429 2197 y Ft(i)p 1034 2237 1432 4 v 1315 2321 a(h)s FA(E)1408 2336 y Fz(1)1446 2321 y FW(||)q FA(E)1612 2335 y Fz(2)1649 2321 y FB(,)g FA(e)r Ft(i)29 b(!)e(h)r FA(v)1990 2335 y Fz(2)2029 2321 y FB(,)16 b FA(e)2105 2294 y Fr(0)r(0)2149 2321 y Ft(i)2655 2258 y F2(if)25 b FA(v)2781 2273 y Fz(1)2845 2258 y Fx(=)j F0(F)547 2508 y F2([not])1050 2446 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)1488 2413 y Fr(0)1512 2446 y FB(,)16 b FA(e)1588 2413 y Fr(0)1613 2446 y Ft(i)p 1034 2487 631 4 v 1035 2570 a(h)q FW(!)r FA(E)q FB(,)g FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)1602 2544 y Fr(0)1628 2570 y Ft(i)2655 2508 y F2(where)25 b FA(v)j Fx(=)f Ft(:)r FA(v)3182 2470 y Fr(0)382 2980 y FX(Function)22 b(calls)382 3171 y F2(Function)f(call)f(e)o(xpressions)j(are)d (computed)h(by)f(e)n(v)n(aluating)i(each)e(of)g(the)g(actual)h (parameters)382 3301 y(\(which)i(are)h(e)o(xpressions,)h(not)f(v)n (ariables)h(since)f(parameters)h(are)e(passed)h(by)f(v)n(alue\))h(in)f (turn)382 3431 y(from)32 b(left)h(to)f(right,)h(possibly)h(modifying)g (the)f(store.)g(Then)f(the)g(function)j(body)e(and)g(the)382 3561 y(function)26 b(and)e(v)n(ariable)i(en)l(vironments)h(at)c(the)h (time)g(of)g(the)g(de\002nition)h(of)f(the)g(function)i(are)382 3691 y(look)o(ed)36 b(up,)e(and)g(the)h(function)h(body)f(is)f(e)o(x)o (ecuted)h(with)f(slight)i(modi\002cations)g(of)e(these)382 3820 y(en)l(vironments)27 b(and)d(the)g(store)g(from)g(the)f(e)n(v)n (aluation)j(of)e(the)g(last)g(actual)g(parameter)-5 b(.)523 3950 y(The)33 b(function)j(en)l(vironment)h(is)c(modi\002ed)i(to)e (include)j(the)e(de\002nition)h(of)f(the)g(called)382 4080 y(function)21 b(to)d(allo)n(w)g(recursion,)j(and)e(the)g(v)n (ariable)h(en)l(vironment)i(and)d(the)f(store)i(are)e(modi\002ed)382 4210 y(to)h(bind)h(the)f(formal)h(parameters)h(to)e(the)h(v)n(alues)g (of)f(the)g(actual)i(parameter)f(e)o(xpressions.)i(The)382 4340 y(locations)k(to)d(bind)i(these)f(to)g(are)f(found)i(by)f (repeated)i(use)d(of)h(ne)o(xt.)523 4470 y(The)i(v)n(alue)h(of)g(the)g (function)h(call)f(e)o(xpression)i(is)e(\002nally)g(found)g(by)g (looking)h(up)f(retv)n(al)382 4599 y(in)32 b(the)h(store)h(returned)h (from)d(the)h(computation)i(of)e(the)g(function)h(body)g(\226)e(the)h (transition)382 4729 y(system)24 b(for)g(computing)i(statements)f(is)e (de\002ned)i(in)e(Section)i(3.3.2.)1831 5652 y(32)p eop end %%Page: 33 35 TeXDict begin 33 34 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 382 773 a F2([fcall-)q Ft(R)q F2(])823 704 y Ft(h)s FA(E)916 720 y Fz(1)953 704 y FB(,)16 b FA(e)1028 720 y Fz(1)1067 704 y Ft(i)28 b(!)f(h)r FA(v)1331 720 y Fz(1)1370 704 y FB(,)16 b FA(e)1445 718 y Fz(2)1483 704 y Ft(i)109 b FB(.)17 b(.)g(.)108 b Ft(h)s FA(E)1932 718 y Fu(n)1974 704 y FB(,)16 b FA(e)2050 718 y Fu(n)2093 704 y Ft(i)28 b(!)f(h)r FA(v)2358 718 y Fu(n)2401 704 y FB(,)16 b FA(e)2477 720 y Fu(n)r Fj(+)q Fz(1)2607 704 y Ft(i)93 b(h)r FA(S)q FB(,)16 b FA(e)2900 671 y Fr(0)2900 732 y Fu(n)r Fj(+)q Fz(1)3030 704 y Ft(i)28 b(!)f FA(e)3248 671 y Fr(R)3247 727 y Fu(r)p 822 752 2489 4 v 1476 836 a Ft(h)t FA(F)r FW(\()r FA(E)1680 851 y Fz(1)1718 836 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)1972 850 y Fu(n)2014 836 y FW(\);)o FB(,)f FA(e)2198 851 y Fz(1)2236 836 y Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2585 853 y Fu(f)2619 836 y Ft(i)903 996 y F2(where)24 b FA(c)k Fx(=)f(\()r FA(S)q FB(,)16 b Fx(\()q FA(V)1532 1011 y Fz(1)1570 996 y FB(,)g(.)h(.)g(.)f(,)f FA(V)1824 1010 y Fu(n)1866 996 y Fx(\))q FB(,)h FA(e)1978 958 y Fr(0)1980 1019 y Fu(F)2023 996 y FB(,)g FA(e)2099 958 y Fr(0)2098 1019 y Fu(V)2155 996 y Fx(\))28 b(=)i FA(L)2374 1011 y Fu(F)2416 996 y Fx(\()t FA(F)r FB(,)16 b FA(e)2586 1011 y Fu(F)2617 1023 y Fl(1)2651 996 y FB(,)g FA(e)2729 1011 y Fu(F)2761 1023 y Fk(G)2807 996 y Fx(\))903 1150 y F2(and)25 b FA(e)1095 1113 y Fr(0)1095 1174 y Fu(n)r Fj(+)q Fz(1)1249 1150 y Fx(=)i(\()r FA(e)1421 1113 y Fr(0)1423 1173 y Fu(F)1467 1150 y Fx([)t FA(F)i Ft(7)r(!)f FA(c)r Fx(])q FB(,)16 b FA(e)1840 1165 y Fu(F)1872 1177 y Fk(G)1918 1150 y FB(,)g FA(e)1994 1113 y Fr(0)1993 1173 y Fu(V)2049 1150 y Fx([)q FA(V)2132 1165 y Fz(1)2196 1150 y Ft(7)r(!)28 b FA(l)2343 1165 y Fz(1)2380 1150 y FB(,)16 b(.)h(.)g(.)g(,)e FA(V)2635 1164 y Fu(n)2702 1150 y Ft(7)r(!)28 b FA(l)2850 1164 y Fu(n)2893 1150 y Fx(])q FB(,)16 b FA(e)2994 1165 y Fu(V)3036 1177 y Fk(G)3082 1150 y FB(,)2085 1305 y FA(s)r(t)r(o)2196 1320 y Fu(n)r Fj(+)q Fz(1)2327 1305 y Fx([)r FA(l)2380 1320 y Fz(1)2444 1305 y Ft(7)r(!)28 b FA(v)2611 1320 y Fz(1)2649 1305 y FB(,)16 b(.)h(.)g(.)f(,)g FA(l)2873 1319 y Fu(n)2941 1305 y Ft(7)r(!)28 b FA(v)3109 1319 y Fu(n)3152 1305 y Fx(])r(\))994 1460 y F2(where)c FA(l)1265 1475 y Fz(1)1329 1460 y Fx(=)i F2(ne)o(xt)q FB(,)16 b(.)h(.)g(.)g(,)f FA(l)1806 1474 y Fu(n)1874 1460 y Fx(=)26 b F2(ne)o(xt)903 1615 y(and)f FA(e)1104 1632 y Fu(f)1162 1615 y Fx(=)i(\()r FA(e)1336 1630 y Fu(F)1367 1642 y Fl(1)1401 1615 y FB(,)16 b FA(e)1479 1630 y Fu(F)1511 1642 y Fk(G)1556 1615 y FB(,)g FA(e)1631 1630 y Fu(V)1672 1642 y Fl(1)1705 1615 y FB(,)g FA(e)1780 1630 y Fu(V)1822 1642 y Fk(G)1868 1615 y FB(,)g FA(s)r(t)r(o)2017 1629 y Fu(r)2052 1615 y Fx(\))24 b F2(and)h FA(v)j Fx(=)f FA(s)r(t)r(o)2547 1629 y Fu(r)2581 1615 y Fx(\()q F2(retv)n(al)t Fx(\))382 2032 y FP(3.3.2)99 b(Statements)382 2224 y F2(The)27 b(transition)k(system)d(for)g(statements)i(is)e(\()p FX(Stat)21 b Ft(\002)f FX(En)l(v)h Ft([)f FX(En)l(v)p F2(,)27 b Ft(!)q F2(,)g FX(En)l(v)p F2(\))h(where)h Ft(!)f F2(is)382 2354 y(de\002ned)c(in)g(the)g(follo)n(wing)h(subsections.)382 2613 y FX(V)-8 b(ariable)24 b(modi\002cation)571 2887 y F2([assign])1375 2823 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b Fx(\()r FA(e)1927 2838 y Fu(F)1971 2823 y FB(,)g FA(e)2049 2838 y Fu(F)2081 2850 y Fk(G)2126 2823 y FB(,)g FA(e)2201 2838 y Fu(V)2257 2823 y FB(,)g FA(e)2332 2838 y Fu(V)2374 2850 y Fk(G)2420 2823 y FB(,)g FA(s)r(t)r(o)2571 2790 y Fr(0)2596 2823 y Fx(\))r Ft(i)p 1225 2866 1595 4 v 1226 2949 a(h)q FA(V)5 b FW(=)r FA(E)q FW(;)p FB(,)16 b FA(e)r Ft(i)28 b(!)g Fx(\()r FA(e)1836 2964 y Fu(F)1878 2949 y FB(,)16 b FA(e)1956 2964 y Fu(F)1988 2976 y Fk(G)2034 2949 y FB(,)g FA(e)2109 2964 y Fu(V)2165 2949 y FB(,)g FA(e)2240 2964 y Fu(V)2282 2976 y Fk(G)2327 2949 y FB(,)g FA(s)r(t)r(o)2478 2923 y Fr(0)2504 2949 y Fx([)r FA(l)31 b Ft(7)r(!)d FA(v)r Fx(])r(\))1306 3101 y F2(where)d FA(l)31 b Fx(=)f FA(L)1761 3116 y Fu(V)1817 3101 y Fx(\()q FA(V)5 b FB(,)16 b FA(e)1999 3116 y Fu(V)2055 3101 y FB(,)g FA(e)2130 3116 y Fu(V)2172 3128 y Fk(G)2219 3101 y Fx(\))571 3256 y F2([increment])224 b Ft(h)q FW(++)p FA(V)5 b FW(;)o FB(,)16 b FA(e)r Ft(i)29 b(!)e Fx(\()r FA(e)1821 3271 y Fu(F)1864 3256 y FB(,)16 b FA(e)1942 3271 y Fu(F)1974 3283 y Fk(G)2019 3256 y FB(,)g FA(e)2094 3271 y Fu(V)2150 3256 y FB(,)g FA(e)2225 3271 y Fu(V)2267 3283 y Fk(G)2313 3256 y FB(,)g FA(s)r(t)r(o)s Fx([)r FA(l)32 b Ft(7)r(!)c FA(v)r Fx(])r(\))1306 3410 y F2(where)d FA(l)31 b Fx(=)f FA(L)1761 3425 y Fu(V)1817 3410 y Fx(\()q FA(V)5 b FB(,)16 b FA(e)1999 3425 y Fu(V)2055 3410 y FB(,)g FA(e)2130 3425 y Fu(V)2172 3437 y Fk(G)2219 3410 y Fx(\))25 b F2(and)g FA(v)j Fx(=)f FA(s)r(t)r(o)s Fx(\()r FA(l)5 b Fx(\))22 b(+)d FB(1)571 3565 y F2([decrement])209 b Ft(h)q FW(-)8 b(-)p FA(V)d FW(;)p FB(,)16 b FA(e)r Ft(i)28 b(!)f Fx(\()r FA(e)1829 3580 y Fu(F)1872 3565 y FB(,)16 b FA(e)1950 3580 y Fu(F)1982 3592 y Fk(G)2027 3565 y FB(,)g FA(e)2102 3580 y Fu(V)2158 3565 y FB(,)g FA(e)2233 3580 y Fu(V)2275 3592 y Fk(G)2321 3565 y FB(,)g FA(s)r(t)r(o)s Fx([)r FA(l)33 b Ft(7)r(!)27 b FA(v)r Fx(])r(\))1306 3720 y F2(where)e FA(l)31 b Fx(=)f FA(L)1761 3735 y Fu(V)1817 3720 y Fx(\()q FA(V)5 b FB(,)16 b FA(e)1999 3735 y Fu(V)2055 3720 y FB(,)g FA(e)2130 3735 y Fu(V)2172 3747 y Fk(G)2219 3720 y Fx(\))25 b F2(and)g FA(v)j Fx(=)f FA(s)r(t)r(o)s Fx(\()r FA(l)5 b Fx(\))22 b Ft(\000)d FB(1)382 4134 y FX(Conditionals)589 4406 y F2([if-true])1311 4344 y Ft(h)s FA(E)q FB(,)d FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1824 4311 y Fr(0)1850 4344 y Ft(i)93 b(h)r FA(S)q FB(,)16 b FA(e)2143 4311 y Fr(0)2168 4344 y Ft(i)28 b(!)f FA(e)2386 4311 y Fr(0)r(0)p 1310 4385 1120 4 v 1518 4468 a Ft(h)q FW(if\()q FA(E)q FW(\))q FA(S)q FB(,)16 b FA(e)r Ft(i)28 b(!)f FA(e)2179 4442 y Fr(0)r(0)2699 4406 y F2(where)d FA(v)k Fx(=)h F0(T)589 4656 y F2([if-f)o(alse])1366 4594 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1879 4561 y Fr(0)1905 4594 y Ft(i)p 1310 4635 687 4 v 1311 4718 a(h)q FW(if\()q FA(E)q FW(\))q FA(S)q FB(,)g FA(e)r Ft(i)28 b(!)g FA(e)1973 4692 y Fr(0)2699 4656 y F2(where)c FA(v)k Fx(=)h F0(F)589 4905 y F2([if-else-true])1311 4844 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1824 4811 y Fr(0)1850 4844 y Ft(i)93 b(h)r FA(S)2066 4859 y Fz(1)2104 4844 y FB(,)16 b FA(e)2180 4811 y Fr(0)2204 4844 y Ft(i)28 b(!)g FA(e)2423 4811 y Fr(0)r(0)p 1310 4884 1157 4 v 1349 4968 a Ft(h)q FW(if\()q FA(E)q FW(\))q FA(S)1715 4983 y Fz(1)1767 4968 y FW(else)15 b FA(S)2053 4982 y Fz(2)2090 4968 y FB(,)h FA(e)r Ft(i)28 b(!)g FA(e)2385 4941 y Fr(0)r(0)2699 4905 y F2(where)c FA(v)k Fx(=)h F0(T)589 5155 y F2([if-else-f)o(alse])1311 5093 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1824 5060 y Fr(0)1850 5093 y Ft(i)93 b(h)r FA(S)2066 5107 y Fz(2)2104 5093 y FB(,)16 b FA(e)2180 5060 y Fr(0)2204 5093 y Ft(i)28 b(!)g FA(e)2423 5060 y Fr(0)r(0)p 1310 5134 V 1349 5217 a Ft(h)q FW(if\()q FA(E)q FW(\))q FA(S)1715 5232 y Fz(1)1767 5217 y FW(else)15 b FA(S)2053 5231 y Fz(2)2090 5217 y FB(,)h FA(e)r Ft(i)28 b(!)g FA(e)2385 5191 y Fr(0)r(0)2699 5155 y F2(where)c FA(v)k Fx(=)h F0(F)1831 5652 y F2(33)p eop end %%Page: 34 36 TeXDict begin 34 35 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 382 548 a FX(Looping)464 859 y F2([while-true])1037 797 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)1549 764 y Fr(0)1575 797 y Ft(i)94 b(h)r FA(S)q FB(,)16 b FA(e)1869 764 y Fr(0)1894 797 y Ft(i)28 b(!)f FA(e)2112 764 y Fr(0)r(0)2247 797 y Ft(h)q FW(while\()p FA(E)q FW(\))q FA(S)q FB(,)16 b FA(e)2854 764 y Fr(0)r(0)2898 797 y Ft(i)28 b(!)g FA(e)3117 764 y Fr(0)r(0)r(0)p 1036 838 2145 4 v 1664 921 a Ft(h)q FW(while\()p FA(E)q FW(\))q FA(S)q FB(,)16 b FA(e)r Ft(i)28 b(!)f FA(e)2489 895 y Fr(0)r(0)r(0)1117 1068 y F2(where)e FA(v)j Fx(=)g F0(T)464 1272 y F2([while-f)o(alse])1174 1210 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)1686 1177 y Fr(0)1712 1210 y Ft(i)p 1036 1251 850 4 v 1037 1334 a(h)q FW(while\()p FA(E)q FW(\))q FA(S)q FB(,)g FA(e)r Ft(i)28 b(!)f FA(e)1862 1308 y Fr(0)1117 1481 y F2(where)e FA(v)j Fx(=)g F0(F)382 1898 y FX(Blocks)382 2089 y F2(A)f(block)i(statement)h(is)e(computed)h(by)g(e)n(v)n (aluating)h(each)f(of)f(the)g(contained)j(statements)f(in)382 2219 y(turn,)25 b(possibly)i(modifying)f(the)f(v)n(ariable)h(en)l (vironment)i(and)d(the)f(store,)i(and)f(at)f(last)h(reco)o(v-)382 2349 y(ering)f(the)g(original)i(v)n(ariable)f(en)l(vironment.)552 2700 y([block])1011 2639 y Ft(h)r FA(S)1099 2654 y Fz(1)1136 2639 y FB(,)16 b FA(e)1211 2654 y Fz(1)1250 2639 y Ft(i)28 b(!)f FA(e)1467 2653 y Fz(2)1597 2639 y Ft(h)r FA(S)1685 2653 y Fz(2)1722 2639 y FB(,)16 b FA(e)1797 2653 y Fz(2)1836 2639 y Ft(i)28 b(!)f FA(e)2053 2653 y Fz(3)2198 2639 y FB(.)17 b(.)g(.)108 b Ft(h)r FA(S)2498 2653 y Fu(n)2540 2639 y FB(,)16 b FA(e)2616 2653 y Fu(n)2659 2639 y Ft(i)28 b(!)f FA(e)2877 2654 y Fu(n)r Fj(+)q Fz(1)p 1010 2679 1996 4 v 1121 2762 a Ft(h)q FW({)q FA(S)1264 2778 y Fz(1)1302 2762 y FA(S)1353 2776 y Fz(2)1406 2762 y FB(.)17 b(.)g(.)h FA(S)1579 2776 y Fu(n)1621 2762 y FW(})o FB(,)e FA(e)1750 2778 y Fz(1)1789 2762 y Ft(i)27 b(!)h Fx(\()r FA(e)2046 2777 y Fu(F)2077 2789 y Fl(1)2110 2762 y FB(,)16 b FA(e)2188 2777 y Fu(F)2220 2789 y Fk(G)2266 2762 y FB(,)g FA(e)2341 2777 y Fu(V)2382 2789 y Fl(1)2415 2762 y FB(,)g FA(e)2490 2777 y Fu(V)2532 2789 y Fk(G)2578 2762 y FB(,)g FA(s)r(t)r(o)2728 2778 y Fu(n)r Fj(+)q Fz(1)2859 2762 y Fx(\))382 3177 y FX(V)-8 b(ariable)24 b(de\002nitions)382 3368 y F2(T)-7 b(o)20 b(simplify)i(the)g(semantic)g(speci\002cation,)i(we)c(consider)j (only)f(v)n(ariable)h(de\002nitions)g(on)f(the)382 3498 y(form:)659 3706 y(v)n(ariable-de\002nition)128 b(::=)100 b([)p FW(const)p F2(])21 b(typename)k(identi\002er)g([)p FW(=)e F2(e)o(xpression])p FX(;)382 3907 y F2(De\002nitions)31 b(of)f(multiple)h(v)n(ariables)h(in)d(one)i(v)n(ariable)g (de\002nition,)h(i.e.)d(de\002nitions)j(on)e(the)382 4037 y(form)659 4212 y(v)n(ariable-de\002nition)128 b(::=)100 b([)p FW(const)p F2(])21 b(typename)k(identi\002er)g([)p FW(=)e F2(e)o(xpression])1911 4342 y(\()p FX(,)g F2(identi\002er)i([)p FW(=)d F2(e)o(xpression]\))2890 4309 y Fv(?)2932 4342 y FX(;)382 4526 y F2(are)i(simply)h(considered)i(shorthand)g(for)d(a)g (series)h(of)f(de\002nition)i(on)e(the)g(\002rst)g(form.)g(Hence,)382 4655 y(a)f(statement)i(such)g(as)495 4820 y FR(i)13 b(n)g(t)69 b FY(a)58 b(=)50 b(1)15 b(2)30 b(,)53 b(b)24 b(,)66 b(c)57 b(=)51 b(8)14 b(7)g(;)382 4999 y F2(shall)24 b(be)g(re)n(written)h(to) 495 5164 y FR(i)13 b(n)g(t)69 b FY(a)57 b(=)51 b(1)14 b(2)g(;)495 5278 y FR(i)f(n)g(t)67 b FY(b)17 b(;)495 5393 y FR(i)c(n)g(t)69 b FY(c)57 b(=)51 b(8)14 b(7)g(;)1831 5652 y F2(34)p eop end %%Page: 35 37 TeXDict begin 35 36 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 523 548 a F2(Thus)24 b(v)n(ariable)h (de\002nition)g(statements)h(are)d(co)o(v)o(ered)i(by)f(the)g(follo)n (wing)h(rules.)382 769 y([v)n(ar)n(-stat])192 b Ft(h)q F2([)p FW(const)p F2(])22 b FD(t)k FA(V)5 b FW(;)o FB(,)16 b FA(e)r Ft(i)29 b(!)e Fx(\()r FA(e)1826 784 y Fu(F)1869 769 y FB(,)16 b FA(e)1947 784 y Fu(F)1979 796 y Fk(G)2024 769 y FB(,)g FA(e)2099 784 y Fu(V)2156 769 y Fx([)q FA(V)32 b Ft(7)r(!)27 b FA(l)5 b Fx(])q FB(,)16 b FA(e)2531 784 y Fu(V)2573 796 y Fk(G)2620 769 y FB(,)g FA(s)r(t)r(o)s Fx(\))990 924 y F2(where)24 b FA(l)31 b Fx(=)26 b F2(ne)o(xt)382 1127 y([v)n(ar)n(-stat-)r FA(E)q F2(])1808 1066 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)2320 1033 y Fr(0)2346 1066 y Ft(i)p 909 1107 2373 4 v 910 1190 a(h)q F2([)p FW(const)p F2(])22 b FD(t)k FA(V)i FW(=)c FA(E)q FW(;)p FB(,)16 b FA(e)r Ft(i)28 b(!)f Fx(\()r FA(e)1995 1205 y Fu(F)2038 1190 y FB(,)16 b FA(e)2116 1205 y Fu(F)2148 1217 y Fk(G)2193 1190 y FB(,)g FA(e)2268 1205 y Fu(V)2325 1190 y Fx([)q FA(V)32 b Ft(7)r(!)27 b FA(l)5 b Fx(])q FB(,)16 b FA(e)2700 1205 y Fu(V)2742 1217 y Fk(G)2789 1190 y FB(,)g FA(s)r(t)r(o)2940 1164 y Fr(0)2966 1190 y Fx([)r FA(l)31 b Ft(7)r(!)c FA(v)r Fx(])r(\))990 1342 y F2(where)d FA(l)31 b Fx(=)26 b F2(ne)o(xt)382 1759 y FX(Function)c(calls)382 1951 y F2(Function)27 b(call)g(statements)h(are)e(e)o(x)o(ecuted)h(in)f(the)g(same)g(manner)h (as)f(function)i(call)f(e)o(xpres-)382 2080 y(sions,)d(e)o(xcept)h(the) f(return)h(v)n(alue)f(is)f(ignored.)382 2457 y([fstat-)q Ft(R)q F2(])818 2388 y Ft(h)s FA(E)911 2403 y Fz(1)948 2388 y FB(,)16 b FA(e)1023 2403 y Fz(1)1062 2388 y Ft(i)28 b(!)f(h)r FA(v)1326 2403 y Fz(1)1365 2388 y FB(,)16 b FA(e)1440 2402 y Fz(2)1478 2388 y Ft(i)109 b FB(.)17 b(.)g(.)108 b Ft(h)s FA(E)1927 2402 y Fu(n)1969 2388 y FB(,)16 b FA(e)2045 2402 y Fu(n)2088 2388 y Ft(i)28 b(!)f(h)r FA(v)2353 2402 y Fu(n)2396 2388 y FB(,)16 b FA(e)2472 2403 y Fu(n)r Fj(+)q Fz(1)2602 2388 y Ft(i)93 b(h)r FA(S)q FB(,)16 b FA(e)2895 2355 y Fr(0)2895 2416 y Fu(n)r Fj(+)q Fz(1)3025 2388 y Ft(i)28 b(!)f FA(e)3243 2355 y Fr(R)3242 2411 y Fu(r)p 817 2436 2489 4 v 1552 2519 a Ft(h)t FA(F)r FW(\()r FA(E)1756 2535 y Fz(1)1793 2519 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)2047 2533 y Fu(n)2089 2519 y FW(\);)o FB(,)f FA(e)2273 2535 y Fz(1)2311 2519 y Ft(i)28 b(!)g FA(e)2539 2537 y Fu(f)898 2679 y F2(where)c FA(c)k Fx(=)f(\()r FA(S)q FB(,)16 b Fx(\()q FA(V)1527 2694 y Fz(1)1565 2679 y FB(,)g(.)h(.)g(.)f(,)f FA(V)1819 2693 y Fu(n)1861 2679 y Fx(\))q FB(,)h FA(e)1973 2642 y Fr(0)1975 2702 y Fu(F)2018 2679 y FB(,)g FA(e)2094 2642 y Fr(0)2093 2702 y Fu(V)2150 2679 y Fx(\))28 b(=)i FA(L)2369 2694 y Fu(F)2411 2679 y Fx(\()t FA(F)r FB(,)16 b FA(e)2581 2694 y Fu(F)2612 2706 y Fl(1)2646 2679 y FB(,)g FA(e)2724 2694 y Fu(F)2756 2706 y Fk(G)2802 2679 y Fx(\))898 2834 y F2(and)25 b FA(e)1090 2797 y Fr(0)1090 2857 y Fu(n)r Fj(+)q Fz(1)1244 2834 y Fx(=)i(\()r FA(e)1416 2797 y Fr(0)1418 2857 y Fu(F)1462 2834 y Fx([)t FA(F)i Ft(7)r(!)f FA(c)r Fx(])q FB(,)16 b FA(e)1835 2849 y Fu(F)1867 2861 y Fk(G)1913 2834 y FB(,)g FA(e)1989 2797 y Fr(0)1988 2857 y Fu(V)2044 2834 y Fx([)q FA(V)2127 2849 y Fz(1)2191 2834 y Ft(7)r(!)28 b FA(l)2338 2849 y Fz(1)2375 2834 y FB(,)16 b(.)h(.)g(.)g(,)e FA(V)2630 2848 y Fu(n)2697 2834 y Ft(7)r(!)28 b FA(l)2845 2848 y Fu(n)2888 2834 y Fx(])q FB(,)16 b FA(e)2989 2849 y Fu(V)3031 2861 y Fk(G)3077 2834 y FB(,)2080 2989 y FA(s)r(t)r(o)2191 3004 y Fu(n)r Fj(+)q Fz(1)2322 2989 y Fx([)r FA(l)2375 3004 y Fz(1)2439 2989 y Ft(7)r(!)28 b FA(v)2606 3004 y Fz(1)2644 2989 y FB(,)16 b(.)h(.)g(.)f(,)g FA(l)2868 3003 y Fu(n)2936 2989 y Ft(7)r(!)28 b FA(v)3104 3003 y Fu(n)3147 2989 y Fx(])r(\))989 3144 y F2(where)c FA(l)1260 3159 y Fz(1)1324 3144 y Fx(=)i F2(ne)o(xt)q FB(,)16 b(.)h(.)g(.)g(,)f FA(l)1801 3158 y Fu(n)1869 3144 y Fx(=)26 b F2(ne)o(xt)898 3298 y(and)f FA(e)1099 3316 y Fu(f)1157 3298 y Fx(=)i(\()r FA(e)1331 3313 y Fu(F)1362 3325 y Fl(1)1396 3298 y FB(,)16 b FA(e)1474 3313 y Fu(F)1506 3325 y Fk(G)1551 3298 y FB(,)g FA(e)1626 3313 y Fu(V)1667 3325 y Fl(1)1700 3298 y FB(,)g FA(e)1775 3313 y Fu(V)1817 3325 y Fk(G)1863 3298 y FB(,)g FA(s)r(t)r(o)2012 3312 y Fu(r)2047 3298 y Fx(\))382 3674 y F2(F)o(or)j(a)h FR(v)o(oid)e F2(function)23 b(the)d(body)h(will)f(not)g(be)h Ft(R)q F2(-tagged)h(by)e(a)g FR(r)o(etur)o(n)e F2(statement,)k(b)n(ut)e(simply)382 3804 y(stop)g(e)o(x)o(ecuting)h(when)e(the)h(last)g(statement)h(is)e (\002nished.)h(Consequently)-6 b(,)22 b(we)c(de\002ne)i(an)f(e)o(xtra) 382 3934 y(rule)25 b([fstat-no-)q Ft(R)q F2(])i(which)e(is)f(e)o (xactly)h(the)g(same)f(as)g([fstat-)q Ft(R)q F2(],)i(e)o(xcept)g Ft(h)r FA(S)q FB(,)16 b FA(e)2874 3901 y Fr(0)2874 3962 y Fu(n)r Fj(+)q Fz(1)3004 3934 y Ft(i)29 b(!)g FA(e)3225 3901 y Fr(R)3224 3956 y Fu(r)3310 3934 y F2(is)382 4064 y(replaced)d(by)e Ft(h)r FA(S)q FB(,)16 b FA(e)992 4031 y Fr(0)992 4092 y Fu(n)r Fj(+)q Fz(1)1122 4064 y Ft(i)28 b(!)f FA(e)1339 4078 y Fu(r)1371 4064 y F2(.)382 4327 y FX(Retur)o(n)22 b(statements)382 4518 y F2(T)-7 b(o)23 b(e)o(x)o(ecute)h(a)g FR(r)o(etur)o(n)d F2(statement,)k(the)f(returned) i(e)o(xpression)g(is)e(\002rst)f(e)n(v)n(aluated.)j(The)d(v)n(alue)382 4648 y(of)i(that)i(e)o(xpression)h(is)d(then)i(bound)g(to)e(the)h (\223retv)n(al\224)h(symbol,)f(and)g(the)g(resulting)i(en)l(viron-)382 4777 y(ment)23 b(is)i Ft(R)q F2(-tagged.)525 5028 y([return])1728 4967 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2241 4934 y Fr(0)2267 4967 y Ft(i)p 971 5007 2088 4 v 972 5091 a(h)q FW(return)55 b FA(E)q FW(;)p FB(,)16 b FA(e)r Ft(i)28 b(!)f Fx(\()r FA(e)1838 5106 y Fu(F)1881 5091 y FB(,)16 b FA(e)1959 5106 y Fu(F)1991 5118 y Fk(G)2036 5091 y FB(,)g FA(e)2111 5106 y Fu(V)2167 5091 y FB(,)g FA(e)2242 5106 y Fu(V)2284 5118 y Fk(G)2330 5091 y FB(,)g FA(s)r(t)r(o)2481 5064 y Fr(0)2507 5091 y Fx([)q F2(retv)n(al)28 b Ft(7)r(!)g FA(v)r Fx(])r(\))2996 5064 y Fr(R)1831 5652 y F2(35)p eop end %%Page: 36 38 TeXDict begin 36 37 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 383 548 a Ft(R)q FX(-transitions)382 739 y F2(A)19 b(transition)j(rule)f(for)f(all)g(statements)j(co)o(v)o (ers)d(the)h(case)f(in)g(which)h(a)e(statement)j(is)e(e)n(v)n(aluated) 382 869 y(in)j(an)i Ft(R)q F2(-tagged)h(en)l(vironment:)865 1090 y([)q Ft(R)q F2(-statement])502 b Ft(h)r FA(S)q FB(,)16 b FA(e)2047 1053 y Fr(R)2110 1090 y Ft(i)28 b(!)f FA(e)2328 1053 y Fr(R)382 1512 y FP(3.3.3)99 b(T)-9 b(ople)o(v)o(el)24 b(constructs)382 1703 y F2(The)29 b(transition)j(system)e(for)g(tople)n (v)o(el)h(constructs)i(is)c(\()p FX(T)-8 b(opl)21 b Ft(\002)f FX(En)l(v)h Ft(\002)g FX(CL)f Ft([)h FX(En)l(v)g Ft(\002)g FX(CL)o F2(,)383 1833 y Ft(!)q F2(,)i FX(En)l(v)18 b Ft(\002)h FX(CL)o F2(\))k(where)i Ft(!)f F2(is)f(de\002ned)i(in)e(the)h (follo)n(wing)h(subsections.)382 2095 y FX(Import)e(dir)n(ecti)o(v)o(e) 478 2378 y F2([import])114 b Ft(h)q FW(import)53 b("filename";)-5 b FB(,)16 b FA(e)q FB(,)g FA(c)r(l)5 b Ft(i)28 b(!)g(h)r FA(e)2351 2340 y Fr(0)2375 2378 y FB(,)16 b FA(c)r(l)2483 2340 y Fr(0)2508 2378 y Ft(i)983 2533 y F2(where)25 b FA(e)1266 2495 y Fr(0)1312 2533 y F2(and)g FA(c)r(l)1536 2495 y Fr(0)1583 2533 y F2(are)f(obtained)h(by)f(applying)i(the)e (semantic)h(rules)1074 2687 y(to)f(the)f(contents)j(of)e(the)f(\002le)g FW(filename)382 3105 y FX(Cr)n(eate)h(statements)552 3388 y F2([create])189 b Ft(h)q FW(create)54 b FA(C)i FW(of)g FA(F)r FW(\()r FA(E)1884 3403 y Fz(1)1921 3388 y FB(,)16 b(.)h(.)g(.)g(,)g FA(E)2176 3402 y Fu(n)2217 3388 y FW(\);)o FB(,)f FA(e)q FB(,)g FA(c)r(l)5 b Ft(i)29 b(!)e(h)r FA(e)q FB(,)16 b FA(c)r(l)2872 3350 y Fr(0)2898 3388 y Ft(i)1106 3542 y F2(where)27 b FA(x)i Fx(=)e Ft(V)9 b Fx(\()r FA(C)s Fx(\))24 b F2(and)h FA(c)r(l)1975 3505 y Fr(0)2025 3542 y Fx(=)i FA(c)r(l)k FB(:)r(:)c Fx(\()t FA(x)r FB(,)18 b FA(F)r FB(,)e Fx(\()s FA(E)2605 3557 y Fz(1)2644 3542 y FB(,)g(.)h(.)g(.)f(,)h FA(E)2898 3556 y Fu(n)2941 3542 y Fx(\))r(\))382 3960 y FX(Declarations)382 4151 y F2(Declaration)38 b(of)e(v)n(ariables)i(and)f(functions)h(is)e (a)f(syntactic)k(tool)d(for)h(circumv)o(enting)i(the)382 4281 y(usual)27 b(de\002nition-before-usa)q(ge)32 b(rule,)26 b(and)h(the)f(declarations)j(ha)n(v)o(e)e(no)f(meaning)i(after)f(the) 382 4411 y(conte)o(xtual)g(syntactic)f(analysis)h(of)d(the)h(code)g (where)f(identi\002ers)j(are)d(associated)j(with)d(def-)382 4541 y(initions.)523 4670 y(Furthermore,)34 b(our)g(distinction)i(in)d (the)g(semantic)i(speci\002cation)g(between)f(local)g(and)382 4800 y(global)20 b(en)l(vironments)i(ensures)f(that)e(it)f(is)h (possible)i(to)d(use)h(a)g(global)h(identi\002er)g(in)e(a)h(function) 382 4930 y(body)24 b(e)n(v)o(en)g(if)f(the)h(identi\002er)h(is)f (de\002ned)g(after)g(the)g(de\002nition)h(of)f(the)g(function.)523 5060 y(Hence,)32 b(the)h(transition)h(rules)g(will)d(simply)i(skip)g (the)f(declarations)k(\(here)e FD(t)3042 5074 y Fn(v)3122 5060 y Fx(=)43 b FD(t)25 b Ft([)383 5190 y(f)q FW(void)p Ft(g)q F2(\):)1831 5652 y(36)p eop end %%Page: 37 39 TeXDict begin 37 38 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 588 769 a F2([v)n(ar)n(-decl])236 b Ft(h)q FW(extern)20 b F2([)p FW(const)p F2(])i FD(t)k FA(V)i F2([)q Fx(=)g FA(E)q F2(])p FW(;)p FB(,)16 b FA(e)q FB(,)g FA(c)r(l)5 b Ft(i)29 b(!)e(h)r FA(e)q FB(,)16 b FA(c)r(l)5 b Ft(i)588 924 y F2([fun-decl])227 b Ft(h)q FW(extern)21 b FD(t)1603 938 y Fn(v)1659 924 y FA(F)s Fx(\()q FA(V)1806 939 y Fz(1)1843 924 y FB(,)16 b(.)h(.)g(.)g(,)e FA(V)2098 938 y Fu(n)2140 924 y Fx(\))q FW(;)p FB(,)h FA(e)q FB(,)g FA(c)r(l)5 b Ft(i)29 b(!)e(h)r FA(e)q FB(,)16 b FA(c)r(l)5 b Ft(i)382 1341 y FX(V)-8 b(ariable)24 b(de\002nitions)382 1533 y F2(T)-7 b(ople)n(v)o(el)26 b(v)n(ariable)i(de\002nitions)g (shall)e(be)g(re)n(written)h(in)f(the)g(same)g(manner)g(as)g(the)g(v)n (ariable)382 1662 y(de\002nition)f(statements.)g(Thus)f(the)o(y)g(are)g (co)o(v)o(ered)g(by)g(the)g(follo)n(wing)h(rules.)382 1884 y([v)n(ar)n(-top])192 b Ft(h)q F2([)p FW(const)p F2(])22 b FD(t)k FA(V)5 b FW(;)o FB(,)16 b FA(e)q FB(,)g FA(c)r(l)5 b Ft(i)29 b(!)f(h)r Fx(\()r FA(e)1961 1899 y Fu(F)2004 1884 y FB(,)16 b FA(e)2082 1899 y Fu(F)2114 1911 y Fk(G)2159 1884 y FB(,)g FA(e)2234 1899 y Fu(V)2290 1884 y FB(,)g FA(e)2365 1899 y Fu(V)2407 1911 y Fk(G)2454 1884 y Fx([)q FA(V)31 b Ft(7)r(!)d FA(l)5 b Fx(])q FB(,)16 b FA(s)r(t)r(o)s Fx(\))q FB(,)g FA(c)r(l)5 b Ft(i)979 2038 y F2(where)25 b FA(l)31 b Fx(=)26 b F2(ne)o(xt)382 2242 y([v)n(ar)n(-top-)r FA(E)q F2(])1943 2180 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)2455 2147 y Fr(0)2481 2180 y Ft(i)p 898 2221 2663 4 v 899 2304 a(h)q F2([)p FW(const)p F2(])23 b FD(t)j FA(V)h FW(=)e FA(E)q FW(;)o FB(,)16 b FA(e)q FB(,)g FA(c)r(l)5 b Ft(i)29 b(!)f(h)r Fx(\()r FA(e)2130 2319 y Fu(F)2173 2304 y FB(,)16 b FA(e)2251 2319 y Fu(F)2283 2331 y Fk(G)2328 2304 y FB(,)g FA(e)2403 2319 y Fu(V)2459 2304 y FB(,)g FA(e)2534 2319 y Fu(V)2576 2331 y Fk(G)2623 2304 y Fx([)q FA(V)32 b Ft(7)r(!)27 b FA(l)5 b Fx(])q FB(,)16 b FA(s)r(t)r(o)3074 2278 y Fr(0)3101 2304 y Fx([)r FA(l)31 b Ft(7)r(!)c FA(v)r Fx(])r(\))q FB(,)16 b FA(c)r(l)5 b Ft(i)979 2456 y F2(where)25 b FA(l)31 b Fx(=)26 b F2(ne)o(xt)382 2874 y FX(Function)c (de\002nitions)382 3065 y F2(Although)k(the)g(distinction)i(between)e (local)f(and)h(global)g(en)l(vironments)j(mak)o(es)c(it)g(possible)382 3195 y(to)i(use)h(an)o(y)f(global)i(identi\002er)g(inside)g(an)o(y)e (function)j(body)-6 b(,)28 b(one)g(problem)g(with)f(initializa-)382 3325 y(tion)d(of)g(global)h(v)n(ariables)g(persists.)g(Consider)g(the)f (follo)n(wing)h(e)o(xample:)492 3489 y FR(e)10 b(x)g(t)g(e)g(r)g(n)74 b(i)13 b(n)g(t)75 b FY(f)28 b(\()17 b(\))h(;)495 3604 y FR(i)13 b(n)g(t)67 b FY(x)55 b(=)62 b(f)29 b(\()17 b(\))g(;)495 3718 y FR(i)c(n)g(t)74 b FY(f)29 b(\()19 b(\))58 b({)67 b FR(r)10 b(e)g(t)g(u)g(r)g(n)61 b FY(1)16 b(5)f(;)53 b(})382 3898 y F2(The)23 b(function)30 b FY(f)e F2(needs)c(to)g(be)f(kno)n(wn)h(prior)g(to)g(the)g(initialization)j(of) c FY(x)p F2(.)f(Consequently)-6 b(,)27 b(we)382 4028 y(de\002ne)d(that)h(the)g(program)g(shall)g(be)g(reordered)h(so)e(that) h(the)g(semantic)g(rules)h(are)e(applied)i(to)382 4158 y(the)e(function)h(de\002nitions)h(before)f(the)o(y)f(are)g(applied)h (to)e(the)h(v)n(ariable)i(de\002nitions.)523 4287 y(The)35 b(transition)j(rule)f(for)e(function)j(de\002nitions)g(simply)e (inserts)h(the)f(function)i(body)382 4417 y(\()q FA(S)464 4431 y Fn(block)643 4417 y F2(is)28 b(a)g(block)h(statement\))h(and)f (its)f(conte)o(xt)i(into)f(the)f(global)i(function)g(en)l(vironment.) 382 4547 y(Then)h FY(f)e F2(will)c(be)h(a)n(v)n(ailable)i(in)e(the)g(v) n(ariable)i(de\002nition)f(abo)o(v)o(e)g(because)g(of)f(the)g (reordering)382 4677 y(requirement.)495 4898 y([fun-top])133 b Ft(h)r FD(t)1031 4912 y Fn(v)1088 4898 y FA(F)s Fx(\()q FA(V)1235 4913 y Fz(1)1272 4898 y FB(,)16 b(.)h(.)g(.)f(,)f FA(V)1526 4912 y Fu(n)1568 4898 y Fx(\))i FA(S)1671 4912 y Fn(block)1824 4898 y FB(,)f FA(e)q FB(,)g FA(c)r(l)5 b Ft(i)29 b(!)e(h)r Fx(\()r FA(e)2302 4913 y Fu(F)2345 4898 y FB(,)16 b FA(e)2421 4861 y Fr(0)2423 4921 y Fu(F)2455 4933 y Fk(G)2501 4898 y FB(,)g FA(e)2576 4913 y Fu(V)2631 4898 y FB(,)g FA(e)2706 4913 y Fu(V)2748 4925 y Fk(G)2794 4898 y FB(,)g FA(s)r(t)r(o)s Fx(\))q FB(,)g FA(c)r(l)5 b Ft(i)1043 5053 y F2(where)25 b FA(e)1326 5015 y Fr(0)1328 5076 y Fu(F)1360 5088 y Fk(G)1432 5053 y Fx(=)i FA(e)1569 5068 y Fu(F)1601 5080 y Fk(G)1647 5053 y Fx([)t FA(F)i Ft(7)r(!)e Fx(\()r FA(S)1964 5067 y Fn(block)2117 5053 y FB(,)16 b Fx(\()q FA(V)2249 5068 y Fz(1)2286 5053 y FB(,)g(.)h(.)g(.)f(,)f FA(V)2540 5067 y Fu(n)2582 5053 y Fx(\))q FB(,)h FA(e)2696 5068 y Fu(F)2739 5053 y FB(,)g FA(e)2814 5068 y Fu(V)2871 5053 y Fx(\))r(])1831 5652 y F2(37)p eop end %%Page: 38 40 TeXDict begin 38 39 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 382 548 a FX(Enum)21 b(de\002nitions)382 739 y F2(Since)32 b FR(enum)q F2(s)g(e)o(xist)h(for)f(the)h(sole)g (purpose)h(of)f(type)g(checking,)h(the)o(y)f(ha)n(v)o(e)g(no)g (semantic)382 869 y(meaning)25 b(and)f(the)g(transition)i(rule)e (simply)g(skips)h(the)f(de\002nition.)672 1090 y([enum-top])310 b Ft(h)q FW(enum)15 b FD(h)20 b Ft(f)r FD(s)1818 1105 y Fz(1)1857 1090 y FB(,)c(.)h(.)g(.)f(,)g FD(s)2100 1104 y Fu(n)2144 1090 y Ft(g)q FB(,)g FA(e)q FB(,)g FA(c)r(l)5 b Ft(i)29 b(!)f(h)r FA(e)q FB(,)16 b FA(c)r(l)5 b Ft(i)382 1508 y FX(T)-7 b(ype)23 b(de\002nitions)382 1699 y F2(From)f(a)g (semantic)i(vie)n(wpoint,)g(type)g(de\002nitions)h(are)d(scopes)j(with) d(function,)j(v)n(ariable)f(and)382 1829 y FR(enum)f F2(de\002nition)i(members.)382 2180 y([type-def])1079 2118 y Ft(h)6 b FA(M)1206 2133 y Fz(1)1244 2118 y FB(,)16 b FA(e)1319 2133 y Fz(1)1357 2118 y Ft(i)28 b(!)g FA(e)1575 2132 y Fz(2)1704 2118 y Ft(h)6 b FA(M)1831 2132 y Fz(2)1869 2118 y FB(,)16 b FA(e)1944 2132 y Fz(2)1982 2118 y Ft(i)28 b(!)f FA(e)2199 2132 y Fz(3)2344 2118 y FB(.)17 b(.)g(.)108 b Ft(h)6 b FA(M)2683 2132 y Fu(n)2725 2118 y FB(,)16 b FA(e)2801 2132 y Fu(n)2844 2118 y Ft(i)28 b(!)f FA(e)3062 2133 y Fu(n)r Fj(+)q Fz(1)p 853 2159 2563 4 v 854 2242 a Ft(h)q FW(type)55 b FD(h)k FW({)t FA(M)1416 2257 y Fz(1)1458 2242 y FA(M)1544 2256 y Fz(2)1598 2242 y FB(.)17 b(.)g(.)k FA(M)1809 2256 y Fu(n)1851 2242 y FW(})o FB(,)16 b FA(e)1980 2257 y Fz(1)2018 2242 y FB(,)g FA(c)r(l)5 b Ft(i)28 b(!)f(h)r Fx(\()r FA(e)2420 2257 y Fu(F)2451 2269 y Fl(1)2485 2242 y FB(,)16 b FA(e)2563 2257 y Fu(F)2595 2269 y Fk(G)2641 2242 y FB(,)g FA(e)2716 2257 y Fu(V)2757 2269 y Fl(1)2790 2242 y FB(,)g FA(e)2865 2257 y Fu(V)2907 2269 y Fk(G)2953 2242 y FB(,)g FA(s)r(t)r(o)3103 2257 y Fu(n)r Fj(+)q Fz(1)3234 2242 y Fx(\))q FB(,)g FA(c)r(l)5 b Ft(i)523 2615 y F2(The)28 b(transition)i(system)f(for)f(the)g (members)33 b FA(M)2064 2630 y Fz(1)2102 2615 y FB(,)16 b(.)h(.)g(.)f(,)k FA(M)2390 2629 y Fu(n)2459 2615 y F2(is)27 b(\()p FX(Memb)20 b Ft(\002)h FX(En)l(v)f Ft([)g FX(En)l(v)p F2(,)383 2745 y Ft(!)q F2(,)j FX(En)l(v)q Fx(\))q F2(\))g(where)i Ft(!)f F2(is)f(de\002ned)i(by)e(the)h(follo)n(wing)h(transition)h (rules.)382 3096 y([fun-type])183 b Ft(h)r FD(t)1008 3110 y Fn(v)1065 3096 y FA(F)s Fx(\()q FA(V)1212 3111 y Fz(1)1249 3096 y FB(,)16 b(.)h(.)g(.)f(,)f FA(V)1503 3110 y Fu(n)1546 3096 y Fx(\))i FA(S)1649 3110 y Fn(block)1801 3096 y FB(,)f FA(e)r Ft(i)28 b(!)g Fx(\()r FA(e)2133 3059 y Fr(0)2135 3119 y Fu(F)2177 3096 y FB(,)16 b FA(e)2255 3111 y Fu(F)2287 3123 y Fk(G)2333 3096 y FB(,)g FA(e)2408 3111 y Fu(V)2464 3096 y FB(,)g FA(e)2539 3111 y Fu(V)2581 3123 y Fk(G)2626 3096 y FB(,)g FA(s)r(t)r(o)s Fx(\))1020 3251 y F2(where)25 b FA(e)1303 3213 y Fr(0)1305 3274 y Fu(F)1374 3251 y Fx(=)i FA(e)1511 3266 y Fu(F)1554 3251 y Fx([)t FA(F)i Ft(7)r(!)e Fx(\()r FA(S)1871 3265 y Fn(block)2024 3251 y FB(,)16 b Fx(\()q FA(V)2156 3266 y Fz(1)2193 3251 y FB(,)g(.)h(.)g(.)f(,)f FA(V)2447 3265 y Fu(n)2489 3251 y Fx(\))q FB(,)h FA(e)2603 3266 y Fu(F)2646 3251 y FB(,)g FA(e)2721 3266 y Fu(V)2778 3251 y Fx(\))r(])382 3406 y F2([v)n(ar)n(-type])192 b Ft(h)q F2([)p FW(watched)p F2(])21 b([)p FW(const)p F2(])h FD(t)k FA(V)5 b FW(;)o FB(,)16 b FA(e)r Ft(i)29 b(!)e FA(e)2283 3368 y Fr(0)1020 3560 y F2(where)e FA(e)1303 3523 y Fr(0)1353 3560 y Fx(=)i(\()r FA(e)1527 3575 y Fu(F)1570 3560 y FB(,)16 b FA(e)1648 3575 y Fu(F)1680 3587 y Fk(G)1725 3560 y FB(,)g FA(e)1800 3575 y Fu(V)1857 3560 y Fx([)q FA(V)32 b Ft(7)r(!)27 b FA(l)5 b Fx(])q FB(,)16 b FA(e)2232 3575 y Fu(V)2274 3587 y Fk(G)2321 3560 y FB(,)g FA(s)r(t)r(o)s Fx(\))26 b F2(and)f FA(l)30 b Fx(=)d F2(ne)o(xt)382 3764 y([v)n(ar)n(-type-)r FA(E)q F2(])1421 3702 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)1933 3669 y Fr(0)1959 3702 y Ft(i)p 939 3743 1537 4 v 940 3826 a(h)q F2([)p FW(watched)p F2(])21 b([)p FW(const)p F2(])h FD(t)k FA(V)h FW(=)e FA(E)q FW(;)o FB(,)16 b FA(e)r Ft(i)29 b(!)e FA(e)2452 3800 y Fr(0)1020 3973 y F2(where)e FA(e)1303 3936 y Fr(0)1353 3973 y Fx(=)i(\()r FA(e)1527 3988 y Fu(F)1570 3973 y FB(,)16 b FA(e)1648 3988 y Fu(F)1680 4000 y Fk(G)1725 3973 y FB(,)g FA(e)1800 3988 y Fu(V)1857 3973 y Fx([)q FA(V)32 b Ft(7)r(!)27 b FA(l)5 b Fx(])q FB(,)16 b FA(e)2232 3988 y Fu(V)2274 4000 y Fk(G)2321 3973 y FB(,)g FA(s)r(t)r(o)2472 3936 y Fr(0)2498 3973 y Fx([)r FA(l)31 b Ft(7)r(!)c FA(v)r Fx(])r(\))f F2(and)f FA(l)30 b Fx(=)d F2(ne)o(xt)382 4128 y([enum-type])102 b Ft(h)q FW(enum)15 b FD(h)21 b Ft(f)r FD(s)1361 4143 y Fz(1)1400 4128 y FB(,)16 b(.)h(.)g(.)f(,)g FD(s)1643 4142 y Fu(n)1686 4128 y Ft(g)q FB(,)g FA(e)r Ft(i)29 b(!)f FA(e)382 4598 y FS(3.4)119 b(Built-in)31 b(functions)382 4822 y F2(Before)20 b(the)g(conte)o(xtual)j(analysis)f (is)d(started,)i(the)f(function)i(en)l(vironment)h(is)d(equipped)i (with)382 4951 y(the)i(b)n(uilt-in)h(functions)49 b FY(intify)43 b F2(and)54 b FY(\003oatify)28 b F2(.)523 5081 y(The)23 b(function)48 b FY(intify)c F2(is)23 b(de\002ned)h(as)495 5246 y FR(i)13 b(n)g(t)80 b FY(i)17 b(n)f(t)h(i)h(f)e(y)28 b(\()d FR(f)14 b(l)h(o)f(a)g(t)69 b FY(x)14 b(\))487 5360 y({)1831 5652 y F2(38)p eop end %%Page: 39 41 TeXDict begin 39 40 bop 1475 228 a F1(Chapter)24 b(3.)51 b(Semantics)p 382 266 2989 4 v 591 548 a FR(r)10 b(e)g(t)g(u)g(r)g(n)59 b FN(I)8 b FG(\()e FY(x)t FG(\))15 b FY(;)487 663 y(})382 842 y F2(where)25 b Ft(I)30 b F2(is)23 b(an)h(e)o(xpression)i(with)d(a) g(v)n(alue)i(de\002ned)f(by)g(the)g(follo)n(wing)h(transition)h(rule:) 515 1093 y([intify])987 1031 y Ft(h)q FA(V)5 b FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)1436 998 y Fr(0)1460 1031 y FB(,)16 b FA(e)1536 998 y Fr(0)1561 1031 y Ft(i)p 931 1072 721 4 v 932 1155 a(h)r(I)9 b Fx(\()q FA(V)d Fx(\))q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1590 1129 y Fr(0)1615 1155 y Ft(i)1810 1093 y F2(where)25 b FA(v)j Fx(=)f Ft(b)r FA(v)2316 1055 y Fr(0)2342 1093 y Ft(c)d F2(and)g(the)g(type)g(of)h FA(v)f F2(is)31 b FR(int)382 1523 y F2(The)23 b(function)55 b FY(\003oatify)c F2(is)24 b(de\002ned)g(as)496 1688 y FR(f)14 b(l)h(o)f(a)g(t)82 b FY(f)16 b(l)i(o)e(a)h(t)g(i)h(f)e(y)28 b(\()c FR(i)13 b(n)g(t)67 b FY(x)15 b(\))487 1802 y({)591 1917 y FR(r)10 b(e)g(t)g(u)g(r)g(n)59 b FN(F)10 b FG(\()5 b FY(x)g FG(\))15 b FY(;)487 2031 y(})382 2211 y F2(where)24 b Ft(F)34 b F2(is)23 b(de\002ned)h(as)f(a)g(normal)h(v)n(ariable)h(e)n(v)n (aluation)h(e)o(xcept)e(the)g(type)g(of)f(the)h(resulting)382 2341 y(v)n(alue)g(of)g(the)g(e)n(v)n(aluation)h(is)39 b FR(\003oat)14 b F2(.)1831 5652 y(39)p eop end %%Page: 40 42 TeXDict begin 40 41 bop 382 1202 a FT(Chapter)44 b(4)382 1654 y F4(T)-15 b(ranslation)52 b(to)g(JVM)g(code)382 2116 y F2(This)22 b(chapter)i(de\002nes)f(the)g(syntax)h(and)f (semantics)h(for)e(a)g(selected)j(part)d(of)h(the)f(Ja)n(v)n(a)h (virtual)382 2246 y(machine,)33 b(then)g(de\002nes)g(a)f(translation)j (function)g Ft(T)55 b F2(for)33 b(con)l(v)o(erting)i(strings)f(in)e (our)g(lan-)382 2376 y(guage)g(to)e(JVM)g(strings,)i(and)f(\002nally)h (pro)o(v)o(es)f(that)g(the)g(semantics)i(of)d(a)h(program)h(before)382 2506 y(and)24 b(after)g(application)j(of)d Ft(T)47 b F2(are)24 b(the)f(same.)382 2821 y FS(4.1)119 b(The)30 b(J)n(a)m(v)o(a)f(VM)382 3045 y F2(The)20 b(Ja)n(v)n(a)i(virtual)g (machine)g(is)f(a)g(stack-based)j(abstract)f(machine)f([7)q(])e(for)h (e)o(x)o(ecuting)i(a)d(lo)n(w-)382 3175 y(le)n(v)o(el)29 b(language.)j(It)d(is)g(not)g(the)h(only)g(abstract)h(machine)f(that)g (we)f(could)h(ha)n(v)o(e)g(chosen)h(for)382 3304 y(the)24 b(tar)n(get)h(language,)g(b)n(ut)g(some)e(of)h(the)f(bene\002ts)i(of)e (the)h(JVM)f(are:)518 3509 y Ft(\017)46 b F2(It)20 b(is)h(completely)h (stack)g(based,)f(thus)g(a)n(v)n(oiding)j(the)c(problem)i(of)e(re)o (gister)i(allocation.)518 3713 y Ft(\017)46 b F2(It)23 b(is)h(a)f(real-w)o(orld)i(machine)g(designed)h(for)e(practical)h(use.) 518 3918 y Ft(\017)46 b F2(It)23 b(is)h(v)o(ery)g(widely)g(deplo)o (yed.)518 4123 y Ft(\017)46 b F2(It)23 b(is)h(stable)h(and)f(kno)n(wn)g (to)f(w)o(ork.)523 4327 y(Instead)30 b(of)e(specifying)k(a)27 b(translation)32 b(to)c(the)h(binary)g(code)h(that)e(implementations)k (of)382 4457 y(the)23 b(JVM)e(e)o(x)o(ecute)j(\(from)f FW(.class)c F2(\002les\),)j(we)g(will)g(specify)j(a)d(translation)k(to) c(an)h(interme-)382 4587 y(diate)32 b(human-readable)i(assembler)f (language,)g(the)e FV(J)m(ava)h(assembler)g(interface)i F2([6],)c(Jas-)382 4717 y(min.)36 b(T)-7 b(o)36 b(reduce)j(the)e (comple)o(xity)i(of)e(the)h(formal)f(model,)h(we)e(also)i(skip)f(some)h (of)f(the)382 4847 y(minor)29 b(JVM)f(details,)i(especially)h(those)f (that)f(stem)g(from)g(its)g(object-oriented)k(ISA)27 b(parts,)382 4976 y(and)d(instead)h(focus)g(on)e(the)h(central)h(b)n (uilding)h(blocks,)f(e)o(xpressions)i(and)d(statements.)1831 5652 y(40)p eop end %%Page: 41 43 TeXDict begin 41 42 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FP(4.1.1)99 b(The)26 b(basic)f(model)382 739 y F2(Our)c(formal)i(model)f(of)g(the)h(JVM)e(is)g(inspired)j(from)e (the)h(model)f(of)g(an)g(abstract)i(machine)f(in)382 869 y([8)q(])28 b(and)h(processes)i(an)e(array)h(of)e(instructions)33 b FA(c)q F2(,)28 b(k)o(eeping)j(track)f(of)e(the)h(current)i(location) 388 999 y FA(p)r(c)g Ft(2)e Fs(N)682 1013 y Fz(0)744 999 y F2(within)c(the)h(array)-6 b(,)25 b(the)h(stack)h FA(s)k Ft(2)e FX(Stack)24 b F2(and)i(the)f(free)h(store)h FA(s)r(t)r(o)33 b Ft(2)c FX(Sto)3126 1013 y Fu(m)3182 999 y F2(.)24 b(The)382 1129 y(store)31 b(is)e(de\002ned)i(as)f(a)f (mapping)j(from)d(locations)k(to)c(v)n(alues)j(as)d(in)h(Section)h (3.2.2)f(e)o(xcept)382 1259 y(the)h(v)n(alues)i(are)e(in)g Fs(Z)22 b Ft([)f Fs(R)p F2(,)30 b(whereas)j(a)d(stack)j(is)e(an)g (ordered)i(sequence)g(of)f(v)n(alues)g(from)382 1388 y Fs(Z)20 b Ft([)g Fs(R)25 b F2(that)i(supports)i(pushing)g(and)e (popping)i(of)d(elements.)i(W)-7 b(e)26 b(use)h(the)g(notation)i FA(v)34 b FB(:)r(:)f FA(s)382 1518 y F2(to)23 b(denote)i(pushing)h(or)e (popping)h(of)f(the)g(element)h FA(v)g F2(from)e(stack)j FA(s)q F2(.)523 1648 y(Since)h(we)e(k)o(eep)j(the)f(instruction)i (array)g FA(c)e F2(\002x)o(ed)f(throughout)k(the)c(e)o(x)o(ecution)j (of)d(a)g(pro-)382 1778 y(gram,)21 b(the)g(con\002gurations)j(belong)f (to)e(the)g(set)g Fs(N)1983 1792 y Fz(0)2037 1778 y Ft(\002)16 b FX(Stack)h Ft(\002)f FX(Sto)2572 1792 y Fu(m)2649 1778 y F2(where)21 b(the)g(\002rst)g(com-)382 1908 y(ponent)f(is)e(the)h (program)h(counter)26 b FA(p)r(c)q F2(.)19 b(A)e(terminal)j (con\002guration)i(is)c(a)g(con\002guration)k(where)388 2038 y FA(p)r(c)33 b Fx(=)f Ft(j)r FA(c)r Ft(j)q F2(,)26 b(i.e.)f(there)j(are)e(no)g(more)g(instructions)k(left.)c(W)-7 b(e)25 b(denote)j(the)e(transition)j(relation)382 2167 y(by)c Ft(\))e F2(and)h(de\002ne)g(it)g(with)f(the)h(rules)g(in)g(the)g (follo)n(wing)h(sections.)382 2434 y FP(4.1.2)99 b(T)-7 b(ypes)382 2625 y F2(In)23 b(the)h(speci\002cation)i(of)e(the)f (semantics)i(for)f(our)g(high-le)n(v)o(el)i(language,)f(it)e(w)o(as)g (possible)j(to)382 2755 y(ignore)i(the)f(types)h(of)f(the)g(v)n (ariables)i(almost)f(completely)h(since)f(most)f(operators)i(ha)n(v)o (e)f(the)382 2885 y(same)23 b(syntax)i(and)f(similar)h(semantics)g(no)e (matter)h(what)g(the)g(type)g(of)f(the)h(operands)i(is)d(\(and)382 3015 y(from)j(the)h(syntax)g(speci\002cation)i(we)d(are)g(assured)j (that)d(the)h(operands)i(ha)n(v)o(e)d(types)i(that)f(are)382 3145 y(meaningful)f(for)d(the)h(particular)i(operator\).)523 3275 y(F)o(or)19 b(most)g(of)h(the)g(JVM)e(instructions,)23 b(the)d(situation)i(is)d(dif)n(ferent.)i(The)f(virtual)h(machine)382 3404 y(has)j(tw)o(o)f(basic)i(types,)f(inte)o(ger)h(and)f(\003oating)h (point)g(numbers,)f(with)g(dif)n(ferent)h(instructions)382 3534 y(for)d(manipulating)j(them.)d(Most)g(of)g(the)h(instructions)i (are)d(semantically)j(the)e(same,)e(though,)382 3664 y(so)26 b(in)f(the)i(follo)n(wing)g(we)e(will)g(not)i(repeat)g(the)f (speci\002cation)i(for)e(all)g(of)g(them.)g(In)f(general,)382 3794 y(the)20 b(inte)o(ger)n(-speci\002c)k(instructions)f(be)o(gin)e (with)h F0(I)g F2(and)f(the)f(\003oating)h(point)h(instructions)h(with) 384 3924 y F0(F)r F2(.)523 4054 y(Since)k(there)i(is)e(no)g(concept)i (of)e(boolean)i(and)f(enumerated)h(v)n(alues,)f(we)f(map)g(them)g(to) 382 4183 y(inte)o(gers)e(with)e(the)h(function)j Ft(C)33 b FB(:)26 b FX(V)-8 b(al)26 b Ft(!)h Fs(Z)18 b Ft([)h Fs(R)j F2(which)i(is)g(de\002ned)g(as)1390 4637 y Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b(=)1692 4314 y Fp(8)1692 4396 y(>)1692 4423 y(>)1692 4451 y(>)1692 4478 y(>)1692 4505 y(>)1692 4533 y(<)1692 4696 y(>)1692 4723 y(>)1692 4751 y(>)1692 4778 y(>)1692 4805 y(>)1692 4833 y(:)1774 4412 y FB(1)227 b F2(if)24 b FA(v)k Fx(=)g F0(T)1774 4568 y FB(0)227 b F2(if)24 b FA(v)k Fx(=)g F0(F)1775 4723 y Ft(E)10 b Fx(\()r FA(v)r Fx(\))94 b F2(if)24 b FA(v)k Ft(2)e Fs(E)1775 4879 y FA(v)226 b F2(else)382 5088 y(where)24 b Ft(E)31 b F2(within)23 b(a)f(gi)n(v)o(en)h(enum)g(type)h(assigns)g(a) e(unique)j(inte)o(ger)e(to)g(each)g(of)g(the)g(symbols.)1831 5652 y(41)p eop end %%Page: 42 44 TeXDict begin 42 43 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FP(4.1.3)99 b(V)-9 b(ariables)24 b(and)i(functions)382 739 y F2(Since)d(v)n(ariables)j(are)e(allocated)h(at)f(speci\002c)g (points)h(in)e(the)h(JVM)e(\(e.g.)h(at)g(the)h(be)o(ginning)i(of)382 869 y(the)i(enclosing)j(routine\),)f(we)d(shall)i(not)g(model)f(the)g (semantics)i(of)e(v)n(ariable)i(and)f(function)382 999 y(de\002nitions)c(directly)-6 b(,)25 b(b)n(ut)f(instead)g(introduce)i (an)d(abstraction;)k(we)22 b(simply)i(de\002ne)g FD(n)r Fx(\()q FA(V)6 b Fx(\))25 b F2(to)382 1129 y(be)g(the)h(location)h(of)e (the)h(v)n(ariable)h FA(V)5 b F2(.)24 b(Lik)o(e)n(wise)h(we)g(de\002ne) 31 b FD(j)r Fx(\()t FA(F)s Fx(\))26 b F2(to)f(be)g(the)h(code)g (address)382 1259 y(of)d(the)h(body)h(of)e(the)h(function)29 b FA(F)r F2(.)382 1521 y FP(4.1.4)99 b(Stack)26 b(manipulation)f (instructions)491 1779 y F2([)r F0(L)t(D)t(C)i FA(v)q F2(])231 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1363 1793 y Fu(m)1424 1779 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d FA(v)28 b FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)2261 1793 y Fu(m)2320 1779 y Ft(i)491 1934 y F2([)r F0(I)t(L)t(O)r(A)t(D)28 b FA(l)t F2(])160 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1363 1948 y Fu(m)1424 1934 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d FA(s)r(t)r(o)2037 1948 y Fu(m)2097 1934 y Fx(\()r FA(l)5 b Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2488 1948 y Fu(m)2548 1934 y Ft(i)491 2088 y F2([)r F0(I)t(S)t(T)s(O)t(R)t(E)30 b FA(l)t F2(])126 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)1512 2102 y Fu(m)1572 2088 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2260 2102 y Fu(m)2320 2088 y Fx([)r FA(l)31 b Ft(7)r(!)d FA(v)r Fx(])r Ft(i)491 2243 y F2([)r F0(P)t(O)t(P)r F2(])315 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)1512 2257 y Fu(m)1572 2243 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2260 2257 y Fu(m)2320 2243 y Ft(i)491 2398 y F2([)r F0(D)t(U)t(P)r F2(])302 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)1512 2412 y Fu(m)1572 2398 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(v)29 b FB(:)r(:)e FA(v)h FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2557 2412 y Fu(m)2617 2398 y Ft(i)491 2553 y F2([)r F0(D)t(U)t(P)t F2(_)t F0(X)t F2(1)r(])147 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1223 2568 y Fz(1)1288 2553 y FB(:)r(:)28 b FA(v)1410 2567 y Fz(2)1474 2553 y FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1735 2567 y Fu(m)1795 2553 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(v)2343 2568 y Fz(1)2408 2553 y FB(:)r(:)27 b FA(v)2529 2567 y Fz(2)2593 2553 y FB(:)r(:)h FA(v)2715 2568 y Fz(1)2779 2553 y FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3040 2567 y Fu(m)3100 2553 y Ft(i)491 2707 y F2([)r F0(N)t(O)t(P)r F2(])302 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1363 2721 y Fu(m)1424 2707 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)2112 2721 y Fu(m)2172 2707 y Ft(i)491 2862 y F2([)r F0(S)t(W)-5 b(A)t(P)r F2(])251 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1223 2877 y Fz(1)1288 2862 y FB(:)r(:)28 b FA(v)1410 2876 y Fz(2)1474 2862 y FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1735 2876 y Fu(m)1795 2862 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(v)2343 2876 y Fz(2)2408 2862 y FB(:)r(:)27 b FA(v)2529 2877 y Fz(1)2593 2862 y FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)2855 2876 y Fu(m)2914 2862 y Ft(i)525 3213 y F0(FL)t(O)r(A)t(D)34 b F2(and)g F0(F)t(S)t(T)s(O)t(R)t(E)r F2(,)g(are)e(de\002ned)h(in)e(the)h(same)g(w)o(ay)g(as)h F0(I)t(L)t(O)r(A)t(D)h F2(and)h F0(I)t(S)t(T)s(O)t(R)t(E)h F2(for)382 3343 y(\003oating)28 b(point)f(v)n(alues.)h(The)e (instructions)32 b F0(A)t(L)t(O)r(A)t(D)d F2(and)g F0(A)t(S)t(T)s(O)t (R)t(E)h F2(are)d(similarly)h(used)g(for)382 3473 y(loading)d(and)f (storing)i(object)f(references.)382 3736 y FP(4.1.5)99 b(Arithmetic)25 b(instructions)480 3993 y F2([)r F0(I)t(A)t(D)t(D)r F2(])120 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1071 4007 y Fu(r)1131 3993 y FB(:)r(:)27 b FA(v)1253 4011 y Fu(l)1305 3993 y FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)1566 4007 y Fu(m)1626 3993 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e Fx(\()r FA(v)2212 4011 y Fu(l)2258 3993 y Fx(+)j FA(v)2394 4007 y Fu(r)2428 3993 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2752 4007 y Fu(m)2812 3993 y Ft(i)480 4148 y F2([)r F0(I)t(S)t(U)t(B)r F2(])137 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1071 4162 y Fu(r)1131 4148 y FB(:)r(:)27 b FA(v)1253 4166 y Fu(l)1305 4148 y FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)1566 4162 y Fu(m)1626 4148 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e Fx(\()r FA(v)2212 4166 y Fu(l)2258 4148 y Ft(\000)j FA(v)2394 4162 y Fu(r)2428 4148 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2752 4162 y Fu(m)2812 4148 y Ft(i)480 4303 y F2([)r F0(I)t(M)t(U)t(L)r F2(])117 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1071 4317 y Fu(r)1131 4303 y FB(:)r(:)27 b FA(v)1253 4320 y Fu(l)1305 4303 y FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)1566 4317 y Fu(m)1626 4303 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e Fx(\()r FA(v)2212 4320 y Fu(l)2240 4303 y FA(v)2286 4317 y Fu(r)2320 4303 y Fx(\))27 b FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)2644 4317 y Fu(m)2703 4303 y Ft(i)480 4458 y F2([)r F0(I)t(D)t(I)t(V)r F2(])149 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1071 4472 y Fu(r)1131 4458 y FB(:)r(:)27 b FA(v)1253 4475 y Fu(l)1305 4458 y FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)1566 4472 y Fu(m)1626 4458 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e Fx(\()r Ft(b)r FA(v)2254 4475 y Fu(l)2283 4458 y FB(/)r FA(v)2386 4472 y Fu(r)2420 4458 y Ft(c)r Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2786 4472 y Fu(m)2846 4458 y Ft(i)480 4613 y F2([)r F0(F)t(D)t(I)t(V)r F2(])133 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1071 4627 y Fu(r)1131 4613 y FB(:)r(:)27 b FA(v)1253 4630 y Fu(l)1305 4613 y FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)1566 4627 y Fu(m)1626 4613 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e Fx(\()r FA(v)2212 4630 y Fu(l)2240 4613 y FB(/)r FA(v)2343 4627 y Fu(r)2377 4613 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2701 4627 y Fu(m)2761 4613 y Ft(i)480 4767 y F2([)r F0(I)t(R)t(E)t(M)r F2(])121 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1071 4781 y Fu(r)1131 4767 y FB(:)r(:)27 b FA(v)1253 4785 y Fu(l)1305 4767 y FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)1566 4781 y Fu(m)1626 4767 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e Fx(\()r FA(v)2212 4785 y Fu(l)2258 4767 y Ft(\000)j(b)s FA(v)2438 4785 y Fu(l)2465 4767 y FB(/)r FA(v)2568 4781 y Fu(r)2602 4767 y Ft(c)f FA(v)2706 4781 y Fu(r)2739 4767 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3063 4781 y Fu(m)3123 4767 y Ft(i)480 4922 y F2([)r F0(I)t(N)t(E)t(G)r F2(])129 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)1360 4936 y Fu(m)1420 4922 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e Fx(\()r Ft(\000)r FA(v)r Fx(\))29 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2405 4936 y Fu(m)2464 4922 y Ft(i)525 5273 y F0(F)o(A)t(D)t(D)r F2(,)30 b F0(F)t(S)t(U)t(B)r F2(,)i F0(F)t(M)t(U)t(L)r F2(,)f F0(F)t(R)t(E)t(M)r F2(,)h F0(FI)t(N)t(C)f F2(and)g F0(F)t(N)t(E)t(G)h F2(are)c(de\002ned)i(similarly)g(for)f(\003oating) 382 5403 y(point)c(numbers.)1831 5652 y(42)p eop end %%Page: 43 45 TeXDict begin 43 44 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FP(4.1.6)99 b(J)o(ump)25 b(instructions)382 739 y F2(Jump)19 b(instructions)k(are)d(modelled)h(with)e(labels.)i(T) -7 b(o)18 b(f)o(acilitate)k(this,)d(we)g(de\002ne)h(a)f(label)k FA(x)e F2(in-)382 869 y(struction)k(to)e(do)f(nothing)j(and)f FD(l)r Fx(\()t FA(x)s Fx(\))h F2(to)d(be)h(the)g(code)h(address)g (where)f(the)g(label)h(instruction)385 999 y FA(x)h F2(is)e(located.) 734 1220 y([)s FA(x)r F2(:])583 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1804 1234 y Fu(m)1866 1220 y Ft(i)27 b(\))h(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)2554 1234 y Fu(m)2614 1220 y Ft(i)734 1375 y F2([)r F0(G)t(O)q(T)s(O)29 b FA(x)r F2(])369 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1804 1389 y Fu(m)1866 1375 y Ft(i)27 b(\))h(h)r FD(l)r Fx(\()t FA(x)s Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2489 1389 y Fu(m)2551 1375 y Ft(i)382 1751 y F2(F)o(or)24 b(inte)o(gers,)i(there)f(are)g(a)f(number)i(of)e (instructions)k(that)e(jump)e(conditionally)29 b(depending)382 1881 y(on)24 b(ho)n(w)f(the)g(top)h(of)g(the)g(stack)g(compares)h(to)f (0.)633 2102 y([)r F0(I)t(F)t(E)t(Q)30 b FA(x)r F2(])268 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)1714 2116 y Fu(m)1774 2102 y Ft(i)28 b(\))f(h)r FD(l)r Fx(\()t FA(x)s Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2397 2116 y Fu(m)2459 2102 y Ft(i)331 b F2(if)24 b FA(v)k Fx(=)e FB(0)633 2256 y F2([)r F0(I)t(F)t(E)t(Q)k FA(x)r F2(])268 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)1714 2270 y Fu(m)1774 2256 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2462 2270 y Fu(m)2522 2256 y Ft(i)268 b F2(else)382 2632 y(The)19 b(instruction)25 b F0(I)t(F)t(N)t(E)f F2(is)19 b(de\002ned)i(similarly) g(for)g FA(v)28 b Ft(6)r Fx(=)f FB(0)p F2(,)21 b F0(I)t(F)t(G)t(T)j F2(is)19 b(de\002ned)i(for)g FA(v)28 b FC(>)e FB(0)p F2(,)21 b F0(I)t(F)t(G)t(E)382 2762 y F2(for)h FA(v)28 b Ft(\025)e FB(0)p F2(,)c F0(I)t(FL)t(T)i F2(for)e FA(v)28 b FC(<)e FB(0)21 b F2(and)i F0(I)t(FL)t(E)h F2(for)e FA(v)28 b Ft(\024)e FB(0)p F2(.)20 b(F)o(or)g(\003oating)h(point)h (comparisons,)h(there)382 2892 y(is)g(the)j F0(F)t(C)t(M)t(P)t(G)h F2(instruction.)489 3113 y([)r F0(F)t(C)t(M)t(P)t(G)j FA(x)r F2(])124 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1227 3127 y Fu(r)1287 3113 y FB(:)r(:)27 b FA(v)1409 3131 y Fu(l)1461 3113 y FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)1723 3127 y Fu(m)1783 3113 y Ft(i)27 b(\))h(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)c(0)27 b(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)2617 3127 y Fu(m)2677 3113 y Ft(i)196 b F2(if)25 b FA(v)3035 3131 y Fu(l)3087 3113 y Fx(=)i FA(v)3231 3127 y Fu(r)489 3268 y F2([)r F0(F)t(C)t(M)t(P)t(G)j FA(x)r F2(])124 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1227 3282 y Fu(r)1287 3268 y FB(:)r(:)27 b FA(v)1409 3285 y Fu(l)1461 3268 y FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)1723 3282 y Fu(m)1783 3268 y Ft(i)27 b(\))h(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d Ft(\000)q FB(1)26 b(:)r(:)i FA(s)q FB(,)16 b FA(s)r(t)r(o)2690 3282 y Fu(m)2750 3268 y Ft(i)123 b F2(if)25 b FA(v)3035 3285 y Fu(l)3087 3268 y FC(<)i FA(v)3231 3282 y Fu(r)489 3423 y F2([)r F0(F)t(C)t(M)t(P)t(G)j FA(x)r F2(])124 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1227 3437 y Fu(r)1287 3423 y FB(:)r(:)27 b FA(v)1409 3440 y Fu(l)1461 3423 y FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)1723 3437 y Fu(m)1783 3423 y Ft(i)27 b(\))h(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)c(1)27 b(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)2617 3437 y Fu(m)2677 3423 y Ft(i)196 b F2(if)25 b FA(v)3035 3440 y Fu(l)3087 3423 y FC(>)i FA(v)3231 3437 y Fu(r)382 3799 y F2(The)g(JVM)f(also)h(de\002nes)h(instructions)j(for)c (performing)i(jumps)f(depending)i(on)d(a)g(compar)n(-)382 3929 y(ison)g(of)e(the)i(tw)o(o)e(top)i(elements)g(of)f(the)g(stack.)h (Belo)n(w)e(is)h(the)g(semantics)i(for)e([)r F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(E)t(Q)385 4058 y FA(x)r F2(];)f(we)f (de\002ne)i(the)f(instruction)k([)r F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(N)t(E)t(Q)35 b FA(x)r F2(])25 b(similarly)h(for)h Ft(6)r Fx(=)q F2(,)d([)r F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(G)t(T)35 b FA(x)r F2(])25 b(for)383 4188 y FC(>)q F2(,)d([)r F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(G)t(E)34 b FA(x)r F2(])23 b(for)i Ft(\025)q F2(,)d([)r F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(N)t(L)m(T)35 b FA(x)r F2(])23 b(for)h FC(<)g F2(and)g([)r F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(L)t(E)34 b FA(x)r F2(])24 b(for)g Ft(\024)q F2(.)505 4409 y([)r F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(E)t (Q)33 b FA(x)r F2(])140 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1415 4423 y Fu(r)1475 4409 y FB(:)r(:)27 b FA(v)1597 4427 y Fu(l)1649 4409 y FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)1910 4423 y Fu(m)1970 4409 y Ft(i)28 b(\))f(h)r FD(l)r Fx(\()t FA(x)s Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2593 4423 y Fu(m)2655 4409 y Ft(i)203 b F2(if)24 b FA(v)3019 4427 y Fu(l)3071 4409 y Fx(=)j FA(v)3215 4423 y Fu(r)505 4564 y F2([)r F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(E)t(Q)33 b FA(x)r F2(])140 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1415 4578 y Fu(r)1475 4564 y FB(:)r(:)27 b FA(v)1597 4582 y Fu(l)1649 4564 y FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)1910 4578 y Fu(m)1970 4564 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2658 4578 y Fu(m)2718 4564 y Ft(i)140 b F2(else)523 4940 y(A)22 b(function)j(call)e(consists)i(of)e(popping)i(the)e(parameters)i(from)d (the)h(stack)h(and)g(transfer)n(-)382 5070 y(ing)g(them)g(to)g(the)g (store,)h(sa)n(ving)g(the)g(return)g(address)h(on)e(the)g(stack)h(and)f (\002nally)h(jumping)g(to)1831 5652 y(43)p eop end %%Page: 44 46 TeXDict begin 44 45 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(the)i(function)h(block)g(statement.)g(Here,)e FA(V)1739 563 y Fz(1)1776 548 y FB(,)16 b(.)h(.)g(.)f(,)f FA(V)2030 562 y Fu(n)2094 548 y F2(are)24 b(the)g(formal)g(parameters:) 382 769 y([)r F0(I)t(N)t(V)q(O)t(K)t(E)t(S)t(T)m(A)l(T)t(I)t(C)33 b FA(F)r F2(])176 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1479 783 y Fu(n)1549 769 y FB(:)r(:)28 b(.)17 b(.)g(.)27 b(:)r(:)h FA(v)1877 784 y Fz(1)1941 769 y FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2202 783 y Fu(m)2262 769 y Ft(i)28 b(\))f(h)7 b FD(j)r Fx(\()t FA(F)s Fx(\))q FB(,)21 b FA(p)r(c)29 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3090 732 y Fr(0)3089 792 y Fu(m)3148 769 y Ft(i)1356 924 y F2(where)25 b FA(s)r(t)r(o)1714 886 y Fr(0)1713 946 y Fu(m)1798 924 y Fx(=)i FA(s)r(t)r(o)2007 938 y Fu(m)2066 924 y Fx([)r FD(n)r Fx(\()q FA(V)2233 939 y Fz(1)2273 924 y Fx(\))h Ft(7)r(!)f FA(v)2502 939 y Fz(1)2540 924 y FB(,)16 b(.)h(.)g(.)g(,)f FD(n)r Fx(\()q FA(V)2879 938 y Fu(n)2922 924 y Fx(\))28 b Ft(7)r(!)g FA(v)3153 938 y Fu(n)3196 924 y Fx(])382 1079 y F2([)r F0(I)t(N)t(V)q(O)t(K)t(E)t(V)t(I)t(RT)t(U)q(A)t(L)k FA(F)r F2(])99 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)1479 1093 y Fu(n)1549 1079 y FB(:)r(:)28 b(.)17 b(.)g(.)27 b(:)r(:)h FA(v)1877 1094 y Fz(1)1941 1079 y FB(:)r(:)f FA(o)i FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)2346 1093 y Fu(m)2406 1079 y Ft(i)28 b(\))f(h)7 b FD(j)r Fx(\()t FA(F)s Fx(\))q FB(,)21 b FA(p)r(c)29 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3234 1041 y Fr(0)3233 1101 y Fu(m)3292 1079 y Ft(i)1356 1233 y F2(where)25 b FA(s)r(t)r(o)1714 1196 y Fr(0)1713 1256 y Fu(m)1798 1233 y Fx(=)i FA(s)r(t)r(o)2007 1247 y Fu(m)2066 1233 y Fx([)r FD(n)r Fx(\()q FA(V)2233 1248 y Fz(1)2273 1233 y Fx(\))h Ft(7)r(!)f FA(v)2502 1248 y Fz(1)2540 1233 y FB(,)16 b(.)h(.)g(.)g(,)f FD(n)r Fx(\()q FA(V)2879 1247 y Fu(n)2922 1233 y Fx(\))28 b Ft(7)r(!)g FA(v)3153 1247 y Fu(n)3196 1233 y Fx(])1356 1388 y F2(and)d FA(o)h F2(is)d(an)g(object)i(reference)h(for)e (\002nding)g(the)g(function)382 1764 y(A)d(return)i(jumps)f(to)g(the)g (sa)n(v)o(ed)h(return)h(address,)f(lea)n(ving)h(the)e(returned)j(v)n (alue)d(on)g(top)h(of)f(the)382 1894 y(stack)i(\()r F0(F)t(R)t(E)t(T)t (U)t(R)t(N)k F2(is)c(de\002ned)g(similarly\):)582 2115 y([)r F0(I)t(R)t(E)t(T)t(U)t(R)t(N)r F2(])219 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)30 b FB(:)r(:)i FA(p)r(c)1611 2129 y Fu(r)1670 2115 y FB(:)r(:)27 b FA(s)q FB(,)16 b FA(s)r(t)r(o)1931 2129 y Fu(m)1991 2115 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)2299 2129 y Fu(r)2351 2115 y Fx(+)19 b FB(1,)d FA(v)28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2859 2129 y Fu(m)2919 2115 y Ft(i)382 2491 y F2(F)o(or)23 b FR(v)o(oid)f F2(procedures,)k(we)d(need)j F0(R)t(E)t(T)t(U)t(R)t(N)h F2(instead:)663 2712 y([)r F0(R)t(E)t(T)t(U)t(R)t(N)r F2(])300 b Ft(h)7 b FA(p)r(c)q FB(,)21 b FA(p)r(c)1595 2726 y Fu(r)1655 2712 y FB(:)r(:)28 b FA(s)q FB(,)16 b FA(s)r(t)r(o)1917 2726 y Fu(m)1976 2712 y Ft(i)28 b(\))g(h)7 b FA(p)r(c)2285 2726 y Fu(r)2337 2712 y Fx(+)18 b FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2696 2726 y Fu(m)2756 2712 y Ft(i)382 3134 y FP(4.1.7)99 b(T)-7 b(ype)25 b(con)l(v)o(ersion)h (instructions)382 3325 y F2(The)33 b(JVM)g(de\002nes)h(se)n(v)o(eral)h (instructions)i(for)d(con)l(v)o(erting)j(between)d(the)g(dif)n(ferent)i (basic)382 3455 y(types.)22 b(Belo)n(w)e(are)h(the)g(speci\002cations)j (for)d(inte)o(ger)n(-\003oating)j(point)e(con)l(v)o(ersions;)27 b F0(I)t F2(2)t F0(D)r F2(,)c F0(D)t F2(2)t F0(I)r F2(,)384 3584 y F0(F)t F2(2)t F0(D)28 b F2(and)g F0(D)t F2(2)t F0(F)g F2(are)e(de\002ned)g(in)f(the)g(same)h(manner)g(for)f(con)l(v)o (ersions)k(to)c(and)h(from)f(double-)382 3714 y(precision)h(\003oating) e(point)h(numbers.)390 3935 y([)r F0(I)t F2(2)t F0(F)r F2(])102 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)886 3951 y Fu(i)938 3935 y FB(:)r(:)27 b FA(s)q FB(,)16 b FA(s)r(t)r(o)1199 3949 y Fu(m)1259 3935 y Ft(i)27 b(\))h(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d FA(v)1817 3953 y Fu(f)1876 3935 y FB(:)r(:)27 b FA(s)q FB(,)16 b FA(s)r(t)r(o)2137 3949 y Fu(m)2197 3935 y Ft(i)763 4090 y F2(where)25 b FA(v)1056 4106 y Fu(i)1102 4090 y F2(is)f(an)f(inte)o(ger)i(and)g FA(v)1779 4108 y Fu(f)1834 4090 y F2(is)g FA(v)1966 4106 y Fu(i)2012 4090 y F2(in)f(the)g(\003oating)g(point)h(representation)390 4245 y([)r F0(F)t F2(2)t F0(I)r F2(])102 b Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(v)895 4262 y Fu(f)955 4245 y FB(:)r(:)27 b FA(s)q FB(,)16 b FA(s)r(t)r(o)1216 4259 y Fu(m)1276 4245 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(v)1825 4261 y Fu(i)1876 4245 y FB(:)r(:)27 b FA(s)q FB(,)16 b FA(s)r(t)r(o)2137 4259 y Fu(m)2197 4245 y Ft(i)763 4400 y F2(where)25 b FA(v)1065 4417 y Fu(f)1120 4400 y F2(is)e(a)g(\003oating)i(point)g(number)f(and)h FA(v)2279 4416 y Fu(i)2329 4400 y Fx(=)i Ft(b)r FA(v)2525 4417 y Fu(f)2560 4400 y Ft(c)d F2(is)f(an)h(inte)o(ger)382 4869 y FS(4.2)119 b(T)-9 b(ranslation)382 5093 y F2(The)27 b(translation)k(of)d(programs)i(from)e(our)g(language)i(to)e(JVM)f (code)i(is)f(performed)i(by)e(the)382 5223 y(recursi)n(v)o(e)21 b(function)i Ft(T)43 b F2(de\002ned)21 b(in)e(the)h(follo)n(wing)h (sections.)h(Since)e(our)g(model)g(of)g(the)g(JVM)382 5353 y(does)32 b(not)f(tak)o(e)h(v)n(ariable)g(and)g(function)h(en)l (vironments)i(into)c(account,)i(de\002ning)f(a)f(useful)1831 5652 y(44)p eop end %%Page: 45 47 TeXDict begin 45 46 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(semantic)g(equi)n(v)n(alence)h(relation)g(for)d(the)h (tople)n(v)o(el)h(transitions)i(w)o(ould)d(be)g(dif)n(\002cult.)g (Hence,)382 678 y(we)29 b(shall)h(focus)h(on)f(the)g(e)o(xpressions)j (and)d(statements,)h(and)f(not)g(specify)i(the)e(translation)382 808 y(step)24 b(for)g(the)g(tople)n(v)o(el)h(constructs.)523 937 y(F)o(or)i(impro)o(v)o(ed)h(readability)-6 b(,)31 b(a)c(semicolon)j(will)d(denote)i(sequencing)i(of)d(instructions,)382 1067 y(and)k(whene)n(v)o(er)h(we)e(de\002ne)h(a)f(label,)i(it)e(is)h (assumed)h(that)g(it)e(is)h(uniquely)i(de\002ned)f(so)e(that)382 1197 y(name)24 b(clashes)h(do)e(not)h(occur)-5 b(.)25 b(The)e(function)k Ft(V)k F2(is)23 b(reused)i(from)e(Section)i(3.2.4.) 382 1464 y FP(4.2.1)99 b(Expr)n(essions)951 1746 y Ft(T)25 b Fx(\()r FA(C)s Fx(\))j(=)g F0(L)t(D)t(C)f FA(v)642 b F2(where)25 b FA(v)j Fx(=)f Ft(C)7 b Fx(\()r Ft(V)i Fx(\()r FA(C)s Fx(\))r(\))847 1901 y Ft(T)24 b Fx(\()q FW(\()r FA(E)q FW(\))q Fx(\))k(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(N)t(O)t(P)382 2122 y F2(The)31 b(follo)n(wing)i(e) o(xpressions)h(assume)e(that)g(the)g(type)g(of)f(the)h(immediate)g (constituents)j(is)382 2252 y(inte)o(ger)-5 b(.)29 b(The)f(similar)h (translations)i(for)e(\003oating)g(point)g(numbers)h(are)e(constructed) j(by)e(re-)382 2382 y(placing)e F0(I)f F2(with)f F0(F)r F2(.)926 2603 y Ft(T)g Fx(\()q FA(V)6 b Fx(\))28 b(=)g F0(I)t(L)t(O)r(A)t(D)f FA(l)844 b F2(where)25 b FA(l)30 b Fx(=)d FD(n)r Fx(\()q FA(V)6 b Fx(\))754 2758 y Ft(T)24 b Fx(\()s FA(E)921 2773 y Fz(1)959 2758 y FW(+)r FA(E)1071 2772 y Fz(2)1109 2758 y Fx(\))k(=)f Ft(T)e Fx(\()s FA(E)1438 2773 y Fz(1)1477 2758 y Fx(\))q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1720 2772 y Fz(2)1759 2758 y Fx(\))q FB(;)17 b F0(I)t(A)t(D)t(D) 754 2913 y Ft(T)24 b Fx(\()s FA(E)921 2928 y Fz(1)959 2913 y FW(-)r FA(E)1071 2927 y Fz(2)1109 2913 y Fx(\))k(=)f Ft(T)e Fx(\()s FA(E)1438 2928 y Fz(1)1477 2913 y Fx(\))q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1720 2927 y Fz(2)1759 2913 y Fx(\))q FB(;)17 b F0(I)t(S)t(U)t(B)754 3067 y Ft(T)24 b Fx(\()s FA(E)921 3082 y Fz(1)959 3067 y FW(*)r FA(E)1071 3081 y Fz(2)1109 3067 y Fx(\))k(=)f Ft(T)e Fx(\()s FA(E)1438 3082 y Fz(1)1477 3067 y Fx(\))q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1720 3081 y Fz(2)1759 3067 y Fx(\))q FB(;)17 b F0(I)t(M)t(U)t(L)754 3222 y Ft(T)24 b Fx(\()s FA(E)921 3237 y Fz(1)959 3222 y FW(/)r FA(E)1071 3236 y Fz(2)1109 3222 y Fx(\))k(=)f Ft(T)e Fx(\()s FA(E)1438 3237 y Fz(1)1477 3222 y Fx(\))q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1720 3236 y Fz(2)1759 3222 y Fx(\))q FB(;)17 b F0(I)t(D)t(I)t(V) 754 3377 y Ft(T)24 b Fx(\()s FA(E)921 3392 y Fz(1)959 3377 y FW(\045)r FA(E)1071 3391 y Fz(2)1109 3377 y Fx(\))k(=)f Ft(T)e Fx(\()s FA(E)1438 3392 y Fz(1)1477 3377 y Fx(\))q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1720 3391 y Fz(2)1759 3377 y Fx(\))q FB(;)17 b F0(I)t(R)t(E)t(M)883 3532 y Ft(T)25 b Fx(\()q FW(-)r FA(E)r Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(N)t(E)t(G)382 3753 y F2(The)23 b(boolean)j(operators)g(need)e(only)g(be)g(de\002ned)g(for)g (inte)o(gers)h(\(i.e.)e(con)l(v)o(erted)j(booleans\):)491 3974 y Ft(T)f Fx(\()s FA(E)659 3989 y Fz(1)697 3974 y FW(&&)q FA(E)863 3988 y Fz(2)901 3974 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1230 3989 y Fz(1)1269 3974 y Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)27 b F1(f)o(alse)9 b FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1930 3988 y Fz(2)1969 3974 y Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)27 b F1(f)o(alse)9 b FB(;)17 b F0(L)t(D)t(C)26 b Ft(C)7 b Fx(\()s F0(T)e Fx(\))r FB(;)17 b F0(G)t(O)q(T)s(O)25 b F1(end)12 b FB(;)1029 4129 y F1(f)o(alse)7 b F2(:)q FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(F)e Fx(\))q FB(;)15 b F1(end)10 b F2(:)491 4283 y Ft(T)25 b Fx(\()s FA(E)659 4299 y Fz(1)697 4283 y FW(||)q FA(E)863 4297 y Fz(2)901 4283 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1230 4299 y Fz(1)1269 4283 y Fx(\))q FB(;)17 b F0(I)t(F)t(N)t(E)27 b F1(true)9 b FB(;)16 b Ft(T)24 b Fx(\()s FA(E)1900 4297 y Fz(2)1939 4283 y Fx(\))q FB(;)17 b F0(I)t(F)t(N)t(E)28 b F1(true)8 b FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(F)t Fx(\))r FB(;)17 b F0(G)t(O)q(T)s(O)25 b F1(end)12 b FB(;)1029 4438 y F1(true)7 b F2(:)q FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(T)t Fx(\))r FB(;)15 b F1(end)10 b F2(:)675 4593 y Ft(T)25 b Fx(\()q FW(!)r FA(E)r Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)28 b F1(true)9 b FB(;)17 b F0(L)t(D)t(C)26 b Ft(C)7 b Fx(\()s F0(F)e Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)26 b F1(end)11 b FB(;)1029 4748 y F1(true)c F2(:)q FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(T)t Fx(\))r FB(;)15 b F1(end)10 b F2(:)382 4969 y(The)23 b(translation)k(of)e FA(E)1108 4984 y Fz(1)1145 4969 y FW(==)q FA(E)1311 4983 y Fz(2)1371 4969 y F2(for)f(inte)o(gers)h(is)594 5190 y Ft(T)g Fx(\()s FA(E)762 5205 y Fz(1)799 5190 y FW(==)r FA(E)966 5204 y Fz(2)1004 5190 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1333 5205 y Fz(1)1371 5190 y Fx(\))q FB(;)16 b Ft(T)26 b Fx(\()s FA(E)1615 5204 y Fz(2)1653 5190 y Fx(\))q FB(;)17 b F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(E)t(Q)31 b F1(true)8 b FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(F)e Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)25 b F1(end)12 b FB(;)1222 5345 y F1(true)7 b F2(:)r FB(;)17 b F0(L)t(D)t(C)26 b Ft(C)7 b Fx(\()s F0(T)e Fx(\))r FB(;)15 b F1(end)10 b F2(:)1831 5652 y(45)p eop end %%Page: 46 48 TeXDict begin 46 47 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 383 548 a Ft(T)j Fx(\()s FA(E)551 563 y Fz(1)589 548 y FW(!=)q FA(E)755 562 y Fz(2)793 548 y Fx(\))k F2(is)g(de\002ned)g (by)g(replacing)k F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(E)t(Q)i F2(with)30 b F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(N)t(E)r F2(,)j(for)d Ft(T)25 b Fx(\()s FA(E)3147 563 y Fz(1)3184 548 y FW(<)r FA(E)3296 562 y Fz(2)3334 548 y Fx(\))382 678 y F2(replacing)20 b(with)g F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(L)m (T)s F2(,)k Ft(T)h Fx(\()s FA(E)1536 693 y Fz(1)1574 678 y FW(>)q FA(E)1685 692 y Fz(2)1723 678 y Fx(\))19 b F2(with)h F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(G)t(T)r F2(,)k Ft(T)g Fx(\()s FA(E)2590 693 y Fz(1)2628 678 y FW(<=)q FA(E)2794 692 y Fz(2)2833 678 y Fx(\))18 b F2(with)i F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(L)t(E)382 808 y F2(and)25 b Ft(T)g Fx(\()s FA(E)705 823 y Fz(1)743 808 y FW(>=)q FA(E)909 822 y Fz(2)947 808 y Fx(\))f F2(with)i F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(G)t(E)r F2(.)523 937 y(F)o(or)d(\003oating)h(point)h(v)n(alues,)f(it)g(is)563 1123 y Ft(T)h Fx(\()s FA(E)731 1138 y Fz(1)769 1123 y FW(==)q FA(E)935 1137 y Fz(2)973 1123 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1302 1138 y Fz(1)1341 1123 y Fx(\))q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1584 1137 y Fz(2)1623 1123 y Fx(\))q FB(;)17 b F0(F)t(C)t(M)t(P)t(G)t FB(;)g F0(I)t(F)t(E)t(Q)27 b F1(true)9 b FB(;)17 b F0(L)t(D)t(C)26 b Ft(C)7 b Fx(\()s F0(F)e Fx(\))r FB(;)17 b F0(G)t(O)q(T)s(O)25 b F1(end)12 b FB(;)1192 1277 y F1(true)7 b F2(:)q FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(T)e Fx(\))q FB(;)15 b F1(end)10 b F2(:)382 1463 y(and)27 b Ft(T)e Fx(\()s FA(E)707 1478 y Fz(1)745 1463 y FW(!=)q FA(E)911 1477 y Fz(2)949 1463 y Fx(\))h F2(is)g(de\002ned)g(by)g(replacing)k F0(I)t(F)t(E)t(Q)f F2(with)e F0(I)t(F)t(N)t(E)r F2(,)h Ft(T)d Fx(\()s FA(E)2653 1478 y Fz(1)2691 1463 y FW(<)q FA(E)2802 1477 y Fz(2)2841 1463 y Fx(\))h F2(is)f(de\002ned)i(by)382 1592 y(replacing)22 b(with)f F0(I)t(FL)t(T)r F2(,)i Ft(T)i Fx(\()s FA(E)1297 1607 y Fz(1)1334 1592 y FW(>)r FA(E)1446 1606 y Fz(2)1484 1592 y Fx(\))20 b F2(with)i F0(I)t(F)t(G)t(T)r F2(,)g Ft(T)j Fx(\()s FA(E)2110 1607 y Fz(1)2147 1592 y FW(<=)r FA(E)2314 1606 y Fz(2)2352 1592 y Fx(\))20 b F2(with)h F0(I)t(FL)t(E)j F2(and)d Ft(T)k Fx(\()s FA(E)3092 1607 y Fz(1)3130 1592 y FW(>=)q FA(E)3296 1606 y Fz(2)3334 1592 y Fx(\))382 1722 y F2(with)g F0(I)t(F)t(G)t(E)r F2(.)523 1852 y(Function)k(parameters)h(are)e(transfered)i(on)e(the)g (stack.)g(Thus)g(a)f(function)j(call)e(consists)382 1982 y(of)23 b(e)n(v)n(aluating)j(the)e(parameters)i(and)e(transfering)i (control:)796 2167 y Ft(T)f Fx(\()t FA(F)s Fx(\()s FA(E)1057 2182 y Fz(1)1095 2167 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)1349 2181 y Fu(n)1392 2167 y Fx(\))r(\))28 b(=)f Ft(T)e Fx(\()s FA(E)1758 2182 y Fz(1)1797 2167 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)25 b Fx(\()s FA(E)2200 2181 y Fu(n)2243 2167 y Fx(\))q FB(;)17 b F0(I)t(N)t(V)q(O)t(K)t(E)t(S)t(T)m(A)l(T)t(I)t(C)26 b FA(F)382 2352 y F2(The)20 b(function)j(will)d(then)h(lea)n(v)o(e)g (the)g(computed)h(v)n(alue)f(on)g(top)g(of)f(the)h(stack)g(upon)h (returning.)382 2482 y(This)i(translation)k(actually)e(only)f(co)o(v)o (ers)h(calls)f(of)f(one)h(kind)h(of)e(functions;)j(in)e(some)f(cases,) 382 2612 y(an)31 b F0(I)t(N)t(V)q(O)t(K)t(E)t(V)t(I)t(RT)t(U)q(A)t(L)j F2(instruction)f(is)28 b(needed)j(instead)g(of)g F0(I)t(N)t(V)q(O)t(K)t (E)t(S)t(T)m(A)l(T)t(I)t(C)r F2(,)j(b)n(ut)29 b(the)h(de-)382 2742 y(tails)i(are)g(be)o(yond)h(the)f(abstraction)j(le)n(v)o(el)d(of)f (our)h(JVM)f(model)h(\226)f(Section)i(5.5)e(discusses)382 2872 y(them)23 b(for)h(the)g(actual)h(implementation.)523 3001 y(The)j(po)n(wer)g(and)g(the)g(random)h(operator)h(ha)n(v)o(e)f (no)f(direct)h(equi)n(v)n(alent)i(in)c(the)i(JVM)e(in-)382 3131 y(struction)38 b(set.)f(Instead)h(we)d(translate)k(them)d(to)g (function)i(calls.)f(F)o(or)e(inte)o(gers,)j(the)o(y)f(are)382 3261 y(translated)26 b(to:)733 3446 y Ft(T)f Fx(\()s FA(E)901 3461 y Fz(1)939 3446 y FW(\210)r FA(E)1051 3460 y Fz(2)1089 3446 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1418 3461 y Fz(1)1456 3446 y Fx(\))q FB(;)17 b F0(I)t F2(2)t F0(D)5 b FB(;)16 b Ft(T)24 b Fx(\()s FA(E)1873 3460 y Fz(2)1912 3446 y Fx(\))q FB(;)17 b F0(I)t F2(2)t F0(D)t FB(;)1309 3601 y F0(I)t(N)t(V)q(O)t(K)t(E)t(S)t(T)m(A)l(T)t(I)t(C)30 b F2(ja)n(v)n(a/lang/Math/po)n(w\(DD\))5 b FB(;)17 b F0(D)t F2(2)t F0(I)624 3756 y Ft(T)25 b Fx(\()s FA(E)792 3771 y Fz(1)830 3756 y FW(...)q FA(E)1051 3770 y Fz(2)1089 3756 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1418 3771 y Fz(1)1456 3756 y Fx(\))q FB(;)17 b F0(D)t(U)t(P)t FB(;)f Ft(T)25 b Fx(\()s FA(E)1897 3770 y Fz(2)1935 3756 y Fx(\))q FB(;)17 b F0(S)t(W)-5 b(A)t(P)5 b FB(;)17 b F0(I)t(S)t(U)t(B)s FB(;)g F0(L)t(D)t(C)26 b FB(1;)17 b F0(I)t(A)t(D)t(D)s FB(;)g F0(I)t F2(2)t F0(F)5 b FB(;)1309 3911 y F0(G)t(E)t(T)t(S)t(T)m (A)l(T)t(I)t(C)30 b F2(Scenario/random)d(Lja)n(v)n(a/util/Random;)t FB(;)1309 4065 y F0(I)t(N)t(V)q(O)t(K)t(E)t(V)t(I)t(RT)t(U)q(A)t(L)i F2(ja)n(v)n(a/util/Random/ne)o(xtFloat)q(\(\)F)6 b FB(;)1309 4220 y F0(F)t(M)t(U)t(L)t FB(;)17 b F0(F)t F2(2)t F0(I)5 b FB(;)17 b F0(I)t(A)t(D)t(D)382 4405 y F2(F)o(or)23 b(\003oating)h(point)h(numbers,)f(we)f(translate)j(them)d(to:)735 4590 y Ft(T)i Fx(\()s FA(E)903 4605 y Fz(1)941 4590 y FW(\210)q FA(E)1052 4604 y Fz(2)1090 4590 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1419 4605 y Fz(1)1458 4590 y Fx(\))q FB(;)17 b F0(F)t F2(2)t F0(D)t FB(;)f Ft(T)25 b Fx(\()s FA(E)1891 4604 y Fz(2)1930 4590 y Fx(\))q FB(;)17 b F0(F)t F2(2)t F0(D)t FB(;)1311 4745 y F0(I)t(N)t(V)q(O)t(K)t(E)t(S)t(T)m(A)l (T)t(I)t(C)30 b F2(ja)n(v)n(a/lang/Math/po)n(w\(DD\))5 b FB(;)17 b F0(D)t F2(2)t F0(F)626 4900 y Ft(T)25 b Fx(\()s FA(E)794 4915 y Fz(1)832 4900 y FW(...)p FA(E)1052 4914 y Fz(2)1090 4900 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1419 4915 y Fz(1)1458 4900 y Fx(\))q FB(;)17 b F0(D)t(U)t(P)s FB(;)f Ft(T)25 b Fx(\()s FA(E)1898 4914 y Fz(2)1937 4900 y Fx(\))q FB(;)17 b F0(S)t(W)-5 b(A)t(P)5 b FB(;)17 b F0(F)t(S)t(U)t(B)s FB(;)1311 5055 y F0(G)t(E)t(T)t(S)t(T)m(A)l(T)t(I)t (C)30 b F2(Scenario/random)d(Lja)n(v)n(a/util/Random;)t FB(;)1311 5209 y F0(I)t(N)t(V)q(O)t(K)t(E)t(V)t(I)t(RT)t(U)q(A)t(L)i F2(ja)n(v)n(a/util/Random/ne)o(xtFloat\(\))q(F)5 b FB(;)1311 5364 y F0(F)t(M)t(U)t(L)t FB(;)17 b F0(F)o(A)t(D)t(D)1831 5652 y F2(46)p eop end %%Page: 47 49 TeXDict begin 47 48 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(Hence,)e(re)o(garding)h(the)f(random)g(operator)l(,)i (we)c(could)j(ob)o(viously)h(of)n(fer)e(the)g(same)f(function-)382 678 y(ality)28 b(by)g(pro)o(viding)i(a)e(function)i(that)e(returns)h(a) f(random)g(number)h(between)g(0)e(and)h(1.)f(But)382 808 y(although)j(the)54 b FY(...)e F2(construct)30 b(is)e(not)h(more)f (po)n(werful)h(than)g(a)f(random)h(number)g(generator)382 937 y(function,)c(it)f(is)f(much)h(more)f(con)l(v)o(enient)k(and)d(con) l(v)o(e)o(ys)h(the)f(intended)i(meaning)f(directly)-6 b(.)523 1067 y(The)24 b(same)g(observ)n(ation)j(is)d(e)n(v)o(en)h(more) f(true)h(for)f(the)h(multiple-choice)j(construct.)e(It)e(is)382 1197 y(translated)f(to)e(\002rst)f(computing)j(the)e(sums)i FA(E)1812 1211 y Fu(w)1861 1223 y Fl(1)1893 1197 y F2(,)f FA(E)1994 1211 y Fu(w)2043 1223 y Fl(1)2091 1197 y Fx(+)c FA(E)2236 1211 y Fu(w)2285 1222 y Fl(2)2317 1197 y F2(,)i(.)14 b(.)g(.)g(,)20 b FA(E)2570 1211 y Fu(w)2619 1223 y Fl(1)2667 1197 y Fx(+)e FA(E)2812 1211 y Fu(w)2861 1222 y Fl(2)2909 1197 y Fx(+)f FB(.)g(.)g(.)h Fx(+)g FA(E)3263 1211 y Fu(w)3313 1221 y Fk(n)3348 1197 y F2(,)382 1327 y(putting)24 b(them)f(on)f(the)h(stack.)g(The)f(last)h(sum)f(is)h(then)g(multiplied) h(by)f(a)f(random)h(number)h(be-)382 1457 y(tween)36 b(0)g(and)h(1,)e(and)h(compared)i(with)e(the)g(sums,)g(one)h(by)f(one.) g(If)g(it)g(is)g(lar)n(ger)i(than)e(a)382 1587 y(gi)n(v)o(en)e(sum,)e (the)h(corresponding)38 b(right)c(side)f(e)o(xpression)j(is)d(e)n(v)n (aluated)i(and)f(the)f(compu-)382 1717 y(tation)e(stops.)g(So)f (basically)-6 b(,)32 b(each)f(colon)h(pair)e(is)g(assigned)j(an)d (interv)n(al)i(with)e(a)g(size)g(that)382 1846 y(depends)24 b(on)e(the)g(left)h(side)f(v)n(alue,)h(a)e(random)i(number)g(is)f (generated)i(and)f(the)f(pair)h(in)f(which)382 1976 y(interv)n(al)j (the)f(number)g(f)o(alls)h(in)e(is)h(chosen.)466 2222 y Ft(T)h Fx(\()s FA(E)635 2236 y Fu(w)684 2248 y Fl(1)717 2222 y FW(:)q FA(E)829 2236 y Fu(v)863 2248 y Fl(1)896 2222 y FW(|)16 b FB(.)h(.)g(.)f FW(|)r FA(E)1199 2236 y Fu(w)1249 2246 y Fk(n)1284 2222 y FW(:)r FA(E)1397 2236 y Fu(v)1432 2246 y Fk(n)1469 2222 y Fx(\))28 b(=)576 2385 y Ft(T)d Fx(\()s FA(E)745 2399 y Fu(w)794 2411 y Fl(1)828 2385 y Fx(\))q FB(;)108 b F0(D)t(U)t(P)s FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1360 2399 y Fu(w)1409 2410 y Fl(2)1443 2385 y Fx(\))q FB(;)17 b F0(F)o(A)t(D)t(D)s FB(;)f(.)h(.)g(.)f(;)h F0(D)t(U)t(P)s FB(;)f Ft(T)25 b Fx(\()s FA(E)2291 2399 y Fu(w)2341 2409 y Fk(n)2377 2385 y Fx(\))q FB(;)17 b F0(F)o(A)t(D)t(D)577 2540 y(A)t(L)t(O)r(A)t(D) 27 b F2(1)s FB(;)17 b F0(I)t(N)t(V)q(O)t(K)t(E)t(V)t(I)t(RT)t(U)q(A)t (L)29 b F2(ja)n(v)n(a/util/Random/ne)o(xtFloat\()q(\)F)6 b FB(;)17 b F0(F)t(M)t(U)t(L)s FB(;)577 2695 y F0(D)t(U)t(P)t F2(_)t F0(X)t F2(1)5 b FB(;)17 b F0(F)t(C)t(M)t(P)t(G)t FB(;)g F0(I)t(F)t(G)t(T)27 b F1(ne)o(xt)1602 2709 y Fu(n)r Fr(\000)q Fz(2)1731 2695 y FB(;)16 b Ft(f)s F0(P)t(O)t(P)5 b FB(;)16 b Ft(g)2050 2657 y Fu(n)r Fr(\000)q Fz(1)2179 2695 y Ft(T)25 b Fx(\()s FA(E)2348 2709 y Fu(v)2383 2719 y Fk(n)2421 2695 y Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)26 b F1(end)11 b FB(;)k F1(ne)o(xt)3068 2709 y Fu(n)r Fr(\000)q Fz(2)3198 2695 y F2(:)577 2850 y F0(D)t(U)t(P)t F2(_)t F0(X)t F2(1)5 b FB(;)17 b F0(F)t(C)t(M)t(P)t(G)t FB(;)g F0(I)t(F)t(G)t(T)27 b F1(ne)o(xt)1602 2864 y Fu(n)r Fr(\000)q Fz(3)1731 2850 y FB(;)16 b Ft(f)s F0(P)t(O)t(P)5 b FB(;)16 b Ft(g)2050 2812 y Fu(n)r Fr(\000)q Fz(2)2179 2850 y Ft(T)25 b Fx(\()s FA(E)2348 2864 y Fu(v)2383 2876 y Fk(n)r Fi(\000)q Fl(1)2486 2850 y Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)25 b F1(end)12 b FB(;)j F1(ne)o(xt)3133 2864 y Fu(n)r Fr(\000)q Fz(3)3262 2850 y F2(:)591 3004 y FB(.)i(.)g(.)577 3159 y F0(D)t(U)t(P)t F2(_)t F0(X)t F2(1)5 b FB(;)17 b F0(F)t(C)t(M)t(P)t(G) t FB(;)g F0(I)t(F)t(G)t(T)27 b F1(ne)o(xt)1601 3173 y Fz(0)1639 3159 y FB(;)17 b F0(P)t(O)t(P)t FB(;)f Ft(T)25 b Fx(\()s FA(E)2032 3173 y Fu(v)2066 3184 y Fl(2)2100 3159 y Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)26 b F1(end)12 b FB(;)j F1(ne)o(xt)2747 3173 y Fz(0)2785 3159 y F2(:)577 3314 y F0(P)t(O)t(P)t FB(;)h Ft(T)25 b Fx(\()s FA(E)930 3328 y Fu(v)964 3340 y Fl(1)998 3314 y Fx(\))q FB(;)15 b F1(end)10 b F2(:)382 3514 y(The)26 b F0(D)t(U)t(P)t F2(_)t F0(X)t F2(1)i(ensures)e(that)f(a)e(cop)o(y)i(of)f(the)h(random)g (number)g(is)f(al)o(w)o(ays)h(a)n(v)n(ailable)h(on)f(the)382 3644 y(stack)h(belo)n(w)f(the)g(top)g(sum.)g(The)f(sequences)k(of)f F0(P)t(O)t(P)g F2(statements)g(are)e(needed)i(to)e(clear)h(the)382 3774 y(stack)33 b(in)g(those)g(cases)h(where)f(not)g(all)f(of)h(the)f (sums)h(are)g(needed,)h(e.g.)e(for)g(the)h(\002rst)f(case)382 3904 y(\()r FA(E)470 3918 y Fu(v)505 3928 y Fk(n)541 3904 y F2(\))23 b(we)g(need)h(to)g(issue)h FA(n)20 b Ft(\000)e FB(1)26 b F0(P)t(O)t(P)r F2(s.)382 4170 y FP(4.2.2)99 b(Statements)382 4361 y F2(The)20 b(statements)i(that)e(changes)j(v)n (ariable)e(v)n(alues)h(depend)g(on)e(the)g(type)h(of)f(the)h(v)n (ariable.)g(The)382 4491 y(translation)j(for)c(inte)o(gers)j(follo)n (ws,)e(for)f(\003oating)i(point)g(v)n(ariables)g(we)e(substitute)25 b F0(F)e F2(for)g F0(I)f F2(and)382 4621 y FB(1)h F2(for)h FB(1.0)p F2(:)696 4842 y Ft(T)h Fx(\()q FA(V)31 b Fx(=)d FA(E)q FW(;)q Fx(\))g(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(S)t(T)s(O)t(R)t(E)30 b FA(l)762 b F2(where)25 b FA(l)30 b Fx(=)d FD(n)r Fx(\()q FA(V)6 b Fx(\))769 4997 y Ft(T)25 b Fx(\()q FW(++)p FA(V)5 b FW(;)p Fx(\))28 b(=)g F0(I)t(L)t(O)r(A)t(D)f FA(l)t FB(;)17 b F0(L)t(D)t(C)26 b FB(1;)17 b F0(I)t(A)t(D)t(D)s FB(;)g F0(I)t(S)t(T)s(O)t(R)t(E)29 b FA(l)169 b F2(where)25 b FA(l)30 b Fx(=)d FD(n)r Fx(\()q FA(V)6 b Fx(\))769 5152 y Ft(T)25 b Fx(\()q FW(--)p FA(V)5 b FW(;)p Fx(\))28 b(=)g F0(I)t(L)t(O)r(A)t(D)f FA(l)t FB(;)17 b F0(L)t(D)t(C)26 b FB(1;)17 b F0(I)t(S)t(U)t(B)t FB(;)g F0(I)t(S)t(T)s(O)t(R)t(E)29 b FA(l)185 b F2(where)25 b FA(l)30 b Fx(=)d FD(n)r Fx(\()q FA(V)6 b Fx(\))548 5307 y Ft(T)25 b Fx(\()q FW(return)14 b FA(E)q FW(;)q Fx(\))28 b(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(R)t(E)t(T)t(U)t(R)t(N)1831 5652 y F2(47)p eop end %%Page: 48 50 TeXDict begin 48 49 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(The)h(rest)h(of)f(the)h(statements)i(do)d(not)h (depend)i(on)d(the)h(type)g(of)g(the)g(e)o(xpressions)i(in)l(v)n(olv)o (ed.)844 769 y Ft(T)f Fx(\()q FW({)q FA(S)1062 784 y Fz(1)1099 769 y FB(,)16 b(.)h(.)g(.)g(,)f FA(S)1349 783 y Fu(n)1390 769 y FW(})q Fx(\))28 b(=)f Ft(T)d Fx(\()r FA(S)1769 784 y Fz(1)1808 769 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)25 b Fx(\()r FA(S)2206 783 y Fu(n)2249 769 y Fx(\))665 924 y Ft(T)g Fx(\()q FW([const])53 b FD(t)k FA(V)5 b FW(;)q Fx(\))28 b(=)g F0(N)t(O)t(P)482 1079 y Ft(T)d Fx(\()q FW([const])53 b FD(t)58 b FA(V)31 b Fx(=)d FA(E)q FW(;)q Fx(\))g(=)f Ft(T)d Fx(\()q FA(V)32 b Fx(=)c FA(E)q FW(;)q Fx(\))840 1233 y Ft(T)c Fx(\()q FW(while\()p FA(E)q FW(\))q FA(S)r Fx(\))k(=)e F1(start)9 b F2(:)q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)28 b F1(done)9 b FB(;)16 b Ft(T)25 b Fx(\()r FA(S)r Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)26 b F1(start)10 b FB(;)1664 1388 y F1(done)d F2(:)1003 1543 y Ft(T)25 b Fx(\()q FW(if\()q FA(E)q FW(\))q FA(S)r Fx(\))j(=)f Ft(T)d Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)29 b F1(done)9 b FB(;)16 b Ft(T)24 b Fx(\()r FA(S)r Fx(\))q FB(;)15 b F1(done)7 b F2(:)691 1698 y Ft(T)24 b Fx(\()q FW(if\()r FA(E)q FW(\))p FA(S)1131 1713 y Fz(1)1191 1698 y F2(else)h FA(S)1407 1712 y Fz(2)1446 1698 y Fx(\))j(=)f Ft(T)d Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)29 b F1(else)8 b FB(;)16 b Ft(T)25 b Fx(\()r FA(S)2405 1713 y Fz(1)2444 1698 y Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)26 b F1(done)8 b FB(;)1664 1852 y F1(else)f F2(:)r FB(;)16 b Ft(T)24 b Fx(\()r FA(S)2039 1866 y Fz(2)2078 1852 y Fx(\))q FB(;)15 b F1(done)7 b F2(:)382 2074 y(The)29 b(translation)j(of)d(a)f(function)k(call)d (statement)i(depends)g(on)f(whether)g(the)f(function)i(is)e(a)382 2203 y FR(v)o(oid)22 b F2(function.)k(If)d(not,)g(the)h(returned)i(v)n (alue)e(must)g(be)f(popped)j(of)d(the)h(stack.)704 2425 y Ft(T)g Fx(\()t FA(F)s Fx(\()s FA(E)964 2440 y Fz(1)1003 2425 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)1257 2439 y Fu(n)1300 2425 y Fx(\))r(\))28 b(=)f Ft(T)e Fx(\()s FA(E)1666 2440 y Fz(1)1705 2425 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)24 b Fx(\()s FA(E)2107 2439 y Fu(n)2150 2425 y Fx(\))q FB(;)17 b F0(I)t(N)t(V)q(O)t(K)t(E)t(S)t(T)m(A)l(T)t(I)5 b(C)25 b FA(F)1465 2579 y F2(if)e(the)h(return)g(type)h(of)h FA(F)f F2(is)e FR(v)o(oid)704 2734 y Ft(T)h Fx(\()t FA(F)s Fx(\()s FA(E)964 2749 y Fz(1)1003 2734 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)1257 2748 y Fu(n)1300 2734 y Fx(\))r(\))28 b(=)f Ft(T)e Fx(\()s FA(E)1666 2749 y Fz(1)1705 2734 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)24 b Fx(\()s FA(E)2107 2748 y Fu(n)2150 2734 y Fx(\))q FB(;)17 b F0(I)t(N)t(V)q(O)t(K)t(E)t(S) t(T)m(A)l(T)t(I)5 b(C)25 b FA(F)r FB(;)17 b F0(P)t(O)t(P)1465 2889 y F2(else)382 3204 y FS(4.3)119 b(Corr)n(ectness)29 b(of)h(the)g(translation)382 3428 y F2(T)-7 b(o)26 b(pro)o(v)o(e)i (that)g(the)f(translation)32 b Ft(T)50 b F2(is)27 b(correct)i(we)e (need)h(to)f(de\002ne)h(what)f(semantic)i(equi)n(v-)382 3558 y(alence)f(means.)f(First)f(we)g(de\002ne)h(that)i FA(s)r(t)r(o)1818 3506 y Fr(C)1801 3558 y Fx(=)k FA(s)r(t)r(o)2016 3572 y Fu(m)2101 3558 y F2(if)26 b(and)h(only)h(if)f FA(s)r(t)r(o)j F2(is)c(de\002ned)i(for)f(the)382 3687 y(same)34 b(locations)j(as)e FA(s)r(t)r(o)1185 3701 y Fu(m)1277 3687 y F2(\(e)o(xcept)h(for)e(retv)n(al)h(which)g(is)f(not)h (needed)h(in)e(the)h(JVM\))e(and)383 3817 y Ft(C)7 b Fx(\()r FA(s)r(t)r(o)s Fx(\()r FA(l)e Fx(\))r(\))32 b(=)27 b FA(s)r(t)r(o)967 3831 y Fu(m)1026 3817 y Fx(\()r FA(l)5 b Fx(\))25 b F2(for)f(an)o(y)g(such)g(location)j FA(l)t F2(.)382 4022 y FX(De\002nition)c(1)45 b FV(An)18 b(e)n(xpr)m(ession)23 b FA(E)18 b FV(is)g(semantically)j(equivalent)g(with)d(the)g(code)i FA(c)r Fx([)7 b FA(p)r(c)q FB(,)16 b(.)h(.)g(.)h(,)j FA(p)r(c)15 b Fx(+)383 4152 y FA(k)21 b Ft(\000)d FB(1)q Fx(])25 b FV(when)f(a)f(tr)o(ansition)869 4373 y Ft(h)s FA(E)q FB(,)16 b Fx(\()r FA(e)1079 4388 y Fu(F)1122 4373 y FB(,)g FA(e)1200 4388 y Fu(F)1232 4400 y Fk(G)1278 4373 y FB(,)g FA(e)1353 4388 y Fu(V)1409 4373 y FB(,)g FA(e)1484 4388 y Fu(V)1526 4400 y Fk(G)1571 4373 y FB(,)g FA(s)r(t)r(o)s Fx(\))r Ft(i)30 b(!)e(h)r FA(v)q FB(,)16 b Fx(\()r FA(e)2141 4388 y Fu(F)2185 4373 y FB(,)g FA(e)2263 4388 y Fu(F)2295 4400 y Fk(G)2340 4373 y FB(,)g FA(e)2415 4388 y Fu(V)2471 4373 y FB(,)g FA(e)2546 4388 y Fu(V)2588 4400 y Fk(G)2634 4373 y FB(,)g FA(s)r(t)r(o)2785 4335 y Fr(0)2810 4373 y Fx(\))r Ft(i)382 4594 y FV(e)n(xists)25 b(if)e(and)h(only)g(if)g(ther)m(e)g(is)f(a)g(\002nite)i(computation)h (sequence)1120 4815 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1472 4829 y Fu(m)1533 4815 y Ft(i)28 b(\))1689 4778 y Fr(\003)1754 4815 y Ft(h)7 b FA(p)r(c)21 b Fx(+)e FA(k)q FB(,)d Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)c FA(s)q FB(,)16 b FA(s)r(t)r(o)2538 4778 y Fr(0)2537 4838 y Fu(m)2597 4815 y Ft(i)382 5046 y FV(wher)m(e)26 b FA(s)r(t)r(o)785 4994 y Fr(C)769 5046 y Fx(=)k FA(s)r(t)r(o)981 5060 y Fu(m)1064 5046 y FV(and)d FA(s)r(t)r(o)1338 5013 y Fr(0)1409 4994 y(C)1393 5046 y Fx(=)j FA(s)r(t)r(o)1606 5013 y Fr(0)1605 5068 y Fu(m)1664 5046 y FV(.)24 b(A)g(statement)k FA(S)d FV(is)h(semantically)i(equivalent)g(with)382 5176 y(the)c(code)h FA(c)r Fx([)7 b FA(p)r(c)q FB(,)16 b(.)h(.)g(.)h(,)j FA(p)r(c)g Fx(+)e FA(k)i Ft(\000)e FB(1)q Fx(])24 b FV(when)g(a)f(tr)o (ansition)941 5397 y Ft(h)r FA(S)q FB(,)16 b Fx(\()r FA(e)1145 5412 y Fu(F)1188 5397 y FB(,)g FA(e)1266 5412 y Fu(F)1298 5424 y Fk(G)1343 5397 y FB(,)g FA(e)1418 5412 y Fu(V)1474 5397 y FB(,)g FA(e)1549 5412 y Fu(V)1591 5424 y Fk(G)1637 5397 y FB(,)g FA(s)r(t)r(o)s Fx(\))r Ft(i)30 b(!)e Fx(\()r FA(e)2085 5412 y Fu(F)2127 5397 y FB(,)16 b FA(e)2205 5412 y Fu(F)2237 5424 y Fk(G)2283 5397 y FB(,)g FA(e)2359 5359 y Fr(0)2358 5420 y Fu(V)2414 5397 y FB(,)g FA(e)2489 5412 y Fu(V)2531 5424 y Fk(G)2576 5397 y FB(,)g FA(s)r(t)r(o)2727 5359 y Fr(0)2753 5397 y Fx(\))q FB(,)1831 5652 y F2(48)p eop end %%Page: 49 51 TeXDict begin 49 50 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FV(e)n(xists)j(if)e(and)h(only)g(if)g(ther)m(e)g(is)f(a)g (\002nite)i(computation)h(sequence)1259 764 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1611 778 y Fu(m)1673 764 y Ft(i)28 b(\))1829 727 y Fr(\003)1893 764 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)q FB(,)c FA(s)q FB(,)g FA(s)r(t)r(o)2398 727 y Fr(0)2397 787 y Fu(m)2458 764 y Ft(i)382 990 y FV(wher)m(e)24 b FA(s)r(t)r(o)780 938 y Fr(C)763 990 y Fx(=)k FA(s)r(t)r(o)973 1004 y Fu(m)1054 990 y FV(and)d FA(s)r(t)r(o)1326 957 y Fr(0)1393 938 y(C)1377 990 y Fx(=)i FA(s)r(t)r(o)1587 957 y Fr(0)1586 1012 y Fu(m)1644 990 y FV(.)523 1190 y F2(So)i(a)g(piece)i(of)f (machine)h(code)g(is)e(equi)n(v)n(alent)k(to)c(an)h(e)o(xpression)j (pro)o(vided)f(both)e(ter)n(-)382 1320 y(minate)h(and)f(both)h(end)f (up)g(with)g(the)h(same)f(v)n(alue)g(and)h(same)f(store,)h(and)f(equi)n (v)n(alent)i(to)e(a)382 1450 y(statement)21 b(if)e(both)h(terminate)h (and)f(end)g(up)f(with)g(the)h(same)f(store.)h(The)f(correctness)k (proof)d(is)382 1580 y(then)i(based)h(on)f(sho)n(wing)h(that)f(e)o (xpressions)j(and)d(statements)i(are)e(semantically)j(equi)n(v)n(alent) 382 1710 y(with)e(the)h(machine)h(code)f(that)h Ft(T)47 b F2(produces.)523 1840 y(Since)32 b(the)g(generated)i(machine)f(code)f (for)g(inte)o(gers)i(and)e(\003oating)g(point)h(numbers)g(is)382 1969 y(the)23 b(same)g(barring)h(the)f(replacement)i(of)g F0(I)f F2(with)h F0(F)g F2(in)d(most)h(cases,)g(we)f(shall)i(only)g (pro)o(v)o(e)f(for)382 2099 y(inte)o(gers)i(e)o(xcept)g(where)f (completely)h(dif)n(ferent)h(instructions)h(are)c(generated.)382 2365 y FP(4.3.1)99 b(One)25 b(way)382 2556 y F2(First)34 b(we)f(shall)i(pro)o(v)o(e)f(that)h(if)f(the)g(untranslated)k(code)d (terminates,)g(then)g(the)f(translated)382 2686 y(code)22 b(terminates)i(too,)d(and)h(with)g(the)f(same)h(result.)g(W)-7 b(e)21 b(will)g(not)h(pro)o(v)o(e)g(this)g(for)g(the)g(po)n(wer)l(,)382 2816 y(random)d(and)g(multiple)h(choice)f(operators)i(since)f(the)o(y)e (are)h(mostly)g(an)f(e)o(x)o(ercise)i(in)e(assembly)382 2946 y(programming.)382 3170 y FX(Lemma)23 b(1)45 b FV(F)-10 b(or)24 b(all)g(e)n(xpr)m(essions)k FA(E)q FV(,)23 b(if)g(a)h(tr)o (ansition)i(for)f FA(E)f FV(e)n(xists)858 3386 y Ft(h)s FA(E)q FB(,)16 b Fx(\()r FA(e)1068 3401 y Fu(F)1111 3386 y FB(,)g FA(e)1189 3401 y Fu(F)1221 3413 y Fk(G)1266 3386 y FB(,)g FA(e)1341 3401 y Fu(V)1397 3386 y FB(,)g FA(e)1472 3401 y Fu(V)1514 3413 y Fk(G)1560 3386 y FB(,)g FA(s)r(t)r(o)s Fx(\))r Ft(i)30 b(!)d(h)r FA(v)q FB(,)16 b Fx(\()r FA(e)2129 3401 y Fu(F)2173 3386 y FB(,)g FA(e)2251 3401 y Fu(F)2283 3413 y Fk(G)2329 3386 y FB(,)g FA(e)2404 3401 y Fu(V)2460 3386 y FB(,)g FA(e)2535 3401 y Fu(V)2577 3413 y Fk(G)2622 3386 y FB(,)g FA(s)r(t)r(o)2773 3349 y Fr(0)2799 3386 y Fx(\))r Ft(i)q FB(,)382 3603 y FV(then)24 b(ther)m(e)g(is)g(a)f(\002nite)h(computation)j(sequence)1010 3819 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1362 3833 y Fu(m)1423 3819 y Ft(i)28 b(\))1579 3781 y Fr(\003)1643 3819 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)2649 3781 y Fr(0)2648 3841 y Fu(m)2707 3819 y Ft(i)382 4045 y FV(wher)m(e)24 b FA(c)r Fx([)7 b FA(p)r(c)q FB(,)16 b(.)h(.)g(.)h(,)j FA(p)r(c)g Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)c(\000)e FB(1)q Fx(])28 b(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))g FV(and)g FA(s)r(t)r(o)2294 3993 y Fr(C)2278 4045 y Fx(=)i FA(s)r(t)r(o)2487 4059 y Fu(m)2568 4045 y FV(and)e FA(s)r(t)r(o)2840 4012 y Fr(0)2908 3993 y(C)2891 4045 y Fx(=)j FA(s)r(t)r(o)3102 4012 y Fr(0)3101 4067 y Fu(m)3159 4045 y FV(.)523 4174 y(And)23 b(for)h(all)g (statements)i FA(S)q FV(,)d(if)g(a)g(tr)o(ansition)j(for)f FA(S)e FV(e)n(xists)941 4391 y Ft(h)r FA(S)q FB(,)16 b Fx(\()r FA(e)1145 4406 y Fu(F)1188 4391 y FB(,)g FA(e)1266 4406 y Fu(F)1298 4418 y Fk(G)1343 4391 y FB(,)g FA(e)1418 4406 y Fu(V)1474 4391 y FB(,)g FA(e)1549 4406 y Fu(V)1591 4418 y Fk(G)1637 4391 y FB(,)g FA(s)r(t)r(o)s Fx(\))r Ft(i)30 b(!)e Fx(\()r FA(e)2085 4406 y Fu(F)2127 4391 y FB(,)16 b FA(e)2205 4406 y Fu(F)2237 4418 y Fk(G)2283 4391 y FB(,)g FA(e)2359 4353 y Fr(0)2358 4414 y Fu(V)2414 4391 y FB(,)g FA(e)2489 4406 y Fu(V)2531 4418 y Fk(G)2576 4391 y FB(,)g FA(s)r(t)r(o)2727 4353 y Fr(0)2753 4391 y Fx(\))q FB(,)382 4607 y FV(then)24 b(ther)m(e)g(is)g(a)f(\002nite)h (computation)j(sequence)1152 4823 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1504 4837 y Fu(m)1565 4823 y Ft(i)28 b(\))1721 4785 y Fr(\003)1786 4823 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)r Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2505 4785 y Fr(0)2504 4845 y Fu(m)2565 4823 y Ft(i)382 5049 y FV(wher)m(e)24 b FA(c)r Fx([)7 b FA(p)r(c)q FB(,)16 b(.)h(.)g(.)h(,)j FA(p)r(c)g Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)r Fx(\))r Ft(j)c(\000)e FB(1)q Fx(])28 b(=)f Ft(T)e Fx(\()r FA(S)r Fx(\))f FV(and)h FA(s)r(t)r(o)2282 4997 y Fr(C)2265 5049 y Fx(=)j FA(s)r(t)r(o)2475 5063 y Fu(m)2556 5049 y FV(and)d FA(s)r(t)r(o)2828 5016 y Fr(0)2895 4997 y(C)2879 5049 y Fx(=)i FA(s)r(t)r(o)3089 5016 y Fr(0)3088 5071 y Fu(m)3146 5049 y FV(.)523 5273 y F2(W)-7 b(e)28 b(pro)o(v)o(e)h(the)h(lemma)e(by) h(induction)j(on)d(the)g(height)h(of)f(the)g(deri)n(v)n(ation)i(trees)f (of)f(the)382 5403 y(transitions.)1831 5652 y(49)p eop end %%Page: 50 52 TeXDict begin 50 51 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FX(The)f(case)j FA(C)r FX(:)91 b F2(Using)23 b(the)f(rule)h([lit],)g(we)e(ha)n(v)o(e)k Ft(h)r FA(C)r FB(,)16 b FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)r Ft(i)25 b F2(where)f FA(v)k Fx(=)f Ft(V)9 b Fx(\()r FA(C)s Fx(\))q F2(.)22 b(No)n(w)383 678 y Ft(T)j Fx(\()r FA(C)s Fx(\))j(=)g F0(L)t(D)t(C)f Ft(C)7 b Fx(\()r FA(v)r Fx(\))26 b F2(which)e(results)h(in)f(the)g(transition)j Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2554 692 y Fu(m)2615 678 y Ft(i)28 b(\))g(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)383 808 y FA(s)q FB(,)16 b FA(s)r(t)r(o)569 822 y Fu(m)629 808 y Ft(i)q F2(.)382 1063 y FX(The)22 b(case)j Fx(\()s FA(E)r Fx(\))q FX(:)93 b F2(If)23 b(there)i(is)e(a)g(transition)j(for)e (this)g(e)o(xpression,)i(the)e(rule)g([paren])1589 1212 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2102 1179 y Fr(0)2128 1212 y Ft(i)p 1534 1253 685 4 v 1535 1336 a(h)q FW(\()r FA(E)q FW(\))p FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2156 1310 y Fr(0)2182 1336 y Ft(i)382 1483 y F2(must)j(ha)n(v)o(e)h(been)g(used.) g(No)n(w)f Ft(T)25 b Fx(\()q FW(\()r FA(E)q FW(\))p Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(N)t(O)t(P)t F2(.)h(By)h(the)g(premise)i(of)e(the)g(transition)382 1613 y(rule,)25 b(since)g(the)f(deri)n(v)n(ation)j(tree)e(for)h FA(E)f F2(is)f(of)g(height)i(less)f(than)g(the)g(deri)n(v)n(ation)h (tree)f(for)g(the)382 1743 y(whole)h(e)o(xpression)i(the)d(follo)n (wing)i(computation)h(sequence)g(must)d(e)o(xist)h(by)f(the)h(inducti)n (v)o(e)382 1873 y(hypothesis)998 2003 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1350 2017 y Fu(m)1412 2003 y Ft(i)27 b(\))1567 1965 y Fr(\003)1632 2003 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)c FA(s)q FB(,)16 b FA(s)r(t)r(o)2637 1965 y Fr(0)2636 2025 y Fu(m)2696 2003 y Ft(i)q FB(.)382 2165 y F2(Then)23 b(the)j F0(N)t(O)t(P)g F2(computation)627 2343 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)c FA(s)q FB(,)16 b FA(s)r(t)r(o)1632 2305 y Fr(0)1631 2365 y Fu(m)1691 2343 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1,)e Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)3031 2305 y Fr(0)3030 2365 y Fu(m)3090 2343 y Ft(i)382 2520 y F2(concludes)26 b(the)e(proof)h(of)e (the)h(case.)382 2776 y FX(The)17 b(case)i FA(V)5 b FX(:)91 b F2(Using)18 b(the)g(rule)h([v)n(ar],)f(we)g(ha)n(v)o(e)h Ft(h)q FA(V)5 b FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)r Ft(i)21 b F2(where)e FA(v)28 b Fx(=)g FA(s)r(t)r(o)s Fx(\()5 b FA(L)3163 2791 y Fu(V)3221 2776 y Fx(\()q FA(V)g FB(,)16 b FA(e)3403 2791 y Fu(V)3460 2776 y FB(,)g FA(e)3535 2791 y Fu(V)3577 2803 y Fk(G)3623 2776 y Fx(\))r(\))q F2(.)382 2906 y(No)n(w)i Ft(T)24 b Fx(\()q FA(V)6 b Fx(\))29 b(=)f F0(I)t(L)t(O)r(A)t(D)f FA(l)21 b F2(where)f FA(l)30 b Fx(=)d FD(n)r Fx(\()q FA(V)6 b Fx(\))20 b F2(which)f(results)g(in)f(the)h(transition)i Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)3262 2920 y Fu(m)3324 2906 y Ft(i)27 b(\))383 3036 y(h)7 b FA(p)r(c)24 b Fx(+)e FB(1,)16 b FA(s)r(t)r(o)821 3050 y Fu(m)880 3036 y Fx(\()r FA(l)5 b Fx(\))44 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1303 3050 y Fu(m)1363 3036 y Ft(i)q F2(.)31 b(Since)i FD(n)r Fx(\()q FA(V)6 b Fx(\))33 b F2(gi)n(v)o(es)g(the)f(location)i(of)d FA(V)5 b F2(,)31 b(this)h(pro)o(v)o(es)h(the)382 3166 y(case.)382 3421 y FX(The)22 b(case)k FA(E)797 3436 y Fz(1)853 3421 y Fx(+)21 b FA(E)1000 3435 y Fz(2)1037 3421 y FX(:)91 b F2(If)24 b(there)g(is)g(a)f(transition)j(for)d(this)i(e)o(xpression,)g (the)f(rule)g([plus])758 3567 y Ft(h)s FA(E)851 3582 y Fz(1)888 3567 y FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)1229 3582 y Fz(1)1268 3567 y FB(,)16 b FA(e)1344 3534 y Fr(0)1368 3567 y Ft(i)94 b(h)s FA(E)1590 3581 y Fz(2)1628 3567 y FB(,)16 b FA(e)1704 3534 y Fr(0)1728 3567 y Ft(i)28 b(!)f(h)r FA(v)1992 3581 y Fz(2)2031 3567 y FB(,)16 b FA(e)2107 3534 y Fr(0)r(0)2152 3567 y Ft(i)p 757 3608 1432 4 v 1083 3691 a(h)s FA(E)1176 3706 y Fz(1)1214 3691 y FW(+)r FA(E)1326 3705 y Fz(2)1363 3691 y FB(,)g FA(e)r Ft(i)28 b(!)g(h)r FA(v)q FB(,)16 b FA(e)1780 3665 y Fr(0)r(0)1826 3691 y Ft(i)2289 3629 y F2(where)25 b FA(v)j Fx(=)f FA(v)2752 3644 y Fz(1)2809 3629 y Fx(+)19 b FA(v)2945 3643 y Fz(2)2983 3629 y F2(,)382 3838 y(must)34 b(ha)n(v)o(e)h(been)h(used.)g Ft(T)25 b Fx(\()s FA(E)1392 3853 y Fz(1)1429 3838 y FW(+)r FA(E)1541 3852 y Fz(2)1579 3838 y Fx(\))48 b(=)g Ft(T)24 b Fx(\()s FA(E)1948 3853 y Fz(1)1987 3838 y Fx(\))q FB(;)16 b Ft(T)26 b Fx(\()s FA(E)2231 3852 y Fz(2)2269 3838 y Fx(\))q FB(;)17 b F0(I)t(A)t(D)t(D)t F2(.)33 b(W)l(ith)i(the)g(assumption)382 3968 y(that)25 b(the)g(lemma)f(holds)i(for)f(the)g(immediate)h(constituents)i(\(the)d (deri)n(v)n(ation)i(trees)f(of)f(which)382 4098 y(ha)n(v)o(e)35 b(height)h(less)f(than)g(the)g(tree)g(of)f(the)h(entire)h(e)o (xpression\),)h(this)e(code)g(will)f(bring)i(the)382 4228 y(machine)25 b(through)g(the)f(follo)n(wing)h(transition)h (sequences:)612 4405 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)964 4419 y Fu(m)1025 4405 y Ft(i)28 b(\))1181 4368 y Fr(\003)1245 4405 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1678 4420 y Fz(1)1717 4405 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1957 4420 y Fz(1)1998 4405 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2323 4368 y Fr(0)2322 4428 y Fu(m)2382 4405 y Ft(i)1088 4560 y(\))1181 4523 y Fr(\003)1245 4560 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1678 4575 y Fz(1)1717 4560 y Fx(\))r Ft(j)c Fx(+)e Ft(j)r(T)26 b Fx(\()s FA(E)2086 4574 y Fz(2)2124 4560 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)2364 4574 y Fz(2)2405 4560 y Fx(\))28 b FB(:)r(:)f Ft(C)7 b Fx(\()r FA(v)2681 4575 y Fz(1)2721 4560 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3046 4523 y Fr(0)r(0)3045 4583 y Fu(m)3105 4560 y Ft(i)382 4738 y F2(The)29 b(program)i(counter)g(in)e(the)h(last)g (con\002guration)i(must)e(no)n(w)f(point)h(to)i F0(I)t(A)t(D)t(D)f F2(which)f(by)382 4868 y(de\002nition)25 b(results)g(in)f(the)g (transition)466 5071 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)899 5086 y Fz(1)938 5071 y Fx(\))r Ft(j)20 b Fx(+)g Ft(j)r(T)25 b Fx(\()s FA(E)1306 5085 y Fz(2)1345 5071 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1585 5085 y Fz(2)1626 5071 y Fx(\))28 b FB(:)r(:)f Ft(C)7 b Fx(\()r FA(v)1902 5086 y Fz(1)1942 5071 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2267 5033 y Fr(0)r(0)2266 5093 y Fu(m)2326 5071 y Ft(i)1472 5225 y(\))28 b(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)2024 5240 y Fz(1)2063 5225 y Fx(\))r Ft(j)20 b Fx(+)g Ft(j)r(T)25 b Fx(\()s FA(E)2431 5239 y Fz(2)2470 5225 y Fx(\))r Ft(j)c Fx(+)d FB(1,)e Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)3192 5188 y Fr(0)r(0)3191 5248 y Fu(m)3251 5225 y Ft(i)382 5403 y F2(where)25 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))29 b(=)e Ft(C)7 b Fx(\()r FA(v)1067 5418 y Fz(1)1107 5403 y Fx(\))21 b(+)e Ft(C)7 b Fx(\()r FA(v)1391 5417 y Fz(2)1431 5403 y Fx(\))q F2(.)1831 5652 y(50)p eop end %%Page: 51 53 TeXDict begin 51 52 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FX(The)e(cases)25 b FA(E)829 563 y Fz(1)883 548 y Ft(\000)18 b FA(E)1027 562 y Fz(2)1065 548 y FX(,)k FA(E)1165 563 y Fz(1)1219 548 y Ft(\003)d FA(E)1338 562 y Fz(2)1376 548 y FX(,)j FA(E)1476 563 y Fz(1)1514 548 y FB(/)s FA(E)1627 562 y Fz(2)1665 548 y FX(,)g FA(E)1765 563 y Fz(1)1802 548 y FB(\045)r FA(E)1935 562 y Fz(2)1994 548 y FX(and)f Ft(\000)s FA(E)q FX(:)91 b F2(These)22 b(are)g(all)f(similar)h(to)g(the)382 678 y(case)k FA(E)618 693 y Fz(1)674 678 y Fx(+)21 b FA(E)821 692 y Fz(2)858 678 y F2(.)382 941 y FX(The)k(case)k FA(E)803 956 y Fz(1)841 941 y FU(&&)q FA(E)1007 955 y Fz(2)1044 941 y FX(:)91 b F2(If)26 b(there)i(is)e(a)g(transition,)j(it)d(must)h(ha)n(v)o(e)g (been)g(concluded)i(with)e(the)382 1070 y(rule)f([and-sc])i(or)d ([and].)i(W)-7 b(e)25 b(start)h(by)g(splitting)i(the)e(proof)h(into)f (tw)o(o)f(cases)i(depending)i(on)382 1200 y(whether)f FA(E)756 1215 y Fz(1)817 1200 y F2(e)n(v)n(aluates)f(to)g F0(F)g F2(or)e(to)i F0(T)r F2(.)e(If)i FA(E)1772 1215 y Fz(1)1833 1200 y F2(e)n(v)n(aluates)g(to)g F0(F)r F2(,)e(the)h(rule)f ([and-sc])i(must)e(ha)n(v)o(e)382 1330 y(been)f(used:)1342 1409 y Ft(h)s FA(E)1435 1424 y Fz(1)1473 1409 y FB(,)16 b FA(e)r Ft(i)28 b(!)f(h)r FA(v)1813 1424 y Fz(1)1852 1409 y FB(,)16 b FA(e)1928 1376 y Fr(0)1953 1409 y Ft(i)p 1259 1450 812 4 v 1260 1533 a(h)s FA(E)1353 1548 y Fz(1)1391 1533 y FW(&&)q FA(E)1557 1547 y Fz(2)1594 1533 y FB(,)g FA(e)r Ft(i)29 b(!)e(h)s F0(F)t FB(,)16 b FA(e)2010 1507 y Fr(0)2034 1533 y Ft(i)2172 1471 y F2(if)24 b FA(v)2297 1486 y Fz(1)2361 1471 y Fx(=)k F0(F)382 1680 y F2(The)23 b(e)o(xpression)j(is)e(translated)i(to)491 1901 y Ft(T)f Fx(\()s FA(E)659 1916 y Fz(1)697 1901 y FW(&&)q FA(E)863 1915 y Fz(2)901 1901 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1230 1916 y Fz(1)1269 1901 y Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)27 b F1(f)o(alse)9 b FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1930 1915 y Fz(2)1969 1901 y Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)27 b F1(f)o(alse)9 b FB(;)17 b F0(L)t(D)t(C)26 b Ft(C)7 b Fx(\()s F0(T)e Fx(\))r FB(;)17 b F0(G)t(O)q(T)s(O)25 b F1(end)12 b FB(;)1029 2056 y F1(f)o(alse)7 b F2(:)q FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(F)e Fx(\))q FB(;)15 b F1(end)10 b F2(:)382 2277 y(which)24 b(results)h(in)e(the)h (follo)n(wing)h(computation)h(sequence)493 2498 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)845 2512 y Fu(m)906 2498 y Ft(i)28 b(\))1062 2460 y Fr(\003)1126 2498 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1559 2513 y Fz(1)1598 2498 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1838 2513 y Fz(1)1879 2498 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2204 2460 y Fr(0)2203 2520 y Fu(m)2263 2498 y Ft(i)111 b F2(e)o(x)o(ecution) 26 b(of)e Ft(T)h Fx(\()s FA(E)3050 2513 y Fz(1)3089 2498 y Fx(\))969 2653 y Ft(\))i(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1652 2615 y Fr(0)1651 2675 y Fu(m)1711 2653 y Ft(i)663 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(F)t(E)t(Q)i F1(f)o(alse)969 2807 y Ft(\))g(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))20 b(+)f FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)1806 2770 y Fr(0)1805 2830 y Fu(m)1865 2807 y Ft(i)509 b F2(e)o(x)o(ecution)26 b(of)d F1(f)o(alse)7 b F2(:)969 2962 y Ft(\))27 b(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))20 b(+)f FB(2,)d Ft(C)7 b Fx(\()s F0(F)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2082 2925 y Fr(0)2081 2985 y Fu(m)2141 2962 y Ft(i)233 b F2(e)o(x)o(ecution)26 b(of)f F0(L)t(D)t(C)i Ft(C)7 b Fx(\()s F0(F)t Fx(\))969 3117 y Ft(\))27 b(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))20 b(+)f FB(3,)d Ft(C)7 b Fx(\()s F0(F)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2082 3079 y Fr(0)2081 3139 y Fu(m)2141 3117 y Ft(i)233 b F2(e)o(x)o(ecution)26 b(of)d F1(end)10 b F2(:)382 3338 y(The)30 b(e)o(xistence)j(of)d(the)h (computation)j(sequence)f(for)g FA(E)2207 3353 y Fz(1)2274 3338 y F2(follo)n(ws)e(from)g(the)g(premise)g(and)382 3468 y(the)e(inducti)n(v)o(e)h(hypothesis)h(since)f(the)f(deri)n(v)n (ation)i(tree)e(for)h FA(E)2399 3483 y Fz(1)2464 3468 y F2(is)f(of)f(height)i(less)f(than)h(the)382 3598 y(deri)n(v)n(ation)d (tree)f(for)f(the)g(whole)h(e)o(xpression.)h(Since)f Ft(j)r(T)f Fx(\()s FA(E)2299 3613 y Fz(1)2337 3598 y FW(&&)q FA(E)2503 3612 y Fz(2)2542 3598 y Fx(\))r Ft(j)31 b Fx(=)e FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))21 b(+)e FB(3)p F2(,)24 b(this)382 3728 y(pro)o(v)o(es)g(the)g(case.)523 3858 y(If)h FA(E)663 3873 y Fz(1)723 3858 y F2(e)n(v)n(aluates)h(to)f F0(T)r F2(,)f(then)g(the)g(rule)g([and])g(must)g(ha)n(v)o(e)g(been)g (used:)948 4042 y Ft(h)s FA(E)1041 4058 y Fz(1)1079 4042 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)1420 4058 y Fz(1)1458 4042 y FB(,)16 b FA(e)1534 4009 y Fr(0)1559 4042 y Ft(i)93 b(h)s FA(E)1780 4056 y Fz(2)1818 4042 y FB(,)16 b FA(e)1894 4009 y Fr(0)1919 4042 y Ft(i)28 b(!)f(h)r FA(v)2183 4056 y Fz(2)2222 4042 y FB(,)16 b FA(e)2298 4009 y Fr(0)r(0)2342 4042 y Ft(i)p 947 4083 1432 4 v 1228 4166 a(h)s FA(E)1321 4181 y Fz(1)1359 4166 y FW(&&)q FA(E)1525 4180 y Fz(2)1562 4166 y FB(,)g FA(e)r Ft(i)29 b(!)e(h)r FA(v)1903 4180 y Fz(2)1942 4166 y FB(,)16 b FA(e)2018 4140 y Fr(0)r(0)2062 4166 y Ft(i)2480 4104 y F2(if)24 b FA(v)2605 4119 y Fz(1)2669 4104 y Fx(=)k F0(T)382 4350 y F2(Then)h(the)g(follo)n(wing)h(computation)i(sequence)f (must)e(e)o(xist)g(by)g(the)g(premises)h(and)g(the)f(in-)382 4480 y(ducti)n(v)o(e)c(hypothesis)h(\(we)d(let)h FA(k)29 b Fx(=)e Ft(j)r(T)e Fx(\()s FA(E)1715 4495 y Fz(1)1754 4480 y Fx(\))r Ft(j)c Fx(+)d FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()s FA(E)2276 4494 y Fz(2)2315 4480 y Fx(\))r Ft(j)g F2(for)f(con)l(v)o(enience\):)493 4701 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)845 4715 y Fu(m)906 4701 y Ft(i)28 b(\))1062 4664 y Fr(\003)1126 4701 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1559 4716 y Fz(1)1598 4701 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1838 4716 y Fz(1)1879 4701 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2204 4664 y Fr(0)2203 4724 y Fu(m)2263 4701 y Ft(i)111 b F2(e)o(x)o(ecution)26 b(of)e Ft(T)h Fx(\()s FA(E)3050 4716 y Fz(1)3089 4701 y Fx(\))969 4856 y Ft(\))i(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1520 4871 y Fz(1)1559 4856 y Fx(\))r Ft(j)c Fx(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2002 4819 y Fr(0)2001 4879 y Fu(m)2061 4856 y Ft(i)313 b F2(e)o(x)o(ecution) 26 b(of)f F0(I)t(F)t(E)t(Q)i F1(f)o(alse)969 5011 y Ft(\))1062 4973 y Fr(\003)1126 5011 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)q FB(,)c Ft(C)7 b Fx(\()r FA(v)1582 5025 y Fz(2)1623 5011 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1948 4973 y Fr(0)r(0)1947 5033 y Fu(m)2007 5011 y Ft(i)367 b F2(e)o(x)o(ecution)26 b(of)e Ft(T)h Fx(\()s FA(E)3050 5025 y Fz(2)3089 5011 y Fx(\))1831 5652 y F2(51)p eop end %%Page: 52 54 TeXDict begin 52 53 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(The)j(computation)j(no)n(w)d(proceeds)j(depending)g (on)f FA(v)2120 562 y Fz(2)2158 548 y F2(.)e(If)h FA(v)2338 562 y Fz(2)2406 548 y Fx(=)32 b F0(F)s F2(,)24 b(then)i(the)g (computation)382 678 y(sequence)g(is)466 924 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)q FB(,)c Ft(C)7 b Fx(\()r FA(v)922 938 y Fz(2)963 924 y Fx(\))27 b FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)1288 886 y Fr(0)r(0)1287 946 y Fu(m)1347 924 y Ft(i)1144 1087 y(\))27 b(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1827 1049 y Fr(0)r(0)1826 1109 y Fu(m)1887 1087 y Ft(i)514 b F2(e)o(x)o(ecution)25 b(of)h F0(I)t(F)t(E)t(Q)h F1(f)o(alse)1144 1242 y Ft(\))g(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))21 b(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1981 1204 y Fr(0)r(0)1980 1264 y Fu(m)2040 1242 y Ft(i)361 b F2(e)o(x)o(ecution)25 b(of)f F1(f)o(alse)7 b F2(:)1144 1396 y Ft(\))27 b(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))21 b(+)d FB(2,)e Ft(C)7 b Fx(\()s F0(F)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2257 1359 y Fr(0)r(0)2256 1419 y Fu(m)2316 1396 y Ft(i)85 b F2(e)o(x)o(ecution)25 b(of)h F0(L)t(D)t(C)g Ft(C)7 b Fx(\()s F0(F)e Fx(\))1144 1551 y Ft(\))27 b(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))21 b(+)d FB(3,)e Ft(C)7 b Fx(\()s F0(F)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2257 1514 y Fr(0)r(0)2256 1574 y Fu(m)2316 1551 y Ft(i)85 b F2(e)o(x)o(ecution)25 b(of)f F1(end)10 b F2(:)382 1751 y(If)24 b FA(v)512 1765 y Fz(2)577 1751 y Fx(=)k F0(T)s F2(,)22 b(then)i(the)g(computation)i(sequence)g(is)466 1997 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)q FB(,)c Ft(C)7 b Fx(\()r FA(v)922 2011 y Fz(2)963 1997 y Fx(\))27 b FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)1288 1960 y Fr(0)r(0)1287 2020 y Fu(m)1347 1997 y Ft(i)1179 2161 y(\))28 b(h)7 b FA(p)r(c)21 b Fx(+)e FA(k)i Fx(+)e FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)1957 2123 y Fr(0)r(0)1956 2183 y Fu(m)2016 2161 y Ft(i)385 b F2(e)o(x)o(ecution)25 b(of)h F0(I)t(F)t(E)t(Q)h F1(f)o(alse)1179 2315 y Ft(\))h(h)7 b FA(p)r(c)21 b Fx(+)e FA(k)i Fx(+)e FB(2,)d Ft(C)7 b Fx(\()s F0(T)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2237 2278 y Fr(0)r(0)2236 2338 y Fu(m)2296 2315 y Ft(i)105 b F2(e)o(x)o(ecution)25 b(of)h F0(L)t(D)t(C)g Ft(C)7 b Fx(\()s F0(T)e Fx(\))1179 2470 y Ft(\))28 b(h)r FD(l)r Fx(\()q F1(end)s Fx(\))q FB(,)16 b Ft(C)7 b Fx(\()s F0(T)f Fx(\))27 b FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)2104 2432 y Fr(0)r(0)2103 2492 y Fu(m)2162 2470 y Ft(i)239 b F2(e)o(x)o(ecution)25 b(of)h F0(G)t(O)q(T)s(O)f F1(end)1179 2625 y Ft(\))j(h)r FD(l)r Fx(\()q F1(end)s Fx(\))21 b(+)d FB(1,)e Ft(C)7 b Fx(\()s F0(T)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2257 2587 y Fr(0)r(0)2256 2647 y Fu(m)2316 2625 y Ft(i)85 b F2(e)o(x)o(ecution)25 b(of)f F1(end)10 b F2(:)382 2832 y(And)24 b Ft(j)r(T)h Fx(\()s FA(E)757 2847 y Fz(1)795 2832 y FW(&&)q FA(E)961 2846 y Fz(2)1000 2832 y Fx(\))r Ft(j)j Fx(=)f FD(l)r Fx(\()q F1(end)s Fx(\))20 b(+)f FB(1)p F2(.)382 3094 y FX(The)j(case)k FA(E)797 3109 y Fz(1)835 3094 y FU(||)q FA(E)1001 3108 y Fz(2)1061 3094 y FX(and)c FU(!)r FA(E)q FX(:)91 b F2(Similar)23 b(to)h(the)g(case)i FA(E)2219 3109 y Fz(1)2256 3094 y FW(&&)q FA(E)2422 3108 y Fz(2)2459 3094 y F2(.)382 3357 y FX(The)k(case)k FA(E)813 3372 y Fz(1)850 3357 y FU(==)q FA(E)1016 3371 y Fz(2)1084 3357 y FX(f)n(or)d(integers:)94 b F2(If)31 b(there)h(is)f(a)g (transition,)j(it)d(must)g(ha)n(v)o(e)h(been)g(con-)382 3487 y(cluded)25 b(with)e(the)h(rule)g([equals]:)606 3731 y Ft(h)s FA(E)699 3746 y Fz(1)737 3731 y FB(,)16 b FA(e)r Ft(i)28 b(!)f(h)r FA(v)1077 3746 y Fz(1)1116 3731 y FB(,)16 b FA(e)1192 3698 y Fr(0)1217 3731 y Ft(i)93 b(h)s FA(E)1438 3745 y Fz(2)1476 3731 y FB(,)16 b FA(e)1552 3698 y Fr(0)1576 3731 y Ft(i)28 b(!)g(h)r FA(v)1841 3745 y Fz(2)1879 3731 y FB(,)16 b FA(e)1955 3698 y Fr(0)r(0)2000 3731 y Ft(i)p 605 3772 1432 4 v 904 3855 a(h)s FA(E)997 3870 y Fz(1)1035 3855 y FW(==)q FA(E)1201 3869 y Fz(2)1239 3855 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1655 3829 y Fr(0)r(0)1701 3855 y Ft(i)2137 3793 y F2(where)25 b FA(v)j Fx(=)2554 3606 y Fp(8)2554 3688 y(<)2554 3852 y(:)2638 3723 y F0(T)94 b F2(if)24 b FA(v)2901 3738 y Fz(1)2966 3723 y Fx(=)j FA(v)3110 3737 y Fz(2)2638 3879 y F0(F)98 b F2(else)382 4095 y(Since)24 b(the)f(e)o(xpression)k (is)c(translated)j(to)594 4316 y Ft(T)f Fx(\()s FA(E)762 4331 y Fz(1)799 4316 y FW(==)r FA(E)966 4330 y Fz(2)1004 4316 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1333 4331 y Fz(1)1371 4316 y Fx(\))q FB(;)16 b Ft(T)26 b Fx(\()s FA(E)1615 4330 y Fz(2)1653 4316 y Fx(\))q FB(;)17 b F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(E)t(Q)31 b F1(true)8 b FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(F)e Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)25 b F1(end)12 b FB(;)1222 4471 y F1(true)7 b F2(:)r FB(;)17 b F0(L)t(D)t(C)26 b Ft(C)7 b Fx(\()s F0(T)e Fx(\))r FB(;)15 b F1(end)10 b F2(:)382 4692 y(the)24 b(follo)n(wing)h(computation)i(sequences)g(must)d(e)o (xist)g(by)g(the)g(premises)h(and)g(the)f(inducti)n(v)o(e)382 4822 y(hypothesis)i(\(the)e(deri)n(v)n(ation)h(trees)g(for)g FA(E)1723 4837 y Fz(1)1783 4822 y F2(and)h FA(E)1994 4836 y Fz(2)2053 4822 y F2(are)e(of)f(height)i(less)f(than)g(the)g (deri)n(v)n(ation)382 4952 y(tree)g(for)g(the)f(whole)h(e)o (xpression\):)612 5173 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)964 5187 y Fu(m)1025 5173 y Ft(i)28 b(\))1181 5135 y Fr(\003)1245 5173 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1678 5188 y Fz(1)1717 5173 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1957 5188 y Fz(1)1998 5173 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2323 5135 y Fr(0)2322 5195 y Fu(m)2382 5173 y Ft(i)1088 5328 y(\))1181 5290 y Fr(\003)1245 5328 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1678 5343 y Fz(1)1717 5328 y Fx(\))r Ft(j)c Fx(+)e Ft(j)r(T)26 b Fx(\()s FA(E)2086 5342 y Fz(2)2124 5328 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)2364 5342 y Fz(2)2405 5328 y Fx(\))28 b FB(:)r(:)f Ft(C)7 b Fx(\()r FA(v)2681 5343 y Fz(1)2721 5328 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3046 5290 y Fr(0)r(0)3045 5350 y Fu(m)3105 5328 y Ft(i)1831 5652 y F2(52)p eop end %%Page: 53 55 TeXDict begin 53 54 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(The)31 b(computation)j(no)n(w)d(depends)i(on)e (whether)j Ft(C)7 b Fx(\()r FA(v)2136 563 y Fz(1)2176 548 y Fx(\))42 b(=)f Ft(C)7 b Fx(\()r FA(v)2503 562 y Fz(2)2543 548 y Fx(\))q F2(.)31 b(Let)g(for)g(con)l(v)o(enience)383 678 y FA(k)d Fx(=)f Ft(j)r(T)f Fx(\()s FA(E)745 693 y Fz(1)783 678 y Fx(\))r Ft(j)16 b Fx(+)g Ft(j)r(T)27 b Fx(\()s FA(E)1145 692 y Fz(2)1184 678 y Fx(\))r Ft(j)q F2(,)19 b(then)i(if)e(this)h(is)g(the)g(case,)g(we)f(ha)n(v)o(e)h(the)g (computation)i(sequence:)466 882 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)q FB(,)c Ft(C)7 b Fx(\()r FA(v)922 896 y Fz(2)963 882 y Fx(\))27 b FB(:)r(:)h Ft(C)7 b Fx(\()r FA(v)1239 897 y Fz(1)1279 882 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1604 844 y Fr(0)r(0)1603 904 y Fu(m)1663 882 y Ft(i)953 1045 y(\))27 b(h)r FD(l)r Fx(\()q F1(true)t Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1607 1007 y Fr(0)r(0)1606 1067 y Fu(m)1666 1045 y Ft(i)518 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(E)t (Q)30 b F1(true)953 1199 y Ft(\))d(h)r FD(l)r Fx(\()q F1(true)t Fx(\))20 b(+)f FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)1761 1162 y Fr(0)r(0)1760 1222 y Fu(m)1820 1199 y Ft(i)364 b F2(e)o(x)o(ecution)26 b(of)d F1(true)7 b F2(:)953 1354 y Ft(\))27 b(h)r FD(l)r Fx(\()q F1(true)t Fx(\))20 b(+)f FB(2,)d Ft(C)7 b Fx(\()s F0(T)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2041 1317 y Fr(0)r(0)2040 1377 y Fu(m)2100 1354 y Ft(i)84 b F2(e)o(x)o(ecution)26 b(of)f F0(L)t(D)t(C)i Ft(C)7 b Fx(\()s F0(T)e Fx(\))953 1509 y Ft(\))27 b(h)r FD(l)r Fx(\()q F1(true)t Fx(\))20 b(+)f FB(3,)d Ft(C)7 b Fx(\()s F0(T)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2041 1471 y Fr(0)r(0)2040 1531 y Fu(m)2100 1509 y Ft(i)84 b F2(e)o(x)o(ecution)26 b(of)d F1(end)10 b F2(:)382 1673 y(Since)29 b Ft(j)r(T)c Fx(\()s FA(E)807 1688 y Fz(1)845 1673 y FW(==)q FA(E)1011 1687 y Fz(2)1050 1673 y Fx(\))r Ft(j)36 b Fx(=)g FD(l)r Fx(\()q F1(true)s Fx(\))22 b(+)e FB(3)p F2(,)28 b(this)g(pro)o(v)o(es)h (this)g(case.)f(If)h Ft(C)7 b Fx(\()r FA(v)2752 1688 y Fz(1)2792 1673 y Fx(\))36 b Ft(6)r Fx(=)g Ft(C)7 b Fx(\()r FA(v)3110 1687 y Fz(2)3150 1673 y Fx(\))29 b F2(then)382 1803 y(we)23 b(ha)n(v)o(e)h(the)g(computation)i(sequence) 466 2007 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)q FB(,)c Ft(C)7 b Fx(\()r FA(v)922 2021 y Fz(2)963 2007 y Fx(\))27 b FB(:)r(:)h Ft(C)7 b Fx(\()r FA(v)1239 2022 y Fz(1)1279 2007 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1604 1969 y Fr(0)r(0)1603 2029 y Fu(m)1663 2007 y Ft(i)967 2170 y(\))27 b(h)7 b FA(p)r(c)22 b Fx(+)d FA(k)i Fx(+)e FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)1745 2133 y Fr(0)r(0)1744 2193 y Fu(m)1804 2170 y Ft(i)380 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(E)t(Q)30 b F1(true)967 2325 y Ft(\))d(h)7 b FA(p)r(c)22 b Fx(+)d FA(k)i Fx(+)e FB(2,)d Ft(C)7 b Fx(\()s F0(F)e Fx(\))27 b FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)2021 2287 y Fr(0)r(0)2020 2347 y Fu(m)2080 2325 y Ft(i)104 b F2(e)o(x)o(ecution) 26 b(of)f F0(L)t(D)t(C)i Ft(C)7 b Fx(\()s F0(F)e Fx(\))967 2480 y Ft(\))27 b(h)r FD(l)r Fx(\()q F1(end)t Fx(\))q FB(,)16 b Ft(C)7 b Fx(\()s F0(F)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1887 2442 y Fr(0)r(0)1886 2502 y Fu(m)1946 2480 y Ft(i)238 b F2(e)o(x)o(ecution)26 b(of)f F0(G)t(O)q(T)s(O)h F1(end)967 2634 y Ft(\))h(h)r FD(l)r Fx(\()q F1(end)t Fx(\))20 b(+)f FB(1,)d Ft(C)7 b Fx(\()s F0(F)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2041 2597 y Fr(0)r(0)2040 2657 y Fu(m)2100 2634 y Ft(i)84 b F2(e)o(x)o(ecution)26 b(of)d F1(end)10 b F2(:)382 2799 y(Since)25 b Ft(j)r(T)g Fx(\()s FA(E)803 2814 y Fz(1)841 2799 y FW(==)q FA(E)1007 2813 y Fz(2)1045 2799 y Fx(\))r Ft(j)j Fx(=)f FD(l)r Fx(\()q F1(end)t Fx(\))20 b(+)e FB(1)p F2(,)23 b(this)h(concludes)j(this)d(case.)382 3055 y FX(The)j(cases)32 b FA(E)843 3070 y Fz(1)880 3055 y FU(!=)r FA(E)1047 3069 y Fz(2)1084 3055 y FX(,)d FA(E)1191 3070 y Fz(1)1229 3055 y FU(<)q FA(E)1340 3069 y Fz(2)1377 3055 y FX(,)h FA(E)1485 3070 y Fz(1)1522 3055 y FU(>)r FA(E)1634 3069 y Fz(2)1671 3055 y FX(,)g FA(E)1779 3070 y Fz(1)1816 3055 y FU(<=)q FA(E)1982 3069 y Fz(2)2047 3055 y FX(and)g FA(E)2279 3070 y Fz(1)2316 3055 y FU(>=)q FA(E)2482 3069 y Fz(2)2547 3055 y FX(f)n(or)f(integers:)93 b F2(Analo-)382 3184 y(gous)24 b(to)g(the)g(case)i FA(E)1040 3200 y Fz(1)1077 3184 y FW(==)q FA(E)1243 3198 y Fz(2)1280 3184 y F2(.)382 3440 y FX(The)31 b(cases)36 b FA(E)851 3455 y Fz(1)888 3440 y FU(==)r FA(E)1055 3454 y Fz(2)1092 3440 y FX(,)e FA(E)1204 3455 y Fz(1)1241 3440 y FU(!=)q FA(E)1407 3454 y Fz(2)1444 3440 y FX(,)g FA(E)1556 3455 y Fz(1)1593 3440 y FU(<)r FA(E)1705 3454 y Fz(2)1742 3440 y FX(,)g FA(E)1854 3455 y Fz(1)1891 3440 y FU(>)q FA(E)2002 3454 y Fz(2)2040 3440 y FX(,)f FA(E)2151 3455 y Fz(1)2189 3440 y FU(<=)q FA(E)2355 3454 y Fz(2)2424 3440 y FX(and)g FA(E)2659 3455 y Fz(1)2697 3440 y FU(>=)q FA(E)2863 3454 y Fz(2)2932 3440 y FX(f)n(or)g(\003oating)382 3570 y(point:)91 b F2(Due)35 b(to)g(the)g(irre)o(gularity)j(of)d(the)h (JVM)e(these)i(are)f(not)h(quite)g(the)g(same)f(as)g(for)382 3700 y(inte)o(ger)l(,)25 b(b)n(ut)f(still)g(v)o(ery)g(similar)-5 b(.)24 b(Hence)g(we)f(shall)h(not)g(present)h(a)e(proof.)382 3956 y FX(The)d(case)26 b FA(F)s Fx(\()s FA(E)887 3971 y Fz(1)925 3956 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)1179 3970 y Fu(n)1222 3956 y Fx(\))92 b F2(If)22 b(there)g(is)g(a)f (transition,)j(it)e(must)f(ha)n(v)o(e)i(been)f(concluded)j(with)382 4086 y(the)f(rule)g([fcall-)q Ft(R)q F2(].)h(The)e(rule)h(itself)h(is) 633 4236 y Ft(h)s FA(E)726 4251 y Fz(1)764 4236 y FB(,)16 b FA(e)839 4251 y Fz(1)878 4236 y Ft(i)27 b(!)h(h)r FA(v)1142 4251 y Fz(1)1180 4236 y FB(,)16 b FA(e)1255 4250 y Fz(2)1294 4236 y Ft(i)108 b FB(.)17 b(.)g(.)109 b Ft(h)s FA(E)1743 4250 y Fu(n)1785 4236 y FB(,)16 b FA(e)1861 4250 y Fu(n)1904 4236 y Ft(i)28 b(!)f(h)r FA(v)2169 4250 y Fu(n)2212 4236 y FB(,)16 b FA(e)2288 4251 y Fu(n)r Fj(+)q Fz(1)2417 4236 y Ft(i)94 b(h)r FA(S)q FB(,)16 b FA(e)2711 4203 y Fr(0)2711 4264 y Fu(n)r Fj(+)q Fz(1)2840 4236 y Ft(i)28 b(!)g FA(e)3059 4203 y Fr(R)3058 4258 y Fu(r)p 632 4284 2489 4 v 912 4367 a Ft(h)t FA(F)r FW(\()r FA(E)1116 4382 y Fz(1)1153 4367 y FB(,)16 b(.)h(.)g(.)g(,)g FA(E)1408 4381 y Fu(n)1449 4367 y FW(\);)o FB(,)f FA(e)1633 4382 y Fz(1)1672 4367 y Ft(i)27 b(!)h(h)r FA(v)q FB(,)16 b Fx(\()r FA(e)2051 4382 y Fu(F)2082 4394 y Fl(1)2117 4367 y FB(,)g FA(e)2195 4382 y Fu(F)2227 4394 y Fk(G)2272 4367 y FB(,)g FA(e)2347 4382 y Fu(V)2388 4394 y Fl(1)2421 4367 y FB(,)g FA(e)2496 4382 y Fu(V)2538 4394 y Fk(G)2584 4367 y FB(,)g FA(s)r(t)r(o)2733 4381 y Fu(r)2768 4367 y Fx(\))r Ft(i)382 4514 y F2(The)23 b(e)o(xpression)j(is)e(translated)i (to)796 4693 y Ft(T)f Fx(\()t FA(F)s Fx(\()s FA(E)1057 4708 y Fz(1)1095 4693 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)1349 4707 y Fu(n)1392 4693 y Fx(\))r(\))28 b(=)f Ft(T)e Fx(\()s FA(E)1758 4708 y Fz(1)1797 4693 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)25 b Fx(\()s FA(E)2200 4707 y Fu(n)2243 4693 y Fx(\))q FB(;)17 b F0(I)t(N)t(V)q(O)t(K)t(E)t(S)t(T)m(A)l(T)t(I)t(C)26 b FA(F)382 4872 y F2(From)d(the)g(inducti)n(v)o(e)j(hypothesis,)g(the)e (computation)i(sequences)383 5051 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)735 5065 y Fu(m)788 5077 y Fl(1)825 5051 y Ft(i)28 b(\))981 5013 y Fr(\003)1045 5051 y Ft(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)26 b Fx(\()s FA(E)1479 5066 y Fz(1)1517 5051 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1757 5066 y Fz(1)1798 5051 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2122 5065 y Fu(m)2175 5076 y Fl(2)2211 5051 y Ft(i)953 5182 y F2(.)953 5215 y(.)953 5248 y(.)888 5403 y Ft(\))981 5366 y Fr(\003)1045 5403 y Ft(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)26 b Fx(\()s FA(E)1479 5418 y Fz(1)1517 5403 y Fx(\))r Ft(j)21 b Fx(+)f FB(.)d(.)g(.)j Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)2100 5417 y Fu(n)2144 5403 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)2385 5417 y Fu(n)2430 5403 y Fx(\))28 b FB(:)r(:)f(.)17 b(.)g(.)27 b(:)r(:)h Ft(C)7 b Fx(\()r FA(v)2912 5418 y Fz(1)2952 5403 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3276 5417 y Fu(m)3330 5429 y Fk(n)r Fg(+)q Fl(1)3434 5403 y Ft(i)1831 5652 y F2(53)p eop end %%Page: 54 56 TeXDict begin 54 55 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(must)c(e)o(xist)h(since)h(the)e(deri)n(v)n(ation)j (trees)e(for)g(the)f(e)o(xpressions)23 b FA(E)2417 563 y Fz(1)2455 548 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)2709 562 y Fu(n)2768 548 y F2(ha)n(v)o(e)i(heights)h(that)382 678 y(are)28 b(less)g(than)g(the)g(height)h(of)e(the)h(deri)n(v)n (ation)i(tree)e(for)f(the)h(whole)g(e)o(xpression.)i(No)n(w)c(con-)382 808 y(sider)j(the)f(transition)j Ft(h)r FA(S)q FB(,)16 b FA(e)1260 775 y Fr(0)1260 836 y Fu(n)r Fj(+)q Fz(1)1390 808 y Ft(i)36 b(!)f FA(e)1624 775 y Fr(R)1623 830 y Fu(r)1686 808 y F2(.)27 b(Since)h(the)g(en)l(vironment)j(is)e Ft(R)q F2(-tagged,)g(a)f FR(r)o(etur)o(n)382 937 y F2(statement)d(is)e(e)n(v)n (aluated)j(some)n(where)e(inside)i FA(S)q F2(.)d(Hence,)h FA(S)g F2(can)g(be)f(written)i(as)1329 1112 y Ft(f)r FA(S)1427 1127 y Fz(1)1496 1112 y FB(.)17 b(.)g(.)32 b FW(return)14 b FA(E)2030 1126 y Fu(r)2062 1112 y FW(;)31 b FB(.)17 b(.)g(.)32 b FA(S)2335 1126 y Fu(n)2378 1112 y Ft(g)382 1286 y F2(where)21 b(the)f FR(r)o(etur)o(n)f F2(statement)j(may)e(be)h(inside)h(a)e(compound)i(statement.)g (Therefore)h FA(S)e F2(must)382 1416 y(ha)n(v)o(e)j(been)g(translated)j (to)1128 1590 y Ft(T)e Fx(\()r FA(S)1291 1605 y Fz(1)1329 1590 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)25 b Fx(\()s FA(E)1731 1604 y Fu(r)1764 1590 y Fx(\))q FB(;)17 b F0(I)t(R)t(E)t(T)t (U)t(R)t(N)5 b FB(;)16 b(.)h(.)g(.)f(;)g Ft(T)25 b Fx(\()r FA(S)2546 1604 y Fu(n)2589 1590 y Fx(\))382 1764 y F2(so)e(that)i(the)e (computation)k(proceeds)e(with)f(\(where)h FA(k)j Fx(=)f Ft(j)r(T)f Fx(\()s FA(E)2424 1779 y Fz(1)2462 1764 y Fx(\))r Ft(j)21 b Fx(+)f FB(.)d(.)g(.)j Fx(+)f Ft(j)r(T)26 b Fx(\()s FA(E)3046 1778 y Fu(n)3089 1764 y Fx(\))r Ft(j)q F2(\))466 1963 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)q FB(,)c Ft(C)7 b Fx(\()r FA(v)923 1977 y Fu(n)968 1963 y Fx(\))28 b FB(:)r(:)f(.)17 b(.)g(.)28 b(:)r(:)f Ft(C)7 b Fx(\()r FA(v)1450 1978 y Fz(1)1490 1963 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1814 1977 y Fu(m)1868 1989 y Fk(n)r Fg(+)q Fl(1)1972 1963 y Ft(i)1022 2126 y(\))27 b(h)7 b FD(j)r Fx(\()t FA(F)s Fx(\))q FB(,)16 b Fx(\()7 b FA(p)r(c)22 b Fx(+)e FA(k)r Fx(\))29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)2013 2089 y Fr(0)2012 2149 y Fu(m)2066 2161 y Fk(n)r Fg(+)q Fl(1)2170 2126 y Ft(i)1022 2281 y(\))1115 2243 y Fr(\003)1179 2281 y Ft(h)7 b FD(j)r Fx(\()t FA(F)s Fx(\))21 b(+)e Ft(j)r(T)26 b Fx(\()r FA(S)1707 2296 y Fz(1)1745 2281 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)25 b Fx(\()s FA(E)2147 2295 y Fu(r)2180 2281 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)e Fx(\()7 b FA(p)r(c)21 b Fx(+)e FA(k)r Fx(\))29 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3167 2295 y Fu(m)3221 2305 y Fk(r)3251 2281 y Ft(i)1022 2436 y(\))27 b(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)h Fx(+)d FB(1,)e Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)2077 2450 y Fu(m)2131 2460 y Fk(r)2162 2436 y Ft(i)382 2597 y F2(where)32 b FA(s)r(t)r(o)747 2564 y Fr(0)746 2620 y Fu(m)800 2632 y Fk(n)r Fg(+)q Fl(1)943 2597 y Fx(=)41 b FA(s)r(t)r(o)1166 2611 y Fu(m)1220 2623 y Fk(n)r Fg(+)q Fl(1)1323 2597 y Fx([)r FD(n)r Fx(\()q FA(V)1490 2612 y Fz(1)1529 2597 y Fx(\))h Ft(7)r(!)g(C)7 b Fx(\()r FA(v)1879 2612 y Fz(1)1919 2597 y Fx(\))q FB(,)16 b(.)h(.)g(.)f(,)g FD(n)r Fx(\()q FA(V)2293 2611 y Fu(n)2337 2597 y Fx(\))42 b Ft(7)r(!)f(C)7 b Fx(\()r FA(v)2687 2611 y Fu(n)2731 2597 y Fx(\))r(])q F2(.)31 b(The)g(e)o(x)o(ecution)382 2727 y(of)d(the)h(middle)g(computation)i(sequence)g(follo)n(ws)e(from)f (the)g(transition)j(for)f FA(S)e F2(and)h(the)g(in-)382 2857 y(ducti)n(v)o(e)i(hypothesis)i(since)e(the)f(deri)n(v)n(ation)j (tree)d(for)h FA(S)g F2(must)f(be)g(of)g(height)h(less)g(than)g(the)382 2987 y(deri)n(v)n(ation)26 b(tree)e(for)f(the)h(whole)g(function)i (call)e(e)o(xpression.)523 3116 y(The)e(proof)i(abo)o(v)o(e)f(w)o(as)f (for)g(the)h(case)g(where)g(a)f(function)j(call)d(occurs)i(in)f(an)f(e) o(xpression)382 3246 y(\226)k(the)g(cases)h(where)f(a)g(function)i (call)f(occurs)g(as)f(a)g(statement)h(are)g(similar)f(so)g(we)g(shall)h (not)382 3376 y(pro)o(v)o(e)d(them.)382 3631 y FX(The)g(case)j FA(V)35 b Fx(=)e FA(E)q FU(;)o FX(:)91 b F2(If)26 b(there)h(is)e(a)h (transition,)i(the)e(transition)i(rule)f([assign])g(must)f(ha)n(v)o(e) 382 3761 y(been)e(applied:)709 3903 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b Fx(\()r FA(e)1260 3918 y Fu(F)1304 3903 y FB(,)g FA(e)1382 3918 y Fu(F)1414 3930 y Fk(G)1459 3903 y FB(,)g FA(e)1534 3918 y Fu(V)1590 3903 y FB(,)g FA(e)1665 3918 y Fu(V)1707 3930 y Fk(G)1753 3903 y FB(,)g FA(s)r(t)r(o)1904 3870 y Fr(0)1930 3903 y Fx(\))r Ft(i)p 559 3946 1595 4 v 560 4029 a(h)q FA(V)5 b FW(=)r FA(E)q FW(;)p FB(,)16 b FA(e)r Ft(i)28 b(!)f Fx(\()r FA(e)1169 4044 y Fu(F)1212 4029 y FB(,)16 b FA(e)1290 4044 y Fu(F)1322 4056 y Fk(G)1367 4029 y FB(,)g FA(e)1442 4044 y Fu(V)1498 4029 y FB(,)g FA(e)1573 4044 y Fu(V)1615 4056 y Fk(G)1661 4029 y FB(,)g FA(s)r(t)r(o)1812 4003 y Fr(0)1838 4029 y Fx([)r FA(l)31 b Ft(7)r(!)c FA(v)r Fx(])r(\))2254 3967 y F2(where)e FA(l)30 b Fx(=)h FA(L)2709 3982 y Fu(V)2765 3967 y Fx(\()q FA(V)5 b FB(,)16 b FA(e)2947 3982 y Fu(V)3003 3967 y FB(,)g FA(e)3078 3982 y Fu(V)3120 3994 y Fk(G)3167 3967 y Fx(\))382 4178 y F2(No)n(w)28 b Ft(T)d Fx(\()q FA(V)40 b Fx(=)d FA(E)q FW(;)q Fx(\))g(=)f Ft(T)24 b Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(S)t(T)s(O)t(R)t(E)30 b FA(l)i F2(where)e FA(l)39 b Fx(=)d FD(n)r Fx(\()q FA(V)6 b Fx(\))q F2(.)29 b(The)f(premise)h(of)f(the)h(tran-)382 4307 y(sition)j(rule)g(guarantees)i(that)d(a)g(transition)i(for)g FA(E)f F2(e)o(xists.)f(Therefore)i(from)e(the)g(inducti)n(v)o(e)382 4437 y(hypothesis)d(\(since)e(the)f(deri)n(v)n(ation)i(tree)f(for)h FA(E)e F2(is)g(of)g(height)i(less)e(than)h(the)f(deri)n(v)n(ation)i (tree)382 4567 y(for)d(the)f(whole)h(statement\))i(the)e(machine)g (\002rst)g(goes)g(through)h(the)f(computation)j(sequence)998 4741 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1350 4755 y Fu(m)1412 4741 y Ft(i)27 b(\))1567 4704 y Fr(\003)1632 4741 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)c FA(s)q FB(,)16 b FA(s)r(t)r(o)2637 4704 y Fr(0)2636 4764 y Fu(m)2696 4741 y Ft(i)q FB(.)382 4915 y F2(Then)23 b(the)h(de\002nition)i(of)f F0(I)t(S)t(T)s(O)t(R)t(E) j F2(yields)615 5090 y Ft(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b FA(v)30 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)1490 5052 y Fr(0)1489 5112 y Fu(m)1549 5090 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2610 5052 y Fr(0)2609 5112 y Fu(m)2670 5090 y Fx([)r FA(l)31 b Ft(7)r(!)c(C)7 b Fx(\()r FA(v)r Fx(\))r(])r Ft(i)q FB(.)382 5273 y F2(No)n(w)25 b(from)i(the)g(inducti)n(v)o(e)i (hypothesis,)h FA(s)r(t)r(o)1833 5240 y Fr(0)1906 5222 y(C)1890 5273 y Fx(=)j FA(s)r(t)r(o)2106 5240 y Fr(0)2105 5296 y Fu(m)2163 5273 y F2(;)26 b(hence)j FA(s)r(t)r(o)2565 5240 y Fr(0)2591 5273 y Fx([)r FA(l)37 b Ft(7)r(!)d FA(v)r Fx(])2929 5222 y Fr(C)2913 5273 y Fx(=)f FA(s)r(t)r(o)3129 5240 y Fr(0)3128 5296 y Fu(m)3187 5273 y Fx([)r FA(l)k Ft(7)r(!)383 5403 y(C)7 b Fx(\()r FA(v)r Fx(\))r(])26 b F2(since)g Ft(C)7 b Fx(\()r FA(s)r(t)r(o)1025 5370 y Fr(0)1052 5403 y Fx([)r FA(l)30 b Ft(7)r(!)e FA(v)r Fx(])r(\()r FA(l)5 b Fx(\))r(\))31 b(=)c Ft(C)7 b Fx(\()r FA(v)r Fx(\))29 b(=)e FA(s)r(t)r(o)2010 5370 y Fr(0)2009 5426 y Fu(m)2069 5403 y Fx([)r FA(l)k Ft(7)r(!)c(C)7 b Fx(\()r FA(v)r Fx(\))r(])r(\()r FA(l)e Fx(\))q F2(.)1831 5652 y(54)p eop end %%Page: 55 57 TeXDict begin 55 56 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FX(The)g(case)j Fx(+)20 b(+)f FA(V)5 b FU(;)o FX(:)91 b F2(The)23 b(rule)h([increment])i(is)655 769 y Ft(h)q FW(++)o FA(V)5 b FW(;)p FB(,)16 b FA(e)r Ft(i)28 b(!)f Fx(\()r FA(e)1259 784 y Fu(F)1302 769 y FB(,)16 b FA(e)1380 784 y Fu(F)1412 796 y Fk(G)1457 769 y FB(,)g FA(e)1532 784 y Fu(V)1588 769 y FB(,)g FA(e)1663 784 y Fu(V)1705 796 y Fk(G)1751 769 y FB(,)g FA(s)r(t)r(o)s Fx([)r FA(l)33 b Ft(7)r(!)28 b FA(v)r Fx(])r(\))93 b F2(where)25 b FA(v)j Fx(=)f FA(s)r(t)r(o)s Fx(\()r FA(l)5 b Fx(\))23 b(+)18 b FB(1)382 989 y F2(which)34 b(is)f(translated)j(to)e Ft(T)25 b Fx(\()q FW(++)p FA(V)5 b FW(;)p Fx(\))46 b(=)h F0(I)t(L)t(O)r(A)t(D)27 b FA(l)t FB(;)17 b F0(L)t(D)t(C)25 b FB(1)q(;)17 b F0(I)t(A)t(D)t(D)s FB(;)g F0(I)t(S)t(T)s(O)t(R)t(E)28 b FA(l)37 b F2(where)e FA(l)49 b Fx(=)383 1119 y FD(n)r Fx(\()q FA(V)6 b Fx(\))q F2(.)24 b(This)f(gi)n(v)o(es)h(the)g(follo)n (wing)h(computation)h(sequence)537 1340 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)889 1354 y Fu(m)950 1340 y Ft(i)28 b(\))g(h)7 b FA(p)r(c)21 b Fx(+)d FB(1,)e FA(s)r(t)r(o)1563 1354 y Fu(m)1623 1340 y Fx(\()r FA(l)5 b Fx(\))29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)2015 1354 y Fu(m)2075 1340 y Ft(i)301 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(L)t(O)r(A)t(D)i FA(l)1013 1495 y Ft(\))h(h)7 b FA(p)r(c)21 b Fx(+)d FB(2,)d(1)27 b(:)r(:)h FA(s)r(t)r(o)1710 1509 y Fu(m)1769 1495 y Fx(\()r FA(l)5 b Fx(\))29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)2161 1509 y Fu(m)2221 1495 y Ft(i)155 b F2(e)o(x)o(ecution)26 b(of)f F0(L)t(D)t(C)h FB(1)1013 1649 y Ft(\))i(h)7 b FA(p)r(c)21 b Fx(+)d FB(3,)e Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)1917 1663 y Fu(m)1977 1649 y Ft(i)399 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(A)t(D)t(D)1013 1804 y Ft(\))j(h)7 b FA(p)r(c)21 b Fx(+)d FB(4,)e FA(s)q FB(,)g FA(s)r(t)r(o)1638 1818 y Fu(m)1699 1804 y Fx([)r FA(l)31 b Ft(7)r(!)c(C)7 b Fx(\()r FA(v)r Fx(\))r(])r Ft(i)271 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(S)t(T)s(O)t(R)t(E)k FA(l)382 2025 y F2(where)c Ft(C)7 b Fx(\()r FA(v)r Fx(\))29 b(=)e FA(s)r(t)r(o)1040 2039 y Fu(m)1100 2025 y Fx(\()r FA(l)5 b Fx(\))21 b(+)d FB(1)p F2(.)382 2288 y FX(The)k(case)j Ft(\000)20 b(\000)f FA(V)5 b FU(;)o FX(:)91 b F2(Analogous)26 b(to)d(the)h(case)h Fx(+)20 b(+)e FA(V)5 b FW(;)p F2(.)382 2550 y FX(The)21 b(case)h FU({)q FA(S)844 2566 y Fz(1)881 2550 y FB(,)16 b(.)h(.)g(.)f(,)g FA(S)1130 2564 y Fu(n)1172 2550 y FU(})o FX(:)92 b F2(If)21 b(there)i(is)f(a)f(transition,)k(it)c (must)h(ha)n(v)o(e)h(been)f(concluded)j(with)382 2680 y(the)f(rule)g([block]:)879 2862 y Ft(h)r FA(S)967 2877 y Fz(1)1005 2862 y FB(,)16 b FA(e)1080 2877 y Fz(1)1119 2862 y Ft(i)27 b(!)h FA(e)1336 2876 y Fz(2)1465 2862 y Ft(h)r FA(S)1553 2876 y Fz(2)1591 2862 y FB(,)16 b FA(e)1666 2876 y Fz(2)1704 2862 y Ft(i)28 b(!)g FA(e)1922 2876 y Fz(3)2066 2862 y FB(.)17 b(.)g(.)109 b Ft(h)r FA(S)2367 2876 y Fu(n)2409 2862 y FB(,)16 b FA(e)2485 2876 y Fu(n)2528 2862 y Ft(i)27 b(!)h FA(e)2746 2877 y Fu(n)r Fj(+)q Fz(1)p 878 2903 1996 4 v 978 2986 a Ft(h)q FW({)q FA(S)1121 3001 y Fz(1)1159 2986 y FA(S)1210 3000 y Fz(2)1264 2986 y FB(.)17 b(.)g(.)g FA(S)1436 3000 y Fu(n)1478 2986 y FW(})p FB(,)f FA(e)1608 3001 y Fz(1)1646 2986 y Ft(i)28 b(!)f Fx(\()r FA(e)1903 3001 y Fu(F)1934 3013 y Fl(1)1968 2986 y FB(,)16 b FA(e)2046 3001 y Fu(F)2078 3013 y Fk(G)2123 2986 y FB(,)g FA(e)2198 3001 y Fu(V)2239 3013 y Fl(1)2272 2986 y FB(,)g FA(e)2347 3001 y Fu(V)2389 3013 y Fk(G)2435 2986 y FB(,)g FA(s)r(t)r(o)2585 3001 y Fu(n)r Fj(+)q Fz(1)2716 2986 y Fx(\))q FB(.)382 3181 y F2(Since)j Ft(T)25 b Fx(\()q FW({)q FA(S)820 3196 y Fz(1)857 3181 y FB(,)16 b(.)h(.)g(.)g(,)f FA(S)1107 3195 y Fu(n)1148 3181 y FW(})q Fx(\))28 b(=)f Ft(T)e Fx(\()r FA(S)1528 3196 y Fz(1)1566 3181 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)25 b Fx(\()r FA(S)1964 3195 y Fu(n)2007 3181 y Fx(\))19 b F2(and)f(each)h(of)f(the)h(statements)i FA(S)3068 3196 y Fz(1)3105 3181 y FB(,)16 b(.)h(.)g(.)f(,)g FA(S)3354 3195 y Fu(n)382 3311 y F2(has)24 b(a)f(deri)n(v)n(ation)i(tree)f(with)g (a)f(height)h(less)g(than)h(the)e(height)i(of)f(the)f(deri)n(v)n(ation) j(tree)e(for)g(the)382 3441 y(whole)f(block,)h(we)d(conclude)k(by)e (the)g(inducti)n(v)o(e)i(hypothesis)g(that)e(the)g(follo)n(wing)h (computa-)382 3571 y(tion)g(sequences)i(e)o(xist:)748 3792 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1100 3806 y Fu(m)1153 3818 y Fl(1)1191 3792 y Ft(i)28 b(\))1347 3754 y Fr(\003)1411 3792 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)1839 3807 y Fz(1)1878 3792 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2166 3806 y Fu(m)2219 3817 y Fl(2)2256 3792 y Ft(i)1254 3946 y(\))1347 3909 y Fr(\003)1411 3946 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)1839 3961 y Fz(1)1878 3946 y Fx(\))r Ft(j)c Fx(+)e Ft(j)r(T)25 b Fx(\()r FA(S)2241 3960 y Fz(2)2280 3946 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2568 3960 y Fu(m)2621 3971 y Fl(3)2658 3946 y Ft(i)1318 4078 y F2(.)1318 4111 y(.)1318 4144 y(.)1254 4299 y Ft(\))1347 4261 y Fr(\003)1411 4299 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)1839 4314 y Fz(1)1878 4299 y Fx(\))r Ft(j)c Fx(+)e FB(.)e(.)g(.)j Fx(+)g Ft(j)r(T)25 b Fx(\()r FA(S)2456 4313 y Fu(n)2499 4299 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2787 4313 y Fu(m)2841 4325 y Fk(n)r Fg(+)q Fl(1)2946 4299 y Ft(i)q FB(.)382 4561 y FX(The)34 b(case)h FU(while\()p FA(E)q FU(\))p FA(S)q FX(:)91 b F2(W)-7 b(e)35 b(\002rst)f(consider)k (the)d(case)h(where)h FA(E)e F2(e)n(v)n(aluates)i(to)g F0(F)r F2(.)e(If)382 4691 y(there)24 b(is)g(a)f(transition,)j(the)e (rule)g([while-f)o(alse])1313 4875 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)30 b(!)d(h)r FA(v)q FB(,)16 b FA(e)1826 4842 y Fr(0)1852 4875 y Ft(i)p 1176 4916 850 4 v 1177 4999 a(h)q FW(while\()o FA(E)q FW(\))q FA(S)q FB(,)g FA(e)r Ft(i)28 b(!)g FA(e)2002 4973 y Fr(0)2126 4936 y F2(where)d FA(v)j Fx(=)g F0(F)382 5182 y F2(must)23 b(ha)n(v)o(e)i(been)f(used.)g(The)f(statement)i(is)f(translated)i(to) 599 5403 y Ft(T)e Fx(\()q FW(while\()p FA(E)q FW(\))q FA(S)r Fx(\))k(=)e F1(start)9 b F2(:)q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)28 b F1(done)9 b FB(;)16 b Ft(T)25 b Fx(\()r FA(S)r Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)26 b F1(start)10 b FB(;)15 b F1(done)7 b F2(:)1831 5652 y(55)p eop end %%Page: 56 58 TeXDict begin 56 57 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(which)i(gi)n(v)o(es)g(the)g(follo)n(wing)h (computation)h(sequence:)462 740 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)814 754 y Fu(m)876 740 y Ft(i)27 b(\))h(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)1564 754 y Fu(m)1624 740 y Ft(i)774 b F2(e)o(x)o(ecution)26 b(of)d F1(start)9 b F2(:)938 895 y Ft(\))1031 857 y Fr(\003)1096 895 y Ft(h)e FA(p)r(c)21 b Fx(+)e FB(1)g Fx(+)g Ft(j)r(T)26 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)c FA(s)q FB(,)16 b FA(s)r(t)r(o)2255 857 y Fr(0)2254 917 y Fu(m)2314 895 y Ft(i)84 b F2(e)o(x)o(ecution)26 b(of)e Ft(T)h Fx(\()s FA(E)r Fx(\))938 1050 y Ft(\))j(h)r FD(l)r Fx(\()q F1(done)t Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1628 1012 y Fr(0)1627 1072 y Fu(m)1687 1050 y Ft(i)711 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(F)t(E)t(Q)j F1(done)938 1204 y Ft(\))g(h)r FD(l)r Fx(\()q F1(done)t Fx(\))20 b(+)f FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)1782 1167 y Fr(0)1781 1227 y Fu(m)1841 1204 y Ft(i)557 b F2(e)o(x)o(ecution) 26 b(of)d F1(done)7 b F2(:)382 1397 y(Since)25 b FA(p)r(c)15 b Fx(+)g Ft(j)r(T)26 b Fx(\()q FW(while\()p FA(E)q FW(\))p FA(S)r Fx(\))r Ft(j)i Fx(=)g FD(l)r Fx(\()q F1(done)s Fx(\))15 b(+)f FB(1)p F2(,)19 b(this)g(pro)o(v)o(es)g(this)g(case.)g (The)f(e)o(x)o(ecution)382 1527 y(of)24 b Ft(T)h Fx(\()s FA(E)r Fx(\))g F2(follo)n(ws)f(from)g(the)g(premise)g(of)g(the)g ([while-f)o(alse])i(transition)g(\(which)f(states)f(that)382 1656 y(there)29 b(is)g(a)f(transition)j(and)e(that)g(it)f(has)h(the)g (v)n(alue)h FA(v)37 b Fx(=)g F0(F)s F2(\))28 b(and)h(the)g(inducti)n(v) o(e)h(hypothesis)382 1786 y(since)21 b(the)g(deri)n(v)n(ation)i(tree)e (for)i FA(E)e F2(must)f(be)h(smaller)g(than)g(the)g(tree)g(for)g(the)g (entire)h(statement.)523 1916 y(F)o(or)e(the)i(case)g(where)h FA(E)f F2(e)n(v)n(aluates)h(to)g F0(T)r F2(,)e(if)g(there)i(is)e(a)g (transition,)i(the)f(rule)g([while-true])527 2071 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1040 2038 y Fr(0)1066 2071 y Ft(i)93 b(h)r FA(S)q FB(,)16 b FA(e)1359 2038 y Fr(0)1384 2071 y Ft(i)28 b(!)f FA(e)1602 2038 y Fr(0)r(0)1738 2071 y Ft(h)q FW(while\()p FA(E)q FW(\))p FA(S)q FB(,)16 b FA(e)2344 2038 y Fr(0)r(0)2389 2071 y Ft(i)28 b(!)f FA(e)2607 2038 y Fr(0)r(0)r(0)p 526 2112 2145 4 v 1155 2195 a Ft(h)q FW(while\()o FA(E)q FW(\))q FA(S)q FB(,)16 b FA(e)r Ft(i)28 b(!)g FA(e)1980 2169 y Fr(0)r(0)r(0)2771 2133 y F2(where)d FA(v)j Fx(=)g F0(T)382 2350 y F2(must)23 b(ha)n(v)o(e)i(been)f(used.)g(Here,)f(the)h (computation)i(sequence)g(is:)383 2542 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)735 2556 y Fu(m)796 2542 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1484 2556 y Fu(m)1544 2542 y Ft(i)1016 b F2(e)o(x)o(ecution)25 b(of)f F1(start)9 b F2(:)859 2697 y Ft(\))952 2660 y Fr(\003)1016 2697 y Ft(h)e FA(p)r(c)22 b Fx(+)c FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)c FA(s)q FB(,)16 b FA(s)r(t)r(o)2175 2660 y Fr(0)2174 2720 y Fu(m)2234 2697 y Ft(i)326 b F2(e)o(x)o(ecution) 25 b(of)g Ft(T)g Fx(\()s FA(E)r Fx(\))859 2852 y Ft(\))i(h)7 b FA(p)r(c)22 b Fx(+)c FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2011 2814 y Fr(0)2010 2874 y Fu(m)2070 2852 y Ft(i)490 b F2(e)o(x)o(ecution) 25 b(of)h F0(I)t(F)t(E)t(Q)h F1(done)859 3007 y Ft(\))952 2969 y Fr(\003)1016 3007 y Ft(h)7 b FA(p)r(c)22 b Fx(+)c FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()r FA(S)r Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2415 2969 y Fr(0)r(0)2414 3029 y Fu(m)2475 3007 y Ft(i)85 b F2(e)o(x)o(ecution)25 b(of)g Ft(T)g Fx(\()r FA(S)r Fx(\))859 3161 y Ft(\))i(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1330 3124 y Fr(0)r(0)1329 3184 y Fu(m)1391 3161 y Ft(i)1169 b F2(e)o(x)o(ecution)25 b(of)h F0(G)t(O)q(T)s(O)f F1(start)382 3354 y F2(This)g(completes)j(one)e(iteration)i(of)e(the)g(loop.)g(The)g (e)o(x)o(ecution)h(of)g Ft(T)e Fx(\()r FA(S)r Fx(\))i F2(follo)n(ws)f(from)g(the)382 3484 y(inducti)n(v)o(e)31 b(hypothesis)i(since)d(the)g(deri)n(v)n(ation)i(tree)e(for)h FA(S)f F2(must)f(be)h(smaller)g(than)h(the)e(tree)382 3613 y(for)k(the)h(entire)g(loop.)g(Note)f(that)g(the)h(machine)g(is)f (no)n(w)g(in)g(a)f(state)i(where)g(it)f(is)g(about)h(to)382 3743 y(e)o(x)o(ecute)24 b Ft(T)h Fx(\()q FW(while\()o FA(E)q FW(\))q FA(S)r Fx(\))d F2(with)g(the)g(store)i FA(s)r(t)r(o)1968 3710 y Fr(0)r(0)1967 3766 y Fu(m)2025 3743 y F2(.)d(Then)g(from)h(the)g(third)h(premise)f(and)h(the)382 3873 y(inducti)n(v)o(e)28 b(hypothesis,)g(we)c(can)j(conclude)h(that)e (there)g(must)g(be)g(a)f(computation)k(sequence)382 4003 y(which)24 b(continues)i(from)d(the)h(\002nal)g(tuple)g(abo)o(v)o(e)g (and)g(ends)h(with)e(the)h(correct)h(store:)928 4195 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1281 4158 y Fr(0)r(0)1280 4218 y Fu(m)1341 4195 y Ft(i)28 b(\))1497 4158 y Fr(\003)1562 4195 y Ft(h)7 b FA(p)r(c)21 b Fx(+)e Ft(j)r(T)26 b Fx(\()q FW(while\()o FA(E)q FW(\))q FA(S)r Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2722 4158 y Fr(0)r(0)r(0)2721 4218 y Fu(m)2789 4195 y Ft(i)382 4453 y FX(The)21 b(case)i FU(if\()q FA(E)q FU(\))p FA(S)1067 4468 y Fz(1)1127 4453 y FX(else)i FA(S)1343 4467 y Fz(2)1381 4453 y FX(:)91 b F2(W)-7 b(e)21 b(\002rst)h(consider)j(the)d(case)h (where)i FA(E)e F2(e)n(v)n(aluates)h(to)g F0(T)s F2(.)d(If)382 4583 y(a)i(transition)j(e)o(xists,)e(it)g(must)f(ha)n(v)o(e)h(been)h (concluded)h(with)d(the)h(rule)g([if-else-true]:)1021 4738 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1534 4705 y Fr(0)1560 4738 y Ft(i)93 b(h)r FA(S)1776 4753 y Fz(1)1814 4738 y FB(,)16 b FA(e)1890 4705 y Fr(0)1915 4738 y Ft(i)27 b(!)h FA(e)2133 4705 y Fr(0)r(0)p 1020 4779 1157 4 v 1059 4862 a Ft(h)q FW(if\()q FA(E)q FW(\))q FA(S)1425 4877 y Fz(1)1478 4862 y FW(else)14 b FA(S)1763 4876 y Fz(2)1800 4862 y FB(,)i FA(e)r Ft(i)28 b(!)g FA(e)2095 4836 y Fr(0)r(0)2277 4800 y F2(where)d FA(v)j Fx(=)g F0(T)382 5017 y F2(The)23 b(conditional)k(is)c (translated)j(to)741 5209 y Ft(T)e Fx(\()q FW(if\()r FA(E)q FW(\))p FA(S)1181 5224 y Fz(1)1241 5209 y F2(else)h FA(S)1457 5223 y Fz(2)1496 5209 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)28 b F1(else)8 b FB(;)16 b Ft(T)25 b Fx(\()r FA(S)2455 5224 y Fz(1)2494 5209 y Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)26 b F1(done)8 b FB(;)1714 5364 y F1(else)f F2(:)r FB(;)16 b Ft(T)24 b Fx(\()r FA(S)2089 5378 y Fz(2)2128 5364 y Fx(\))q FB(;)15 b F1(done)7 b F2(:)1831 5652 y(56)p eop end %%Page: 57 59 TeXDict begin 57 58 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(which)i(gi)n(v)o(es)g(the)g(follo)n(wing)h (computation)h(sequence)383 769 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)735 783 y Fu(m)796 769 y Ft(i)28 b(\))952 732 y Fr(\003)1016 769 y Ft(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))32 b FB(:)r(:)27 b FA(s)q FB(,)16 b FA(s)r(t)r(o)2022 732 y Fr(0)2021 792 y Fu(m)2081 769 y Ft(i)362 b F2(e)o(x)o(ecution)25 b(of)f Ft(T)h Fx(\()s FA(E)r Fx(\))859 924 y Ft(\))i(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1857 886 y Fr(0)1856 946 y Fu(m)1917 924 y Ft(i)526 b F2(e)o(x)o(ecution)25 b(of)g F0(I)t(F)t(E)t(Q)j F1(else)859 1079 y Ft(\))952 1041 y Fr(\003)1016 1079 y Ft(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1)i Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)1970 1094 y Fz(1)2009 1079 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2298 1041 y Fr(0)r(0)2297 1101 y Fu(m)2358 1079 y Ft(i)85 b F2(e)o(x)o(ecution)25 b(of)f Ft(T)h Fx(\()r FA(S)3113 1094 y Fz(1)3152 1079 y Fx(\))859 1233 y Ft(\))i(h)r FD(l)r Fx(\()q F1(done)t Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1548 1196 y Fr(0)r(0)1547 1256 y Fu(m)1608 1233 y Ft(i)835 b F2(e)o(x)o(ecution)25 b(of)g F0(G)t(O)q(T)s(O)h F1(done)859 1388 y Ft(\))h(h)r FD(l)r Fx(\()q F1(done)t Fx(\))21 b(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1702 1351 y Fr(0)r(0)1701 1411 y Fu(m)1761 1388 y Ft(i)682 b F2(e)o(x)o(ecution)25 b(of)e F1(done)7 b F2(:)382 1609 y(Since)29 b FA(p)r(c)20 b Fx(+)f Ft(j)r(T)26 b Fx(\()q FW(if\()q FA(E)q FW(\))q FA(S)1275 1624 y Fz(1)1335 1609 y F2(else)f FA(S)1551 1623 y Fz(2)1589 1609 y Fx(\))r Ft(j)j Fx(=)f FD(l)r Fx(\()q F1(done)t Fx(\))20 b(+)e FB(1)p F2(,)k(this)i(pro)o(v)o(es)f(this)h(case.)f(The)g(e)o(x)o(e-)382 1739 y(cution)g(of)f Ft(T)j Fx(\()s FA(E)r Fx(\))e F2(follo)n(ws)f (from)f(the)h(\002rst)f(premise)h(of)g(the)f([if-else-true])k (transition)f(\(which)382 1869 y(states)31 b(that)f(there)g(is)f(a)g (transition)j(and)e(that)g(it)g(has)f(the)h(v)n(alue)h FA(v)39 b Fx(=)g F0(T)s F2(\))29 b(and)h(the)g(inducti)n(v)o(e)382 1999 y(hypothesis.)22 b(The)d(e)o(x)o(ecution)i(of)g Ft(T)k Fx(\()r FA(S)1600 2014 y Fz(1)1638 1999 y Fx(\))c F2(follo)n(ws)f(from)f(second)j(premise)e(and)g(the)g(inducti)n(v)o(e) 382 2129 y(hypothesis)k(since)f(the)f(deri)n(v)n(ation)i(tree)e(for)h FA(S)1852 2144 y Fz(1)1911 2129 y F2(is)e(smaller)i(than)f(the)g(deri)n (v)n(ation)i(tree)f(for)f(the)382 2259 y(whole)i(conditional.)523 2388 y(F)o(or)34 b(the)h(case)h(where)h FA(E)e F2(e)n(v)n(aluates)i(to) g F0(F)s F2(,)d(the)h(rule)h([if-else-f)o(alse])j(must)34 b(ha)n(v)o(e)i(been)382 2518 y(applied,)31 b(and)f(through)h(the)f (same)f(reasoning)j(as)d(with)g(the)j F0(T)g F2(case)e(we)e(get)i(the)f (follo)n(wing)382 2648 y(computation)d(sequence:)456 2869 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)808 2883 y Fu(m)869 2869 y Ft(i)28 b(\))1025 2832 y Fr(\003)1090 2869 y Ft(h)7 b FA(p)r(c)21 b Fx(+)e Ft(j)r(T)26 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)c FA(s)q FB(,)16 b FA(s)r(t)r(o)2095 2832 y Fr(0)2094 2892 y Fu(m)2154 2869 y Ft(i)286 b F2(e)o(x)o(ecution) 25 b(of)g Ft(T)g Fx(\()s FA(E)r Fx(\))932 3024 y Ft(\))j(h)r FD(l)r Fx(\()q F1(else)s Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1586 2986 y Fr(0)1585 3046 y Fu(m)1646 3024 y Ft(i)794 b F2(e)o(x)o(ecution)25 b(of)h F0(I)t(F)t(E)t(Q)h F1(else)932 3179 y Ft(\))h(h)r FD(l)r Fx(\()q F1(else)s Fx(\))21 b(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1740 3141 y Fr(0)1739 3201 y Fu(m)1799 3179 y Ft(i)641 b F2(e)o(x)o(ecution) 25 b(of)f F1(else)7 b F2(:)932 3333 y Ft(\))1025 3296 y Fr(\003)1090 3333 y Ft(h)r FD(l)r Fx(\()q F1(else)s Fx(\))21 b(+)d FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()r FA(S)1853 3347 y Fz(2)1892 3333 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2181 3296 y Fr(0)r(0)2180 3356 y Fu(m)2241 3333 y Ft(i)199 b F2(e)o(x)o(ecution)25 b(of)g Ft(T)g Fx(\()r FA(S)3111 3347 y Fz(2)3150 3333 y Fx(\))932 3488 y Ft(\))j(h)r FD(l)r Fx(\()q F1(else)s Fx(\))21 b(+)d FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()r FA(S)1814 3502 y Fz(2)1853 3488 y Fx(\))r Ft(j)c Fx(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2296 3451 y Fr(0)r(0)2295 3511 y Fu(m)2355 3488 y Ft(i)85 b F2(e)o(x)o(ecution)25 b(of)f F1(done)7 b F2(:)382 3709 y(Since)28 b FA(p)r(c)19 b Fx(+)f Ft(j)r(T)26 b Fx(\()q FW(if\()q FA(E)q FW(\))p FA(S)1271 3724 y Fz(1)1331 3709 y F2(else)g FA(S)1548 3723 y Fz(2)1586 3709 y Fx(\))r Ft(j)i Fx(=)f Ft(j)r FD(l)r Fx(\()q F1(else)t Fx(\))19 b(+)e FB(1)g Fx(+)h Ft(j)r(T)26 b Fx(\()r FA(S)2522 3723 y Fz(2)2560 3709 y Fx(\))r Ft(j)20 b Fx(+)d FB(1)q Ft(j)q F2(,)k(this)i(pro)o(v)o(es)g (the)382 3839 y(case.)382 4102 y FX(The)f(case)i FU(if\()q FA(E)q FU(\))q FA(S)q FX(:)91 b F2(Similar)23 b(to)h(the)g(pre)n(vious) h(case.)382 4365 y FX(The)d(case)h FU([const])53 b FD(t)k FA(V)5 b FU(;)p FX(:)91 b F2(The)22 b(transition)k(for)d(the)g (statement)i(must)e(be)g(concluded)382 4495 y(with)28 b(the)g(rule)h([v)n(ar)n(-stat])h(that)f(does)g(not)f(change)i(the)e (store.)h(The)f(statement)h(is)f(translated)382 4625 y(to)c Ft(T)h Fx(\()q FW([const])53 b FD(t)58 b FA(V)5 b FW(;)p Fx(\))28 b(=)g F0(N)t(O)t(P)e F2(which)e(results)h(in)e(the)h (computation)i(sequence)1266 4846 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1618 4860 y Fu(m)1680 4846 y Ft(i)27 b(\))h(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)2368 4860 y Fu(m)2428 4846 y Ft(i)q FB(.)382 5109 y FX(The)33 b(case)h FU([const])53 b FD(t)k FA(V)51 b Fx(=)c FA(E)q FU(;)p FX(:)91 b F2(Since)34 b(the)g(v)n(ariable)i(en)l(vironment)h(is)d(modeled)382 5238 y(implicitly)25 b(with)g FD(n)q F2(,)e(this)h(case)g(is)f (analogous)k(to)c(the)h(case)g FA(V)31 b Fx(=)d FA(E)q FW(;)p F2(.)1831 5652 y(57)p eop end %%Page: 58 60 TeXDict begin 58 59 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FP(4.3.2)99 b(The)26 b(other)g(way)382 739 y F2(Ne)o(xt)33 b(we)f(shall)i(pro)o(v)o(e)g(that)g(if)f(the)h (translated)i(code)e(terminates,)h(then)f(the)f(untranslated)382 869 y(code)23 b(terminates)h(too,)f(and)g(with)f(the)g(same)h(result.)g (Again,)f(we)g(will)g(not)g(pro)o(v)o(e)h(this)g(for)g(the)382 999 y(po)n(wer)l(,)h(random)g(and)g(multiple)h(choice)g(operators.)382 1194 y FX(Lemma)e(2)45 b FV(F)-10 b(or)24 b(all)g(e)n(xpr)m(essions)k FA(E)q FV(,)23 b(if)g(a)h(\002nite)g(computation)i(sequence)g(for)g FA(E)e FV(e)n(xists)1010 1381 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1362 1395 y Fu(m)1423 1381 y Ft(i)28 b(\))1579 1343 y Fr(\003)1643 1381 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)2649 1343 y Fr(0)2648 1403 y Fu(m)2707 1381 y Ft(i)382 1567 y FV(wher)m(e)24 b FA(c)r Fx([)7 b FA(p)r(c)q FB(,)16 b(.)h(.)g(.)h(,)j FA(p)r(c)g Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)c(\000)e FB(1)q Fx(])28 b(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))q FV(,)f(then)g(ther)m (e)g(is)g(a)f(tr)o(ansition)869 1754 y Ft(h)s FA(E)q FB(,)16 b Fx(\()r FA(e)1079 1769 y Fu(F)1122 1754 y FB(,)g FA(e)1200 1769 y Fu(F)1232 1781 y Fk(G)1278 1754 y FB(,)g FA(e)1353 1769 y Fu(V)1409 1754 y FB(,)g FA(e)1484 1769 y Fu(V)1526 1781 y Fk(G)1571 1754 y FB(,)g FA(s)r(t)r(o)s Fx(\))r Ft(i)30 b(!)e(h)r FA(v)q FB(,)16 b Fx(\()r FA(e)2141 1769 y Fu(F)2185 1754 y FB(,)g FA(e)2263 1769 y Fu(F)2295 1781 y Fk(G)2340 1754 y FB(,)g FA(e)2415 1769 y Fu(V)2471 1754 y FB(,)g FA(e)2546 1769 y Fu(V)2588 1781 y Fk(G)2634 1754 y FB(,)g FA(s)r(t)r(o)2785 1716 y Fr(0)2810 1754 y Fx(\))r Ft(i)382 1953 y FV(wher)m(e)24 b FA(s)r(t)r(o)780 1901 y Fr(C)763 1953 y Fx(=)k FA(s)r(t)r(o)973 1967 y Fu(m)1054 1953 y FV(and)d FA(s)r(t)r(o)1326 1920 y Fr(0)1393 1901 y(C)1377 1953 y Fx(=)i FA(s)r(t)r(o)1587 1920 y Fr(0)1586 1975 y Fu(m)1644 1953 y FV(.)523 2083 y(And)c(for)h(all)g (statements)i FA(S)q FV(,)d(if)g(a)g(\002nite)i(computation)h(sequence) g(for)f FA(S)e FV(e)n(xists)1152 2269 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1504 2283 y Fu(m)1565 2269 y Ft(i)28 b(\))1721 2232 y Fr(\003)1786 2269 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)r Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2505 2232 y Fr(0)2504 2292 y Fu(m)2565 2269 y Ft(i)382 2456 y FV(wher)m(e)24 b FA(c)r Fx([)7 b FA(p)r(c)q FB(,)16 b(.)h(.)g(.)h(,)j FA(p)r(c)g Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)r Fx(\))r Ft(j)c(\000)e FB(1)q Fx(])28 b(=)f Ft(T)e Fx(\()r FA(S)r Fx(\))q FV(,)e(then)h(ther)m(e)g(is)g(a)f(tr)o(ansition)953 2643 y Ft(h)r FA(S)q FB(,)16 b Fx(\()r FA(e)1157 2658 y Fu(F)1200 2643 y FB(,)g FA(e)1278 2658 y Fu(F)1310 2670 y Fk(G)1355 2643 y FB(,)g FA(e)1430 2658 y Fu(V)1486 2643 y FB(,)g FA(e)1561 2658 y Fu(V)1603 2670 y Fk(G)1649 2643 y FB(,)g FA(s)r(t)r(o)s Fx(\))r Ft(i)30 b(!)d Fx(\()r FA(e)2096 2658 y Fu(F)2139 2643 y FB(,)16 b FA(e)2217 2658 y Fu(F)2249 2670 y Fk(G)2294 2643 y FB(,)g FA(e)2370 2605 y Fr(0)2369 2666 y Fu(V)2425 2643 y FB(,)g FA(e)2500 2658 y Fu(V)2542 2670 y Fk(G)2588 2643 y FB(,)g FA(s)r(t)r(o)2739 2605 y Fr(0)2764 2643 y Fx(\))382 2842 y FV(wher)m(e)24 b FA(s)r(t)r(o)780 2790 y Fr(C)763 2842 y Fx(=)k FA(s)r(t)r(o)973 2856 y Fu(m)1054 2842 y FV(and)d FA(s)r(t)r(o)1326 2809 y Fr(0)1393 2790 y(C)1377 2842 y Fx(=)i FA(s)r(t)r(o)1587 2809 y Fr(0)1586 2864 y Fu(m)1644 2842 y FV(.)523 3037 y F2(The)c(proof)i(is)e(based)i(on)e(induction)k(on)c(the)h(length)h (of)f(the)f(computation)k(sequences.)382 3294 y FX(The)c(case)i FA(C)r FX(:)92 b Ft(T)25 b Fx(\()r FA(C)s Fx(\))k(=)g F0(L)t(D)t(C)d Ft(C)7 b Fx(\()r FA(v)r Fx(\))27 b F2(where)e FA(v)k Fx(=)f Ft(V)9 b Fx(\()r FA(C)s Fx(\))25 b F2(which)f(results)i (in)e(the)g(transition)383 3424 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)735 3438 y Fu(m)796 3424 y Ft(i)38 b(\))g(h)7 b FA(p)r(c)23 b Fx(+)e FB(1,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))40 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)1808 3438 y Fu(m)1868 3424 y Ft(i)q F2(.)28 b(Using)i(the)f(rule)h([lit],)f(we)f(ha)n(v)o(e)j Ft(h)r FA(C)r FB(,)16 b FA(e)r Ft(i)39 b(!)383 3554 y(h)r FA(v)q FB(,)16 b FA(e)r Ft(i)26 b F2(where)f FA(v)j Fx(=)f Ft(V)9 b Fx(\()r FA(C)s Fx(\))q F2(.)382 3811 y FX(The)25 b(case)i Fx(\()s FA(E)r Fx(\))q FX(:)94 b Ft(T)24 b Fx(\()q FW(\()s FA(E)q FW(\))p Fx(\))33 b(=)e Ft(T)25 b Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(N)t(O)t(P)29 b F2(so)d(if)g(there)h(is)e(a) h(computation)i(sequence)h(for)382 3941 y(this)24 b(e)o(xpression,)i (it)d(must)h(be)952 4127 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1304 4141 y Fu(m)1366 4127 y Ft(i)27 b(\))1521 4090 y Fr(\003)1586 4127 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)c FA(s)q FB(,)16 b FA(s)r(t)r(o)2591 4090 y Fr(0)2590 4150 y Fu(m)2650 4127 y Ft(i)1428 4282 y(\))28 b(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)c Fx(+)e FB(1,)d Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)2706 4244 y Fr(0)2705 4304 y Fu(m)2765 4282 y Ft(i)382 4469 y F2(Since)29 b(the)g(length)h(of)f (the)g(computation)i(sequence)g(for)f Ft(T)25 b Fx(\()s FA(E)r Fx(\))30 b F2(is)f(less)g(than)h(the)f(length)h(of)382 4599 y(the)h(computation)i(sequence)g(for)e(the)g(entire)g(e)o (xpression,)i(we)d(kno)n(w)h(from)f(the)h(inducti)n(v)o(e)382 4728 y(hypothesis)26 b(that)e(the)g(transition)1589 4915 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2102 4878 y Fr(0)2128 4915 y Ft(i)382 5102 y F2(e)o(xists.)24 b(Then)g(we)e(can)i(apply)h(the)f(rule)g ([paren])1589 5256 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2102 5223 y Fr(0)2128 5256 y Ft(i)p 1522 5297 708 4 v 1523 5380 a(h)q FW(\()s FA(E)q FW(\))o FB(,)g FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)2145 5354 y Fr(0)2171 5380 y Ft(i)q FB(.)1831 5652 y F2(58)p eop end %%Page: 59 61 TeXDict begin 59 60 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FX(The)34 b(case)i FA(V)5 b FX(:)92 b Ft(T)25 b Fx(\()q FA(V)6 b Fx(\))50 b(=)g F0(I)t(L)t(O)r(A)t(D)27 b FA(l)38 b F2(where)f FA(l)52 b Fx(=)d FD(n)r Fx(\()q FA(V)6 b Fx(\))37 b F2(which)f(results)h(in)e(the)g(transi-)382 678 y(tion)g Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)909 692 y Fu(m)970 678 y Ft(i)46 b(\))g(h)7 b FA(p)r(c)25 b Fx(+)d FB(1,)16 b FA(s)r(t)r(o)1627 692 y Fu(m)1687 678 y Fx(\()r FA(l)5 b Fx(\))46 b FB(:)r(:)g FA(s)q FB(,)16 b FA(s)r(t)r(o)2115 692 y Fu(m)2175 678 y Ft(i)q F2(.)33 b(Using)g(the)h(rule)g([v)n(ar],)g(we)e(ha)n(v)o(e)383 808 y Ft(h)q FA(V)5 b FB(,)16 b FA(e)r Ft(i)31 b(!)g(h)r FA(v)q FB(,)16 b FA(e)r Ft(i)27 b F2(where)g FA(v)k Fx(=)f FA(s)r(t)r(o)s Fx(\()5 b FA(L)1604 823 y Fu(V)1662 808 y Fx(\()q FA(V)g FB(,)16 b FA(e)1844 823 y Fu(V)1901 808 y FB(,)g FA(e)1976 823 y Fu(V)2018 835 y Fk(G)2065 808 y Fx(\))r(\))q F2(.)25 b(Since)h FD(n)r Fx(\()q FA(V)6 b Fx(\))27 b F2(gi)n(v)o(es)e(the)h(location)h(of)382 937 y FA(V)g F2(the)d(tw)o(o)f(v)n(alues)i(must)f(be)f(the)h(same.)382 1200 y FX(The)32 b(case)j FA(E)816 1215 y Fz(1)876 1200 y Fx(+)24 b FA(E)1026 1214 y Fz(2)1063 1200 y FX(:)93 b Ft(T)24 b Fx(\()s FA(E)1353 1215 y Fz(1)1391 1200 y FW(+)r FA(E)1503 1214 y Fz(2)1541 1200 y Fx(\))45 b(=)g Ft(T)25 b Fx(\()s FA(E)1905 1215 y Fz(1)1944 1200 y Fx(\))q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)2187 1214 y Fz(2)2226 1200 y Fx(\))q FB(;)17 b F0(I)t(A)t(D)t(D)s F2(.)32 b(If)h(there)h(is)f (a)f(computa-)382 1330 y(tion)h(sequence)h(for)e(this)h(e)o(xpression,) h(it)e(must)g(ha)n(v)o(e)h(brought)h(the)e(machine)i(through)g(the)382 1460 y(follo)n(wing)25 b(steps)612 1681 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)964 1695 y Fu(m)1025 1681 y Ft(i)28 b(\))1181 1644 y Fr(\003)1245 1681 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1678 1696 y Fz(1)1717 1681 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1957 1696 y Fz(1)1998 1681 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2323 1644 y Fr(0)2322 1704 y Fu(m)2382 1681 y Ft(i)1088 1836 y(\))1181 1798 y Fr(\003)1245 1836 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1678 1851 y Fz(1)1717 1836 y Fx(\))r Ft(j)c Fx(+)e Ft(j)r(T)26 b Fx(\()s FA(E)2086 1850 y Fz(2)2124 1836 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)2364 1850 y Fz(2)2405 1836 y Fx(\))28 b FB(:)r(:)f Ft(C)7 b Fx(\()r FA(v)2681 1851 y Fz(1)2721 1836 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3046 1798 y Fr(0)r(0)3045 1858 y Fu(m)3105 1836 y Ft(i)1088 1991 y(\))27 b(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1639 2006 y Fz(1)1678 1991 y Fx(\))r Ft(j)c Fx(+)e Ft(j)r(T)26 b Fx(\()s FA(E)2047 2005 y Fz(2)2085 1991 y Fx(\))r Ft(j)21 b Fx(+)e FB(1,)d Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)2808 1953 y Fr(0)r(0)2807 2013 y Fu(m)2867 1991 y Ft(i)382 2212 y F2(where)25 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))29 b(=)e Ft(C)7 b Fx(\()r FA(v)1067 2227 y Fz(1)1107 2212 y Fx(\))21 b(+)e Ft(C)7 b Fx(\()r FA(v)1391 2226 y Fz(2)1431 2212 y Fx(\))q F2(.)523 2342 y(Using)39 b(the)g(inducti)n(v)o(e)h (hypothesis)i(for)c(the)h(immediate)h(constituents)i(\(which)d(ha)n(v)o (e)382 2472 y(shorter)25 b(computation)h(sequences)h(than)d(the)g (entire)g(e)o(xpression\),)j(the)c(transitions)833 2693 y Ft(h)s FA(E)926 2708 y Fz(1)964 2693 y FB(,)16 b Fx(\()r FA(e)1079 2708 y Fu(F)1121 2693 y FB(,)g FA(e)1199 2708 y Fu(F)1231 2720 y Fk(G)1276 2693 y FB(,)g FA(e)1351 2708 y Fu(V)1407 2693 y FB(,)g FA(e)1482 2708 y Fu(V)1524 2720 y Fk(G)1570 2693 y FB(,)g FA(s)r(t)r(o)s Fx(\))r Ft(i)30 b(!)e(h)r FA(v)2025 2708 y Fz(1)2063 2693 y FB(,)16 b Fx(\()r FA(e)2178 2708 y Fu(F)2221 2693 y FB(,)g FA(e)2299 2708 y Fu(F)2331 2720 y Fk(G)2376 2693 y FB(,)g FA(e)2451 2708 y Fu(V)2507 2693 y FB(,)g FA(e)2582 2708 y Fu(V)2624 2720 y Fk(G)2670 2693 y FB(,)g FA(s)r(t)r(o)2821 2655 y Fr(0)2847 2693 y Fx(\))r Ft(i)382 2914 y F2(and)811 3044 y Ft(h)s FA(E)904 3058 y Fz(2)942 3044 y FB(,)g Fx(\()r FA(e)1057 3059 y Fu(F)1099 3044 y FB(,)g FA(e)1177 3059 y Fu(F)1209 3071 y Fk(G)1254 3044 y FB(,)g FA(e)1329 3059 y Fu(V)1385 3044 y FB(,)g FA(e)1460 3059 y Fu(V)1502 3071 y Fk(G)1548 3044 y FB(,)g FA(s)r(t)r(o)1699 3006 y Fr(0)1725 3044 y Fx(\))r Ft(i)28 b(!)g(h)r FA(v)2027 3058 y Fz(2)2065 3044 y FB(,)16 b Fx(\()r FA(e)2180 3059 y Fu(F)2223 3044 y FB(,)g FA(e)2301 3059 y Fu(F)2333 3071 y Fk(G)2378 3044 y FB(,)g FA(e)2453 3059 y Fu(V)2509 3044 y FB(,)g FA(e)2584 3059 y Fu(V)2626 3071 y Fk(G)2672 3044 y FB(,)g FA(s)r(t)r(o)2823 3006 y Fr(0)r(0)2869 3044 y Fx(\))r Ft(i)382 3228 y F2(must)23 b(e)o(xist.)h(Then)g(we)f (can)g(use)h(the)g(rule)g([plus])h(to)f(conclude)769 3417 y Ft(h)s FA(E)862 3432 y Fz(1)900 3417 y FB(,)16 b FA(e)r Ft(i)28 b(!)f(h)r FA(v)1240 3432 y Fz(1)1279 3417 y FB(,)16 b FA(e)1355 3384 y Fr(0)1380 3417 y Ft(i)93 b(h)s FA(E)1601 3431 y Fz(2)1639 3417 y FB(,)16 b FA(e)1715 3384 y Fr(0)1740 3417 y Ft(i)27 b(!)h(h)r FA(v)2004 3431 y Fz(2)2042 3417 y FB(,)16 b FA(e)2118 3384 y Fr(0)r(0)2163 3417 y Ft(i)p 768 3457 1432 4 v 1095 3541 a(h)s FA(E)1188 3556 y Fz(1)1226 3541 y FW(+)q FA(E)1337 3555 y Fz(2)1374 3541 y FB(,)g FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)1791 3514 y Fr(0)r(0)1837 3541 y Ft(i)2300 3478 y F2(where)25 b FA(v)j Fx(=)f FA(v)2763 3493 y Fz(1)2820 3478 y Fx(+)20 b FA(v)2957 3492 y Fz(2)382 3733 y F2(where)25 b FA(e)665 3700 y Fr(0)r(0)735 3733 y Fx(=)i(\()r FA(e)909 3748 y Fu(F)952 3733 y FB(,)16 b FA(e)1030 3748 y Fu(F)1062 3760 y Fk(G)1107 3733 y FB(,)g FA(e)1182 3748 y Fu(V)1238 3733 y FB(,)g FA(e)1313 3748 y Fu(V)1355 3760 y Fk(G)1401 3733 y FB(,)g FA(s)r(t)r(o)1552 3700 y Fr(0)r(0)1597 3733 y Fx(\))q F2(.)382 3996 y FX(The)j(cases)24 b FA(E)827 4011 y Fz(1)880 3996 y Ft(\000)18 b FA(E)1024 4010 y Fz(2)1061 3996 y FX(,)k FA(E)1161 4011 y Fz(1)1214 3996 y Ft(\003)c FA(E)1332 4010 y Fz(2)1370 3996 y FX(,)k FA(E)1470 4011 y Fz(1)1508 3996 y FB(/)s FA(E)1621 4010 y Fz(2)1659 3996 y FX(,)f FA(E)1758 4011 y Fz(1)1796 3996 y FB(\045)r FA(E)1929 4010 y Fz(2)1986 3996 y FX(and)f Ft(\000)s FA(E)q FX(:)92 b F2(Again,)20 b(these)i(are)e(all)h(similar) 382 4125 y(to)i(the)h(case)i FA(E)845 4140 y Fz(1)901 4125 y Fx(+)21 b FA(E)1048 4139 y Fz(2)1085 4125 y F2(.)382 4388 y FX(The)h(case)k FA(E)797 4403 y Fz(1)835 4388 y FU(&&)q FA(E)1001 4402 y Fz(2)1038 4388 y FX(:)91 b F2(The)23 b(e)o(xpression)k(is)c(translated)j(to)491 4609 y Ft(T)f Fx(\()s FA(E)659 4624 y Fz(1)697 4609 y FW(&&)q FA(E)863 4623 y Fz(2)901 4609 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1230 4624 y Fz(1)1269 4609 y Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)27 b F1(f)o(alse)9 b FB(;)16 b Ft(T)25 b Fx(\()s FA(E)1930 4623 y Fz(2)1969 4609 y Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)27 b F1(f)o(alse)9 b FB(;)17 b F0(L)t(D)t(C)26 b Ft(C)7 b Fx(\()s F0(T)e Fx(\))r FB(;)17 b F0(G)t(O)q(T)s(O)25 b F1(end)12 b FB(;)1029 4764 y F1(f)o(alse)7 b F2(:)q FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(F)e Fx(\))q FB(;)15 b F1(end)10 b F2(:)382 4985 y(If)24 b(there)g(is)g(a)g (computation)i(sequence,)g(then)f(there)g(must)e(be)h(a)g(computation)i (sequence)h(for)384 5115 y FA(E)439 5130 y Fz(1)476 5115 y F2(,)h(and)g(possibly)j(also)e(one)g(for)i FA(E)1540 5129 y Fz(2)1577 5115 y F2(.)d(W)-7 b(e)27 b(split)i(the)g(proof)h (into)f(tw)o(o)f(cases)h(depending)j(on)1831 5652 y(59)p eop end %%Page: 60 62 TeXDict begin 60 61 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(whether)j FA(E)753 563 y Fz(1)812 548 y F2(e)n(v)n(aluates)f(to)h F0(F)f F2(or)e(to)j F0(T)r F2(.)d(If)i FA(E)1748 563 y Fz(1)1807 548 y F2(e)n(v)n(aluates)g(to)h F0(F)r F2(,)d(then)h(the)f(follo)n(wing)i(computa-)382 678 y(tion)g(sequence)i(must)e(e)o(xist)493 899 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)845 913 y Fu(m)906 899 y Ft(i)28 b(\))1062 861 y Fr(\003)1126 899 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1559 914 y Fz(1)1598 899 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1838 914 y Fz(1)1879 899 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2204 861 y Fr(0)2203 921 y Fu(m)2263 899 y Ft(i)111 b F2(e)o(x)o(ecution)26 b(of)e Ft(T)h Fx(\()s FA(E)3050 914 y Fz(1)3089 899 y Fx(\))969 1054 y Ft(\))i(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1652 1016 y Fr(0)1651 1076 y Fu(m)1711 1054 y Ft(i)663 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(F)t(E)t(Q)i F1(f)o(alse)969 1208 y Ft(\))g(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))20 b(+)f FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)1806 1171 y Fr(0)1805 1231 y Fu(m)1865 1208 y Ft(i)509 b F2(e)o(x)o(ecution)26 b(of)d F1(f)o(alse)7 b F2(:)969 1363 y Ft(\))27 b(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))20 b(+)f FB(2,)d Ft(C)7 b Fx(\()s F0(F)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2082 1326 y Fr(0)2081 1386 y Fu(m)2141 1363 y Ft(i)233 b F2(e)o(x)o(ecution)26 b(of)f F0(L)t(D)t(C)i Ft(C)7 b Fx(\()s F0(F)t Fx(\))969 1518 y Ft(\))27 b(h)r FD(l)r Fx(\()q F1(f)o(alse)t Fx(\))20 b(+)f FB(3,)d Ft(C)7 b Fx(\()s F0(F)e Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2082 1480 y Fr(0)2081 1540 y Fu(m)2141 1518 y Ft(i)233 b F2(e)o(x)o(ecution)26 b(of)d F1(end)10 b F2(:)382 1739 y(From)23 b(the)g(inducti)n(v)o(e)j (hypothesis,)g(the)e(transition)1553 1960 y Ft(h)s FA(E)1646 1975 y Fz(1)1684 1960 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)2025 1975 y Fz(1)2063 1960 y FB(,)16 b FA(e)2139 1923 y Fr(0)2164 1960 y Ft(i)382 2181 y F2(e)o(xists)31 b(since)h(the)f(computation)i(sequence)g(for)f FA(E)2014 2197 y Fz(1)2081 2181 y F2(is)e(shorter)j(than)e(the)f(computation)k (se-)382 2311 y(quence)25 b(for)f(the)g(whole)g(e)o(xpression.)h(Then)f (we)f(can)h(apply)g(the)g(rule)g([and-sc]:)1330 2500 y Ft(h)s FA(E)1423 2516 y Fz(1)1461 2500 y FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)1802 2516 y Fz(1)1841 2500 y FB(,)16 b FA(e)1917 2467 y Fr(0)1941 2500 y Ft(i)p 1248 2541 812 4 v 1249 2624 a(h)s FA(E)1342 2639 y Fz(1)1380 2624 y FW(&&)q FA(E)1546 2638 y Fz(2)1583 2624 y FB(,)g FA(e)r Ft(i)28 b(!)g(h)s F0(F)s FB(,)16 b FA(e)1998 2598 y Fr(0)2023 2624 y Ft(i)2160 2562 y F2(if)25 b FA(v)2286 2577 y Fz(1)2350 2562 y Fx(=)j F0(F)s F2(.)523 2813 y(If)42 b FA(E)680 2828 y Fz(1)757 2813 y F2(e)n(v)n(aluates)g(to)g F0(T)r F2(,)e(then)i(the)e(computation)j(sequence)g(must)d(be)h (\(where)g FA(k)60 b Fx(=)383 2943 y Ft(j)r(T)25 b Fx(\()s FA(E)578 2958 y Fz(1)617 2943 y Fx(\))r Ft(j)c Fx(+)d FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()s FA(E)1139 2957 y Fz(2)1178 2943 y Fx(\))r Ft(j)q F2(\):)493 3164 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)845 3178 y Fu(m)906 3164 y Ft(i)28 b(\))1062 3127 y Fr(\003)1126 3164 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1559 3179 y Fz(1)1598 3164 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1838 3179 y Fz(1)1879 3164 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2204 3127 y Fr(0)2203 3187 y Fu(m)2263 3164 y Ft(i)111 b F2(e)o(x)o(ecution) 26 b(of)e Ft(T)h Fx(\()s FA(E)3050 3179 y Fz(1)3089 3164 y Fx(\))969 3319 y Ft(\))i(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1520 3334 y Fz(1)1559 3319 y Fx(\))r Ft(j)c Fx(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2002 3282 y Fr(0)2001 3342 y Fu(m)2061 3319 y Ft(i)313 b F2(e)o(x)o(ecution) 26 b(of)f F0(I)t(F)t(E)t(Q)i F1(f)o(alse)969 3474 y Ft(\))1062 3436 y Fr(\003)1126 3474 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)q FB(,)c Ft(C)7 b Fx(\()r FA(v)1582 3488 y Fz(2)1623 3474 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1948 3436 y Fr(0)r(0)1947 3496 y Fu(m)2007 3474 y Ft(i)367 b F2(e)o(x)o(ecution)26 b(of)e Ft(T)h Fx(\()s FA(E)3050 3488 y Fz(2)3089 3474 y Fx(\))382 3695 y F2(From)e(this,)g(the)h (transitions)1553 3825 y Ft(h)s FA(E)1646 3840 y Fz(1)1684 3825 y FB(,)16 b FA(e)r Ft(i)28 b(!)g(h)r FA(v)2025 3840 y Fz(1)2063 3825 y FB(,)16 b FA(e)2139 3787 y Fr(0)2164 3825 y Ft(i)382 4009 y F2(and)1531 4139 y Ft(h)s FA(E)1624 4153 y Fz(2)1662 4139 y FB(,)g FA(e)1738 4101 y Fr(0)1763 4139 y Ft(i)27 b(!)h(h)r FA(v)2027 4153 y Fz(2)2065 4139 y FB(,)16 b FA(e)2141 4101 y Fr(0)r(0)2186 4139 y Ft(i)382 4322 y F2(must)23 b(e)o(xist)i(by)e(the)h(inducti)n(v)o(e)h (hypothesis.)h(Hence,)e(we)f(use)h(the)f(rule)i([and])f(to)g(conclude) 937 4512 y Ft(h)s FA(E)1030 4527 y Fz(1)1068 4512 y FB(,)16 b FA(e)r Ft(i)28 b(!)f(h)r FA(v)1408 4527 y Fz(1)1447 4512 y FB(,)16 b FA(e)1523 4479 y Fr(0)1548 4512 y Ft(i)93 b(h)s FA(E)1769 4526 y Fz(2)1807 4512 y FB(,)16 b FA(e)1883 4479 y Fr(0)1907 4512 y Ft(i)28 b(!)g(h)r FA(v)2172 4526 y Fz(2)2210 4512 y FB(,)16 b FA(e)2286 4479 y Fr(0)r(0)2331 4512 y Ft(i)p 936 4552 1432 4 v 1217 4635 a(h)s FA(E)1310 4651 y Fz(1)1348 4635 y FW(&&)q FA(E)1514 4649 y Fz(2)1551 4635 y FB(,)g FA(e)r Ft(i)28 b(!)g(h)r FA(v)1892 4649 y Fz(2)1930 4635 y FB(,)16 b FA(e)2006 4609 y Fr(0)r(0)2051 4635 y Ft(i)2468 4573 y F2(if)25 b FA(v)2594 4588 y Fz(1)2658 4573 y Fx(=)j F0(T)s FB(.)382 4819 y F2(The)g(rest)h(of)f(the)h(proof)h (amounts)g(to)e(sho)n(wing)i(that)f(the)f(computation)k(sequences)f (for)e(the)382 4949 y(tw)o(o)24 b(cases)j FA(v)804 4963 y Fz(2)870 4949 y Fx(=)j F0(F)c F2(and)g FA(v)1239 4963 y Fz(2)1305 4949 y Fx(=)k F0(T)d F2(agree)f(with)e(the)h(conclusion)i (of)e([and].)g(This)f(has)h(already)382 5079 y(been)f(done)h(in)e(the)h (proof)h(for)e(Lemma)g(1)g(for)h(this)g(case.)382 5342 y FX(The)e(case)k FA(E)797 5357 y Fz(1)835 5342 y FU(||)q FA(E)1001 5356 y Fz(2)1061 5342 y FX(and)c FU(!)r FA(E)q FX(:)91 b F2(Again,)23 b(similar)h(to)g(the)g(case)i FA(E)2471 5357 y Fz(1)2508 5342 y FW(&&)q FA(E)2674 5356 y Fz(2)2711 5342 y F2(.)1831 5652 y(60)p eop end %%Page: 61 63 TeXDict begin 61 62 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FX(The)g(case)k FA(E)797 563 y Fz(1)835 548 y FU(==)q FA(E)1001 562 y Fz(2)1061 548 y FX(f)n(or)d(integers:)94 b F2(The)23 b(e)o(xpression)j(is)d(translated)j(to)594 753 y Ft(T)f Fx(\()s FA(E)762 768 y Fz(1)799 753 y FW(==)r FA(E)966 767 y Fz(2)1004 753 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)1333 768 y Fz(1)1371 753 y Fx(\))q FB(;)16 b Ft(T)26 b Fx(\()s FA(E)1615 767 y Fz(2)1653 753 y Fx(\))q FB(;)17 b F0(I)t(F)t F2(_)t F0(I)t(C)t(M)t(P)t(E)t(Q)31 b F1(true)8 b FB(;)17 b F0(L)t(D)t(C)27 b Ft(C)7 b Fx(\()s F0(F)e Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)25 b F1(end)12 b FB(;)1222 908 y F1(true)7 b F2(:)r FB(;)17 b F0(L)t(D)t(C)26 b Ft(C)7 b Fx(\()s F0(T)e Fx(\))r FB(;)15 b F1(end)10 b F2(:)382 1113 y(If)23 b(there)i(is)e(a)g(computation)j(sequence,)g(it)d (must)h(go)f(through)j(the)e(steps)612 1318 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)964 1332 y Fu(m)1025 1318 y Ft(i)28 b(\))1181 1280 y Fr(\003)1245 1318 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1678 1333 y Fz(1)1717 1318 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1957 1333 y Fz(1)1998 1318 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2323 1280 y Fr(0)2322 1340 y Fu(m)2382 1318 y Ft(i)1088 1473 y(\))1181 1435 y Fr(\003)1245 1473 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1678 1488 y Fz(1)1717 1473 y Fx(\))r Ft(j)c Fx(+)e Ft(j)r(T)26 b Fx(\()s FA(E)2086 1487 y Fz(2)2124 1473 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)2364 1487 y Fz(2)2405 1473 y Fx(\))28 b FB(:)r(:)f Ft(C)7 b Fx(\()r FA(v)2681 1488 y Fz(1)2721 1473 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)3046 1435 y Fr(0)r(0)3045 1495 y Fu(m)3105 1473 y Ft(i)382 1678 y F2(From)37 b(the)g(inducti)n(v)o(e)j(hypothesis)g(and)e(the)f(f) o(act)i(that)f(the)f(computation)j(sequences)h(for)383 1807 y Ft(T)25 b Fx(\()s FA(E)551 1822 y Fz(1)590 1807 y Fx(\))31 b F2(and)h Ft(T)25 b Fx(\()s FA(E)986 1821 y Fz(2)1025 1807 y Fx(\))31 b F2(must)g(be)g(shorter)h(than)g(the)f (computation)i(sequence)h(for)c(the)i(whole)382 1937 y(e)o(xpression,)26 b(the)e(transitions)833 2142 y Ft(h)s FA(E)926 2157 y Fz(1)964 2142 y FB(,)16 b Fx(\()r FA(e)1079 2157 y Fu(F)1121 2142 y FB(,)g FA(e)1199 2157 y Fu(F)1231 2169 y Fk(G)1276 2142 y FB(,)g FA(e)1351 2157 y Fu(V)1407 2142 y FB(,)g FA(e)1482 2157 y Fu(V)1524 2169 y Fk(G)1570 2142 y FB(,)g FA(s)r(t)r(o)s Fx(\))r Ft(i)30 b(!)e(h)r FA(v)2025 2157 y Fz(1)2063 2142 y FB(,)16 b Fx(\()r FA(e)2178 2157 y Fu(F)2221 2142 y FB(,)g FA(e)2299 2157 y Fu(F)2331 2169 y Fk(G)2376 2142 y FB(,)g FA(e)2451 2157 y Fu(V)2507 2142 y FB(,)g FA(e)2582 2157 y Fu(V)2624 2169 y Fk(G)2670 2142 y FB(,)g FA(s)r(t)r(o)2821 2105 y Fr(0)2847 2142 y Fx(\))r Ft(i)382 2347 y F2(and)811 2477 y Ft(h)s FA(E)904 2491 y Fz(2)942 2477 y FB(,)g Fx(\()r FA(e)1057 2492 y Fu(F)1099 2477 y FB(,)g FA(e)1177 2492 y Fu(F)1209 2504 y Fk(G)1254 2477 y FB(,)g FA(e)1329 2492 y Fu(V)1385 2477 y FB(,)g FA(e)1460 2492 y Fu(V)1502 2504 y Fk(G)1548 2477 y FB(,)g FA(s)r(t)r(o)1699 2440 y Fr(0)1725 2477 y Fx(\))r Ft(i)28 b(!)g(h)r FA(v)2027 2491 y Fz(2)2065 2477 y FB(,)16 b Fx(\()r FA(e)2180 2492 y Fu(F)2223 2477 y FB(,)g FA(e)2301 2492 y Fu(F)2333 2504 y Fk(G)2378 2477 y FB(,)g FA(e)2453 2492 y Fu(V)2509 2477 y FB(,)g FA(e)2584 2492 y Fu(V)2626 2504 y Fk(G)2672 2477 y FB(,)g FA(s)r(t)r(o)2823 2440 y Fr(0)r(0)2869 2477 y Fx(\))r Ft(i)382 2653 y F2(must)23 b(e)o(xist.)h(Therefore,)h(we)e(can)h(apply) g(the)g(rule)g([equals]:)606 2881 y Ft(h)s FA(E)699 2896 y Fz(1)737 2881 y FB(,)16 b FA(e)r Ft(i)28 b(!)f(h)r FA(v)1077 2896 y Fz(1)1116 2881 y FB(,)16 b FA(e)1192 2848 y Fr(0)1217 2881 y Ft(i)93 b(h)s FA(E)1438 2895 y Fz(2)1476 2881 y FB(,)16 b FA(e)1552 2848 y Fr(0)1576 2881 y Ft(i)28 b(!)g(h)r FA(v)1841 2895 y Fz(2)1879 2881 y FB(,)16 b FA(e)1955 2848 y Fr(0)r(0)2000 2881 y Ft(i)p 605 2922 1432 4 v 904 3005 a(h)s FA(E)997 3020 y Fz(1)1035 3005 y FW(==)q FA(E)1201 3019 y Fz(2)1239 3005 y FB(,)g FA(e)r Ft(i)28 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1655 2979 y Fr(0)r(0)1701 3005 y Ft(i)2137 2942 y F2(where)25 b FA(v)j Fx(=)2554 2756 y Fp(8)2554 2838 y(<)2554 3002 y(:)2638 2873 y F0(T)94 b F2(if)24 b FA(v)2901 2888 y Fz(1)2966 2873 y Fx(=)j FA(v)3110 2887 y Fz(2)2638 3029 y F0(F)98 b F2(else)382 3228 y(The)28 b(rest)h(of)g(the)g(proof)h(for)f (this)g(case)h(amounts)g(to)e(sho)n(wing)i(that)f(the)g(results)i(of)d (the)h(tw)o(o)382 3358 y(computation)g(sequences)h(for)e Ft(C)7 b Fx(\()r FA(v)1528 3373 y Fz(1)1568 3358 y Fx(\))34 b(=)f Ft(C)7 b Fx(\()r FA(v)1879 3372 y Fz(2)1919 3358 y Fx(\))27 b F2(and)h Ft(C)7 b Fx(\()r FA(v)2277 3373 y Fz(1)2317 3358 y Fx(\))34 b Ft(6)r Fx(=)g Ft(C)7 b Fx(\()r FA(v)2631 3372 y Fz(2)2671 3358 y Fx(\))27 b F2(that)g(remain)h(agree)382 3488 y(with)g(the)h(result)h(of)f(the)g ([equals])i(transition.)g(This)d(has)h(already)i(been)f(done)f(in)g (the)g(proof)382 3618 y(for)24 b(Lemma)e(1)h(for)h(this)g(case.)382 3878 y FX(The)j(cases)32 b FA(E)843 3893 y Fz(1)880 3878 y FU(!=)r FA(E)1047 3892 y Fz(2)1084 3878 y FX(,)d FA(E)1191 3893 y Fz(1)1229 3878 y FU(<)q FA(E)1340 3892 y Fz(2)1377 3878 y FX(,)h FA(E)1485 3893 y Fz(1)1522 3878 y FU(>)r FA(E)1634 3892 y Fz(2)1671 3878 y FX(,)g FA(E)1779 3893 y Fz(1)1816 3878 y FU(<=)q FA(E)1982 3892 y Fz(2)2047 3878 y FX(and)g FA(E)2279 3893 y Fz(1)2316 3878 y FU(>=)q FA(E)2482 3892 y Fz(2)2547 3878 y FX(f)n(or)f(integers:)93 b F2(Analo-)382 4008 y(gous)24 b(to)g(the)g(case)i FA(E)1040 4023 y Fz(1)1077 4008 y FW(==)q FA(E)1243 4022 y Fz(2)1280 4008 y F2(.)382 4268 y FX(The)31 b(cases)36 b FA(E)851 4283 y Fz(1)888 4268 y FU(==)r FA(E)1055 4282 y Fz(2)1092 4268 y FX(,)e FA(E)1204 4283 y Fz(1)1241 4268 y FU(!=)q FA(E)1407 4282 y Fz(2)1444 4268 y FX(,)g FA(E)1556 4283 y Fz(1)1593 4268 y FU(<)r FA(E)1705 4282 y Fz(2)1742 4268 y FX(,)g FA(E)1854 4283 y Fz(1)1891 4268 y FU(>)q FA(E)2002 4282 y Fz(2)2040 4268 y FX(,)f FA(E)2151 4283 y Fz(1)2189 4268 y FU(<=)q FA(E)2355 4282 y Fz(2)2424 4268 y FX(and)g FA(E)2659 4283 y Fz(1)2697 4268 y FU(>=)q FA(E)2863 4282 y Fz(2)2932 4268 y FX(f)n(or)g(\003oating)382 4398 y(point:)91 b F2(Again)24 b(these)g(are)g(similar)g(to)g(the)f (inte)o(ger)i(cases.)382 4658 y FX(The)d(case)27 b FA(F)s Fx(\()s FA(E)890 4673 y Fz(1)928 4658 y FB(,)16 b(.)h(.)g(.)g(,)g FA(E)1183 4672 y Fu(n)1225 4658 y Fx(\))93 b F2(The)23 b(e)o(xpression)j(is)d(translated)j(to)796 4863 y Ft(T)f Fx(\()t FA(F)s Fx(\()s FA(E)1057 4878 y Fz(1)1095 4863 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)1349 4877 y Fu(n)1392 4863 y Fx(\))r(\))28 b(=)f Ft(T)e Fx(\()s FA(E)1758 4878 y Fz(1)1797 4863 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)25 b Fx(\()s FA(E)2200 4877 y Fu(n)2243 4863 y Fx(\))q FB(;)17 b F0(I)t(N)t(V)q(O)t(K)t(E)t(S)t(T)m(A)l(T)t(I)t(C)26 b FA(F)382 5068 y F2(If)d(there)h(is)f(a)g(\002nite)h(computation)i (sequence)g(for)d(the)h(e)o(xpression,)i(then)e(the)f(body)j Ft(T)f Fx(\()r FA(S)r Fx(\))f F2(of)382 5198 y(the)g(function)k FA(F)d F2(must)f(contain)h(a)e(translated)j FR(r)o(etur)o(n)c F2(statement,)j(i.e.)e(it)g(must)g(look)i(lik)o(e)1128 5403 y Ft(T)g Fx(\()r FA(S)1291 5418 y Fz(1)1329 5403 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)25 b Fx(\()s FA(E)1731 5417 y Fu(r)1764 5403 y Fx(\))q FB(;)17 b F0(I)t(R)t(E)t(T)t (U)t(R)t(N)5 b FB(;)16 b(.)h(.)g(.)f(;)g Ft(T)25 b Fx(\()r FA(S)2546 5417 y Fu(n)2589 5403 y Fx(\))1831 5652 y F2(61)p eop end %%Page: 62 64 TeXDict begin 62 63 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(Therefore,)31 b(if)e(there)h(is)f(a)g(computation)j (sequence,)f(it)e(must)h(be)f(\(where)i FA(k)39 b Fx(=)f Ft(j)r(T)25 b Fx(\()s FA(E)3175 563 y Fz(1)3214 548 y Fx(\))r Ft(j)e Fx(+)383 678 y FB(.)17 b(.)g(.)j Fx(+)f Ft(j)r(T)26 b Fx(\()s FA(E)793 692 y Fu(n)836 678 y Fx(\))r Ft(j)f F2(for)e(con)l(v)o(enience\):)491 864 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)843 878 y Fu(m)896 890 y Fl(1)933 864 y Ft(i)28 b(\))1089 826 y Fr(\003)1154 864 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()s FA(E)1587 879 y Fz(1)1626 864 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)1866 879 y Fz(1)1907 864 y Fx(\))27 b FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)2231 878 y Fu(m)2284 889 y Fl(2)2319 864 y Ft(i)1061 995 y F2(.)1061 1028 y(.)1061 1061 y(.)996 1216 y Ft(\))1089 1179 y Fr(\003)1154 1216 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)q FB(,)c Ft(C)7 b Fx(\()r FA(v)1611 1230 y Fu(n)1656 1216 y Fx(\))28 b FB(:)r(:)f(.)17 b(.)g(.)27 b(:)r(:)h Ft(C)7 b Fx(\()r FA(v)2138 1231 y Fz(1)2178 1216 y Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2502 1230 y Fu(m)2556 1242 y Fk(n)r Fg(+)q Fl(1)2660 1216 y Ft(i)996 1371 y(\))28 b(h)7 b FD(j)r Fx(\()t FA(F)s Fx(\))q FB(,)16 b Fx(\()7 b FA(p)r(c)22 b Fx(+)d FA(k)r Fx(\))29 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)1988 1333 y Fr(0)1987 1393 y Fu(m)2041 1405 y Fk(n)r Fg(+)q Fl(1)2144 1371 y Ft(i)996 1526 y(\))1089 1488 y Fr(\003)1154 1526 y Ft(h)7 b FD(j)r Fx(\()t FA(F)s Fx(\))20 b(+)g Ft(j)r(T)25 b Fx(\()r FA(S)1681 1541 y Fz(1)1720 1526 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)25 b Fx(\()s FA(E)2122 1540 y Fu(r)2155 1526 y Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)d Fx(\()7 b FA(p)r(c)22 b Fx(+)d FA(k)r Fx(\))29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)3141 1540 y Fu(m)3195 1550 y Fk(r)3226 1526 y Ft(i)996 1680 y(\))28 b(h)7 b FA(p)r(c)21 b Fx(+)f FA(k)g Fx(+)f FB(1,)d Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)2052 1694 y Fu(m)2106 1704 y Fk(r)2136 1680 y Ft(i)382 1866 y F2(where)27 b FA(s)r(t)r(o)742 1833 y Fr(0)741 1889 y Fu(m)795 1901 y Fk(n)r Fg(+)q Fl(1)928 1866 y Fx(=)32 b FA(s)r(t)r(o)1142 1880 y Fu(m)1196 1892 y Fk(n)r Fg(+)q Fl(1)1299 1866 y Fx([)r FD(n)r Fx(\()q FA(V)1466 1881 y Fz(1)1506 1866 y Fx(\))g Ft(7)r(!)g(C)7 b Fx(\()r FA(v)1836 1881 y Fz(1)1876 1866 y Fx(\))q FB(,)16 b(.)h(.)g(.)g(,)f FD(n)r Fx(\()q FA(V)2251 1880 y Fu(n)2295 1866 y Fx(\))32 b Ft(7)r(!)g(C)7 b Fx(\()r FA(v)2626 1880 y Fu(n)2671 1866 y Fx(\))r(])q F2(.)26 b(Hence,)g(the)g(tran-)382 1996 y(sitions)1485 2182 y Ft(h)s FA(E)1578 2197 y Fz(1)1616 2182 y FB(,)16 b FA(e)1691 2197 y Fz(1)1729 2182 y Ft(i)28 b(!)f(h)r FA(v)1993 2197 y Fz(1)2032 2182 y FB(,)16 b FA(e)2107 2196 y Fz(2)2146 2182 y Ft(i)1857 2313 y F2(.)1857 2346 y(.)1857 2380 y(.)1474 2534 y Ft(h)s FA(E)1568 2548 y Fu(n)1610 2534 y FB(,)g FA(e)1686 2548 y Fu(n)1729 2534 y Ft(i)28 b(!)f(h)r FA(v)1994 2548 y Fu(n)2038 2534 y FB(,)16 b FA(e)2114 2549 y Fu(n)r Fj(+)q Fz(1)2243 2534 y Ft(i)382 2720 y F2(must)23 b(e)o(xist)i(by)e(the)h(inducti)n(v)o(e)h (hypothesis.)h(Since)f FA(S)f F2(is)1329 2906 y Ft(f)r FA(S)1427 2921 y Fz(1)1496 2906 y FB(.)17 b(.)g(.)32 b FW(return)14 b FA(E)2030 2920 y Fu(r)2062 2906 y FW(;)31 b FB(.)17 b(.)g(.)32 b FA(S)2335 2920 y Fu(n)2378 2906 y Ft(g)382 3092 y F2(the)f(deri)n(v)n(ation)i(tree)e(must)f(look)i(lik) o(e)f(\(with)g(the)g FR(r)o(etur)o(n)d F2(statement)33 b(inside)f(an)e(arbitrarily)382 3222 y(comple)o(x)24 b(compound\))888 3690 y FA(S)939 3705 y Fz(1)1083 3690 y Ft(\001)17 b(\001)g(\001)1465 3397 y(h)s FA(E)1558 3411 y Fu(r)1590 3397 y FB(,)f FA(e)1666 3411 y Fu(t)1694 3397 y Ft(i)28 b(!)g(h)r FA(v)q FB(,)16 b FA(e)2034 3411 y Fu(r)2068 3397 y Ft(i)p 1331 3450 907 4 v 1332 3534 a(h)q FW(return)f FA(E)1768 3548 y Fu(r)1799 3534 y FW(;)p FB(,)h FA(e)1930 3548 y Fu(t)1958 3534 y Ft(i)28 b(!)2148 3533 y FB(\210)2139 3534 y FA(e)2176 3507 y Fr(R)2175 3556 y Fu(r)p 1321 3571 917 4 v 1724 3655 a Ft(\001)17 b(\001)g(\001)2345 3592 y(\001)g(\001)g(\001)p 1311 3669 1146 4 v 1828 3752 a(\001)g(\001)g(\001)2563 3690 y(\001)g(\001)g(\001) 110 b FA(S)2834 3704 y Fu(n)p 887 3767 1990 4 v 1594 3850 a Ft(h)r FA(S)q FB(,)16 b FA(e)1759 3819 y Fr(0)1759 3880 y Fu(n)r Fj(+)q Fz(1)1889 3850 y Ft(i)28 b(!)2080 3849 y FB(\210)2070 3850 y FA(e)2107 3824 y Fr(R)2106 3873 y Fu(r)382 4012 y F2(where)642 4011 y FB(\210)633 4012 y FA(e)669 4026 y Fu(r)729 4012 y F2(is)h FA(e)854 4026 y Fu(r)914 4012 y F2(e)o(xcept)h(the)e(store)i(has)f(been)h (augmented)g(with)f(the)g(binding)i(retv)n(al)37 b Ft(7)r(!)g FA(v)q F2(.)382 4142 y(The)28 b(transition)i(from)f FA(S)1177 4157 y Fz(1)1242 4142 y F2(to)n(w)o(ards)g(the)f FR(r)o(etur)o(n)e F2(statement)k(and)e(the)h(transition)h(for)h FA(E)3181 4156 y Fu(r)3239 4142 y F2(fol-)382 4272 y(lo)n(ws)21 b(from)h(the)f(computation)k(sequence)f(abo)o(v)o(e)e(and)g(the)f (inducti)n(v)o(e)j(hypothesis.)g(Since)e(the)382 4402 y FR(r)o(etur)o(n)29 b F2(statement)k(returns)g(an)f Ft(R)q F2(-tagged)h(en)l(vironment,)i(the)c(rest)h(of)f(the)g (transitions)k(to-)382 4531 y(w)o(ards)23 b FA(S)672 4545 y Fu(n)734 4531 y F2(will)e(simply)i(hand)f(o)o(v)o(er)g(the)h FA(e)1712 4498 y Fr(R)1711 4554 y Fu(r)1794 4531 y F2(en)l(vironment,)h (thus)f(completing)g(the)f(transition)382 4661 y(for)j FA(S)q F2(.)523 4791 y(Therefore,)g(we)e(can)g(apply)i(the)f(rule)g ([fcall-)q Ft(R)q F2(])633 4954 y Ft(h)s FA(E)726 4969 y Fz(1)764 4954 y FB(,)16 b FA(e)839 4969 y Fz(1)878 4954 y Ft(i)27 b(!)h(h)r FA(v)1142 4969 y Fz(1)1180 4954 y FB(,)16 b FA(e)1255 4968 y Fz(2)1294 4954 y Ft(i)108 b FB(.)17 b(.)g(.)109 b Ft(h)s FA(E)1743 4968 y Fu(n)1785 4954 y FB(,)16 b FA(e)1861 4968 y Fu(n)1904 4954 y Ft(i)28 b(!)f(h)r FA(v)2169 4968 y Fu(n)2212 4954 y FB(,)16 b FA(e)2288 4969 y Fu(n)r Fj(+)q Fz(1)2417 4954 y Ft(i)94 b(h)r FA(S)q FB(,)16 b FA(e)2711 4921 y Fr(0)2711 4981 y Fu(n)r Fj(+)q Fz(1)2840 4954 y Ft(i)28 b(!)3031 4953 y FB(\210)3022 4954 y FA(e)3059 4921 y Fr(R)3058 4976 y Fu(r)p 632 5002 2489 4 v 947 5097 a Ft(h)t FA(F)r FW(\()r FA(E)1151 5112 y Fz(1)1189 5097 y FB(,)16 b(.)h(.)g(.)f(,)h FA(E)1443 5111 y Fu(n)1485 5097 y Fx(\))q FB(,)f FA(e)1596 5112 y Fz(1)1635 5097 y Ft(i)28 b(!)g(h)r FA(v)q FB(,)16 b Fx(\()r FA(e)2015 5112 y Fu(F)2046 5124 y Fl(1)2080 5097 y FB(,)g FA(e)2158 5112 y Fu(F)2190 5124 y Fk(G)2236 5097 y FB(,)g FA(e)2311 5112 y Fu(V)2352 5124 y Fl(1)2385 5097 y FB(,)g FA(e)2460 5112 y Fu(V)2502 5124 y Fk(G)2548 5097 y FB(,)2597 5081 y Fp(c)2587 5097 y FA(s)r(t)r(o)2700 5111 y Fu(r)2732 5097 y Fx(\))r Ft(i)382 5273 y F2(where)25 b FA(v)j Fx(=)809 5257 y Fp(c)799 5273 y FA(s)r(t)r(o)912 5287 y Fu(r)944 5273 y Fx(\()q F2(retv)n(al)s Fx(\))q F2(.)523 5403 y(Again,)18 b(we)g(shall)h(not)g(pro)o(v)o(e)f(the)h (case)g(where)g(the)f(function)j(call)e(occurs)g(as)g(a)f(statement.) 1831 5652 y(62)p eop end %%Page: 63 65 TeXDict begin 63 64 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a FX(The)i(case)j FA(V)35 b Fx(=)d FA(E)q FU(;)o FX(:)93 b Ft(T)24 b Fx(\()q FA(V)36 b Fx(=)c FA(E)q FW(;)q Fx(\))g(=)f Ft(T)24 b Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(S)t(T)s(O)t(R)t(E)30 b FA(l)g F2(where)d FA(l)34 b Fx(=)d FD(n)r Fx(\()q FA(V)6 b Fx(\))q F2(.)26 b(If)g(a)f(com-)382 678 y(putation)h(sequence)g(e)o(xists,)e(it)f(must)h(bring)g(the)g (machine)h(through)g(the)f(follo)n(wing)h(steps:)887 899 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1239 913 y Fu(m)1300 899 y Ft(i)28 b(\))1456 861 y Fr(\003)1521 899 y Ft(h)7 b FA(p)r(c)21 b Fx(+)e Ft(j)r(T)26 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()r FA(v)r Fx(\))31 b FB(:)r(:)c FA(s)q FB(,)16 b FA(s)r(t)r(o)2526 861 y Fr(0)2525 921 y Fu(m)2585 899 y Ft(i)1363 1054 y(\))27 b(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)26 b Fx(\()s FA(E)r Fx(\))r Ft(j)21 b Fx(+)e FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)2362 1016 y Fr(0)2361 1076 y Fu(m)2421 1054 y Fx([)r FA(l)31 b Ft(7)r(!)c(C)7 b Fx(\()r FA(v)r Fx(\))r(])r Ft(i)382 1275 y F2(Hence,)24 b(from)f(the)h(inducti)n(v)o(e)h (hypothesis)h(the)e(transition)1229 1496 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b Fx(\()r FA(e)1781 1511 y Fu(F)1825 1496 y FB(,)g FA(e)1903 1511 y Fu(F)1935 1523 y Fk(G)1980 1496 y FB(,)g FA(e)2055 1511 y Fu(V)2111 1496 y FB(,)g FA(e)2186 1511 y Fu(V)2228 1523 y Fk(G)2274 1496 y FB(,)g FA(s)r(t)r(o)2425 1459 y Fr(0)2450 1496 y Fx(\))r Ft(i)382 1717 y F2(must)30 b(e)o(xist)h(since)h(the)e(computation)k(sequence)e(for)h FA(E)e F2(is)f(shorter)i(than)f(the)g(computation)382 1847 y(sequence)k(for)e(the)f(whole)h(statement.)h(Therefore)g(we)e (can)h(apply)h(the)f(rule)g([assign])h(and)382 1977 y(conclude)698 2147 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b Fx(\()r FA(e)1249 2162 y Fu(F)1293 2147 y FB(,)g FA(e)1371 2162 y Fu(F)1403 2174 y Fk(G)1448 2147 y FB(,)g FA(e)1523 2162 y Fu(V)1579 2147 y FB(,)g FA(e)1654 2162 y Fu(V)1696 2174 y Fk(G)1742 2147 y FB(,)g FA(s)r(t)r(o)1893 2114 y Fr(0)1919 2147 y Fx(\))r Ft(i)p 548 2190 1595 4 v 549 2273 a(h)q FA(V)5 b FW(=)q FA(E)q FW(;)p FB(,)16 b FA(e)r Ft(i)28 b(!)g Fx(\()r FA(e)1158 2288 y Fu(F)1201 2273 y FB(,)16 b FA(e)1279 2288 y Fu(F)1311 2300 y Fk(G)1356 2273 y FB(,)g FA(e)1431 2288 y Fu(V)1487 2273 y FB(,)g FA(e)1562 2288 y Fu(V)1604 2300 y Fk(G)1650 2273 y FB(,)g FA(s)r(t)r(o)1801 2247 y Fr(0)1826 2273 y Fx([)r FA(l)31 b Ft(7)r(!)d FA(v)r Fx(])r(\))2243 2211 y F2(where)c FA(l)31 b Fx(=)f FA(L)2697 2226 y Fu(V)2754 2211 y Fx(\()q FA(V)5 b FB(,)16 b FA(e)2936 2226 y Fu(V)2992 2211 y FB(,)g FA(e)3067 2226 y Fu(V)3109 2238 y Fk(G)3156 2211 y Fx(\))q F2(.)382 2510 y FX(The)34 b(case)k Fx(+)24 b(+)f FA(V)5 b FU(;)p FX(:)92 b Ft(T)25 b Fx(\()q FW(++)o FA(V)5 b FW(;)q Fx(\))50 b(=)h F0(I)t(L)t(O)r(A)t(D)27 b FA(l)t FB(;)17 b F0(L)t(D)t(C)25 b FB(1)q(;)17 b F0(I)t(A)t(D)t(D)s FB(;)g F0(I)t(S)t(T)s(O)t(R)t(E)28 b FA(l)40 b F2(where)d FA(l)53 b Fx(=)383 2640 y FD(n)r Fx(\()q FA(V)6 b Fx(\))q F2(.)24 b(This)f(gi)n(v)o(es)h(the)g(computation)i(sequence)537 2861 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)889 2875 y Fu(m)950 2861 y Ft(i)28 b(\))g(h)7 b FA(p)r(c)21 b Fx(+)d FB(1,)e FA(s)r(t)r(o)1563 2875 y Fu(m)1623 2861 y Fx(\()r FA(l)5 b Fx(\))29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)2015 2875 y Fu(m)2075 2861 y Ft(i)301 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(L)t(O)r(A)t(D)i FA(l)1013 3016 y Ft(\))h(h)7 b FA(p)r(c)21 b Fx(+)d FB(2,)d(1)27 b(:)r(:)h FA(s)r(t)r(o)1710 3030 y Fu(m)1769 3016 y Fx(\()r FA(l)5 b Fx(\))29 b FB(:)r(:)e FA(s)q FB(,)16 b FA(s)r(t)r(o)2161 3030 y Fu(m)2221 3016 y Ft(i)155 b F2(e)o(x)o(ecution)26 b(of)f F0(L)t(D)t(C)h FB(1)1013 3171 y Ft(\))i(h)7 b FA(p)r(c)21 b Fx(+)d FB(3,)e Ft(C)7 b Fx(\()r FA(v)r Fx(\))30 b FB(:)r(:)d FA(s)q FB(,)16 b FA(s)r(t)r(o)1917 3185 y Fu(m)1977 3171 y Ft(i)399 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(A)t(D)t(D)1013 3326 y Ft(\))j(h)7 b FA(p)r(c)21 b Fx(+)d FB(4,)e FA(s)q FB(,)g FA(s)r(t)r(o)1638 3340 y Fu(m)1699 3326 y Fx([)r FA(l)31 b Ft(7)r(!)c(C)7 b Fx(\()r FA(v)r Fx(\))r(])r Ft(i)271 b F2(e)o(x)o(ecution)26 b(of)f F0(I)t(S)t(T)s(O)t(R)t(E)k FA(l)382 3547 y F2(where)c Ft(C)7 b Fx(\()r FA(v)r Fx(\))29 b(=)e FA(s)r(t)r(o)1040 3561 y Fu(m)1100 3547 y Fx(\()r FA(l)5 b Fx(\))21 b(+)d FB(1)p F2(.)23 b(Using)h(the)g(rule)g([increment])i(we)c(can)i (conclude)643 3768 y Ft(h)q FW(++)p FA(V)5 b FW(;)o FB(,)16 b FA(e)r Ft(i)29 b(!)e Fx(\()r FA(e)1248 3783 y Fu(F)1291 3768 y FB(,)16 b FA(e)1369 3783 y Fu(F)1401 3795 y Fk(G)1446 3768 y FB(,)g FA(e)1521 3783 y Fu(V)1577 3768 y FB(,)g FA(e)1652 3783 y Fu(V)1694 3795 y Fk(G)1740 3768 y FB(,)g FA(s)r(t)r(o)s Fx([)r FA(l)32 b Ft(7)r(!)c FA(v)r Fx(])r(\))94 b F2(where)25 b FA(v)j Fx(=)f FA(s)r(t)r(o)s Fx(\()r FA(l)5 b Fx(\))23 b(+)18 b FB(1)p F2(.)382 4031 y FX(The)k(case)j Ft(\000)20 b(\000)f FA(V)5 b FU(;)o FX(:)91 b F2(Again,)23 b(analogous)k(to)c(the)h(case)h Fx(+)20 b(+)e FA(V)5 b FW(;)p F2(.)382 4293 y FX(The)27 b(case)i FU({)q FA(S)857 4309 y Fz(1)894 4293 y FB(,)16 b(.)h(.)g(.)f(,)g FA(S)1143 4307 y Fu(n)1185 4293 y FU(})o FX(:)93 b Ft(T)24 b Fx(\()q FW({)q FA(S)1579 4309 y Fz(1)1617 4293 y FB(,)16 b(.)h(.)g(.)f(,)g FA(S)1866 4307 y Fu(n)1908 4293 y FW(})p Fx(\))37 b(=)f Ft(T)25 b Fx(\()r FA(S)2305 4309 y Fz(1)2344 4293 y Fx(\))q FB(;)16 b(.)h(.)g(.)g(;)f Ft(T)24 b Fx(\()r FA(S)2741 4307 y Fu(n)2784 4293 y Fx(\))q F2(.)k(If)g(a)g(computa-)382 4423 y(tion)c(sequence)i(e)o(xists,)e(it)f(must)h(be)g(on)f(the)h(form) 748 4644 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1100 4658 y Fu(m)1153 4670 y Fl(1)1191 4644 y Ft(i)28 b(\))1347 4607 y Fr(\003)1411 4644 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)1839 4660 y Fz(1)1878 4644 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2166 4658 y Fu(m)2219 4669 y Fl(2)2256 4644 y Ft(i)1254 4799 y(\))1347 4762 y Fr(\003)1411 4799 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)1839 4814 y Fz(1)1878 4799 y Fx(\))r Ft(j)c Fx(+)e Ft(j)r(T)25 b Fx(\()r FA(S)2241 4813 y Fz(2)2280 4799 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2568 4813 y Fu(m)2621 4824 y Fl(3)2658 4799 y Ft(i)1318 4930 y F2(.)1318 4964 y(.)1318 4997 y(.)1254 5152 y Ft(\))1347 5114 y Fr(\003)1411 5152 y Ft(h)7 b FA(p)r(c)21 b Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)1839 5167 y Fz(1)1878 5152 y Fx(\))r Ft(j)c Fx(+)e FB(.)e(.)g(.)j Fx(+)g Ft(j)r(T)25 b Fx(\()r FA(S)2456 5166 y Fu(n)2499 5152 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2787 5166 y Fu(m)2841 5178 y Fk(n)r Fg(+)q Fl(1)2946 5152 y Ft(i)q FB(.)1831 5652 y F2(63)p eop end %%Page: 64 66 TeXDict begin 64 65 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(Since)37 b(each)g(of)f(the)h(computation)i(sequences)h (for)c(the)h(statements)i(is)d(shorter)i(than)g(the)382 678 y(entire)23 b(computation)i(sequence,)g(we)c(kno)n(w)h(from)g(the)h (inducti)n(v)o(e)h(hypothesis)h(that)e(the)f(tran-)382 808 y(sitions)1589 982 y Ft(h)r FA(S)1677 997 y Fz(1)1715 982 y FB(,)16 b FA(e)1790 997 y Fz(1)1828 982 y Ft(i)28 b(!)g FA(e)2046 996 y Fz(2)1589 1137 y Ft(h)r FA(S)1677 1151 y Fz(2)1715 1137 y FB(,)16 b FA(e)1790 1151 y Fz(2)1828 1137 y Ft(i)28 b(!)g FA(e)2046 1151 y Fz(3)1910 1268 y F2(.)1910 1301 y(.)1910 1334 y(.)1578 1489 y Ft(h)r FA(S)1667 1503 y Fu(n)1710 1489 y FB(,)16 b FA(e)1786 1503 y Fu(n)1828 1489 y Ft(i)28 b(!)g FA(e)2047 1504 y Fu(n)r Fj(+)q Fz(1)382 1664 y F2(e)o(xist.)c(Hence,)f(the)h(rule)g ([block])i(can)d(be)h(used:)879 1800 y Ft(h)r FA(S)967 1815 y Fz(1)1005 1800 y FB(,)16 b FA(e)1080 1815 y Fz(1)1119 1800 y Ft(i)27 b(!)h FA(e)1336 1814 y Fz(2)1465 1800 y Ft(h)r FA(S)1553 1814 y Fz(2)1591 1800 y FB(,)16 b FA(e)1666 1814 y Fz(2)1704 1800 y Ft(i)28 b(!)g FA(e)1922 1814 y Fz(3)2066 1800 y FB(.)17 b(.)g(.)109 b Ft(h)r FA(S)2367 1814 y Fu(n)2409 1800 y FB(,)16 b FA(e)2485 1814 y Fu(n)2528 1800 y Ft(i)27 b(!)h FA(e)2746 1815 y Fu(n)r Fj(+)q Fz(1)p 878 1840 1996 4 v 978 1923 a Ft(h)q FW({)q FA(S)1121 1939 y Fz(1)1159 1923 y FA(S)1210 1937 y Fz(2)1264 1923 y FB(.)17 b(.)g(.)g FA(S)1436 1937 y Fu(n)1478 1923 y FW(})p FB(,)f FA(e)1608 1939 y Fz(1)1646 1923 y Ft(i)28 b(!)f Fx(\()r FA(e)1903 1938 y Fu(F)1934 1950 y Fl(1)1968 1923 y FB(,)16 b FA(e)2046 1938 y Fu(F)2078 1950 y Fk(G)2123 1923 y FB(,)g FA(e)2198 1938 y Fu(V)2239 1950 y Fl(1)2272 1923 y FB(,)g FA(e)2347 1938 y Fu(V)2389 1950 y Fk(G)2435 1923 y FB(,)g FA(s)r(t)r(o)2585 1939 y Fu(n)r Fj(+)q Fz(1)2716 1923 y Fx(\))q FB(.)382 2149 y FX(The)22 b(case)i FU(while\()p FA(E)q FU(\))p FA(S)q FX(:)91 b F2(The)24 b(loop)g(is)f(translated)j(to)599 2323 y Ft(T)e Fx(\()q FW(while\()p FA(E)q FW(\))q FA(S)r Fx(\))k(=)e F1(start)9 b F2(:)q FB(;)16 b Ft(T)25 b Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)28 b F1(done)9 b FB(;)16 b Ft(T)25 b Fx(\()r FA(S)r Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)26 b F1(start)10 b FB(;)15 b F1(done)7 b F2(:)382 2498 y(W)-7 b(e)31 b(\002rst)h(consider)j(the)d(case)h (where)i FA(E)e F2(e)n(v)n(aluates)h(to)g F0(F)r F2(.)e(The)g (computation)j(sequence)g(is)382 2628 y(then)464 2802 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)816 2816 y Fu(m)877 2802 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1565 2816 y Fu(m)1625 2802 y Ft(i)772 b F2(e)o(x)o(ecution)25 b(of)f F1(start)9 b F2(:)940 2957 y Ft(\))1033 2920 y Fr(\003)1097 2957 y Ft(h)e FA(p)r(c)22 b Fx(+)c FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()s F0(F)g Fx(\))27 b FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)2254 2920 y Fr(0)2253 2980 y Fu(m)2312 2957 y Ft(i)85 b F2(e)o(x)o(ecution) 25 b(of)g Ft(T)g Fx(\()s FA(E)r Fx(\))940 3112 y Ft(\))i(h)r FD(l)r Fx(\()q F1(done)t Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1629 3074 y Fr(0)1628 3134 y Fu(m)1689 3112 y Ft(i)708 b F2(e)o(x)o(ecution)25 b(of)h F0(I)t(F)t(E)t(Q)h F1(done)940 3267 y Ft(\))g(h)r FD(l)r Fx(\()q F1(done)t Fx(\))21 b(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1783 3229 y Fr(0)1782 3289 y Fu(m)1842 3267 y Ft(i)555 b F2(e)o(x)o(ecution) 25 b(of)f F1(done)7 b F2(:)382 3441 y(From)23 b(the)g(inducti)n(v)o(e)j (hypothesis)g(the)e(transition)1589 3616 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2102 3578 y Fr(0)2128 3616 y Ft(i)382 3790 y F2(must)23 b(e)o(xist)i(and)g FA(v)f F2(must)g(be)h F0(F)r F2(.)e(Then)h(the)g(rule)g([while-f)o (alse])i(can)e(be)g(applied:)1313 3933 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)30 b(!)d(h)r FA(v)q FB(,)16 b FA(e)1826 3900 y Fr(0)1852 3933 y Ft(i)p 1176 3973 850 4 v 1177 4057 a(h)q FW(while\()o FA(E)q FW(\))q FA(S)q FB(,)g FA(e)r Ft(i)28 b(!)g FA(e)2002 4030 y Fr(0)2126 3994 y F2(where)d FA(v)j Fx(=)g F0(F)382 4195 y F2(Since)c(the)f(\002nal)h (store)g(is)g(correct)h(\(from)e(the)h(e)n(v)n(aluation)i(of)g FA(E)q F2(\),)d(this)h(pro)o(v)o(es)g(this)g(case.)523 4325 y(F)o(or)e(the)h(case)g(where)i FA(E)e F2(e)n(v)n(aluates)h(to)h F0(T)r F2(,)d(if)h(there)g(is)g(computation)i(sequence,)g(it)d(can)h (be)382 4455 y(written)h(as:)383 4629 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)735 4643 y Fu(m)796 4629 y Ft(i)28 b(\))f(h)7 b FA(p)r(c)22 b Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1484 4643 y Fu(m)1544 4629 y Ft(i)1016 b F2(e)o(x)o(ecution)25 b(of)f F1(start)9 b F2(:)859 4784 y Ft(\))952 4747 y Fr(\003)1016 4784 y Ft(h)e FA(p)r(c)22 b Fx(+)c FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()s F0(T)g Fx(\))27 b FB(:)r(:)h FA(s)q FB(,)16 b FA(s)r(t)r(o)2177 4747 y Fr(0)2176 4807 y Fu(m)2235 4784 y Ft(i)325 b F2(e)o(x)o(ecution) 25 b(of)g Ft(T)g Fx(\()s FA(E)r Fx(\))859 4939 y Ft(\))i(h)7 b FA(p)r(c)22 b Fx(+)c FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2011 4901 y Fr(0)2010 4961 y Fu(m)2070 4939 y Ft(i)490 b F2(e)o(x)o(ecution) 25 b(of)h F0(I)t(F)t(E)t(Q)h F1(done)859 5094 y Ft(\))952 5056 y Fr(\003)1016 5094 y Ft(h)7 b FA(p)r(c)22 b Fx(+)c FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()r FA(S)r Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2415 5056 y Fr(0)r(0)2414 5116 y Fu(m)2475 5094 y Ft(i)85 b F2(e)o(x)o(ecution)25 b(of)g Ft(T)g Fx(\()r FA(S)r Fx(\))859 5248 y Ft(\))i(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1330 5211 y Fr(0)r(0)1329 5271 y Fu(m)1391 5248 y Ft(i)1169 b F2(e)o(x)o(ecution)25 b(of)h F0(G)t(O)q(T)s(O)f F1(start)859 5403 y Ft(\))952 5366 y Fr(\003)1016 5403 y Ft(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()q FW(while\()p FA(E)q FW(\))q FA(S)r Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2177 5366 y Fr(0)r(0)r(0)2176 5426 y Fu(m)2244 5403 y Ft(i)316 b F2(e)o(x)o(ecution)25 b(of)f(the)g(rest)f (of)h(the)g(loop)1831 5652 y(64)p eop end %%Page: 65 67 TeXDict begin 65 66 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 523 548 a F2(From)h(the)h(inducti)n(v)o(e)h(hypothesis)h(the)e (transition)1589 769 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2102 732 y Fr(0)2128 769 y Ft(i)382 990 y F2(must)23 b(e)o(xist)i(and)g FA(v)f F2(must)g(be)h F0(T)r F2(,)e(and)h(the)g(transition)1651 1211 y Ft(h)r FA(S)q FB(,)16 b FA(e)1816 1174 y Fr(0)1841 1211 y Ft(i)28 b(!)f FA(e)2059 1174 y Fr(0)r(0)382 1433 y F2(must)h(e)o(xists)h(since)g(the)f(computation)j(sequence)f(for)g FA(S)e F2(is)f(shorter)j(than)f(the)f(computation)382 1562 y(sequence)c(for)d(the)g(whole)h(loop.)g(Lik)o(e)n(wise,)f(since)h (the)g(computation)i(sequence)f(for)f(the)f(rest)382 1692 y(of)34 b(the)g(loop)h(abo)o(v)o(e)g(is)f(shorter)i(than)f(the)f (computation)j(sequence)g(for)d(the)h(whole)f(loop,)382 1822 y(there)24 b(is)g(a)f(transition)j(that)e(starts)h(with)e(store)j FA(s)r(t)r(o)1970 1789 y Fr(0)r(0)2037 1822 y F2(and)e(ends)g(with)h FA(s)r(t)r(o)2678 1789 y Fr(0)r(0)r(0)2742 1822 y F2(:)1410 2043 y Ft(h)q FW(while\()p FA(E)q FW(\))q FA(S)q FB(,)16 b FA(e)2017 2006 y Fr(0)r(0)2061 2043 y Ft(i)28 b(!)g FA(e)2280 2006 y Fr(0)r(0)r(0)523 2265 y F2(Hence,)d(we)f(can)h(apply)h (the)f(rule)g([while-true])i(to)e(conclude)i(that)e(there)g(is)g(a)f (transition)382 2394 y(and)g(that)g(it)f(ends)i(with)e(the)h(correct)h (store:)527 2565 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)1040 2532 y Fr(0)1066 2565 y Ft(i)93 b(h)r FA(S)q FB(,)16 b FA(e)1359 2532 y Fr(0)1384 2565 y Ft(i)28 b(!)f FA(e)1602 2532 y Fr(0)r(0)1738 2565 y Ft(h)q FW(while\()p FA(E)q FW(\))p FA(S)q FB(,)16 b FA(e)2344 2532 y Fr(0)r(0)2389 2565 y Ft(i)28 b(!)f FA(e)2607 2532 y Fr(0)r(0)r(0)p 526 2605 2145 4 v 1155 2689 a Ft(h)q FW(while\()o FA(E)q FW(\))q FA(S)q FB(,)16 b FA(e)r Ft(i)28 b(!)g FA(e)1980 2662 y Fr(0)r(0)r(0)2771 2626 y F2(where)d FA(v)j Fx(=)g F0(T)382 2917 y FX(The)22 b(case)i FU(if\()q FA(E)q FU(\))q FA(S)1070 2932 y Fz(1)1130 2917 y FX(else)h FA(S)1346 2931 y Fz(2)1383 2917 y FX(:)91 b F2(The)23 b(conditional)k(is)d(translated)i(to)741 3138 y Ft(T)e Fx(\()q FW(if\()r FA(E)q FW(\))p FA(S)1181 3153 y Fz(1)1241 3138 y F2(else)h FA(S)1457 3152 y Fz(2)1496 3138 y Fx(\))j(=)f Ft(T)e Fx(\()s FA(E)r Fx(\))q FB(;)17 b F0(I)t(F)t(E)t(Q)28 b F1(else)8 b FB(;)16 b Ft(T)25 b Fx(\()r FA(S)2455 3153 y Fz(1)2494 3138 y Fx(\))q FB(;)17 b F0(G)t(O)q(T)s(O)26 b F1(done)8 b FB(;)1714 3293 y F1(else)f F2(:)r FB(;)16 b Ft(T)24 b Fx(\()r FA(S)2089 3307 y Fz(2)2128 3293 y Fx(\))q FB(;)15 b F1(done)7 b F2(:)382 3514 y(W)-7 b(e)20 b(\002rst)g(consider)j(the)e(case)g(where)i FA(E)e F2(e)n(v)n(aluates)i(to)g F0(T)r F2(.)d(If)g(a)h(computation)i (sequence)g(e)o(xists,)382 3644 y(it)g(must)h(be)383 3865 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)735 3879 y Fu(m)796 3865 y Ft(i)28 b(\))952 3827 y Fr(\003)1016 3865 y Ft(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()s F0(T)g Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2023 3827 y Fr(0)2022 3887 y Fu(m)2082 3865 y Ft(i)361 b F2(e)o(x)o(ecution) 25 b(of)f Ft(T)h Fx(\()s FA(E)r Fx(\))859 4019 y Ft(\))i(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1857 3982 y Fr(0)1856 4042 y Fu(m)1917 4019 y Ft(i)526 b F2(e)o(x)o(ecution) 25 b(of)g F0(I)t(F)t(E)t(Q)j F1(else)859 4174 y Ft(\))952 4137 y Fr(\003)1016 4174 y Ft(h)7 b FA(p)r(c)22 b Fx(+)d Ft(j)r(T)25 b Fx(\()s FA(E)r Fx(\))r Ft(j)d Fx(+)c FB(1)i Fx(+)f Ft(j)r(T)25 b Fx(\()r FA(S)1970 4189 y Fz(1)2009 4174 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2298 4137 y Fr(0)r(0)2297 4197 y Fu(m)2358 4174 y Ft(i)85 b F2(e)o(x)o(ecution)25 b(of)f Ft(T)h Fx(\()r FA(S)3113 4189 y Fz(1)3152 4174 y Fx(\))859 4329 y Ft(\))i(h)r FD(l)r Fx(\()q F1(done)t Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1548 4291 y Fr(0)r(0)1547 4351 y Fu(m)1608 4329 y Ft(i)835 b F2(e)o(x)o(ecution)25 b(of)g F0(G)t(O)q(T)s(O)h F1(done)859 4484 y Ft(\))h(h)r FD(l)r Fx(\()q F1(done)t Fx(\))21 b(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1702 4446 y Fr(0)r(0)1701 4506 y Fu(m)1761 4484 y Ft(i)682 b F2(e)o(x)o(ecution)25 b(of)e F1(done)7 b F2(:)382 4705 y(From)23 b(the)g(inducti)n(v)o(e)j(hypothesis)g(the)e(transition)1589 4926 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)f(h)r FA(v)q FB(,)16 b FA(e)2102 4889 y Fr(0)2128 4926 y Ft(i)382 5147 y F2(must)23 b(e)o(xist)i(\(and)g FA(v)f F2(must)g(be)h F0(T)r F2(\),)f(and)g(from)f(the)h(inducti)n(v)o(e)i(hypothesis)g(the)e (transition)1633 5368 y Ft(h)r FA(S)1721 5384 y Fz(1)1758 5368 y FB(,)16 b FA(e)1834 5331 y Fr(0)1859 5368 y Ft(i)28 b(!)f FA(e)2077 5331 y Fr(0)r(0)1831 5652 y F2(65)p eop end %%Page: 66 68 TeXDict begin 66 67 bop 1210 228 a F1(Chapter)24 b(4.)51 b(T)m(ranslation)26 b(to)e(JVM)e(code)p 382 266 2989 4 v 382 548 a F2(must)h(also)h(e)o(xist)f(since)i(the)e(computation)j (sequence)f(for)g FA(S)2298 563 y Fz(1)2357 548 y F2(is)e(shorter)i (than)f(the)f(computa-)382 678 y(tion)h(sequence)i(for)e(the)g(whole)f (conditional.)523 808 y(Hence,)h(the)f(rule)i([if-else-true])i(can)d (be)f(applied)i(and)f(gi)n(v)o(es)1010 997 y Ft(h)s FA(E)q FB(,)16 b FA(e)r Ft(i)29 b(!)e(h)r FA(v)q FB(,)16 b FA(e)1522 964 y Fr(0)1548 997 y Ft(i)94 b(h)r FA(S)1765 1012 y Fz(1)1803 997 y FB(,)16 b FA(e)1879 964 y Fr(0)1903 997 y Ft(i)28 b(!)f FA(e)2121 964 y Fr(0)r(0)p 1009 1037 1157 4 v 1048 1121 a Ft(h)q FW(if\()q FA(E)q FW(\))q FA(S)1414 1136 y Fz(1)1466 1121 y FW(else)15 b FA(S)1752 1135 y Fz(2)1789 1121 y FB(,)h FA(e)r Ft(i)28 b(!)g FA(e)2084 1094 y Fr(0)r(0)2266 1058 y F2(where)d FA(v)j Fx(=)g F0(T)s F2(.)523 1306 y(F)o(or)21 b(the)h(case)g(where)i FA(E)e F2(e)n(v)n(aluates)h(to)h F0(F)s F2(,)d(if)g(the)h(computation)i (sequence)g(e)o(xists,)f(it)e(must)382 1436 y(be)456 1657 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)808 1671 y Fu(m)869 1657 y Ft(i)28 b(\))1025 1619 y Fr(\003)1090 1657 y Ft(h)7 b FA(p)r(c)21 b Fx(+)e Ft(j)r(T)26 b Fx(\()s FA(E)r Fx(\))r Ft(j)q FB(,)16 b Ft(C)7 b Fx(\()s F0(F)f Fx(\))28 b FB(:)r(:)f FA(s)q FB(,)16 b FA(s)r(t)r(o)2092 1619 y Fr(0)2091 1679 y Fu(m)2151 1657 y Ft(i)289 b F2(e)o(x)o(ecution) 25 b(of)g Ft(T)g Fx(\()s FA(E)r Fx(\))932 1812 y Ft(\))j(h)r FD(l)r Fx(\()q F1(else)s Fx(\))q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1586 1774 y Fr(0)1585 1834 y Fu(m)1646 1812 y Ft(i)794 b F2(e)o(x)o(ecution)25 b(of)h F0(I)t(F)t(E)t(Q)h F1(else)932 1966 y Ft(\))h(h)r FD(l)r Fx(\()q F1(else)s Fx(\))21 b(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)1740 1929 y Fr(0)1739 1989 y Fu(m)1799 1966 y Ft(i)641 b F2(e)o(x)o(ecution) 25 b(of)f F1(else)7 b F2(:)932 2121 y Ft(\))1025 2084 y Fr(\003)1090 2121 y Ft(h)r FD(l)r Fx(\()q F1(else)s Fx(\))21 b(+)d FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()r FA(S)1853 2135 y Fz(2)1892 2121 y Fx(\))r Ft(j)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)2181 2084 y Fr(0)r(0)2180 2144 y Fu(m)2241 2121 y Ft(i)199 b F2(e)o(x)o(ecution)25 b(of)g Ft(T)g Fx(\()r FA(S)3111 2135 y Fz(2)3150 2121 y Fx(\))932 2276 y Ft(\))j(h)r FD(l)r Fx(\()q F1(else)s Fx(\))21 b(+)d FB(1)h Fx(+)h Ft(j)r(T)25 b Fx(\()r FA(S)1814 2290 y Fz(2)1853 2276 y Fx(\))r Ft(j)c Fx(+)d FB(1,)e FA(s)q FB(,)g FA(s)r(t)r(o)2296 2238 y Fr(0)r(0)2295 2298 y Fu(m)2355 2276 y Ft(i)85 b F2(e)o(x)o(ecution)25 b(of)f F1(done)7 b F2(:)382 2497 y(Through)26 b(the)g(same)f(reasoning)j(as)d (the)j F0(T)f F2(case,)f(transitions)i(for)f FA(E)f F2(and)h FA(S)2782 2511 y Fz(2)2843 2497 y F2(must)f(e)o(xist)f(and)382 2627 y(we)e(can)h(apply)g(the)g(rule)g([if-else-f)o(alse].)382 2890 y FX(The)e(case)i FU(if\()q FA(E)q FU(\))q FA(S)q FX(:)91 b F2(Again)23 b(similar)i(to)e(the)h(pre)n(vious)h(case.)382 3153 y FX(The)17 b(case)i FU([const])52 b FD(t)58 b FA(V)5 b FU(;)o FX(:)91 b F2(The)18 b(statement)i(is)d(translated)k(to)e Ft(T)25 b Fx(\()q FW([const])53 b FD(t)58 b FA(V)5 b FW(;)p Fx(\))28 b(=)384 3282 y F0(N)t(O)t(P)e F2(which)d(results)j(in)d (the)h(computation)i(sequence)1266 3504 y Ft(h)7 b FA(p)r(c)q FB(,)16 b FA(s)q FB(,)g FA(s)r(t)r(o)1618 3518 y Fu(m)1680 3504 y Ft(i)27 b(\))h(h)7 b FA(p)r(c)21 b Fx(+)e FB(1,)d FA(s)q FB(,)g FA(s)r(t)r(o)2368 3518 y Fu(m)2428 3504 y Ft(i)q FB(.)382 3725 y F2(Since)35 b(we)f(can)h(apply)h(the)g(rule)f ([v)n(ar)n(-stat])i(directly)g(\(because)g(it)e(is)f(an)h(axiom\))h (without)382 3855 y(changing)26 b(the)e(store,)g(this)g(pro)o(v)o(es)g (the)g(case.)382 4117 y FX(The)c(case)i FU([const])52 b FD(t)58 b FA(V)31 b Fx(=)d FA(E)q FU(;)p FX(:)91 b F2(Again,)20 b(since)j(the)e(v)n(ariable)i(en)l(vironment)h(is)d(mod-) 382 4247 y(eled)j(implicitly)h(with)g FD(n)q F2(,)e(this)h(case)g(is)g (analogous)i(to)d(the)h(case)g FA(V)31 b Fx(=)e FA(E)q FW(;)o F2(.)382 4514 y FP(4.3.3)99 b(Corr)n(ectness)382 4705 y F2(From)23 b(Lemma)f(1)h(and)h(2)f(the)h(correctness)j(of)c(the) h(translation)j(follo)n(ws)d(immediately:)382 4910 y FX(Theor)n(em)f(1)46 b FV(F)-10 b(or)28 b(all)g(e)n(xpr)m(essions)33 b FA(E)q FV(,)c FA(E)f FV(is)g(semantically)i(equivalent)h(to)e Ft(T)24 b Fx(\()s FA(E)r Fx(\))q FV(,)k(and)h(for)382 5039 y(all)24 b(statements)i FA(S)q FV(,)d FA(S)h FV(is)f(semantically) k(equivalent)f(to)f Ft(T)f Fx(\()r FA(S)r Fx(\))q FV(.)1831 5652 y F2(66)p eop end %%Page: 67 69 TeXDict begin 67 68 bop 382 1202 a FT(Chapter)44 b(5)382 1654 y F4(Implementation)382 2116 y F2(This)24 b(chapter)j(describes)g (the)e(implementation)i(of)e(a)f(processor)j(for)e(the)g(language)i (de\002ned)382 2246 y(in)c(the)h(preceding)i(chapters.)382 2558 y FS(5.1)119 b(Ar)n(chitectur)n(e)382 2782 y F2(As)21 b(e)o(xplained)j(in)e(Chapter)h(1,)f(a)f(source)j(program)f(consists)h (of)e(a)f(number)i(of)f(te)o(xt)g(\002les)g(con-)382 2912 y(taining)e(strings)h(from)e(our)g(language.)i(From)d(a)g(user')-5 b(s)21 b(point)e(of)g(vie)n(w)-6 b(,)19 b(running)h(a)f(simulation)382 3042 y(amounts)27 b(to)e(initiating)j(a)d(program)i(that)f(processes)i (these)f(\002les,)e(outputting)j(the)e(v)n(alues)h(of)382 3172 y(the)d(w)o(atched)g(identi\002ers)i(for)e(each)g(iteration.)523 3302 y(Internally)-6 b(,)35 b(ho)n(we)n(v)o(er)l(,)f(to)f(enhance)i (the)e(modularity)i(of)e(the)g(code)h(the)f(processing)j(is)382 3432 y(di)n(vided)25 b(into)f(a)f(number)h(of)f(steps)h(where)g(the)f (intermediate)j(representation)i(is)23 b(an)g(abstract)382 3561 y(syntax)e(tree.)f(A)e(parsing)k(and)e(a)f(conte)o(xtual)k (analysis)e(phase)g(is)f(de\002nitely)h(needed,)g(b)n(ut)f(after)382 3691 y(these)j(phases)g(there)g(are)f(tw)o(o)f(fundamentally)k(dif)n (ferent)f(possibilities:)i(either)d(interpret)h(the)382 3821 y(simulation)d(directly)g(from)e(the)h(abstract)h(syntax)g(tree,)e (or)g(translate)j(the)d(tree)h(into)g(a)f(program)382 3951 y(in)k(another)j(language)g(and)e(continue)h(processing)i(that)d (program.)523 4081 y(W)-7 b(e)30 b(ha)n(v)o(e)h(chosen)i(the)d (translation)k(approach,)f(translating)h(the)d(high-le)n(v)o(el)i (language)382 4211 y(into)24 b(JVM)f(assembler)l(,)j(which)e(mak)o(es)h (our)f(language)i(processor)h(a)c(compiler)-5 b(.)25 b(One)f(adv)n(an-)382 4341 y(tage)k(of)f(this)g(approach)j(is)d(that)h (the)f(simulations)j(will)d(bene\002t)g(from)g(the)h(speed)g(optimisa-) 382 4470 y(tions)c(which)g(ha)n(v)o(e)h(been)f(put)g(into)g(the)g(JVM)e (implementations.)523 4600 y(Thus)f(we)f(structure)j(the)e(compiler)i (into)e(four)h(internal)g(components)i(and)d(one)h(e)o(xternal,)382 4730 y(as)h(sho)n(wn)h(in)g(Figure)g(5.1.)518 4944 y Ft(\017)46 b F2(The)28 b(syntactic)i(analysis)g(phase)f(is)f(concerned) j(with)d(parsing)h(the)g(source)g(te)o(xt)f(\002les)609 5074 y(and)c(con)l(v)o(erting)j(them)c(to)h(the)g(internal)h(abstract)g (syntax)h(tree.)518 5273 y Ft(\017)46 b F2(The)27 b(conte)o(xtual)j (analysis)f(is)f(concerned)i(with)d(binding)i(identi\002ers)g(to)f(the) f(v)n(arious)609 5403 y(entities)k(in)d(the)h(program)h(and)f(checking) h(that)g(the)e(language)j(rules)f(that)f(cannot)h(be)1831 5652 y(67)p eop end %%Page: 68 70 TeXDict begin 68 69 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 830 2341 a @beginspecial 0 @llx 0 @lly 373 @urx 336 @ury 2510 @rwi @setspecial %%BeginDocument: implementation/images/flow-diagram.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: flow-diagram.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Wed May 14 12:53:03 2003 %%For: jasper@jkjnotebook (Jasper K. Juhl,,,) %%BoundingBox: 0 0 373 336 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 336 moveto 0 0 lineto 373 0 lineto 373 336 lineto closepath clip newpath 54.7 502.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw gs clippath 2145 8115 m 2205 8115 l 2205 7964 l 2175 8084 l 2145 7964 l cp eoclip n 2175 7650 m 2175 8100 l gs col0 s gr gr % arrowhead n 2145 7964 m 2175 8084 l 2205 7964 l 2145 7964 l cp gs 0.00 setgray ef gr col0 s % Polyline n 1380 7200 m 1275 7200 1275 7545 105 arcto 4 {pop} repeat 1275 7650 2970 7650 105 arcto 4 {pop} repeat 3075 7650 3075 7305 105 arcto 4 {pop} repeat 3075 7200 1380 7200 105 arcto 4 {pop} repeat cp gs col0 s gr /Helvetica-Narrow ff 210.00 scf sf 1875 7500 m gs 1 -1 sc (Jasmin) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2175 8325 m gs 1 -1 sc (JVM bytecode) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline gs clippath 2145 4365 m 2205 4365 l 2205 4214 l 2175 4334 l 2145 4214 l cp eoclip n 2175 3900 m 2175 4350 l gs col0 s gr gr % arrowhead n 2145 4214 m 2175 4334 l 2205 4214 l 2145 4214 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2145 5265 m 2205 5265 l 2205 5114 l 2175 5234 l 2145 5114 l cp eoclip n 2175 4800 m 2175 5250 l gs col0 s gr gr % arrowhead n 2145 5114 m 2175 5234 l 2205 5114 l 2145 5114 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2145 6165 m 2205 6165 l 2205 6014 l 2175 6134 l 2145 6014 l cp eoclip n 2175 5700 m 2175 6150 l gs col0 s gr gr % arrowhead n 2145 6014 m 2175 6134 l 2205 6014 l 2145 6014 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2145 7215 m 2205 7215 l 2205 7064 l 2175 7184 l 2145 7064 l cp eoclip n 2175 6600 m 2175 7200 l gs col0 s gr gr % arrowhead n 2145 7064 m 2175 7184 l 2205 7064 l 2145 7064 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 3765 5505 m 3765 5445 l 3614 5445 l 3734 5475 l 3614 5505 l cp eoclip n 3075 5475 m 3750 5475 l gs col0 s gr gr % arrowhead n 3614 5505 m 3734 5475 l 3614 5445 l 3614 5505 l cp gs 0.00 setgray ef gr col0 s % Polyline n 1380 4350 m 1275 4350 1275 4695 105 arcto 4 {pop} repeat 1275 4800 2970 4800 105 arcto 4 {pop} repeat 3075 4800 3075 4455 105 arcto 4 {pop} repeat 3075 4350 1380 4350 105 arcto 4 {pop} repeat cp gs col0 s gr % Polyline n 1380 6150 m 1275 6150 1275 6495 105 arcto 4 {pop} repeat 1275 6600 2970 6600 105 arcto 4 {pop} repeat 3075 6600 3075 6255 105 arcto 4 {pop} repeat 3075 6150 1380 6150 105 arcto 4 {pop} repeat cp gs col0 s gr % Polyline n 1380 5250 m 1275 5250 1275 5595 105 arcto 4 {pop} repeat 1275 5700 2970 5700 105 arcto 4 {pop} repeat 3075 5700 3075 5355 105 arcto 4 {pop} repeat 3075 5250 1380 5250 105 arcto 4 {pop} repeat cp gs col0 s gr % Polyline n 1380 3450 m 1275 3450 1275 3795 105 arcto 4 {pop} repeat 1275 3900 2970 3900 105 arcto 4 {pop} repeat 3075 3900 3075 3555 105 arcto 4 {pop} repeat 3075 3450 1380 3450 105 arcto 4 {pop} repeat cp gs col0 s gr % Polyline gs clippath 2145 3465 m 2205 3465 l 2205 3314 l 2175 3434 l 2145 3314 l cp eoclip n 2175 3000 m 2175 3450 l gs col0 s gr gr % arrowhead n 2145 3314 m 2175 3434 l 2205 3314 l 2145 3314 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 3765 3705 m 3765 3645 l 3614 3645 l 3734 3675 l 3614 3705 l cp eoclip n 3075 3675 m 3750 3675 l gs col0 s gr gr % arrowhead n 3614 3705 m 3734 3675 l 3614 3645 l 3614 3705 l cp gs 0.00 setgray ef gr col0 s % Polyline 15.000 slw n 975 3225 m 4650 3225 l gs col0 s gr % Polyline 7.500 slw gs clippath 4740 3435 m 4560 3435 l 4560 3599 l 4650 3464 l 4740 3599 l cp eoclip n 4650 4725 m 4650 3450 l gs col0 s gr gr % arrowhead 15.000 slw n 4740 3599 m 4650 3464 l 4560 3599 l col0 s % Polyline n 900 6975 m 4650 6975 l gs col0 s gr % Polyline 7.500 slw gs clippath 4560 6765 m 4740 6765 l 4740 6601 l 4650 6736 l 4560 6601 l cp eoclip n 4650 5475 m 4650 6750 l gs col0 s gr gr % arrowhead 15.000 slw n 4560 6601 m 4650 6736 l 4740 6601 l col0 s % Polyline 7.500 slw n -900 5475 m 1275 5475 l gs col7 s gr /Helvetica-Narrow ff 210.00 scf sf 1425 4650 m gs 1 -1 sc (Contextual analysis) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 3375 5400 m gs 1 -1 sc (Errors) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 3375 3600 m gs 1 -1 sc (Errors) col0 sh gr /Helvetica-Narrow ff 210.00 scf sf 1500 3750 m gs 1 -1 sc (Syntactic analysis) col0 sh gr /Helvetica-Narrow ff 210.00 scf sf 1575 5550 m gs 1 -1 sc (Error reporting) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 3375 5700 m gs 1 -1 sc (Warnings) col0 sh gr /Helvetica-Narrow ff 210.00 scf sf 2175 6450 m gs 1 -1 sc (Code generation) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2175 2925 m gs 1 -1 sc (Source program) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2100 4200 m gs 1 -1 sc (AST) dup sw pop neg 0 rm col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2100 5100 m gs 1 -1 sc (Decorated AST) dup sw pop neg 0 rm col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2100 6000 m gs 1 -1 sc (Decorated AST) dup sw pop neg 0 rm col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2100 6825 m gs 1 -1 sc (JVM assembler) dup sw pop neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 4125 5175 m gs 1 -1 sc (Our compiler) col0 sh gr $F2psEnd rs %%EndDocument @endspecial 1088 2539 a FQ(F)l(igur)m(e)19 b(5.1:)29 b(The)20 b(various)g(phases)g(in)g(the)g(compiler)-9 b(.)609 2813 y F2(speci\002ed)25 b(with)e(the)h(EBNF)d(grammar)j(are)g (adhered)h(to.)518 3018 y Ft(\017)46 b F2(The)18 b(reporting)i(of)f (errors)g(detected)h(in)e(the)h(conte)o(xtual)h(phase)g(is)e(decoupled) j(from)d(the)609 3148 y(actual)25 b(analysis)g(by)e(inserting)j(an)d(e) o(xtra)h(phase)g(that)g(checks)h(the)e(decorations)j(of)e(the)609 3277 y(abstract)h(syntax)g(tree)f(and)f(reports)i(an)o(y)e(error)h (mark)o(ed)g(by)g(the)f(conte)o(xtual)j(phase.)e(A)609 3407 y(bene\002t)j(of)f(this)h(is)f(that)h(all)f(errors,)h(including)i (errors)e(which)g(can)g(only)g(be)f(detected)609 3537 y(at)32 b(the)g(end)g(of)g(the)g(analysis)i(\(e.g.)e(when)g (de\002nitions)i(of)e(declared)i(identi\002ers)g(are)609 3667 y(missing\),)25 b(are)f(reported)h(in)f(the)f(order)i(of)e(their)i (appearance)h(in)e(the)g(source.)518 3872 y Ft(\017)46 b F2(When)34 b(the)g(source)g(code)h(is)e(kno)n(wn)h(to)f(be)g (completely)j(free)e(of)f(errors,)h(the)g(code)609 4001 y(generation)f(phase)f(operates)g(on)e(the)h(decorated)i(abstract)f (syntax)g(tree,)e(producing)609 4131 y(Ja)n(v)n(a)24 b(assembler)i(output.)518 4336 y Ft(\017)46 b F2(Finally)-6 b(,)31 b(the)g Ff(jasmin)d F2(program)j(translates)i(the)e(assembler)h (code)f(to)f(binary)i(JVM)609 4466 y(code)25 b(which)e(is)h(ready)g(to) g(be)f(e)o(x)o(ecuted)j(by)d(a)g(JVM.)382 4695 y(W)-7 b(e)23 b(proceed)i(by)f(describing)i(each)e(of)g(the)g(internal)h (phases)g(in)f(turn.)1831 5652 y(68)p eop end %%Page: 69 71 TeXDict begin 69 70 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a FS(5.2)119 b(Syntactic)30 b(analysis)382 776 y FP(5.2.1)99 b Fe(rdp)382 967 y F2(T)-7 b(o)23 b(a)n(v)n(oid)j(ha)n(ving)f(to)f(construct)j(a)d (scanner)h(and)g(a)f(parser)h(from)f(scratch)i(we)d(ha)n(v)o(e)i(used)g (the)382 1097 y(compiler)32 b(compiler)g FW(rdp)c F2([3)q(])i(which)h (tak)o(es)h(as)e(input)i(a)e(grammar)h(written)g(in)g(an)f(EBNF)382 1227 y(v)n(ariant)g(decorated)h(with)d(C)g(or)g(C++)g(statements)j(and) e(outputs)i(a)d(combined)i(scanner)g(and)382 1356 y(parser)22 b(in)e(C)g(with)g(the)h(C)e(and)i(C++)f(statements)j(embedded.)f(The)e (C++)g(support)i(is)f(essential)382 1486 y(since)j(the)g(rest)g(of)g (our)g(compiler)h(is)e(written)h(in)g(C++.)523 1616 y(W)l(ith)i FW(rdp)p F2(,)c(scanning)28 b(and)e(parsing)h(is)e(interlea)n(v)o(ed.)i (The)e(scanner)i(is)e(called)i(from)e(the)382 1746 y(parser)h(whene)n (v)o(er)f(it)g(needs)h(a)e(ne)n(w)g(tok)o(en.)i(If)e(a)g(syntactic)j (error)f(in)e(the)h(source)h(program)g(is)382 1876 y(detected,)i(the)f FW(rdp)p F2(-generated)h(parser)g(formulates)h(and)e(prints)h(an)e (error)i(message.)f(Thus,)382 2006 y(when)22 b(the)g(syntactical)i (analysis)g(phase)f(is)e(o)o(v)o(er)l(,)h(we)f(can)h(be)f(sure)i(that)f (the)g(source)h(program)382 2136 y(is)g(written)i(in)e(the)h(language)i (de\002ned)e(by)g(the)g(EBNF)d(grammar)-5 b(.)523 2265 y(The)19 b(parser)i(generated)i(by)d FW(rdp)d F2(uses)k(a)e(recursi)n (v)o(e-descent)25 b(technique)d(for)e(parsing)i(the)382 2395 y(source)28 b(program)h(which)e(means)h(that)f(the)h(input)g (grammar)f(must)g(be)g(an)g(LL\(1\))g(grammar)-5 b(.)382 2525 y(This)23 b(in)h(turn)g(means)g(that)g(it)f(must)h(ha)n(v)o(e)g (the)g(properties)i([3)q(]:)496 2719 y(1.)45 b(If)30 b FA(X)37 b FB(:)r(:)r Fx(=)d FA(Y)1011 2734 y Fz(1)1076 2719 y Ft(j)p FA(Y)1155 2733 y Fz(2)1221 2719 y Ft(j)17 b FB(.)g(.)g(.)h Ft(j)p FA(Y)1464 2733 y Fu(n)1533 2719 y F2(then)32 b FA(F)8 b(I)g(R)r(S)s(T)t Fx(\()p FA(Y)2084 2735 y Fu(i)2108 2719 y Fx(\))22 b Ft(\\)h FA(F)8 b(I)g(R)r(S)s(T)t Fx(\()p FA(Y)2615 2735 y Fu(j)2640 2719 y Fx(\))36 b(=)f Fy(\306)28 b F2(for)g(all)f FA(Y)3218 2735 y Fu(i)3241 2719 y F2(,)f FA(Y)3347 2735 y Fu(j)609 2849 y F2(where)f FB(1)j Ft(\024)f FA(i)j Ft(\024)f FA(n)q F2(,)23 b FB(1)28 b Ft(\024)j FA(j)e Ft(\024)g FA(n)q F2(,)23 b FA(i)30 b Ft(6)r Fx(=)i FA(j)q F2(;)24 b(that)h(is)f(if)g(the)g(rule)h(for)g(a) e(non-terminal)28 b(has)609 2979 y(alternati)n(v)o(es)e(then)f(the)e (\002rst)h(sets)g(of)f(these)i(must)e(be)h(disjoint.)496 3179 y(2.)45 b(If)29 b FA(X)37 b FB(:)r(:)r Fx(=)d FB(.)17 b(.)g(.)g Ft(j)p FA(Y)t Ft(j)g FB(.)g(.)g(.)29 b F2(and)g FA(X)37 b Ft(\))1695 3146 y Fv(?)1766 3179 y FD(e)28 b F2(then)j FA(F)8 b(I)g(R)r(S)s(T)t Fx(\()p FA(Y)t Fx(\))22 b Ft(\\)h FA(F)q(O)5 b(L)g(LOW)h Fx(\()s FA(X)t Fx(\))34 b(=)g FD(e)q FB(.)27 b F2(If)609 3309 y(a)i(non-terminal)34 b FA(X)e F2(generates)f(the)f(empty)g(string)g(then)g(the)f(\002rst)g (sets)h(of)f(the)h(alter)n(-)609 3439 y(nati)n(v)o(es)h(in)e(its)g (rule)h(must)f(be)h(disjoint)h(from)e(the)h(follo)n(w)f(set)h(of)h FA(X)s F2(,)e(e)o(xcept)h(for)g(the)609 3569 y(empty)24 b(string)i FD(e)q F2(.)382 3763 y(The)k(\002rst)h(set)g(of)i FA(X)s F2(,)d(written)35 b FA(F)8 b(I)g(R)r(S)s(T)t Fx(\()s FA(X)t Fx(\))q F2(,)30 b(is)h(the)g(set)g(of)g(tok)o(ens)i(that)e(can)g (start)h(a)f(string)382 3893 y(generated)j(by)g FA(X)s F2(.)d(The)h(follo)n(w)g(set,)g(written)j FA(F)q(O)5 b(L)g(LOW)h Fx(\()s FA(X)t Fx(\))q F2(,)31 b(is)h(the)g(set)g(of)g(tok) o(ens)h(that)382 4022 y(can)24 b(follo)n(w)i FA(X)g F2(in)d(its)h (conte)o(xt)h(\([3)q(])e(has)h(a)f(formal)h(de\002nition\).)382 4287 y FP(5.2.2)99 b(T)-7 b(ransf)n(orming)25 b(the)g(grammar)382 4478 y F2(Unfortunately)-6 b(,)23 b(the)e(grammar)f(from)g(Chapter)h(2) f(is)g(not)h(an)f(LL\(1\))g(grammar)-5 b(.)20 b(One)g(problem)382 4608 y(is)j(the)h F1(statement)34 b F2(rule)24 b(from)g(Section)g (2.2.1.)f(The)g(\002rst)h(sets)g(are:)518 4802 y Ft(\017)47 b FA(S)661 4817 y Fz(1)721 4802 y F2(=)23 b(FIRST\()p FW({)e F2(\()p F1(statement)9 b F2(\))1566 4769 y Fv(?)1607 4802 y FW(})p F2(\))24 b Fx(=)j Ft(f)q FW({)q Ft(g)q F2(.)518 5002 y Ft(\017)47 b FA(S)661 5016 y Fz(2)716 5002 y F2(=)17 b(FIRST\()p F1(v)n(ariable-de\002nition)7 b F2(\))23 b Fx(=)k Ft(f)q FW(const)n FB(,)15 b FW(int)o FB(,)g FW(float)n FB(,)g FW(bool)n FB(,)g F1(identi\002er)s Ft(g)q F2(.)518 5203 y Ft(\017)47 b FA(S)661 5217 y Fz(3)721 5203 y F2(=)23 b(FIRST\()p FW(while)c(\()k F1(e)o(xpression)33 b FW(\))22 b F1(statement)34 b F2(\))24 b Fx(=)j Ft(f)q FW(while)p Ft(g)q F2(.)518 5403 y Ft(\017)47 b FA(S)661 5418 y Fz(4)721 5403 y F2(=)23 b(FIRST\()p FW(if)e(\()h F1(e)o(xpression)33 b FW(\))22 b F1(statement)34 b F2([)23 b FW(else)e F1(statement)34 b F2(]\))24 b Fx(=)k Ft(f)q FW(if)p Ft(g)q F2(.)1831 5652 y(69)p eop end %%Page: 70 72 TeXDict begin 70 71 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 518 548 a Ft(\017)c FA(S)661 562 y Fz(5)721 548 y F2(=)23 b(FIRST\()p F1(identi\002er)31 b FW(=)22 b F1(e)o(xpression)33 b FX(;)p F2(\))25 b Fx(=)i Ft(f)q F1(identi\002er)t Ft(g)q F2(.)518 741 y Ft(\017)47 b FA(S)661 755 y Fz(6)721 741 y F2(=)23 b(FIRST\()p F1(function-call)37 b FX(;)p F2(\))24 b Fx(=)j Ft(f)q F1(identi\002er)t Ft(g)q F2(.)518 934 y Ft(\017)47 b FA(S)661 948 y Fz(7)721 934 y F2(=)23 b(FIRST\()p FW(++)e F1(identi\002er)32 b FX(;)p F2(\))24 b Fx(=)j Ft(f)q FW(+)8 b(+)q Ft(g)q F2(.)518 1127 y Ft(\017)47 b FA(S)661 1141 y Fz(8)721 1127 y F2(=)23 b(FIRST\()p FW(--)e F1(identi\002er)32 b FX(;)p F2(\))24 b Fx(=)j Ft(f)q FW(-)8 b(-)q Ft(g)q F2(.)518 1320 y Ft(\017)47 b FA(S)661 1334 y Fz(9)721 1320 y F2(=)23 b(FIRST\()p FW(return)c F1(e)o(xpression)33 b FX(;)p F2(\))24 b Fx(=)k Ft(f)q FW(return)o Ft(g)q F2(.)382 1496 y(Property)e(1)e(is)h(not)g (ful\002lled)h(because)i FA(S)1689 1510 y Fz(2)1745 1496 y Ft(\\)20 b FA(S)1877 1510 y Fz(5)1933 1496 y Ft(\\)g FA(S)2065 1510 y Fz(6)2131 1496 y Fx(=)30 b Ft(f)q F1(identi\002er)t Ft(g)q F2(.)24 b(The)g(af)n(fected)j(alter)n(-)382 1626 y(nati)n(v)o(es)32 b(in)e(the)h F1(statement)41 b F2(rule)31 b(must)g(be)g(left)g(f)o(actorized)i(to)e(get)g(rid)g(of)f(the)h(joint) h(tok)o(en,)382 1755 y(which)24 b(also)g(in)l(v)n(olv)o(es)i(changing)g (other)f(rules:)659 1920 y(typename)441 b(::=)100 b FW(int)44 b F2(|)i FW(float)d F2(|)j FW(bool)659 2050 y F2(v)n (ariable-de\002nition)128 b(::=)100 b([)p FW(=)23 b F2(e)o(xpression])j (\()p FX(,)d F2(identi\002er)i([)p FW(=)d F2(e)o(xpression]\))3179 2017 y Fv(?)3221 2050 y FX(;)659 2180 y F2(function-call)332 b(::=)100 b FW(\()22 b F2([)h(e)o(xpression)k(\()p FX(,)22 b F2(e)o(xpression\))2683 2147 y Fv(?)2725 2180 y F2(])h FW(\))659 2310 y F2(statement)446 b(::=)100 b FW({)22 b F2(\(statement\))2136 2277 y Fv(?)2177 2310 y FW(})1675 2439 y F2(|)46 b([)p FW(const)p F2(])20 b(typename)26 b(identi\002er)f(v)n(ariable-de\002nition)1675 2569 y(|)46 b FW(while)20 b(\()i F2(e)o(xpression)k FW(\))d F2(statement)1675 2699 y(|)46 b FW(if)21 b(\()i F2(e)o(xpression)j FW(\))c F2(statement)j([)e FW(else)e F2(statement)k(])1675 2829 y(|)46 b(identi\002er)24 b(\()p FW(=)f F2(e)o(xpression)j(|)d (function-call\))28 b FX(;)1675 2959 y F2(|)46 b FW(+)8 b(+)22 b F2(identi\002er)j FX(;)45 b F2(|)h FW(-)8 b(-)22 b F2(identi\002er)j FX(;)1675 3089 y F2(|)46 b FW(return)20 b F2(e)o(xpression)26 b FX(;)523 3243 y F2(Of)h(course)i(these)g (changes)h(must)d(in)h(turn)g(be)g(propagated)j(to)c(the)h(rest)h(of)e (the)h(rules)h(to)382 3373 y(ensure)h(that)g(the)f(grammar)g(generates) j(the)d(same)g(language,)i(and)e(then)h(all)f(rules)h(must)f(be)382 3503 y(check)o(ed)f(for)e(joint)h(\002rst)f(sets)g(again.)g(The)g (\002nal)g(result)h(of)f(a)f(number)i(of)f(these)h(iterations)h(\226) 382 3633 y(the)c(input)g(grammar)g(to)g FW(rdp)d F2(\226)i(is)h(sho)n (wn)f(in)h(Appendix)h(A.)523 3763 y(One)h(problem)h(remains,)g(though.) h(The)d FW(if)p F2(-)p FW(else)e F2(statement)28 b(in)e(our)g(input)i (grammar)382 3893 y(does)c(not)g(ha)n(v)o(e)g(the)g(second)h(property)h (of)e(a)f(LL\(1\))f(grammar)l(,)i(because)571 4079 y FA(F)8 b(I)g(R)r(S)s(T)t Fx(\()r([)q FW(else)22 b FA(s)r(t)s(a)r(t)r(e) r(m)r(e)r(n)r(t)r Fx(])r(\))j Ft(\\)d FA(F)q(O)5 b(L)g(LOW)h Fx(\()r([)q FW(else)22 b FA(s)r(t)s(a)r(t)r(e)r(m)r(e)r(n)r(t)r Fx(])r(\))32 b(=)27 b FW(else)382 4266 y F2(This)22 b(is)g(a)g(classic) i(problem)f(called)h(a)d FV(dangling)k(else)e F2(which)f FW(rdp)f F2(can)h(compensate)j(for)-5 b(.)22 b(T)-7 b(o)382 4396 y(appreciate)23 b(why)c(this)i(is)f(a)g(problem,)h(consider)i(the) d(deri)n(v)n(ation)j(of)d(the)g(string)i FW(if)53 b(\(true\))382 4525 y(if)h(\(false\))d(x=0;)i(else)f(x=1;)p F2(:)465 4737 y FW(if)14 b(\()p F1(e)o(xpression)s FW(\))h F1(statement)j Fx([)q FW(else)c F1(statement)t Fx(])1067 4900 y Ft(\))27 b FW(if)14 b(\(true\))e(if)j(\()o F1(e)o(xpression)t FW(\))f F1(statement)19 b Fx([)q FW(else)14 b F1(statement)s Fx(])1224 5055 y([)q FW(else)g F1(statement)s Fx(])1067 5209 y Ft(\))27 b FW(if)14 b(\(true\))e(if)j(\(false\))d(x=0;)i Fx([)q FW(else)g F1(statement)s Fx(])1224 5364 y([)q FW(else)g F1(statement)s Fx(])1831 5652 y F2(70)p eop end %%Page: 71 73 TeXDict begin 71 72 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a F2(F)o(or)27 b(the)h(\002nal)g(step,)g(either)h(of)f FW(else)d F2(clauses)30 b(can)e(be)g(matched)h(with)f(the)g FW(else)53 b(x=1;)p F2(,)382 678 y(and)23 b(the)f(decision)j(af)n(fects)f(the)e(semantics)j (of)d(the)h(string)g(\(either)h FW(x)d F2(is)h(assigned)j(to)e(1)f(or)g FW(x)f F2(is)382 808 y(unchanged\).)29 b(W)l(ith)d FW(rdp)p F2(,)d(the)k(innermost)g FW(else)c F2(is)j(matched,)h(which)f(also)h (is)e(the)h(case)h(in)382 937 y(other)d(languages)j(such)d(as)g(C,)e (C++,)g(P)o(ascal)i(and)g(Ja)n(v)n(a.)382 1204 y FP(5.2.3)99 b(Repr)n(esentation)26 b(of)f(the)h(abstract)f(syntax)382 1395 y F2(The)19 b(abstract)j(syntax)g(tree)e(is)g(modeled)h(as)f (classes)i(deri)n(v)o(ed)f(from)f(the)g(syntax)i(in)e(Chapter)h(2,)382 1525 y(cf.)i(Figures)i(5.2\2265.5.)g(Only)f(those)h(aggre)o(gations)h (that)f(are)f(not)g(one-to-one)j(are)d(connected)382 1655 y(with)32 b(edges,)g(for)g(the)g(others)h(the)g(aggre)o(gated)h (object)f(\(starting)h(with)d(a)h(capital)h(letter\))g(is)382 1785 y(written)24 b(as)g(a)f(member)g(\002eld.)382 2762 y @beginspecial 0 @llx 0 @lly 798 @urx 234 @ury 3586 @rwi @setspecial %%BeginDocument: implementation/images/class-diagram-toplevel.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: class-diagram-toplevel.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Thu May 15 16:17:14 2003 %%For: olau@fire2.cs.auc.dk (Ole Laursen) %%BoundingBox: 0 0 798 234 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 234 moveto 0 0 lineto 798 0 lineto 798 234 lineto closepath clip newpath 5.2 342.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % /Helvetica-Narrow-BoldOblique ff 180.00 scf sf 5700 2175 m gs 1 -1 sc (TopLevel) col0 sh gr % Polyline 7.500 slw n 10125 3075 m 12150 3075 l 12150 3975 l 10125 3975 l cp gs col0 s gr % Polyline n 6900 4200 m 8850 4200 l 8850 5025 l 6900 5025 l cp gs col0 s gr % Polyline n 4575 4200 m 6525 4200 l 6525 5700 l 4575 5700 l cp gs col0 s gr % Polyline n 4575 4500 m 6525 4500 l gs col0 s gr % Polyline n 6150 2850 m 6150 2775 l gs col0 s gr % Polyline n 6750 2850 m 825 2850 l gs col0 s gr % Polyline n 6750 2850 m 8925 2850 l gs col0 s gr % Polyline n 8925 2850 m 11100 2850 l 11100 3075 l gs col0 s gr % Polyline n 10125 3375 m 12150 3375 l gs col0 s gr % Polyline n 2250 3375 m 4200 3375 l gs col0 s gr % Polyline n 2250 3075 m 4200 3075 l 4200 3750 l 2250 3750 l cp gs col0 s gr % Polyline n 3225 2850 m 3225 3075 l gs col0 s gr % Polyline n 12300 4200 m 12300 4125 l 10050 4125 l gs col0 s gr % Polyline n 11250 4200 m 13200 4200 l 13200 5025 l 11250 5025 l cp gs col0 s gr % Polyline n 11250 4500 m 13200 4500 l gs col0 s gr % Polyline n 5550 4125 m 5550 4200 l gs col0 s gr % Polyline n 8925 2850 m 8925 3075 l gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 2400 2175 m gs 1 -1 sc (Simulation) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7050 4950 m gs 1 -1 sc (FunctionHeader) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7050 4725 m gs 1 -1 sc (BlockStatement) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4725 5175 m gs 1 -1 sc (watched) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4725 4950 m gs 1 -1 sc (constant) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4725 4725 m gs 1 -1 sc (identifier) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 4950 4425 m gs 1 -1 sc (VariableDefinition) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4725 5625 m gs 1 -1 sc (Typename) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4725 5400 m gs 1 -1 sc (Expression) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 10275 3825 m gs 1 -1 sc (constructor \(FunctionCall\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 10275 3600 m gs 1 -1 sc (number of objects) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 10575 3300 m gs 1 -1 sc (CreateStatement) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 2775 3300 m gs 1 -1 sc (Declaration) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 11700 4425 m gs 1 -1 sc (TypeDefinition) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 11400 4950 m gs 1 -1 sc (definitions) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 11400 4725 m gs 1 -1 sc (name) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 7275 4425 m gs 1 -1 sc (FunctionDefinition) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4800 1950 m gs 1 -1 sc (0..*) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 3900 1950 m gs 1 -1 sc (1) col0 sh gr % Polyline n 7950 4125 m 7950 4200 l gs col0 s gr % Polyline n 3225 3975 m 3225 4200 l gs col0 s gr % Polyline n 2250 4125 m 900 4125 l 900 4275 l gs col0 s gr % Polyline n 3225 3750 m 3075 3975 l 3375 3975 l 3300 3975 l 3225 3975 l 3300 3975 l 3375 3975 l 3225 3750 l 3075 3975 l 3150 3975 l 3075 3975 l 3225 3975 l gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 225 3300 m gs 1 -1 sc (ImportDirective) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 75 3600 m gs 1 -1 sc (filename) col0 sh gr % Polyline n -75 3375 m 1875 3375 l gs col0 s gr % Polyline n -75 3075 m 1875 3075 l 1875 3750 l -75 3750 l cp gs col0 s gr % Polyline n 8925 3975 m 8925 4125 l gs col0 s gr % Polyline n 8925 3750 m 8775 3975 l 9075 3975 l 9000 3975 l 8925 3975 l 9000 3975 l 9075 3975 l 8925 3750 l 8775 3975 l 8850 3975 l 8775 3975 l 8925 3975 l gs col0 s gr % Polyline n 7950 3375 m 9900 3375 l gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 8475 3300 m gs 1 -1 sc (Definition) col0 sh gr % Polyline n 7950 3075 m 9900 3075 l 9900 3750 l 7950 3750 l cp gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 9525 4425 m gs 1 -1 sc (EnumDefinition) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 9225 4950 m gs 1 -1 sc (enumerands) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 9225 4725 m gs 1 -1 sc (name) col0 sh gr % Polyline n 9075 4200 m 11025 4200 l 11025 5025 l 9075 5025 l cp gs col0 s gr % Polyline n 9075 4500 m 11025 4500 l gs col0 s gr % Polyline n 6150 2550 m 6000 2775 l 6300 2775 l 6225 2775 l 6150 2775 l 6225 2775 l 6300 2775 l 6150 2550 l 6000 2775 l 6075 2775 l 6000 2775 l 6150 2775 l gs col0 s gr % Polyline n 2250 4125 m 3225 4125 l 3225 4275 l gs col0 s gr % Polyline n 5550 4125 m 10125 4125 l 10125 4200 l gs col0 s gr % Polyline n 6900 4500 m 8850 4500 l gs col0 s gr % Polyline n 6746 2850 m 6754 2850 l gs col0 s gr % Polyline n 825 2850 m 825 3075 l gs col0 s gr % Polyline n 4125 2100 m 5100 2100 l gs col0 s gr % Polyline n 4125 2100 m 3975 2175 l 3750 2100 l 3975 2025 l 4125 2100 l cp gs col0 s gr % Polyline n 5100 2250 m 7050 2250 l gs col0 s gr % Polyline n 1800 2250 m 3750 2250 l gs col0 s gr % Polyline n 5100 1950 m 7050 1950 l 7050 2550 l 5100 2550 l cp gs col0 s gr % Polyline n 1800 1950 m 3750 1950 l 3750 2550 l 1800 2550 l cp gs col0 s gr /Helvetica-Narrow ff 180.00 scf sf 2325 4800 m gs 1 -1 sc (FunctionHeader) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 2550 4500 m gs 1 -1 sc (FunctionDeclaration) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 75 4800 m gs 1 -1 sc (identifier) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 225 4500 m gs 1 -1 sc (VariableDeclaration) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 75 5025 m gs 1 -1 sc (Typename) col0 sh gr % Polyline n -75 4275 m 1875 4275 l 1875 5100 l -75 5100 l cp gs col0 s gr % Polyline n 2250 4275 m 4200 4275 l 4200 4950 l 2250 4950 l cp gs col0 s gr % Polyline n 2250 4575 m 4200 4575 l gs col0 s gr % Polyline n -75 4575 m 1875 4575 l gs col0 s gr $F2psEnd rs %%EndDocument @endspecial 1243 2959 a FQ(F)l(igur)m(e)d(5.2:)28 b(The)20 b(tople)o(vel)g(node)f(classes.)523 3205 y F2(The)j(S)t F0(I)t(M)t(U)t(L)t(A)l(T)t(I)t(O)t(N)i F2(class)e(represents)g(the)f (whole)f(source)i(program)f(and)g(has)f(a)g(number)382 3335 y(of)30 b(T)s F0(O)t(P)t F2(L)t F0(E)t(V)t(E)t(L)i F2(objects)e(as)d(sho)n(wn)i(in)e(Figure)i(5.2.)e(The)j(T)s F0(O)t(P)t F2(L)t F0(E)t(V)t(E)t(L)i F2(class)d(represents)h(a)382 3465 y(common)22 b(class)h(for)f(the)g(alternati)n(v)o(es)j(in)c(the)h F1(simulation)31 b F2(rule,)22 b(and)h(is)e(further)j(di)n(vided)f (into)382 3594 y(classes)36 b(for)f(import)h(directi)n(v)o(es,)g (create)g(statements)h(and)f(declarations)i(and)d(de\002nitions,)382 3724 y(which)24 b(in)f(turn)h(are)g(subdi)n(vided)j(and)d(so)f(forth.) 606 5088 y @beginspecial 0 @llx 0 @lly 555 @urx 276 @ury 3048 @rwi @setspecial %%BeginDocument: implementation/images/class-diagram-expression.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: class-diagram-expression.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Thu May 15 16:21:44 2003 %%For: olau@fire2.cs.auc.dk (Ole Laursen) %%BoundingBox: 0 0 555 276 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 276 moveto 0 0 lineto 555 0 lineto 555 276 lineto closepath clip newpath -206.3 383.2 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw n 12525 5250 m 12375 5325 l 12150 5250 l 12375 5175 l 12525 5250 l cp gs col0 s gr % Polyline n 10200 5100 m 12150 5100 l 12150 5700 l 10200 5700 l cp gs col0 s gr % Polyline n 7575 3075 m 9000 3075 l 9000 4425 l gs col0 s gr % Polyline n 6825 3300 m 8775 3300 l 8775 4275 l 6825 4275 l cp gs col0 s gr % Polyline n 10200 5400 m 12150 5400 l gs col0 s gr % Polyline n 7800 3075 m 7800 3300 l gs col0 s gr % Polyline n 10200 4050 m 12150 4050 l 12150 4650 l 10200 4650 l cp gs col0 s gr % Polyline n 10200 4350 m 12150 4350 l gs col0 s gr % Polyline n 6825 3600 m 8775 3600 l gs col0 s gr % Polyline n 8925 3075 m 11475 3075 l 11475 4050 l gs col0 s gr % Polyline n 6675 3075 m 6675 4425 l gs col0 s gr % Polyline n 5550 3300 m 5550 3075 l 7800 3075 l gs col0 s gr % Polyline n 8325 2400 m 8175 2625 l 8475 2625 l 8400 2625 l 8325 2625 l 8400 2625 l 8475 2625 l 8325 2400 l 8175 2625 l 8250 2625 l 8175 2625 l 8325 2625 l gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 9225 3525 m gs 1 -1 sc (MultipleChoiceExpression) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 9300 3825 m gs 1 -1 sc (choices \(pairs of Expression\)) col0 sh gr % Polyline n 6675 5250 m 6675 5625 l gs col0 s gr /Helvetica-Narrow ff 180.00 scf sf 9375 2175 m gs 1 -1 sc (0..*) col0 sh gr /Helvetica-Narrow-BoldOblique ff 180.00 scf sf 7950 2025 m gs 1 -1 sc (Expression) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 10350 4575 m gs 1 -1 sc (FunctionCall) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 12202 5130 m gs 1 -1 sc (1) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7050 4050 m gs 1 -1 sc (expression) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 10350 5625 m gs 1 -1 sc (function name) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 10725 5325 m gs 1 -1 sc (FunctionCall) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7050 3825 m gs 1 -1 sc (unary operator) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 7200 3525 m gs 1 -1 sc (UnaryExpression) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 10275 4275 m gs 1 -1 sc (FunctionCallExpression) col0 sh gr % Polyline n 8325 2625 m 8325 3075 l gs col0 s gr % Polyline n 7350 1800 m 9300 1800 l 9300 2400 l 7350 2400 l cp gs col0 s gr % Polyline n 7350 2100 m 9300 2100 l gs col0 s gr % Polyline n 12525 5250 m 12675 5250 l 12675 2250 l 9300 2250 l gs col0 s gr % Polyline n 10275 3075 m 10275 3300 l gs col0 s gr % Polyline n 9150 3300 m 11325 3300 l 11325 3900 l 9150 3900 l cp gs col0 s gr % Polyline n 6675 5775 m 6675 5625 l gs col0 s gr % Polyline n 6675 5025 m 6525 5250 l 6825 5250 l 6750 5250 l 6675 5250 l 6750 5250 l 6825 5250 l 6675 5025 l 6525 5250 l 6600 5250 l 6525 5250 l 6675 5250 l gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 4875 3525 m gs 1 -1 sc (VariableExpression) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4800 3825 m gs 1 -1 sc (identifier) col0 sh gr % Polyline n 4575 3300 m 6525 3300 l 6525 3900 l 4575 3900 l cp gs col0 s gr % Polyline n 4575 3600 m 6525 3600 l gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 6075 4650 m gs 1 -1 sc (ValueExpression) col0 sh gr % Polyline n 5700 4425 m 7650 4425 l 7650 5025 l 5700 5025 l cp gs col0 s gr % Polyline n 5700 4725 m 7650 4725 l gs col0 s gr /Helvetica-Narrow ff 180.00 scf sf 8250 5400 m gs 1 -1 sc (right expression) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 8250 5175 m gs 1 -1 sc (left expression) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 8250 4950 m gs 1 -1 sc (binary operator) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 8325 4650 m gs 1 -1 sc (BinaryExpression) col0 sh gr % Polyline n 8025 4425 m 9975 4425 l 9975 5475 l 8025 5475 l cp gs col0 s gr % Polyline n 8025 4725 m 9975 4725 l gs col0 s gr % Polyline n 3450 6075 m 5400 6075 l gs col0 s gr % Polyline n 9150 3600 m 11325 3600 l gs col0 s gr /Helvetica-Narrow ff 180.00 scf sf 7875 6300 m gs 1 -1 sc (value) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 7800 6000 m gs 1 -1 sc (BooleanValueExpression) col0 sh gr % Polyline n 4275 5625 m 8775 5625 l gs col0 s gr % Polyline n 4275 5625 m 4275 5775 l gs col0 s gr % Polyline n 7725 5775 m 9675 5775 l 9675 6375 l 7725 6375 l cp gs col0 s gr % Polyline n 7725 6075 m 9675 6075 l gs col0 s gr % Polyline n 8775 5775 m 8775 5625 l gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 3525 6000 m gs 1 -1 sc (IntegerValueExpression) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 5850 6000 m gs 1 -1 sc (FloatValueExpression) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 5775 6300 m gs 1 -1 sc (value) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 3600 6300 m gs 1 -1 sc (value) col0 sh gr % Polyline n 5625 5775 m 7575 5775 l 7575 6375 l 5625 6375 l cp gs col0 s gr % Polyline n 5625 6075 m 7575 6075 l gs col0 s gr % Polyline n 3450 5775 m 5400 5775 l 5400 6375 l 3450 6375 l cp gs col0 s gr $F2psEnd rs %%EndDocument @endspecial 1354 5286 a FQ(F)l(igur)m(e)d(5.3:)29 b(Expr)m(ession)19 b(classes.)1831 5652 y F2(71)p eop end %%Page: 72 74 TeXDict begin 72 73 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 523 548 a F2(F)o(or)21 b(instance,)j(for)e(the)h F1(statement)32 b F2(rule,)23 b(the)f(class)h(hierarchy)h(is)e(constructed)k(by)c(creat-)382 678 y(ing)j(a)g(base)g(class,)j(S)t F0(T)m(A)l(T)t(E)t(M)t(E)t(N)t(T)r F2(,)h(and)c(inheriting)i(a)e(class)h(from)e(that)i(for)f(each)h (alternati)n(v)o(e)382 808 y(in)d(the)h(rule)g(since)h(the)o(y)f(are)f (all)h(a)f(sort)h(of)g(statement:)659 1001 y(statement)48 b(::=)759 1131 y FW({)22 b F2(\(statement\))1243 1098 y Fv(?)1284 1131 y FW(})814 b FX(block)781 1261 y F2(|)46 b(v)n(ariable-de\002nition)644 b FX(v)o(ariable)25 b(de\002nition)781 1391 y F2(|)46 b FW(while)20 b(\()j F2(e)o(xpression)j FW(\))c F2(statement)102 b FX(while)781 1521 y F2(|)46 b FW(if)22 b(\()g F2(e)o(xpression)k FW(\))d F2(statement)265 b FX(if)1018 1650 y F2([)p FW(else)21 b F2(statement)k(])781 1780 y(|)46 b(identi\002er)25 b FW(=)d F2(e)o(xpression)k FX(;)440 b(assignment)781 1910 y F2(|)46 b(function-call)27 b FX(;)791 b(function)23 b(call)781 2040 y F2(|)46 b FW(+)8 b(+)22 b F2(identi\002er)j FX(;)46 b F2(|)f FW(-)8 b(-)23 b F2(identi\002er)i FX(;)156 b(incr)n(ement)24 b F2(and)g FX(decr)n(ement)781 2170 y F2(|)46 b FW(return)20 b F2(e)o(xpression)26 b FX(;)518 b(r)n(etur)o(n)382 2354 y F2(The)21 b FX(block)h F2(alternati)n(v)o(e)i(references)h(the)d F1(statement)32 b F2(rule)23 b(zero)f(or)g(a)g(number)g(of)g(times,)g (thus)384 2484 y(B)t F0(L)t(O)t(C)t(K)t F2(S)t F0(T)m(A)l(T)t(E)t(M)t (E)t(N)t(T)35 b F2(has)29 b(zero)f(or)g(more)i(S)t F0(T)m(A)l(T)t(E)t (M)t(E)t(N)t(T)35 b F2(objects.)29 b(The)f FX(v)o(ariable)h(de\002ni-) 382 2614 y(tion)35 b F2(is)g(a)f(statement)j(of)e(a)f(v)n(ariable)j (de\002nition,)g(thus)h(V)-7 b F0(A)t(R)t(I)t(A)t(B)t(L)t(E)t F2(D)t F0(E)t(FI)t(N)t(I)t(T)t(I)5 b(O)t(N)t F2(S)t F0(T)n(A)l(T)g(E)g F2(-)384 2744 y F0(M)t(E)t(N)t(T)38 b F2(has)d(a)h(V)-7 b F0(A)t(R)t(I)t(A)t(B)t(L)t(E)t F2(D)t F0(E)t(FI)t(N)t(I)t(T)t(I)5 b(O)t(N)r F2(.)39 b(The)c FX(while)e F2(alternate)k(has)e(a)f (condition)j(and)e(a)382 2874 y(body)-6 b(,)23 b(hence)i(W)t F0(H)t(I)t(L)t(E)t F2(S)t F0(T)m(A)l(T)t(E)5 b(M)t(E)g(N)t(T)30 b F2(has)22 b(an)j(E)t F0(X)t(P)t(R)t(E)t(S)t(S)t(I)t(O)t(N)j F2(and)22 b(a)i(S)t F0(T)m(A)l(T)t(E)t(M)t(E)t(N)t(T)r F2(.)i(The)e(I)t F0(F)t F2(-)384 3004 y(S)t F0(T)m(A)l(T)t(E)t(M)t(E)t (N)t(T)38 b F2(has)31 b(an)j(E)t F0(X)t(P)t(R)t(E)t(S)t(S)t(I)t(O)t(N)j F2(and)32 b(a)f(then)h(and)g(possibly)i(an)d(else)j(S)t F0(T)m(A)l(T)t(E)t(M)t(E)t(N)t(T)r F2(,)382 3134 y(because)g(the)e FX(if)f F2(statement)j(has)e(a)f(condition)k(and)d(a)g(statement)h(for) f(when)g(the)g(condition)382 3263 y(is)39 b(true)h(and)f(f)o(alse.)h (The)h(A)t F0(S)t(S)t(I)t(G)t(N)t(M)t(E)t(N)t(T)t F2(S)t F0(T)m(A)l(T)5 b(E)g(M)t(E)g(N)t(T)47 b F2(has)39 b(an)g(identi\002er)i (and)f(an)h(E)t F0(X)t F2(-)384 3393 y F0(P)t(R)t(E)t(S)t(S)t(I)t(O)t (N)r F2(,)31 b(because)f(an)e(identi\002er)h(is)f(assigned)i(to)e(an)g (e)o(xpression)i(in)e FX(assignment)p F2(.)g(The)384 3523 y(F)t F0(U)t(N)t(C)t(T)t(I)t(O)t(N)t F2(C)t F0(A)t(L)t(L)t F2(S)t F0(T)m(A)l(T)t(E)5 b(M)t(E)g(N)t(T)36 b F2(\226)29 b FX(function)f(call)h F2(\226)f(has)h(a)i(F)t F0(U)t(N)t(C)t(T)t(I)t (O)t(N)t F2(C)t F0(A)t(L)t(L)r F2(.)g(The)f(I)t F0(N)t F2(-)384 3653 y F0(C)t(R)t(E)t(M)t(E)t(N)t(T)t F2(S)t F0(T)m(A)l(T)t(E)t(M)t(E)5 b(N)t(T)38 b F2(and)33 b(D)t F0(E)t(C)t(R)t(E)t(M)t(E)t(N)t(T)t F2(S)t F0(T)m(A)l(T)t(E)5 b(M)t(E)g(N)t(T)38 b F2(both)31 b(ha)n(v)o(e)g(an)f(identi\002er)l(,)i (as)382 3783 y(mandated)j(by)e FX(incr)n(ement)h F2(and)g FX(decr)n(ement)p F2(.)f(The)i(R)t F0(E)t(T)t(U)t(R)t(N)t F2(S)t F0(T)m(A)l(T)t(E)t(M)t(E)5 b(N)t(T)41 b F2(has)33 b(an)j(E)t F0(X)t F2(-)384 3913 y F0(P)t(R)t(E)t(S)t(S)t(I)t(O)t(N)29 b F2(to)23 b(e)n(v)n(aluate)j(for)d(the)h FX(r)n(etur)o(n)p F2(.)523 4042 y(The)e(result)h(of)f(this)h(construction)j(is)c(the)h (se)o(gment)g(of)f(the)g(class)i(diagram)f(illustrated)i(in)382 4172 y(Figure)f(5.4.)681 4993 y @beginspecial 0 @llx 0 @lly 614 @urx 180 @ury 2869 @rwi @setspecial %%BeginDocument: implementation/images/class-diagram-statement.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: class-diagram-statement.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Thu May 15 16:22:59 2003 %%For: olau@fire2.cs.auc.dk (Ole Laursen) %%BoundingBox: 0 0 614 180 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 180 moveto 0 0 lineto 614 0 lineto 614 180 lineto closepath clip newpath -395.3 576.3 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % /Helvetica-Narrow ff 180.00 scf sf 9750 9075 m gs 1 -1 sc (identifier) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 8850 8250 m gs 1 -1 sc (value \(Expression\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 14025 9075 m gs 1 -1 sc (condition \(Expression\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 10425 6750 m gs 1 -1 sc (0..*) col0 sh gr % Polyline 7.500 slw n 7575 7425 m 7575 6825 l 10725 6825 l gs col0 s gr % Polyline n 7575 7425 m 7500 7575 l 7575 7725 l 7650 7575 l 7575 7425 l cp gs col0 s gr % Polyline n 6600 7731 m 8550 7731 l 8550 8406 l 6600 8406 l cp gs col0 s gr % Polyline n 6600 8031 m 8550 8031 l gs col0 s gr % Polyline n 7350 8550 m 9450 8550 l 9450 9150 l 7350 9150 l cp gs col0 s gr % Polyline n 7350 8850 m 9450 8850 l gs col0 s gr % Polyline n 13875 8550 m 15825 8550 l 15825 9593 l 13875 9593 l cp gs col0 s gr % Polyline n 12739 7655 m 12739 8555 l gs col0 s gr % Polyline n 10679 7655 m 10679 8555 l gs col0 s gr % Polyline n 10725 6675 m 12675 6675 l 12675 7350 l 10725 7350 l cp gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 14400 8775 m gs 1 -1 sc (IfStatement) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 9750 9300 m gs 1 -1 sc (value \(Expression\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7350 7650 m gs 1 -1 sc (1) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 7050 7956 m gs 1 -1 sc (BlockStatement) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7500 9075 m gs 1 -1 sc (VariableDefinition) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 7425 8775 m gs 1 -1 sc (VariableDefinitionStatement) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 9742 8758 m gs 1 -1 sc (AssignmentStatement) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 11325 6900 m gs 1 -1 sc (Statement) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 15000 8250 m gs 1 -1 sc (FunctionCall) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 15075 7950 m gs 1 -1 sc (FunctionCallStatement) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 11850 9075 m gs 1 -1 sc (condition \(Expression\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 11850 9300 m gs 1 -1 sc (body \(Statement\)) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 12195 8781 m gs 1 -1 sc (WhileStatement) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 14025 9525 m gs 1 -1 sc (else \(Statement\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 14025 9300 m gs 1 -1 sc (then \(Statement\)) col0 sh gr % Polyline n 10725 6975 m 12675 6975 l gs col0 s gr % Polyline n 13650 7650 m 13650 7725 l gs col0 s gr % Polyline n 11700 7650 m 11700 7725 l gs col0 s gr % Polyline n 11700 7350 m 11550 7575 l 11850 7575 l 11775 7575 l 11700 7575 l 11775 7575 l 11850 7575 l 11700 7350 l 11550 7575 l 11625 7575 l 11550 7575 l 11700 7575 l gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 9045 7956 m gs 1 -1 sc (ReturnStatement) col0 sh gr % Polyline n 8670 7731 m 10620 7731 l 10620 8406 l 8670 8406 l cp gs col0 s gr % Polyline n 8670 8031 m 10620 8031 l gs col0 s gr /Helvetica-Narrow ff 180.00 scf sf 10905 8256 m gs 1 -1 sc (identifier) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 11055 7956 m gs 1 -1 sc (IncrementStatement) col0 sh gr % Polyline n 10740 7731 m 12690 7731 l 12690 8406 l 10740 8406 l cp gs col0 s gr % Polyline n 10740 8031 m 12690 8031 l gs col0 s gr /Helvetica-Narrow ff 180.00 scf sf 12930 8256 m gs 1 -1 sc (identifier) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 13080 7956 m gs 1 -1 sc (DecrementStatement) col0 sh gr % Polyline n 12780 7731 m 14730 7731 l 14730 8406 l 12780 8406 l cp gs col0 s gr % Polyline n 12780 8031 m 14730 8031 l gs col0 s gr % Polyline n 14775 8550 m 14775 7650 l gs col0 s gr % Polyline n 11700 7650 m 11700 7575 l gs col0 s gr % Polyline n 11703 7656 m 11711 7656 l gs col0 s gr % Polyline n 12600 7650 m 9375 7650 l gs col0 s gr % Polyline n 12600 7650 m 15975 7650 l 15975 7725 l gs col0 s gr % Polyline n 8612 7650 m 8612 8550 l gs col0 s gr % Polyline n 7725 7725 m 7725 7650 l 9450 7650 l gs col0 s gr % Polyline n 14850 7725 m 16800 7725 l 16800 8400 l 14850 8400 l cp gs col0 s gr % Polyline n 14850 8025 m 16800 8025 l gs col0 s gr % Polyline n 11745 8556 m 13695 8556 l 13695 9450 l 11745 9450 l cp gs col0 s gr % Polyline n 11745 8856 m 13695 8856 l gs col0 s gr % Polyline n 13875 8850 m 15825 8850 l gs col0 s gr % Polyline n 9555 8550 m 11505 8550 l 11505 9375 l 9555 9375 l cp gs col0 s gr % Polyline n 9555 8850 m 11505 8850 l gs col0 s gr % Polyline n 9675 7725 m 9675 7650 l gs col0 s gr $F2psEnd rs %%EndDocument @endspecial 1373 5190 a FQ(F)l(igur)m(e)c(5.4:)29 b(Statement)19 b(classes.)1831 5652 y F2(72)p eop end %%Page: 73 75 TeXDict begin 73 74 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 980 1134 a @beginspecial 0 @llx 0 @lly 434 @urx 164 @ury 2152 @rwi @setspecial %%BeginDocument: implementation/images/class-diagram-type.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: class-diagram-type.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Tue Apr 22 15:17:42 2003 %%For: jasper@fire2.cs.auc.dk (Jasper Kjersgaard Juhl) %%BoundingBox: 0 0 434 164 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 164 moveto 0 0 lineto 434 0 lineto 434 164 lineto closepath clip newpath 158.2 554.2 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw n 600 7650 m 1650 7650 l 1650 8625 l gs col0 s gr % Polyline n 525 6825 m 2250 6825 l gs col0 s gr % Polyline n 2625 8100 m 4575 8100 l 4575 8925 l 2625 8925 l cp gs col0 s gr % Polyline n 2625 8400 m 4575 8400 l gs col0 s gr % Polyline n 2625 7050 m 4575 7050 l gs col0 s gr % Polyline n 2625 6750 m 4575 6750 l 4575 7425 l 2625 7425 l cp gs col0 s gr % Polyline n 3600 7425 m 3525 7575 l 3600 7725 l 3675 7575 l 3600 7425 l cp gs col0 s gr % Polyline n 2625 6825 m 2475 6900 l 2250 6825 l 2475 6750 l 2625 6825 l cp gs col0 s gr % Polyline n 3600 7725 m 3600 8100 l gs col0 s gr /Helvetica-Narrow-BoldOblique ff 180.00 scf sf -825 6750 m gs 1 -1 sc (Typename) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 600 6675 m gs 1 -1 sc (0..1) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 3225 8325 m gs 1 -1 sc (Parameter) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2775 8625 m gs 1 -1 sc (identifier) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2775 8850 m gs 1 -1 sc (Typename) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2475 6675 m gs 1 -1 sc (1) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2775 7275 m gs 1 -1 sc (identifier) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 3075 6975 m gs 1 -1 sc (FunctionHeader) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 3750 7575 m gs 1 -1 sc (1) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 3750 8025 m gs 1 -1 sc (0..*) col0 sh gr % Polyline n -525 7650 m -525 8625 l gs col0 s gr % Polyline n -1575 8925 m 375 8925 l gs col0 s gr % Polyline n -1575 8625 m 375 8625 l 375 9225 l -1575 9225 l cp gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf -1050 8850 m gs 1 -1 sc (BoolTypename) col0 sh gr % Polyline n 525 8925 m 2475 8925 l gs col0 s gr % Polyline n 525 8625 m 2475 8625 l 2475 9225 l 525 9225 l cp gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 975 8850 m gs 1 -1 sc (EnumTypename) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 675 9150 m gs 1 -1 sc (identifier) col0 sh gr % Polyline n -525 7125 m -675 7350 l -375 7350 l -450 7350 l -525 7350 l -450 7350 l -375 7350 l -525 7125 l -675 7350 l -600 7350 l -675 7350 l -525 7350 l gs col0 s gr % Polyline n -375 8175 m 1575 8175 l gs col0 s gr % Polyline n -375 7875 m 1575 7875 l 1575 8475 l -375 8475 l cp gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf 75 8100 m gs 1 -1 sc (FloatTypename) col0 sh gr % Polyline n -2625 8175 m -675 8175 l gs col0 s gr % Polyline n -2625 7875 m -675 7875 l -675 8475 l -2625 8475 l cp gs col0 s gr /Helvetica-Narrow-Bold ff 180.00 scf sf -2175 8100 m gs 1 -1 sc (IntTypename) col0 sh gr % Polyline n -1425 6825 m 525 6825 l gs col0 s gr % Polyline n -1425 6525 m 525 6525 l 525 7125 l -1425 7125 l cp gs col0 s gr % Polyline n -525 7350 m -525 7650 l gs col0 s gr % Polyline n 600 7650 m 600 7875 l gs col0 s gr % Polyline n -1650 7875 m -1650 7650 l 600 7650 l gs col0 s gr $F2psEnd rs %%EndDocument @endspecial 453 1332 a FQ(F)l(igur)m(e)25 b(5.5:)k(The)d(typename)e (and)h(function)f(header)h(classes.)h(These)g(ar)m(e)g(a)o(g)o(gr)m(e)m (gated)e(by)h(the)453 1446 y(other)20 b(classes.)382 1705 y FP(5.2.4)99 b(Cr)n(eating)25 b(the)h(abstract)f(syntax)g(tr)n (ee)382 1896 y F2(The)34 b(abstract)j(syntax)f(tree)f(is)f(b)n(uilt)i (by)e(instantiating)39 b(objects)d(from)e(the)h(class)h(diagram)382 2026 y(during)24 b(the)f(parsing)i(when)e(their)g(syntactical)j (counterparts)g(are)d(encountered.)j(The)d(aggre-)382 2156 y(gation)h(connections)j(are)d(then)g(established)j(as)d(the)f (analysis)j(proceeds.)523 2286 y(The)34 b(object)i(instantiation)i(and) d(linking)h(is)e(embedded)i(in)f FW(rdp)p F2(')-5 b(s)32 b(semantic)k(actions)382 2415 y(which)21 b(are)h(dri)n(v)o(en)f (directly)i(by)f(the)f(syntax.)h(F)o(or)e(instance,)j(consider)g(the)f (left)f(f)o(actorization)382 2545 y(alternati)n(v)o(e)26 b(of)d(the)h(identi\002er)h(tok)o(en)g(in)e F1(statement)34 b F2(from)24 b(Section)g(5.2.2:)274 2710 y FO(1)96 b FY(s)13 b(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)71 b(:)19 b(:)h(=)62 b(I)t(D)53 b(\()28 b(')14 b(=)28 b(')62 b(e)13 b(x)g(p)g(r)g(e)g(s)g(s) g(i)g(o)g(n)77 b(|)i(f)12 b(u)g(n)g(c)g(t)g(i)g(o)g(n)k FN(\000)8 b FY(c)15 b(a)h(l)g(l)31 b(\))67 b(')14 b(;)31 b(')274 2824 y FO(2)806 b FY(|)72 b(.)26 b(.)g(.)72 b(.)382 3004 y F2(The)34 b(semantic)i(actions)g(are)f(de\002ned)h(within)f(a)f (pair)h(of)g FW([*)e F2(and)i FW(*])e F2(and)i(references)i(to)382 3134 y(terminals)25 b(are)f(de\002ned)g(with)f(a)h(trailing)h(colon)g (and)f(the)f(name)h(of)g(the)f(reference:)274 3298 y FO(1)96 b FY(s)13 b(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)71 b(:)19 b(:)h(=)62 b(I)t(D)17 b(:)25 b(i)12 b(d)60 b(\()28 b(')14 b(=)28 b(')57 b(e)8 b(x)g(p)g(1)274 3413 y FO(2)193 b FY([)10 b FN(\003)274 3527 y FO(3)248 b FY(c)17 b(s)f(t)g(a)g(t)68 b(=)54 b(n)s(e)s(w)62 b(A)11 b(s)g(s)g(i)g(g)g(n)g(m)g(e)g(n)g(t)g(S)g (t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)18 b(\()h(i)9 b(d)36 b(,)70 b(c)11 b(e)g(x)g(p)g(r)25 b(\))16 b(;)274 3642 y FO(4)246 b FY(c)14 b(s)g(t)g(a)g(t)25 b FN(\000)-6 b FY(>)11 b(l)k(i)g(n)f(e)67 b(=)47 b(L)l(N)10 b(;)274 3756 y FO(5)193 b FN(\003)10 b FY(])274 3871 y FO(6)1594 b FY(|)274 3985 y FO(7)193 b FY([)10 b FN(\003)274 4100 y FO(8)247 b FY(c)14 b(f)h(u)f(n)g(c)g(a)h (l)f(l)66 b(=)54 b(n)s(e)s(w)64 b(F)13 b(u)g(n)g(c)g(t)g(i)g(o)g(n)g(C) g(a)g(l)g(l)18 b(\()23 b(i)12 b(d)27 b(\))16 b(;)274 4215 y FO(9)245 b FY(c)13 b(f)g(u)g(n)g(c)g(a)g(l)g(l)23 b FN(\000)-6 b FY(>)11 b(l)k(i)g(n)g(e)66 b(=)47 b(L)l(N)10 b(;)249 4329 y FO(10)247 b FY(c)15 b(f)f(u)h(n)f(c)h(a)g(l)g(l)g(s)29 b(.)23 b(p)8 b(u)g(s)g(h)20 b(\()25 b(c)15 b(f)f(u)g(n)g(c)g(a)h(l)f(l) 31 b(\))16 b(;)249 4444 y FO(11)193 b FN(\003)10 b FY(])249 4558 y FO(12)1692 b FY(f)15 b(u)f(n)g(c)h(t)g(i)g(o)g(n)f(_)h(c)g(a)f (l)h(l)249 4673 y FO(13)193 b FY([)10 b FN(\003)249 4787 y FO(14)248 b FY(c)17 b(s)f(t)g(a)g(t)68 b(=)54 b(n)s(e)s(w)64 b(F)13 b(u)g(n)g(c)g(t)g(i)g(o)g(n)g(C)g(a)g(l)g(l)g(S)g(t)g(a)g(t)g(e) g(m)g(e)f(n)g(t)18 b(\()26 b(c)15 b(f)f(u)g(n)h(c)g(a)f(l)h(l)g(s)30 b(.)25 b(t)11 b(o)g(p)28 b(\()19 b(\))f(\))g(;)249 4902 y FO(15)246 b FY(c)14 b(s)g(t)g(a)g(t)25 b FN(\000)-6 b FY(>)11 b(l)k(i)g(n)f(e)67 b(=)47 b(L)l(N)10 b(;)249 5017 y FO(16)247 b FY(c)15 b(f)f(u)h(n)f(c)h(a)g(l)g(l)g(s)29 b(.)21 b(p)6 b(o)g(p)23 b(\()17 b(\))h(;)249 5131 y FO(17)193 b FN(\003)10 b FY(])249 5246 y FO(18)2489 b FY(\))67 b(')14 b(;)31 b(')249 5360 y FO(19)806 b FY(|)72 b(.)26 b(.)g(.)72 b(.)1831 5652 y F2(73)p eop end %%Page: 74 76 TeXDict begin 74 75 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a F2(Line)36 b(1)g(adds)h(a)f(reference)i FW(id)d F2(to)h(the)h(identi\002er)g(and)g (line)g(2\2265)g(describes)i(the)d(seman-)382 678 y(tic)31 b(actions)h(for)g(an)e(assignment)k(statement.)e(The)e(\002rst)h (action)h(instantiates)i(an)f(A)t F0(S)t(S)t(I)t(G)t(N)t F2(-)384 808 y F0(M)t(E)t(N)t(T)t F2(S)t F0(T)m(A)l(T)t(E)t(M)t(E)t(N)t (T)h F2(with)25 b(the)h(identi\002er)h(and)f(an)h(E)t F0(X)t(P)t(R)t(E)t(S)t(S)t(I)t(O)t(N)r F2(,)i(which)d(is)g(the)g (resulting)382 937 y(object)j(from)e(parsing)j FW(exp1)25 b F2(and)j(e)o(x)o(ecuting)h(its)f(semantic)h(actions.)g(The)e(second)i (action,)382 1067 y(in)h(line)g(4,)f(stores)i(the)f(current)i(line)e (number)h(of)f(the)g(source)h(program)g(which)f(caused)i(the)382 1197 y(object)d(to)e(be)h(instantiated.)i(This)d(is)h(done)g(to)f(f)o (acilitate)j(helpful)f(error)g(reports)g(during)g(the)382 1327 y(error)i(reporting)h(f)o(ase.)f(Line)f(7\22611)h(describes)i(the) d(semantic)h(actions)h(for)e(a)g(function)i(call)382 1457 y(statement.)h(The)f(\002rst)g(action)h(instantiates)i(a)f(F)t F0(U)t(N)t(C)t(T)t(I)t(O)t(N)t F2(C)t F0(A)t(L)t(L)j F2(and)32 b(the)h(second)h(action)382 1587 y(stores)24 b(the)f(current)h(line)f(number)h(in)f(that)g(object.)h(Line)e(10)h (pushes)h(the)f(instantiated)k(object)382 1717 y(onto)c(a)f(stack)h (for)g(later)g(reference.)i(Line)d(13\22617)i(instantiates)h(a)f(F)t F0(U)t(N)t(C)t(T)t(I)t(O)t(N)t F2(C)t F0(A)t(L)t(L)t F2(S)t F0(T)m(A)l(T)t(E)5 b F2(-)384 1846 y F0(M)t(E)t(N)t(T)35 b F2(with)d(the)i(F)t F0(U)t(N)t(C)t(T)t(I)t(O)t(N)t F2(C)t F0(A)t(L)t(L)j F2(as)32 b(ar)n(gument,)i(by)e(taking)h(the)g (top)f(of)g(the)g(stack,)h(to)382 1976 y(establish)g(the)d(aggre)o (gation.)j(Lastly)d(the)h(stack)g(is)f(popped)j(to)d(clean)h(things)h (up)e(a)g(bit)g(and)382 2106 y(ensure)25 b(that)f(no)g(wrong)g(aggre)o (gations)i(are)e(established.)523 2236 y(Semantic)31 b(actions)i(must)d(be)h(de\002ned)g(for)g(e)n(v)o(ery)g(syntactical)j (construct)f(to)e(b)n(uild)h(the)382 2366 y(entire)25 b(abstract)g(syntax)g(tree)f(during)h(parsing.)382 2681 y FS(5.3)119 b(Contextual)30 b(analysis)382 2905 y F2(This)j(phase)i (is)e(implemented)i(through)h(the)d(subclass)38 b(D)t F0(E)t(C)t(O)t(R)t(A)l(T)t(E)t F2(V)t F0(I)t(S)t(I)t(T)s(O)t(R)j F2(of)33 b(the)h(ab-)382 3035 y(stract)28 b(V)t F0(I)t(S)t(I)t(T)s(O)t (R)i F2(class.)c(The)h(V)t F0(I)t(S)t(I)t(T)s(O)t(R)i F2(class)e(represents)h(the)d FV(visitor)k F2(pattern)e([1)q(;)e(11)q (])f(and)382 3164 y(f)o(acilitates)33 b(a)e(common)g(w)o(ay)g(of)f (visiting)j(each)f(particular)h(type)f(of)e(node)i(in)f(the)g(abstract) 382 3294 y(syntax)23 b(tree,)f(while)h(a)n(v)n(oiding)h(that)f(the)f (conte)o(xtual)i(analysis)g(ends)f(up)f(as)g(one)g(giant)h(switch)382 3424 y(statement.)382 3691 y FP(5.3.1)99 b(Binding)26 b(identi\002ers)382 3882 y F2(The)i(identi\002ers)i(in)f(the)g (abstract)h(syntax)h(tree)e(need)g(to)g(be)f(link)o(ed)i(to)f(their)g (de\002nitions)i(so)382 4012 y(that)c(the)f(code)h(generation)i(phase)e (can)f(allocate)i(space)g(and)e(generate)i(code)f(for)f(accessing)382 4142 y(their)e(contents.)h(Hence,)f(when)f(visiting)j(the)d(tree,)h(it) f(is)g(necessary)j(to)e(k)o(eep)g(track)g(of)g(which)382 4272 y(identi\002ers)g(are)f(currently)i(a)n(v)n(ailable)g(when)e (crossing)i(scope)f(boundaries,)h(re)o(gistering)h(ne)n(w)382 4401 y(identi\002ers)g(when)e(de\002nitions)i(\(and)f(declarations,)i (b)n(ut)e(we)e(treat)i(them)f(separately)j(in)d(Sec-)382 4531 y(tion)30 b(5.3.4\))f(are)h(encountered)i(and)e(utilising)i(the)d (lookup)i(tables)f(when)g(identi\002ers)h(occur)382 4661 y(else)n(where.)382 4924 y FX(Scope)23 b(le)o(v)o(els)382 5115 y F2(The)f(block)h(structure)h(of)e(our)g(language)j(is)d (realised)i(with)e(a)f(stack)i(of)f(mappings)i(for)e(identi-)382 5245 y(\002ers.)f(Each)g(time)g(a)g(scope)h(is)f(entered,)i(a)e(ne)n(w) f(mapping)j(is)e(placed)i(on)e(the)h(top)f(of)h(the)f(stack,)382 5375 y(and)26 b(each)g(time)f(the)h(scope)h(is)e(closed)i(again,)f(the) g(mapping)h(is)e(popped)i(of)n(f.)e(Searching)j(for)1831 5652 y(74)p eop end %%Page: 75 77 TeXDict begin 75 76 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a F2(an)21 b(identi\002er)i(then)f(amounts)g(to)f(searching)j(the)d(mappings)i (from)e(the)g(top)h(of)f(the)g(stack.)h(The)382 678 y(\002rst,)h (global)i(mapping)g(is)e(created)i(when)f(the)g(conte)o(xtual)i (analysis)f(starts.)g(F)o(or)d(e)o(xample:)395 842 y FR(i)13 b(n)g(t)67 b FY(x)23 b(;)474 b FQ(/)18 b(/)73 b(\()17 b([)24 b(x)19 b(])13 b(\))395 957 y FR(i)g(n)g(t)67 b FY(y)23 b(;)474 b FQ(/)18 b(/)73 b(\()17 b([)k(x)28 b(,)66 b(y)20 b(])13 b(\))391 1186 y FR(v)c(o)g(i)g(d)71 b FY(f)26 b(\()14 b(\))395 1300 y({)712 b FQ(/)18 b(/)74 b(\()18 b([)g(])37 b(,)56 b([)23 b(x)28 b(,)65 b(y)20 b(])13 b(\))495 1415 y FR(i)g(n)g(t)69 b FY(z)25 b(;)375 b FQ(/)18 b(/)73 b(\()17 b([)26 b(z)f(])31 b(,)51 b([)21 b(x)27 b(,)66 b(y)20 b(])13 b(\))495 1530 y FY({)612 b FQ(/)18 b(/)74 b(\()18 b([)g(])37 b(,)56 b([)27 b(z)e(])31 b(,)52 b([)20 b(x)28 b(,)65 b(y)20 b(])13 b(\))594 1644 y FR(i)g(n)g(t)68 b FY(x)22 b(;)275 b FQ(/)18 b(/)73 b(\()17 b([)24 b(x)e(])31 b(,)51 b([)25 b(z)g(])31 b(,)51 b([)21 b(x)27 b(,)66 b(y)20 b(])13 b(\))495 1759 y FY(})612 b FQ(/)18 b(/)73 b(\()17 b([)26 b(z)f(])31 b(,)51 b([)21 b(x)27 b(,)66 b(y)20 b(])13 b(\))395 1873 y FY(})712 b FQ(/)18 b(/)73 b(\()17 b([)k(x)28 b(,)66 b(y)20 b(])13 b(\))523 2053 y F2(A)29 b(separate)k(stack)e(of)g(mappings)h(is)e (maintained)j(for)e(each)g(of)f(the)h(dif)n(ferent)i(sorts)e(of)382 2183 y(identi\002ers,)j(v)n(ariables,)h(functions)h(and)d FR(enum)p F2(s.)f(Only)h(one)h(mapping)g(is)f(used)g(for)g FR(type)p F2(s,)382 2313 y(though,)25 b(since)f(the)o(y)g(are)g(al)o(w) o(ays)g(de\002ned)h(at)e(the)h(global)h(le)n(v)o(el.)523 2442 y(The)35 b(mappings)i(are)e(from)h(identi\002er)g(strings)h(to)e (pointers)j(to)d(the)g(de\002nition)i(of)f(the)382 2572 y(identi\002er)21 b(in)f(the)g(abstract)h(syntax)g(tree,)f(e.g.)f(to)h (a)h(V)-7 b F0(A)t(R)t(I)t(A)t(B)t(L)t(E)t F2(D)t F0(E)t(FI)t(N)t(I)t (T)5 b(I)g(O)t(N)26 b F2(for)20 b(a)f(v)n(ariable.)382 2702 y(A)h(standard)j(C++)d FW(map)f F2(is)h(used)i(for)f(the)g (implementation,)j(which)d(guarantees)j(logarithmic)382 2832 y(lookup)h(and)f(insertion)i(comple)o(xity)-6 b(.)523 2962 y(The)37 b(identi\002cation)k(tables)e(are)e(implemented)j(with)d (the)j(I)t F0(D)t(E)t(N)t(T)t(I)t(FI)t(C)t(A)l(T)t(I)5 b(O)t(N)t F2(T)l F0(A)t(B)t(L)g(E)382 3092 y F2(class.)31 b(Its)f(constructor)j(creates)e(the)g(global)g(scope)g(mapping)h(in)e (the)g(stack)h(for)f(v)n(ariables,)382 3222 y(functions)25 b(and)f(enums)f(by)g(in)l(v)n(oking)j(the)d F1(open_scope\(\))37 b F2(function)26 b(which)d(is)g(also)g(in)l(v)n(ok)o(ed)382 3351 y(for)h(each)h(block)g(encountered)j(during)d(the)g(node)g (visiting.)g(The)f(methods)h F1(retrie)n(v)o(e\(...\))35 b F2(and)382 3481 y F1(enter\(...\))f F2(retrie)n(v)o(e)25 b(and)f(enter)g(de\002nitions)i(from)e(and)g(into)g(the)g (corresponding)j(map.)382 3744 y FX(Entering)c(identi\002ers)382 3935 y F2(When)18 b(re)o(gistering)j(an)e(identi\002er)l(,)h F1(enter)26 b F2(checks)19 b(whether)h(the)e(identi\002er)i(is)e (already)i(present)382 4065 y(in)k(the)g(local)g(scope,)h(as)f (rede\002nition)i(of)e(identi\002ers)h(in)f(the)g(same)g(scope)h(is)f (not)g(allo)n(wed.)g(If)382 4195 y(the)i(identi\002er)g(is)g(present,)g (the)g(de\002nition)h(is)e(mark)o(ed)i(by)e(setting)i F1(err_already_de\002ned)41 b F2(to)383 4325 y FR(true)p F2(,)25 b(thus)h(indicating)i(to)d(the)g(error)h(detection)i(phase)f (that)e(this)h(should)h(be)e(reported)j(as)d(an)382 4455 y(error)-5 b(.)24 b(The)f(snippet)i(belo)n(w)f(is)f(the)h(visitor)h (method)g(for)f(v)n(ariable)h(de\002nitions.)391 4619 y FR(v)9 b(o)g(i)g(d)74 b FY(D)14 b(e)g(c)g(o)g(r)g(a)g(t)g(e)g(V)g(i)g (s)g(i)f(t)h(o)f(r)25 b(:)18 b(:)35 b(v)18 b(i)f(s)h(i)g(t)29 b(\()c(V)14 b(a)g(r)g(i)g(a)g(b)g(l)g(e)g(D)g(e)g(f)g(i)g(n)g(i)g(t)h (i)f(o)g(n)59 b FN(\003)17 b FY(v)6 b(d)16 b(\))387 4734 y({)498 4848 y FR(i)g(f)71 b FY(\()32 b(i)15 b(d)f(e)h(n)f(t)h(_)g(t)g (a)g(b)f(l)h(e)29 b(.)f(e)14 b(n)f(t)h(e)g(r)25 b(\()15 b(v)t(d)5 b FN(\000)-6 b FY(>)12 b(i)k(d)g(e)g(n)f(t)i(i)f(f)g(i)g(e)g (r)51 b(,)65 b(v)6 b(d)19 b(\))14 b(\))585 4963 y(v)t(d)5 b FN(\000)-6 b FY(>)10 b(e)k(r)g(r)f(_)h(a)f(l)h(r)g(e)g(a)f(d)h(y)f(_) h(d)f(e)h(f)f(i)h(n)g(e)f(d)65 b(=)d FR(t)10 b(r)g(u)g(e)24 b FY(;)503 5077 y(.)e(.)f(.)387 5192 y(})1831 5652 y F2(75)p eop end %%Page: 76 78 TeXDict begin 76 77 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a FX(Binding)22 b(identi\002ers)382 739 y F2(When)31 b(an)g(identi\002er)i(is)e (encountered,)j(its)d(de\002nition)i(is)e(look)o(ed)i(up.)e(If)g(it)g (is)g(not)g(present)382 869 y(in)j(the)g(local)h(scope,)g(the)f (containing)j(scope)e(is)f(instead)i(considered)h(and)d(so)g(forth)h (until)382 999 y(the)c(global)i(scope)g(is)e(reached.)i(If)e(the)g (lookup)i(f)o(ails,)f(the)g(e)o(xamined)g(node)h(is)e(mark)o(ed)h(as) 382 1129 y(containing)c(an)c(error)-5 b(.)26 b(Else)e(a)g(link)i(to)e (the)h(the)g(found)h(de\002nition)h(is)d(established)k(by)d(setting)382 1259 y(a)e(pointer)i(in)f(the)g(node.)523 1388 y(The)f(snippet)i(belo)n (w)f(is)f(from)h(the)g(assignment)i(statement.)391 1553 y FR(v)9 b(o)g(i)g(d)74 b FY(D)14 b(e)g(c)g(o)g(r)g(a)g(t)g(e)g(V)g(i)g (s)g(i)f(t)h(o)f(r)25 b(:)18 b(:)35 b(v)18 b(i)f(s)h(i)g(t)29 b(\()22 b(A)11 b(s)g(s)g(i)g(g)g(n)g(m)g(e)g(n)g(t)g(S)g(t)g(a)g(t)g(e) g(m)g(e)g(n)g(t)52 b FN(\003)22 b FY(a)10 b(s)21 b(\))387 1667 y({)503 1782 y(.)h(.)f(.)496 1896 y(V)14 b(a)g(r)g(i)g(a)g(b)g(l)g (e)g(D)g(e)g(f)g(i)g(n)g(i)g(t)h(i)f(o)f(n)60 b FN(\003)17 b FY(v)6 b(d)56 b(=)63 b(l)12 b(o)g(o)g(k)g(u)g(p)g(_)g(i)g(d)g(e)g(n)g (t)23 b(\()18 b(a)8 b(s)13 b FN(\000)-6 b FY(>)13 b(i)18 b(d)f(e)h(n)f(t)g(i)h(f)f(i)h(e)g(r)33 b(\))16 b(;)498 2126 y FR(i)g(f)71 b FY(\()22 b(v)6 b(d)56 b(!)15 b(=)52 b(0)15 b(\))g({)595 2240 y(t)64 b(=)56 b(v)t(d)5 b FN(\000)-6 b FY(>)7 b(t)k(y)g(p)g(e)24 b(;)597 2469 y FR(i)17 b(f)71 b FY(\()21 b(v)t(d)5 b FN(\000)-6 b FY(>)9 b(c)14 b(o)g(n)g(s)g(t)g(a)g (n)g(t)20 b(\))688 2584 y(a)8 b(s)13 b FN(\000)-6 b FY(>)10 b(e)k(r)g(r)f(_)h(d)g(e)g(c)g(l)g(a)g(r)f(e)h(d)g(_)f(a)h(s)h(_)e(c)h (o)g(n)f(s)i(t)f(a)g(n)f(t)66 b(=)61 b FR(t)10 b(r)g(u)g(e)25 b FY(;)487 2698 y(})503 2813 y(.)d(.)f(.)499 2928 y FQ(/)d(/)80 b(t)12 b(y)g(p)g(e)74 b(c)11 b(h)g(e)g(c)g(k)g(i)g(n)g(g)503 3042 y FY(.)22 b(.)f(.)499 3157 y FQ(/)d(/)80 b(b)12 b(i)g(n)g(d)g(i)g(n)g(g)70 b(o)12 b(f)72 b(o)11 b(c)g(c)g(u)g(r)g(r)g (e)g(n)g(c)g(e)498 3271 y FR(i)16 b(f)71 b FY(\()22 b(v)6 b(d)58 b(!)16 b(=)53 b(0)15 b(\))589 3386 y(a)8 b(s)k FN(\000)-6 b FY(>)5 b(o)k(c)g(c)58 b(=)f(v)6 b(d)17 b(;)503 3500 y(.)22 b(.)f(.)387 3615 y(})382 3795 y F2(If)27 b(the)h(v)n(ariable)i(assigned)g(to)e(is)f(constant,)j(the)e (assignment)i(statement)f(is)f(ob)o(viously)i(also)382 3925 y(erratic.)382 4191 y FP(5.3.2)99 b(T)-7 b(ype)25 b(checking)382 4382 y F2(T)-7 b(ype)24 b(checking)j(a)d(unary)i(e)o (xpression)h(is)e(straightforw)o(ard,)j(as)c(the)h(type)h(check)f (either)h(f)o(ails)382 4512 y(or)f(succeeds.)i(T)-7 b(ype)25 b(checking)j(a)c(binary)j(e)o(xpression,)h(a)c(multiple)j(choice)f(e)o (xpression)i(or)d(a)382 4642 y(statement,)g(ho)n(we)n(v)o(er)l(,)f (results)h(in)e(one)h(of)g(these)g(three)h(cases:)518 4847 y Ft(\017)46 b F2(A)23 b(type)h(match.)f(Ev)o(erything)j(is)d (\002ne.)518 5051 y Ft(\017)46 b F2(A)23 b(major)g(type)i(mismatch.)f (The)f(error)h(is)f(reported)j(in)e(the)f(reporting)j(phase.)518 5256 y Ft(\017)46 b F2(A)24 b(minor)i(type)f(mismatch)h(which)g(causes) g(an)f(implicit)h(type)g(con)l(v)o(ersion)i(by)d(insert-)609 5386 y(ing)f(a)f(call)h(to)g(either)46 b FY(intify)e F2(or)53 b FY(\003oatify)e F2(with)24 b(the)f(e)o(xpression)k(as)c(the) h(parameter)-5 b(.)1831 5652 y(76)p eop end %%Page: 77 79 TeXDict begin 77 78 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a F2(F)o(or)30 b(e)o(xample,)i(type)g(checking)i(a)c(v)n(ariable)j(de\002nition)g(is)e (done)i(by)e(visiting)i(its)e(type)h(and)382 678 y(e)o(xpression,)39 b(and)e(checking)i(that)e(the)g(type)g(of)f(the)h(e)o(xpression)i (match)e(the)g(type)g(of)g(the)382 808 y(de\002nition:)391 972 y FR(v)9 b(o)g(i)g(d)74 b FY(D)14 b(e)g(c)g(o)g(r)g(a)g(t)g(e)g(V)g (i)g(s)g(i)f(t)h(o)f(r)25 b(:)18 b(:)35 b(v)18 b(i)f(s)h(i)g(t)29 b(\()c(V)14 b(a)g(r)g(i)g(a)g(b)g(l)g(e)g(D)g(e)g(f)g(i)g(n)g(i)g(t)h (i)f(o)g(n)59 b FN(\003)17 b FY(v)6 b(d)16 b(\))387 1087 y({)503 1201 y(.)22 b(.)f(.)486 1316 y(v)t(d)5 b FN(\000)-6 b FY(>)5 b(t)k(y)g(p)g(e)17 b FN(\000)-6 b FY(>)13 b(v)18 b(i)f(s)h(i)g(t)29 b(\()c FR(t)13 b(h)h(i)g(s)31 b FY(\))16 b(;)498 1430 y FR(i)g(f)71 b FY(\()21 b(v)t(d)5 b FN(\000)-6 b FY(>)9 b(e)k(x)g(p)g(r)g(e)g(s)g(s)g(i)g(o)g(n)26 b(\))51 b({)585 1659 y(v)t(d)5 b FN(\000)-6 b FY(>)8 b(e)k(x)g(p)g(r)g(e)g(s)g (s)g(i)g(o)g(n)19 b FN(\000)-6 b FY(>)14 b(v)j(i)h(s)g(i)f(t)29 b(\()c FR(t)14 b(h)g(i)g(s)31 b FY(\))16 b(;)592 1889 y FR(s)10 b(w)g(i)g(t)g(c)g(h)67 b FY(\()27 b(c)10 b(h)g(e)g(c)g(k)g(_) g(t)g(y)g(p)g(e)g(_)g(m)g(a)g(t)g(c)g(h)21 b(\()15 b(v)t(d)5 b FN(\000)-6 b FY(>)5 b(t)k(y)g(p)g(e)38 b(,)64 b(v)t(d)5 b FN(\000)-6 b FY(>)8 b(e)k(x)g(p)g(r)g(e)g(s)g(s)g(i)g(o)g(n)19 b FN(\000)-6 b FY(>)7 b(t)k(y)g(p)g(e)26 b(\))14 b(\))586 2003 y({)592 2118 y FR(c)c(a)g(s)g(e)56 b FY(T)-5 b(Y)g(P)g(E)g(_)g(M)g (A)g(T)g(C)g(H)11 b(:)688 2232 y FR(b)c(r)g(e)g(a)g(k)19 b FY(;)592 2347 y FR(c)10 b(a)g(s)g(e)57 b FY(M)l(A)l(J)l(O)l(R)l(_)l (T)l(Y)l(P)l(E)l(_)l(M)l(I)l(S)l(M)l(A)l(T)l(C)l(H)14 b(:)685 2461 y(v)t(d)5 b FN(\000)-6 b FY(>)7 b(t)k(y)g(p)g(e)64 b(=)53 b(0)15 b(;)688 2576 y FR(b)7 b(r)g(e)g(a)g(k)19 b FY(;)592 2691 y FR(c)10 b(a)g(s)g(e)57 b FY(M)m(I)m(N)m(O)m(R)m(_)m (T)m(Y)m(P)m(E)m(_)m(M)l(I)l(S)m(M)l(A)m(T)l(C)m(H)t(:)685 2805 y(v)t(d)5 b FN(\000)-6 b FY(>)9 b(e)k(x)g(p)g(r)g(e)g(s)g(s)g(i)g (o)g(n)53 b(=)795 2920 y(b)14 b(u)g(i)g(l)h(d)f(_)g(c)g(o)g(n)g(v)g(e)g (r)g(t)h(_)f(f)g(u)g(n)g(c)g(t)g(i)h(o)f(n)g(_)g(c)g(a)g(l)h(l)25 b(\()15 b(v)t(d)5 b FN(\000)-6 b FY(>)8 b(e)k(x)g(p)g(r)g(e)g(s)g(s)g (i)g(o)g(n)41 b(,)63 b(v)t(d)5 b FN(\000)-6 b FY(>)8 b(t)j(y)g(p)g(e)27 b(\))16 b(;)688 3034 y FR(b)7 b(r)g(e)g(a)g(k)19 b FY(;)586 3149 y(})487 3263 y(})503 3378 y(.)j(.)f(.)387 3493 y(})382 3672 y F2(The)i F1(check_type_match)39 b F2(helper)25 b(is)e(de\002ned)h(according)j(to)c(the)h(rules)g(in)g (Section)g(2.3.3.)382 3939 y FP(5.3.3)99 b(Importing)25 b(\002les)382 4130 y F2(When)i(an)f(import)h(directi)n(v)o(e)i(is)d (encountered,)k(the)c FW(rdp)p F2(-generated)i(parser)g(is)f(in)l(v)n (ok)o(ed)i(on)382 4260 y(the)i(imported)i(\002le)e(and)h(a)e(pointer)j (in)f(the)f(import)h(directi)n(v)o(e)h(node)f(is)f(set)h(to)f(point)h (to)g(the)382 4390 y(resulting)c(abstract)g(syntax)f(tree.)f(Then)f (the)h(conte)o(xtual)j(analysis)f(proceeds)g(by)d(tra)n(v)o(ersing)382 4520 y(the)31 b(just)g(created)h(abstract)g(syntax)g(tree)f(\(with)f (the)h(same)f(visitor)i(object\))g(before)g(lea)n(ving)382 4649 y(the)f(import)h(directi)n(v)o(e)h(node.)f(Hence,)f(the)h (de\002nitions)h(from)e(the)h(\002le)e(will)h(e)n(v)o(entually)j(be)382 4779 y(entered)25 b(into)f(the)g(identi\002cation)j(table.)523 4909 y(T)-7 b(o)35 b(remedy)h(the)g(problem)h(with)e(\002les)h(that)g (are)g(included)i(multiple)f(times)f(\(cf.)f(Fig-)382 5039 y(ure)28 b(1.3)f(on)h(page)g(13\),)g(a)f(table)h(of)f(\002le)g (names)h(imported)h(so)f(f)o(ar)f(is)h(maintained.)h(Before)f(a)382 5169 y(\002le)d(is)h(parsed,)h(it)f(is)g(then)g(check)o(ed)i(whether)f (it)f(already)h(has)g(been)g(processed.)h(F)o(or)d(e)o(xam-)382 5299 y(ple,)g(for)f(Figure)i(1.3,)e(when)g(C)g(and)h(A)e(ha)n(v)o(e)j (been)f(analysed)i(and)e(the)g(import)g(directi)n(v)o(e)i(for)1831 5652 y(77)p eop end %%Page: 78 80 TeXDict begin 78 79 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a F2(C)26 b(in)h(B)f(is)i(encountered,)i(it)d(is)g(simply)i(skipped)g(since)f(C)e (is)i(already)h(in)e(the)h(table)g(and)g(the)382 678 y(contained)e(de\002nitions)g(already)f(parsed)g(and)f(entered)h(into)f (the)g(identi\002cation)j(table.)391 842 y FR(v)9 b(o)g(i)g(d)74 b FY(D)14 b(e)g(c)g(o)g(r)g(a)g(t)g(e)g(V)g(i)g(s)g(i)f(t)h(o)f(r)25 b(:)18 b(:)35 b(v)18 b(i)f(s)h(i)g(t)29 b(\()24 b(I)13 b(m)g(p)g(o)g(r)g(t)g(D)g(i)g(r)g(e)g(c)g(t)g(i)g(v)g(e)60 b FN(\003)23 b FY(i)12 b(d)22 b(\))387 957 y({)498 1071 y FR(i)16 b(f)74 b FY(\()18 b(!)31 b(i)13 b(m)g(p)g(o)g(r)g(t)g(_)g(t)g (a)g(b)g(l)g(e)29 b(.)h(e)15 b(x)g(i)g(s)h(t)26 b(\()20 b(i)9 b(d)14 b FN(\000)-6 b FY(>)8 b(f)k(i)g(l)g(e)g(n)g(a)g(m)g(e)27 b(\))17 b(\))54 b({)590 1186 y(i)9 b(d)14 b FN(\000)-6 b FY(>)8 b(i)j(s)g(i)g(m)63 b(=)e(r)10 b(d)g(p)25 b(:)18 b(:)32 b(p)14 b(a)g(r)g(s)g(e)g(r)22 b(\()g FR(c)11 b(o)g(n)g(s)g(t)g (_)g(c)g(a)g(s)g(t)24 b FY(<)8 b FR(c)g(h)g(a)g(r)43 b FN(\003)16 b FY(>)1987 1300 y(\()k(i)9 b(d)14 b FN(\000)-6 b FY(>)8 b(f)k(i)g(l)g(e)g(n)g(a)g(m)g(e)25 b(.)k(c)14 b(_)h(s)f(t)h(r)34 b(\()19 b(\))f(\))h(\))g(;)603 1415 y(.)i(.)h(.)599 1530 y(v)17 b(i)h(s)g(i)f(t)29 b(\()20 b(i)9 b(d)14 b FN(\000)-6 b FY(>)8 b(i)j(s)g(i)g(m)28 b(\))16 b(;)603 1644 y(.)21 b(.)h(.)487 1759 y(})387 1873 y(})382 2190 y FP(5.3.4)99 b(Declarations)382 2381 y F2(Declarations)22 b(of)e(v)n(ariables)h(and)f(functions)i(are)e (maintained)i(in)d(a)h(declaration)i(table,)f(which)382 2511 y(f)o(acilitates)26 b(looking)g(up)d(identi\002ers)j(and)e (matching)h(declarations)i(with)c(de\002nitions.)523 2641 y(Declarations)28 b(are)e(stored)h(in)f(the)g(table)h(with)e(the)h (identi\002er)h(as)f(the)g(k)o(e)o(y)-6 b(,)25 b(as)h(illustrated)382 2770 y(in)d(the)h(follo)n(wing)h(code:)391 2935 y FR(v)9 b(o)g(i)g(d)74 b FY(D)14 b(e)g(c)g(o)g(r)g(a)g(t)g(e)g(V)g(i)g(s)g(i)f (t)h(o)f(r)25 b(:)18 b(:)35 b(v)18 b(i)f(s)h(i)g(t)29 b(\()24 b(V)14 b(a)g(r)g(i)g(a)g(b)g(l)g(e)g(D)g(e)g(c)g(l)g(a)g(r)g(a) f(t)h(i)g(o)f(n)53 b FN(\003)17 b FY(v)6 b(d)15 b(\))387 3049 y({)486 3164 y(v)t(d)5 b FN(\000)-6 b FY(>)5 b(t)k(y)g(p)g(e)17 b FN(\000)-6 b FY(>)13 b(v)18 b(i)f(s)h(i)g(t)29 b(\()c FR(t)13 b(h)h(i)g(s)31 b FY(\))16 b(;)498 3393 y FR(i)g(f)74 b FY(\()18 b(!)32 b(d)14 b(e)g(c)g(l)g(_)g(t)g(a)g(b)g(l)h(e)28 b(.)22 b(m)8 b(a)g(t)g(c)g(h)17 b(\()23 b(l)12 b(o)g(o)g(k)g(u)g(p)g(_) g(i)g(d)g(e)g(n)g(t)22 b(\()15 b(v)t(d)5 b FN(\000)-6 b FY(>)14 b(i)k(d)f(e)g(n)g(t)h(i)g(f)f(i)h(e)f(r)33 b(\))f(,)58 b(v)6 b(d)19 b(\))c(\))595 3508 y(d)f(e)g(c)g(l)h(_)f(t)g (a)g(b)g(l)g(e)29 b(.)f(e)14 b(n)f(t)h(e)g(r)24 b(\()15 b(v)t(d)5 b FN(\000)-6 b FY(>)12 b(i)17 b(d)e(e)h(n)g(t)g(i)g(f)g(i)g (e)g(r)52 b(,)65 b(v)6 b(d)20 b(\))c(;)387 3622 y(})382 3802 y F2(Since)24 b(declarations)j(are)d(local)g(to)g(the)f(\002le)g (the)o(y)h(appear)h(in,)f(a)f(stack)h(of)g(mappings)h(is)f(main-)382 3932 y(tained)f(in)f(the)h(declaration)i(table)e(with)f(the)g(mapping)h (at)f(the)h(top)f(of)g(the)g(stack)h(representing)382 4062 y(the)29 b(declarations)j(in)d(the)g(current)h(\002le.)e (Searching)j(for)e(an)f(identi\002er)i(during)h(the)e(analysis)382 4191 y(then)g(amounts)g(to)f(searching)i(the)e(de\002nition)i(table)f (\002rst,)e(and)h(then)h(the)f(declaration)j(table)382 4321 y(for)24 b(the)f(declarations)k(in)d(the)g(current)h(\002le)e(if)g (no)h(de\002nition)h(w)o(as)e(found.)523 4451 y(Matching)41 b(a)e(declaration)j(with)d(the)h(corresponding)j(de\002nition)e(can)f (occur)g(at)f(tw)o(o)382 4581 y(places:)j(when)e(the)h(declaration)i (is)d(encountered)k(or)c(when)g(the)h(de\002nition)h(is)e(encoun-)382 4711 y(tered.)27 b(W)-7 b(e)26 b(de\002ne)h(a)f(partial)i(match)f(to)g (be)g(when)f(the)h(identi\002ers)i(are)e(the)f(same)h(and)g(a)f(full) 382 4841 y(match)h(for)g(v)n(ariables)h(to)f(be)g(when)f(additionally)k (the)d(type)h(\(including)h(the)e FW(const)d F2(quali-)382 4971 y(\002er\))g(match,)g(and)h(for)f(functions)j(when)e(additionally) i(the)e(return)g(type)g(and)g(the)g(number)g(of)382 5100 y(parameters)g(and)f(their)h(types)f(match.)523 5230 y(Then)h(when)g(a)f(de\002nition)i(is)f(encountered,)j(if)c(there)i(is) e(a)g(partial)j(match,)d(it)h(is)f(an)h(error)382 5360 y(since)31 b(name)g(o)o(v)o(erloading)i(is)e(not)f(supported.)j(If)e (there)g(is)f(a)g(full)h(match,)g(the)g(declaration)1831 5652 y(78)p eop end %%Page: 79 81 TeXDict begin 79 80 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a F2(is)28 b(remo)o(v)o(ed)h(from)g(the)g(table)g(and)g(a)f(pointer)j(to)d(the)h (de\002nition)h(is)e(installed)j(in)e(the)g(decla-)382 678 y(ration)f(so)f(that)g(the)g(nodes)h(that)f(reference)i(it)e(can)g (\002nd)f(the)h(de\002nition.)h(From)e(the)h(v)n(ariable)382 808 y(de\002nition)e(visit)g(method:)391 972 y FR(v)9 b(o)g(i)g(d)74 b FY(D)14 b(e)g(c)g(o)g(r)g(a)g(t)g(e)g(V)g(i)g(s)g(i)f (t)h(o)f(r)25 b(:)18 b(:)35 b(v)18 b(i)f(s)h(i)g(t)29 b(\()c(V)14 b(a)g(r)g(i)g(a)g(b)g(l)g(e)g(D)g(e)g(f)g(i)g(n)g(i)g(t)h (i)f(o)g(n)59 b FN(\003)17 b FY(v)6 b(d)16 b(\))387 1087 y({)503 1201 y(.)22 b(.)f(.)498 1316 y FR(i)16 b(f)71 b FY(\()32 b(i)15 b(d)f(e)h(n)f(t)h(_)g(t)g(a)g(b)f(l)h(e)29 b(.)g(l)15 b(e)f(v)g(e)h(l)66 b(=)16 b(=)51 b(1)15 b(\))69 b FQ(/)18 b(/)78 b(c)10 b(h)g(e)g(c)g(k)69 b(s)10 b(c)g(o)g(p)g(e)74 b(l)15 b(e)h(v)f(e)g(l)595 1430 y FY(d)f(e)g(c)g(l)h(_)f(t)g(a)g(b)g(l) g(e)29 b(.)21 b(r)7 b(e)g(m)g(o)g(v)g(e)17 b(\()f(v)6 b(d)21 b(\))16 b(;)387 1545 y(})523 1725 y F2(Lik)o(e)n(wise,)24 b(when)g(a)f(declaration)k(is)c(met,)g(if)h(there)g(is)g(a)f(partial)i (match,)f(it)g(is)f(an)h(error)-5 b(.)24 b(If)382 1854 y(there)f(is)e(a)h(full)g(match,)g(the)g(declaration)j(is)d(simply)h (not)f(entered)h(into)g(the)f(declaration)j(table)382 1984 y(as)e(the)h(pre)n(vious)i(snippet)f(sho)n(wed.)523 2114 y(When)32 b(the)g(analysis)i(is)e(complete,)h(an)o(y)e (declaration)k(that)e(does)f(not)g(bind)h(itself)g(to)e(a)382 2244 y(de\002nition)25 b(is)f(reported)h(as)f(an)f(error)i(by)e(the)h (error)g(reporting)i(phase.)382 2559 y FS(5.4)119 b(Err)n(or)29 b(r)n(eporting)382 2783 y F2(The)23 b(error)g(reporting)j(phase)e(is)f (implemented)i(with)e(the)i(B)s F0(U)t(G)t(FI)t(N)t(D)t(E)t(R)m F2(V)t F0(I)t(S)t(I)t(T)s(O)t(R)30 b F2(class)24 b(that)382 2913 y(inherits)g(from)g(V)t F0(I)t(S)t(I)t(T)s(O)t(R)r F2(.)g(An)o(y)d(error)i(mark)f(found)h(in)f(a)g(node)h(from)f(the)g (conte)o(xtual)j(analy-)382 3043 y(sis)c(is)h(reported)h(with)e(a)g (helpful)i(message)g(with)e(the)g(\002lename)h(and)g(line)g(number)-5 b(.)22 b(W)-7 b(arnings)382 3172 y(caused)25 b(by)f(implicit)g(type)h (con)l(v)o(ersions)i(are)c(also)h(reported.)523 3302 y(F)o(or)f(e)o(xample,)h(the)g(simple)g(di)n(vision)h(function)397 3467 y FR(f)14 b(l)g(o)h(a)f(t)75 b FY(d)11 b(i)g(v)20 b(\()k FR(i)13 b(n)g(t)66 b FY(x)24 b(,)73 b FR(i)13 b(n)g(t)67 b FY(y)15 b(\))c({)496 3581 y FR(f)j(l)h(o)f(a)g(t)69 b FY(d)55 b(=)g(x)17 b(/)g(y)g(;)387 3696 y(})382 3875 y F2(causes)25 b(the)f(follo)n(wing)h(output)g(from)e(the)h(compiler:) 377 4040 y FY(E)-5 b(R)g(R)g(O)g(R)11 b(:)25 b(d)11 b(i)g(v)20 b(:)11 b(1)54 b FN(\000)j FY(f)14 b(u)g(n)g(c)g(t)g(i)g(o)g(n)72 b(i)15 b(s)76 b(m)11 b(i)g(s)g(s)g(i)g(n)g(g)69 b(a)i(r)14 b(e)g(t)g(u)g(r)g(n)77 b(s)13 b(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)71 b(')22 b(d)9 b(i)g(v)26 b(')375 4154 y(W)-7 b(A)g(R)g(N)g(I)g(N)g(G)10 b(:)24 b(d)11 b(i)g(v)21 b(:)11 b(2)54 b FN(\000)k FY(i)16 b(m)f(p)g(l)h(i)g(c)f(i)h(t)77 b(t)11 b(y)g(p)g(e)72 b(c)12 b(o)g(n)g(v)g(e)g(r)g(s)g(i)g(o)g(n)397 4269 y(e)j(r)g(r)f(o)h (r)f(s)74 b(f)8 b(o)g(u)g(n)g(d)32 b(,)61 b(n)r(o)r(w)i(t)14 b(e)g(r)g(m)g(i)g(n)g(a)g(t)g(i)g(n)g(g)382 4634 y FS(5.5)119 b(Code)30 b(generation)382 4858 y F2(The)23 b(code)i(generation)h (phase)f(is)f(implemented)i(with)d(the)h(class)j(G)t F0(E)t(N)t F2(C)t F0(O)t(D)t(E)t F2(V)t F0(I)t(S)t(I)t(T)s(O)t(R)j F2(that)382 4988 y(inherits)j(from)g(V)t F0(I)t(S)t(I)t(T)s(O)t(R)r F2(.)h(When)d(the)h(tree)f(is)g(tra)n(v)o(ersed,)i(the)f(code)g (speci\002ed)h(with)f Ft(T)54 b F2(in)382 5117 y(Chapter)30 b(4)f(is)h(simply)g(emitted)g(for)g(each)g(node.)g(Some)f(of)g(the)h (details)h(of)e(the)h(translation)382 5247 y(were)20 b(left)g(out)g(of)g(the)g(simple)h(model)f(of)g(the)h(JVM,)d(though,)k (and)e(will)g(instead)h(be)f(discussed)382 5377 y(here.)1831 5652 y(79)p eop end %%Page: 80 82 TeXDict begin 80 81 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a FP(5.5.1)99 b(Ov)o(erall)24 b(design)h(of)g(the)g(generated)i(code)382 739 y F2(Since)d(the)h(JVM)e(is)h(designed)j(to)d(support)i(classes)g (only)-6 b(,)25 b(we)e(need)i(to)f(structure)j(the)d(gener)n(-)382 869 y(ated)g(code)g(into)h(a)e(number)h(of)g(classes.)h(W)-7 b(e)22 b(follo)n(w)i(the)g(pattern)h(outlined)h(in)d(Figure)h(5.6.)681 2376 y @beginspecial 0 @llx 0 @lly 447 @urx 261 @ury 2869 @rwi @setspecial %%BeginDocument: implementation/images/class-diagram-generated.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: class-diagram-generated.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Tue May 13 14:47:56 2003 %%For: jasper@jkjnotebook (Jasper K. Juhl,,,) %%BoundingBox: 0 0 447 261 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 261 moveto 0 0 lineto 447 0 lineto 447 261 lineto closepath clip newpath -107.3 369.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw n 4125 2100 m 3975 2175 l 3750 2100 l 3975 2025 l 4125 2100 l cp gs col0 s gr % Polyline n 4125 2100 m 5100 2100 l gs col0 s gr % Polyline n 5100 2250 m 7050 2250 l gs col0 s gr % Polyline n 5100 1950 m 7050 1950 l 7050 3000 l 5100 3000 l cp gs col0 s gr % Polyline n 6075 3000 m 5925 3150 l 6225 3150 l 6075 3000 l cp gs col0 s gr % Polyline n 6075 3150 m 6075 4050 l gs col0 s gr % Polyline n 3525 4200 m 3525 4050 l 8325 4050 l 8325 4200 l gs col0 s gr % Polyline n 5700 4050 m 5700 4200 l gs col0 s gr % Polyline n 4650 4500 m 6600 4500 l gs col0 s gr % Polyline n 4650 5550 m 6600 5550 l gs col0 s gr % Polyline n 4650 4200 m 6600 4200 l 6600 6150 l 4650 6150 l cp gs col0 s gr % Polyline n 7275 4500 m 9225 4500 l gs col0 s gr % Polyline n 7275 5550 m 9225 5550 l gs col0 s gr % Polyline n 7275 4200 m 9225 4200 l 9225 6150 l 7275 6150 l cp gs col0 s gr % Polyline n 2550 4500 m 4500 4500 l gs col0 s gr % Polyline n 2550 5550 m 4500 5550 l gs col0 s gr % Polyline n 2550 4200 m 4500 4200 l 4500 6150 l 2550 6150 l cp gs col0 s gr % Polyline n 1800 3075 m 3750 3075 l gs col0 s gr % Polyline n 1800 1875 m 3750 1875 l 3750 3975 l 1800 3975 l cp gs col0 s gr % Polyline n 1800 2175 m 3750 2175 l gs col0 s gr /Helvetica-Narrow ff 180.00 scf sf 3900 1950 m gs 1 -1 sc (1) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4800 1950 m gs 1 -1 sc (1..*) col0 sh gr /Helvetica-Narrow-BoldOblique ff 180.00 scf sf 5850 2175 m gs 1 -1 sc (Type) col0 sh gr /Helvetica-Narrow-Oblique ff 180.00 scf sf 5250 2475 m gs 1 -1 sc (iterate\(\)) col0 sh gr /Helvetica-Narrow-Oblique ff 180.00 scf sf 5250 2700 m gs 1 -1 sc (printWatched\(\)) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 6825 4500 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 6975 4500 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 7125 4500 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 5325 4425 m gs 1 -1 sc (Type2) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4800 4725 m gs 1 -1 sc (iterate\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4800 4950 m gs 1 -1 sc (printWatched\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4800 5175 m gs 1 -1 sc (private _localFn1\(\)) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 5400 5250 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 5400 5325 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4800 5475 m gs 1 -1 sc (private _localFnN\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4800 5775 m gs 1 -1 sc (private _localVariable1) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 5400 5850 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 5400 5925 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 4800 6075 m gs 1 -1 sc (private _localVariableN) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 7950 4425 m gs 1 -1 sc (TypeN) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7425 4725 m gs 1 -1 sc (iterate\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7425 4950 m gs 1 -1 sc (printWatched\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7425 5175 m gs 1 -1 sc (private _localFn1\(\)) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 8025 5250 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 8025 5325 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7425 5475 m gs 1 -1 sc (private _localFnN\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7425 5775 m gs 1 -1 sc (private _localVariable1) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 8025 5850 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 8025 5925 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 7425 6075 m gs 1 -1 sc (private _localVariableN) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 3225 4425 m gs 1 -1 sc (Type1) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2700 4725 m gs 1 -1 sc (iterate\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2700 4950 m gs 1 -1 sc (printWatched\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2700 5175 m gs 1 -1 sc (private _localFn1\(\)) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 3300 5250 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 3300 5325 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2700 5475 m gs 1 -1 sc (private _localFnN\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2700 5775 m gs 1 -1 sc (private _localVariable1) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 3300 5850 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 3300 5925 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 2700 6075 m gs 1 -1 sc (private _localVariableN) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 1950 3300 m gs 1 -1 sc (static globalRandomObj) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 1950 2400 m gs 1 -1 sc (main\(\)) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 2400 2100 m gs 1 -1 sc (Scenario) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 1950 2625 m gs 1 -1 sc (static _globalFn1\(\)) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 2550 2775 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 2550 2700 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 1950 3000 m gs 1 -1 sc (static _globalFnN\(\)) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 1950 3525 m gs 1 -1 sc (static _globalVariable1) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 2550 3600 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold ff 180.00 scf sf 2550 3675 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow ff 180.00 scf sf 1950 3900 m gs 1 -1 sc (static _globalVariableN) col0 sh gr $F2psEnd rs %%EndDocument @endspecial 453 2574 a FQ(F)l(igur)m(e)d(5.6:)29 b(Overvie)o(w)22 b(of)f(the)h(design)f(of)g(the)h(classes)g(that)g(the)f(code)g(g)o (ener)o(ation)f(phase)h(pr)l(o-)453 2688 y(duces.)523 2891 y F2(One)32 b(class,)h(the)h(S)t F0(C)t(E)t(N)r(A)t(R)t(I)t(O)h F2(class,)e(contains)h(the)e F1(main)39 b F2(method)33 b(and)g(aggre)o(gates)h(a)382 3021 y(number)k(of)e FR(type)f F2(objects)k(through)g(the)e(abstract)j(T)t F0(Y)t(P)t(E)g F2(interf)o(ace.)f(The)d F1(main)44 b F2(method)382 3151 y(simply)22 b(enters)g(a)f(loop,)h(in)l(v)n(oking)i F1(iterate)29 b F2(and)22 b F1(printW)-7 b(atched)34 b F2(on)21 b(each)h(of)f(the)h FR(type)d F2(objects)382 3281 y(for)26 b(each)h(iteration.)h(All)d (global)j(functions)g(and)f(v)n(ariables)h(are)e(placed)h(as)f(static)h (members)382 3411 y(of)f(S)t F0(C)t(E)t(N)r(A)t(R)t(I)t(O)h F2(from)d(where)g(the)o(y)h(accessible)i(to)d(the)h(rest)f(of)g(the)h (classes.)h(The)f(R)t F0(A)t(N)t(D)t(O)t(M)382 3540 y F2(object)e(that)e(is)h(used)g(as)f(a)g(random)h(source)h(for)e(the)h (probabilistic)j(constructs)f(is)d(also)h(placed)382 3670 y(here.)523 3800 y(Since)f FR(type)f F2(objects)j(may)e(contain)i (local)f(v)n(ariables,)h(each)f FR(type)e F2(is)h(translated)j(to)d(a)g (class)382 3930 y(that)27 b(deri)n(v)o(es)h(from)f(the)i(T)t F0(Y)t(P)t(E)h F2(interf)o(ace.)f(Functions)f(and)f(v)n(ariables)i(in)e (the)g FR(type)e F2(are)i(then)382 4060 y(translated)k(to)c(pri)n(v)n (ate)j(methods)f(and)f(\002elds)h(in)e(the)i(class.)f(The)g F1(printW)-7 b(atched)41 b F2(method)29 b(is)382 4190 y(automatically)e(generated)f(to)d(output)i(the)f(v)n(alues)h(of)e(the) h(w)o(atched)h(v)n(ariables,)g(if)e(an)o(y)-6 b(.)382 4452 y FP(5.5.2)99 b(T)-7 b(ype)25 b(de\002nitions)382 4643 y F2(When)36 b(a)f(type)h(de\002nition)h(is)e(encountered,)k(the)d (code)g(generator)i(switches)f(output)g(to)e(a)382 4773 y(\002le)e(with)h(the)g(name)g(of)f(the)h(type,)h(emits)e(a)h(class)h (preamble)g(and)f(starts)h(processing)i(the)382 4903 y(de\002nitions)26 b(in)d(the)h(type.)g(F)o(or)e(e)o(xample)391 5059 y FR(t)9 b(y)g(p)g(e)64 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)51 b({)495 5174 y FR(i)13 b(n)g(t)67 b FY(b)17 b(;)503 5289 y(.)22 b(.)f(.)387 5403 y(})1831 5652 y F2(80)p eop end %%Page: 81 83 TeXDict begin 81 82 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a F2(is)23 b(translated)j(into)396 712 y FY(.)j FR(c)13 b(l)h(a)g(s)g(s)75 b(p)11 b(u)g(b)g(l)g(i)g(c)70 b FY(S)8 b(i)g(m)g(l)23 b(/)18 b(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)396 827 y(.)23 b FR(s)8 b(u)g(p)g(e)g(r)66 b FY(T)6 b(y)g(p)g(e)396 941 y(.)30 b FR(f)15 b(i)h(e)f(l)g(d)77 b(p)12 b(r)g(i)g(v)g(a)g(t)g(e) 64 b FY(b)h(I)523 1121 y F2(After)29 b(ha)n(ving)j(processed)f(the)f (contents)i(of)d(the)g(type)i(de\002nition)g(node,)f(the)f(output)i(is) 382 1251 y(then)24 b(again)g(redirected)j(to)c(the)j(S)t F0(C)t(E)t(N)r(A)t(R)t(I)t(O)g F2(class)e(\002le.)382 1518 y FP(5.5.3)99 b(V)-9 b(ariable)24 b(de\002nitions)382 1709 y F2(Although)34 b(the)f(JVM)f(model)h(in)f(Chapter)i(4)e(did)h (not)g(tak)o(e)h(it)e(into)h(account,)i(there)e(are)g(in)382 1839 y(f)o(act)25 b(three)g(dif)n(ferent)i(kinds)e(of)g(v)n(ariables)h (that)f(all)g(need)g(dif)n(ferent)i(JVM)c(code.)i(The)f(global)382 1968 y(v)n(ariables)j(are)e(speci\002ed)h(as)e(static)i(members)f(in)g (the)h(S)t F0(C)t(E)t(N)r(A)t(R)t(I)t(O)i F2(class,)d(the)g(v)n (ariables)i(de-)382 2098 y(\002ned)c(in)h FR(type)o F2(s)f(are)h (speci\002ed)h(as)e(pri)n(v)n(ate)i(members)f(in)f(the)h(corresponding) k FR(type)22 b F2(class)i(and)382 2228 y(v)n(ariables)30 b(that)f(are)f(local)h(to)f(functions)i(are)f(simply)f(gi)n(v)o(en)h(a) f(unique)h(of)n(fset)g(in)f(the)h(corre-)382 2358 y(sponding)d (function.)523 2488 y(So)g(when)g(the)g(abstract)j(syntax)f(tree)e(is)g (tra)n(v)o(ersed,)j(each)e(v)n(ariable)h(de\002nition)g(is)e(deco-)382 2618 y(rated)e(with)g(the)g(v)n(ariable)h(kind)f(and)g(either)h(the)f (local)g(v)n(ariable)h(of)n(fset)g(or)e(the)h(class)h(name.)523 2748 y(V)-10 b(ariable)31 b(de\002nitions)g(where)f(the)f(v)n(ariable)i (is)f(assigned)h(an)f(initial)g(v)n(alue)g(are)g(for)g(the)382 2877 y(\002rst)d(tw)o(o)h(kinds)g(translated)j(into)d(assignments)i(in) e(the)g(class)h(constructors.)i(F)o(or)26 b(e)o(xample,)382 3007 y(if)d(the)h(pre)n(vious)i(e)o(xample)e(is)f(re)n(written)i(to)391 3172 y FR(t)9 b(y)g(p)g(e)64 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)51 b({)495 3286 y FR(i)13 b(n)g(t)67 b FY(b)53 b(=)48 b(1)14 b(0)g(0)f(;)503 3401 y(.)22 b(.)f(.)387 3515 y(})382 3695 y F2(the)j(constructor)i(for)e(the)g(class)g(is)g(then)g(emitted)h (as)396 3859 y FY(.)19 b FR(m)t(e)t(t)t(h)t(o)t(d)51 b FY(<)23 b(i)15 b(n)f(i)h(t)41 b(>)12 b(\()g(\))6 b(V)446 3974 y(.)28 b FR(l)14 b(i)g(m)g(i)g(t)74 b(s)11 b(t)g(a)g(c)g(k)55 b FY(2)446 4089 y(.)28 b FR(l)14 b(i)g(m)g(i)g(t)78 b(l)14 b(o)g(c)g(a)g(l)h(s)60 b FY(1)441 4318 y FR(a)9 b(l)g(o)g(a)g(d)g(_)g (0)444 4432 y(i)j(n)g(v)g(o)g(k)g(e)g(s)g(p)g(e)g(c)g(i)g(a)g(l)77 b FY(j)12 b(a)g(v)g(a)26 b(/)e(l)11 b(a)g(n)g(g)25 b(/)f(O)11 b(b)g(j)g(e)g(c)g(t)19 b(/)14 b(<)23 b(i)14 b(n)h(i)f(t)42 b(>)12 b(\()g(\))5 b(V)441 4547 y FR(a)k(l)g(o)g(a)g(d)g(_)g(0)443 4661 y(l)i(d)g(c)59 b FY(1)13 b(0)g(0)956 b FQ(;)65 b(b)46 b(=)d(1)11 b(0)g(0)445 4776 y FR(p)j(u)g(t)g(f)g(i)g(e)g(l)g(d)64 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)18 b(/)g(b)64 b(I)441 4891 y FR(r)10 b(e)g(t)g(u)g(r)g(n)396 5005 y FY(.)20 b FR(e)5 b(n)g(d)59 b(m)t(e)t(t)t(h)t(o)t(d)1831 5652 y F2(81)p eop end %%Page: 82 84 TeXDict begin 82 83 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a FP(5.5.4)99 b(V)-9 b(ariable)24 b(lookup)382 739 y F2(When)31 b(a)f(v)n(ariable)i (is)e(referenced)j(in)e(a)f(statement)i(or)e(an)h(e)o(xpression,)h(the) f(pointer)h(to)f(the)382 869 y(v)n(ariable)i(de\002nition)g(\(or)f(to)f (a)g(v)n(ariable)i(declaration)i(and)d(then)g(to)f(the)h (de\002nition\))h(is)e(fol-)382 999 y(lo)n(wed,)23 b(and)h(the)g (output)h(then)f(determined)i(by)e(the)g(kind)g(of)f(v)n(ariable)j (de\002nition.)523 1129 y(Global)38 b(v)n(ariables)h(are)e(accessed)i (with)d(the)k F0(G)t(E)t(T)t(S)t(T)m(A)l(T)t(I)t(C)j F2(and)c F0(P)t(U)t(T)t(S)t(T)m(A)l(T)t(I)t(C)44 b F2(instruc-)382 1259 y(tions.)30 b(T)-7 b(ype)30 b(speci\002c)h(v)n(ariables)h(are)d (accessed)j(with)e(the)i F0(G)t(E)t(T)t(FI)t(E)t(L)t(D)k F2(and)c F0(P)t(U)t(T)t(FI)t(E)t(L)t(D)k F2(in-)382 1388 y(structions.)25 b(Local)e(v)n(ariables)h(are)f(simply)g(accessed)i (with)f F0(L)t(O)r(A)t(D)g F2(and)h F0(S)t(T)s(O)t(R)t(E)h F2(instructions)382 1518 y(and)e(the)g(computed)h(of)n(fset)f(as)g (speci\002ed)h(in)e(Chapter)i(4.)523 1648 y(F)o(or)e(e)o(xample,)h(the) g(code)395 1812 y FR(i)13 b(n)g(t)70 b FY(a)19 b(;)391 1927 y FR(t)9 b(y)g(p)g(e)64 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)51 b({)495 2042 y FR(i)13 b(n)g(t)67 b FY(b)17 b(;)491 2156 y FR(v)9 b(o)g(i)g(d)71 b FY(f)25 b(\()15 b(\))487 2271 y({)594 2385 y FR(i)e(n)g(t)70 b FY(c)20 b(;)588 2500 y(a)59 b(=)52 b(1)16 b(;)585 2614 y(b)57 b(=)52 b(2)16 b(;)588 2729 y(c)59 b(=)52 b(3)16 b(;)487 2844 y(})503 2958 y(.)22 b(.)f(.)387 3073 y(})382 3252 y F2(causes)k(the)f(body)g (of)29 b FY(f)e F2(to)c(be)h(translated)i(to)443 3417 y FR(l)11 b(d)g(c)56 b FY(1)446 3531 y FR(p)14 b(u)g(t)f(s)i(t)e(a)h(t) f(i)h(c)76 b FY(S)12 b(c)g(e)g(n)g(a)g(r)g(i)g(o)24 b(/)c(a)67 b(I)171 b FQ(;)71 b(l)10 b(o)g(o)g(k)g(u)g(p)65 b(a)g(i)12 b(n)72 b(S)11 b(c)g(e)g(n)g(a)g(r)g(i)g(o)443 3646 y FR(l)g(d)g(c)56 b FY(2)441 3760 y FR(a)9 b(l)g(o)g(a)g(d)g(_)g(0)445 3875 y(p)14 b(u)g(t)g(f)g(i)g(e)g(l)g(d)64 b FY(S)t(o)t(m)t(e)t(T)t(y)t (p)t(e)18 b(/)g(b)64 b(I)221 b FQ(;)71 b(l)10 b(o)g(o)g(k)g(u)g(p)65 b(b)g(i)12 b(n)73 b(c)13 b(u)g(r)g(r)g(e)g(n)g(t)77 b(o)14 b(b)g(j)g(e)g(c)g(t)443 3990 y FR(l)d(d)g(c)56 b FY(3)446 4104 y FR(i)15 b(s)f(t)g(o)g(r)g(e)69 b FY(1)861 b FQ(;)71 b(l)10 b(o)g(o)g(k)g(u)g(p)67 b(c)h(i)12 b(n)74 b(l)14 b(o)g(c)f(a)h(l)77 b(v)14 b(a)g(r)g(i)g(a)f(b)h(l)g(e)f(s)382 4421 y FP(5.5.5)99 b(Function)26 b(de\002nitions)382 4612 y F2(A)21 b(function)k(de\002nition)f(is)e(translated)j(into)e(a)f (header)l(,)i(tw)o(o)e(strings)i(de\002ning)f(the)g(maximum)382 4742 y(number)29 b(of)f(local)g(v)n(ariables)i(and)f(the)f(maximum)g (height)h(of)f(the)g(stack,)h(and)f(the)h(function)382 4872 y(body)-6 b(.)19 b(Also,)f(for)h FR(v)o(oid)e F2(functions,)k(a)f F0(R)t(E)t(T)t(U)t(R)t(N)i F2(instruction)f(is)e(placed)h(as)e(the)h (last)g(instruction)382 5001 y(of)k(the)h(body)-6 b(.)25 b(F)o(or)d(e)o(xample,)i(the)g(code)391 5166 y FR(t)9 b(y)g(p)g(e)64 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)51 b({)503 5280 y(.)22 b(.)f(.)491 5395 y FR(v)9 b(o)g(i)g(d)71 b FY(f)25 b(\()15 b(\))1831 5652 y F2(82)p eop end %%Page: 83 85 TeXDict begin 83 84 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 487 548 a FY({)594 663 y FR(i)13 b(n)g(t)68 b FY(b)52 b(=)d(2)14 b(0)f(0)h(;)487 777 y(})503 892 y(.)22 b(.)f(.)387 1006 y(})382 1186 y F2(is)i(translated)j(into)396 1350 y FY(.)j FR(c)13 b(l)h(a)g(s)g(s)68 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)404 1465 y(.)21 b(.)h(.)396 1579 y(.)d FR(m)t(e)t(t)t(h)t(o)t(d)67 b FY(f)26 b(\()14 b(\))c(V)446 1694 y(.)28 b FR(l)14 b(i)g(m)g(i)g(t)74 b(s)11 b(t)g(a)g(c)g(k)63 b FY(1)214 b FQ(;)64 b(m)s(a)s(x)g(h)13 b(e)g(i)g(g)g(h)g(t)74 b(o)12 b(f)73 b(s)13 b(t)g(a)g(c)g(k)446 1809 y FY(.)28 b FR(l)14 b(i)g(m)g(i)g(t)78 b(l)14 b(o)g(c)g(a)g(l)h(s)68 b FY(1)164 b FQ(;)64 b(m)s(a)s(x)58 b(n)6 b(u)g(m)g(b)g(e)g(r)69 b(o)12 b(f)74 b(l)14 b(o)f(c)h(a)g(l)77 b(v)14 b(a)f(r)i(i)f(a)f(b)h(l) g(e)f(s)443 2038 y FR(l)e(d)g(c)52 b FY(2)11 b(0)g(0)446 2152 y FR(i)k(s)f(t)g(o)g(r)g(e)60 b FY(1)441 2267 y FR(r)10 b(e)g(t)g(u)g(r)g(n)396 2381 y FY(.)20 b FR(e)5 b(n)g(d)59 b(m)t(e)t(t)t(h)t(o)t(d)382 2698 y FP(5.5.6)99 b(Function)26 b(call)382 2889 y F2(Since)31 b(global)i(functions)h (reside)e(as)f(static)i(members)e(of)h(the)h(S)t F0(C)t(E)t(N)r(A)t(R)t (I)t(O)h F2(class)e(whereas)382 3019 y(type-speci\002c)f(functions)f (are)f(in)f(the)g FR(type)e F2(classes,)k(we)d(need)i(to)f(generate)i (dif)n(ferent)g(code)382 3149 y(for)24 b(each)g(of)f(the)h(cases.)g(F)o (or)f(the)h(static)h(members,)g F0(I)t(N)t(V)q(O)t(K)t(E)t(S)t(T)m(A)l (T)t(I)t(C)30 b F2(is)24 b(used,)g(e.g.)395 3313 y FR(i)13 b(n)g(t)67 b FY(g)15 b(\()24 b FR(i)13 b(n)g(t)67 b FY(x)36 b(\))387 3428 y({)491 3542 y FR(r)10 b(e)g(t)g(u)g(r)g(n)62 b FY(x)15 b FN(\003)c FY(2)g(;)387 3657 y(})391 3886 y FR(t)e(y)g(p)g(e)64 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)51 b({)503 4001 y(.)22 b(.)f(.)491 4115 y FR(v)9 b(o)g(i)g(d)71 b FY(f)25 b(\()15 b(\))487 4230 y({)594 4344 y FR(i)e(n)g(t)68 b FY(b)55 b(=)g(g)17 b(\()d(2)g(0)g(0)g(\))g(;)487 4459 y(})387 4573 y(})382 4753 y F2(where)24 b(the)g(body)g(of)k FY(f)g F2(becomes)443 4917 y FR(l)11 b(d)g(c)52 b FY(2)11 b(0)g(0)445 5032 y FR(i)i(n)g(v)g(o)g(k)g(e)g(s)g(t)g(a)g(t)g(i)g(c)70 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)17 b(/)h(g)d(\()21 b(I)28 b(\))66 b(I)446 5147 y FR(i)15 b(s)f(t)g(o)g(r)g(e)60 b FY(1)441 5261 y FR(r)10 b(e)g(t)g(u)g(r)g(n)1831 5652 y F2(83)p eop end %%Page: 84 86 TeXDict begin 84 85 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 523 548 a F2(F)o(or)31 b(the)h(others,)h(the)f(speci\002c)g FR(type)e F2(object)k(reference)g (must)d(\002rst)h(be)f(pushed)j(on)e(the)382 678 y(stack)24 b(and)g(then)j F0(I)t(N)t(V)q(O)t(K)t(E)t(V)t(I)t(RT)t(U)q(A)t(L)h F2(is)c(used.)g(F)o(or)f(instance)391 842 y FR(t)9 b(y)g(p)g(e)64 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)51 b({)503 957 y(.)22 b(.)f(.)495 1071 y FR(i)13 b(n)g(t)67 b FY(g)15 b(\()24 b FR(i)13 b(n)g(t)67 b FY(x)35 b(\))11 b({)591 1186 y FR(r)f(e)g(t)g(u)g(r)g(n)62 b FY(x)15 b FN(\003)c FY(2)g(;)487 1300 y(})491 1530 y FR(v)e(o)g(i)g(d)71 b FY(f)25 b(\()15 b(\))487 1644 y({)585 1759 y(g)j(\()c(2)g(0)g(0)g(\))g(;)487 1873 y(})387 1988 y(})382 2168 y F2(where)24 b(the)g(body)g(of)k FY(f)g F2(becomes)441 2332 y FR(a)9 b(l)g(o)g(a)g(d)g(_)g(0)443 2446 y(l)i(d)g(c)52 b FY(2)11 b(0)g(0)444 2561 y FR(i)h(n)g(v)g(o)g(k)g (e)g(v)g(i)g(r)g(t)g(u)g(a)g(l)68 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)18 b(/)g(g)c(\()22 b(I)28 b(\))66 b(I)436 2676 y FR(p)t(o)t(p)441 2790 y(r)10 b(e)g(t)g(u)g(r)g(n)382 2970 y F2(If)23 b(the)g(function)i (call)f(is)e(a)h(statement)i(and)e(the)h(function)h(is)e(non-)p FR(v)o(oid)q F2(,)f(we)g(must)h(also)g(emit)g(a)384 3100 y F0(P)t(O)t(P)j F2(to)e(clear)g(up)g(the)g(stack)g(from)g(the)g (return)g(v)n(alue.)523 3230 y(As)30 b(a)g(special)j(case,)e(the)g(b)n (uilt-in)55 b FY(intify)c F2(and)61 b FY(\003oatify)d F2(are)31 b(translated)j(directly)e(into)382 3359 y(the)24 b(instructions)29 b F0(F)t F2(2)t F0(I)e F2(and)f F0(I)t F2(2)t F0(F)h F2(respectly)-6 b(.)382 3626 y FP(5.5.7)99 b(Enumerations)382 3817 y F2(When)24 b(an)h FR(enum)f F2(de\002nition)i(is)e(encountered,)j(a)d(unique)i(inte)o(ger)g(v)n (alue)f(is)f(associated)j(with)382 3947 y(each)f(enumerand)h(by)f (resetting)h(a)e(counter)i(to)f(one)f(and)h(incrementing)i(it)d(by)h (one)g(for)f(each)382 4077 y(enumerand.)523 4207 y(The)34 b(conte)o(xtual)k(analysis)f(phase)e(has)h(already)g(established)i (pointers)f(from)e(the)g(oc-)382 4337 y(curences)d(of)e(enumerands)i (in)e(e)o(xpressions)j(to)d(the)h FR(enum)e F2(de\002nitions,)j(so)e (when)g(an)g(enu-)382 4466 y(merand)20 b(is)f(encountered,)j(the)d (pointer)i(is)e(simply)h(follo)n(wed)g(and)f(the)h(enumerand)h(e)n(v)n (aluated)382 4596 y(to)i(its)h(associated)i(inte)o(ger)-5 b(.)25 b(F)o(or)e(e)o(xample,)h(for)382 4761 y FR(enum)51 b FY(E)j({)d(A)12 b(,)57 b(B)51 b(})16 b(;)391 4875 y FR(v)9 b(o)g(i)g(d)71 b FY(f)26 b(\()14 b(\))387 4990 y({)481 5104 y(E)53 b(x)i(=)46 b(A)9 b(;)481 5219 y(E)53 b(y)i(=)49 b(B)11 b(;)387 5334 y(})1831 5652 y F2(84)p eop end %%Page: 85 87 TeXDict begin 85 86 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a F2(the)24 b(body)g(of)29 b FY(f)e F2(is)c(translated)j(to)443 712 y FR(l)11 b(d)g(c)64 b FY(1)264 b FQ(;)60 b(A)k(i)15 b(s)60 b(1)446 827 y FR(i)15 b(s)f(t)g(o)g(r)g(e)60 b FY(1)443 941 y FR(l)11 b(d)g(c)64 b FY(2)264 b FQ(;)60 b(B)k(i)15 b(s)60 b(2)446 1056 y FR(i)15 b(s)f(t)g(o)g(r)g(e)60 b FY(2)441 1171 y FR(r)10 b(e)g(t)g(u)g(r)g(n)382 1487 y FP(5.5.8)99 b(Import)382 1678 y F2(When)21 b(an)g(import)g(node)h(is) f(encountered,)j(the)d(e)o(xtra)h(imported)g(abstract)h(syntax)f(tree)g (which)382 1808 y(is)f(rooted)i(in)e(the)g(node)h(is)f(tra)n(v)o(ersed) j(before)e(continuing)j(so)c(that)g(code)h(is)f(generated)j(for)e(the) 382 1938 y(functions)k(and)e(types)h(in)e(the)h(imported)h(\002le)e (and)h(the)g(v)n(ariable)h(de\002nitions)h(are)d(visited.)382 2205 y FP(5.5.9)99 b(Cr)n(eate)26 b(statements)382 2396 y F2(The)32 b FR(cr)o(eate)e F2(statements)h(are)d(translated)j(into)e (loops)g(in)g(the)h(S)t F0(C)t(E)t(N)r(A)t(R)t(I)t(O)h F2(constructor)g(that)382 2526 y(construct)d(the)d(needed)i(number)f (of)f FR(type)f F2(objects)j(and)f(insert)g(them)f(into)h(the)g(object) g(list)g(so)382 2655 y(that)e F1(iterate)32 b F2(and)24 b F1(printW)-7 b(atched)36 b F2(can)24 b(later)h(be)e(in)l(v)n(ok)o(ed) j(on)e(them.)f(F)o(or)g(e)o(xample)390 2820 y FR(i)8 b(m)g(p)g(o)g(r)g(t)57 b FY(")19 b(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)f(.)k (m)7 b(o)g(d)g(e)g(l)13 b(")404 2934 y(.)21 b(.)h(.)394 3049 y FR(c)12 b(r)g(e)g(a)g(t)g(e)59 b FY(1)15 b(0)60 b FR(o)10 b(f)64 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)20 b(\()15 b(1)h(\))f(;)382 3229 y F2(is)23 b(translated)j(into)f(the)e (follo)n(wing)i(in)f(the)g(constructor)-5 b(.)443 3393 y FR(l)11 b(d)g(c)54 b FY(1)11 b(0)400 3508 y(s)18 b(t)f(a)h(r)f(t)31 b(:)434 3622 y FR(d)s(u)s(p)445 3737 y(i)13 b(f)g(e)g(q)70 b FY(d)8 b(o)g(n)g(e)18 b(:)447 3851 y FR(g)d(e)g(t)g(s)h(t)f(a)f(t)h (i)h(c)77 b FY(S)12 b(c)g(e)g(n)g(a)g(r)g(i)g(o)24 b(/)j(t)14 b(y)g(p)f(e)h(L)g(i)g(s)h(t)76 b(j)12 b(a)g(v)g(a)25 b(/)31 b(u)17 b(t)h(i)g(l)31 b(/)26 b(A)13 b(r)g(r)g(a)g(y)g(L)g(i)g(s) g(t)19 b FQ(;)433 3966 y FR(n)r(e)r(w)55 b FY(S)t(o)t(m)t(e)t(T)t(y)t (p)t(e)434 4080 y FR(d)s(u)s(p)443 4195 y(l)11 b(d)g(c)56 b FY(1)444 4310 y FR(i)12 b(n)g(v)g(o)g(k)g(e)g(s)g(p)g(e)g(c)g(i)g(a)g (l)69 b FY(S)t(o)t(m)t(e)t(T)t(y)t(p)t(e)12 b(/)j(<)22 b(i)15 b(n)f(i)h(t)38 b(>)8 b(\()19 b(I)j(\))6 b(V)444 4424 y FR(i)12 b(n)g(v)g(o)g(k)g(e)g(v)g(i)g(r)g(t)g(u)g(a)g(l)76 b FY(j)12 b(a)g(v)g(a)26 b(/)31 b(u)17 b(t)h(i)g(l)31 b(/)26 b(A)13 b(r)g(r)g(a)g(y)g(L)g(i)g(s)g(t)21 b(/)g(a)7 b(d)g(d)18 b(\()j(L)10 b(j)g(a)g(v)g(a)22 b(/)j(l)11 b(a)g(n)g(g)24 b(/)j(o)14 b(b)g(j)g(e)g(c)g(t)23 b(\))10 b(Z)436 4539 y FR(p)t(o)t(p)443 4653 y(l)h(d)g(c)44 b FN(\000)5 b FY(1)442 4768 y FR(i)10 b(s)g(u)g(b)441 4882 y(g)f(o)g(t)g(o)76 b FY(s)18 b(t)g(a)g(r)f(t)389 4997 y(d)8 b(o)g(n)g(e)19 b(:)1831 5652 y F2(85)p eop end %%Page: 86 88 TeXDict begin 86 87 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a FP(5.5.10)99 b(Declarations)382 739 y F2(Declarations)30 b(are)d(only)i(rele)n(v)n (ant)f(in)g(the)f(conte)o(xtual)j(analysis)g(phase)e(and)g(are)g (simply)g(ig-)382 869 y(nored)d(by)e(the)h(code)g(generator)-5 b(.)382 1184 y FS(5.6)119 b(Connecting)31 b(the)g(phases)382 1408 y F2(The)21 b FY(main)e F2(function)24 b(of)d(the)h(compiler)g(is) f(sho)n(wn)h(belo)n(w)-6 b(,)21 b(and)h(pro)o(vides)h(an)f(o)o(v)o (ervie)n(w)f(of)h(the)382 1538 y(phases)j(and)f(ho)n(w)f(the)o(y)h(use) g(and)g(modify)g(the)g(abstract)h(syntax)h(tree.)395 1702 y FR(i)13 b(n)g(t)70 b FY(m)7 b(a)g(i)g(n)15 b(\()24 b FR(i)13 b(n)g(t)73 b FY(a)9 b(r)g(g)g(c)38 b(,)67 b FR(c)8 b(h)g(a)g(r)18 b FN(\003)57 b FY(a)12 b(r)g(g)g(s)29 b([)16 b(])h(\))387 1817 y({)498 1931 y FR(i)f(f)71 b FY(\()28 b(a)11 b(r)g(g)g(c)67 b(<)12 b(=)44 b(1)12 b(\))591 2046 y FR(r)e(e)g(t)g(u)g(r)g(n)61 b FY(1)15 b(;)494 2275 y(S)d(i)g(m)g(u)g(l)g(a)g(t)g(i)g(o)g(n)57 b FN(\003)21 b FY(c)8 b(s)g(i)g(m)61 b(=)g(r)10 b(d)g(p)25 b(:)18 b(:)32 b(p)14 b(a)g(r)g(s)g(e)g(r)22 b(\()h(a)12 b(r)g(g)g(s)29 b([)17 b(1)f(])h(\))f(;)498 2504 y FR(i)g(f)71 b FY(\()25 b(c)8 b(s)g(i)g(m)58 b(=)14 b(=)47 b(0)14 b(\))591 2619 y FR(r)c(e)g(t)g(u)g(r)g(n)61 b FY(1)15 b(;)495 2848 y(D)f(e)g(c)g(o)g(r)g(a)g(t)g(e)g(V)g(i)g(s)g(i)g(t)f(o)h(r)61 b(v)14 b(\()23 b(a)12 b(r)g(g)g(s)29 b([)17 b(1)f(])h(\))f(;)496 2962 y(p)e(o)f(p)h(u)g(l)g(a)g(t)h(e)f(_)g(i)g(d)g(e)g(n)g(t)g(_)g(t)g (a)h(b)e(l)i(e)h(\()r(&)7 b(v)20 b(\))15 b(;)486 3077 y(v)j(.)32 b(v)17 b(i)h(s)g(i)f(t)29 b(\()20 b(c)8 b(s)g(i)g(m)26 b(\))16 b(;)495 3306 y(B)e(u)g(g)g(f)g(i)g(n)g(d)g(e)g(r)f(V)h(i)f(s)h (i)g(t)f(o)g(r)67 b(b)10 b(f)g(v)19 b(\()k(a)12 b(r)g(g)g(s)29 b([)16 b(1)h(])f(\))h(;)491 3421 y(b)10 b(f)g(v)22 b(.)32 b(v)18 b(i)f(s)h(i)g(t)29 b(\()19 b(c)8 b(s)g(i)g(m)26 b(\))16 b(;)498 3535 y FR(i)g(f)71 b FY(\()26 b(b)10 b(f)g(v)23 b(.)29 b(h)14 b(a)h(l)g(t)31 b(\))51 b({)594 3650 y(s)13 b(t)g(d)31 b(:)18 b(:)32 b(c)14 b(e)g(r)g(r)62 b(<)18 b(<)47 b(")23 b(e)14 b(r)h(r)g(o)f(r)h(s)73 b(f)8 b(o)g(u)g(n)g(d)33 b(,)61 b(n)r(o)r(w)i(t)14 b(e)g(r)g(m)g(i)g(n)g(a)g (t)g(i)g(n)g(g)j(")56 b(<)18 b(<)52 b(s)13 b(t)g(d)31 b(:)18 b(:)30 b(e)11 b(n)g(d)g(l)24 b(;)591 3764 y FR(r)10 b(e)g(t)g(u)g(r)g(n)61 b FY(1)15 b(;)487 3879 y(})493 4108 y(G)c(e)g(n)g(c)g(o)g(d)g(e)g(V)g(i)g(s)g(i)g(t)g(o)g(r)72 b(g)7 b(c)g(v)21 b(;)489 4223 y(g)7 b(c)g(v)21 b(.)32 b(v)18 b(i)f(s)h(i)g(t)29 b(\()19 b(c)8 b(s)g(i)g(m)26 b(\))16 b(;)491 4452 y FR(r)10 b(e)g(t)g(u)g(r)g(n)61 b FY(0)16 b(;)387 4566 y(})523 4746 y F2(The)32 b(compilation)i(is)e (started)h(by)g(running)h(the)e(compiler)h(with)f(the)g(source)i (program)382 4876 y(as)26 b(its)g(only)g(parameter)l(,)i(the)e(other)h (parameters)h(are)e(simply)g(ignored.)i FW(rdp)c F2(is)h(in)l(v)n(ok)o (ed)k(on)382 5006 y(the)g(source)g(program,)h(which)e(returns)i(a)g(S)t F0(I)t(M)t(U)t(L)t(A)l(T)t(I)t(O)t(N)j F2(object)d(representing)i(the)c (source)382 5136 y(program.)523 5265 y(If)21 b(for)h(some)f(reason)i FW(rdp)c F2(f)o(ails)k(to)e(parse)h(the)g(source)h(program,)f(it)g (will)f(return)h(null)g(and)382 5395 y(the)f(compilation)h(is)f (halted.)g(Before)g(the)g(conte)o(xtual)i(analysis)f(is)e(started)i (the)f(identi\002cation)1831 5652 y(86)p eop end %%Page: 87 89 TeXDict begin 87 88 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 382 548 a F2(table)21 b(is)g(populated)i(with)e(the)g(b)n(uilt-in)i(functions)45 b FY(intify)26 b(\()19 b FR(\003oat)g FY(\))24 b F2(and)51 b FY(\003oatify)33 b(\()12 b FR(int)h FY(\))t F2(.)20 b(After)382 678 y(running)28 b(the)d(conte)o(xtual)k(analysis,)e(the)f (b)n(ug)h(\002nder)e(is)h(initiated)i(and)e(will)f(\002nd)g(and)i (report)382 808 y(an)o(y)h(error)h(mark)o(ed)h(by)e(the)g(conte)o (xtual)j(analysis.)f(Lastly)-6 b(,)29 b(if)f(the)g(b)n(ug)h(\002nder)g (did)g(not)f(\002nd)382 937 y(an)o(y)c(errors,)g(the)g(code)g (generator)i(is)e(started,)g(outputting)j(Jasmin)d(assembler)h (\002les.)382 1253 y FS(5.7)119 b(Conclusion)382 1476 y F2(An)23 b(o)o(v)o(ervie)n(w)h(of)f(ho)n(w)g(e)n(v)o(erything)j (\002ts)d(together)j(is)d(pro)o(vided)j(in)d(Figure)h(5.7.)681 3251 y @beginspecial 0 @llx 0 @lly 660 @urx 457 @ury 2869 @rwi @setspecial %%BeginDocument: implementation/images/proces-overview.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: proces-overview.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Wed May 14 14:12:09 2003 %%For: jasper@blade23.cs.auc.dk (Jasper Kjersgaard Juhl) %%BoundingBox: 0 0 660 457 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 457 moveto 0 0 lineto 660 0 lineto 660 457 lineto closepath clip newpath -48.8 531.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /reencdict 12 dict def /ReEncode { reencdict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop 128 1 255 { newfont /Encoding get exch /.notdef put } for newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat newfontname newfont definefont pop end } def /isovec [ 8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron 8#220 /dotlessi 8#230 /oe 8#231 /OE 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot 8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def /Helvetica-Bold /Helvetica-Bold-iso isovec ReEncode /Helvetica-Narrow /Helvetica-Narrow-iso isovec ReEncode /Times-Roman /Times-Roman-iso isovec ReEncode /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-BoldOblique-iso isovec ReEncode /Helvetica-Narrow-Oblique /Helvetica-Narrow-Oblique-iso isovec ReEncode /Helvetica-Narrow-Bold /Helvetica-Narrow-Bold-iso isovec ReEncode /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % /Helvetica-Narrow-iso ff 75.00 scf sf 9376 7295 m gs 1 -1 sc (private _localVariable1) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 9583 7322 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 9583 7348 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9376 7399 m gs 1 -1 sc (private _localVariableN) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9117 6442 m gs 1 -1 sc (static globalRandomObj) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9117 6133 m gs 1 -1 sc (main\(\)) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 9274 6028 m gs 1 -1 sc (Scenario) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9117 6210 m gs 1 -1 sc (static _globalFn1\(\)) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 9324 6261 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 9324 6235 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9117 6338 m gs 1 -1 sc (static _globalFnN\(\)) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9117 6520 m gs 1 -1 sc (static _globalVariable1) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 9324 6546 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 9324 6572 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9117 6649 m gs 1 -1 sc (static _globalVariableN) col0 sh gr % Polyline 7.500 slw n 9030 5625 m 9000 5625 9000 7470 30 arcto 4 {pop} repeat 9000 7500 11662 7500 30 arcto 4 {pop} repeat 11692 7500 11692 5655 30 arcto 4 {pop} repeat 11692 5625 9030 5625 30 arcto 4 {pop} repeat cp gs col0 s gr /Helvetica-Narrow-iso ff 75.00 scf sf 9376 7192 m gs 1 -1 sc (private _localFnN\(\)) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 11186 6830 m gs 1 -1 sc (TypeN) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 11004 6934 m gs 1 -1 sc (iterate\(\)) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 11004 7012 m gs 1 -1 sc (printWatched\(\)) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 11004 7089 m gs 1 -1 sc (private _localFn1\(\)) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 11212 7115 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 11212 7140 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 11004 7192 m gs 1 -1 sc (private _localFnN\(\)) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 11004 7295 m gs 1 -1 sc (private _localVariable1) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 11212 7322 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 11212 7348 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 11004 7399 m gs 1 -1 sc (private _localVariableN) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 9557 6830 m gs 1 -1 sc (Type1) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9376 6934 m gs 1 -1 sc (iterate\(\)) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9376 7012 m gs 1 -1 sc (printWatched\(\)) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9376 7089 m gs 1 -1 sc (private _localFn1\(\)) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 9583 7115 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 9583 7140 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Bold-iso ff 210.00 scf sf 9600 5850 m gs 1 -1 sc (Java bytecode) col0 sh gr /Helvetica-Bold-iso ff 210.00 scf sf 4875 6600 m gs 1 -1 sc (Java virtual machine) col0 sh gr /Helvetica-Bold-iso ff 210.00 scf sf 1650 2100 m gs 1 -1 sc (Source code) col0 sh gr /Helvetica-Bold-iso ff 210.00 scf sf 5925 1425 m gs 1 -1 sc (Compiler) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 1800 m gs 1 -1 sc (ldc 1) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 1980 m gs 1 -1 sc (istore 2) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 2160 m gs 1 -1 sc (start:) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 2340 m gs 1 -1 sc (getstatic Scenario/typeList ...util/LinkedList) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 2520 m gs 1 -1 sc (invokevirtual java/util/LinkedList/iterator\(\)) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 2700 m gs 1 -1 sc (innerloop:) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 2880 m gs 1 -1 sc (dup) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 3060 m gs 1 -1 sc (dup) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 3240 m gs 1 -1 sc (invokeinterface ...util/Iterator/hasNext\(\)Z) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 3420 m gs 1 -1 sc (ifeq innerloop-end) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 3600 m gs 1 -1 sc (invokeinterface ...util/Iterator/next\(\)Object) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 3780 m gs 1 -1 sc (iload 2) col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 9225 3960 m gs 1 -1 sc (invokevirtaul Type/iterate\(I\)V) col0 sh gr /Helvetica-Bold-iso ff 210.00 scf sf 9600 1425 m gs 1 -1 sc (Java assembler) col0 sh gr /Helvetica-Bold-iso ff 210.00 scf sf 1650 5550 m gs 1 -1 sc (External libraries) col0 sh gr % Polyline n 9165 4575 m 9075 4575 9075 5085 90 arcto 4 {pop} repeat 9075 5175 11535 5175 90 arcto 4 {pop} repeat 11625 5175 11625 4665 90 arcto 4 {pop} repeat 11625 4575 9165 4575 90 arcto 4 {pop} repeat cp gs col0 s gr /Helvetica-Bold-iso ff 210.00 scf sf 9975 4950 m gs 1 -1 sc (Jasmin) col0 sh gr % Polyline n 4800 7788 m 7050 7788 l 7050 8850 l 4800 8850 l cp gs col0 s gr /Helvetica-Bold-iso ff 210.00 scf sf 5625 8550 m gs 1 -1 sc (result) col0 sh gr /Helvetica-Bold-iso ff 210.00 scf sf 5400 8250 m gs 1 -1 sc (Execution) col0 sh gr % Polyline 15.000 slw gs clippath 9015 3165 m 9015 2985 l 8851 2985 l 8986 3075 l 8851 3165 l cp eoclip n 8025 3075 m 9000 3075 l gs col0 s gr gr % arrowhead n 8851 3165 m 8986 3075 l 8851 2985 l col0 s % Polyline gs clippath 4590 6615 m 4590 6435 l 4426 6435 l 4561 6525 l 4426 6615 l cp eoclip n 3600 6525 m 4575 6525 l gs col0 s gr gr % arrowhead n 4426 6615 m 4561 6525 l 4426 6435 l col0 s % Polyline n 4815 6075 m 4725 6075 4725 6960 90 arcto 4 {pop} repeat 4725 7050 7035 7050 90 arcto 4 {pop} repeat 7125 7050 7125 6165 90 arcto 4 {pop} repeat 7125 6075 4815 6075 90 arcto 4 {pop} repeat cp gs col0 s gr % Polyline 7.500 slw n 1500 5700 m 3225 5700 l 3225 7500 l 1500 7500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1650 5850 m 3375 5850 l 3375 7650 l 1650 7650 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 6000 m 3525 6000 l 3525 7800 l 1800 7800 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline 15.000 slw gs clippath 4815 3165 m 4815 2985 l 4651 2985 l 4786 3075 l 4651 3165 l cp eoclip n 3825 3075 m 4800 3075 l gs col0 s gr gr % arrowhead n 4651 3165 m 4786 3075 l 4651 2985 l col0 s % Polyline gs clippath 7260 6435 m 7260 6615 l 7424 6615 l 7289 6525 l 7424 6435 l cp eoclip n 7275 6525 m 9000 6525 l gs col0 s gr gr % arrowhead n 7424 6435 m 7289 6525 l 7424 6615 l col0 s % Polyline gs clippath 10335 5565 m 10515 5565 l 10515 5401 l 10425 5536 l 10335 5401 l cp eoclip n 10425 5175 m 10425 5550 l gs col0 s gr gr % arrowhead n 10335 5401 m 10425 5536 l 10515 5401 l col0 s % Polyline gs clippath 10335 4440 m 10515 4440 l 10515 4276 l 10425 4411 l 10335 4276 l cp eoclip n 10425 4050 m 10425 4425 l gs col0 s gr gr % arrowhead n 10335 4276 m 10425 4411 l 10515 4276 l col0 s % Polyline 7.500 slw n 9180 1567 m 9075 1567 9075 3945 105 arcto 4 {pop} repeat 9075 4050 11520 4050 105 arcto 4 {pop} repeat 11625 4050 11625 1672 105 arcto 4 {pop} repeat 11625 1567 9180 1567 105 arcto 4 {pop} repeat cp gs col0 s gr % Polyline 15.000 slw gs clippath 5835 7665 m 6015 7665 l 6015 7501 l 5925 7636 l 5835 7501 l cp eoclip n 5925 7050 m 5925 7650 l gs col0 s gr gr % arrowhead n 5835 7501 m 5925 7636 l 6015 7501 l col0 s /Helvetica-Narrow-iso ff 75.00 scf sf 10100 7399 m gs 1 -1 sc (private _localVariableN) col0 sh gr % Polyline 7.500 slw gs clippath 6448 3270 m 6497 3270 l 6497 3140 l 6473 3239 l 6448 3140 l cp eoclip n 6473 2885 m 6473 3255 l gs col0 s gr gr % arrowhead n 6448 3140 m 6473 3239 l 6497 3140 l 6448 3140 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6448 4008 m 6497 4008 l 6497 3878 l 6473 3977 l 6448 3878 l cp eoclip n 6473 3623 m 6473 3993 l gs col0 s gr gr % arrowhead n 6448 3878 m 6473 3977 l 6497 3878 l 6448 3878 l cp gs 0.00 setgray ef gr col0 s % Polyline n 5824 2516 m 5734 2516 5734 2795 90 arcto 4 {pop} repeat 5734 2885 7121 2885 90 arcto 4 {pop} repeat 7211 2885 7211 2606 90 arcto 4 {pop} repeat 7211 2516 5824 2516 90 arcto 4 {pop} repeat cp gs col0 s gr % Polyline n 5824 3993 m 5734 3993 5734 4272 90 arcto 4 {pop} repeat 5734 4362 7121 4362 90 arcto 4 {pop} repeat 7211 4362 7211 4083 90 arcto 4 {pop} repeat 7211 3993 5824 3993 90 arcto 4 {pop} repeat cp gs col0 s gr % Polyline n 5824 3255 m 5734 3255 5734 3533 90 arcto 4 {pop} repeat 5734 3623 7121 3623 90 arcto 4 {pop} repeat 7211 3623 7211 3345 90 arcto 4 {pop} repeat 7211 3255 5824 3255 90 arcto 4 {pop} repeat cp gs col0 s gr % Polyline n 5824 1778 m 5734 1778 5734 2057 90 arcto 4 {pop} repeat 5734 2147 7121 2147 90 arcto 4 {pop} repeat 7211 2147 7211 1868 90 arcto 4 {pop} repeat 7211 1778 5824 1778 90 arcto 4 {pop} repeat cp gs col0 s gr /Helvetica-Narrow-iso ff 180.00 scf sf 5857 2762 m gs 1 -1 sc (Contextual analysis) col0 sh gr /Helvetica-Narrow-iso ff 180.00 scf sf 5919 2024 m gs 1 -1 sc (Syntactic analysis) col0 sh gr /Helvetica-Narrow-iso ff 180.00 scf sf 5981 3500 m gs 1 -1 sc (Error reporting) col0 sh gr /Helvetica-Narrow-iso ff 180.00 scf sf 6473 4239 m gs 1 -1 sc (Code generation) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 6411 2393 m gs 1 -1 sc (AST) dup sw pop neg 0 rm col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 6411 3132 m gs 1 -1 sc (Decorated AST) dup sw pop neg 0 rm col0 sh gr /Helvetica-Narrow-iso ff 150.00 scf sf 6411 3870 m gs 1 -1 sc (Decorated AST) dup sw pop neg 0 rm col0 sh gr % Polyline n 4965 1575 m 4875 1575 4875 4485 90 arcto 4 {pop} repeat 4875 4575 7935 4575 90 arcto 4 {pop} repeat 8025 4575 8025 1665 90 arcto 4 {pop} repeat 8025 1575 4965 1575 90 arcto 4 {pop} repeat cp gs col0 s gr % Polyline n 9867 6028 m 9815 6055 l 9737 6028 l 9815 6002 l 9867 6028 l cp gs col0 s gr % Polyline n 9867 6028 m 10203 6028 l gs col0 s gr % Polyline gs clippath 6448 2531 m 6497 2531 l 6497 2401 l 6473 2500 l 6448 2401 l cp eoclip n 6473 2147 m 6473 2516 l gs col0 s gr gr % arrowhead n 6448 2401 m 6473 2500 l 6497 2401 l 6448 2401 l cp gs 0.00 setgray ef gr col0 s % Polyline n 1050 2658 m 1978 2658 l 1978 2967 l 1050 2967 l cp gs col0 s gr % Polyline n 1050 3019 m 1978 3019 l 1978 3328 l 1050 3328 l cp gs col0 s gr % Polyline n 1050 3380 m 1978 3380 l 1978 3689 l 1050 3689 l cp gs col0 s gr % Polyline gs clippath 2251 2832 m 2251 2791 l 2137 2791 l 2220 2812 l 2137 2832 l cp eoclip n 1978 2812 m 2236 2812 l gs col0 s gr gr % arrowhead n 2137 2832 m 2220 2812 l 2137 2791 l 2137 2832 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2260 2973 m 2234 2941 l 2145 3012 l 2223 2977 l 2171 3044 l cp eoclip n 1978 3173 m 2236 2967 l gs col0 s gr gr % arrowhead n 2171 3044 m 2223 2977 l 2145 3012 l 2171 3044 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2261 3120 m 2226 3098 l 2165 3194 l 2227 3136 l 2200 3216 l cp eoclip n 1978 3534 m 2236 3122 l gs col0 s gr gr % arrowhead n 2200 3216 m 2227 3136 l 2165 3194 l 2200 3216 l cp gs 0.00 setgray ef gr col0 s % Polyline n 2236 2658 m 3525 2658 l 3525 3689 l 2236 3689 l cp gs col0 s gr /Times-Roman-iso ff 150.00 scf sf 1102 3225 m gs 1 -1 sc (BusinessMan) col0 sh gr /Times-Roman-iso ff 150.00 scf sf 1102 2864 m gs 1 -1 sc (Commuter) col0 sh gr /Times-Roman-iso ff 150.00 scf sf 1102 3586 m gs 1 -1 sc (Student) col0 sh gr /Times-Roman-iso ff 165.00 scf sf 2288 2555 m gs 1 -1 sc (Scenario) col0 sh gr /Times-Roman-iso ff 120.00 scf sf 2339 2864 m gs 1 -1 sc (import "Comm...") col0 sh gr /Times-Roman-iso ff 120.00 scf sf 2339 3019 m gs 1 -1 sc (import "Busin...") col0 sh gr /Times-Roman-iso ff 120.00 scf sf 2339 3173 m gs 1 -1 sc (import "Stud...") col0 sh gr /Times-Roman-iso ff 165.00 scf sf 1102 2555 m gs 1 -1 sc (Models) col0 sh gr /Times-Roman-iso ff 120.00 scf sf 2339 3380 m gs 1 -1 sc (create 10000 of ...) col0 sh gr % Polyline n 930 2250 m 825 2250 825 3870 105 arcto 4 {pop} repeat 825 3975 3720 3975 105 arcto 4 {pop} repeat 3825 3975 3825 2355 105 arcto 4 {pop} repeat 3825 2250 930 2250 105 arcto 4 {pop} repeat cp gs col0 s gr % Polyline n 10203 6081 m 10876 6081 l gs col0 s gr /Helvetica-Narrow-iso ff 75.00 scf sf 10100 5976 m gs 1 -1 sc (1..*) col0 sh gr /Helvetica-Narrow-BoldOblique-iso ff 75.00 scf sf 10462 6055 m gs 1 -1 sc (Type) col0 sh gr /Helvetica-Narrow-Oblique-iso ff 75.00 scf sf 10256 6158 m gs 1 -1 sc (iterate\(\)) col0 sh gr /Helvetica-Narrow-Oblique-iso ff 75.00 scf sf 10256 6235 m gs 1 -1 sc (printWatched\(\)) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 10797 6855 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 10850 6855 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 10902 6855 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 10281 6830 m gs 1 -1 sc (Type2) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 10100 6934 m gs 1 -1 sc (iterate\(\)) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 10100 7012 m gs 1 -1 sc (printWatched\(\)) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 10100 7089 m gs 1 -1 sc (private _localFn1\(\)) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 10307 7115 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 10307 7140 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 10100 7192 m gs 1 -1 sc (private _localFnN\(\)) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 10100 7295 m gs 1 -1 sc (private _localVariable1) col0 sh gr /Helvetica-Bold-iso ff 75.00 scf sf 10307 7322 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-Bold-iso ff 75.00 scf sf 10307 7348 m gs 1 -1 sc (.) col0 sh gr /Helvetica-Narrow-iso ff 75.00 scf sf 9789 5976 m gs 1 -1 sc (1) col0 sh gr % Polyline n 10203 5976 m 10876 5976 l 10876 6338 l 10203 6338 l cp gs col0 s gr % Polyline n 10540 6338 m 10488 6391 l 10591 6391 l 10540 6338 l cp gs col0 s gr % Polyline n 10540 6391 m 10540 6701 l gs col0 s gr % Polyline n 9661 6753 m 9661 6701 l 11315 6701 l 11315 6753 l gs col0 s gr % Polyline n 10410 6701 m 10410 6753 l gs col0 s gr % Polyline n 10049 6855 m 10720 6855 l gs col0 s gr % Polyline n 10049 7217 m 10720 7217 l gs col0 s gr % Polyline n 10049 6753 m 10720 6753 l 10720 7425 l 10049 7425 l cp gs col0 s gr % Polyline n 10954 6855 m 11625 6855 l gs col0 s gr % Polyline n 10954 7217 m 11625 7217 l gs col0 s gr % Polyline n 10954 6753 m 11625 6753 l 11625 7425 l 10954 7425 l cp gs col0 s gr % Polyline n 9324 6855 m 9996 6855 l gs col0 s gr % Polyline n 9324 7217 m 9996 7217 l gs col0 s gr % Polyline n 9324 6753 m 9996 6753 l 9996 7425 l 9324 7425 l cp gs col0 s gr % Polyline n 9066 6364 m 9737 6364 l gs col0 s gr % Polyline n 9066 5951 m 9737 5951 l 9737 6675 l 9066 6675 l cp gs col0 s gr % Polyline n 9066 6055 m 9737 6055 l gs col0 s gr $F2psEnd rs %%EndDocument @endspecial 1037 3449 a FQ(F)l(igur)m(e)c(5.7:)29 b(F)-5 b(r)l(om)20 b(sour)m(ce)h(code)e(to)h(simulation)g(r)m(esult.)523 3676 y F2(Belo)n(w)33 b(is)g(the)g(\002rst)g(part)h(of)g(the)f(output)i (from)e(running)j(the)d FY(BusinessMan)f F2(model)i(in)382 3806 y(Chapter)21 b(1)f(with)g(20)h(iterations.)h(The)e(numbers)i(in)e (the)h(parentheses)i(represent)g(the)e(iteration)382 3935 y(number)-5 b(.)491 4165 y FW($)54 b(java)f(Siml/Scenario)48 b(20)491 4295 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)h(\(1\):)j(true)491 4425 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d(\(1\):)j(false)491 4554 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d(\(1\):)j(false)491 4684 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d(\(1\):)j(true)491 4814 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d(\(1\):)j(false)491 4944 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d(\(1\):)j(true)491 5074 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d(\(1\):)j(true)491 5204 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d(\(1\):)j(true)491 5334 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d(\(1\):)j(false)1831 5652 y F2(87)p eop end %%Page: 88 90 TeXDict begin 88 89 bop 1374 228 a F1(Chapter)24 b(5.)51 b(Implementation)p 382 266 2989 4 v 491 548 a FW(Siml/BusinessMa)o(n/)o (tr)o(ai)o(n)e(\(1\):)j(true)491 678 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o (n)d(\(1\):)j(true)491 808 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d (\(1\):)j(false)491 937 y(Siml/BusinessMa)o(n/)o(tr)o(ai)o(n)d(\(1\):)j (false)491 1067 y(...)1831 5652 y F2(88)p eop end %%Page: 89 91 TeXDict begin 89 90 bop 382 1249 a F4(Bibliograph)m(y)427 1711 y F2([1])47 b(Erich)20 b(Gamma)e(et.)h(al.)25 b FV(Design)20 b(P)-7 b(atterns)21 b(\226)e(Elements)h(of)g(Reusable)h (Object-Oriented)579 1841 y(Softwar)m(e)p F2(.)34 b(Addison-W)-7 b(esle)o(y)26 b(Pub)d(Co,)g(1994.)427 2046 y([2])47 b(Hans)29 b(H\374ttel.)51 b FV(Pilen)29 b(ved)h(tr\346ets)f(r)l(od)h(\226)e (struktur)m(el)k(oper)o(ationel)g(semantik)e(af)f(pr)l(o-)579 2176 y(gr)o(ammeringsspr)l(o)o(g)p F2(.)37 b(Uni-print,)25 b(2003.)427 2380 y([3])47 b(Adrian)32 b(Johnstone)i(and)e(Elizabeth)g (Scott.)58 b(The)31 b(RDP)f(parser)i(generator)l(,)i(Decem-)579 2510 y(ber)27 b(1997.)47 b FW(http://www.cs.)o(rh)o(ul.)o(ac)o(.u)o(k/) o(re)o(sea)o(rc)o(h/)o(la)o(ng)o(uag)o(es)o(/)579 2640 y(projects/rdp.s)o(htm)o(l)p F2(.)427 2844 y([4])g(Peter)34 b(L)-5 b(ynggaard.)71 b FV(Drifts\370k)o(onomisk)o(e)38 b(eksempler)p F2(.)70 b(Handelsh\370jsk)o(olens)40 b(forlag,)579 2974 y(1997.)427 3179 y([5])47 b(Peter)23 b(L)-5 b(ynggaard.)35 b FV(Drifts\370k)o(onomi)p F2(.)h(Handelsh\370jsk)o(olens)29 b(forlag,)24 b(2001.)427 3383 y([6])47 b(Jon)26 b(Me)o(yer)-5 b(.)39 b(A)24 b(Ja)n(v)n(a)j(assembler)g(interf)o(ace,)g(March)f(1997.) 41 b FW(http://mrl.nyu)o(.)579 3513 y(edu/~meyer/jas)o(min)o(/)p F2(.)427 3718 y([7])47 b(Jon)24 b(Me)o(yer)f(and)h(T)m(ro)o(y)g(Do)n (wning.)33 b FV(J)m(ava)25 b(V)-7 b(irtual)24 b(Mac)o(hine)p F2(.)34 b(O'Reilly)-6 b(,)24 b(1997.)427 3922 y([8])47 b(Hanne)31 b(Riis)f(Nielson)i(and)f(Flemming)g(Nielson.)57 b FV(Semantics)32 b(with)f(applications)j(\226)579 4052 y(a)26 b(formal)i(intr)l(oduction)p F2(.)48 b(John)28 b(W)l(ile)o(y)f(&)f(Sons,)h(1999.)45 b FW(http://www.daimi)o(.)579 4182 y(au.dk/~hrn/)p F2(.)427 4387 y([9])i(T)-6 b(errence)26 b(W)-8 b(.)23 b(Pratt)i(and)h(Marvin)g(V)-12 b(.)24 b(Zelk)o(o)n(witz.) 39 b FV(Pr)l(o)o(gr)o(amming)26 b(Langua)o(g)o(es)i(\226)c(De-)579 4517 y(sign)g(and)g(Implementation)p F2(.)36 b(Prentice)25 b(Hall,)e(4)g(edition,)i(2000.)382 4721 y([10])47 b(Michael)24 b(Sipser)-5 b(.)31 b FV(Intr)l(oduction)c(to)22 b(the)h(Theory)h(of)e (Computation)p F2(.)34 b(PWS)21 b(Publishing)579 4851 y(Co.,)h(1996.)382 5056 y([11])47 b(Da)n(vid)25 b(A.)d(W)-7 b(att)24 b(and)h(Deryck)g(F)-7 b(.)22 b(Bro)n(wn.)35 b FV(Pr)l(o)o(gr)o(amming)25 b(Langua)o(g)o(e)i(Pr)l(ocessor)o(s)f(in) 579 5185 y(J)m(ava)p F2(.)34 b(Prentice)24 b(Hall,)f(2000.)1831 5652 y(89)p eop end %%Page: 90 92 TeXDict begin 90 91 bop 382 1202 a FT(A)l(ppendix)42 b(A)382 1654 y Fd(rdp)51 b F4(grammar)393 2138 y Fn(\()12 b Fc(\003)38 b Fn(S)n(T)n(A)n(R)n(T)f Fc(\003)12 b Fn(\))393 2319 y(s)f(i)g(m)g(u)g(l)g(a)g(t)g(i)g(o)g(n)58 b(:)16 b(:)f(=)48 b({)59 b(i)12 b(m)f(p)h(o)f(r)h(t)g(_)f(d)h(i)g(r)g(e)g(c)g (t)f(i)h(v)g(e)62 b(|)1071 2410 y(')15 b(e)9 b(x)g(t)g(e)g(r)g(n)34 b(')42 b(\()26 b(')21 b(c)8 b(o)g(n)g(s)g(t)34 b(')49 b(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g(e)g(n)g(u)g(m)49 b(I)s(D)42 b({)23 b(')g(,)f(')42 b(I)s(D)18 b(})58 b(')14 b(;)28 b(')44 b(|)1427 2501 y(\()15 b(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g (e)g(_)g(e)g(n)g(u)g(m)48 b(I)s(D)c(\()12 b({)23 b(')h(,)g(')44 b(I)s(D)49 b(})60 b(')15 b(;)30 b(')46 b(|)2225 2591 y(f)10 b(u)g(n)g(c)g(t)g(i)g(o)g(n)g(_)g(h)h(e)g(a)g(d)f(e)h(r)78 b(')15 b(;)30 b(')14 b(\))47 b(|)1470 2682 y(')13 b(v)7 b(o)g(i)g(d)28 b(')47 b(I)s(D)54 b(f)10 b(u)g(n)g(c)g(t)g(i)g(o)g(n)g (_)g(h)g(e)h(a)g(d)g(e)g(r)80 b(')16 b(;)32 b(')48 b(\))16 b(\))48 b(|)1065 2773 y(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g(e)g (n)g(u)g(m)48 b(I)s(D)g(\()26 b(v)13 b(a)g(r)g(i)g(a)g(b)g(l)g(e)g(_)g (d)f(e)h(f)g(i)g(n)g(i)g(t)g(i)g(o)g(n)63 b(|)1829 2863 y(f)12 b(u)h(n)f(c)h(t)f(i)h(o)f(n)h(_)f(d)h(e)f(f)h(i)f(n)h(i)g(t)f(i) h(o)f(n)30 b(\))50 b(|)1071 2954 y(')13 b(v)7 b(o)g(i)g(d)28 b(')48 b(I)s(D)55 b(f)12 b(u)h(n)f(c)h(t)g(i)f(o)h(n)f(_)h(d)f(e)h(f)f (i)h(n)f(i)h(t)g(i)f(o)h(n)62 b(|)1071 3045 y(')15 b(c)8 b(o)g(n)g(s)g(t)33 b(')50 b(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g (e)g(n)g(u)g(m)48 b(I)s(D)56 b(v)13 b(a)g(r)g(i)g(a)g(b)g(l)g(e)g(_)f (d)h(e)g(f)g(i)g(n)g(i)g(t)g(i)g(o)g(n)62 b(|)1069 3136 y(e)10 b(n)g(u)g(m)g(_)g(d)g(e)g(f)g(i)g(n)g(i)g(t)g(i)g(o)g(n)63 b(|)1071 3226 y(t)13 b(y)f(p)g(e)h(_)f(d)g(e)h(f)f(i)g(n)g(i)h(t)f(i)h (o)f(n)62 b(|)1071 3317 y(c)11 b(r)h(e)f(a)h(t)g(e)g(_)f(s)g(t)h(a)g(t) f(e)h(m)f(e)h(n)f(t)22 b(})10 b(.)393 3498 y(\()i Fc(\003)38 b Fn(I)n(M)n(P)n(O)n(R)n(T)h Fc(\003)12 b Fn(\))393 3680 y(i)g(m)f(p)h(o)g(r)f(t)h(_)g(d)g(i)g(r)f(e)h(c)g(t)g(i)g(v)g(e)55 b(:)15 b(:)f(=)58 b(')21 b(i)8 b(m)g(p)g(o)g(r)g(t)29 b(')44 b(STRING)11 b(\()24 b(')11 b(")24 b(')12 b(\))g(:)21 b(f)10 b(i)g(l)g(e)g(n)g(a)g(m)g(e)60 b(')12 b(;)23 b(')393 3861 y(\()12 b Fc(\003)37 b Fn(D)n(E)n(C)n(L)n(A)n(R)n(A)n(T)n(I)n(O)n (N)n(S)32 b Fc(\003)12 b Fn(\))392 4043 y(f)e(u)g(n)g(c)g(t)g(i)g(o)g (n)g(_)g(h)h(e)g(a)g(d)f(e)h(r)62 b(:)15 b(:)f(=)60 b(')15 b(\()28 b(')46 b([)20 b(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g(e)g (n)g(u)g(m)48 b(I)s(D)43 b({)22 b(')h(,)f(')45 b(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g(e)g(n)g(u)g(m)49 b(I)s(D)16 b(})c(])55 b(')12 b(\))25 b(')13 b(.)393 4224 y(\()f Fc(\003)42 b Fn(D)r(E)r(F)r(I)r(N)r(I)r(T)r(I)r(O)r(N)r(S)f Fc(\003)12 b Fn(\))394 4405 y(v)h(a)g(r)g(i)g(a)g(b)g(l)g(e)g(_)g(d)g (e)g(f)f(i)i(n)e(i)h(t)g(i)g(o)g(n)56 b(:)13 b(:)h(=)43 b([)27 b(')13 b(=)27 b(')49 b(e)6 b(x)g(p)g(1)19 b(])40 b({)24 b(')g(,)f(')44 b(I)s(D)f([)23 b(')11 b(=)23 b(')46 b(e)6 b(x)g(p)g(1)20 b(])13 b(})55 b(')13 b(;)27 b(')13 b(.)394 4496 y(f)f(u)h(n)f(c)h(t)g(i)f(o)h(n)f(_)h(d)f(e)h(f)f(i)h(n)f (i)h(t)g(i)f(o)h(n)59 b(:)16 b(:)g(=)58 b(f)10 b(u)g(n)g(c)g(t)g(i)g(o) g(n)g(_)g(h)g(e)h(a)g(d)g(e)g(r)65 b(')11 b({)22 b(')38 b({)22 b(s)10 b(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)27 b(})49 b(')11 b(})21 b(')11 b(.)392 4587 y(e)f(n)g(u)g(m)g(_)g(d)g(e)g(f)g(i)g (n)g(i)g(t)g(i)g(o)g(n)57 b(:)14 b(:)g(=)58 b(')16 b(e)r(n)r(u)r(m)i(') 47 b(I)s(D)54 b(')11 b({)23 b(')42 b(I)s(D)h({)22 b(')h(,)f(')43 b(I)s(D)13 b(})18 b(')9 b(})19 b(')9 b(.)394 4677 y(t)j(y)h(p)f(e)g(_)g (d)h(e)f(f)g(i)h(n)f(i)g(t)h(i)f(o)g(n)57 b(:)14 b(:)g(=)58 b(')21 b(t)8 b(y)g(p)g(e)29 b(')47 b(I)s(D)h(')9 b({)19 b(')9 b({)16 b(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g(e)g(n)g(u)g(m) 48 b(I)s(D)f(\()27 b(v)12 b(a)h(r)g(i)g(a)g(b)g(l)g(e)g(_)g(d)g(e)g(f)g (i)g(n)f(i)h(t)h(i)f(o)f(n)63 b(|)2506 4768 y(f)13 b(u)f(n)g(c)h(t)g(i) f(o)h(n)f(_)h(d)f(e)h(f)f(i)h(n)f(i)h(t)g(i)f(o)h(n)29 b(\))51 b(|)1749 4859 y(')13 b(v)7 b(o)g(i)g(d)28 b(')47 b(I)s(D)56 b(f)12 b(u)g(n)h(c)f(t)h(i)g(o)f(n)h(_)f(d)g(e)h(f)g(i)f(n)h (i)f(t)h(i)g(o)f(n)62 b(|)1749 4950 y(')14 b(c)8 b(o)g(n)g(s)g(t)34 b(')49 b(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g(e)g(n)g(u)g(m)49 b(I)s(D)56 b(v)12 b(a)h(r)g(i)g(a)g(b)g(l)g(e)g(_)g(d)g(e)g(f)g(i)g(n)f (i)h(t)g(i)h(o)e(n)63 b(|)1749 5040 y(')12 b(w)6 b(a)g(t)g(c)g(h)g(e)g (d)30 b(')43 b([)25 b(')c(c)8 b(o)g(n)g(s)g(t)35 b(')15 b(])52 b(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g(e)g(n)g(u)g(m)48 b(I)s(D)2546 5131 y(v)13 b(a)g(r)g(i)g(a)g(b)g(l)g(e)g(_)g(d)g(e)g(f)f (i)h(n)g(i)g(t)g(i)g(o)g(n)63 b(|)1747 5222 y(e)10 b(n)g(u)g(m)g(_)g(d) g(e)g(f)g(i)g(n)g(i)g(t)g(i)g(o)g(n)51 b(})22 b(')11 b(})21 b(')11 b(.)1831 5652 y F2(90)p eop end %%Page: 91 93 TeXDict begin 91 92 bop 1397 228 a F1(Chapter)24 b(A.)45 b Fb(rdp)22 b F1(grammar)p 382 266 2989 4 v 393 548 a Fn(\()12 b Fc(\003)40 b Fn(INSTANTIATING)j Fc(\003)12 b Fn(\))393 729 y(c)g(r)f(e)h(a)g(t)f(e)h(_)g(s)f(t)g(a)h(t)g(e)g(m)f (e)g(n)h(t)55 b(:)15 b(:)f(=)58 b(')24 b(c)10 b(r)g(e)g(a)g(t)g(e)36 b(')44 b(I)o(N)o(T)o(E)o(G)o(E)o(R)11 b(:)16 b(n)t(o)52 b(')17 b(o)6 b(f)26 b(')47 b(I)s(D)56 b(f)12 b(u)g(n)g(c)g(t)h(i)f(o)h (n)f(_)g(c)g(a)h(l)f(l)71 b(')15 b(;)28 b(')45 b(.)393 911 y(\()12 b Fc(\003)36 b Fn(S)m(T)m(A)m(T)m(E)m(M)m(E)m(N)m(T)m(S)e Fc(\003)12 b Fn(\))392 1092 y(s)e(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)64 b(:)15 b(:)h(=)51 b(I)s(D)43 b(\()23 b(')11 b(=)23 b(')46 b(e)6 b(x)g(p)g(1)70 b(')15 b(;)31 b(')47 b(|)60 b(f)12 b(u)g(n)g(c)h(t)f(i)h(o)f(n)g(_)g(c)h(a)f(l)h(l)75 b(')15 b(;)31 b(')47 b(|)k(I)s(D)56 b(v)13 b(a)g(r)g(i)g(a)g(b)g(l)g(e)g(_)g (d)f(e)h(f)g(i)g(n)g(i)g(t)g(i)g(o)g(n)30 b(\))50 b(|)955 1183 y(')7 b({)15 b(')7 b({)18 b(s)10 b(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t) 28 b(})54 b(')13 b(})24 b(')42 b(|)952 1274 y(')13 b(w)7 b(h)g(i)g(l)g(e)31 b(')56 b(')13 b(\()26 b(')49 b(e)6 b(x)g(p)g(1)61 b(')13 b(\))25 b(')52 b(s)10 b(t)g(a)g(t)g(e)g(m)g(e)g (n)g(t)66 b(|)952 1364 y(')15 b(i)10 b(f)33 b(')56 b(')13 b(\()27 b(')49 b(e)6 b(x)g(p)g(1)61 b(')12 b(\))25 b(')53 b(s)10 b(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)56 b([)23 b(')f(e)9 b(l)g(s)g(e)34 b(')55 b(s)10 b(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)33 b(])50 b(|)952 1455 y(')14 b(c)8 b(o)g(n)g(s)g(t)34 b(')49 b(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g(e)g(n)g(u)g(m)49 b(I)s(D)56 b(v)12 b(a)h(r)g(i)g(a)g(b)g(l)g(e)g(_)g(d)g(e)g(f)g(i)g(n)f (i)h(t)g(i)h(o)e(n)63 b(|)947 1546 y(t)7 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g (e)50 b(I)s(D)55 b(v)13 b(a)g(r)g(i)g(a)g(b)g(l)g(e)g(_)g(d)g(e)g(f)f (i)i(n)e(i)h(t)g(i)g(o)g(n)63 b(|)951 1636 y(')6 b(+)g(+)12 b(')d(I)s(D)64 b(')14 b(;)30 b(')45 b(|)942 1727 y(')s Fr(\000)t(\000)s Fn(')r(I)s(D)64 b(')14 b(;)30 b(')45 b(|)952 1818 y(')16 b(r)10 b(e)g(t)g(u)g(r)g(n)35 b(')51 b(e)6 b(x)g(p)g(1)66 b(')14 b(;)28 b(')45 b(.)394 1999 y(f)12 b(u)g(n)g(c)h(t)f(i)h(o)f(n)g(_)g(c)h(a)f(l)h(l)57 b(:)15 b(:)g(=)60 b(')14 b(\()29 b(')45 b([)21 b(e)6 b(x)g(p)g(1)46 b({)23 b(')f(,)h(')45 b(e)6 b(x)g(p)g(1)20 b(})12 b(])55 b(')12 b(\))26 b(')12 b(.)393 2181 y(\()g Fc(\003)39 b Fn(EXPRESSIONS)f Fc(\003)12 b Fn(\))388 2362 y(e)6 b(x)g(p)g(1)54 b(:)16 b(:)g(=)54 b(e)6 b(x)g(p)g(2)41 b([)9 b(\()16 b(')9 b(&)g(&)16 b(')40 b(e)6 b(x)g(p)g(1)57 b(|)68 b(')17 b(|)g(|)34 b(')56 b(e)6 b(x)g(p)g(1)22 b(\))15 b(])g(.)388 2453 y(e)6 b(x)g(p)g(2)54 b(:)16 b(:)g(=)54 b(e)6 b(x)g(p)g(3)46 b([)11 b(\()22 b(')12 b(=)f(=)23 b(')45 b(e)6 b(x)g(p)g(2)51 b(|)59 b(')14 b(!)g(=)28 b(')50 b(e)6 b(x)g(p)g(2)22 b(\))15 b(])g(.)388 2543 y(e)6 b(x)g(p)g(3)54 b(:)16 b(:)g(=)54 b(e)6 b(x)g(p)g(4)45 b([)11 b(\()22 b(')g(<)g(')45 b(e)6 b(x)g(p)g(3)48 b(|)54 b(')24 b(>)h(')47 b(e)6 b(x)g(p)g(3)47 b(|)k(')23 b(<)12 b(=)23 b(')46 b(e)6 b(x)g(p)g(3)46 b(|)51 b(')23 b(>)12 b(=)23 b(')46 b(e)6 b(x)g(p)g(3)22 b(\))15 b(])f(.)388 2634 y(e)6 b(x)g(p)g(4)54 b(:)16 b(:)g(=)54 b(e)6 b(x)g(p)g(5)50 b([)27 b(')14 b(:)27 b(')50 b(e)6 b(x)g(p)g(5)50 b({)26 b(')13 b(|)26 b(')49 b(e)6 b(x)g(p)g(5)62 b(')13 b(:)27 b(')48 b(e)6 b(x)g(p)g(5)20 b(})12 b(])g(.)388 2725 y(e)6 b(x)g(p)g(5)54 b(:)16 b(:)g(=)54 b(e)6 b(x)g(p)g(6)48 b([)12 b(\()24 b(')12 b(+)24 b(')47 b(e)6 b(x)g(p)g(5)45 b(|)50 b(')22 b Fr(\000)g Fn(')44 b(e)6 b(x)g(p)g(5)22 b(\))15 b(])g(.)388 2815 y(e)6 b(x)g(p)g(6)54 b(:)16 b(:)g(=)54 b(e)6 b(x)g(p)g(7)48 b([)12 b(\()25 b(')12 b Fc(\003)25 b Fn(')47 b(e)6 b(x)g(p)g(6)55 b(|)62 b(')16 b(/)31 b(')53 b(e)6 b(x)g(p)g(6)48 b(|)j(')12 b(\045)24 b(')46 b(e)6 b(x)g(p)g(6)22 b(\))15 b(])f(.)388 2906 y(e)6 b(x)g(p)g(7)54 b(:)16 b(:)g(=)54 b(e)6 b(x)g(p)g(8)48 b([)24 b(')12 b(^)24 b(')47 b(e)6 b(x)g(p)g(7)21 b(])14 b(.)388 2997 y(e)6 b(x)g(p)g(8)54 b(:)16 b(:)g(=)54 b(e)6 b(x)g(p)g(9)54 b([)31 b(')16 b(.)f(.)g(.)30 b(')54 b(e)6 b(x)g(p)g(8)21 b(])14 b(.)388 3088 y(e)6 b(x)g(p)g(9)54 b(:)16 b(:)g(=)54 b(e)6 b(x)g(p)g(1)g(0)54 b(|)62 b(')15 b(!)30 b(')53 b(e)6 b(x)g(p)g(1)g(0)46 b(|)j(')23 b Fr(\000)f Fn(')44 b(e)6 b(x)g(p)g(1)g(0)20 b(.)388 3178 y(e)6 b(x)g(p)g(1)g(0)53 b(:)14 b(:)h(=)59 b(')14 b(\()28 b(')51 b(e)6 b(x)g(p)g(1)69 b(')15 b(\))30 b(')46 b(|)56 b(v)9 b(a)g(l)g(u)g(e)66 b(|)56 b(I)s(D)15 b(.)393 3360 y(\()d Fc(\003)36 b Fn(V)m(A)m(L)m(U)m (E)m(S)e Fc(\003)12 b Fn(\))391 3541 y(v)d(a)g(l)g(u)g(e)59 b(:)16 b(:)g(=)47 b(I)o(N)o(T)o(E)o(G)o(E)o(R)11 b(:)22 b(i)64 b(|)51 b(R)m(E)m(A)m(L)8 b(:)20 b(r)56 b(|)62 b(')24 b(t)9 b(r)g(u)g(e)37 b(')48 b(|)63 b(')26 b(f)11 b(a)g(l)g(s)g(e)35 b(')13 b(.)389 3632 y(t)7 b(y)g(p)g(e)g(_)g(n)g(a)g (m)g(e)51 b(:)14 b(:)g(=)58 b(')24 b(i)10 b(n)g(t)36 b(')47 b(|)64 b(')27 b(f)11 b(l)g(o)h(a)f(t)38 b(')48 b(|)63 b(')23 b(b)7 b(o)g(o)g(l)28 b(')14 b(.)388 3722 y(t)6 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)g(_)g(e)g(n)g(u)g(m)52 b(:)16 b(:)f(=)55 b(t)7 b(y)g(p)g(e)g(_)g(n)g(a)g(m)g(e)60 b(|)c(I)s(D)16 b(.)386 3904 y(c)t(o)t(m)t(m)t(e)t(n)t(t)52 b(:)16 b(:)f(=)45 b(C)l(O)l(M)l(M)l(E)l(N)l(T)l(_)l(L)l(I)l(N)l(E)9 b(\()18 b(')23 b Fa(/)15 b(/)38 b(')12 b(\))g(.)1831 5652 y F2(91)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF