Hackers guid to MLton IR

Suresh Jagannathan suresh@research.nj.nec.com
Mon, 29 Nov 1999 12:42:39 -0500


Dan,

I'm attaching a postscript copy of a paper very much in progress that
discusses the various phases of the IL.  This might give you a good
start on understanding the CPS IR.  Let me know if you'd like to meet
sometime to go over questions in person.  Enjoyed your talk at NJ/PLS,
BTW.

	-- Suresh

=======================================

%!PS-Adobe-2.0
%%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com)
%%Title: main.dvi
%%Pages: 20
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips main.dvi -o main.ps
%DVIPSParameters: dpi=600, compressed
%DVIPSSource:  TeX output 1999.10.12:1702
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
.1 sub]/id ch-image N /rw ch-width 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 dup 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 dup gp add
/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 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}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 2 string 0 1 255{IE S dup 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 /rulex 0 N /ruley 0 N /v{/ruley
X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[
(Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup
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 rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end

%%EndProcSet
TeXDict begin 40258431 52099146 1000 600 600 (main.dvi)
@start
%DVIPSBitmapFont: Fa cmmi6 6 1
/Fa 1 106 df<1338137CA2137813701300A7EA0780EA1FC0EA38E01230EA60F0EAC1E0
A3EA03C0A3EA0780A2EA0F0013041306EA1E0CA21318121CEA1E70EA0FE0EA07800F237D
A116>105 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb lasy10 10.95 1
/Fb 1 51 df<007FB812E0B912F0A300F0CAFCB3B3A8B9FCA36C17E0343478B844>50
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc cmss10 10.95 22
/Fc 22 122 df<12FFA80808788719>46 D<007FB912E0BA12F0A26C18E0CDFCB0007FB9
12E0BA12F0A26C18E03C187BA247>61 D<EDFFF0020FEBFF80023F14F091B612FC5B1307
499038803FF890391FFC0003D93FF01300D97FC01438494814184890C9FC485A5B12075B
485AA2485AA2485AA3485AA448CAFCAD6C7EA46C7EA36C7EA26C7EA26C7E7F12037F6C6C
15046C6D140C6D6C143CD93FF0147CD91FFCEB01FE90390FFF801F6D90B5FC010115FC6D
15F0023F14C0020F1400020013F02F437AC03A>67 D<B712FEA690C9FCB3A490B612E0A6
90C9FCB3AB273F78BE34>70 D<B46CEE1FC0007FEF3F807F003FEF7F00A27F001F17FE7F
000F4C5AA27F00074C5AA26C6C4B5AA27F00014C5AA27F6C4C5A80017F4B5AA280013F4B
C7FCA26D6C14FEA280010F4A5AA26D6C5C1603A26D6C495AA26D6C5C160FA26D6C5C161F
A2DA7F805B163FDA3FC090C8FC5EA291381FE07E16FE020F5B15F015F102075B15F90203
5B15FB15FF6E5BA26E5BA36F5A3A3F7FBE3D>86 D<EB0FF890B5FC00031480000F14E048
14F0A29038F00FF890388003FC381E0001001814FE00101300C812FF157FA7EC7FFF010F
B5FC137F48B6FC120748EBF07F383FFC0013C048C7FC12FE5AA315FF7E5C387F8007EBE0
1F6CB6FCA26C147F6C13FC6C13F0000190C7FC202B7CA92C>97 D<49B47E010F13F0013F
13FC4913FF90B612805A481300D807FCEB1F00D80FF0130748487F4990C7FC123F5B127F
90C9FCA312FEAA127FA36C7EA26C6C14406DEB01C06C6C13036C6C131F01FF13FF6C90B5
FC7E6C6C14806DEBFE00010F13F001011380222B7DA928>99 D<ED07F0B3A4EB07F8EB3F
FF4913C748B512F74814FF5A1480390FFC003FD81FF0131F49130F48481307A2485A90C7
FCA312FEAA127FA37F003F140F7F6C6C131F6D133F6C6C137F9038FF01FF6C90B5FC6C14
F76C14E76C148790383FFE07D90FF0C7FC24407DBE2F>I<EB03F8EB1FFF017F13C090B5
7E488048803807FE07390FF801FC9038E000FE4848137E003F143E49133F90C77E5A127E
ED0F80B7FCA600FCC9FCA37E127EA2127FA26C7EA26C7E6D14806C6C1303D807FC131F01
FF13FF6C90B5FC7E6C6C14006D13FC010F13E0010190C7FC212B7DA928>I<EC1FF0ECFF
FC5B13075BA290381FE03C90383F800491C7FC5B137E13FEADB6FCA6C648C7FCB3B01E40
7FBF1C>I<12FEB3A449B4FC010713C0011F13F0017F13F890B512FCB6FC9038F80FFEEB
E003EBC00190388000FFA290C7127FA35AB3A9203F79BE2F>104
D<12FFA81200AF127FB3B3A4083F7ABE16>I<12FEB3A5EDFF804A13004A5A4A5A4A5A4A
5A4A5A4A5A4A5A4990C7FC495A495A495A5C495A495A497E13FFB57E8013FBEBF1FCEBE0
FE497E497E496C7E488048131F6E7E8114076E7E8114016E7E157F1680153FED1FC016E0
233F79BE2C>107 D<12FEB3B3B3A9073F79BE16>I<26FC01FFECFF800107D9C00313E001
1FD9F00F13F8017FD9F83F7F90B56C487F00FD92B5FC3CFFF80FFFFC07FFD9E003EBF001
496C497E496C49EB7F80A290C76C48133FA34892C7FCB3A9392979A848>I<38FC01FF01
0713C0011F13F0017F13F890B512FC12FD39FFF80FFEEBE003EBC00190388000FFA290C7
127FA35AB3A9202979A82F>I<EB01FE90380FFFC0013F13F0497F90B57E000314FF1403
3A07F8007F804848EB3FC04848EB1FE049130F4848EB07F0A290C712034815F8A2007E14
0100FE15FCA96C14036C15F8A36C6CEB07F06D130FA26C6CEB1FE06C6CEB3FC001FC13FF
2607FF0313806C90B512006C5C6C5C013F13F0010F13C0D901FEC7FC262B7DA92D>I<14
FFD8FE0713E0011F7F017F7FB67E819038F80FFFEBE003D98000138090C7EA7FC0153F5A
ED1FE0A2150FA216F01507A8150F16E0A2151FA2ED3FC06C147F6DEBFF805CD9E0031300
9038F81FFE90B55A485C6D5B6D5B010F1380D901FEC7FC90C9FCB1243B79A82F>I<EB1F
F890B51280000314E04814F85A5A393FE00FF0EB8000007F143090C8FCA57F6C7E13F06C
B4FC14F06C13FE6C7F000114C06C14E0011F13F013019038001FF81407EC03FCA21401A3
124012700078EB03F8007E130738FFE01F90B512F015E06C14C0001F14800003EBFE0038
003FF01E2B7EA923>115 D<EA01F8ACB612E0A6D801F8C7FCB3A77F152015E03800FE07
90B512F0A27F6D13C06D1300EB0FF01C357EB321>I<00FE147FB3AC15FFA25C6C5B6C13
0FEBC03F90B6FC6CEBFE7F6C13FC6C13E0000390C7FC202979A72F>I<B415FE6CEC01FC
7F003FEC03F87F121FED07F07F000FEC0FE07F1207ED1FC06C7E16806C6C133FA2ED7F00
6C7E157E017F13FEA26D5B14815D131F14C190380FC3F0A2903807E3E014E7A201035BA2
903801F780A2EB00FF92C7FCA2147EA3147CA214FC5C13015CA213035C13075CEA200F38
3C1F80D83FFFC8FCA25B5BEA07F0273B7FA72A>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd cmti8 8 1
/Fd 1 71 df<011FB612F8A2903900FE000716014A13001778130117705CA21303A25C16
E001071301170002E05B1503130F15074A485A91B5FC5BECC01F4A6CC7FCA2133FA2EC00
0EA25B92C8FC137EA213FEA25BA21201A25BA21203B512F0A22D2D7CAC2E>70
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe cmbx12 12 22
/Fe 22 122 df<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F
0F788E1F>46 D<EC03C01407141F147FEB03FF133FB6FCA413C3EA0003B3B3ADB712FCA5
264177C038>49 D<ECFFE0010F13FE013F6D7E90B612E0000315F82607FC0313FE3A0FE0
007FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13F07F17F881A46C5A
6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E4B5A4B5A4A90C7FC
4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014F0495A495A49C8FC
017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038>I<ECFFF0010713
FF011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E81D80FF86D138013FE001F16
C07FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A5B020F1380902607FFFEC7FC
15F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017E0A26F13F0A217F8A3EA0FC0
EA3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F80491380D81FF0491300D80F
FEEBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E02D427BC038>I<0007150301
E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001
C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F
6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007E
C74813C0123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F
1480010F01FCC7FC010113C02D427BC038>53 D<EE1F80A24C7EA24C7EA34C7EA24B7FA3
4B7FA24B7FA34B7F169F031F80161F82033F80ED3E07037E80157C8203FC804B7E020181
15F0820203814B137F0207815D173F020F814B7F021F8292C77EA24A82023E80027E8202
7FB7FCA291B87EA2498302F0C8FCA20103834A157F0107834A153FA249488284011F8491
C97E4984133E017E82B6020FB612F0A54C457CC455>65 D<BA1280A419C026003FFEC712
1F1701EF007F183F181F180F180719E01803A31801A3EE01E0F000F0A419001603A31607
160F167F91B6FCA59138FE007F160F16071603A31601A693C9FCAFB712F0A53C447CC346
>70 D<B712F0A526003FFECAFCB3B1F00780A4180F1900A460A360A2187EA218FE170117
031707171F177FEE03FFB95AA539447CC343>76 D<003FBA12E0A59026FE000FEB8003D8
7FE09338003FF049171F90C71607A2007E1803007C1801A300781800A400F819F8481978
A5C81700B3B3A20107B8FCA545437CC24E>84 D<903801FFE0011F13FE017F6D7E48B612
E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FCA4
0203B5FC91B6FC1307013F13F19038FFFC01000313E0000F1380381FFE00485A5B127F5B
12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFFF86CECE0
1FC66CEB8007D90FFCC9FC322F7DAD36>97 D<EC3FF80103B57E010F14E0013F8090397F
F83FF89039FFC007FC48496C7E48496C7E48486D1380485A001FED7FC05B003FED3FE0A2
127F5B17F0161F12FFA290B7FCA401F0C9FCA5127FA27FA2123F17F06C7E16016C6C15E0
6C6C14036C6DEB07C06C6DEB0F806C01F0EB3F0090397FFE01FE011FB55A010714F00101
14C09026001FFEC7FC2C2F7DAD33>101 D<DAFFE0137E010F9039FE03FF80013FEBFF8F
90B812C048D9C07F133F489038001FF84848EB0FFC4848903907FE1F80001F9238FF0F00
496D90C7FCA2003F82A8001F93C7FCA26D5B000F5D6C6C495A6C6C495A6C9038C07FF048
90B55A1680D8078F49C8FC018013E0000F90CAFCA47F7F7F90B612C016FC6CEDFF8017E0
6C826C16FC7E000382000F82D81FF0C77ED83FC014074848020113808248C9FC177FA46D
15FF007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B07FFC001FFF0000190B612C06C
6C92C7FC010F14F8D9007F90C8FC32427DAC38>103 D<137C48B4FC4813804813C0A248
13E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518
467CC520>105 D<EB7FC0B5FCA512037EB3B3B3A3B61280A519457CC420>108
D<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F00039039
9F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>110
D<EC1FFC49B512C0010714F0011F14FC90397FF80FFF9026FFC0017F48496C7F4848C7EA
3FE000078248486E7E49140F001F82A2003F82491407007F82A400FF1780AA007F1700A4
6C6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF80F90C7
FC6DB55A010F14F8010114C09026001FFCC8FC312F7DAD38>I<90387F807FB53881FFE0
028313F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8
ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E>114 D<90391FFC038090B51287000314
FF120F381FF003383FC00049133F48C7121F127E00FE140FA215077EA27F01E090C7FC13
FE387FFFF014FF6C14C015F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0
140000F0143FA26C141F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE
90B55A00FC5CD8F03F13E026E007FEC7FC232F7CAD2C>I<EB01E0A51303A41307A2130F
A2131FA2133F137F13FF1203000F90B51280B7FCA4C601E0C7FCB3A3ED01E0A9150302F0
13C0137F150790393FF80F8090391FFC1F006DB5FC6D13FC01015B9038003FE023407EBE
2C>I<D97FC049B4FCB50103B5FCA50003EC000F6C81B3A85EA25EA25E7E6E491380017F
D901F713FE9138F807E76DB512C7010F1407010313FE9026007FF0EBFC00372E7CAC3E>
I<B5D8FE1FB539801FFFF0A500019027C0003FE0C7EA7C007114786E17F86C6F6C5C6E16
01017F6E6C5CA26E011F1403013F6F5C6E013F1407011F6F5CA26E0179140F010F048090
C7FC6E01F95C6D02F0EBC01E15806D902681E07F5B18E003C3157C6D9139C03FF07815E7
6DDA801F5B18F803FF14F96E9039000FFDE018FF6E486D5BA36E486D5BA26E486D90C8FC
A24B7F02075DA26E48147C4B143C4C2C7EAB51>119 D<B6903803FFFCA5000101E09038
003E006C163C80017F5D8017F8013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F
6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF
6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578A215F85D14015D001F1303D83F805B387F
C007D8FFE05B140F92C9FC5C143E495A387FC1F8EB07F06CB45A6C5B000790CAFCEA01FC
36407EAB3B>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Ff cmmi8 8 12
/Ff 12 121 df<92387FC003913903FFF80791391FC03E0F91397E00071FD901F8EB03BF
4948EB01FED90FC013004948147E49C8FC017E157C49153C485A120348481538485AA248
5A173048481500A2127F90CAFCA35A5AA5EE018016031700A2007E5D1606160E6C5D5E6C
6C5C000F5D6C6C495A6C6CEB0780D801F8011EC7FCD8007E13F890381FFFE0010390C8FC
302F7CAD32>67 D<013FB7FCA2D900FEC7127F171F4A140FA20101150717065CA21303A2
5C16300107147017004A136016E0130F15019138C007C091B5FC5BECC0074A6C5AA2133F
A2020090C7FCA25B92C8FC137EA213FEA25BA21201A25BA21203B512F0A2302D7DAC2D>
70 D<B500C090380FFFC0A2D807F8C73801FC006C48EC00F05F4C5A5F6D4AC7FC120116
065EA25E6D5C12005E5EA24B5A6D49C8FCA2017E13065DA25D017F5BA26D5B5DA24A5A02
83C9FCA2EB1F86148CA2149814F0A26D5A5CA25C91CAFCA21306322E7CAC29>86
D<13F8121FA21201A25BA21203A25BA21207A25BA2120FEBC7E0EB9FF8EBB83C381FF01E
EBE01F13C09038800F80EA3F00A2123EA2007E131FA2127CA2143F00FC14005AA2147EA2
147C14FC5C387801F01303495A383C0F806C48C7FCEA0FFCEA03F0192F7DAD1E>98
D<EB01F8EB0FFE90383E0780EB7C01D801F813C03803F0073807E00FEA0FC00180138012
1F48C8FCA25A127EA312FE5AA51560007C14E0EC01C0EC03806CEB0F00001E131C380F81
F83807FFE0C648C7FC1B1F7D9D1F>I<EB03F8EB0FFE90383E0780EBF803D801F013C038
03E001EA07C0000F1303D81F8013801407393F000F00141E387F01FCEBFFF091C7FC007E
C8FC12FE5AA4127C156015E0EC01C06CEB0380EC0F006C131C380F81F83803FFE0C648C7
FC1B1F7D9D21>101 D<1307EB0F80EB1FC0A2EB0F80EB070090C7FCA9EA01E0EA07F8EA
0E3CEA1C3E123812301270EA607EEAE07C12C013FC485A120012015B12035BA21207EBC0
4014C0120F13801381381F01801303EB0700EA0F06131EEA07F8EA01F0122E7EAC18>
105 D<15E0EC01F01403A3EC01C091C7FCA9147CEB03FE9038078F80EB0E07131C013813
C01330EB700F0160138013E013C0EB801F13001500A25CA2143EA2147EA2147CA214FCA2
5CA21301A25CA21303A25CA2130700385BEAFC0F5C49C7FCEAF83EEAF0F8EA7FF0EA1F80
1C3B81AC1D>I<131FEA03FFA2EA003FA2133EA2137EA2137CA213FCA25BA2120115F890
38F003FCEC0F0E0003EB1C1EEC387EEBE07014E03807E1C09038E3803849C7FC13CEEA0F
DC13F8A2EBFF80381F9FE0EB83F0EB01F81300481404150C123EA2007E141C1518007CEB
F038ECF83000FC1470EC78E048EB3FC00070EB0F801F2F7DAD25>I<3907C007E0391FE0
3FF83918F8783E393879E01E39307B801F38707F00126013FEEAE0FC12C05B00815C0001
143E5BA20003147E157C5B15FC0007ECF8081618EBC00115F0000F1538913803E0300180
147016E0001F010113C015E390C7EAFF00000E143E251F7E9D2B>110
D<D801E01570D807F890381C01F8D80E3C133ED81C3E017E13FC0038147C003015000070
167CD8607E01FC1378D8E07C49133812C013FC3880F8010000163000015C13F002031470
0003166001E05BA217E00007010714C001C0EBC00117801603000316006D486C5A160E3A
01F01DF01C3A00F838F83890397FF07FF090390FC00FC02E1F7E9D33>119
D<013F137C9038FFC1FF3A01C1E383803A0380F703C0390700F60F000E13FE4813FC1218
0038EC0700003049C7FCA2EA200100005BA313035CA301075B5D14C000385CD87C0F1306
00FC140E011F130C011B131C39F03BE038D8707113F0393FE0FFC0260F803FC7FC221F7E
9D28>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fg cmsy8 8 2
/Fg 2 49 df<130C131EA50060EB01800078130739FC0C0FC0007FEB3F80393F8C7F0038
07CCF83801FFE038007F80011EC7FCEB7F803801FFE03807CCF8383F8C7F397F0C3F8000
FCEB0FC039781E078000601301000090C7FCA5130C1A1D7C9E23>3
D<137813FE1201A3120313FCA3EA07F8A313F0A2EA0FE0A313C0121F1380A3EA3F00A312
3E127E127CA35AA35A0F227EA413>48 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh cmr8 8 8
/Fh 8 62 df<13031307130E131C1338137013F0EA01E013C01203EA0780A2EA0F00A212
1EA35AA45AA512F8A25AAB7EA21278A57EA47EA37EA2EA0780A2EA03C0120113E0EA00F0
13701338131C130E1307130310437AB11B>40 D<12C07E12707E7E7E120FEA0780120313
C0EA01E0A2EA00F0A21378A3133CA4131EA5131FA2130FAB131FA2131EA5133CA41378A3
13F0A2EA01E0A2EA03C013801207EA0F00120E5A5A5A5A5A10437CB11B>I<EB3FC0EBFF
F03803E07C48487E48487E497E001EEB0780A2003E14C0A248EB03E0A500FC14F0B0007C
14E0A3007E1307003E14C0A36CEB0F806C14006D5A3807C03E3803F0FC3800FFF0EB3FC0
1C2D7DAB23>48 D<130C133C137CEA03FC12FFEAFC7C1200B3B113FE387FFFFEA2172C7A
AB23>I<EB7F803801FFF0380780FC380E003F48EB1F8048EB0FC05A0060EB07E012F000
FC14F07E1403A3007C1307C7FCA215E0140F15C0141F1580EC3F00147E147C5C495A495A
495A495A011EC7FC5B5B4913305B485A4848136048C7FC000E14E0001FB5FC5A4814C0B6
FCA21C2C7DAB23>I<EB3FC03801FFF03807C0FC380E007E487FEC1F80003F14C0A2EB80
0F1300A2000C131FC7FC1580A2EC3F00143E5C5CEB03F0EBFFC014F0EB00FC143FEC1F80
15C0140F15E0A2EC07F0A21238127C12FEA3EC0FE012F8006014C00070131F6C1480001E
EB3F00380780FC3801FFF038007FC01C2D7DAB23>I<140EA2141E143EA2147E14FEA2EB
01BE1303143E1306130E130C131813381330136013E013C0EA0180120313001206120E12
0C5A123812305A12E0B612FCA2C7EA3E00A9147F90381FFFFCA21E2D7EAC23>I<B812FC
A3CBFCADB812FCA32E137C9937>61 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fi cmsy10 10.95 25
/Fi 25 119 df<007FB812FEBAFCA26C17FE3804799847>0 D<0060166000F816F06C15
01007E15036CED07E06C6CEC0FC06C6CEC1F806C6CEC3F006C6C147E6C6C5C6C6C495A01
7E495A6D495A6D6C485A6D6C485A6D6C48C7FC903803F07E6D6C5A903800FDF8EC7FF06E
5A6E5AA24A7E4A7EECFDF8903801F8FC903803F07E49487E49486C7E49486C7E49486C7E
017E6D7E496D7E48486D7E4848147E4848804848EC1F804848EC0FC048C8EA07E0007EED
03F0481501481500006016602C2C73AC47>2 D<EB03C0A2805CA600F0140F00FC143F00
FE147F00FF14FF393FC3C3FC390FE187F03903F18FC03900FDBF00EB3FFCEB0FF0EB03C0
EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F0393FC3C3FC39FF03C0FF00FE147F00FC14
3F00F0140F00001400A6805CA220277AA92D>I<EB0FFCEB3FFF90B512C0000314F04880
488048804880A2481580A3B712C0AA6C1580A36C1500A26C5C6C5C6C5C6C5CC614C0013F
90C7FCEB0FFC22227BA72D>15 D<007FB612C0B712FC16FF6C16C0C9EA7FF0EE07F8EE01
FEEE007FEF1F80EF0FC0EF07E0EF03F01701EF00F8A2187CA2183EA2181EA2181FA2180F
A8181FA2181EA2183EA2187CA218F8A2EF01F01703EF07E0EF0FC0EF1F80EF7F00EE01FE
EE07F8EE7FF0007FB712C0B8C7FC16FC6C15C0CCFCAE007FB812F8B912FCA26C17F83848
79B947>19 D<180E183F18FFEF03FEEF0FF8EF3FE0EFFF80933803FE00EE0FF8EE3FE0EE
FF80DB03FEC7FCED0FF8ED7FE0913801FF80DA07FEC8FCEC1FF8EC7FC04948C9FCEB07FC
EB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CBFCA2EA7FC0EA1FF0EA07FCEA01FF38
007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FE913801FF809138007FE0ED1FF8
ED03FE923800FF80EE3FE0EE0FF8EE03FE933800FF80EF3FE0EF0FF8EF03FEEF00FF183F
180E1800AE007FB812FEBAFCA26C17FE384879B947>I<127012FCB4FCEA7FC0EA1FF0EA
07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FE913801FF809138
007FE0ED1FF8ED03FE923800FF80EE3FE0EE0FF8EE03FE933800FF80EF3FE0EF0FF8EF03
FEEF00FFA2EF03FEEF0FF8EF3FE0EFFF80933803FE00EE0FF8EE3FE0EEFF80DB03FEC7FC
ED0FF8ED7FE0913801FF80DA07FEC8FCEC1FF8EC7FC04948C9FCEB07FCEB1FF0EB7FC048
48CAFCEA07FCEA1FF0EA7FC048CBFC12FC1270CCFCAE007FB812FEBAFCA26C17FE384879
B947>I<19301978A2197C193CA2193E191EA2191F737EA2737E737EA2737E737E1A7C1A
7EF21F80F20FC0F207F0007FBB12FCBDFCA26C1AFCCDEA07F0F20FC0F21F80F27E001A7C
624F5A4F5AA24F5A4F5AA24FC7FC191EA2193E193CA2197C1978A2193050307BAE5B>33
D<EF01E0841700841878187C84A284727E727E851803727E007FB912FCBA7E856C85CCEA
07E0737EF101FCF1007FF21FC0F20FF8F203FFA2F20FF8F21FC0F27F00F101FCF103F04F
5A007FBA1280BBC7FC616C60CBEA01F04E5A1807614E5A4EC8FC183EA260187818F86017
016050327BAF5B>41 D<0203B512F8023F14FC91B6FC010315F8D90FFEC8FCEB1FE0EB7F
8001FEC9FCEA01F8485A485A485A5B48CAFCA2123EA25AA21278A212F8A25AA2B812F817
FCA217F800F0CAFCA27EA21278A2127CA27EA27EA26C7E7F6C7E6C7E6C7EEA00FEEB7F80
EB1FE0EB0FFE0103B612F8010015FC143F020314F82E3679B13D>50
D<126012F0AE12FCA412F0AE126006227BA700>55 D<EE3FE0923803FFF8031F13FC037F
13FE4AB5FC913807FC0F91380FC00391383F0001147C4A14FC495A494814F8495A4948EB
03F0131F49C7EA07E0133E017EEC0FC05BEE1F8048481500163E4848143893C7FC485AA2
120F5B121FA3485AA4127F90CAFCA45AA87F17E01603EE07C06C6CEC0F80161F6DEC3F00
163E6C6C5C6D5C6C6C495A01FFEB07E06C9038E03F806C90B5C7FC6C14FC6C14F06C6C13
80D90FFCC8FC2F427FBF30>67 D<0507B512FE173F4CB612FC040715F0041F15C0933A7F
8000F8009339FC0001F0DB03F0495ADB07C0495A4B48130F4BC7485A033E92C7FC4B5C03
FC147E4A5A4B5C1403020714014B5C020F14034B5C92C7FC020C140791C85B170FA26017
1FA260173FA295C8FC5FA317FEA44C5AA44C5AA44C5AA21203000F5E003F150F485EA248
4B5AA24CC9FC163E6D147E5E6D5C4B5A6C6C495A6D495A6C6C495A01FE013FCAFC391FFF
C0FC6CEBFFF86C14E06C1480C649CBFCEB1FF047497BBD3E>74 D<F41F80F301FF1B0763
1B3F51130098B5FCED01C0DB07E04B5B030F95C7FC031F17F0F203C0705E1A0798C8FC82
621A0E153F70151E1A1CA2DB3BFE153C15390379163882037816781A7003707F047F15F0
15F0715CEDE03F1901020180041F5DA203C06D1303160F02035F03807F04071407020794
C9FC83DB00035CA24A6E130E020E130171131E141E70141C021C1580057F133C023C15C0
02381638173F4AEDE078171F02F015F04A1670EF0FF8010117F04AEC07FCD81003705A00
38491403D83C0716FFD87F0FC87E01FF6F5B485A187F5B725A6C48041ECAFC6C4893CBFC
6C5AEA0780594C82C64B>78 D<4AB6FC023F15F849B712FE0107EEFF80011F17E090287F
E1FC007F13F02601FC01020313F8D803F0030013FC2607C003ED3FFED80F80160FD81F00
160748EF03FF484A80127E12FE488300F0130712C0C74915FEA319FC020F15014B15F8A2
F003F0A2021FED07E04B15C0F00F80F01F00183E4A485C4D5AEF03E0EF0FC04AC7007FC7
FCEE0FFE923807FFF8DA7E1F13C0DAFE3F90C8FCED7FF84BC9FC4948CAFCA35C1303A25C
1307A25C130F5CA2131F5C133FA291CBFC5B137EA25B13F013C040437EBD3F>80
D<4AB612C0023F15FE49B812C0010717F0011F8390287FE1FC001F7F2601FC0102007FD8
03F0161FD807C0EE07FF260F800381D81F00825A4883007E5C12FE486012F000C01307C7
5F4B140161611803020F4B5A4B5D4E5A4EC8FC183E4A4814FCEF01F0EF0FE0EFFF809126
3F803F90C9FCEEFFFC038113E015834A487F1500EE3FF8027E131F02FE6D7EA24A6D7E13
0116034A80010380845C01078072EB01804A027F140F010F70EB1F00624A6E6C137E011F
187C4A6E6C5B72485A013F92390FFF0FE091C8ECFF80496F91C7FC017E6F13FC01786F13
E001E06F6CC8FC49407EBD4D>82 D<EE0FFE93387FFFC00303B512F8030F14FC033F14FE
4BC6FCDA01F8EB1FFFDA03E013034A487F4A5A4AC8FC4A15FE5C027E15FC02FE15F8EF01
F018C0010192C7FC80A3816D7F8181EC7FFC6EB4FC6E13C06E13F06E13FC020113FF6E6C
7F031F13E003077F03017F6F6C7E707E160F707E8201786E1380EA01F8D807F080EA0FC0
4848157F123F90C9FC481700A2177E5A5F7F4C5A6D5D6D4A5A6C6C4A5A6D4A5AD83FFE02
3FC7FC6C6C6C13FC6C9038F00FF86C90B512E06C1580C64AC8FC013F13F0010790C9FC38
427EBF37>I<1A071A1F1A7E023FB812FC49B912F8010718E0011F18C0017FEFFE0090B9
12F0D801F0C76CC9FCD807E05C120F48485B003F5D5B127F150348C75B5A5A00F01407C8
5BA3150F5EA3151F5EA3153F5EA3157F5EA315FF93CAFCA35C5DA314035DA314075DA34A
5AA34A5AA25D143FA24A5AA292CBFC14FE5C495A14C048477DC032>I<DB3FE0EC03C0DB
FFF0EC0FE002036DEC3FF0020F167F4A7FDA3F0F151FDA7E07150F027C7FDAF80316E014
001AC003011680F11F00193E614E5AF003E070495AF01F80063EC7FC18FC6FEB01F0EF07
E0EF1F804DC8FC17FC17F05F1780A315035D151FED7E7F15FCEC03F0EC0FC0EC1F80EC7E
0014F8D903F080EB07C0EB1F80013EC7FC49143F485AEA03E0485A485A48C8FC48825AF0
078048DCF01FC7FC041F5B6DEDF87E01F0EDFFFC496E5B4916E06C486E1380003EC86C48
C8FC443E7BBD41>88 D<153FEC03FFEC0FE0EC3F80EC7E00495A5C495AA2495AB3AA130F
5C131F495A91C7FC13FEEA03F8EA7FE048C8FCEA7FE0EA03F8EA00FE133F806D7E130F80
1307B3AA6D7EA26D7E80EB007EEC3F80EC0FE0EC03FFEC003F205B7AC32D>102
D<12FCEAFFC0EA07F0EA01FCEA007E6D7E131F6D7EA26D7EB3AA801303806D7E1300147F
EC1FC0EC07FEEC00FFEC07FEEC1FC0EC7F0014FC1301495A5C13075CB3AA495AA2495A13
3F017EC7FC485AEA07F0EAFFC000FCC8FC205B7AC32D>I<146014F01301A214E01303A2
14C01307A2EB0F80A214005BA2131E133EA25BA2137813F8A25B1201A25B1203A2485AA2
5B120FA290C7FC5AA2123EA2123C127CA2127812F8A41278127CA2123C123EA27EA27E7F
A212077FA26C7EA212017FA212007FA21378137CA27FA2131E131FA27F1480A2EB07C0A2
130314E0A2130114F0A213001460145A77C323>I<126012F07EA21278127CA2123C123E
A27EA27E7FA212077FA26C7EA212017FA212007FA21378137CA27FA2131E131FA27F1480
A2EB07C0A2130314E0A2130114F0A414E01303A214C01307A2EB0F80A214005BA2131E13
3EA25BA2137813F8A25B1201A25B1203A2485AA25B120FA290C7FC5AA2123EA2123C127C
A2127812F8A25A1260145A7BC323>I<126012F0B3B3B3B3B11260045B76C319>I<003FB9
FC481880A219000078CCFCB3B3AA007FB9FC1980A26C1800CDFCAE007FB9FCBA1280A26C
1800394878B947>118 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fj cmtt10 10.95 49
/Fj 49 126 df<903907C007C0A2496C487EA8011F131FA202C05BA3007FB7FCA2B81280
A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F90B512FE4881B81280A36C16
00A22701FC01FCC7FCA300031303A201F85BA76C486C5AA229387DB730>35
D<EA07C0EA0FF0EA1FF8A213FCA213FE120F1207EA007EA513FE13FCA2120113F81203EA
07F0120FEA1FE0127FEAFFC013801300127C12380F1D70B730>39
D<141E147F14FF5BEB03FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B48
5A120F5BA2485AA2123F5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F
12076C7E7F12017F6C7EEB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E
184771BE30>I<127812FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C013
1FEB0FE014F01307A2EB03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA21303
14F8A2EB07F0A2130F14E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A
485A90C7FC5A1278184778BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB
3FE001C3137F9038F3F9FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0
011F90C7FC017F13C048B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E0
9038C3F87F0183133FD87E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>
I<EA03E0EA0FF0EA1FF813FCEA3FFEA213FFA27EA27E1203EA007FA2137E13FEEA01FC12
03EA07F8EA3FF0127FEAFFE0EA7F801300123C1019708B30>44 D<007FB612F0A2B712F8
A36C15F0A225077B9E30>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C
0C6E8B30>I<EB03C0497EA2130FA2131FA2133F137F13FF1203123FB5FCA213EF138FEA
7E0F1200B3B0003FB512F84814FCB612FEA26C14FC6C14F81F3977B830>49
D<EB07FC90383FFFC090B512F00003804814FE4880261FF80F1380263FE00113C09038C0
007F4848EB3FE090C7121FED0FF04814075A6C15F81503A3127E1218C8FCA2150716F015
0F16E0151F16C0153FED7F8015FF4A13005DEC07FC4A5A4A5A4A5A4A5A4A5A4990C7FC49
5A495AEB0FF0EB3FE0495A495A4890C8FC4848EB01F04848EB03F8485AEA1FE048B6FCB7
FCA37E6C15F025397BB830>I<EB03FF013F13E090B512F84814FE4880481580260FFE01
13C09038F0007F4848EB1FE0150F16F01507A26C5A6C5AC8FC150F16E0A2151FED3FC015
7FEDFF8002071300903807FFFE495B5D8115FF6D1480D9000113C09138003FE0ED1FF0ED
07F8150316FC150116FE1500A21218127EB4FCA2150116FC4814036C15F86C6C13076DEB
1FF0D83FF0133F3A1FFE01FFE06CB612C06C15806CECFE00C65C013F13F001031380273A
7CB830>I<EC03FC4A7E140F141FA2143F147F157E14FEA2EB01FCEB03F8A2EB07F0A2EB
0FE0EB1FC0A2EB3F80A2EB7F0013FEA2485A485AA2485AA2485A485AA2485AA248C7FC12
FEB8FC1780A46C1600C8007EC7FCAA91387FFFFE91B6FCA46E5B29397DB830>I<000FB6
12804815C05AA316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039
F0007FC049133F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC
150716F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C
5C6C5C6C14E06C6C1380D90FFCC7FC25397BB730>I<EC0FF8EC7FFF49B51280010714E0
131F4914F090387FF80F9039FFC007F84813803803FE005B485A4848EB03F0ED01E04848
90C7FC5B123F5BA2127FEB000C903803FFE0010F13F8D8FF3F13FE48B6FCB7128016C090
39FE007FE001F8EB1FF001E0130F49EB07F8ED03FC5B90C7120116FE1500A37EA46C7E15
016D14FC121F6D1303000FEC07F86D130F6C6CEB1FF06DEB3FE03A03FF81FFC06C90B512
806C15006D5B011F13F8010713E001011380273A7CB830>I<127CB712FC16FEA416FC48
C7EA0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA2
4A5AA24AC7FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7C
B830>I<49B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003F
F049131FD83FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF0
6C6CEB1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE
48802607FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C71201
4815FE481400A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01
FFE06C90B512C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<007FB7FC
A2B81280A36C16006C5DCBFCA7003FB612FE4881B81280A36C1600A229157DA530>61
D<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C000037F6C13F86C6C7EEB1FFF6D7F01
0313E06D7F9038007FFC6E7E91380FFF806E13C0020113F080ED3FF8151F153FEDFFF05C
020713C04A138091383FFE004A5A903801FFF0495B010F13804990C7FCEB7FFC48485A48
13E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9FC127E1278252F7BB230>I<91387F80
3C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE000F4848
13075B48481303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E7EA2167C
6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901FF801F6C
9038E07FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830>67
D<003FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FC
A69038FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>70
D<02FF13F00103EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848133F4848
131F49130F485A491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A
14805CA26C7F6C6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803
FE133F6C6C137FECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB8
30>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA28217
80163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FC
B0387FFFC0B57EA46C5B29387EB730>80 D<003FB712C04816E0B8FCA43AFE003F800FA8
007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>84
D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 D<EB3FFC48B57E4814E048804880
48809038F00FFE9038E001FF806F7E6C48133F6C4880C8121FA491B5FC130F137F48B6FC
12075A48EBC01F383FFC00EA7FE0138048C7FC5AA46C143FA26C6C137F9038C001FF263F
F80FEBFFC06CB712E0A2000714F76C14C3C6020013C0D93FF090C7FC2B2A7CA830>97
D<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF80027F13E091B57E90B612FC82
ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F4915E0160FA217F01607A8160F
A217E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E495CD97E
7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFFE0010713FC011F7F017F7F90B6
12804815C048EB807F3907FC003F485A485A49EB1F804848EB0F004990C7FC127F90C9FC
A25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C6C14C0D807FE133F9039FFC0FF
806C90B5FCC615006D5B011F13F801075B01011380232A7AA830>I<913801FFE04A7F5C
A28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F49
131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F
390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FC
C8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07FC
007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA516
F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE0
6C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>I<EDFF80020713
E0021F13F05C4A13F891B5FC491387903803FE079138FC03F0903907F800C04A1300A800
3FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003FB512FE4880B71280A26C15006C
5C25397DB830>I<D903FC13FF90261FFF8713C04913DF90B712E05A5A2607FE07138F90
3AF801FE07C048486C6CC7FCA2497F001F8149133FA56D137F000F92C7FC6D5BA26C6C48
5AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9FCA37F7F6CB512F015FF6C15C0
4815F0488148813A3FE0001FFE0180130148C8127F007E8100FE168048151FA56C153F00
7FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A6C5D000115C06C6C91C7FC011F
13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F123F1200AAEC01FE91380FFF80
023F13E091B57E90B67EA29138FE07FCECF8039138E001FE14C0EC8000A291C7FCA25BB3
A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F3880B730>I<
14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003F
B612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0EC07F0A2EC0FF8A3EC07F0A2EC
01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07F0A2123C007EEB0FE0B4131FEC
3FC0147F90B512806C14005C6C5B000F13F0000313C01D4E7CB830>I<387FFFF8B57EA4
7EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB730>108
D<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE
07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548
018F13C0A46C486C01071380322881A730>I<EC01FE3A3FFC0FFF80267FFE3F13E000FF
90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14C0EC8000A291C7FCA25BB3A23B
3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F2880A730>I<49B4
FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB
0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303
003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15
006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<EC03FE3A3FFC1FFF80267FFE7F
13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF4A6C13804A137F4AEB3FC091C7
121F4915E0160FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDAF003
13009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03FC91C9FCAD383FFFF8487FB57E
A26C5B6C5B2C3C80A730>I<ED07F83A3FFF803FFF486DB51280B512C302CF14C06C13DF
6C9038FFFC3FD8001F13E09238801F809238000F004A90C7FC5C5C5CA25CA45CAF003FB5
12FC4880B7FCA26C5C6C5C2A287EA730>114 D<90381FFC1E48B5129F000714FF5A5A5A
387FF007EB800100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14
E0000114F86C6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2150F7EA27F15
1F6DEB3F806D137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A
79A830>I<EB0780497E131FA9003FB612E04815F0B7FCA36C15E026001FC0C7FCB216F8
ED01FCA5ECE003010FEB07F814F09138FC1FF06DB512E06D14C016806D14009038007FFC
EC1FF026337EB130>I<D83FFCEB3FFC486C497E00FF14FFA2007F147F003F143F000014
00B3A41501A2150315076D130F903A7FC07FFFF891B612FC6D15FE7F6D4913FC6D9038F8
7FF8010001C0C7FC2F2880A630>I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C49
6C13803B01F80003F000A26D130700005DA26D130F017E5CA2017F131F6D5CA2EC803F01
1F91C7FCA26E5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0A314FF6D5BA3
6E5A6E5A2B277EA630>I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B
01FC0003F000A2000014076D5C137E150F017F5C7F151FD91F805BA214C0010F49C7FCA2
14E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA3
5DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C
6C90C9FC6C5AEA01F02B3C7EA630>121 D<001FB612FC4815FE5AA316FC90C7EA0FF8ED
1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC49
5A495A495A495A495A495A4948133E4890C7127F485A485A485A485A485A48B7FCB8FCA4
6C15FE28277DA630>I<ED3FF0913803FFF8140F5C147F16F09138FFF00092C7FC495A5C
B3A21303495A133F383FFFF0B55A5C91C8FC14C080003F7F38003FF813076D7E1301B3A2
806D7E15F091387FFFF016F8141F8014039138003FF025477BBE30>I<127CA212FEB3B3
B3AD127CA207476CBE30>I<EA7FE0EAFFFE6D7E8014F07EC66C7E13076D7E1301B3A280
6D7E15E091387FFFE06E13F8801407141F5C4A13E09138FFE00092C7FC495A5CB3A21303
495A137F387FFFF0B5FC14C05C49C8FCEA7FE025477BBE30>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fk cmbx10 10.95 41
/Fk 41 122 df<EDFFF8020F13FF027F8049B612E001079038C01FF090390FFE0007D91F
F8497ED93FE0131F4948497E13FF5C5A91C7FCA2705A705AEE03C093C8FCA6EE03FCB8FC
A50001903880001F160FB3AB007FD9FE03B512F0A534407EBF3A>12
D<EC0780140F141FEC3E0014FE495A495A5C495A130F495A495AA249C7FC5B5B1201485A
A212075BA2120F5B121FA3485AA4127F5BA512FFB0127FA57F123FA46C7EA3120F7F1207
A27F1203A26C7E12007F7F6D7EA26D7E6D7E13076D7E806D7E6D7E143EEC1F80140F1407
195A77C329>40 D<127012F8127C7EEA3F806C7E6C7E12076C7E7F6C7E6C7EA2137F8013
3F806D7EA280130FA280130780A36D7EA4807FA51580B01500A55B5CA4495AA35C130F5C
A2131F5CA2495A5C137F91C7FC13FEA2485A485A5B485A120F485A485A003EC8FC5A5A12
70195A7AC329>I<B612E0A91B097F9823>45 D<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6
EA7FF8EA3FF0EA1FE0EA0FC00E0E798D1D>I<ECFFE0010713FC011F13FF017F14C0D9FF
E07F489038803FF03A03FE000FF848486D7EA248486D7E001F81A348486D1380A3007F16
C0A500FF16E0B3A2007F16C0A5003F16806D5BA2001F1600A2000F5D6D13076C6C495A6C
6C495A6C6D485A6C9038E0FFE06DB55A011F91C7FC010713FC010013E02B3D7CBB34>48
D<140F143F5C495A130F48B5FCB6FCA313F7EAFE071200B3B3A8B712F0A5243C78BB34>
I<903803FF80013F13F890B512FE00036E7E4881260FF80F7F261FC0037F4848C67F486C
6D7E6D6D7E487E6D6D7EA26F1380A46C5A6C5A6C5A0007C7FCC8FC4B1300A25E153F5E4B
5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80EB01FC495A4948
EB1F00495AEB1F8049C7FC017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4293C7BBB34>I<
903801FFE0010F13FE013F6D7E90B612E04801817F3A03FC007FF8D807F06D7E82D80FFC
131F6D80121F7FA56C5A5E6C48133FD801F05CC8FC4B5A5E4B5A4A5B020F5B902607FFFE
C7FC15F815FEEDFFC0D9000113F06E6C7E6F7E6F7E6F7E1780A26F13C0A217E0EA0FC048
7E487E487E487EA317C0A25D491580127F49491300D83FC0495A6C6C495A3A0FFE01FFF8
6CB65A6C5DC61580013F49C7FC010313E02B3D7CBB34>I<ED01F815031507A2150F151F
153FA2157F15FF5C5CA25C5CEC1FBFEC3F3F143E147C14FCEB01F814F0EB03E01307EB0F
C0EB1F801400133E137E5B485A5B485A1207485A5B48C7FC5A127E5AB812F8A5C8387FF8
00AA49B612F8A52D3C7DBB34>I<00071538D80FE0EB01F801FE133F90B6FC5E5E5E5E93
C7FC5D15F85D15C04AC8FC0180C9FCA9ECFFC0018713FC019F13FF90B67E020113E09039
F8007FF0496D7E01C06D7E5B6CC77FC8120F82A31780A21207EA1FC0487E487E12FF7FA2
1700A25B4B5A6C5A01805C6CC7123F6D495AD81FE0495A260FFC075B6CB65A6C92C7FCC6
14FC013F13F0010790C8FC293D7BBB34>I<EC07FF023F13C049B512F001078049EB03FC
90383FF80090397FE001FE9038FFC0034849487E48495AA2485A120FA2485A6F5A003F6E
5A6F5A92C8FC485AA21402EC3FFE00FF496C7E01F9B512E001FB809138E03FF89039FF80
0FFC4A6C7E825B6F13804915C0A317E05BA4127FA5123FA26D15C0121FA2000F4A13806D
150012076C6C495A6C6D485A6C9038E07FF86DB55A6D5C6D1480010749C7FC010013F02B
3D7CBB34>I<121F7F13F890B712F0A45A17E017C0178017005E5E5A007EC7EA01F84B5A
007C4A5A4B5A4B5A93C7FC485C157E5DC7485A4A5AA24A5A140F5D141F143F5D147FA214
FF92C8FC5BA25BA3495AA3130FA5131FAA6D5A6D5A6D5A2C3F7ABD34>I<ECFFF0010713
FE011F6D7E017F14E09039FFC07FF03A01FE001FF848486D7E48486D7E1503485A828112
1FA27F7F7F6D5B02C05B14F06C6D485A9138FE0FF89138FF9FF06CECFFE06C5D5E6C92C7
FC6C816D14E0011F80498090B67E48812607FE3F7F48486C1480381FF807D9F00114C048
486C7E007F8049010F13E0150348487F81167FA2163FA36D15C0127FEE7F807F6C6CECFF
006C6C5B01FEEB07FE3A0FFFC03FFC6C90B55A000115E06C6C5C011F49C7FC010113F02B
3D7CBB34>I<903801FFE0010F13FC013F13FF90B612C04801E07F489038003FF048486D
7E000F6E7E485A6F7E123F48488081178012FFA217C0A517E0A4007F5CA4003F5C6C7E5D
6C7E00075C3903FF80FB6C13FF6C6C13F36D13C3010F018313C090380008031400A24B13
80EA03F0487E486C1500487E4B5AA25E151F4B5A495C6C48EBFFE049485B2607FC0F5B6C
B6C7FC6C14FC6C14F06D13C0D90FFEC8FC2B3D7CBB34>I<90381FFF8090B512F0000314
FC000F14FF261FF8071380263FC00113C0018014E0486C7E486C14F07FA56C5A4A13E0EA
3FC0260F000313C0C714804A13004A5A4A5A15F04A5A4A5A5D92C7FC14FE5C13015CA25C
AA90C9FCA8EB03F0497E497E497E497EA66D5A6D5A6D5A6D5A24407ABF31>63
D<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01039138803F
FB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8150F48491507485B4A15
03481701485B18004890CAFC197E5A5B193E127FA349170012FFAC127F7F193EA2123FA2
7F6C187E197C6C7F19FC6C6D16F86C6D150119F06C6D15036C6DED07E0D97FFEED0FC06D
6CED3F80010F01C0ECFF006D01F8EB03FE6D9039FF801FFC010091B55A023F15E0020715
80020002FCC7FC030713C03F407ABE4C>67 D<B812F8EFFF8018F018FC18FF26003FFCC7
6C13C005077F05017F716C7E727E727E727E721380A27213C0A27213E0A21AF084A21AF8
A41AFCA5197FA319FFA51AF8A41AF0A2601AE0A24E13C0A24E13804E1300604E5A4E5A4D
485A050713E0057F5BBA5A4EC7FC18F818C005F8C8FC463E7DBD50>I<B712E0A526003F
FEC9FCB3AD183EA4187E187CA418FCA21701A2EF03F8A21707170F171F177FEE01FF160F
B9FC18F0A4373E7DBD3F>76 D<B812F017FF18C018F018FC26003FFCC77FEF1FFF711380
7113C07113E0A27113F0A319F8A819F0A34D13E019C05F4D1380053F1300EFFFFE91B712
F860188005FCC7FC4ACAFCB3A4B77EA53D3E7DBD47>80 D<903A03FFC001C0011FEBF803
017FEBFE0748B6128F4815DF48010013FFD80FF8130F48481303497F4848EB007F127F49
143F161F12FF160FA27F1607A27F7F01FC91C7FCEBFF806C13F8ECFFC06C14FCEDFF806C
15E016F86C816C816C816C16806C6C15C07F010715E0EB007F020714F0EC003F15030300
13F8167F163F127800F8151FA2160FA27EA217F07E161F6C16E06D143F01E015C001F8EC
7F8001FEEB01FF9026FFE00713004890B55A486C14F8D8F81F5CD8F00314C027E0003FFE
C7FC2D407ABE3A>83 D<003FB912FCA5903BFE003FFE003FD87FF0EE0FFE01C016034916
0190C71500197E127EA2007C183EA400FC183F48181FA5C81600B3AF010FB712F8A5403D
7CBC49>I<B6D8FC03B600F090B512FEA5C601FCC7000301F0C8EA7E00017F6F177C856E
6E17FC013F63856D6C037F4B5AA26F4A6C14036D634D7F6F18076D634D806F02EF150F6D
636F01076E131F6D04C793C7FC050F806F02835D6D1A3E051F806F0201157E027F197C6F
013F6E13FC023FDA3E005D057E806F017C017F13016E6105FC14FE7048013F13036E6104
C1EDFF076E4A6D5C04C31687DCE3E06D138F6E6104E716CFDCF7C06D13DF6E96C8FC04FF
16FF6E4A6D5BA294C77E6F5FA24C80033F5FA26F486F5AA24C153F030F5FA24C151F0307
5FA26F486F5A673F7EBD6C>87 D<903807FFC0013F13F848B6FC48812607FE037F260FF8
007F6DEB3FF0486C806F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FF
FE0F4813E0000F1380381FFE00485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C
6C01FB13FE391FFF07F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933>97
D<EC7FF00107B5FC011F14C0017F14E09039FFF01FF0489038800FF848EB001F4848EB3F
FC120F485AA2485AA2007FEC1FF849EB0FF0ED03C000FF91C7FCAB127F7FA3003F153E7F
001F157E6C6C147C6C6C14FC91388001F86C9038C003F0C69038F81FE06DB512C0011F14
800107EBFE009038007FF0272B7DA92E>99 D<EE07F8ED07FFA5ED003F161FAFEC7FF090
3807FFFE011FEBFF9F017F14DF9039FFF01FFF48EBC00348EB00014848EB007F485A001F
153F5B123FA2127F5BA212FFAA127FA37F123FA26C6C147F120F6D14FF6C6C01037F6C6D
48EBFFE06CEBF03F6C6CB512BF6D143F010713FC010001E0EBE00033407DBE3A>I<ECFF
F0010713FE011F6D7E017F809039FFE07FE0489038801FF048496C7E48486D7E48486D7E
121F491301003F81A2485A6F1380A212FFA290B7FCA401F0C9FCA5127FA27F123FEE0F80
6C7E161F6C6C15006C6C5C6C6D137E6C9038E001FC6C9038F80FF8013FB55A6D14C00103
91C7FC9038007FF8292B7DA930>I<EC07FE91387FFF8049B512C0010714E090390FFE3F
F0EB1FF090393FE07FF8EB7FC013FF1480A2489038003FF0ED1FE0ED0FC092C7FCAAB612
E0A500010180C7FCB3AC007FEBFF80A525407DBF20>I<903A03FF8007F0013F9038F83F
F8499038FCFFFC48B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1FC4990381F
F0F81700003F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7FC4814FC01
BF5BD80F03138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16C06C16E012
07001F16F0393FE000034848EB003F49EC1FF800FF150F90C81207A56C6CEC0FF06D141F
003F16E001F0147FD81FFC903801FFC02707FF800F13006C90B55AC615F8013F14E00101
01FCC7FC2F3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE02036D7E4A80DA0FE07F
91381F007F023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5333F7CBE3A>I<EA01
F8487E487E487E481380A66C13006C5A6C5A6C5AC8FCA913FFB5FCA512077EB3ABB512F8
A515407CBF1D>I<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D>108
D<01FFD91FF8ECFFC0B590B5010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F
91261F003FEBF8010007013EDAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA3
4A5CB3A4B5D8FE07B5D8F03FEBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E
4A80DA0FE07F91381F007F0007013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5
33297CA83A>I<EC7FF0903803FFFE011FEBFFC0017F14F09039FFE03FF8489038800FFC
3A03FE0003FE48486D7E000F168048486D13C0A2003F16E049147F007F16F0A400FF16F8
AA007F16F0A46C6CECFFE0A2001F16C06C6C491380A26C6C4913003A03FF800FFE6C9038
E03FFC6C6CB512F0011F14C0010791C7FC9038007FF02D2B7DA934>I<01FFEBFFE0B500
0713FC021FEBFF80027F80DAFF8113F09139FC007FF8000301F06D7E4A6D7E4A130F4A6D
7E1880A27013C0A38218E0AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0DA
FF035B92B55A029F91C7FC028713FC028113C00280C9FCACB512FEA5333B7DA83A>I<39
01FE01FE00FF903807FF804A13E04A13F0EC3F1F91387C3FF8000713F8000313F0EBFFE0
A29138C01FF0ED0FE091388007C092C7FCA391C8FCB3A2B6FCA525297DA82B>114
D<90383FFC1E48B512BE000714FE5A381FF00F383F800148C7FC007E147EA200FE143EA2
7E7F6D90C7FC13F8EBFFE06C13FF15C06C14F06C806C806C806C80C61580131F13000207
13C014000078147F00F8143F151F7EA27E16806C143F6D140001E013FF9038F803FE90B5
5A15F0D8F87F13C026E00FFEC7FC222B7DA929>I<EB07C0A5130FA4131FA3133F137FA2
13FF5A1207001FEBFFFEB6FCA40001EBC000B3151FA96CEBE03EA2017F137EECF8FC9038
3FFFF86D13F0010713E001001380203B7EB929>I<D9FF80EB0FF8B5EB0FFFA50007EC00
7F6C153FB3A5167FA316FF6C5C4B7F6C903AC007DFFFE09138F01F9F6DB5121F6D13FE01
0F13F8010101E0EBE000332A7CA83A>I<B500FC90383FFFC0A5000101C0903803E0006E
1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B011F143E6E137E010F147C6E13FCA2
6D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA3
5D14075D000E130FD83F805B387FC01FD8FFE090C9FC5C143E147E5CEBC1F8387FC3F038
7E0FE06CB45A6C5B6C48CAFCEA03F8323B7EA737>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fl cmti10 10.95 52
/Fl 52 123 df<DC0FF0EB0F80DC7FFEEB3FE0922601FC0FEBF878923B03F00381F03C92
3B07C007C3E07C923B0F801FC7E1FC031F013F13C318CFED3F001983069F13F8037E9039
0E1F80E005001400183F03FE92C7FC5DA3600201157E5DA318FE02035D0103B9FCA26190
290003F00001FCC7FC14074B5CA41703020F5D5DA31707021F5D5DA3170F023F5D92C7FC
A3171F4A5D147EA3173F02FE92C8FC5CA35F0101157E5CA35F495AA34C5A495AA2001E02
F05B007F9038C3F803010F5D00FF018713075F0207495AD8FE1F4948C9FCD8F81EEBC01E
3A703C03803C3A787801E0F83A1FF000FFE0D807C0EB3F80465383BF38>11
D<EE07FC93393FFF87F09338FC07C7923A03F001E7E0DB07C013F792390F8007FF031F49
13C016005DA2037E1580EF039FEF001F183F4B1500A3600201157E5DA218FE6014035D01
03B7FC60A2903A0007F000014B130360A31707020F5D5DA2170F60141F5D171F60A2143F
92C7123F95C7FCA34A5C027EEC7E07A317FE02FE4A5A4A150EA2181E181C13014AEC7C3C
1838EF3C70EF1FE04948EC07C094C8FCA3495AA3001E5BEA7F0FA200FF5BA249CBFC12FE
EAF83EEA703CEA7878EA1FF0EA07C03C5383BF35>13 D<ED01801507ED0F00151C5D5D5D
14014A5A4A5A4AC7FC141E143E5C14785C1301495AA2495A5C130F49C8FCA2133EA25BA2
13FC5B12015BA212035B1207A25B120FA25BA2121FA290C9FCA25AA2123EA2127EA2127C
A65AAB1278A67EA47EA2120E120F7EA26C7EA26C7E6C7E1360215A73C325>40
D<14031580A2EC01C0EC00E0A21570A215781538153CA3151EA4151FA2150FA7151FA915
3FA2153EA3157EA2157CA215FCA215F8A21401A215F0A2140315E0A2140715C0A2EC0F80
A2141F15005C143EA25CA25CA2495A5C1303495A5C130F49C7FC131E5B137C5B5B485A48
5A485A48C8FC121E5A12705A5A205A7FC325>I<EA01E0EA07F8120FA2EA1FFCA4EA0FF8
EA0798EA001813381330A21370136013E013C01201EA0380EA07001206120E5A5A5A5A5A
0E1C7A891C>44 D<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>46
D<15031507150F151F151E153E157EEC01FEEC03FC1407141FEB01FF90380FFBF8EB1FC3
EB0E07130015F0A2140FA215E0A2141FA215C0A2143FA21580A2147FA21500A25CA25CA2
1301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CEB7FE0B612F0A215E0203D77
BC2E>49 D<15FE913803FFC091380F01F091383C00F84A137C4A7F4948133F49487F4A14
8049C7FC5BEB0E0C011E15C0EB1C0EEB3C06133813781370020E133FD9F00C148013E014
1C0218137F00011600EBC0384A13FEEC600102E05B3A00E3C003F89039FF0007F0013C49
5A90C7485A5E037FC7FC15FC4A5A4A5AEC0FC04AC8FC147E14F8EB03E0495A011FC9FC13
3E49141801F0143C48481438485A1678485A48C85A120E001E4A5AD83FE0130301FF495A
397C3FF01FD8780FB55AD8700391C7FCD8F0015B486C6C5A6E5AEC07C02A3F79BC2E>I<
ED7F80913803FFE091380F80F891383C007C02F87FD901E07F494814804948130F49C7FC
010E15C0131EEB1C18EB3C1CEB380C0178141F17801370A2021C133F6D4814004A5BD91F
E0137ED90F805B90C8FC4B5A4B5A4B5AED1F8003FFC7FCECFFFC15F0A2EC00FC153E153F
8182150F82A4151FA2121E127F153F485DA3484AC7FC12F800E014FE5D14016C495A0070
495A0078EB0FC00038495A6C017EC8FC380F01F83803FFE0C690C9FC2A3F78BC2E>I<16
38167E16FE16FCA3150116F8A3150316F0A2150716E0A2ED0FC0A3ED1F80A216005DA215
7EA2157C15FC5D14015D14035D4A5AA24A5AA24AC7FC143EED038091387C0FC014F8ECF0
1F01011480EB03E014C0903807803F010F1400EB1F00133E495B49137E485A485A484813
FE48B46C5A4813F04813FE267C00FF130800F090380FFFFC00601301C714E0913803F800
5DA314075DA3140F5DA3141F5DA3020EC7FC274F7DBC2E>I<02C0EB018002F0130FD901
FEEB7F0091B512FE5E5E4914E016804BC7FCECBFF8D90780C8FC91C9FCA35B130EA3131E
131CA3133C9038381FC0ECFFF090383BE07C90387F003E017E133F017C7F0178805B4980
90C7FCA6153FA4001F147F486C5C487EA24913FF00FF92C7FC90C7FC48495A12E04A5A5D
6C495A140F00705C0078495A6C495A003E01FEC8FC381F03FC380FFFF0000313C0C648C9
FC293F77BC2E>I<ED0FE0ED7FF8913801F01C913807C00E91381F800F91383E00074A13
1F4A137F494813FF1303495A494813FE131F4948137891C8FC5B13FEA2485AA212035B00
07EB1FC0EC7FF0390FF1E07C9038F3803EEBF700D81FFE7F4914805B49EB0FC0123F5B15
1F4914E0127FA25BED3FC0A248C7FCA2157F16805AA215FF1600A24A5AA2485C007C495A
A2007E495A4A5A003E495A003F495A261F807EC7FC380FC1FC6CB45A6C13E0C66CC8FC28
3F76BC2E>I<D9703FEB01C09138FF800301F3158001EFEBC00790B5EB0F0048151E1483
2603FE015B01F8147C2607F0005B49EBE3F04848137F496D5A48C71201001E4A5A150748
5D0038140F007892C7FC00705C00F0143E5A5DC8FC5DA24A5AA214035D14074A5AA2141F
5DA24AC8FCA25C147E14FEA2495AA3495AA313075C130FA25C131FA35C133FA35C91C9FC
131E2A3F73BC2E>I<157F913801FFE0913807C0F091381F007C023C133C4A133E4A131F
1301495A5C1307A2495AA2163F011F143EA2167E6E137C16F8ECE00102F013F09138F803
E09138FC07C090390FFE0F00ECFFBE6D13F86D5B7F6D7F8101037F90380F9FFFD91F0F13
80D97C0713C0497E48486C13E03903E0007F4848133F4848131F001F140F90C7FC003E14
07A2127E127CA200FC15C05AA2ED0F80A2ED1F00153E007C143C157C007E5C6CEB03F039
1F8007C0390FE03F802607FFFEC7FC000113F838003FC0283F78BC2E>I<15FF020713C0
91381F81E091383E00F002FC13F84948137C495A4948137E010F143E495A133F4A133F01
7F147F91C7FC5BA2485AA216FF12035B16FE150112075B1503A216FC491307A20003140F
16F8151F12016D133F0000EC7FF015EF90387C01CF90393E079FE090380FFE1FD903F813
C090C7123FA21680157F160015FEA24A5A001C5C007F1303485C4A5A4A5A4A5A4849C7FC
00F8137E00E05B6C485A387C07E0383FFFC06C90C8FCEA03F8283F77BC2E>I<131EEB3F
80137FEBFFC05AA214806C13005B133C90C7FCB3120FEA3FC0127FA212FFA35B6CC7FC12
3C122777A61C>I<171C173C177CA217FCA216011603A21607A24C7EA2161DA216391679
167116E1A2ED01C1A2ED038115071601150EA2031C7FA24B7EA25D15F05D4A5AA24A5AA2
4AC7FC5C140E5C021FB6FC4A81A20270C7127FA25C13015C495AA249C8FCA2130E131E13
1C133C5B01F882487ED807FEEC01FFB500E0017FEBFF80A25C39417BC044>65
D<49B712C018F818FE903B0003FC0001FF9438007F804BEC3FC0A2F01FE014074B15F018
0FA2140F5D181FA2021F16E05D183F19C0023FED7F804B14FF19004D5A027F4A5A92C7EA
07F0EF1FE0EF7F804AD903FEC7FC92B512F017FE4AC7EA3F800101ED1FE04A6E7E170784
01036F7E5CA30107825CA3010F5E4A1407A260011F150F5C4D5A60013F153F4A4A5A4D5A
017F4A90C7FC4C5A91C7EA0FF849EC3FF0B812C094C8FC16F83C3E7BBD40>I<9339FF80
01C0030F13E0033F9038F803809239FF807E07913A03FC001F0FDA0FF0EB071FDA1FC0EC
BF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E4948157C495A13FF91C9
FC4848167812035B1207491670120FA2485A95C7FC485AA3127F5BA312FF5BA490CCFCA2
170FA2170EA2171E171C173C173817786C16706D15F04C5A003F5E6D1403001F4B5A6D4A
C8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07C090397FC03F8090261FFFFEC9FC01
0713F0010013803A4272BF41>I<49B812F8A390260003FEC7121F18074B14031801F000
F014075DA3140F5D19E0A2141F4B1338A2EF7801023F027013C04B91C7FCA217F0027F5C
ED80011603160F91B65AA3ED001F49EC07805CA3010392C8FC5CF003804C13070107020E
14005C93C75A180E010F161E4A151C183CA2011F5E5C60A2013F15014A4A5A1707017F15
0F4D5A4A147F01FF913807FF80B9FCA295C7FC3D3E7BBD3E>69 D<49B812F0A390260003
FEC7123F180F4B1403A2F001E014075DA3140F5D19C0A2141F5D1770EFF003023F02E013
804B91C7FCA21601027F5CED8003A2160702FFEB1F8092B5FCA349D9003FC8FC4A7F82A2
0103140E5CA2161E0107141C5CA293C9FC130F5CA3131F5CA3133F5CA2137FA25C497EB6
12E0A33C3E7BBD3B>I<DCFF8013E0030713F0033F9038FC01C09239FFC03E03913A03FC
000F07DA0FF0EB078F4A48903803DF80DA7F80EB01FF4AC8FC495A4948ED7F00495A495A
4948814948153E495A13FF91C9FC4848163C12035B1207491638120FA2485A95C7FC485A
A3127F5BA312FF5BA34BB512FE90C7FCA292C71380A295C7FCA25EA25FA216037E6D5DA2
003F15077F001F5E6D140F6C6C141F0007153F6C6CEC7BF0D801FE14F16C6CEB03E09039
3FE01F806DB5EA0060010701F890C8FC9038007FC03B4273BF46>I<49B6FC5BA2D90003
13005D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF92C7FCA35B5CA31303
5CA313075CA3130F5CA3131F5CA3133F5CA2137FA25C497EB67EA3283E7BBD23>73
D<49B612C0A25FD9000390C8FC5D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA3
14FF92C9FCA35B5CA313035C18C0EF01E0010716C05C17031880130F4A140718005F131F
4A141EA2173E013F5D4A14FC1601017F4A5A16074A131F01FFECFFF0B8FCA25F333E7BBD
39>76 D<EEFFC0030713F892383F80FE9238FC003FDA03F0EB0F804A486D7EDA1F80804A
C76C7E027E6E7E4A81494814004948811307495A4948157F133F5C49C9FC4917805B1201
485AA212075B000F17FFA25B121F190048485DA448484B5AA34D5AA25B4D5A12FF60171F
60007F163F604D5AA24DC7FC5F003F15014C5A6D5D001F4B5A4C5A6C6C4A5A4C5A6C6C4A
C8FC000315FC6C6C495A6C6CEB07E0017FEB1F8090261FC07EC9FC903807FFF801001380
394273BF46>79 D<49B77E18F018FC903B0003FE0003FEEF00FF4BEC7F80F03FC0020715
1F19E05DA2020F16F0A25DA2141FF03FE05DA2023F16C0187F4B1580A2027FEDFF00604B
495A4D5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512FC17E04ACAFCA21303A25CA213
07A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25C497EB67EA33C3E7BBD3E>I<92
390FF001C0ED7FFE4AB5EA0380913907F80FC791390FC003EF91391F8001FF4AC7130002
7E805C495A4948143EA2495AA2010F153C5CA3011F1538A38094C7FC80A214FC6DB4FC15
F015FE6DEBFFC06D14F06D14FC6D80143F020F7F020180EC001F150303007F167F163FA2
161FA212075A5F120EA2001E153F94C7FCA2163E003E157E167C003F15FC4B5A486C5C4B
5A6D495AD87DE0EB1F80D8F8F849C8FC017F13FE39F03FFFF8D8E00F13E048C690C9FC32
427ABF33>83 D<48B9FCA25A903AFE001FF00101F89138E0007FD807E0163E49013F141E
5B48C75BA2001E147FA2001C4B131C123C003814FFA2007892C7FC12704A153C00F01738
485CC716001403A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA2147FA25DA214
FFA292C9FCA25BA25CA21303A25CEB0FFE003FB67E5AA2383D71BC41>I<B500FE91387F
FFE094B5FC19C00003018091380FFC0049C8EA07F000015F606095C7FC170EA25F173C17
386D5DA26C5E16015F4C5AA24CC8FC5E160E5E805E137F5E5EA24B5AA24B5A150793C9FC
ECC00EA2013F5B153C15385DA25D14C15DECC38014E302E7CAFCEB1FEF14EE14FCA25CA2
5CA25C5C130F5CA291CBFC130E3B406DBD44>86 D<147E49B47E903907C1C38090391F80
EFC090383F00FF017E137F4914804848133F485AA248481400120F5B001F5C157E485AA2
15FE007F5C90C7FCA21401485C5AA21403EDF0385AA21407EDE078020F1370127C021F13
F0007E013F13E0003E137FECF3E1261F01E313C03A0F8781E3803A03FF00FF00D800FC13
3E252977A72E>97 D<EB1FC0EA0FFF5CA2EA003FA291C7FCA25BA2137EA213FEA25BA212
01A25BA21203A25B147E3907F1FF809038F783E09038EF01F013FE390FF800F8A24913FC
49137C485A157E5B15FE123FA290C7FCA248130115FC127EA2140300FE14F85AA2EC07F0
A215E048130F15C0141F15800078EB3F00127C147E003C5B383E01F8381E03E06C485A6C
B4C7FCEA01F81F4076BE2A>I<EC1FE0ECFFF8903803F03E903807C00F90381F8007D93F
001380017E131F49137F485A485A000715005B000F147E484890C7FCA2485AA3127F90C9
FCA35A5AA6481403007E5C5D151E003E5C5D6C5CEC03E0390F800F802603E07EC7FC3801
FFF838003FC0212977A72A>I<EE3F80ED1FFF1700A2ED007FA2167EA216FEA25EA21501
A25EA21503A25EA21507A25E147E903801FF8F903807C1CF90391F80EFC090383F00FF01
7E137F5B48486D5A485AA2485A000F92C7FC5B001F5CA24848137EA215FE127F90C75AA2
14015A485CA2140316384814F0A21407167891380FE070127C021F13F0007E013F5B003E
137FECF3E1261F01E35B3A0F8781E3802703FF00FFC7FCD800FC133E294077BE2E>I<EC
3F80903801FFE0903807E0F890381F803CEB3E0001FC131E485A485A12074848133E4913
3C121F4848137C15F8EC03F0397F000FE0ECFF80B5EAFC0014C048C8FCA45AA61506150E
151E007C143C15786C14F0EC01E06CEB07C0390F801F003807C0FC3801FFF038007F801F
2976A72A>I<167C4BB4FC923807C78092380F83C0ED1F87161FED3F3FA2157EA21780EE
0E004BC7FCA414015DA414035DA30103B512F8A390260007E0C7FCA3140F5DA5141F5DA4
143F92C8FCA45C147EA414FE5CA413015CA4495AA4495AA4495A121E127F5C12FF49C9FC
A2EAFE1EEAF83C1270EA7878EA3FE0EA0F802A5383BF1C>I<EC03F0EC0FFC91383E0E1C
9138FC077E903901F003FE1303903807E001D90FC013FCEB1F80A2EB3F004914F8137E01
FE1303A2484814F0A2150712034914E0A2150F12074914C0A2151FA216805B153F1203ED
7F006D5BA200015B0000495A9038F80F7E90387C1EFEEB1FF8903807E0FC90C7FC1401A2
5DA21403A25D001C1307007F5C48130F5D4A5A4AC7FC48137E00F85B387C03F0381FFFC0
D803FEC8FC273B7CA72A>I<EB01FC13FF5CA21303A25CA21307A25CA2130FA25CA2131F
A25CA2133FA291C8FCEC03F890387F0FFE91383E0F80D97E7813C0ECE007D9FFC013E014
801400A2485A5BA25B0003140F16C05BA20007141F16805BA2000F143F16005B5D001F14
7EEDFE074913FCA2003F0101130FEDF80E1300161E48ECF01CA2007E1538A200FE157002
0013E048EC7FC00038EC1F0028407ABE2E>I<1478EB01FCA21303A314F8EB00E01400AD
137C48B4FC38038F80EA0707000E13C0121E121CEA3C0F1238A2EA781F00701380A2EAF0
3F140012005B137E13FE5BA212015BA212035B1438120713E0000F1378EBC070A214F0EB
80E0A2EB81C01383148038078700EA03FEEA00F8163E79BC1C>I<EB07F0EA03FF14E0A2
EA000FA214C0A2131FA21480A2133FA21400A25BA2137EA213FEA25BA21201A25BA21203
A25BA21207A25BA2120FA25BA2121FA25BA2123FA290C7FCA25A1307127EA2EAFE0F130E
12FCA2131E131CA2EA7C381378EA3C70EA1FE0EA0780144079BE17>108
D<D801F0D93F80137F3D07FC01FFE003FFC03D0F3E07C1F80F83F03D0E1F0F00FC1E01F8
001E011C90387C3800001C49D97E707F003C01F05C0038157F4A5C26783FC05C12704A91
C7FC91C7127E00F003FE1301494A5CEA007EA20301140301FE5F495CA203031407000160
495C180F03075D0003051F13E0494A1480A2030FEC3F810007F001C0495CA2031F91383E
0380120F494AEC0700A2033F150E001FEF1E1C4991C7EA0FF80007C7000EEC03E0432979
A74A>I<D801F0EB3F803A07FC01FFE03A0F3E07C1F83A0E1F0F00FC001E011C137C001C
49137E003C13F012385C38783FC012705C91C7FC00F015FE495CEA007EA2150101FE5C5B
A2150300015D5B15075E0003020F13704914C0A2031F13F00007ED80E05B1681EE01C012
0F49EC0380A2EE0700001FEC0F0E49EB07FC0007C7EA01F02C2979A733>I<EC1FC0ECFF
F8903803F07C90380FC01FEB1F8090393F000F80017E14C0491307484814E0485A12075B
000F15F0485AA2485AA2ED0FE0127F90C7FCA2151F4815C05AA2ED3F80A2ED7F00A24814
7E007C5C007E13015D4A5A003E495A6C495A4A5A260F803EC7FC3807C0FC3801FFF03800
3F80242977A72E>I<903903E001F890390FF807FE903A1E7C1E0F80903A1C3E3C07C001
3C137801389038E003E0EB783F017001C013F0ED80019038F07F0001E015F8147E160300
0113FEA2C75AA20101140717F05CA20103140F17E05CA20107EC1FC0A24A1480163F010F
15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC03E049C9FCA2
137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A80A72E>I<D801F013FC3A
07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB380F001C1370003CEBE01F123814C0D8
783F14C00070903880070092C7FC91C8FC12F05BEA007EA313FE5BA312015BA312035BA3
12075BA3120F5BA3121F5B0007C9FC232979A726>114 D<EC7F80903801FFE0903807C0
F890381F003C013E131C013C131E017C133E49137E15FEA2000114FCA215706D13007FEB
FFC014FC6C13FF15806D13C06D13E0010F13F01300140F14071403120C123F387F800114
03D8FF0013E0A300FCEB07C000F0EB0F8012700078EB1F006C133C381F01F83807FFE0C6
90C7FC1F297AA725>I<EB01C0EB03F01307A25CA2130FA25CA2131FA25CA2133FA291C7
FCA2007FB51280B6FC1500D8007EC7FC13FEA25BA21201A25BA21203A25BA21207A25BA2
120FA25BA2121F141C1380A2003F133C1438EB0078147014F05C495AEA1F03495A6C48C7
FCEA07FCEA01F0193A78B81E>I<137C48B4141C26038F80137EEA0707000E7F001E15FE
121CD83C0F5C12381501EA781F007001805BA2D8F03F1303140000005D5B017E1307A201
FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F1683EE0380A2ED7F07000102FF
13005C01F8EBDF0F00009038079F0E90397C0F0F1C90391FFC07F8903907F001F02A2979
A731>I<017CEB01C048B4EB07F038038F80EA0707000E01C013F8121E001C1403EA3C0F
0038EC01F0A2D8781F130000705BA2EAF03F91C712E012005B017E130116C013FE5B1503
000115805BA2ED07001203495B150EA25DA25D1578000114706D5B0000495A6D485AD97E
0FC7FCEB1FFEEB03F0252979A72A>I<017C167048B491387001FC3A038F8001F8EA0707
000E01C015FE001E1403001CEDF000EA3C0F0038177C1507D8781F4A133C00701380A2D8
F03F130F020049133812005B017E011F14784C137013FE5B033F14F0000192C712E05BA2
170100034A14C049137E17031880A2EF070015FE170E00010101141E01F86D131C0000D9
039F5BD9FC076D5A903A3E0F07C1E0903A1FFC03FFC0902703F0007FC7FC372979A73C>
I<903903F001F890390FFC07FE90393C1E0E0F9026780F1C138001F0EBB83FD801E013F8
9039C007F07FEA0380000714E0D9000F140048151C000E4AC7FCA2001E131FA2C75BA214
3F92C8FCA35C147EA314FE4A131CA30101143C001E1538003F491378D87F811470018314
F000FF5D9039077801C039FE0F7C033A7C0E3C078027783C1E1EC7FC391FF80FFC3907E0
03F029297CA72A>I<137C48B4143826038F8013FCEA0707000E7F001E1401001C15F8EA
3C0F12381503D8781F14F000701380A2D8F03F1307020013E012005B017E130F16C013FE
5B151F1201491480A2153F000315005BA25D157EA315FE5D00011301EBF8030000130790
387C1FF8EB3FF9EB07E1EB00035DA21407000E5CEA3F80007F495AA24A5AD8FF0090C7FC
143E007C137E00705B387801F0383803E0381E0FC06CB4C8FCEA03F8263B79A72C>I<D9
01F01370D907FC13F0010F14E090381FFE0190393FFF03C049EB838090387C0FCF9039F8
03FF009038F0007E49133C000114386C48137890C75A4A5A4A5A4A5A4AC7FC141E5C5C5C
495A495A495A49C8FC131E4913075B5B48485B4848131E485A01F05BD80FFE137C391F1F
81F8383E0FFFD83C075B486C5B00705CD8F00190C7FC38E0007C24297BA725>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fm cmmi10 10.95 37
/Fm 37 123 df<133F14E0EB07F0EB03FC13016D7EA3147FA26E7EA36E7EA36E7EA36E7E
A36E7EA26E7EA36E7EA3157FA36F7E157F15FF4A7F5C913807CFE0EC0F8FEC1F0F91383E
07F0147C14FC49486C7EEB03F0EB07E049486C7EEB1F80EB3F00496D7E13FE4848147F48
5A485A4848EC3F80485A123F4848EC1FC048C8FC4816E048150F48ED07F0007015032C40
7BBE35>21 D<ED1FC0EDFFF0913803E07C91380F803E4A487E023E14804AEB0FC05C4948
14E01303495A5C130F494814F0A2133F91C7FCEE1FE05B137EA201FE143F17C05BA20001
ED7F80A24915005E00035D4B5AA24B5A486C495A4B5A6D5C01EEEB3F80D80FE7017EC7FC
9038E3C1F89038C1FFE0D9C07FC8FC001F90C9FCA25BA2123FA290CAFCA25AA2127EA212
FEA25AA35A12702C3C7EA72F>26 D<011FB612C090B7FC5A5A481680260FC007C8FC48C6
5A123E003C130E48131E5A5AA2C75AA3147CA2147814F8A4495AA31303A25CA21307A349
5AA3131FA25C6DC9FC2A287DA628>28 D<13F8EA03FC120FEA1FF8EA3F80EA7E00127C5A
A25AA47EA2127C127EEA3F80EA1FF8EA0FFC1203EA00F80E167BAA19>44
D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>58 D<121EEA7F8012FF13C0A2
13E0A3127FEA1E601200A413E013C0A312011380120313005A120E5A1218123812300B1C
798919>I<ED0180ED03C01507A21680150FA216005DA2151E153EA2153C157CA2157815
F8A25D1401A25D1403A25D1407A25D140FA24AC7FCA2141E143EA2143C147CA2147814F8
A25C1301A25C1303A25C1307A25C130FA291C8FC5BA2131E133EA25BA2137813F8A25B12
01A25B1203A25B1207A25B120FA290C9FC5AA2121E123EA2123C127CA2127812F8A25A12
60225B7BC32D>61 D<DC1FF81307923801FFFE030F9038FF800E923A7FF007E01E4A48C7
EAF03EDA03FCEC787EDA0FF0EC3CFCDA3FC0141F4A48140F4AC8FC4948ED07F8EB07F849
481503131F4A16F049481501495A13FF4890C913E05B1203485A19C0485AA2485A95C7FC
123F5BA2127F5BA312FF5BA590CCFC183CA21838A21878187018F06C6C5E17014D5A003F
5F6D15074DC7FC001F161E6C6C5D6D5D6C6C5D00034B5AD801FEEC07C06C6C4AC8FCD97F
C0137E90391FF803F80107B512E0010114809026001FF8C9FC40427BBF41>67
D<49B912C0A3D9000190C71201F0003F4B151F190F1A80020316075DA314075D1A00A214
0F4BEB0380A205075B021FED000E4B92C7FC5FA2023F141E5D173EEE01FE4AB55AA3ED80
0102FF6D5A92C71278A34915705C191C05F0133C01034B13384A167894C71270A2010717
F04A5E180161010F16034A4B5AA2180F011F4CC7FC4A5D187E013F16FE4D5A4A140F017F
15FFB95AA260423E7DBD43>69 D<49B9FCA3D9000190C7120718004B157F193F191E1403
5DA314075D191CA2140F5D17074D133C021F020E13384B1500A2171E023F141C4B133C17
7C17FC027FEB03F892B5FCA39139FF8003F0ED00011600A2495D5CA2160101035D5CA293
C9FC13075CA3130F5CA3131F5CA2133FA25C497EB612F8A3403E7DBD3A>I<49B6D8C03F
B512F81BF01780D900010180C7383FF00093C85B4B5EA2197F14034B5EA219FF14074B93
C7FCA260140F4B5DA21803141F4B5DA21807143F4B5DA2180F4AB7FC61A20380C7121F14
FF92C85BA2183F5B4A5EA2187F13034A5EA218FF13074A93C8FCA25F130F4A5DA2170313
1F4A5DA2013F1507A24A5D496C4A7EB6D8E01FB512FCA2614D3E7DBD4C>72
D<49B600C090387FFFF896B5FC5FD900010180C7000F130093C813F84B16E01A804FC7FC
0203163C4B15F84E5AF003C002074B5A4B021FC8FC183E1878020F5D4BEB03E0EF07804D
C9FC021F143E4B5B17F04C5A023F1307EDC00F4C7E163F027FEBFFF8ED81EFED83CF9238
8F87FC9138FF9F0792383C03FE15784B6C7E4913E0158092C77F5C01036F7E5C717EA213
074A6E7EA2717E130F4A6E7EA284011F15035C717E133F855C496C4A13E0B600E0017F13
FFA34D3E7DBD4D>75 D<49B612F0A3D900010180C7FC93C8FC5DA314035DA314075DA314
0F5DA3141F5DA3143F5DA3147F5DA314FF92C9FCA35B5C180C181E0103161C5C183C1838
13074A1578187018F0130F4AEC01E0A21703011FED07C04A140F171F013FED3F8017FF4A
1303017F021F1300B9FCA25F373E7DBD3E>I<48B912FCA25A913A0003FE000F01F84A13
01D807E0EE00F8491307491778000F5D90C7FC001E140FA2001C4B1470123C0038141FA2
00785D1270033F15F000F018E0485DC81600157FA25EA215FFA293C9FCA25CA25DA21403
A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA2147FA214FF497F001FB612FCA2
5E3E3D7FBC35>84 D<B6020FB5FCA219FE000301C0020013E06C90C9EA7F00183E183C6C
5F187060A24D5A17036E5D4DC7FC017F5D170E5FA25F17786E14705F133F4C5A4C5AA24C
C8FC5E6E130E5EA2011F5C167816705E15015E6E485AA2010F49C9FC5D150E5DA25D6E5A
A201075B14F95DECFB80A202FFCAFC5CA25C13035C5CA25CA25C40407BBD35>86
D<EC1F80ECFFE0903903F0707090390FC039F890381F801D90383F000F017E5C5B000114
07485A48485CA2485A001F140F5E485AA2151F007F5D5BA2153F00FF92C7FC90C7FCA25D
92387E03805AA215FEEDFC07007E0101140014035E6C0107130E140E3A1F801C7C1C000F
13783A07C1F03E383A01FFC01FF03A007F0007C029297DA730>97
D<EB1FC0EA0FFF5CA2EA003FA291C8FCA25BA2137EA213FEA25BA21201A25BA21203A25B
EC3F800007EBFFE09038F3C1F849C67E01FE137E4848133E49133F5B491480001F141F5B
5BED3FC0123FA290C7FCA248147F1680127EA215FF00FE15005AA24A5AA25D1403485C14
07007C5C4A5A5D003C495A003E49C7FC001E137E6C13F8380783F03803FFC0C648C8FC22
407CBE27>I<EE07F0ED03FF17E0A2ED000FA217C0A2161FA21780A2163FA21700A25EA2
167EA216FEA25EEC1F80ECFFE1903803F07190390FC039F890381F801D90383F000F137E
495C00011407485A485A5E485A001F140FA248485CA2151F127F495CA2153F12FF90C790
C7FCA25DEE038048147EA215FE1607007ED901FC130014035E6C0107130E140E3A1F801C
7C1C000F13783A07C1F03E383A01FFC01FF03A007F0007C02C407DBE2F>100
D<EC1FE0ECFFFC903803F01E90380FC00F90393F800780D97E0013C0491303EA03F81207
49130748481480121F49130F003FEC1F00153E397F8001FCEC1FF0B6128002F8C7FC90C9
FCA45AA616C01501007E1403ED07806CEC0F00151E6C5C6C6C13F83907C003E03903E03F
802600FFFEC7FCEB3FE022297CA72A>I<163EEEFFC0923803E1E0923807C0F0ED0F8116
87ED1F8F160F153FA217E092387E038093C7FCA45DA514015DA30103B512FCA390260003
F0C7FCA314075DA4140F5DA5141F5DA4143F92C8FCA45C147EA414FE5CA413015CA4495A
A35CEA1E07127F5C12FF495AA200FE90C9FCEAF81EEA703EEA7878EA1FF0EA07C02C537C
BF2D>I<EC01F8EC0FFE91383F07879139FC03DF80903801F801903903F000FFEB0FE049
48EB7F005C133F49C7FC49147E5B000115FEA248485CA215011207495CA21503120F495C
A21507A25E5B0007140FA24B5A6D133F0003147F000114FF6D485B0000EB03DF90387E0F
3FEB1FFCD907F090C7FC90C7FC5DA2157EA215FEA25D001C1301007F5C4813035D4A5A4A
5A48495A00F8017EC8FC387E01FC381FFFE0000390C9FC293B7FA72B>I<EB01FC13FF5C
A21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C9FC15FE90397F07FFC091
381F03E090397E3801F09138F000F8EBFFE04A7F5C91C7FC485AA25BA2484813015E5BA2
000714035E5B1507120F5E49130F5E121F031F1370491480A2003F023F13F0EE00E090C7
FC160148023E13C01603007E1680EE070000FE5DED1F1E48EC0FF80038EC03E02C407CBE
34>I<143C14FEA21301A314FCEB00701400AD137E3801FF803803C7C0EA0703000F13E0
120E121C13071238A2EA780F007013C0A2EAF01F14801200133F14005B137EA213FE5BA2
12015B0003130E13F0A20007131EEBE01CA2143CEBC0381478147014E013C13803E3C038
01FF00EA007C173E7EBC1F>I<ED01C0ED07F0A2150FA316E0ED038092C7FCADEC03E0EC
0FF8EC3C3EEC701EECE01FEB01C001031480EB0780140049133F010E1400131E131C013C
5BA290C7127EA215FEA25DA21401A25DA21403A25DA21407A25DA2140FA25DA2141FA25D
A2143FA292C7FCA25C147EA2001C13FE007F5BEAFF015C495A495A48485A38F81F80D878
3EC8FCEA3FF8EA0FE0245081BC25>I<EB01FC13FF5CA21303A25CA21307A25CA2130FA2
5CA2131FA25CA2133FA291C9FC16FC49EB03FE92380F0780017EEB3C0FED703F01FE13E0
913801C07F9038FC0380EC07000001010E14004A131C494890C7FC5C00035BEBF9C0495A
01FFC9FC5A14F0EBE3FE9038E07F80000FEB1FC06E7EEBC00781001F1303160E1380A200
3F151E0207131C010013E0A2485DA2007E01031378167000FE01015B15F1489038007F80
0038023EC7FC29407CBE2F>I<EB07F0EA03FF14E0A2EA000FA214C0A2131FA21480A213
3FA21400A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA212
1FA25BA2123FA290C7FCA25AEB0380127EA212FE130700FC1300A25B130EA2EA7C1C133C
EA3E38EA1FF0EA07C014407DBE1B>I<D801F0EB0FF0D807FCEB3FFED80F1FEBF01F000E
903903C00F80271E0F87007F001C018E1307003C01DC80003813F85CEA781F00705B5CA2
00F049130F013F5D000090C7FCA2161F495D137E163F94C7FC13FE495C167EA200019238
FE03804914FCA203011307000303F813005B5FEEF00E0007161E49151C5F1778000F6E6C
5A49EC7FC0D80380021FC7FC31297EA737>110 D<EC07F8EC7FFE903901FC0F80903907
E007E090390FC003F090393F8001F8EB7F0001FEEB00FC485A484814FEA2485A120F5B00
1F15FF485AA2ED01FE127F5BA2150300FF15FC90C7FCA2ED07F8A2ED0FF0A2007E15E000
7FEC1FC0ED3F80A26CEC7F006C6C13FC4A5A6C6C485A3907E00FC02601F03FC7FC3800FF
FCEB1FE028297DA72C>I<D907C013FE903A0FF003FF80903A1C7C0F07E0903A383C1C03
F0903A783E7801F80170EBF0009026F03FE013FC01E05B4B13FE0001017F147E01C090C7
FC147E17FF000313FEA2C75AA201015C17FE5CA20103140317FC5CA20107EC07F8A24A14
F0160F010F15E0161F17C0EE3F80011F15006E137E5E9138B801F890393FBC03E091389E
0FC0DA07FFC7FCEC01F849C9FCA2137EA213FEA25BA21201A25BA21203A2B512E0A3303A
84A72E>I<D801F0EB3F80D807FCEBFFE03A0F1F03C0F0000E90380F00F8391E0F9E0300
1C13BC003CEBF807003813F0A226781FE013F000709038C001C092C7FC5C12F0133F0000
90C8FCA35B137EA313FE5BA312015BA312035BA312075BA3120F5BEA038025297EA729>
114 D<EC1FC0ECFFF8903803E03C903807800E90381E0007168049130F49131F153FA201
F81400A2151C6D90C7FC7FEBFFE014FE90387FFFC06D7F6D13F86D7F13039038001FFE14
031400157E000C143E123F487EA248C7123CA25D12FC00F05C0070495A0078495A6C495A
260F803EC7FC3803FFF838007FC021297CA72B>I<147014FC1301A25CA21303A25CA213
07A25CA2130FA25CA2007FB512F0B6FC15E039001F8000133FA291C7FCA25BA2137EA213
FEA25BA21201A25BA21203A25BA21207EC01C013E01403000F1480A2EBC0071500140E14
1E5C000713385C3803E1E03801FF80D8003EC7FC1C3A7EB821>I<017E147848B4EB01FC
2603C7C013FED807031303000F13E0120E121C0107130100381400167ED8780F143E0070
5B161EEAF01F4A131C1200133F91C7123C16385B137E167801FE14705B16F016E0120149
EB01C0A2ED0380A2ED0700A20000140E5D6D133C017C5B6D5B90381F03C0903807FF80D9
01FCC7FC27297EA72C>118 D<017CEE038048B40207EB0FE02603C7C090391F801FF0EA
0703000F7F000E153F001C16000107160F003817074C1303D8780F027E130100705B1800
D8F01F14FE4A4914E01200133FDA000114014C14C05B137E0303140301FE4A14805BA2F0
070000011407494A5B180EA260A2030F5C12006D011F5C017C496C5B017E0139495A6D90
3870F80390281F81E07C0FC7FC903A07FFC01FFE010090380007F03C297EA741>I<D901
F8133FD907FEEBFFE0903A1E0F83C0F0903A3807C780F890397003CF0301E013FED801C0
EBFC071203018013F8D8070015F0EE01C0000E4AC7FCA2001E1307A2C75BA2140F5DA314
1F5DA3143F92380001C0A34A1303001E1680003F017E1307267F80FE14005ED8FF81141E
D901DF131CD8FE035C3A7C078F80F03A3C0F07C1E03A1FFC03FF802707F0007EC7FC2D29
7EA734>I<137C48B4EC03802603C7C0EB0FC0EA0703000F7F000E151F001C1680130712
38163FD8780F150000705BA2D8F01F5C4A137E1200133F91C712FE5E5B137E150113FE49
5CA2150300015D5BA215075EA2150F151F00005D6D133F017C137F017E13FF90393F03DF
8090380FFF1FEB01FC90C7123F93C7FCA25DD80380137ED80FE013FE001F5C4A5AA24848
485A4A5A6CC6485A001C495A001E49C8FC000E137C380781F03803FFC0C648C9FC2A3B7E
A72D>I<02F8130ED903FE131ED90FFF131C49EB803C49EBC0784914F090397E07F1E090
38F800FF49EB1FC049EB07800001EC0F006C48131E90C75A5D5D4A5A4A5A4A5A4AC7FC14
3E14785C495A495A495A49C8FC011E14E05B5B4913014848EB03C0485AD807F8EB078048
B4131F3A1F87E07F00391E03FFFE486C5B00785CD870005B00F0EB7FC048011FC7FC2729
7DA72A>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fn cmbx12 14.4 42
/Fn 42 123 df<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7
FCB3B3B3A6007FB712FEA52F4E76CD43>49 D<EC3FFE0103B512E0010F14FC013F14FF90
B712C048D9C07F7F2703FE000F13F8D807F801037FD80FE06D7F48486D7F48488001F016
80486C6E13C07F486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA03C0C914E05EA218C0
5E1880A24C13005F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5AED7FE04B5A4A5B4A48
C8FC4A5A5D4A48EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A495A495AD91F801407
49C8FC013E150F017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4344E79CD43>I<9138
0FFFC091B512FC0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803
F86E7E491680D807FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC16
80C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA
000713E0030113F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FE
A2EA03E0EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F0
4A13C06C484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F15800103
02FCC7FCD9001F1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F167F
A216FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC01580EC
1F005C147E147C5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207485A
485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>I<D80380
150ED807E0157E01FEEC03FED9FFF0137F91B65A5F5F5F5F5F94C7FC5E5E16F016C093C8
FC15F801E190C9FC01E0CAFCABEC0FFF027F13F001E3B512FE01E76E7E9026FFF8077FDA
C0017F49C713F8496E7E49143F4981496E7E6C481680C9FC18C08218E0A418F0A3EA0FE0
487E487E487E487EA418E0A35B6C484A13C05B491680003EC85A003F17006C6C4A5A6D5D
6C6C4A5AD807F8495BD803FE01075B2701FFC03F5B6C90B65A013F4AC7FC6D14F8010314
C09026007FF8C8FC344F79CD43>I<ED0FFF92B512E0020780021F14FC91397FFE03FE90
3A01FFF0007F4901C0EB3F804990C7121F4948EC7FC0494814FF49484913E049485B01FF
5C485BA2485B5AA2486F13C04A6D1380486F1300177E94C7FC5AA291CAFC5AA215089138
01FFF8020713FFB54814C04A14F04AC66C7E023C6D7E4A6D7E4A6D7E7013804A15C0A24A
15E07013F05C18F8A491C714FCA37EA67EA46C17F880A27E18F06C5D18E06C6D15C07E6E
4913806C6D15006D6C495A6D6CEB7FFC6DB448485A6D90B55A010315C0010092C7FC023F
13FC020713C0364F7ACD43>I<121F7F7FEBFF8091B81280A45A1900606060A260606048
5F0180C86CC7FC007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A4C5A94C8FC16FEC812
014B5A5E4B5A150F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D1407A2140FA25D141FA2
143FA4147F5DA314FFA55BAC6D5BA2EC3FC06E5A395279D043>I<913807FFC0027F13FC
0103B67E010F15E090261FFC0113F8903A3FE0003FFCD97F80EB0FFE49C76C7E48488048
486E1380000717C04980120F18E0177FA2121F7FA27F7F6E14FF02E015C014F802FE4913
806C7FDBC00313009238F007FE6C02F85B9238FE1FF86C9138FFBFF06CEDFFE017806C4B
C7FC6D806D81010F15E06D81010115FC010781011F81491680EBFFE748018115C048D900
7F14E04848011F14F048487F48481303030014F8484880161F4848020713FC1601824848
157F173FA2171FA2170FA218F8A27F007F17F06D151FA26C6CED3FE0001F17C06D157F6C
6CEDFF806C6C6C010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612F06D5D010F15800101
02FCC7FCD9000F13C0364F7ACD43>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C
7FA24C7FA34C8083047F80167E8304FE804C7E03018116F8830303814C7E03078116E083
030F814C7E031F81168083033F8293C77E4B82157E8403FE824B800201835D840203834B
800207835D844AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A2
4A820103854A82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547B
D366>65 D<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA
803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848
C9FC4901F8824949824949824949824949824990CA7E494883A2484983485B1B7F485B48
1A3FA24849181FA3485B1B0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B
0F6C6D1980A26C1A1F6C7F1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A
6D6D4C5A6D01FC4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203
903AFFE001FFF0020091B612C0033F93C8FC030715FCDB007F14E0040101FCC9FC525479
D261>67 D<BA7E19FCF1FF801AF01AFCD8000701F0C7000F13FF060014C0071F7F070713
F807017F737F747E747F747F86747F747F8886888688A2757EA31D8087A21DC0A51DE0A3
87A963A31DC0A51D80A2631D00A3515AA2646264505B6264505B505B5090C7FCF2FFFE4F
5B07075B071F5B96B512C0060F91C8FCBB5A1AF01AC007FCC9FC19805B527CD167>I<BC
1280A5D8000701F8C7000114C0F0001F19071901851A7F1A3F1A1FA2F20FE0A21A07A31A
03A318F81BF01A01A497C7FC1701A317031707170F177F92B6FCA59238F8007F170F1707
17031701A317001B3EA31B7CA395C8FCA21BFCA21BF8A21A01A31A031BF01A071A0FA21A
1F1A3FF27FE0F101FF1907191F0603B5FCBCFCA21BC0A34F517CD058>I<BB12FEA5D800
0701F8C700077FF0007F191F190785858586861B80A21A1FA31A0FA41BC006F81307A497
C7FCA31701A317031707170F177F92B6FCA59238F8007F170F170717031701A31700A795
C9FCB3B812F8A54A517CD055>I<B812C0A5D8000701F8C7FCB3B3B3B2B812C0A52A527C
D132>73 D<B812F8A5D8000701F8CAFCB3B3A91A7CA41AFC1AF8A51901A31903A219071A
F0190FA2191F193F197F19FF180360183F4DB5FCBB12E0A546527CD151>76
D<B600FC073FB512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA202EF6DEF03CFA202
E76DEF078FA202E36DEF0F0FA202E16D171EA302E06D173CA26F6C1778A26F6C17F0A26F
6DED01E0A26F6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA26F6D5DA3706C5DA2
706C5DA2706D495AA2706D495AA2706D495AA3706D49C7FCA2706D131EA2706D5BA2716C
5BA3716C5BA271EB81E0A271EBC3C0A271EBE780A27101FFC8FCA3715BA2715BA2725AA2
725AA2D93FFC6F5AB74DB712FEA2725AA2725A77527CD180>I<93380FFFC00303B6FC03
1F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F
494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F4948707FA2
4849717E48864A83481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51AFC
AF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A
6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01
FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E00303
92C9FCDB001F13E0565479D265>79 D<BAFC19F819FF1AE086D8000701F0C7001F13FC06
0113FF726C13807313C0070F13E01BF0857313F81BFCA27313FEA41BFFA81BFEA31BFC61
A21BF84F13F04F13E0614F13C04F13004E485A061F5B92B812F01AC04FC7FC19E003F8CB
FCB3AEB812C0A550527CD15C>I<91260FFF80130791B500F85B010702FF5B011FEDC03F
49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F001F
824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F8
6CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F8213030100
82021F16801400030F15C0ED007F040714E01600173F050F13F08383A200788200F882A3
187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A
02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9
007F90C8FC3C5479D24B>83 D<003FBC1280A59126C0003F9038C0007F49C71607D87FF8
060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6
C994C7FCB3B3AC91B912F0A553517BD05E>I<EC7FFF0107B512F0013F14FE90B77E48D9
E00F7F2703FE000113F0486C6D7F6EEB3FFC48826E131F83707FA36C496D7FA26C90C7FC
6C5AC9FCA6037FB5FC020FB6FC91B7FC01071487013FEBF0074913803901FFFC004813F0
485B485B485B4890C7FC5A5BA2485AA45EA26D5C007F151D163D6C6C02797F6C6D01F113
F86C9026C003E1EBFFE06C9026F81FC014F06C90B5487EC6ED001F011F01FC010713E001
0101E090C8FC3C387CB641>97 D<913801FFF8021FEBFF8091B612F0010315FC010F9038
C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091
C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E
140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A
01001580023F49C7FC020113E033387CB63C>99 D<4DB47E0407B5FCA5EE001F1707B3A4
913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC
49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C
7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D
90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13
FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48
178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA612
7FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D
6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034
387CB63D>I<ED3FFC0203B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB80
7F49903800FFFC495A495AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A52600
7FF8C8FCB3B3A7007FB512FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDA
FC1F13E0013FECFF7F90267FFC0F9038FF9FF09026FFE001EBF83F48496C13E048499038
7FF01F4890C7D83FF813E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C
6C4A5AA26C5E6C6D495A6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F0
2607C03F90C9FC91CBFCA2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C83
6D828448B9FC12074848C700031480D81FF8EC003F4848150748486F13C083485A83A56D
5D007F18806D5D003F18006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE
011F5B6C6CB71280010F03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5
FCA51203C6FCB3A4EE1FFC93B512C0030314F0030F8092391FE07FFC92393F001FFE037C
8003F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542
537BD24B>I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB
3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I<EB3FF0B5FCA512017EB3B3B3B1B6
12F0A51C537BD225>108 D<D93FF0D91FFCEDFFE0B591B500C0010713FE030302F0011F
6D7E030F6E017F8092271FE07FFCD9FF037F922A3F001FFE01F8007F0003027C9126FF03
E080C602F06DD90780137FDAF1E0038FC77FDAF3C0159EDAF7806D01BC143F07FC8102FF
C75C4A5EA24A5EA44A5EB3ACB6D8F807B6D8C03FB512FEA567367BB570>I<D93FF0EB1F
FCB591B512C0030314F0030F8092391FE07FFC92393F001FFE0003027C80C602F07FDAF1
E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542367BB54B>I<
913801FFE0021F13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C
7E49486D7F48496D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880
A400FF18C0AC007F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B
6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC
020113E03A387CB643>I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F30101
7F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717F
A285187F85A4721380AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F49
90C7FC03F0EBFFFC9126FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1
B612F8A5414D7BB54B>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF891
39E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0F
F04A90C7FCA55CB3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC
120348EB003FD80FF81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091
C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C0
1300020714E0EC003F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D14
1F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F80714
8048C601F8C7FC2C387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F13
3F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015
806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I<D93FF8913801
FFC0B50207B5FCA50003ED001FC61607B3AE5FA35FA2017F5D173B177B6D6C14F3DC01E3
13F06D6CD907C3EBFFC0903A0FFFC03F836D90B51203010114FE6D6C13F8020701E091C7
FC42377BB54B>I<B600F00107B5FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E15
7E013F167C6E15FC6D5E6F13016D5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7
FC815F6E6C133E177E023F147C6F13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E
5CA26E91C8FCA26F5AA36F5AA26F5AA26F5AA26F5A6F5A40367DB447>I<B6D8E07FB5D8
C003B512C0A5000101F0C701F0C7381FF8006E027FED07E06C715DA26E023F150F017F70
5DA26E181F013F4B6C92C7FC6E606D70143E94B5FC6F177E6D4A6E137C03C001F315FC6D
715B160303E001E114016D020702E05B03F013C06D71485A160F03F8D9807F13076D05F8
5B93381F003F03FC160F027F4902FC5BDBFE3E011F131F023F04FE90C8FC167EDBFF7C01
0F5B6E01FCECFF3E4C6D137E6E5FA24C7F6E5F4C7F6E5FA24C7F6E5F4C147FA26E5F93C8
123F6F5EA2033E6FC9FC5A367DB461>I<007FB500F090387FFFFEA5C66C48C7000F90C7
FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE01
4C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B
7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F
02FE6D7F4A6D7F495A49486D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A5
42357EB447>I<B600F00107B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F16
7C6E15FC6D5E6F13016D5E6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B02
7F143E6F137E023F147C6F13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5CA2
6E91C8FCA36F5AA26F5AA26F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E48
6C137E486C137C486C13FC5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6C
B45A6C13F000035BC690CBFC404D7DB447>I<001FB8FC1880A3912680007F130001FCC7
B5FC01F0495B495D49495B495B4B5B48C75C5D4B5B5F003E4A90C7FC92B5FC4A5B5E4A5B
5CC7485B5E4A5B5C4A5B93C8FC91B5FC495B5D4949EB0F805B495B5D495B49151F494914
0092C7FC495A485E485B5C485E485B4A5C48495B4815074849495A91C712FFB8FCA37E31
357CB43C>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fo cmr10 10.95 82
/Fo 82 123 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907
F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7
FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11
D<4AB4FC021F13C091387F01F0903901FC0078D907F0131C4948133E494813FF49485A13
7F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE00018182B3AC486CECFF80007FD9
FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB01F8903807F001EB0FE0EB
1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486CECFF80007FD9FC3F13FEA3
2F407FBF33>I<4AB4ECFF80021FD9C00F13E0913B7F01F03F80F8903C01F80078FE003C
D907F0D93FF8130E49484948131F49484948EB7F804948484913FF137F02005CA201FE92
C7FC6FED7F0070141C96C7FCAAF13F80BBFCA3C648C76CC7FC197F193FB3AC486C4A6CEB
7FC0007FD9FC3FD9FE1FB5FCA348407FBF4C>I<147FEB7FFFA313017F147FB3B3A5123E
127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00183B85
A71C>17 D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F
3000001300A401E01370491360A3000114E04913C00003130101001380481303000EEB07
0048130E0018130C0038131C003013181C1C7DBE2D>34 D<4B6C130C4B6C131EA2030714
3EA24C133CA2030F147CA293C71278A24B14F8A2031E5CA2033E1301A2033C5CA3037C13
03A203785CA203F81307A24B5CA20201140F007FBAFCBB1280A26C1900C72707C0003EC8
FC4B133CA3020F147CA292C71278A24A14F8A2021E5CA3023E1301007FBAFCBB1280A26C
1900C727F80007C0C8FC4A5CA20101140FA24A91C9FCA301035CA24A131EA20107143EA2
4A133CA2010F147CA291C71278A34914F8A2011E5CA2013E1301A2013C5CA201186D5A41
517BBE4C>I<013F4C7ED9FFC04B7E2601E0E015072607C070150F48486C4B5A023E4BC7
FC48486C5D48D90FC0EB01FE003ED90EF0EB07FCDA0F3F133E007E903A070FFFF8F8007C
0200EBC1F0EE000300FC6D6C495A604D5A171F95C8FC173E177E177C5F16015F007C4948
485A1607007E5E003E49495A020E131F003F93C9FC6C49133E260F803C137E0238137C6C
6C485B3901E0E0016CB448485AD93F0049133F90C74848EBFFC0030F903801E0E0933980
07C0704B4848487E4B153C033E90381F001C4B497F03FC133E4B150F4A48017E7F020314
7C5D4A4801FCEB0380140F5D4AC7FC5C143E5C14FC5C495A13034948027CEB07005C4948
147E011F033E5B91C8140E013E153F017E6F5B017C92380F803C4917380001706C5A4992
3801E0E0496FB45A6C48043FC7FC41497BC34C>37 D<121EEA7F8012FF13C0A213E0A312
7FEA1E601200A413E013C0A312011380120313005A120E5A1218123812300B1C79BE19>
39 D<1430147014E0EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2
485AA2120F5BA2121F90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37E
A27F120FA27F1207A26C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00
E014701430145A77C323>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F137813
7CA27FA2133F7FA21480130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA3
1480A2131F1400A25B133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A
5A5A145A7BC323>I<1506150FB3A9007FB912E0BA12F0A26C18E0C8000FC9FCB3A91506
3C3C7BB447>43 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A31201
1380120313005A120E5A1218123812300B1C798919>I<B512FEA617067F961E>I<121EEA
7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>I<ED0180ED03C01507A21680150FA216
005DA2151E153EA2153C157CA2157815F8A25D1401A25D1403A25D1407A25D140FA24AC7
FCA2141E143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A25C130FA291C8FC
5BA2131E133EA25BA2137813F8A25B1201A25B1203A25B1207A25B120FA290C9FC5AA212
1E123EA2123C127CA2127812F8A25A1260225B7BC32D>I<EB01FE90380FFFC090383F03
F090387C00F849137C48487F48487F4848EB0F80A2000F15C04848EB07E0A3003F15F0A2
90C712034815F8A64815FCB3A26C15F8A56C6CEB07F0A3001F15E0A36C6CEB0FC0A26C6C
EB1F80000315006C6C133E6C6C5B017C5B90383F03F090380FFFC0D901FEC7FC263F7DBC
2D>I<EB01C013031307131F137FEA07FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8A3
1D3D78BC2D>I<EB07FC90383FFF8090B512E03903F01FF83907C007FC390F0001FE001E
6D7E001C1580003CEC7FC05AED3FE01270B4FC6DEB1FF07FA56C5A6CC7FC120CC813E015
3FA216C0157F168015FF16004A5A5D4A5A4A5A5D4A5A4A5A4AC7FC147E147C5C495A495A
495A495A49C71270133E133C5B4914E0485A485A485A48C7120148B6FCA25A4815C0B7FC
A3243D7CBC2D>I<EB07FC90383FFF809038F80FE03901E003F839078001FCD80F007F00
0E6D7E001E1580D81F80137F486C14C07FA27F5BA2121F6C5AC8138015FF1600A24A5AA2
4A5A5DEC07E04A5A023FC7FCEB1FFCECFF809038000FE0EC07F86E7E6E7E6E7E1680ED7F
C0A216E0153FA216F0A2120C123F487E487EA316E0A249137F6CC713C01278EDFF807E6C
4913006C495A3907C007FC3903F80FF0C6B55A013F1380D907F8C7FC243F7CBC2D>I<15
0E151E153EA2157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0
A2EB0380EB0700A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8
FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC
5D5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F849
6C7E49137E497F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416
E090C7121F12FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A
3903F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D>I<EC1FE0ECFFF8903803F03E9038
0FC00F90391F000780133E017EEB1FC049133F4848137F12035B12074848EB3F80ED1F00
001F91C7FC5BA2123FA3485AA214FE903887FF8039FF8F07E090389C01F09038B800FC01
B0137E13F0497F16804914C0A2ED1FE0A34914F0A5127FA6123F6D14E0A2121FED3FC0A2
6C6C1480A20007EC7F006C6C137E6C6C5B6C6C485A90387E07F06DB45A010F1380D903FC
C7FC243F7CBC2D>I<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03
C0ED078016005D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2
147C147814F8A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD
2D>I<EB03FC90381FFF8090387C07E09038F001F83901E0007C48487F48487F48C7FCED
0F80121E16C0003E1407A4123FA26DEB0F807F6C6C131F6D140001FC133E6C6C5B9038FF
80786C6D5A6CEBF3E06CEBFF806C91C7FC133F6D13C06D7F013F13F801787F48486C7E39
03E01FFF48486C1380260F800313C048487E489038007FE0003E143F007E141F007CEC0F
F01507481403A31501A46C15E0007C1403A2007E15C06C14076CEC0F806DEB1F006C6C13
3ED807F05B3901FC03F86CB512E0011F1380D903FCC7FC243F7CBC2D>I<EB03FCEB1FFF
90387E07C09038FC03F048486C7E48486C7E4848137C000F147E4848137F81003F15805B
007F15C0A2151F12FF16E0A516F0A5127F153FA36C7EA2001F147F120F6C6C13FF6D13DF
000313013900F8039F90387E0F1FD91FFE13E0EB07F090C7FCA2ED3FC0A41680157FD80F
801400487E486C13FEA24A5A5D49485AEB8007391E000FE0001F495A260FC07FC7FC3803
FFFE6C13F838003FC0243F7CBC2D>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3
121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F
80A2EA1E00C7FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A
1206120E120C121C5A1230A20A3979A619>I<007FB912E0BA12F0A26C18E0CDFCAE007F
B912E0BA12F0A26C18E03C167BA147>61 D<EB1FF890B5FC3903E01FC0390F0007F0001E
EB03F848EB01FC4814FE140000FE14FF7E7FA46CC7FC123EC7EA01FEA2EC03FCEC07F815
F0EC0FC0EC1F80EC3F00143E5C147814F85C13015CA2495AA25CAB91C7FC90C8FCA8EB07
80EB1FE0A2497EA46D5AA2EB078020407BBF2B>63 D<15074B7EA34B7EA34B7EA34B7EA3
4B7E15E7A2913801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA3
4A6D7EA34A6D7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157FA201
1E82011C153FA2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010F
B512F8A33D417DC044>65 D<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE707E
701380EF7FC0EF3FE0A2EF1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF804C
1300EE03FCEE0FF8EE7FE091B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF3FE0
EF1FF018F8170F18FC1707A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC0040313
8048486C90380FFE00B85A17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE130E02
0F9038FF801E913A3FF007E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE4948140F
D93FE0140749481403495A91C812014848150012034848167E5B000F173EA24848161EA2
123F5B180E127FA349160012FFAC127F7F180EA2123FA27F001F171E181C6C7EA2000717
3C6D16386C6C1678000117706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC07806D6C
EC1F00D903FE143E902600FF8013F891393FF007F0020FB512C0020391C7FC9138003FF0
37427BBF42>I<B712FCEEFF8017E000019039C0001FF86C6C48EB03FEEE00FF717E717E
EF0FE084717E717E170184717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A219
80A218FF19004D5AA24D5A6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A17
8004FCC8FC3C3E7DBD45>I<B912E0A300019038C000016C6C48EB001FEF0FF01703A217
011700A31870A41838161CA41800A2163CA2167C16FC150391B5FCA3EC80031500167C16
3CA2161CA21807A3180E93C7FCA4181E181CA2183CA2187CA218F8170117031707171F48
486CEB01FFB912F0A3383E7DBD3E>I<B91280A300019038C000036C6C48EB007FEF1FC0
170F1707A21703A31701A4EF00E0A21638A31800A31678A216F81501150791B5FCA3EC80
07150115001678A21638A693C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE0130C91
2603FFFE131C021F9038FF803C913A7FF00FC07C9139FF0001F0D903FC90380078FC4948
143DD91FE0141F4948140F4948140701FF15034890C8FC491501485A000716005B000F17
7C5B001F173CA2485AA2181C127FA25B95C7FC12FFAB041FB512F0127FA26D9139000FFE
00EF03FC123FA27F121FA26C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140FD907
F8141ED903FEEC3C7C902600FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8FC91
38003FF03C427BBF47>I<B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0FF0B3
A691B7FCA30280C7120FB3A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<B612
F0A3C6EBF000EB3FC0B3B3B2EBFFF0B612F0A31C3E7EBD21>I<011FB512FCA3D9000713
006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A
6C495A6C495A2603E07EC7FC3800FFF8EB3FC026407CBD2F>I<B600C090387FFFFCA300
0101E0C7000F138026007F80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C5A4C
5A4C5A4CC8FC163E5E5E4B5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF8913883C7
FCEC878791388F03FE91389E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E707EA2
707E707EA2707F717E84173F717E717EA2717E848419802601FFE04A13C0B600C090B6FC
A3403E7DBD47>I<B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35F
A25F5F5F4C5A160748486C133FB8FCA3313E7DBD39>I<B500C093383FFFF0A300016D93
387FF800D8007F18E0D977F016EFA3D973F8ED01CFA2D971FCED038FA3D970FEED070FA2
6E150E80A26E6C141CA36E6C1438A26E6C1470A36E6C14E0A26E6CEB01C0A36E6CEB0380
A36E6CEB0700A2037F130EA36F6C5AA26F6C5AA36F6C5AA25FED07F0A2923803F9C0A36F
B45AA26F90C7FCA213F8486C147ED807FFEF3FF8B500F8013C011FB512F0A34C3E7DBD53
>I<B56C91B512F88080D8007F030713006EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF
01707FA26E7E6E7EA26E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E
6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0
A2177F173FA2171F170FA2170701F81503487ED807FF1501B500F81400A218703D3E7DBD
44>I<ED7FE0913807FFFE91391FC03F8091397E0007E04948EB03F8D907F0EB00FE4948
147F49486E7E49486E7E49C86C7E01FE6F7E00018349150300038348486F7EA248486F7E
A2001F188049167F003F18C0A3007F18E049163FA300FF18F0AC007F18E06D167FA4003F
18C0A26C6CEEFF80A36C6C4B1300A26C6C4B5A00035F6D150700015F6C6C4B5A6D5E6D6C
4A5A6D6C4A5A6D6C4AC7FC6D6C14FED901FCEB03F8D9007FEB0FE091391FC03F80912607
FFFEC8FC9138007FE03C427BBF47>I<B712F8EEFF8017E000019039C0003FF86C6C48EB
07FCEE01FE707EEF7F80EF3FC018E0A2EF1FF0A218F8A818F0A2EF3FE0A218C0EF7F80EF
FF004C5AEE07FCEE3FF091B612C04CC7FC0280C9FCB3A73801FFE0B612C0A3353E7DBD3E
>I<B712C016FCEEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E84717EA271
7EA284A760177F606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8FC16F09138
8001FCED003FEE1FC0707E707E83160383160183A383A484A4F0C004190EA28218E0057F
131E2601FFE0161CB600C0EB3FF094381FF83805071370CA3801FFE09438003F803F407D
BD43>82 D<D907FC130C90391FFF801C017FEBF03C3901FC03F83A03F0007E7CD807C0EB
1FFC4848130F001F140748C71203003E1401007E1400A2007C157C12FCA2163CA36C151C
A27EA26C6C14007F7FEA3FF8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C15C0013F
14E0010714F0EB007F020713F89138007FFC150FED07FE15031501ED00FFA200E0157FA3
163FA27EA3163E7E167E6C157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9FCEB0FC0
3AF07F803F8090391FFFFE00D8E00713F839C0007FC028427BBF33>I<003FB91280A390
3AF0007FE001018090393FC0003F48C7ED1FC0007E1707127C00781703A300701701A548
EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>I<B600C090B512F8A30001
01E0C70007130026007F80EC01FC715A1870B3B3A4013F16F06E5DA21701011F5E80010F
15036E4A5A010793C7FC6D6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF00FE00203
B51280020049C8FCED1FF03D407DBD44>I<B500FE017FB5D88007B5FCA3000301C00101
01E0C713F86C90C849EC3FE07148EC0F807E7215006E143F017F190E84A26D6C60A24D7E
6D6C60A2EFE7F86D6C60A2933801C3FC6E18F001076104037F6E0281140101036104077F
17006D6C4D5AA2040EEB7F806D6C4DC7FCA24CEB3FC0DA7F80160EA24CEB1FE003C0161E
023F171C047814F0DBE070010F133C021F173804F014F84C1307DA0FF05EA2DBF1C0EB03
FCDA07F95EA2DBFB80EB01FEDA03FF6F5AA293C8FCA26E5FA24B157F020094C8FCA24B81
037C153EA20378151E0338151C58407EBD5D>87 D<007FB5D8C003B512E0A3C649C7EBFC
00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D13F0
4C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C5A91
3801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801C07F
0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F130149
486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B512FE
A33F3E7EBD44>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFCA40E5B77C319>91
D<486C13C00003130101001380481303000EEB070048130E0018130C0038131C00301318
0070133800601330A300E01370481360A400CFEB678039FFC07FE001E013F0A3007F133F
A2003F131F01C013E0390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3B3B3B3ABEAFFFC
A40E5B7FC319>I<1318133C137E13FF3801E7803803C3C0380781E0380F00F0001E1378
48133C48131E48130F00601306180D76BD2D>I<EB0FF8EBFFFE3903F01F8039078007E0
000F6D7E9038E001F8D81FF07F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5FC90381F
F87FEB7F803801FC00EA07F8EA0FE0485A485AA248C7FCEE038012FEA315FFA3007F5BEC
03BF3B3F80071F8700261FC00E13CF3A07F03C0FFE3A01FFF807FC3A003FC001F0292A7D
A82D>97 D<EA01FC12FFA3120712031201B1EC03FC91381FFF8091387C07E09039FDE001
F09039FFC000FC4A137E91C77E49158049141F17C0EE0FE0A217F0A2160717F8AA17F0A2
160FA217E0161F17C06D1580EE3F006D5C6E13FE9039F3C001F89039F1E003F09039E078
0FC09026C03FFFC7FCC7EA07F82D407EBE33>I<49B4FC010F13E090383F00F8017C131E
4848131F4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5A
AB6C7EA3003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C6C1378
90383F01F090380FFFC0D901FEC7FC222A7DA828>I<ED01FC15FFA3150715031501B114
FF010713E190381F80F990387E003D49131FD803F81307485A49130348481301121F123F
5B127FA290C7FCA25AAA7E7FA2123FA26C7E000F14037F000714076C6C497E6C6C497ED8
007C017913F890383F01F190380FFFC1903A01FE01FC002D407DBE33>I<EB01FE90380F
FFC090383F03F09038FC01F848486C7E4848137E48487F000F158049131F001F15C04848
130FA2127F16E090C7FCA25AA290B6FCA290C9FCA67EA27F123F16E06C7E1501000F15C0
6C6C13036DEB07806C6C1400C66C131E017E5B90381F80F8903807FFE0010090C7FC232A
7EA828>I<EC1FC0EC7FF8903801F83C903807E07E90380FC0FFEB1FC1EB3F811401137F
EC00FE01FE137C1500AEB6FCA3C648C7FCB3AE487E007F13FFA320407EBF1C>I<167C90
3903F801FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC060000
0F6EC7FC49137E001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E03903FE0F
C026071FFFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C81
0003813A0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E157E6C
5D6C6C495A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D
>I<EA01FC12FFA3120712031201B1EC01FE913807FFC091381E07E091387803F09138E0
01F8D9FDC07F148001FF6D7E91C7FCA25BA25BB3A6486C497EB5D8F87F13FCA32E3F7DBE
33>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCACEA01FC127FA3120712031201B3AC
487EB512F0A3143E7DBD1A>I<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB
7FFFA313017F147FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E
07C0380FFF803801FC00185185BD1C>I<EA01FC12FFA3120712031201B292B51280A392
383FFC0016E0168093C7FC153C5D5D4A5AEC07C04A5A4AC8FC143E147F4A7E13FD9038FF
DFC0EC9FE0140F496C7E01FC7F496C7E1401816E7E81826F7E151F826F7EA282486C14FE
B539F07FFFE0A32B3F7EBE30>I<EA01FC12FFA3120712031201B3B3B1487EB512F8A315
3F7DBE1A>I<2701F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B7803F0
3C01F80007903BE001F87000FC2603F9C06D487F000101805C01FBD900FF147F91C75B13
FF4992C7FCA2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901
F801FE00FF903807FFC091381E07E091387803F000079038E001F82603F9C07F00011380
01FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF0107
13E090381F81F890387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F15F048
48EB01F8A2003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB
03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF00100
90C7FC282A7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F03A03FF
C001FC6C496C7E91C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1F
E0A2EE3FC06D1580EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7
FCEC07F891C9FCAD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090
397F00387C01FC131CD803F8130E4848EB0FFC150748481303121F485A1501485AA448C7
FCAA6C7EA36C7EA2001F14036C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F1
90380FFFC1903801FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB
1FF8EC787CECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35BB3A548
7EB512FEA31F287EA724>I<90383FC0603901FFF8E03807C03F381F000F003E1307003C
1303127C0078130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480
000114C0D8003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F07E1401
6C14E06CEB03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA613
3CA4137CA213FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038
FE01C0A2EB7F03013F138090381F8700EB07FEEB01F81B397EB723>I<D801FC14FE00FF
147FA3000714030003140100011400B3A51501A31503120015076DEB06FF017E010E1380
6D4913FC90381FC078903807FFE00100903880FE002E297DA733>I<B539E00FFFE0A327
07FE000313006C48EB00FC5E00015D7F00005DA26D13016D5CA26D6C485AA2ECC007011F
91C7FCA290380FE00EA2ECF01E0107131CA26D6C5AA2ECFC7801011370A2ECFEF001005B
A2EC7FC0A36E5AA26EC8FCA3140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE003FE0
0013C06C486D48EB3F806C4817006D010F141E00016F131C15076D163C00004A6C1338A2
017F5E4B7E151DD93F805DED3DFC1538D91FC04A5AED78FE9238707E03D90FE0017F5BED
E03F02F0140701070387C7FC9138F1C01F02F9148F010315CE9138FB800F02FF14DE6D15
FCED00076D5DA24A1303027E5CA2027C1301023C5C023813003D287EA642>I<B539F01F
FFE0A30003D9C00F1300C690388007F8D97F0013E002805BD93FC05B011F49C7FC90380F
E00EECF01E6D6C5A01035B6D6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BECF1FC90
3801E1FEECC0FF01037F49486C7ED90F007F011E6D7E013E130F496D7E01FC80486C8000
0F4A7EB539803FFFF8A32D277FA630>I<B539E00FFFE0A32707FE000313006C48EB01FC
6F5A00015D7F00005DA2017F495AA2EC8003013F5CA26D6C48C7FCA26E5A010F130EA26D
6C5AA2ECF83C01031338A26D6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2140EA2
141E141C143C1438A2147800181370127EB45BA2495AA248485AD87E07C9FCEA780EEA3C
3CEA1FF8EA07E02B3A7EA630>I<001FB61280A2EBE0000180140049485A001E495A121C
4A5A003C495A141F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC0
0380A2EB7F80EBFF005A5B484813071207491400485A48485BA248485B4848137F00FF49
5A90B6FCA221277EA628>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fp cmr12 12 19
/Fp 19 122 df<DB0FFE146092B500C013E0020314F0913A0FFC01FC0191393FC0003E02
FFC7EA0F83D903FCEC03C74948EC01E74948EC00FF4948157F4948153F4948151F49C912
0F485A491607120348481603A248481601A248481600A2123FA2491760127FA31900485A
AE6C7EA21960A2123F7FA2001F18E07F000F18C0A26C6C160119806C6C160312016DEE07
006C6C16066D6C150E6D6C5D6D6C5D6D6C15786D6C5D6D6C4A5AD900FFEC0780DA3FC001
1FC7FCDA0FFC13FC0203B512F0020014C0DB0FFEC8FC3B487BC546>67
D<B6D8C003B6FCA3000101E0C70007138026007F80913801FE00B3A991B7FCA30280C712
01B3AC2601FFE0913807FF80B6D8C003B6FCA340447CC349>72 D<010FB512FEA3D90003
13806E130080B3B3AB123F487E487EA44A5A13801300006C495A00705C6C13076C5C6C49
5A6CEB1F802603E07FC7FC3800FFFCEB1FE027467BC332>74 D<49B41303010FEBE00701
3F13F89039FE00FE0FD801F8131FD807E0EB079F49EB03DF48486DB4FC48C8FC4881003E
81127E82127C00FC81A282A37E82A27EA26C6C91C7FC7F7FEA3FF813FE381FFFE06C13FE
6CEBFFE06C14FC6C14FF6C15C0013F14F0010F80010180D9001F7F14019138001FFF0303
1380816F13C0167F163F161F17E000C0150FA31607A37EA36C16C0160F7E17806C151F6C
16006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A90393FC00FE0D8E00FB51280010149
C7FC39C0003FF02B487BC536>83 D<B60107B500F890380FFFFEA3000301E0D9001F90C8
13F06C0180DA0FFCED3FC091C86C48ED1F006C871C0E6D6C6E7E1C0CA26D6C6F5DA36EDA
06FF1538011F1A30A26E020E6D1470010FDB0C7F1560A26E021C7F0107DB183F5DA2856D
6CDA301F4A5AA36D6C4A6C6C49C7FCA36D6C4A6C6C1306A3DB80016E130E027FDA800314
0CA2DBC00380023FDA00015CA203E081021F01066D5CA36E6C486E6C5AA36E6C486E6C5A
A36F48EC1FE1020360A2DBFE7015F302010160020F90C8FCA2DBFFE015FB6E49EC07FEA3
6F486E5AA36FC86C5AA3031E6F5AA4030C16605F467EC364>87 D<EB07FC90383FFF8090
38F80FE03903C003F048C66C7E000E6D7ED80FC0137E486C137F6D6D7EA36F7EA26C5AEA
0380C8FCA4EC0FFF49B5FC90380FFE1FEB3FC0EBFF00EA03FC485A485A485A485A127F5B
176048C7FCA3153FA36D137F007F14EF6D9038C7E0C0003F13013A1FE00783F13B07F81E
03FF802701FFFC0113003A001FE0007C2B2E7CAC31>97 D<EB01FE903807FFC090381F03
F090387E00FC49137E48487F485A4848EB1F80000F15C049130F121F484814E01507A200
7F15F090C7FCA25AA390B6FCA290C9FCA67EA27FA2123F16306C7E1670000F15606D14E0
6C6C14C0000314016C6CEB03806C6CEB0700013E131E90381F80F8903803FFE0010090C7
FC242E7DAC2B>101 D<EE0F80D901FCEB7FE0903A0FFF81F0F090393F07E3819039FC01
FF033A01F800FE014848017E13E00007027FC7FC497F000F8149131F001F81A9000F5D6D
133F000792C7FC6D5B0003147E6C6C5B6D485A3903BF07E090380FFF80260701FCC8FC90
CAFCA25AA37F6C7E7F90B512F86C14FF16E06C15F86C6C8048B67E3A07C0000FFF484813
00003FC8EA3F80003E151F48ED0FC0A2481507A56C150F007C1680007E151F003E16006C
153E6C6C5CD807E0495AD801F8EB07E0D8007FEB3F8090261FFFFEC7FC010113E02C427D
AC31>103 D<EA01FC12FFA3120712031201B3EC01FE913807FFC091381E07F091383801
F802707FECE000D9FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F13FE
A32F457DC436>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCADEA01FC12FFA3120712
031201B3B0487EB512F8A315437DC21C>I<143C14FFA2491380A46D1300A2143C91C7FC
ADEC7F80EB3FFFA31300147F143FB3B3AA123E127F39FF807F00A2147EA25C6C485A383C
01F06C485A3807FF80D801FEC7FC195785C21E>I<EA01FC12FFA3120712031201B3A292
381FFFE0A36F1300ED07F816E05E5E030EC7FC5D5D5D5D4A5A4A5A4AC8FC5CEC3F804A7E
14FF9038FDCFE09038FF8FF01407496C7E01FC7F14016E7E81816F7E82151F6F7E821507
826F7E8282486C491380B5D8F81F13F8A32D457DC433>I<3901FC01FE00FF903807FFC0
91381E07F091383801F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA3
5BB3A8486CECFF80B5D8F83F13FEA32F2C7DAB36>110 D<3901FC03FC00FF90380FFF80
91383C07E091387001F83A07FDE000FE00010180137F01FFEC3F8091C7EA1FC04915E049
140F17F0160717F8160317FCA3EE01FEABEE03FCA3EE07F8A217F0160F6D15E0EE1FC06D
143F17806EEB7E00D9FDC05B9039FCF003F891383C0FE091381FFF80DA03FCC7FC91C9FC
AE487EB512F8A32F3F7DAB36>112 D<3903F803F000FFEB1FFCEC3C3EEC707F0007EBE0
FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA3202C7DAB26
>114 D<90383FE0183901FFFC383907E01F78390F0003F8001E1301481300007C147812
7800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF6C14C06C14E0
C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C143C6C147C15
786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7DAC26>I<1306
A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3A4150CAA01
7E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC09038007F001E3E
7EBC26>I<D801FC147F00FFEC3FFFA300071401000380000181B3A85EA35DA212006D5B
017E9038077F80017F010E13C06D011C13FE90380FC078903803FFF09026007F8013002F
2D7DAB36>I<B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600160E0000150C6D
141C6D1418A26E1338013F1430A26D6C5BA26E13E0010F5CA26D6C485AA2ECF803010391
C7FCA2903801FC06A2ECFE0E0100130CA2EC7F18A215B8EC3FB0A2EC1FE0A36E5AA26E5A
A36EC8FCA21406A35CA25CA2123C007E5BB4FC5CA25CEAFE01387C0380D87007C9FCEA3C
1EEA0FFCEA03F02E3F7EAA33>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fq cmr17 17.28 25
/Fq 25 123 df<B712F0A7240780A12B>45 D<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3F
C0EA0F00C7FCB3B3A2120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C3E74BD24>
58 D<170FA34D7EA24D7EA34D7EA34D7EA34C7F17DFA29338039FFC178FA29338070FFE
1707040F7FEE0E03A2041E80EE1C01A2043C80EE3800A24C80187FA24C80183FA24B4880
181F0303814C130FA203078193C71207A24B81030E80A24B8284A24B8284A24B82197F03
F0824B153FA20201834B151FA202038392B8FCA24A83A292C91207020E8385A24A848502
3C84023882A20278840270177FA202F0844A173FA24948841A1FA24948841A0FA249CB7F
1A074985865B496C85497E48486C4D7F000F01F8051F13F0B60407B612F0A45C657DE463
>65 D<DD7FF81560040FB56C14E0047F14E00303B600FC1301030F9038E003FEDB3FFEC7
383F8003DBFFF0EC07C04A01C0913803F007020790C9EAF80FDA0FFC167C4A48EE1E1FDA
7FE0160F4A48EE07BF4949EE03FF4990CAFC4948834948834A187F495A013F193F494818
1F5C01FF190F485BA24890CC1207A248481903A2485A1B01121FA25B123F1B005BA2127F
1C00A4485AB06C7EA5123F1CE07FA2121F7FA2000F1A011CC06C7EA26C7E1B036C6D1980
1B076C7F017F1A006E606D6C181E131F6D6C606E18386D6C18786D6C606D6D4C5A6D6D4C
5A6E6C1607DA1FF84C5A6E6C4CC7FC6EB4167C020101C04A5A6E01F0EC07F0DB3FFEEC1F
C092280FFFE001FFC8FC030390B512FCDB007F14F0040F14809326007FF8C9FC53667AE3
60>67 D<B712E0A4C60280CAFCD93FFCCBFC131F5CB3B3B21A1CA61A3C1A38A61A78A41A
F8A21AF01901A219031907A2190F191F193F197FF001FF1807013F043F13E0D9FFFC0203
B5FCBBFCA4466279E153>76 D<B500FC071FB51280A36E61C6F58000013F51C7FCD91DFF
F177FCA2011C6D18E7A36E6CEF01C7A36E6CEF0387A36E6CEF0707A26E6C170EA36E6C17
1CA36E6C1738A36E6C1770A26E6D16E0A36F6CED01C0A36F6CED0380A36F6CED0700A26F
6C150EA36F6C5DA36F6C5DA36F6C5DA26F6D5CA3706C495AA3706C495AA3706C49C7FCA2
706C130EA3706C5BA3706C5BA3706C5BA3706D5AA294387FC1C0A394383FE380A3DD1FF7
C8FCA3EF0FFEA2013E6F5AA2137F715A2601FFC04F7E000701F896383FFF80B66C6D4802
3FB61280A3715A696278E17A>I<933801FFE0043F13FF4BB612E003079038003FF8DB1F
F0EB03FEDB7FC0903800FF804A48C8EA3FE0DA03FCED0FF0DA0FF0ED03FC4A486F7E4A48
6F7E4A48707E4ACA6C7E4948717E4948717E4948717E4948717E4948717E013F854A8301
7F864948727EA24890CC6C7EA24848737EA24848737EA2000F87491907001F87A3484873
7EA4007F1C80A24985A400FF1CC0AF6C6C4F1380A5003F1C006D61A3001F63A26D190F00
0F63A26C6C4F5AA36C6C4F5AA26C6D4E5A6C636E18FF017F626D6C4D90C7FC6E5F011F61
6D6C4D5A6D6C4D5A0103616E171F6D6C4D5A6D6D4C5ADA3FC04CC8FCDA1FF0ED03FE6E6C
4B5A6E6C4B5ADA01FFED3FE09126007FC0ECFF80DB1FF0D903FEC9FCDB07FFEB3FF80301
90B512E0DB003F91CAFC040113E05A667AE367>79 D<B912C018FEF0FFC019F0C601FCC8
13FCD93FF8ED0FFF011F04037F06007FF13FF0737E737E1907737E86731380A27313C0A3
1BE01A7FA21BF0A91BE0A21AFF1BC0A34F13801B00614F5A624F5A4F5AF17FE04F5A0603
90C7FCF01FFE943801FFF891B812E096C8FC18F802F8CCFCB3B3A4497E90B5FCB7FCA44C
6279E15A>I<DA07FF1403023F01F05B49B512FC010702FF5B90260FFC0013C0D93FE090
380FF01FD97F80EB03F801FEC86C5A4848157E4848ED1F7F48486F5A4848815B001F8249
81003F8290CAFC4883A2007E83A212FE84A384A27EA36D82A26C7EA26D93C7FC6C7E7F7F
6C7E6D7E6C13E06C13FCECFFC06C14F86CECFF806C15F86DECFF80011F15E06D15F80103
15FE01006F7E021F81020181DA003F80030380DB003F7F04037FEE007FEF1FFF71138017
037113C083A2F07FE0183FA2181F00E018F0180FA41807A27EA47E19E0180F7E19C07E6C
171F19806D163F6D17006D5E6D16FE486C5E6D4B5AD8FC7F1503D91F80EC0FF026F80FE0
4A5AD907FCEC7F8029F001FFE003FFC7FC6D6CB512FC48011F14F0020314C0489026001F
FEC8FC3C667AE349>83 D<B600FC0207B600E00203B512FCA4000191C9000F01F8C9003F
13C026007FFC040301E0040F13006D487049EE07FC7A5A73725A131F696E717E010F67A2
6E721603010767A26E4D7E6D54C7FCA2876D6DDB01CF170EA2876FDB0387171E6D1E1CA2
6F92260703FF163C027F1D38A26F030F80023FDC0E015FA26F031E80021FDC1C005FA288
6E6C4B017F4B5AA36F4B6D6C1403020765A26F03F06E14076E4C011F93C8FCA270010181
6E4C010F150EA2886E6D494801075DA37049C76C6C143C037F1B38A27049701378033F02
0E6E1570A270011E82031F021C6E5DA2896F6C49037F495AA21DF07049033F1303030763
A2704992381FF8076F98C9FCA2058117FC6F4A030F130EA205C317FE6F4A03075BA21DFF
DC7FE7C96C5BA305FE7013F8043F61A37048705BA37048715AA37048715AA34D171F0403
96CAFCA24D830401180E86647FE189>87 D<EC3FF0903803FFFE010F6D7E90393FC03FE0
90397E0007F801F86D7ED801E06D7E48486D7E48486E7E48C86C7E7F01F06E7E487E6D6E
7EA3707EA36C5AEA03E0C9FCA6167FED7FFF020FB5FC91387FF807903801FF80903807FC
00EB1FF0EB7FC0495AD803FEC7FC485A120F5B485A485AA2484817E0A312FF5BA2160FA3
161F6D141B007F153B16736D913971FC01C06C6C14E1001FEC01C1D80FFC903A0780FE03
806C6C903A0F00FF07002701FF807E6DB4FC27007FFFF86D5A011F01E0EB1FF8010190C7
EA07E03B417ABF42>97 D<181EEF3FFEEE07FFA4EE000F1703A21701B3AAEDFF80020F13
F8023F13FE9139FF803F81903A03FC0007C14948EB01E1D91FE0EB00F94948147D494814
3D49C8121F4848150F491507120348481503491501120F121F5BA2123F5B127FA45B12FF
AD127F7FA3123FA27F121FA26C6C1503A26C6C150712036D150F6C6C151F0000163D137F
6D6CECF9FF6D6CEB01F1D90FF0D903C113C06D6CD90F81EBFF80D901FFEB7F019039007F
FFFC021F13E00201010091C7FC41657CE349>100 D<EC03FE91381FFFE091B512F89039
01FE03FE903A07F0007F8049486D7ED93FC06D7E49C76C7E496E7E491403484881484814
01000782491400000F8283485A1880123F49153FA2007F17C0A35BA212FF90B8FCA30180
CAFCA9127F7FA3123FA27F121FEF01C06C7E17036C6C1680A26C6C15070001EE0F006D15
0E6C6C151E6D6C5C6D6C5C6D6C5CD907F0EB03E0D903FC495A902700FF803FC7FC91383F
FFFC020F13F00201138032417CBF3A>I<ED0FF0ED7FFC4AB5FC913907F81F8091390FE0
0FC091381FC03F91393F807FE0EC7F005C495A5C0103EC3FC0A24948EB0F0093C7FCA249
5AB3A5B712F0A426000FF0C8FCB3B3B0497EEB3FFE003FB6FCA42B657EE428>I<F03F80
DA03FC903801FFE091273FFFC00713F091B539F01FC1F8903B03FC03FC3E03903A07F000
FE784948EB7FE04948EB3FC04948011FEB01F049C76C6CC7FC01FE6E7EA248486E7EA200
0382A2491401000782AA00035E6D1403A200015EA26C6C4A5AA2017F4A5A6D6C495A6D6C
495A496C49C8FCD937F013FE903973FC03FC0160B512F0D9E03F13C0DA03FCC9FC4848CB
FCA57FA27FA27F6C7E13FF91B512FE6DECFFF06D15FE6D6F7E6D16E084013F16FC01FEC7
00017FD803F8EC001FD807E0ED03FF4848030013804848167F003FEF3FC090CA121F127E
F00FE012FE481707A66C170F007E18C0A2007F171F6C6CEE3F806C6CEE7F00000F177ED8
07F04B5A6C6C4B5A6C6C4B5AD8007FED1FC0D93FE0ECFF80D90FFED90FFEC7FC0101B612
F0D9003F1480020101F0C8FC3D5E7DBF42>I<EB03C0EA07FFB5FCA41201EA007FA2133F
B3AAEE7FE0923803FFFC030F13FFDB3F0013C00378EB1FE04B6D7EDAC1C06D7EDAC38080
02C7C7120302CE81170114DC14D802F86E7E5CA35CA35CB3B3496C4A7F496C4A7FB6D8F0
03B612C0A442647DE349>I<133C13FF487F487FA66C5B6C90C7FC133C90C8FCB3A2EB03
C0EA07FF127FA41201EA007FA2133FB3B3AC497E497EB612E0A41B5F7DDE23>I<EB03C0
EA07FFB5FCA41201EA007FA2133FB3B3B3B3AD497E497EB612F0A41C647DE323>108
D<D903C0D9FFC0EC07FED807FF010301F891381FFFC0B5010F01FE027F13F0923D3F00FF
8001F807FC0378903B3FC003C001FEDAC1E090261FE00FC77E0001D9C3C090260FF01E6E
7ED8007F49902607F81C6E7E02C7C75CD93FCE6E6C486E7E02CC166002DC16E002D85E02
F8DA01FF6F7E4A5EA24A93C8FCA44A5DB3B3496C4A6C4B7E496C4A6D4A7EB6D8F007B6D8
803FB512FCA4663F7CBE6F>I<D903C0EB7FE0D807FF903803FFFCB5010F13FFDB3F0013
C00378EB1FE04B6D7E0001D9C1C06D7E27007FC3808002C7C71203D93FCE81170114DC14
D802F86E7E5CA35CA35CB3B3496C4A7F496C4A7FB6D8F003B612C0A4423F7DBE49>I<ED
FF80020F13F8023F13FE9139FF007F80D903FCEB1FE0D907F0EB07F0D90FC0EB01F8D93F
80EB00FE49C8127F017E81496F7E48486F7E00038349150700078348486F7EA2001F8349
1501A2003F83A348486F7EA400FF1880AC007F1800A26D5DA2003F5FA36C6C4B5AA36C6C
4B5A00075FA26C6C4B5A6C6C4B5AA26C6C4B5A017F4BC7FC6D6C14FE6D6C495AD90FF0EB
07F8D903FCEB1FE0D900FFEB7F806EB5C8FC020F13F8020113C039417CBF42>I<D903C0
EB7FC0D807FF903807FFFCB5011F13FFDB7F0013C003F8EB1FF0DAC3E0EB07F80001D9C7
806D7E26007FCFC76C7E02DE6E7ED93FFC6F7E4A6F7E4A82181F4A82727E5C727EA2727E
A3727EA41A8084AC4E1300A54E5AA2611807A24E5A6E5E181F6E4B5A6E5E187F6E4B5A02
DE4A90C7FC02CF4A5ADAC780495ADAC3C0EB0FF0DAC1F0EB3FE0913AC07E01FF806FB448
C8FC030F13F80300138093CAFCB3A3497E497EB612F0A4415B7DBE49>I<9039078003F8
D807FFEB0FFFB5013F13C092387C0FE0913881F01F9238E03FF00001EB838039007F8700
148FEB3F8E029CEB1FE0EE0FC00298EB030002B890C7FCA214B014F0A25CA55CB3B0497E
EBFFF8B612FCA42C3F7CBE33>114 D<1438A71478A414F8A31301A31303A21307130F13
1FA2137F13FF1203000F90B6FCB8FCA3260007F8C8FCB3AE17E0AE6D6CEB01C0A316036D
6C148016076D6C14006E6C5A91383FC01E91381FF07C6EB45A020313E09138007F802B59
7FD733>116 D<001FB81280A391C70001130001F85C01E05D01804A5A160F90C8485A00
1E5E4C5A48157F5F4C5A5D94C7FC00384A5A15074B5A5E4B5A153F5EC8485A15FF5E4A90
C8FC5C5D4A5A140F4A5A5D4A5A147F5D4A48EB03805B92C7FC495A13075C4948EC070013
1F495A5C495A13FF4A5C4890C8FC5A495D485A000F5E48485D4915FE48481401007F1507
49147FB8FCA3313E7DBD3A>122 D E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin

%%EndSetup
%%Page: 1 1
1 0 bop 34 638 a Fq(MLton:)58 b(A)44 b(Whole-Program)f(Optimizing)k
(Compiler)d(for)f(Standard)h(ML)620 891 y Fp(Henry)33
b(Cejtin)293 b(Suresh)34 b(Jagannathan)292 b(Stephen)34
b(W)-8 b(eeks)1921 5532 y Fo(1)p eop
%%Page: 2 2
2 1 bop 8 274 a Fn(1)135 b(In)l(tro)t(duction)8 477 y
Fo(Building)24 b(e\016cien)m(t)k(implemen)m(tations)d(of)j
(higher-order)d(call-b)m(y-v)-5 b(alue)26 b(languages)i(has)f(pro)m(v)m
(en)g(to)h(b)s(e)e(a)h(com-)8 590 y(plex)32 b(and)g(c)m(hallenging)g
(exercise.)49 b(This)31 b(is)g(b)s(ecause)i(the)g(presence)g(of)g
(\014rst-class)f(pro)s(cedures,)h(user-de\014ned)8 703
y(datat)m(yp)s(es,)g(and)d(sophisticated)g(mo)s(dule)g(systems)h
(require)f(implemen)m(tation)f(tec)m(hniques)i(signi\014can)m(tly)e
(dif-)8 816 y(feren)m(t)35 b(from)f(those)g(emplo)m(y)m(ed)h(in)e(the)h
(compilation)f(of)h(more)h(traditional)d(\014rst-order)h(languages.)53
b(Indeed,)8 929 y(the)42 b(question)f(of)h(ho)m(w)g(to)g(build)d(adv)-5
b(anced)42 b(compilers)e(for)h(these)h(languages)g(remains)f(a)h(topic)
f(of)h(m)m(uc)m(h)8 1041 y(in)m(terest)31 b(in)e(the)h(programming)g
(languages)g(comm)m(unit)m(y)-8 b(.)149 1154 y(One)33
b(cen)m(tral)h(question)f(in)f(the)i(design)e(of)i(an)m(y)f(serious)g
(implemen)m(tation)f(is)g(the)i(issue)e(of)i(in)m(termediate)8
1267 y(represen)m(tations:)39 b(what)27 b(is)f(the)i(language)f(in)f
(whic)m(h)g(optimizations)f(of)j(the)f(high-lev)m(el)f(source)h(is)f
(expressed?)8 1380 y(Mo)s(dern)40 b(functional)f(language)i(implemen)m
(tations)e(t)m(ypically)h(sp)s(ecify)f(optimizations)g(using)g(a)i
Fm(\025)p Fo(-calculus)8 1493 y(framew)m(ork)31 b(that)h(p)s(ermits)d
(the)i(construction)g(and)f(application)f(of)i(\014rst-class)g(pro)s
(cedure)e(v)-5 b(alues.)42 b(F)-8 b(urther-)8 1606 y(more,)40
b(most)f(phases)e(of)h(the)g(compiler)e(are)i(sp)s(eci\014ed)f(using)f
(a)i Fl(typ)-5 b(e)g(d)40 b Fo(in)m(termediate)d(language)h(capable)g
(of)8 1719 y(v)-5 b(alidating)25 b(partial)h(correctness)h(of)g
(optimizations)e(p)s(erformed)g(on)i(that)g(phase.)39
b(Ho)m(w)m(ev)m(er,)29 b(the)e(transforma-)8 1832 y(tion)34
b(of)h(the)g Fm(\025)p Fo(-calculus)f(core)h(to)g(a)g(\014rst-order)f
(language)h(whic)m(h)f(can)h(b)s(e)f(directly)f(translated)h(to)i(mac)m
(hine)8 1945 y(co)s(de)h(is)f(usually)e(p)s(erformed)h(v)m(ery)i(late)g
(in)f(the)h(compilation)e(pro)s(cess.)59 b(T)-8 b(o)37
b(express)f(this)g(transformation,)8 2058 y(kno)m(wn)f(as)h
Fl(closur)-5 b(e)38 b(c)-5 b(onversion)p Fo(,)38 b(within)33
b(a)i(t)m(yp)s(ed)g(language)h(framew)m(ork)f(has)g(b)s(een)g(though)m
(t)h(to)g(require)e(a)8 2171 y(signi\014can)m(tly)24
b(more)i(expressiv)m(e)g(t)m(yp)s(e)g(system)g(than)f(those)i(used)e
(in)f(earlier)h(phases)g(of)h(the)g(compiler.)38 b(Conse-)8
2283 y(quen)m(tly)-8 b(,)25 b(compiler)e(writers)f(ha)m(v)m(e)j(either)
e(had)g(to)i(implemen)m(t)d(closure)h(con)m(v)m(ersion)h(and)f
(subsequen)m(t)g(lo)m(w-lev)m(el)8 2396 y(transformations)34
b(in)g(an)g(un)m(t)m(yp)s(ed)g(setting,)j(or)d(express)h(closure)f(con)
m(v)m(ersion)h(using)e(a)j(more)f(complex)f(t)m(yp)s(e)8
2509 y(system.)149 2622 y(Orthogonal)25 b(to)h(the)f(issue)e(of)i(in)m
(termediate)g(represen)m(tations)g(is)f(the)h(mec)m(hanism)f(b)m(y)h
(whic)m(h)e(a)i(program's)8 2735 y(con)m(trol-\015o)m(w)37
b(prop)s(erties)d(are)i(deriv)m(ed)e(and)h(used.)55 b(Unlik)m(e)35
b(programs)g(written)g(in)f(a)i(\014rst-order)f(language,)8
2848 y(a)j(higher-order)e(program's)i(con)m(trol-)g(and)f(data-\015o)m
(w)i(prop)s(erties)d(are)i(in)m(tert)m(wined.)61 b(Hence,)40
b(con)m(trol-\015o)m(w)8 2961 y(information)d(cannot)i(b)s(e)e(easily)h
(computed)g(b)m(y)g(mere)g(syn)m(tactic)h(examination)f(of)g(the)h
(program)f(text.)65 b(A)8 3074 y(global)42 b(\015o)m(w)h(analysis)e
(that)i(computes)g(an)f(appro)m(ximation)g(to)h(a)g(program's)g(actual)
g(con)m(trol-\015o)m(w)g(o\013ers)8 3187 y(the)e(promise)f(of)h
(generating)g(useful)e(information.)71 b(Ho)m(w)m(ev)m(er,)45
b(it)c(has)f(b)s(een)g(widely)f(presumed)h(that)h(the)8
3300 y(cost)e(of)e(collecting)g(this)g(information)e(out)m(w)m(eighs)j
(its)f(b)s(ene\014ts.)61 b(Indeed,)38 b(global)f(con)m(trol-\015o)m(w)h
(analysis)e(is)8 3413 y(rarely)29 b(found)f(on)i(the)f(critical)g(path)
g(in)f(most)i(industrial)c(strength)j(compilers)f(for)i(higher-order)e
(languages.)8 3525 y(Instead,)42 b(compilers)37 b(usually)g(rely)i(on)g
(a)g(com)m(bination)g(of)g(syn)m(tactic)h(heuristics)d(and)i
(sophisticated)f(lo)s(cal)8 3638 y(analyses)29 b(suc)m(h)f(as)h(a)g(t)m
(yp)s(e)g(inference)f(system)h(or)f(v)-5 b(arian)m(ts)29
b(thereof)g(to)g(collect)g(in)m(terpro)s(cedural)e(information)8
3751 y(useful)i(for)h(optimizations.)149 3864 y(MLton)40
b(is)f(an)g(optimizing)e(compiler)h(for)h(Standard)g(ML)g(that)h(is)e
(distinguished)e(from)j(other)g(higher-)8 3977 y(order)h(language)h
(implemen)m(tations)d(in)h(three)h(imp)s(ortan)m(t)g(resp)s(ects.)69
b(First,)43 b(in)38 b(con)m(trast)k(to)f(recen)m(t)g(w)m(ork)8
4090 y(exploring)35 b(the)h(applicabilit)m(y)c(of)37
b(t)m(yp)s(ed)e(in)m(termediate)h(languages)g(in)e(compiler)h(design,)h
(the)h(in)m(termediate)8 4203 y(represen)m(tations)32
b(up)s(on)e(whic)m(h)h(optimizations)f(are)i(p)s(erformed)e(in)h(MLton)
h(are)g(all)f(based)g(on)h(simply-t)m(yp)s(ed)8 4316
y(\014rst-order)38 b(languages.)65 b(F)-8 b(urthermore,)41
b(MLton's)e(design)e(p)s(ermits)g(pro)s(cedures)g(to)i(b)s(e)f
(closure-con)m(v)m(erted)8 4429 y(prior)43 b(to)h(the)h(application)d
(of)i(an)m(y)g(serious)f(optimizations.)81 b(Mo)m(ving)44
b(closure)f(con)m(v)m(ersion)i(early)e(in)g(the)8 4542
y(compilation)25 b(pro)s(cess)h(allo)m(ws)f(MLton)i(to)g(apply)e
(optimization)g(tec)m(hniques)h(found)e(in)h(traditional)g(languages)8
4655 y(directly)k(on)i(the)f(\014rst-order)g(in)m(termediate)g
(languages)g(pro)s(duced)f(after)i(closure)f(con)m(v)m(ersion.)149
4767 y(Second,)48 b(rather)c(than)g(using)f(syn)m(tactic)j(clues)d(or)i
(lo)s(cal)e(analyses)h(to)h(disco)m(v)m(er)g(in)m(teresting)e(con)m
(trol-)8 4880 y(\015o)m(w)h(information,)h(MLton)f(relies)f(on)g(a)h
(global)f(con)m(trol-\015o)m(w)i(analysis)d(based)h(on)h(OCF)-10
b(A.)43 b(Information)8 4993 y(computed)22 b(b)m(y)h(the)f(analysis)f
(is)h(used)f(b)m(y)i(the)f(closure)g(con)m(v)m(erter)i(to)f(in)m(tro)s
(duce)e(dispatc)m(hes)h(at)h(call-sites)f(to)h(the)8
5106 y(appropriate)e(co)s(de.)38 b(The)21 b(size)h(of)g(the)g(dispatc)m
(hes)f(is)g(th)m(us)g(in)m(v)m(ersely)g(related)g(to)i(the)f(accuracy)h
(of)f(the)f(analysis.)8 5219 y Fl(Co)-5 b(er)g(cions)39
b Fo(are)e(inserted)e(in)h(the)h(target)h(program)e(if)g(\015o)m(w)h
(information)e(indicates)h(that)h(distinct)e(closures)1921
5532 y(2)p eop
%%Page: 3 3
3 2 bop 8 274 a Fo(with)36 b(di\013eren)m(t)h(represen)m(tations)g
(\015o)m(w)g(in)m(to)h(the)f(same)h(program)f(p)s(oin)m(t.)60
b(Co)s(ercions)37 b(preserv)m(e)g(a)h(closure's)8 387
y(meaning,)29 b(but)f(c)m(hange)i(its)e(t)m(yp)s(e.)40
b(In)28 b(other)h(w)m(ords,)g(they)g(p)s(ermit)e(the)i(translation)f
(to)h(express)g(higher-order)8 500 y(\015o)m(w)36 b(information)e(in)h
(the)h(\014rst-order)e(target)k(language)e(in)e(a)j(form)e(v)m
(eri\014able)f(b)m(y)i(a)g(simple)e(t)m(yp)s(e)i(system.)8
613 y(Since)j(the)i(results)d(of)j(\015o)m(w)f(analysis)e(are)j
(completely)f(expressed)f(in)g(the)h(t)m(yp)s(es)g(of)g(the)h(target)g
(program,)8 726 y(ordinary)29 b(optimizations)g(p)s(erformed)f(on)i
(the)g(target)i(automatically)e(tak)m(e)i(adv)-5 b(an)m(tage)32
b(of)e(\015o)m(w)g(information)8 839 y(computed)f(on)g(the)h(source.)40
b(Unlik)m(e)28 b(other)h(systems,)h(co)s(ercions)f(p)s(ermit)e(MLton)j
(to)g(use)f(sp)s(ecialized)e(closure)8 951 y(represen)m(tations)c(for)g
(di\013eren)m(t)f(pro)s(cedures)g(ev)m(en)h(if)f(they)h(are)g(in)m(v)m
(ok)m(ed)g(at)h(the)f(same)g(call-site.)38 b(Exp)s(erimen)m(tal)8
1064 y(results)29 b(indicate)h(that)h(lo)s(cal)e(optimizations)h(can)g
(eliminate)f(almost)i(all)e(the)i(inserted)e(co)s(ercions.)149
1177 y(Th)m(us,)37 b(using)d(a)i(global)f(con)m(trol-\015o)m(w)i
(analysis)d(mak)m(es)j(the)f(e\013ectiv)m(eness)h(of)f(transformations)
f(suc)m(h)g(as)8 1290 y(closure)28 b(con)m(v)m(ersion)h(less)e(dep)s
(enden)m(t)h(on)g(the)h(syn)m(tactic)g(structure)f(of)g(the)h(source)f
(program,)h(and)f(leads)g(to)h(a)8 1403 y(translation)k(in)g(whic)m(h)f
(there)i(are)g(no)g(unkno)m(wn)f(function)f(calls.)50
b(Exp)s(erience)33 b(with)g(MLton)h(demonstrates)8 1516
y(that)39 b(the)f(strategy)i(of)e(using)f(\015o)m(w)h(information)e(to)
j(driv)m(e)e(global)h(represen)m(tation)g(decisions)e(is)h(practical.)8
1629 y(Exp)s(erimen)m(tal)43 b(results)g(conclusiv)m(ely)g(dispro)m(v)m
(e)h(the)h(folklore)e(that)i(global)f(con)m(trol-\015o)m(w)h(analysis)e
(is)h(to)s(o)8 1742 y(exp)s(ensiv)m(e)27 b(to)g(b)s(e)g(used)f(in)f
(practice;)k(indeed,)e(the)g(time)f(sp)s(en)m(t)h(b)m(y)g(the)g
(compiler)f(in)f(computing)h(con)m(trol-\015o)m(w)8 1855
y(information)j(is)g(t)m(ypically)h(less)f(than)h(5\045)h(of)f(o)m(v)m
(erall)h(compile-time.)149 1968 y(Third,)i(MLton)h(is)f(a)h
(whole-program)g(compiler.)50 b(In)33 b(Standard)f(ML,)j(mo)s(dule)d
(structures)h(ma)m(y)i(b)s(e)e(pa-)8 2081 y(rameterized)39
b(through)f(the)g(use)h(of)f(functors.)65 b(MLton)39
b(applies)d(functors)i(at)i(compile-time)d(with)g(all)h(uses)8
2193 y(of)30 b(structures)f(and)g(signatures)g(eliminated)f(b)m(y)i(mo)
m(ving)f(declarations)g(to)i(the)f(top-lev)m(el)g(and)f(appropriately)8
2306 y(renaming)f(v)-5 b(ariables.)39 b(In)29 b(order)g(to)g(compile)g
(to)h(a)f(simply-t)m(yp)s(ed)e(language,)j(all)e(uses)h(of)g(p)s
(olymorphism)d(are)8 2419 y(eliminated)f(through)i(a)g(pro)s(cess)g
(called)f Fl(monomorphisation)p Fo(,)32 b(a)c(tec)m(hnique)e(that)i
(duplicates)d(eac)m(h)j(p)s(olymor-)8 2532 y(phic)k(expression)g(for)h
(eac)m(h)i(monot)m(yp)s(e)e(at)h(whic)m(h)e(it)h(is)f(used.)49
b(While)32 b(whole-program)g(compilation)g(means)8 2645
y(that)40 b(SML)e(programs)g(cannot)i(b)s(e)e(separately)h(compiled)e
(in)h(MLton,)j(more)e(optimization)f(opp)s(ortunities)8
2758 y(presen)m(t)26 b(themselv)m(es)f(since)g(lexical)f(scop)s(es)i
(are)f(enlarged,)h(th)m(us)f(leading)g(to)h(more)f(e\016cien)m(t)h(co)s
(de)g(generation.)8 2871 y(Exp)s(erimen)m(tal)35 b(results)g(o)m(v)m
(er)i(a)f(wide-range)g(of)g(b)s(enc)m(hmarks)f(\(ranging)h(from)g(100)h
(to)g(75K)g(lines\))d(indicate)8 2984 y(that)25 b(co)s(de)f(pro)s
(duced)f(b)m(y)h(MLton)g(is)f(often)i(a)f(factor)h(of)g(t)m(w)m(o)g(or)
f(more)g(faster)h(than)f(programs)f(compiled)g(under)8
3097 y(SML/NJ,)31 b(a)g(widely-used)d(optimizing)g(compiler)h(for)h
(SML.)149 3210 y(In)37 b(this)f(pap)s(er,)j(w)m(e)e(discuss)f(MLton's)i
(design)e(and)h(presen)m(t)g(exp)s(erimen)m(tal)f(results)g(that)i
(supp)s(ort)e(the)8 3323 y(premises)h(up)s(on)g(whic)m(h)g(MLton)i(is)e
(built.)62 b(The)38 b(next)h(section)f(presen)m(ts)g(an)g(o)m(v)m
(erview)h(of)g(the)f(translation)8 3435 y(steps)g(p)s(erformed)d(b)m(y)
j(MLton)g(in)e(compiling)f(a)j(Standard)e(ML)h(program.)62
b(In)37 b(Section)g(3,)j(w)m(e)d(discuss)f(the)8 3548
y(translation)26 b(from)g(Standard)f(ML)h(to)h(XML,)g(an)f
(explicitly-t)m(yp)s(ed)e(p)s(olymorphic)g(language)j(with)e(no)h(mo)s
(dule)8 3661 y(constructs.)75 b(Section)31 b(4)h(describ)s(es)e(the)h
(translation)f(from)h(XML)h(to)g(SXML,)f(a)h(simply-t)m(yp)s(ed)d
(language)j(in)8 3774 y(whic)m(h)k(p)s(olymorphism)c(has)37
b(b)s(een)e(remo)m(v)m(ed)j(b)m(y)e(monomorphisation.)94
b(Section)36 b Fk(??)h Fo(describ)s(es)e(the)i(global)8
3887 y(con)m(trol-\015o)m(w)d(analysis)e(and)g(closure)h(con)m(v)m
(ersion)g(algorithm;)h(the)f(output)g(of)g(closure)f(con)m(v)m(ersion)i
(is)e(a)h(pro-)8 4000 y(gram)g(in)d(F)m(OL,)j(a)f(simply-t)m(yp)s(ed)e
(\014rst-order)h(language.)46 b(T)-8 b(o)33 b(further)d(facilitate)i
(lo)s(cal)f(optimizations,)h(F)m(OL)8 4113 y(programs)37
b(are)h(subsequen)m(tly)d(translated)i(to)h(CPS,)e(a)h(\014rst-order)g
(language)g(that)h(allo)m(ws)e(lo)s(cal)h(functions)8
4226 y(\(used)31 b(as)h(con)m(tin)m(uations\))f(to)h(b)s(e)f(represen)m
(ted.)44 b(T)-8 b(o)32 b(illustrate)d(the)j(utilit)m(y)d(of)j(our)f(in)
m(termediate)g(languages,)8 4339 y(Section)j Fk(??)g
Fo(discusses)d(some)j(optimizations)e(p)s(erformed)g(on)i(the)f(CPS)f
(language.)84 b(Section)33 b Fk(??)h Fo(giv)m(es)g(p)s(er-)8
4452 y(formance)d(results.)39 b(Related)31 b(w)m(ork)g(and)e
(conclusions)g(are)i(presen)m(ted)f(in)f(Section)h Fk(??)q
Fo(.)8 4738 y Fn(2)135 b(Ov)l(erview)8 4941 y Fo(In)25
b(this)g(section,)i(w)m(e)g(giv)m(e)f(a)h(brief)d(o)m(v)m(erview)i(of)h
(the)f(relev)-5 b(an)m(t)26 b(compiler)e(passes)i(and)f(in)m
(termediate)h(languages)8 5054 y(\(ILs\))36 b(in)f(MLton.)57
b(Figure)36 b(1)g(sho)m(ws)f(the)h(v)-5 b(arious)35 b(passes)h(tak)m
(en)h(b)m(y)e(the)h(compiler)f(in)f(compiling)g(an)i(SML)8
5167 y(program.)50 b(First,)34 b(MLton)g(translates)f(the)h(input)e
(SML)h(program)g(in)m(to)h(an)f(explicitly-t)m(yp)s(ed,)f(p)s
(olymorphic)8 5280 y(in)m(termediate)k(language)h(\(XML\)[)p
Fk(?)r Fo(].)60 b(XML)36 b(do)s(es)h(not)f(ha)m(v)m(e)i(an)m(y)f(mo)s
(dule)e(lev)m(el)h(constructs.)60 b(All)35 b(functor)1921
5532 y(3)p eop
%%Page: 4 4
4 3 bop 8 186 3870 4 v 8 399 4 213 v 1287 356 a Fo(Figure)30
b(1:)41 b(MLton)31 b(Structure.)p 3875 399 V 8 402 3870
4 v 8 659 a(applications)21 b(are)i(p)s(erformed)f(at)h(compile-time,)h
(and)e(all)g(uses)g(of)h(structures)f(and)g(signatures)g(are)h
(eliminated)8 772 y(b)m(y)36 b(mo)m(ving)g(declarations)g(to)g(the)h
(top-lev)m(el)f(and)f(appropriately)g(renaming)g(v)-5
b(ariables.)56 b(Defunctorization)8 885 y(is)31 b(a)i(k)m(ey)g(feature)
f(of)g(MLton)h(b)s(ecause)f(it)g(allo)m(ws)f(optimizations)g(to)i
(examine)f(the)g(en)m(tire)g(program:)44 b(whole-)8 998
y(program)26 b(analysis)e(is)g(critical)h(to)h(generating)g(e\016cien)m
(t)g(represen)m(tations)f(for)h(closures)e(and)h(other)h(datat)m(yp)s
(es.)149 1111 y(Next,)33 b(MLton)e(translates)h(the)f(XML)g(to)h(SXML)f
(\(a)h(simply-t)m(yp)s(ed)d(language\))i(b)m(y)g Fl(monomorphisation)p
Fo(,)8 1224 y(eliminating)e(all)i(uses)g(of)h(p)s(olymorphism)c(b)m(y)j
(duplicating)f(eac)m(h)i(p)s(olymorphic)d(expression)i(for)g(eac)m(h)i
(mono-)8 1337 y(t)m(yp)s(e)38 b(at)g(whic)m(h)e(it)h(is)g(used.)61
b(After)38 b(monomorphisation,)f(small)f(higher-order)g(functions)g
(are)i(duplicated;)8 1450 y(a)c(size)g(metric)f(is)g(used)g(to)h(prev)m
(en)m(t)h(excessiv)m(e)f(co)s(de)g(gro)m(wth.)51 b(An)33
b(imp)s(ortan)m(t)g(thesis)g(underlying)e(MLton's)8 1563
y(design)43 b(is)f(that)j(simply-t)m(yp)s(ed)c(in)m(termediate)i
(languages)h(are)g(su\016cien)m(tly)e(expressiv)m(e)h(to)i(supp)s(ort)c
(opti-)8 1675 y(mizations)30 b(necessary)g(to)h(generate)h(e\016cien)m
(t)f(co)s(de)f(for)g(mo)s(dern)f(call-b)m(y-v)-5 b(alue)29
b(languages.)41 b(Since)29 b(there)i(are)8 1788 y(no)41
b(o)s(ccurrences)g(of)g(p)s(olymorphic)d(functions)i(after)h
(monomorphisation,)h(all)e(subsequen)m(t)g(optimizations)8
1901 y(op)s(erate)31 b(o)m(v)m(er)h(simply-t)m(yp)s(ed)c(languages.)149
2014 y(MLton)22 b(then)f(p)s(erforms)f(a)h(global)g(con)m(trol-\015o)m
(w)h(analysis)d(on)j(the)f(resulting)e(SXML,)j(and)e(closure)h(con)m(v)
m(erts)8 2127 y(pro)s(cedures)37 b(to)h(F)m(OL)g(\(a)g(\014rst-order)f
(simply-t)m(yp)s(ed)e(language\).)63 b(T)-8 b(o)38 b(pro)m(vide)f
(e\016cien)m(t)h(supp)s(ort)e(for)h(lo)s(cal)8 2240 y(con)m(trol-\015o)
m(w,)31 b(the)e(F)m(OL)g(program)g(is)f(subsequen)m(tly)g(compiled)g
(to)i(CPS,)e(a)h(\014rst-order)g(language)g(with)f(lo)s(cal)8
2353 y(functions)d(that)h(serv)m(e)h(the)f(role)f(of)h(con)m(tin)m
(uations,)h(and)e(explicit)f(exception)i(handler)e(stac)m(ks.)41
b(All)24 b(imp)s(ortan)m(t)8 2466 y(lo)s(cal)c(optimizations)g(p)s
(erformed)f(b)m(y)i(the)g(compiler)e(o)s(ccur)i(on)g(CPS)e(programs.)38
b(In)20 b(con)m(trast)i(to)f(other)h(mo)s(dern)8 2579
y(functional)31 b(language)h(implemen)m(tations,)f(the)h(elimination)d
(of)j(higher-order)e(pro)s(cedures)h(b)m(y)h(MLton)g(tak)m(es)8
2692 y(place)41 b(w)m(ell)f(b)s(efore)g(serious)g(optimizations)g(ha)m
(v)m(e)i(o)s(ccurred.)72 b(Consequen)m(tly)-8 b(,)43
b(optimizations)d(tend)g(to)i(b)s(e)8 2805 y(simpler)g(to)k(express,)h
(their)d(correctness)h(more)g(easily)e(v)-5 b(alidated,)48
b(and)c(e\016ciency)g(of)h(co)s(de)f(more)h(easily)8
2917 y(realized.)71 b(Some)40 b(of)h(the)g(optimizations)e(p)s
(erformed)g(on)h(CPS)g(programs)g(are)h(SML-sp)s(eci\014c)e(\(e.g.,)45
b(tuple)8 3030 y(\015attening,)c(datat)m(yp)s(e)f(impro)m(v)m(emen)m
(ts,)h(etc.\))67 b(while)37 b(others)i(are)g(commonly)f(found)g(in)f
(other)i(optimizing)8 3143 y(compilers)29 b(\(e.g.,)j(inlining,)27
b(redundan)m(t)i(argumen)m(t)i(elimination,)d(and)i(lo)s(op)f(in)m(v)-5
b(arian)m(t)30 b(co)s(de)g(motion\).)149 3256 y(The)d(target)h
(language)f(to)h(whic)m(h)d(CPS)h(programs)g(are)h(compiled)e(is)h(C)g
(whic)m(h)g(is)g(subsequen)m(tly)f(compiled)8 3369 y(to)32
b(mac)m(hine)f(co)s(de)h(b)m(y)f Fj(gcc)p Fo(.)42 b(The)31
b(implemen)m(tation)f(tec)m(hniques)h(used)f(to)i(compile)e(to)i(C)f
(is)f(fairly)g(standard;)8 3482 y(for)k(example,)h(lik)m(e)f([)p
Fk(?)q Fo(],)h(a)g(tramp)s(oline)d(is)h(used)h(to)h(satisfy)e(prop)s
(er)g(tail-recursion.)51 b(T)-8 b(o)34 b(reduce)g(tramp)s(oline)8
3595 y(costs,)i(m)m(ultiple)c(CPS)h(pro)s(cedures)g(ma)m(y)i(reside)e
(in)g(the)h(same)g(C)g(pro)s(cedure;)h(a)f(dispatc)m(h)g(on)g(C)f(pro)s
(cedure)8 3708 y(en)m(try)e(jumps)e(to)i(the)f(appropriate)g(co)s(de)g
([)p Fk(?)q Fo(].)8 3994 y Fn(3)135 b(Defunctorization)p
8 4109 1138 4 v 8 4240 4 131 v 37 4197 a Fl(stu\013)32
b(on)h(defunctorizor)h(her)-5 b(e.)p 1143 4240 V 8 4243
1138 4 v 8 4484 a Fn(4)135 b(Monomorphisation)p 8 4609
1203 4 v 8 4739 4 131 v 37 4697 a Fl(stu\013)32 b(on)h(monomorphiser)j
(her)-5 b(e)p 1208 4739 V 8 4742 1203 4 v 149 4810 a
Fo(An)31 b(SXML)g(program)f(consists)h(of)g(a)g(collection)f(of)h
(datat)m(yp)s(e)h(declarations)e(follo)m(w)m(ed)h(b)m(y)g(an)f
(expression)8 4922 y(in)42 b(A-normal)h(form)g([)p Fk(?)q
Fo(].)80 b(As)44 b(in)e(ML,)i(a)g(datat)m(yp)s(e)g(declaration)f
(de\014nes)g(a)h(new)f(sum)f(t)m(yp)s(e)i(along)g(with)8
5035 y(constructors)31 b(to)h(create)g(and)f(discriminate)d(among)j(v)
-5 b(alues)31 b(of)g(that)g(t)m(yp)s(e.)42 b(The)31 b(source)g
(language)g(con)m(tains)8 5148 y(a)j(lam)m(b)s(da)e(calculus)g(core)j
(augmen)m(ted)f(b)m(y)f(constructor)h(application,)f(case,)i(tuple)d
(construction,)i(selection)8 5261 y(of)28 b(tuple)e(comp)s(onen)m(ts,)j
(and)d(exceptions.)40 b(The)27 b(source)h(language)f(is)g(simply-t)m
(yp)s(ed,)f(where)h(t)m(yp)s(es)g(are)h(either)1921 5532
y(4)p eop
%%Page: 5 5
5 4 bop 8 186 3870 4 v 8 2669 4 2483 v 1172 390 a Fm(C)120
b Fi(2)113 b Fl(Con)1205 502 y(t)122 b Fi(2)113 b Fl(T)-7
b(yc)i(on)909 615 y Fm(w)r(;)15 b(x;)g(y)s(;)g(z)119
b Fi(2)113 b Fl(V)-7 b(ar)1194 728 y Fm(\034)93 b Fo(::=)83
b Fl(t)1375 841 y Fi(j)131 b Fm(\034)40 b Fj(->)30 b
Fm(\034)1375 954 y Fi(j)131 b Fm(:)15 b(:)g(:)47 b Fj(*)30
b Fm(\034)40 b Fj(*)45 b Fm(:)15 b(:)g(:)1173 1067 y
Fl(P)92 b Fo(::=)83 b Fj(let)45 b Fm(:)15 b(:)g(:)46
b Fl(data)h Fm(:)15 b(:)g(:)47 b Fj(in)30 b Fl(e)g Fj(end)1074
1180 y Fl(data)85 b Fo(::=)e Fj(datatype)28 b Fl(t)39
b Fj(=)45 b Fm(:)15 b(:)g(:)47 b Fj(|)30 b Fm(C)37 b
Fj(of)30 b Fm(\034)55 b(:)15 b(:)g(:)1202 1293 y Fl(e)83
b Fo(::=)g Fm(x)1375 1406 y Fi(j)131 b Fj(let)30 b Fm(x)g
Fj(=)g Fm(b)g Fj(in)g Fl(e)g Fj(end)1205 1519 y Fm(b)83
b Fo(::=)g Fl(e)1375 1632 y Fi(j)131 b Fj(fn)30 b Fm(w)j
Fj(=>)c Fl(e)1375 1744 y Fi(j)131 b Fm(y)33 b(z)1375
1857 y Fi(j)131 b Fm(C)37 b(y)1375 1970 y Fi(j)131 b
Fj(case)29 b Fm(y)k Fj(of)45 b Fm(:)15 b(:)g(:)47 b Fj(|)30
b Fm(C)37 b(z)d Fj(=>)c Fl(e)45 b Fm(:)15 b(:)g(:)1375
2083 y Fi(j)131 b Fj(\()15 b Fm(:)g(:)g(:)46 b(y)s Fj(,)f
Fm(:)15 b(:)g(:)i Fj(\))1375 2196 y Fi(j)131 b Fj(#)p
Fm(i)30 b(y)1375 2309 y Fi(j)131 b Fj(raise)29 b Fm(y)1375
2422 y Fi(j)131 b Fm(e)1573 2436 y Fh(1)1643 2422 y Fj(handle)29
b Fm(y)k Fj(=>)d Fm(e)2206 2436 y Fh(2)1508 2626 y Fo(Figure)g(2:)41
b(SXML)p 3875 2669 V 8 2672 3870 4 v 8 2930 a(t)m(yp)s(e)24
b(constructors,)h(arro)m(w)e(t)m(yp)s(es,)i(exception)f(t)m(yp)s(es,)h
(or)e(tuple)f(t)m(yp)s(es.)39 b(W)-8 b(e)24 b(omit)f(the)h(t)m(yp)s(e)f
(rules)f(and)g(assume)8 3043 y(that)31 b(ev)m(ery)g(expression)e(and)g
(v)-5 b(ariable)29 b(is)g(annotated)j(with)c(its)i(t)m(yp)s(e.)41
b(W)-8 b(e)31 b(write)e Fl(e)c Fo(:)h Fm(\034)40 b Fo(\()p
Fm(x)26 b Fo(:)f Fm(\034)10 b Fo(\))31 b(to)f(mean)h(that)8
3155 y Fl(e)f Fo(\()p Fm(x)p Fo(\))h(has)g(t)m(yp)s(e)f
Fm(\034)10 b Fo(.)149 3268 y(W)-8 b(e)43 b(assume)f(that)g(all)f(b)s
(ound)e(v)-5 b(ariables)41 b(in)f(a)i(program)g(are)g(distinct.)73
b(W)-8 b(e)43 b(use)e Fl(ExpOc)-5 b(c)p Fo(,)45 b Fl(BindOc)-5
b(c)p Fo(,)8 3381 y Fl(L)g(amOc)g(c)q Fo(,)30 b Fl(AppOc)-5
b(c)p Fo(,)30 b(and)e Fl(T)-7 b(upleOc)i(c)30 b Fo(to)g(name)f(the)g
(sets)h(of)f(sp)s(eci\014c)f(o)s(ccurrences)i(of)f(subterms)f(of)h(the)
h(forms)8 3494 y Fm(e)p Fo(,)40 b Fm(b)p Fo(,)f Fj(fn)e
Fm(x)g Fj(=>)g Fm(e)p Fo(,)j Fm(y)g(z)t Fo(,)f(and)e
Fj(\()15 b Fm(:)g(:)g(:)54 b(x)p Fj(,)e Fm(:)15 b(:)g(:)h
Fj(\))p Fo(,)39 b(resp)s(ectiv)m(ely)-8 b(,)39 b(in)d(the)i(giv)m(en)f
(program)g(\(o)s(ccurrences)h(can)g(b)s(e)8 3607 y(de\014ned)j
(formally)g(using)g(paths)h(or)g(unique)e(expression)h(lab)s(els\).)75
b Fl(T)-7 b(yCon)43 b Fo(names)g(the)f(set)h(of)f(datat)m(yp)s(es)8
3720 y(declared)30 b(in)f(a)i(program.)149 3833 y(W)-8
b(e)29 b(sp)s(ecify)c(an)i(exact)i(seman)m(tics)e(via)g(the)g(inductiv)
m(ely)e(de\014ned)g(relations)h(in)g(Figure)h(3.)39 b(The)27
b(relation)f(is)8 3946 y(written)k Fl(e)p Fm(;)15 b(\032)27
b(,)-15 b Fi(!)27 b Fm(v)s Fo(,)k(and)g(pronounced)f(\\in)g(en)m
(vironmen)m(t)h Fm(\032)p Fo(,)g(expression)f Fl(e)h
Fo(ev)-5 b(aluates)32 b(to)f(v)-5 b(alue)31 b Fm(v)s
Fo(.")44 b(A)31 b(v)-5 b(alue)8 4059 y(is)28 b(either)h(a)g(closure,)g
(a)h(tuple)e(of)h(v)-5 b(alues,)29 b(an)g(exception)g(v)-5
b(alue)28 b(\(written)h(\\[)p Fm(x)p Fo(]")h(for)f(some)g(exception)g
(v)-5 b(ariable)8 4172 y Fm(x)p Fo(,)31 b(or)f(built)e(b)m(y)j
(application)d(of)j(a)g(datat)m(yp)s(e)g(constructor.)8
4458 y Fn(5)135 b(Closure)46 b(Con)l(v)l(ersion)g(and)e(Flo)l(w)i
(Analysis)8 4661 y Fo(Cen)m(tral)36 b(to)h(MLton's)g(design)f(is)f(its)
h(treatmen)m(t)i(of)e(closure)g(con)m(v)m(ersion,)j(Unlik)m(e)c(other)i
(implemen)m(tations,)8 4774 y(MLton)26 b(p)s(erforms)e(closure-con)m(v)
m(ersion)h(at)i(an)e(early)g(stage)i(to)f(translate)g(programs)f(to)h
(a)g(simply-t)m(yp)s(ed)d(\014rst-)8 4887 y(order)28
b(in)m(termediate)g(language.)41 b(The)27 b(most)i(imp)s(ortan)m(t)f(b)
s(ene\014t)f(of)i(this)e(approac)m(h)h(is)g(that)h(once)g(a)f(program)8
5000 y(is)34 b(th)m(us)h(transformed,)h(n)m(umerous)e(optimization)g
(tec)m(hniques)h(dev)m(elop)s(ed)f(for)h(other)h(\014rst-order)e
(languages)8 5113 y(can)d(b)s(e)f(immediately)e(applied.)149
5226 y(Closure)37 b(con)m(v)m(ersion)i(transforms)e(a)i(higher-order)d
(program)i(in)m(to)h(a)f(\014rst-order)f(one)i(b)m(y)f(represen)m(ting)
1921 5532 y(5)p eop
%%Page: 6 6
6 5 bop 8 186 3870 4 v 8 3341 4 3155 v 317 390 a Fm(v)86
b Fi(2)d Fl(V)-7 b(alue)83 b Fo(=)g(\()p Fl(L)-5 b(amOc)g(c)21
b Fi(\002)f Fl(Env)p Fo(\))g(+)g Fm(E)5 b(xn)20 b Fo(+)g
Fl(V)-7 b(alue)2329 353 y Fg(\003)2389 390 y Fo(+)19
b(\()p Fl(Constructor)k Fi(\002)d Fl(V)-7 b(alue)p Fo(\))317
502 y Fm(\032)83 b Fi(2)g Fl(Env)149 b Fo(=)83 b Fl(V)-7
b(ar)25 b Fi(!)g Fl(V)-7 b(alue)p 727 753 480 4 v 727
894 4 141 v 755 846 a Fm(\032;)15 b Fl(e)26 b Fm(,)-15
b Fi(!)25 b Fl(v)10 b Fm(=p)p 1204 894 V 727 897 480
4 v 695 1075 544 4 v 737 1158 a(x;)15 b(\032)25 b(,)-15
b Fi(!)25 b Fm(\032)p Fo(\()p Fm(x)p Fo(\))401 1301 y
Fm(\032;)15 b(b)26 b(,)-15 b Fi(!)25 b Fm(v)723 1316
y Ff(b)878 1301 y Fm(\032)p Fo([)p Fm(x)g Fi(7!)g Fm(v)1187
1316 y Ff(b)1222 1301 y Fo(])p Fm(;)15 b Fl(e)25 b Fm(,)-15
b Fi(!)26 b Fl(v)p 360 1341 1214 4 v 449 1423 a Fm(\032;)15
b Fj(let)30 b Fm(x)h Fj(=)f Fm(b)g Fj(in)g Fl(e)g Fj(end)24
b Fm(,)-15 b Fi(!)26 b Fl(v)805 1566 y Fm(\032;)15 b(b)26
b(,)-15 b Fi(!)25 b Fm(p)p 411 1607 1112 4 v 452 1689
a(\032;)15 b Fj(let)30 b Fm(x)h Fj(=)f Fm(b)g Fj(in)g
Fl(e)g Fj(end)24 b Fm(,)-15 b Fi(!)25 b Fm(p)p 2598 753
478 4 v 2598 894 4 141 v 2627 846 a(\032;)15 b(b)25 b(,)-15
b Fi(!)25 b Fl(v)10 b Fm(=p)p 3072 894 V 2598 897 478
4 v 1924 1075 1826 4 v 1965 1157 a(\032;)15 b Fj(fn)31
b Fm(w)h Fj(=>)e Fm(e)c(,)-15 b Fi(!)25 b(h)p Fj(fn)30
b Fm(w)j Fj(=>)d Fm(e;)15 b(\032)p Fi(j)3135 1182 y Ff(F)10
b(V)16 b Fh(\()p Fj(fn)30 b Ff(w)i Fj(=>)e Ff(e)p Fh(\))3673
1157 y Fi(i)1960 1308 y Fm(\032)p Fo(\()p Fm(y)s Fo(\))c(=)f
Fi(h)p Fj(fn)30 b Fm(w)j Fj(=>)c Fl(e)p Fm(;)15 b(\032)2760
1275 y Fg(0)2784 1308 y Fi(i)120 b Fm(\032)2986 1275
y Fg(0)3009 1308 y Fo([)p Fm(w)28 b Fi(7!)e Fm(\032)p
Fo(\()p Fm(z)t Fo(\)])p Fm(;)15 b Fl(e)26 b Fm(,)-15
b Fi(!)26 b Fm(v)p 1918 1348 1838 4 v 2632 1430 a(\032;)15
b(y)33 b(z)d(,)-15 b Fi(!)25 b Fm(v)p 2394 1552 886 4
v 2436 1635 a(\032;)15 b(C)37 b(y)28 b(,)-15 b Fi(!)25
b(h)p Fm(C)q(;)15 b Fo(\()p Fm(\032)p Fo(\()p Fm(y)s
Fo(\)\))p Fi(i)2196 1778 y Fm(\032)p Fo(\()p Fm(y)s Fo(\))26
b(=)f Fi(h)p Fm(C)q(;)15 b Fl(v)10 b Fi(i)121 b Fm(\032)p
Fo([)p Fm(z)30 b Fi(7!)25 b Fl(v)10 b Fo(])p Fm(;)15
b Fl(e)25 b Fm(,)-15 b Fi(!)26 b Fl(v)3455 1745 y Fg(0)p
2055 1818 1565 4 v 2096 1900 a Fm(\032;)15 b Fj(case)30
b Fm(y)j Fj(of)45 b Fm(:)15 b(:)g(:)47 b Fj(|)30 b Fm(C)36
b(z)f Fj(=>)30 b Fl(e)45 b Fm(:)15 b(:)g(:)26 b(,)-15
b Fi(!)26 b Fl(v)3555 1867 y Fg(0)p 2131 2022 1411 4
v 2173 2105 a Fm(\032;)15 b Fj(\()g Fm(:)g(:)g(:)47 b(y)s
Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))25 b Fm(,)-15 b Fi(!)25
b Fo(\()p Fm(:)15 b(:)g(:)47 b(\032)p Fo(\()p Fm(y)s
Fo(\))p Fm(;)f(:)15 b(:)g(:)q Fo(\))2458 2248 y Fm(\032)p
Fo(\()p Fm(y)s Fo(\))26 b(=)f(\()p Fm(:)15 b(:)g(:)47
b(v)2976 2262 y Ff(i)3004 2248 y Fm(;)e(:)15 b(:)g(:)r
Fo(\))p 2416 2288 842 4 v 2603 2370 a Fm(\032;)g Fj(#)p
Fm(i)30 b(y)f(,)-15 b Fi(!)25 b Fm(v)3043 2384 y Ff(i)p
2409 2492 855 4 v 2451 2575 a Fm(\032;)15 b Fj(raise)29
b Fm(y)f(,)-15 b Fi(!)26 b Fo([)p Fm(\032)p Fo(\()p Fm(y)s
Fo(\)])2651 2718 y Fm(\032;)15 b Fl(e)2780 2732 y Fh(1)2845
2718 y Fm(,)-15 b Fi(!)25 b Fl(v)p 2293 2758 1087 4 v
2335 2840 a Fm(\032;)15 b Fl(e)2464 2854 y Fh(1)2534
2840 y Fj(handle)29 b Fm(y)k Fj(=>)c Fl(e)3096 2854 y
Fh(2)3161 2840 y Fm(,)-15 b Fi(!)25 b Fl(v)2190 2983
y Fm(\032;)15 b Fl(e)2319 2997 y Fh(1)2384 2983 y Fm(,)-15
b Fi(!)25 b Fo([)p Fl(v)2577 2997 y Fh(1)2616 2983 y
Fo(])121 b Fm(\032)p Fo([)p Fm(y)28 b Fi(7!)d Fl(v)3065
2997 y Fh(1)3104 2983 y Fo(])p Fm(;)15 b Fl(e)3212 2997
y Fh(2)3277 2983 y Fm(,)-15 b Fi(!)25 b Fl(v)3445 2997
y Fh(2)p 2148 3024 1378 4 v 2320 3106 a Fm(\032;)15 b
Fl(e)2449 3120 y Fh(1)2519 3106 y Fj(handle)29 b Fm(y)k
Fj(=>)d Fl(e)3081 3120 y Fh(2)3146 3106 y Fm(,)-15 b
Fi(!)25 b Fl(v)3314 3120 y Fh(2)1302 3298 y Fo(Figure)30
b(3:)41 b(SXML)30 b(seman)m(tics)p 3875 3341 4 3155 v
8 3344 3870 4 v 8 3601 a(eac)m(h)i(pro)s(cedure)d(with)h(a)g(tag)i
(iden)m(tifying)c(the)j(co)s(de)g(to)g(b)s(e)f(executed)h(when)f(the)h
(pro)s(cedure)e(is)h(applied)e(and)8 3714 y(an)40 b(en)m(vironmen)m(t)g
(con)m(taining)f(the)i(v)-5 b(alues)39 b(of)h(the)h(pro)s(cedure's)e
(free)h(v)-5 b(ariables.)68 b(The)40 b(co)s(de)g(p)s(ortion)f(of)h(a)8
3827 y(pro)s(cedure)30 b(is)f(translated)i(to)g(tak)m(e)h(its)e(en)m
(vironmen)m(t)h(as)f(an)h(extra)g(argumen)m(t.)42 b(When)30
b(a)h(closure)g(is)e(applied,)8 3940 y(free)f(v)-5 b(ariables)27
b(in)f(its)h(b)s(o)s(dy)g(are)h(\014rst)f(b)s(ound)f(b)m(y)h(selecting)
h(their)f(v)-5 b(alues)27 b(from)g(the)h(en)m(vironmen)m(t)g(b)s(efore)
f(the)8 4053 y(rest)k(of)f(the)h(pro)s(cedure)e(b)s(o)s(dy)g(is)g(ev)-5
b(aluated.)149 4166 y(Closure)26 b(con)m(v)m(ersion)h(algorithms)e(for)
i(un)m(t)m(yp)s(ed)f(target)i(languages)f(ha)m(v)m(e)h(b)s(een)e
(explored)g(in)f(detail)h([)p Fk(?)q Fo(,)g Fk(?)q Fo(].)8
4279 y(Algorithms)43 b(that)h(use)g(a)g(t)m(yp)s(ed)g(target)h
(language,)j(ho)m(w)m(ev)m(er,)h(m)m(ust)44 b(solv)m(e)g(the)g(problem)
e(created)j(when)8 4392 y(pro)s(cedures)32 b(of)i(the)g(same)f(t)m(yp)s
(e)h(di\013er)e(in)g(the)i(n)m(um)m(b)s(er)e(and)h(t)m(yp)s(es)g(of)h
(their)e(free)i(v)-5 b(ariables.)48 b(Since)33 b(closure)8
4505 y(con)m(v)m(ersion)26 b(exp)s(oses)g(the)f(t)m(yp)s(es)h(of)g
(these)f(v)-5 b(ariables)25 b(through)f(an)i(explicit)e(en)m(vironmen)m
(t)h(record,)i(pro)s(cedures)8 4618 y(ha)m(ving)32 b(the)g(same)g
(source-lev)m(el)g(t)m(yp)s(e)g(ma)m(y)g(compile)f(to)i(closures)e(of)h
(di\013eren)m(t)f(t)m(yp)s(es.)45 b(Minamide)30 b(et)j(al.)e([)p
Fk(?)q Fo(])8 4731 y(address)24 b(this)g(problem)g(b)m(y)g(de\014ning)f
(a)j(new)e(t)m(yp)s(e)h(system)g(for)g(the)g(target)i(language)e(that)g
(uses)g(an)g(existen)m(tial)8 4843 y(t)m(yp)s(e)37 b(to)g(hide)e(the)i
(en)m(vironmen)m(t)f(comp)s(onen)m(t)h(of)g(a)g(closure)f(record)g(in)f
(the)i(closure's)f(t)m(yp)s(e,)j(exp)s(osing)c(the)8
4956 y(en)m(vironmen)m(t)f(only)f(at)i(calls.)50 b(Unfortunately)-8
b(,)35 b(the)f(target)i(language)e(is)f(more)h(complex)g(than)f(the)h
(simply-)8 5069 y(t)m(yp)s(ed)29 b Fm(\025)p Fo(-calculus)f(and)h(mak)m
(es)h(it)f(di\016cult)e(to)j(express)f(con)m(trol-\015o)m(w)h
(information.)39 b(F)-8 b(or)30 b(example,)g(the)f(t)m(yp)s(e)8
5182 y(system)i(prev)m(en)m(ts)g(expressing)e(optimizations)g(that)i
(imp)s(ose)e(sp)s(ecialized)g(calling)g(con)m(v)m(en)m(tions)j(for)e
(di\013eren)m(t)1921 5532 y(6)p eop
%%Page: 7 7
7 6 bop 8 274 a Fo(closures)30 b(applied)e(at)j(a)g(giv)m(en)f
(call-site.)149 387 y(An)24 b(alternativ)m(e)h(to)g(Minamide)e(et)i
(al.'s)f(solution)f(w)m(as)i(prop)s(osed)e(b)m(y)h(Bell)g(et)h(al.)f([)
p Fk(?)p Fo(].)39 b(Their)23 b(approac)m(h)h(has)8 500
y(the)29 b(b)s(ene\014t)e(of)h(using)e(a)j(simply-t)m(yp)s(ed)c(target)
30 b(language,)f(but)f(do)s(es)f(not)h(express)g(con)m(trol-\015o)m(w)h
(information)8 613 y(in)43 b(the)h(target)h(program.)81
b(Inspired)41 b(b)m(y)j(a)g(tec)m(hnique)g(\014rst)f(describ)s(ed)f(b)m
(y)h(Reynolds)g([)p Fk(?)q Fo(],)k(they)d(suggest)8 726
y(represen)m(ting)26 b(closures)g(as)g(mem)m(b)s(ers)g(of)g(a)h(datat)m
(yp)s(e,)i(with)c(one)h(datat)m(yp)s(e)i(for)e(eac)m(h)i(di\013eren)m
(t)d(arro)m(w)i(t)m(yp)s(e)g(in)8 839 y(the)g(source)g(program.)39
b(F)-8 b(or)27 b(a)g(giv)m(en)f(datat)m(yp)s(e,)j(there)d(is)g(one)g
(constructor)h(for)g(eac)m(h)g(pro)s(cedure)e(of)i(that)g(t)m(yp)s(e)8
951 y(in)32 b(the)h(program.)47 b(The)32 b(translation)g(of)h(a)g
Fm(\025)p Fo(-expression)f(is)g(the)h(application)e(of)h(its)h
(constructor)g(to)g(a)g(tuple)8 1064 y(of)j(the)h(function's)e(free)h
(v)-5 b(ariables.)56 b(A)36 b(call)f(to)i(an)f(unkno)m(wn)f(pro)s
(cedure)f(is)h(replaced)h(with)f(a)h(dispatc)m(h)f(on)8
1177 y(the)e(closure)g(datat)m(yp)s(e)h(that)f(branc)m(hes)g(to)g(the)g
(appropriate)f(piece)h(of)g(co)s(de,)h(passing)e(along)h(the)g(argumen)
m(t)8 1290 y(and)26 b(the)h(en)m(vironmen)m(t)f(record.)39
b(Their)25 b(approac)m(h)h(also)h(handles)d(p)s(olymorphism,)g(essen)m
(tially)h(b)m(y)i(expanding)8 1403 y(p)s(olymorphic)h(functions)h
(during)f(closure)i(con)m(v)m(ersion.)149 1516 y(Ho)m(w)m(ev)m(er,)50
b(this)43 b(approac)m(h)i(to)g(translating)e(pro)s(cedures)g(is)g(v)m
(ery)i(imprecise,)h(and)e(do)s(es)g(not)g(supp)s(ort)8
1629 y(sp)s(ecialized)29 b(closure)h(represen)m(tations.)42
b(F)-8 b(or)32 b(example,)f(consider)f(pro)s(cedures)f
Fj(f)i Fo(and)f Fj(h)g Fo(with)g(t)m(yp)s(e)h Fm(\034)3578
1643 y Fh(1)3648 1629 y Fj(->)f Fm(\034)3814 1643 y Fh(2)3853
1629 y Fo(,)8 1742 y(and)42 b(pro)s(cedure)f Fj(g)g Fo(with)g(t)m(yp)s
(e)h(\()p Fm(\034)1230 1756 y Fh(1)1312 1742 y Fj(->)f
Fm(\034)1489 1756 y Fh(2)1528 1742 y Fo(\))i Fj(->)e
Fm(\034)1783 1756 y Fh(3)1822 1742 y Fo(.)76 b(No)m(w,)46
b(supp)s(ose)40 b(the)j(follo)m(wing)d(three)i(calls)g(o)s(ccur)g(in)8
1855 y(the)36 b(program:)50 b Fj(f\(...\))p Fo(,)35 b
Fj(g\(f\))p Fo(,)g(and)g Fj(g\(h\))p Fo(.)54 b(Closure)34
b(con)m(v)m(ersion)i(as)f(describ)s(ed)e(ab)s(o)m(v)m(e)k(w)m(ould)d
(lead)g(to)i(an)8 1968 y(en)m(vironmen)m(t)i(record)g(for)g
Fj(f)g Fo(and)g Fj(h)g Fo(o)s(ccurring)e(within)g(a)j(datat)m(yp)s(e)g
(represen)m(ting)e(pro)s(cedures)g(with)g(t)m(yp)s(e)8
2081 y Fm(\034)48 2095 y Fh(1)125 2081 y Fj(->)g Fm(\034)298
2095 y Fh(2)337 2081 y Fo(.)63 b(Unfortunately)-8 b(,)39
b(since)e Fj(f)p Fo('s)h(en)m(vironmen)m(t)f(is)g(wrapp)s(ed)f(within)f
(a)j(constructor,)i(the)e(direct)f(call)8 2193 y(to)c
Fj(f)f Fo(m)m(ust)h(still)d(p)s(erform)h(a)h(dispatc)m(h)g(to)h
(extract)h Fj(f)p Fo('s)e(en)m(vironmen)m(t.)46 b(It)33
b(is)e(not)i(p)s(ossible)d(to)j(directly)e(jump)8 2306
y(to)38 b Fj(f)p Fo('s)e(co)s(de)g(ev)m(en)i(in)d(the)i(case)g(where)f
Fj(f)g Fo(is)g(kno)m(wn)g(\(as)h(in)e(the)i(\014rst)e(application\))h
(since)f(the)i(closure)f(tag)8 2419 y(\(represen)m(ted)31
b(as)g(the)f(constructor\))h(m)m(ust)g(b)s(e)e(\014rst)h(\\stripp)s
(ed")f(b)s(efore)h(p)s(erforming)e(the)i(call.)149 2532
y(T)-8 b(olmac)m(h)42 b(and)e(Oliv)-5 b(a)39 b([)p Fk(?)q
Fo(])i(extend)f(Bell)g(et)i(al.)e(b)m(y)h(using)e(a)i(w)m(eak)h(mono)m
(v)-5 b(arian)m(t)41 b(\015o)m(w)g(analysis)f(based)8
2645 y(on)e(t)m(yp)s(e)g(inference)g([)p Fk(?)p Fo(].)64
b(They)38 b(re\014ne)f(the)h(closure)g(datat)m(yp)s(es)h(so)f(that)h
(there)f(is)f(one)h(datat)m(yp)s(e)h(for)f(eac)m(h)8
2758 y(equiv)-5 b(alence)23 b(class)f(of)h(pro)s(cedures)f(as)h
(determined)f(b)m(y)h(uni\014cation.)36 b(Although)22
b(their)g(approac)m(h)h(do)s(es)g(express)8 2871 y(\015o)m(w)f
(analysis)e(in)g(a)i(simply-t)m(yp)s(ed)e(target)j(language,)h(it)d(is)
g(restricted)g(to)h(\015o)m(w)g(analyses)f(based)g(on)h(uni\014cation.)
8 2984 y(As)32 b(b)s(efore,)g(there)h(is)e(a)h(unique)e(constructor)i
(for)g(ev)m(ery)h(closure,)f(and)f(th)m(us)h(their)f(algorithm)f(also)i
(do)s(es)g(not)8 3097 y(easily)e(supp)s(ort)e(sp)s(ecialized)h(closure)
h(implemen)m(tations.)149 3210 y(W)-8 b(e)29 b(di\013er)e(from)g(these)
i(approac)m(hes)f(b)m(y)g(using)e(datat)m(yp)s(e)j(co)s(ercions)f(to)g
(pro)s(duce)f(a)h(simply-t)m(yp)s(ed)e(target)8 3323
y(program.)49 b(Our)32 b(translation)h(inserts)f(co)s(ercions)h(whenev)
m(er)g(di\013eren)m(t)f(\015o)m(w)i(sets)f(merge,)i(as)e(can)h(happ)s
(en)d(at)8 3435 y(calls)38 b(or)g(conditionals.)63 b(Informally)-8
b(,)39 b(a)g(co)s(ercion)g(c)m(hanges)g(closure)f(tags)h(on)g(the)f
(pro)s(cedures)f(whic)m(h)h(ma)m(y)8 3548 y(\015o)m(w)e(in)m(to)f(a)h
(call)f(to)i(ensure)d(that)j(all)d(branc)m(hes)h(of)h(the)g(resulting)e
(dispatc)m(h)g(in)h(the)h(target)h(program)e(ha)m(v)m(e)8
3661 y(the)e(same)g(t)m(yp)s(e.)48 b(Moreo)m(v)m(er,)35
b(the)e(datat)m(yp)s(es)g(generated)h(for)f(the)f(target)i(program)f
(express)f(all)g(pro)s(cedures)8 3774 y(that)39 b(ma)m(y)f(b)s(e)g
(called)f(at)h(the)h(same)f(call-site)f(in)g(the)h(source)g(program)g
(as)g(determined)f(b)m(y)g(\015o)m(w)h(analysis.)8 3887
y(Consequen)m(tly)-8 b(,)31 b(the)f(size)g(of)h(dispatc)m(hes)f(at)h
(calls)e(is)h(in)m(v)m(ersely)f(related)i(to)g(the)f(precision)f(of)h
(the)h(analysis.)149 4000 y(Using)d(dispatc)m(hes)h(instead)e(of)i(co)s
(de)g(p)s(oin)m(ters)f(to)h(express)f(function)g(calls)g(has)g(t)m(w)m
(o)i(imp)s(ortan)m(t)e(b)s(ene\014ts:)8 4113 y(\(1\))23
b(the)f(target)i(language)e(can)g(remain)f(simply-t)m(yp)s(ed)f
(without)h(the)h(need)f(to)i(in)m(tro)s(duce)e(existen)m(tial)g(t)m(yp)
s(es)h([)p Fk(?)q Fo(],)8 4226 y(and)44 b(\(2\))h(optimizations)e(can)h
(use)g(di\013eren)m(t)g(calling)e(con)m(v)m(en)m(tions)j(for)f
(di\013eren)m(t)g(pro)s(cedures)f(applied)e(at)8 4339
y(the)e(same)g(call-site.)66 b(Ho)m(w)m(ev)m(er,)43 b(if)38
b(the)g(simplicit)m(y)e(and)j(optimization)e(opp)s(ortunities)f
(a\013orded)j(b)m(y)g(using)8 4452 y(dispatc)m(hes)27
b(are)g(mask)m(ed)g(b)m(y)g(the)g(o)m(v)m(erhead)h(of)f(the)g(dispatc)m
(h)f(itself,)g(this)g(strategy)i(w)m(ould)e(b)s(e)g(inferior)e(to)k
(one)8 4565 y(in)j(whic)m(h)f(the)i(co)s(de)g(p)s(oin)m(ter)e(is)h
(directly)g(em)m(b)s(edded)f(within)f(the)j(closure)f(record.)45
b(W)-8 b(e)33 b(sho)m(w)e(that)h(the)g(cost)8 4677 y(of)e(dispatc)m
(hes)g(for)f(the)h(b)s(enc)m(hmarks)f(w)m(e)h(ha)m(v)m(e)h(measured)e
(is)g(a)h(small)f(fraction)g(of)h(the)g(b)s(enc)m(hmark's)f(o)m(v)m
(erall)8 4790 y(execution)i(time.)149 4903 y(Our)f(approac)m(h)h
(extends)g(the)g(range)g(of)g(expressible)e(\015o)m(w)h(analyses)h(b)s
(ey)m(ond)f(that)h(of)g(previous)f(w)m(ork)g([)p Fk(?)q
Fo(])8 5016 y(b)m(y)24 b(inserting)f(co)s(ercions)h(in)e(the)j(target)g
(program)f(that)h(preserv)m(e)f(a)h(closure's)f(meaning,)h(but)e(c)m
(hange)i(its)f(t)m(yp)s(e.)8 5129 y(In)35 b(Section)h(5.3.1,)j(w)m(e)d
(sho)m(w)f(that)i(represen)m(tations)e(can)h(b)s(e)f(c)m(hosen)h(so)g
(that)h(co)s(ercions)e(ha)m(v)m(e)i(no)e(run)m(time)8
5242 y(cost.)1921 5532 y(7)p eop
%%Page: 8 8
8 7 bop 8 186 3870 4 v 8 2217 4 2032 v 722 390 a Fm(\034)93
b Fo(::=)83 b Fl(t)903 502 y Fi(j)131 b Fm(:)15 b(:)g(:)47
b Fj(*)30 b Fm(\034)40 b Fj(*)45 b Fm(:)15 b(:)g(:)701
615 y Fl(P)92 b Fo(::=)83 b Fj(let)45 b Fm(:)15 b(:)g(:)46
b Fl(data)h Fm(:)15 b(:)g(:)47 b Fj(in)29 b(let)45 b
Fm(:)15 b(:)g(:)47 b Fl(fun)e Fm(:)15 b(:)g(:)46 b Fj(in)30
b Fl(e)g Fj(end)g(end)602 728 y Fl(data)85 b Fo(::=)e
Fj(datatype)28 b Fl(t)39 b Fj(=)45 b Fm(:)15 b(:)g(:)47
b Fj(|)30 b Fm(C)37 b Fj(of)30 b Fm(\034)55 b(:)15 b(:)g(:)644
841 y Fl(fun)83 b Fo(::=)g Fj(fun)29 b Fm(f)10 b Fj(\()15
b Fm(:)g(:)g(:)46 b(x)p Fj(,)f Fm(:)15 b(:)g(:)i Fj(\))30
b(=)g Fm(e)730 954 y Fl(e)83 b Fo(::=)g Fm(x)903 1067
y Fi(j)131 b Fj(let)29 b Fm(x)i Fj(=)f Fm(b)g Fj(in)g
Fl(e)g Fj(end)733 1180 y Fm(b)83 b Fo(::=)g Fl(e)903
1293 y Fi(j)131 b Fm(f)10 b Fj(\()k Fm(:)h(:)g(:)47 b(y)s
Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))903 1406 y Fi(j)131 b
Fm(C)37 b(y)903 1519 y Fi(j)131 b Fj(case)29 b Fm(y)k
Fj(of)45 b Fm(:)15 b(:)g(:)47 b Fj(|)30 b Fm(C)37 b(z)d
Fj(=>)c Fl(e)45 b Fm(:)15 b(:)g(:)903 1632 y Fi(j)131
b Fj(\()15 b Fm(:)g(:)g(:)46 b(y)s Fj(,)f Fm(:)15 b(:)g(:)i
Fj(\))903 1744 y Fi(j)131 b Fj(#)p Fm(i)30 b(y)903 1857
y Fi(j)131 b Fj(raise)29 b Fm(y)903 1970 y Fi(j)131 b
Fm(e)1101 1984 y Fh(1)1171 1970 y Fj(handle)29 b Fm(y)k
Fj(=>)d Fm(e)1734 1984 y Fh(2)1545 2175 y Fo(Figure)g(4:)41
b(F)m(OL)p 3875 2217 V 8 2220 3870 4 v 8 2461 a Fe(5.1)113
b(Language)8 2633 y Fo(W)-8 b(e)29 b(illustrate)c(our)h(\015o)m
(w-directed)h(closure-con)m(v)m(ersion)g(translation)f(using)g(SXML,)h
(the)g(output)g(language)g(of)8 2746 y(the)g(monomorphiser.)37
b(The)26 b(target)h(language)g(of)f(the)h(closure)e(con)m(v)m(ertor)j
(\(see)f(Figure)f Fk(??)q Fo(\))g(is)f(lik)m(e)h(the)g(source)8
2859 y(language,)42 b(except)e(that)f(there)g(are)g(no)g(lam)m(b)s(da)f
(or)h(application)e(expressions.)65 b(Instead,)41 b(the)e(program)f(is)
8 2971 y(pre\014xed)27 b(b)m(y)h(a)g(collection)g(of)g(m)m(utually)f
(recursiv)m(e)g(\014rst-order)g(functions)g(\(corresp)s(onding)f(to)j
(the)f(co)s(de)g(part)8 3084 y(of)21 b(closure-con)m(v)m(erted)h(pro)s
(cedures\),)h(eac)m(h)f(taking)e(an)h(en)m(vironmen)m(t)g(tuple)e(as)j
(its)e(\014rst)g(argumen)m(t.)38 b(Pro)s(cedure)8 3197
y(application)f(explicitly)f(sp)s(eci\014es)h(the)i(\014rst-order)e
(function)g(to)i(b)s(e)f(called,)i(and)e(passes)g(the)h(en)m(vironmen)m
(t)8 3310 y(record)g(as)g(the)f(\014rst)g(argumen)m(t.)66
b(The)38 b(target)i(language)f(is)e(also)i(simply-t)m(yp)s(ed,)f(where)
g(t)m(yp)s(es)h(are)g(either)8 3423 y(t)m(yp)s(e)31 b(constructors)g
(or)f(tuple)f(t)m(yp)s(es.)149 3536 y(The)21 b(seman)m(tic)h(rules)f
(for)g(the)h(target)h(language)f(are)g(iden)m(tical)e(to)i(SXML)f
(except)i(for)e(the)h(rule)e(for)i(function)8 3649 y(application:)1418
3820 y([)p Fm(:)15 b(:)g(:)47 b(x)1647 3834 y Ff(i)1700
3820 y Fi(7!)25 b Fm(\032)p Fo(\()p Fm(y)1943 3834 y
Ff(i)1971 3820 y Fo(\))46 b Fm(:)15 b(:)g(:)q Fo(])p
Fm(;)g Fl(e)26 b Fm(,)-15 b Fi(!)25 b Fl(v)p 1376 3867
1134 4 v 1493 3956 a Fm(\032;)15 b(f)10 b Fj(\()k Fm(:)h(:)g(:)47
b(x)1901 3970 y Ff(i)1929 3956 y Fj(,)e Fm(:)15 b(:)g(:)h
Fj(\))25 b Fm(,)-15 b Fi(!)25 b Fl(v)8 4157 y Fo(where)30
b Fj(fun)g Fm(f)10 b Fj(\()k Fm(:)h(:)g(:)46 b(x)765
4171 y Ff(i)793 4157 y Fj(,)g Fm(:)15 b(:)g(:)h Fj(\))30
b(=)g Fl(e)g Fo(is)f(a)i(function)e(declaration)h(in)f(the)i(program.)8
4397 y Fe(5.2)113 b(Flo)m(w)36 b(Analysis)8 4568 y Fo(Our)29
b(\015o)m(w)i(analysis)e(uses)h(abstract)h(v)-5 b(alues)30
b(whic)m(h)f(appro)m(ximate)h(sets)h(of)g(exact)g(v)-5
b(alues:)989 4765 y Fm(a)83 b Fi(2)g Fl(A)-9 b(V)i(al)82
b Fo(=)h Fl(T)-7 b(yCon)21 b Fo(+)f Fi(P)7 b Fo(\()p
Fl(L)-5 b(amOc)g(c)17 b Fo(\))k(+)e Fl(A)-9 b(V)i(al)2858
4732 y Fg(\003)149 5057 y Fo(An)30 b(abstract)i(v)-5
b(alue)30 b(that)h(ma)m(y)g(either)f(b)s(e)f(a)i Fl(T)-7
b(yc)i(on)q Fo(,)31 b(whic)m(h)e(represen)m(ts)h(all)g(constructed)g(v)
-5 b(alues)30 b(of)h(that)8 5170 y(t)m(yp)s(e,)36 b(a)e(set)g(of)h
Fm(\025)p Fo(-o)s(ccurrences,)g(whic)m(h)e(represen)m(ts)h(a)g(set)g
(of)h(closures,)f(or)g(a)g(sequence)h(of)f(abstract)h(v)-5
b(alues,)8 5283 y(whic)m(h)29 b(represen)m(ts)i(a)f(set)h(of)g(tuples.)
1921 5532 y(8)p eop
%%Page: 9 9
9 8 bop 8 274 a Fk(De\014nition)35 b(5.1)47 b Fl(A)n(n)31
b(abstr)-5 b(act)34 b(value)f Fm(a)f Fl(is)g(c)-5 b(onsistent)34
b(with)f(a)f(typ)-5 b(e)34 b Fm(\034)42 b Fl(if)32 b(and)h(only)g(if)f
(one)h(of)f(the)h(fol)5 b(lowing)8 387 y(holds:)116 568
y(1.)46 b Fm(a)25 b Fo(=)g Fl(t)41 b(and)34 b Fm(\034)h
Fo(=)25 b Fl(t)9 b(.)116 753 y(2.)46 b Fm(a)25 b Fi(2)g(P)7
b Fo(\()p Fl(L)-5 b(amOc)g(c)17 b Fo(\))p Fl(,)33 b Fm(\034)i
Fo(=)25 b Fm(\034)1145 767 y Fh(1)1217 753 y Fj(->)31
b Fm(\034)1384 767 y Fh(2)1424 753 y Fl(,)h(and)i(for)f(al)5
b(l)33 b Fm(f)h Fi(2)25 b Fm(a)p Fl(,)33 b Fm(f)h Fo(:)26
b Fm(\034)2380 767 y Fh(1)2452 753 y Fj(->)32 b Fm(\034)2620
767 y Fh(2)2659 753 y Fl(.)116 938 y(3.)46 b Fm(a)25
b Fo(=)g(\()p Fm(:)15 b(:)g(:)49 b(a)642 952 y Ff(i)670
938 y Fm(;)f(:)15 b(:)g(:)q Fo(\))p Fl(,)33 b Fm(\034)i
Fo(=)25 b Fm(:)15 b(:)g(:)49 b Fj(*)32 b Fm(\034)1390
952 y Ff(i)1451 938 y Fj(*)47 b Fm(:)15 b(:)g(:)q Fl(,)32
b(and)i Fm(a)1937 952 y Ff(i)1998 938 y Fl(is)e(c)-5
b(onsistent)34 b(with)g Fm(\034)2756 952 y Ff(i)2816
938 y Fl(for)f(al)5 b(l)33 b Fo(1)26 b Fi(\024)f Fm(i)h
Fi(\024)f Fm(n)149 1142 y Fo(W)-8 b(e)23 b(will)c(de\014ne)i(our)h
(\015o)m(w)f(analysis)g(as)h(a)g(t)m(yp)s(e-resp)s(ecting)f([)p
Fk(?)q Fo(])h(function)e(from)h(v)-5 b(ariables)21 b(and)g
(constructors)8 1255 y(to)31 b(abstract)h(v)-5 b(alues)29
b(in)g(the)i(program:)8 1459 y Fk(De\014nition)k(5.2)47
b Fl(A)32 b(\015ow)h(is)g(a)g(function)g(F)k Fi(2)25
b Fo(\()p Fl(V)-7 b(ar)21 b Fo(+)f Fl(Constructor)r Fo(\))26
b Fi(!)f Fl(A)-9 b(V)i(al)32 b(such)h(that)116 1640 y(1.)46
b(F)-7 b(or)33 b(al)5 b(l)33 b Fm(x)g Fl(in)f(P)9 b(,)33
b(if)f Fm(x)25 b Fo(:)h Fm(\034)42 b Fl(then)33 b(F)12
b Fo(\()p Fm(x)p Fo(\))34 b Fl(is)f(c)-5 b(onsistent)33
b(with)h Fm(\034)10 b Fl(.)116 1825 y(2.)46 b(F)-7 b(or)33
b(al)5 b(l)33 b Fm(C)39 b Fl(in)33 b(P)9 b(,)32 b(if)h
Fm(C)39 b Fl(c)-5 b(arries)33 b(values)g(of)g(typ)-5
b(e)33 b Fm(\034)43 b Fl(then)33 b(F)12 b Fo(\()p Fm(C)7
b Fo(\))33 b Fl(is)g(c)-5 b(onsistent)34 b(with)f Fm(\034)10
b Fl(.)149 2029 y Fo(Informally)-8 b(,)28 b Fl(F)12 b
Fo(\()p Fm(x)p Fo(\))30 b(conserv)-5 b(ativ)m(ely)29
b(appro)m(ximates)f(the)h(set)h(of)e(v)-5 b(alues)29
b(that)g Fm(x)f Fo(ma)m(y)i(tak)m(e)g(on)f(at)g(run)m(time.)8
2142 y(Similarly)-8 b(,)34 b Fl(F)12 b Fo(\()p Fm(C)7
b Fo(\))36 b(o)m(v)m(er-appro)m(ximates)i(the)d(set)h(of)g(v)-5
b(alues)35 b(to)h(whic)m(h)f Fm(C)42 b Fo(ma)m(y)36 b(b)s(e)f(applied)e
(at)k(run)m(time.)55 b(T)-8 b(o)8 2255 y(formally)24
b(sp)s(ecify)h(the)g(meaning)g(of)h(an)g(analysis,)f(w)m(e)h(de\014ne)f
(a)h(pair)e(of)i(relations)f(b)m(y)g(m)m(utual)g(induction.)37
b(The)8 2368 y(\014rst,)f(b)s(et)m(w)m(een)g(en)m(vironmen)m(ts)e(and)g
(\015o)m(ws)h(\()p Fm(\032)e Fi(v)g Fl(F)12 b Fo(\),)37
b(describ)s(es)c(when)h(an)h(en)m(vironmen)m(t)g(is)f(appro)m(ximated)8
2481 y(b)m(y)d(the)f(\015o)m(w.)1107 2662 y Fm(\032)25
b Fi(v)g Fl(F)43 b Fo(if)29 b(for)h(all)f Fm(x)c Fi(2)g
Fl(dom)9 b Fo(\()p Fm(\032)p Fo(\),)31 b Fm(\032)p Fo(\()p
Fm(x)p Fo(\))26 b Fi(v)2502 2676 y Fd(F)2586 2662 y Fl(F)12
b Fo(\()p Fm(x)p Fo(\))8 2843 y(The)42 b(second)h(relation,)i(b)s(et)m
(w)m(een)e(v)-5 b(alues)42 b(and)g(abstract)h(v)-5 b(alues)42
b(\()p Fl(v)55 b Fi(v)2574 2857 y Fd(F)2679 2843 y Fm(a)p
Fo(\),)46 b(describ)s(es)41 b(when)g(a)i(v)-5 b(alue)42
b(is)8 2956 y(appro)m(ximated)30 b(b)m(y)h(an)f(abstract)h(v)-5
b(alue)30 b(\(relativ)m(e)h(to)g(a)g(\015o)m(w\).)119
3137 y(1.)47 b Fm(C)36 b(v)29 b Fi(v)481 3151 y Fd(F)565
3137 y Fl(t)39 b Fo(if)30 b Fl(t)39 b Fo(is)29 b Fc(C)i
Fo(a)f(constructor)h(asso)s(ciated)g(with)e(t)m(yp)s(e)i
Fl(t)9 b Fo(.)40 b(and)30 b Fm(v)e Fi(v)2792 3151 y Fd(F)2877
3137 y Fl(F)12 b Fo(\()p Fm(C)7 b Fo(\).)119 3321 y(2.)47
b Fj(\()14 b Fm(:)h(:)g(:)47 b(v)s Fj(,)e Fm(:)15 b(:)g(:)i
Fj(\))25 b Fi(v)856 3335 y Fd(F)940 3321 y Fj(\()15 b
Fm(:)g(:)g(:)46 b(a)p Fj(,)g Fm(:)15 b(:)g(:)h Fj(\))30
b Fo(if)f Fm(v)1622 3335 y Ff(i)1676 3321 y Fi(v)1747
3335 y Fd(F)1831 3321 y Fm(a)1879 3335 y Ff(i)1937 3321
y Fo(for)h(all)g(1)25 b Fi(\024)g Fm(i)h Fi(\024)f Fm(n)p
Fo(.)119 3506 y(3.)47 b Fi(h)p Fj(fn)30 b Fm(x)g Fj(=>)g
Fm(e;)15 b(\032)p Fi(i)26 b(v)866 3520 y Fd(F)950 3506
y Fm(a)31 b Fo(if)e Fj(fn)h Fm(x)g Fj(=>)g Fm(e)25 b
Fi(2)g Fm(a)31 b Fo(and)e Fm(\032)d Fi(v)e Fl(F)12 b
Fo(.)149 3687 y(W)-8 b(e)32 b(imp)s(ose)d(the)i(follo)m(wing)d
(ordering)i(on)g(abstract)h(v)-5 b(alues:)8 3868 y Fk(De\014nition)35
b(5.3)47 b Fm(a)25 b Fi(\025)g Fm(a)893 3835 y Fg(0)949
3868 y Fl(if)32 b(and)i(only)f(if)145 4049 y Fi(\017)46
b Fm(a)25 b Fo(=)g Fl(t)34 b Fo(=)25 b Fm(a)613 4016
y Fg(0)669 4049 y Fl(for)33 b(some)g(t)h Fi(2)25 b Fl(T)-7
b(yCon)q(,)145 4234 y Fi(\017)46 b Fm(a)25 b Fi(\023)g
Fm(a)453 4201 y Fg(0)476 4234 y Fl(,)33 b(wher)-5 b(e)33
b Fm(a)g Fl(and)g Fm(a)1098 4201 y Fg(0)1154 4234 y Fl(ar)-5
b(e)34 b(in)e Fi(P)7 b Fo(\()p Fl(L)-5 b(amOc)g(c)17
b Fo(\))p Fl(,)33 b(or)145 4419 y Fi(\017)46 b Fm(a)25
b Fo(=)g(\()p Fm(:)15 b(:)g(:)49 b(a)642 4433 y Ff(i)670
4419 y Fm(;)f(:)15 b(:)g(:)q Fo(\))p Fm(;)g(a)972 4386
y Fg(0)1022 4419 y Fo(=)24 b(\()p Fm(:)15 b(:)g(:)50
b(a)1355 4386 y Fg(0)1355 4443 y Ff(i)1383 4419 y Fm(;)e(:)15
b(:)g(:)q Fo(\))33 b Fl(and)g Fm(a)1854 4433 y Ff(i)1908
4419 y Fi(\025)25 b Fm(a)2052 4386 y Fg(0)2052 4443 y
Ff(i)2112 4419 y Fl(for)34 b(al)5 b(l)33 b Fm(i)p Fl(.)149
4600 y Fo(Figure)28 b(5)h(de\014nes)f(a)h(collection)f(of)g(safet)m(y)i
(constrain)m(ts)f(suc)m(h)f(that)h(an)m(y)g(\015o)m(w)f(meeting)h(them)
f(will)e(conser-)8 4712 y(v)-5 b(ativ)m(ely)31 b(appro)m(ximate)f(the)h
(run)m(time)e(b)s(eha)m(vior)g(of)i(the)f(program.)8
4917 y Fk(Theorem)k(5.6)i(\(Safet)m(y)e Fo(=)-15 b Fi(\))34
b Fk(Soundness\))46 b Fl(If)33 b(F)45 b(is)32 b(safe)h(and)h
Fm(\032)25 b Fi(v)g Fm(F)46 b Fl(then)145 5098 y Fi(\017)g
Fl(if)32 b Fm(\032;)15 b Fl(e)25 b Fm(,)-15 b Fi(!)26
b Fl(v)42 b(then)33 b(v)i Fi(v)1039 5112 y Fd(F)1123
5098 y Fm(F)13 b Fo(\()p Fl(last)d Fo(\()p Fm(e)p Fo(\)\))p
Fl(.)145 5283 y Fi(\017)46 b Fl(if)32 b Fm(\032;)15 b
Fl(e)25 b Fm(,)-15 b Fi(!)26 b Fo([)p Fl(v)10 b Fo(])32
b Fl(then)h(v)i Fi(v)1089 5297 y Fd(F)1173 5283 y Fm(F)13
b Fo(\()p Fc(pack)m(et)r Fo(\))p Fl(.)1921 5532 y Fo(9)p
eop
%%Page: 10 10
10 9 bop 8 186 3870 4 v 8 3250 4 3065 v 37 274 a Fk(De\014nition)35
b(5.4)46 b Fo(The)33 b Fl(last)44 b Fo(v)-5 b(ariable)33
b(of)h(an)g(expression,)g(whic)m(h)f(yields)f(the)j(expression's)e(v)-5
b(alue,)34 b(is)37 387 y(de\014ned)29 b(as)h(follo)m(ws:)1801
474 y Fl(last)10 b Fo(\()p Fm(x)p Fo(\))83 b(=)g Fm(x)1108
587 y Fl(last)10 b Fo(\()p Fj(let)30 b Fm(x)g Fj(=)g
Fm(b)g Fj(in)g Fm(e)h Fj(end)o Fo(\))83 b(=)g Fl(last)10
b Fo(\()p Fm(e)p Fo(\))37 792 y Fk(De\014nition)35 b(5.5)46
b Fl(A)32 b(\015ow)i(F)45 b(is)32 b Fo(safe)h Fl(if)g(and)g(only)h(if,)
e(for)h(al)5 b(l)33 b Fm(x)25 b Fo(=)g Fm(b)33 b Fl(in)f(P)9
b(,)144 980 y(1.)46 b(if)32 b Fm(b)h Fl(is)f Fm(e)p Fl(,)h(then)g(F)12
b Fo(\()p Fm(x)p Fo(\))26 b(=)f Fl(F)12 b Fo(\()p Fl(last)f
Fo(\()p Fm(e)p Fo(\)\))p Fl(.)144 1130 y(2.)46 b(if)32
b Fm(b)h Fl(is)f Fj(fn)g Fm(y)k Fj(=>)c Fm(e)p Fl(,)g(then)h(F)12
b Fo(\()p Fm(x)p Fo(\))27 b Fi(\025)e(f)p Fj(fn)32 b
Fm(y)j Fj(=>)d Fm(e)p Fi(g)p Fl(.)144 1280 y(3.)46 b(if)32
b Fm(b)h Fl(is)f Fm(y)k(z)t Fl(,)c(then)h(for)h(al)5
b(l)33 b Fj(fn)f Fm(w)j Fj(=>)d Fm(e)25 b Fi(2)g Fl(F)12
b Fo(\()p Fm(y)s Fo(\))p Fl(,)298 1468 y(\(a\))46 b(F)12
b Fo(\()p Fm(w)r Fo(\))27 b Fi(\025)e Fl(F)12 b Fo(\()p
Fm(z)t Fo(\))p Fl(,)34 b(and)302 1614 y(\(b\))46 b(F)12
b Fo(\()p Fm(x)p Fo(\))26 b Fi(\025)f Fl(F)12 b Fo(\()p
Fm(l)r(ast)p Fo(\()p Fm(e)p Fo(\)\))144 1802 y Fl(4.)46
b(if)32 b Fm(b)h Fl(is)f Fm(C)39 b(y)s Fl(,)32 b(then)i(F)12
b Fo(\()p Fm(C)7 b Fo(\))25 b Fi(\025)g Fl(F)12 b Fo(\()p
Fm(y)s Fo(\))p Fl(.)144 1952 y(5.)46 b(if)32 b Fm(b)h
Fl(is)f Fm(x)25 b Fo(=)g Fj(case)32 b Fm(y)j Fj(of)47
b Fm(:)15 b(:)g(:)49 b Fj(|)32 b Fm(C)1440 1966 y Ff(i)1501
1952 y Fm(z)1543 1966 y Ff(i)1604 1952 y Fj(=>)g Fm(e)1774
1966 y Ff(i)1850 1952 y Fm(:)15 b(:)g(:)q Fl(,)33 b(then)g(for)g(al)5
b(l)33 b Fm(i)p Fl(,)298 2140 y(\(a\))46 b(F)12 b Fo(\()p
Fm(z)612 2154 y Ff(i)641 2140 y Fo(\))26 b(=)f Fl(F)12
b Fo(\()p Fm(C)969 2154 y Ff(i)998 2140 y Fo(\))p Fl(,)32
b(and)302 2286 y(\(b\))46 b(F)12 b Fo(\()p Fm(x)p Fo(\))26
b Fi(\025)f Fl(F)12 b Fo(\()p Fm(l)r(ast)p Fo(\()p Fm(e)1115
2300 y Ff(i)1144 2286 y Fo(\)\))144 2473 y Fl(6.)46 b(if)32
b Fm(b)h Fl(is)f Fj(\()15 b Fm(:)g(:)g(:)49 b(y)s Fj(,)e
Fm(:)15 b(:)g(:)h Fj(\))p Fl(,)32 b(then)i(F)12 b Fo(\()p
Fm(x)p Fo(\))26 b(=)f(\()p Fl(F)12 b Fo(\()p Fm(y)1814
2487 y Fh(1)1854 2473 y Fo(\))p Fm(;)j(:)g(:)g(:)i(;)e
Fl(F)d Fo(\()p Fm(y)2242 2487 y Ff(n)2290 2473 y Fo(\)\))p
Fl(.)144 2624 y(7.)46 b(if)32 b Fm(b)h Fl(is)f Fj(#)p
Fm(i)h(y)i Fl(then)e(F)12 b Fo(\()p Fm(x)p Fo(\))27 b(=)e
Fj(#)o Fm(i)33 b Fo(\()p Fm(F)13 b Fo(\()p Fm(y)s Fo(\)\))p
Fl(,)34 b(wher)-5 b(e)34 b Fj(#)o Fm(i)f Fj(\()15 b Fm(:)g(:)g(:)49
b(a)p Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))25 b Fo(=)g Fm(a)2729
2638 y Ff(i)2758 2624 y Fl(.)144 2774 y(8.)46 b(if)32
b Fm(b)h Fl(is)f Fj(raise)f Fm(y)36 b Fl(then)d(F)12
b Fo(\()p Fc(pack)m(et)r Fo(\))25 b Fi(\025)g Fl(F)12
b Fm(y)s Fl(.)144 2924 y(9.)46 b(if)31 b Fm(b)h Fl(is)f
Fm(e)560 2938 y Fh(1)631 2924 y Fj(handle)f Fm(z)36 b
Fj(=>)31 b Fm(e)1196 2938 y Fh(2)1267 2924 y Fl(then)h
Fm(f)10 b(l)r(ow)r Fo(\()p Fm(z)t Fo(\))26 b Fi(\025)f
Fl(F)12 b Fo(\()p Fc(pack)m(et)r Fo(\))p Fl(,)32 b(F)12
b Fo(\()p Fm(x)p Fo(\))26 b Fi(\025)f Fl(F)12 b Fo(\()p
Fm(l)r(ast)p Fo(\()p Fm(e)3000 2938 y Fh(1)3041 2924
y Fo(\)\))p Fl(,)32 b(and)g(F)12 b Fo(\()p Fm(x)p Fo(\))27
b Fi(\025)264 3037 y Fl(F)12 b Fo(\()p Fm(l)r(ast)p Fo(\()p
Fm(e)600 3051 y Fh(2)640 3037 y Fo(\)\))p Fl(.)1095 3208
y Fo(Figure)30 b(5:)41 b(Safet)m(y)31 b(constrain)m(ts)g(on)f(\015o)m
(ws.)p 3875 3250 V 8 3253 3870 4 v 145 3509 a Fi(\017)46
b Fl(if)32 b Fm(\032;)15 b(b)26 b(,)-15 b Fi(!)25 b Fl(v)42
b(and)33 b Fm(x)g Fj(=)f Fm(b)25 b Fi(2)g Fl(P)42 b(then)33
b(v)i Fi(v)1631 3523 y Fd(F)1715 3509 y Fm(F)13 b Fo(\()p
Fm(x)p Fo(\))p Fl(.)145 3695 y Fi(\017)46 b Fl(if)32
b Fm(\032;)15 b(b)26 b(,)-15 b Fi(!)25 b Fo([)p Fl(v)10
b Fo(])32 b Fl(then)i(v)g Fi(v)1086 3709 y Fd(F)1171
3695 y Fm(F)13 b Fo(\()p Fc(pack)m(et)q Fo(\))p Fl(.)149
3904 y Fk(Pro)s(of)p Fo(.)149 4017 y(By)31 b(induction)d(on)i
Fm(\032;)15 b Fl(e)26 b Fm(,)-15 b Fi(!)25 b Fl(v)40
b Fo(and)30 b Fm(\032;)15 b(b)26 b(,)-15 b Fi(!)25 b
Fl(v)145 4236 y Fi(\017)p 236 4143 517 4 v 236 4284 4
141 v 74 w Fm(\032;)15 b(x)25 b(,)-15 b Fi(!)26 b Fm(\032)p
Fo(\()p Fm(x)p Fo(\))p 749 4284 V 236 4287 517 4 v 236
4364 a(Since)j Fm(\032)c Fi(v)g Fl(F)12 b Fo(,)31 b Fm(\032)p
Fo(\()p Fm(x)p Fo(\))26 b Fi(v)f Fl(F)12 b Fo(\()p Fm(x)p
Fo(\).)145 4565 y Fi(\017)p 236 4472 1756 4 v 236 4630
4 159 v 74 w Fm(\032;)j Fj(fn)30 b Fm(x)g Fj(=>)g Fm(e)c(,)-15
b Fi(!)25 b(h)p Fj(fn)30 b Fm(x)g Fj(=>)g Fm(e;)15 b(\032)p
Fi(j)1402 4589 y Ff(F)10 b(V)16 b Fh(\()p Fj(fn)30 b
Ff(x)g Fj(=>)g Ff(e)p Fh(\))1927 4565 y Fi(i)p 1988 4630
V 236 4633 1756 4 v 236 4710 a Fo(Since)h Fm(\032)e Fi(v)g
Fl(F)12 b Fo(,)34 b Fm(\032)p Fi(j)853 4734 y Ff(F)10
b(V)15 b Fh(\()p Fj(fn)31 b Ff(x)f Fj(=>)f Ff(e)p Fh(\))1407
4710 y Fi(v)f Fl(F)12 b Fo(.)48 b(Also,)33 b(since)f
Fl(F)45 b Fo(is)32 b(safe,)i Fj(fn)e Fm(x)h Fj(=>)f Fm(e)d
Fi(2)g Fl(F)12 b Fo(\()p Fj(fn)32 b Fm(x)h Fj(=>)f Fm(e)p
Fo(\).)48 b(Hence,)236 4823 y Fi(h)p Fj(fn)30 b Fm(x)g
Fj(=>)g Fm(e;)15 b(\032)p Fi(j)759 4847 y Ff(F)10 b(V)16
b Fh(\()p Fj(fn)30 b Ff(x)g Fj(=>)g Ff(e)p Fh(\))1284
4823 y Fi(i)c(v)1416 4837 y Fd(F)1500 4823 y Fl(F)12
b Fj(fn)30 b Fm(x)h Fj(=>)e Fm(e)q Fo(.)145 5042 y Fi(\017)p
236 4949 792 4 v 236 5090 4 141 v 74 w Fm(\032;)15 b(C)37
b(x)25 b(,)-15 b Fi(!)25 b Fm(C)37 b Fo(\()p Fm(\032)p
Fo(\()p Fm(x)p Fo(\)\))p 1024 5090 V 236 5093 792 4 v
236 5170 a(Since)30 b Fm(\032)d Fi(v)f Fl(F)12 b Fo(,)32
b Fm(\032)p Fo(\()p Fm(x)p Fo(\))c Fi(v)1041 5184 y Fd(F)1126
5170 y Fl(F)12 b Fo(\()p Fm(x)p Fo(\).)45 b(By)32 b(safet)m(y)-8
b(,)33 b Fl(F)12 b Fo(\()p Fm(x)p Fo(\))28 b Fi(\024)e
Fl(F)12 b Fo(\()p Fm(C)7 b Fo(\),)33 b(hence)e Fm(\032)p
Fo(\()p Fm(x)p Fo(\))d Fi(v)2922 5184 y Fd(F)3007 5170
y Fl(F)12 b Fo(\()p Fm(C)7 b Fo(\).)44 b(Also,)32 b(b)m(y)f(safet)m(y)
236 5283 y Fl(F)12 b Fo(\()p Fm(C)22 b(e)p Fo(\))k(=)f(t)m(ycon)q(\()p
Fm(C)7 b Fo(\),)31 b(hence)f Fm(C)22 b(v)29 b Fi(v)1526
5297 y Fd(F)1610 5283 y Fl(F)12 b Fo(\()p Fm(C)22 b(e)p
Fo(\).)1898 5532 y(10)p eop
%%Page: 11 11
11 10 bop 145 279 a Fi(\017)p 236 186 1462 4 v 236 327
4 141 v 74 w Fm(\032;)15 b Fj(\()g Fm(:)g(:)g(:)47 b(y)s
Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))25 b Fm(,)-15 b Fi(!)25
b Fj(\()15 b Fm(:)g(:)g(:)46 b(\032)p Fo(\()p Fm(y)s
Fo(\))p Fj(,)g Fm(:)15 b(:)g(:)h Fj(\))p 1694 327 V 236
330 1462 4 v 236 406 a Fo(Since)34 b Fm(\032)g Fi(v)f
Fl(F)12 b Fo(,)37 b Fm(\032)p Fo(\()p Fm(y)s Fo(\))d
Fi(v)1066 420 y Fd(F)1159 406 y Fl(F)12 b Fo(\()p Fm(y)s
Fo(\).)57 b(By)35 b(safet)m(y)i(conditions,)e(\()p Fm(:)15
b(:)g(:)i(;)e(x)2558 420 y Ff(i)2586 406 y Fm(;)g(:)g(:)g(:)r
Fo(\))69 b Fi(2)33 b Fl(F)12 b Fo(\(\()p Fm(:)j(:)g(:)j(;)d(x)3287
420 y Ff(i)3315 406 y Fm(;)g(:)g(:)g(:)r Fo(\)\).)56
b(Hence,)236 519 y(\()p Fm(:)15 b(:)g(:)h(;)f(\032)p
Fo(\()p Fm(x)566 533 y Ff(i)595 519 y Fo(\))p Fm(;)g(:)g(:)g(:)r
Fo(\))25 b Fi(v)908 533 y Fd(F)993 519 y Fl(F)12 b Fo(\(\()p
Fm(:)j(:)g(:)i(;)e(x)1348 533 y Ff(i)1377 519 y Fm(;)g(:)g(:)g(:)q
Fo(\)\).)145 794 y Fi(\017)p 236 628 1883 4 v 236 914
4 286 v 315 732 a Fm(\032)p Fo(\()p Fm(y)s Fo(\))26 b(=)f
Fi(h)p Fj(fn)30 b Fm(x)g Fj(=>)g Fl(e)p Fm(;)15 b(\032)1100
699 y Fg(0)1124 732 y Fi(i)120 b Fm(\032)1326 699 y Fg(0)1349
732 y Fo([)p Fm(x)26 b Fi(7!)f Fm(\032)p Fo(\()p Fm(z)t
Fo(\)])p Fm(;)15 b Fl(e)27 b Fm(,)-15 b Fi(!)25 b Fm(v)p
274 773 1806 4 v 936 855 a(\032;)15 b Fo(\()p Fm(y)34
b(z)t Fo(\))26 b Fm(,)-15 b Fi(!)25 b Fm(v)p 2115 914
4 286 v 236 917 1883 4 v 236 996 a Fo(Since)34 b Fm(\032)g
Fi(v)f Fl(F)12 b Fm(;)j(\032)p Fo(\()p Fm(z)t Fo(\))36
b Fi(v)1044 1010 y Fd(F)1137 996 y Fl(F)12 b Fo(\()p
Fm(z)t Fo(\))36 b(and)f Fm(\032)p Fo(\()p Fm(y)s Fo(\))g
Fi(v)1813 1010 y Fd(F)1905 996 y Fl(F)12 b Fo(\()p Fm(y)s
Fo(\).)57 b(Hence,)38 b Fj(fn)d Fm(x)g Fj(=>)g Fm(e)f
Fi(2)g Fl(F)12 b Fo(\()p Fm(y)s Fo(\))36 b(and)f Fm(\032)3452
963 y Fg(0)3509 996 y Fi(v)f Fl(F)12 b Fo(.)56 b(By)236
1108 y(safet)m(y)-8 b(,)33 b Fl(F)12 b Fo(\()p Fm(z)t
Fo(\))28 b Fi(\024)f Fl(F)12 b Fo(\()p Fm(x)p Fo(\))32
b(and)f Fl(F)12 b Fo(\()p Fm(e)p Fo(\))28 b Fi(\024)e
Fl(F)12 b Fo(\()p Fm(y)s Fo(\()p Fm(z)t Fo(\)\).)46 b(Hence,)32
b Fm(\032)p Fo(\()p Fm(z)t Fo(\))c Fi(v)2473 1122 y Fd(F)2559
1108 y Fl(F)12 b Fo(\()p Fm(x)p Fo(\))32 b(and)f Fm(\032)3009
1076 y Fg(0)3032 1108 y Fo([)p Fm(x)c Fi(7!)f Fm(\032)p
Fo(\()p Fm(z)t Fo(\)])i Fi(v)3540 1122 y Fd(F)3626 1108
y Fl(F)12 b Fo(.)44 b(By)236 1221 y(induction)28 b(h)m(yp)s(othesis,)h
Fm(v)f Fi(v)1256 1235 y Fd(F)1341 1221 y Fl(F)12 b Fo(\()p
Fm(l)r(ast)p Fo(\()p Fm(e)p Fo(\)\).)42 b(Hence,)31 b
Fm(v)e Fi(v)2253 1235 y Fd(F)2337 1221 y Fl(F)12 b Fo(\()p
Fm(y)s Fo(\()p Fm(z)t Fo(\)\).)145 1496 y Fi(\017)p 236
1330 902 4 v 236 1616 4 286 v 315 1434 a Fm(\032)p Fo(\()p
Fm(x)p Fo(\))26 b(=)f(\()p Fm(:)15 b(:)g(:)i(;)e(v)847
1448 y Ff(i)875 1434 y Fm(;)g(:)g(:)g(:)r Fo(\))p 274
1475 825 4 v 450 1557 a Fm(\032;)g Fj(#)p Fm(i)31 b(x)25
b(,)-15 b Fi(!)25 b Fm(v)894 1571 y Ff(i)p 1134 1616
4 286 v 236 1619 902 4 v 236 1696 a Fo(Since)37 b Fm(\032)h
Fi(v)g Fl(F)12 b Fo(,)40 b(there)f(exists)e(\()p Fm(:)15
b(:)g(:)i(;)e(a)1555 1710 y Ff(i)1584 1696 y Fm(;)g(:)g(:)g(:)q
Fo(\))39 b Fi(2)e Fm(F)13 b Fo(\()p Fm(x)p Fo(\))39 b(suc)m(h)f(that)h
(for)e(all)g Fm(j;)15 b(v)2953 1710 y Ff(j)3029 1696
y Fi(v)3100 1710 y Fd(F)3197 1696 y Fm(F)e Fo(\()p Fm(x)p
Fo(\).)65 b(By)38 b(safet)m(y)-8 b(,)236 1809 y Fm(a)284
1823 y Ff(i)337 1809 y Fo(=)25 b Fj(#)p Fm(i)30 b Fl(F)12
b Fo(\()p Fm(x)p Fo(\))27 b Fi(\025)55 b Fl(F)12 b Fo(\()p
Fm(v)1038 1823 y Ff(i)1067 1809 y Fo(\).)41 b(Hence,)31
b Fm(v)1507 1823 y Ff(i)1561 1809 y Fi(v)1632 1823 y
Fd(F)1716 1809 y Fl(F)12 b Fo(\()p Fj(#)q Fm(i)30 b(x)p
Fo(\).)145 2083 y Fi(\017)p 236 1918 1339 4 v 236 2203
4 286 v 315 2022 a Fm(\032)p Fo(\()p Fm(x)p Fo(\))c(=)f
Fm(C)37 b(v)123 b(\032)p Fo([)p Fm(x)26 b Fi(7!)f Fm(v)s
Fo(])p Fm(;)15 b Fl(e)26 b Fm(,)-15 b Fi(!)25 b Fm(v)p
274 2062 1263 4 v 377 2145 a(\032;)15 b Fj(|)30 b Fm(x)46
b(:)15 b(:)g(:)h(C)37 b(x)30 b Fj(=>)g Fm(e)15 b(:)g(:)g(:)26
b(,)-15 b Fi(!)26 b Fm(v)p 1571 2203 4 286 v 236 2206
1339 4 v 236 2283 a Fo(Since)38 b Fm(\032)i Fi(v)f Fl(F)12
b Fo(,)42 b(w)m(e)e(ha)m(v)m(e)g Fm(C)7 b(v)43 b Fi(v)1408
2297 y Fd(F)1506 2283 y Fl(F)12 b Fo(\()p Fm(x)p Fo(\),)43
b(hence)c Fm(v)k Fi(v)2186 2297 y Fd(F)2285 2283 y Fl(F)12
b Fo(\()p Fm(C)7 b Fo(\).)68 b(By)39 b(safet)m(y)-8 b(,)43
b Fl(F)12 b Fo(\()p Fm(x)p Fo(\))41 b(=)f Fl(F)12 b Fo(\()p
Fm(C)7 b Fo(\),)42 b(hence)236 2396 y Fm(v)48 b Fi(v)399
2410 y Fd(F)503 2396 y Fl(F)12 b Fo(\()p Fm(x)p Fo(\))44
b(and)d Fm(\032)p Fo([)p Fm(x)46 b Fi(7!)f Fm(v)s Fo(])g
Fi(v)g Fl(F)12 b Fo(.)77 b(By)43 b(induction)d(h)m(yp)s(othesis,)k
Fm(v)k Fi(v)2862 2410 y Fd(F)2967 2396 y Fl(F)12 b Fo(\()p
Fm(l)r(ast)p Fo(\()p Fm(e)p Fo(\)\).)78 b(By)42 b(safet)m(y)-8
b(,)236 2509 y Fl(F)12 b Fo(\()p Fm(e)p Fo(\))26 b Fi(\024)f
Fl(F)12 b Fo(\()p Fc(case)17 b Fm(:)e(:)g(:)q Fo(\).)41
b(Hence,)31 b Fm(v)e Fi(v)1469 2523 y Fd(F)1553 2509
y Fl(F)12 b Fo(\()p Fc(case)k Fm(:)f(:)g(:)q Fo(\).)3810
2722 y Fb(2)149 2874 y Fo(The)32 b(constrain)m(ts)g(are)g(standard)f
(for)h(a)g(mono)m(v)-5 b(arian)m(t)33 b(con)m(trol-\015o)m(w)f
(analysis)f([)p Fk(?)p Fo(,)i Fk(?)p Fo(])f(with)f(the)h(follo)m(wing)8
2987 y(t)m(w)m(o)i(exceptions.)46 b(First,)32 b(rule)f(4)i(merges)f
(all)g(argumen)m(ts)g(to)h(a)g(constructor.)46 b(This)31
b(is)g(to)i(a)m(v)m(oid)g(in)m(tro)s(ducing)8 3099 y(recursiv)m(e)40
b(co)s(ercions,)j(and)d(to)h(reduce)f(the)g(n)m(um)m(b)s(er)f(of)i(co)s
(ercions)f(p)s(erformed)f(at)i(run)m(time.)69 b(Second,)43
b(w)m(e)8 3212 y(use)36 b(\\=")g(instead)f(of)h(\\)p
Fi(\025)p Fo(")g(in)e(some)j(\015o)m(w)e(constrain)m(ts)h(to)h
(simplify)32 b(the)k(sp)s(eci\014cation)e(of)i(the)g(translation,)8
3325 y(although)30 b(it)g(is)f(straigh)m(tforw)m(ard)i(to)g(incorp)s
(orate)f(the)g(extra)h(generalit)m(y)g(in)e(practice.)149
3438 y(One)36 b(can)f(also)h(pro)m(v)m(e)g(that)h(for)e(an)m(y)h
(program,)h(there)f(is)e(a)i(minim)m(um)d(safe)j(\015o)m(w;)j(this)34
b(corresp)s(onds)g(to)8 3551 y(the)28 b(usual)d(0CF)-10
b(A.)28 b(Another)f(example)g(of)g(a)g(safe)h(\015o)m(w)f(is)f(the)h
(uni\014cation-based)f(\015o)m(w)h(analysis)e(describ)s(ed)g(b)m(y)8
3664 y(Henglein)30 b([)p Fk(?)p Fo(])h(and)f(used)f(b)m(y)h(T)-8
b(olmac)m(h)31 b(and)f(Oliv)-5 b(a)29 b([)p Fk(?)p Fo(].)8
3907 y Fe(5.3)113 b(T)-9 b(ranslation)8 4079 y Fo(Figures)26
b(6)i(and)e Fk(??)h Fo(de\014ne)g(the)g(closure)f(con)m(v)m(erter.)41
b(In)26 b(the)h(translation,)g(new)f(datat)m(yp)s(es)i(corresp)s(ond)d
(to)j(the)8 4192 y(sets)g(of)f Fm(\025)p Fo(-o)s(ccurrences)g(computed)
g(b)m(y)g(\015o)m(w)g(analysis.)38 b(Closures)26 b(are)h(represen)m
(ted)g(as)g(constructed)h(v)-5 b(alues)26 b(of)8 4305
y(those)h(datat)m(yp)s(es.)40 b(Co)s(ercions)25 b(are)i(inserted)d(at)j
(eac)m(h)g(program)f(p)s(oin)m(t)f(where)h(the)g(\015o)m(w)g(b)s
(ecomes)h(less)e(precise)8 4418 y(\(b)s(ecause)31 b(the)g(safet)m(y)g
(constrain)m(ts)g(only)f(require)f(con)m(tainmen)m(t)i(instead)f(of)g
(equalit)m(y\).)41 b(Eac)m(h)31 b(application)e(is)8
4531 y(replaced)34 b(b)m(y)g(a)g(dispatc)m(h)f(on)h(the)g(closure)f
(\(no)m(w)i(simply)c(a)j(tagged)i(en)m(vironmen)m(t\),)f(eac)m(h)g
(branc)m(h)e(of)i(whic)m(h)8 4644 y(calls)30 b(the)g(appropriate)g
(function)f(on)h(the)h(en)m(vironmen)m(t)f(and)f(the)i(argumen)m(t.)149
4757 y(W)-8 b(e)35 b(c)m(ho)s(ose)f(to)g(represen)m(t)g(function)e
(calls)g(via)h(dispatc)m(hes)g(\(rather)g(than)g(directly)f(em)m(b)s
(edding)g(a)i(co)s(de-)8 4869 y(p)s(oin)m(ter)45 b(within)d(the)k
(closure)f(record\))g(for)g(t)m(w)m(o)i(reasons.)85 b(First,)49
b(w)m(e)d(can)f(sp)s(ecialize)f(calls)h(to)h(di\013eren)m(t)8
4982 y(pro)s(cedures)32 b(applied)e(at)k(a)f(giv)m(en)g(call-site)f
(more)h(easily)-8 b(.)48 b(F)-8 b(or)33 b(example,)h(argumen)m(t)f
(\015attening)f(is)g(a)h(partic-)8 5095 y(ularly)i(imp)s(ortan)m(t)g
(optimization)g(in)g(languages)h(lik)m(e)g(SML)g(whic)m(h)f(assume)h
(all)f(argumen)m(ts)h(are)h(implicitly)8 5208 y(tupled.)46
b(By)33 b(represen)m(ting)f(pro)s(cedure)f(calls)h(as)h(dispatc)m(hes,)
g(the)f(same)h(argumen)m(t)g(tuple)f(can)h(b)s(e)f(\015attened)1898
5532 y(11)p eop
%%Page: 12 12
12 11 bop 8 274 a Fo(in)33 b(di\013eren)m(t)g(w)m(a)m(ys)h(dep)s
(ending)d(up)s(on)h(the)i(sp)s(eci\014c)e(pro)s(cedure)h(b)s(eing)f
(applied.)48 b(Second,)35 b(using)d(dispatc)m(hes)8 387
y(rather)e(than)f(co)s(de-p)s(oin)m(ters)g(allo)m(ws)g(us)g(to)h(use)f
(a)h(simply-t)m(yp)s(ed)d(target)32 b(language.)40 b(The)29
b(alternativ)m(e)h(w)m(ould)8 500 y(b)s(e)g(a)h(more)f(complicated)g(t)
m(yp)s(e)h(system)f([)p Fk(?)q Fo(])h(using)d(existen)m(tial)i(t)m(yp)s
(es)h(to)g(\\hide")f(the)g(co)s(de-p)s(oin)m(ter.)149
613 y(The)g(translation)g(uses)g(the)g(follo)m(wing)f(auxiliary)f
(functions:)145 800 y Fi(\017)46 b Fo(The)22 b(function)g
Fi(T)48 b Fo(:)26 b Fl(A)-9 b(V)i(al)24 b Fi(!)i Fm(T)13
b(y)s(pe)23 b Fo(returns)f(the)h(target)i(language)e(t)m(yp)s(e)h
(corresp)s(onding)d(to)j(an)f(abstract)236 913 y(v)-5
b(alue.)39 b Fi(T)23 b Fo(\()p Fm(t)p Fo(\))i(=)g Fm(t)p
Fo(,)k Fi(T)50 b Fo(applied)26 b(to)j(a)f(set)h Fm(L)f
Fo(of)g(lam)m(b)s(da)f(o)s(ccurrences)h(returns)f(the)h(new)f(datat)m
(yp)s(e)i(for)f Fm(L)p Fo(,)236 1026 y(and)h Fi(T)23
b Fo(\()p Fj(\()15 b Fm(:)g(:)g(:)47 b(a)p Fj(,)e Fm(:)15
b(:)g(:)h Fj(\))p Fo(\))25 b(=)g Fi(T)e Fo(\()p Fm(a)1357
1040 y Fh(1)1397 1026 y Fo(\))d Fi(\003)h(T)i Fo(\()p
Fm(a)1674 1040 y Fh(2)1714 1026 y Fo(\))d Fi(\003)h Fm(:)15
b(:)g(:)21 b Fi(\003)g(T)h Fo(\()p Fm(a)2182 1040 y Ff(n)2230
1026 y Fo(\).)145 1214 y Fi(\017)46 b Fo(The)30 b(function)f
Fi(C)i Fo(:)26 b Fi(P)7 b Fo(\()p Fl(L)-5 b(amOc)g(c)17
b Fo(\))k Fi(\002)f Fl(L)-5 b(amOc)g(c)26 b Fi(!)g Fl(Constructor)33
b Fo(is)c(de\014ned)h(suc)m(h)g(that)h Fi(C)5 b Fo(\()p
Fm(L;)15 b Fj(fn)31 b Fm(x)g Fj(=>)f Fm(e)p Fo(\))236
1327 y(where)25 b Fj(fn)f Fm(x)i Fj(=>)f Fm(e)g Fi(2)g
Fm(L)g Fo(returns)g(the)g(name)h(of)f(the)h(constructor)g(in)e(the)i
(target)h(language)f(whic)m(h)e(injects)236 1440 y(the)30
b(tuple)f(of)i(free)f(v)-5 b(ariables)30 b(of)g Fj(fn)g
Fm(x)g Fj(=>)g Fm(e)g Fo(in)m(to)h Fi(T)22 b Fo(\()p
Fm(L)p Fo(\).)145 1627 y Fi(\017)46 b Fo(The)39 b(function)g
Fi(R)i Fo(:)h Fl(L)-5 b(amOc)g(c)42 b Fi(!)f Fm(T)13
b(y)s(pe)40 b Fo(is)f(de\014ned)f(suc)m(h)i(that)h Fi(R)p
Fo(\()p Fj(fn)f Fm(x)f Fj(=>)h Fm(e)p Fo(\))g(is)f(the)i(t)m(yp)s(e)f
(of)g(the)236 1740 y(en)m(vironmen)m(t)28 b(record)g(for)g
Fj(fn)g Fm(x)g Fj(=>)g Fm(e)p Fo(,)h(i.e.,)g Fi(T)23
b Fo(\()p Fl(F)12 b Fo(\()p Fm(x)2030 1754 y Fh(1)2070
1740 y Fo(\)\))17 b Fi(\003)g Fm(:)e(:)g(:)i Fi(\003)g(T)23
b Fo(\()p Fl(F)12 b Fo(\()p Fm(x)2669 1754 y Ff(n)2717
1740 y Fo(\)\))29 b(where)f Fm(x)3129 1754 y Ff(i)3182
1740 y Fi(2)d Fm(F)13 b(V)20 b Fo(\()p Fj(fn)28 b Fm(x)h
Fj(=>)e Fm(e)p Fo(\).)145 1928 y Fi(\017)46 b(N)38 b
Fo(:)25 b Fl(L)-5 b(amOc)g(c)26 b Fi(!)g Fl(V)-7 b(ar)23
b Fo(returns)f(the)h(name)g(of)h(the)f(target)h(language)g
(\014rst-order)e(function)g(for)h Fj(fn)f Fm(x)h Fj(=>)g
Fm(e)p Fo(.)145 2115 y Fi(\017)46 b(X)j Fo(:)36 b Fl(V)-7
b(ar)25 b Fi(\002)g Fl(A)-9 b(V)i(al)24 b Fi(\002)g Fl(A)-9
b(V)i(al)36 b Fi(!)g Fl(BindOc)-5 b(c)37 b Fo(co)s(erces)h(b)s(et)m(w)m
(een)g(di\013eren)m(t)e(represen)m(tations)h(and)f(is)g(giv)m(en)236
2228 y(in)29 b(Figure)h(6.)8 2416 y(The)g(translation)g(is)f(de\014ned)
g(b)m(y)h(the)h(function:)1611 2620 y([)-15 b([)p Fi(\017)p
Fo(])g(])27 b(:)e Fl(Exp)h Fi(!)55 b Fl(Exp)8 2824 y
Fo(and)39 b(is)f(giv)m(en)g(in)g(Figure)g Fk(??)q Fo(.)66
b(T)-8 b(o)40 b(translate)f(a)g(program,)i(w)m(e)e(\014rst)f(cop)m(y)i
(all)e(the)h(datat)m(yp)s(e)h(declarations)8 2937 y(from)e(the)g
(source)h(language)f(program.)64 b(Next,)41 b(for)d(eac)m(h)i
Fm(s)d Fo(=)h Fi(f)p Fm(:)15 b(:)g(:)i(;)e Fj(fn)38 b
Fm(x)2690 2951 y Ff(i)2756 2937 y Fj(=>)g Fm(e)2932 2951
y Ff(i)2960 2937 y Fm(;)15 b(:)g(:)g(:)r Fi(g)38 b Fo(whic)m(h)f(app)s
(ears)h(in)8 3050 y(the)32 b(range)h(of)f(our)f(\015o)m(w)h(analysis,)f
(w)m(e)h(add)g(the)g(datat)m(yp)s(e)g Fc(datat)m(yp)s(e)g
Fm(t)f Fc(=)h(.)15 b(.)g(.)h Fm(C)2813 3064 y Ff(i)2873
3050 y Fc(of)32 b Fm(\034)3018 3064 y Ff(i)3078 3050
y Fc(.)15 b(.)g(.)61 b Fo(where)31 b Fm(t)d Fo(=)f Fi(T)c
Fo(\()p Fm(s)p Fo(\),)8 3163 y Fm(C)73 3177 y Ff(i)132
3163 y Fo(=)29 b Fi(C)5 b Fo(\()p Fm(s;)15 b Fj(fn)34
b Fm(x)585 3177 y Ff(i)646 3163 y Fj(=>)f Fm(e)817 3177
y Ff(i)845 3163 y Fm(;)p Fo(\),)i(and)e Fm(\034)1185
3177 y Ff(i)1243 3163 y Fo(=)c Fi(R)p Fo(\()p Fj(fn)k
Fm(x)1636 3177 y Ff(i)1698 3163 y Fj(=>)f Fm(e)1868 3177
y Ff(i)1897 3163 y Fo(\).)50 b(Then,)33 b(for)g(eac)m(h)h
Fj(fn)f Fm(x)g Fj(=>)g Fm(e)h Fo(whic)m(h)e(app)s(ears)g(in)g(the)8
3276 y(source)j(program,)h(w)m(e)g(add)e(a)h(function)f(declaration)g
(of)h(the)g(form)g Fc(fun)p Fm(f)10 b Fo(\(\()p Fm(:)15
b(:)g(:)h(;)f(y)2863 3290 y Ff(i)2891 3276 y Fm(;)g(:)g(:)g(:)q
Fo(\))p Fm(;)g(x)p Fo(\))34 b(=)f([)-15 b([)p Fm(e)p
Fo(])g(])36 b(where)e(the)8 3389 y Fm(y)53 3403 y Ff(i)81
3389 y Fo('s)25 b(corresp)s(ond)f(to)i(the)f(source)g(program)g(pro)s
(cedure's)f(free)h(v)-5 b(ariables.)37 b(Finally)-8 b(,)25
b(the)g(b)s(o)s(dy)f(of)h(the)g(program,)8 3502 y Fm(e)p
Fo(,)31 b(is)f(translated)g(to)h([)-15 b([)p Fm(e)p Fo(])g(].)149
3615 y(W)-8 b(e)29 b(highligh)m(t)d(some)i(of)g(the)f(in)m(teresting)g
(cases)i(in)d(the)i(translation.)39 b(Rule)26 b(4)i(builds)d(a)j
(closure)f(record)g(b)m(y)8 3728 y(applying)18 b(the)j(appropriate)e
(constructor)i(to)g(the)g(tuple)e(of)i(the)f(pro)s(cedure's)g(free)g(v)
-5 b(ariables.)36 b(Rule)19 b(5)i(translates)8 3841 y(an)i(application)
e(to)j(a)g(dispatc)m(h)e(on)h(the)g(closure)f(record)h(of)g(the)g(pro)s
(cedure)f(b)s(eing)g(applied.)36 b(There)22 b(is)g(a)i(branc)m(h)8
3954 y(for)31 b(eac)m(h)h Fm(\025)p Fo(-o)s(ccurrence)g(that)g(can)f
(\015o)m(w)g(in)m(to)g(the)g(function)f(p)s(osition.)41
b(Co)s(ercions)30 b(ma)m(y)h(b)s(e)g(required)e(at)j(t)m(w)m(o)8
4066 y(p)s(oin)m(ts)j(in)g(the)i(translation)e(of)h(an)h(application.)
56 b(First,)38 b(if)d(the)h(abstract)h(v)-5 b(alue)36
b(of)h(the)f(argumen)m(t)h(is)e(more)8 4179 y(precise)25
b(than)g(the)g(formal,)h(a)f(co)s(ercion)g(m)m(ust)g(b)s(e)g(inserted)f
(to)h(c)m(hange)i(the)e(actual)g(parameter's)h(tag)g(to)g(matc)m(h)8
4292 y(the)32 b(exp)s(ected)g(t)m(yp)s(e)g(of)g(the)f(formal.)44
b(Second,)32 b(a)g(co)s(ercion)f(is)g(required)f(if)g(the)i(abstract)h
(v)-5 b(alue)31 b(of)h(the)f(result)8 4405 y(is)k(more)h(precise)f
(than)h(the)g(abstract)g(v)-5 b(alue)36 b(of)f(v)-5 b(ariable)35
b(to)i(whic)m(h)d(it)h(b)s(ecomes)h(b)s(ound.)55 b(Th)m(us,)36
b(co)s(ercions)8 4518 y(c)m(hange)29 b(the)f(tag)i(of)e(closure)f
(records)h(to)g(conform)g(to)h(the)f(\015o)m(w)g(set)g(of)g(the)g(con)m
(text)i(in)d(whic)m(h)f(they)i(are)h(b)s(eing)8 4631
y(used.)60 b(The)36 b(translation)g(of)h(exceptions)f(\(Rule)h(10\))h
(inserts)d(co)s(ercions)i(in)e(t)m(w)m(o)j(places.)60
b(First,)38 b(a)f(co)s(ercion)8 4744 y(m)m(ust)31 b(b)s(e)f(inserted)f
(to)j(ensure)e(the)g(t)m(yp)s(e)h(of)g(the)g(v)-5 b(alue)30
b(returned)f(b)m(y)i(the)g(expression)e(when)h(no)g(exception)h(is)8
4857 y(raised)g(matc)m(hes)i(the)e(exp)s(ected)h(t)m(yp)s(e)g(of)g(the)
f(v)-5 b(ariable)31 b(to)h(whic)m(h)e(the)i(v)-5 b(alue)31
b(is)g(b)s(ound.)42 b(A)31 b(similar)e(co)s(ercion)8
4970 y(is)h(inserted)f(b)s(et)m(w)m(een)i(the)f(v)-5
b(alue)30 b(returned)g(b)m(y)g(the)g(handler)f(and)h(the)g(enclosing)g
(expression.)1898 5532 y(12)p eop
%%Page: 13 13
13 12 bop 8 186 3870 4 v 8 2615 4 2429 v 37 279 a Fk(De\014nition)35
b(5.7)g(\(Co)s(erce\))45 b Fo(W)-8 b(e)43 b(de\014ne)f
Fi(X)58 b Fo(:)45 b Fl(V)-7 b(ar)28 b Fi(\002)g Fl(A)-9
b(V)i(al)28 b Fi(\002)f Fl(A)-9 b(V)i(al)45 b Fi(!)g
Fl(BindOc)-5 b(c)42 b Fo(as)g(cases)h(o)m(v)m(er)37 392
y(abstract)31 b(v)-5 b(alues)30 b(\(note,)h Fi(X)13 b
Fo(\()p Fm(x;)i(a;)g(a)1265 359 y Fg(0)1290 392 y Fo(\))30
b(is)g(only)f(de\014ned)h(when)f Fm(a)c Fi(\024)g Fm(a)2414
359 y Fg(0)2438 392 y Fo(\):)148 580 y(1.)46 b(if)29
b Fm(a)c Fo(=)g Fm(a)564 547 y Fg(0)618 580 y Fo(then)30
b Fi(X)13 b Fo(\()p Fm(x;)i(a;)g(a)1166 547 y Fg(0)1191
580 y Fo(\))30 b(=)g Fm(x)p Fo(.)148 730 y(2.)46 b Fi(X)13
b Fo(\()p Fm(x;)i Fo(\()p Fm(:)g(:)g(:)48 b(a)705 744
y Ff(i)733 730 y Fm(;)d(:)15 b(:)g(:)r Fo(\))p Fm(;)g
Fo(\()p Fm(:)g(:)g(:)47 b(a)1220 697 y Fg(0)1220 754
y Ff(i)1248 730 y Fm(;)f(:)15 b(:)g(:)q Fo(\)\))26 b(=)67
b Fj(let)75 b Fm(:)15 b(:)g(:)1867 843 y(y)1912 857 y
Ff(i)1970 843 y Fj(=)30 b(#)p Fm(i)g(x)1867 956 y(y)1915
923 y Fg(0)1912 980 y Ff(i)1970 956 y Fj(=)g Fi(X)13
b Fo(\()p Fm(y)2206 970 y Ff(i)2234 956 y Fm(;)i(a)2322
970 y Ff(i)2351 956 y Fm(;)g(a)2439 923 y Fg(0)2439 980
y Ff(i)2467 956 y Fo(\))1867 1069 y Fm(:)g(:)g(:)1867
1182 y(z)1913 1149 y Fg(0)1967 1182 y Fj(=)30 b(\()15
b Fm(:)g(:)g(:)46 b(y)2307 1149 y Fg(0)2304 1206 y Ff(i)2332
1182 y Fj(,)f Fm(:)15 b(:)g(:)h Fj(\))1659 1294 y(in)29
b Fm(z)1830 1261 y Fg(0)1659 1407 y Fj(end)264 1519 y
Fo(where)h Fm(z)573 1486 y Fg(0)596 1519 y Fm(;)15 b(:)g(:)g(:)i(;)e(y)
843 1533 y Ff(i)871 1519 y Fm(;)g(y)959 1486 y Fg(0)956
1544 y Ff(i)984 1519 y Fm(;)g(:)g(:)g(:)32 b Fo(are)f(fresh)e(v)-5
b(ariables.)148 1670 y(3.)46 b(If)30 b Fm(a)g Fo(and)g
Fm(a)658 1637 y Fg(0)711 1670 y Fo(are)h(in)e Fi(P)7
b Fo(\()p Fl(L)-5 b(amOc)g(c)17 b Fo(\))31 b(then)f Fi(X)13
b Fo(\()p Fm(x;)i(a;)g(a)2026 1637 y Fg(0)2051 1670 y
Fo(\))25 b(=)67 b Fj(case)29 b Fm(x)h Fj(of)2472 1783
y Fm(:)15 b(:)g(:)2472 1895 y Fj(|)30 b Fm(C)37 b(r)c
Fj(=>)d Fm(C)2924 1862 y Fg(0)2977 1895 y Fm(r)2472 2008
y(:)15 b(:)g(:)264 2163 y Fo(where)47 b(there)h(is)f(one)h(branc)m(h)f
(for)h(eac)m(h)h Fj(fn)e Fm(x)h Fj(=>)f Fm(e)55 b Fi(2)f
Fm(a)48 b Fo(where)f Fm(C)54 b Fo(=)48 b Fi(C)5 b Fo(\()p
Fm(a;)15 b Fj(fn)48 b Fm(x)g Fj(=>)f Fm(e)p Fo(\))264
2276 y(and)30 b Fm(C)513 2243 y Fg(0)566 2276 y Fo(=)g
Fi(C)5 b Fo(\()p Fm(a)803 2243 y Fg(0)827 2276 y Fm(;)15
b Fj(fn)30 b Fm(x)g Fj(=>)g Fm(e)p Fo(\))1190 2572 y(Figure)g(6:)41
b(The)30 b(co)s(ercion)h(function.)p 3875 2615 V 8 2618
3870 4 v 8 2875 a Fk(5.3.1)106 b(Co)s(ercions)8 3047
y Fo(The)30 b(pro)s(of)g(of)g(Theorem)g(5.8)i(sho)m(ws)e(that)h(co)s
(ercions)f(preserv)m(e)h(w)m(ell-t)m(yping.)8 3259 y
Fk(Theorem)j(5.8)i(\(W)-9 b(ell-t)m(yping)35 b(of)g(Co)s(ercions\))46
b Fl(If)33 b Fm(x)27 b Fo(:)12 b Fi(T)23 b Fo(\()p Fm(a)2249
3273 y Fh(1)2289 3259 y Fo(\))33 b Fl(and)i Fm(a)2583
3273 y Fh(1)2649 3259 y Fi(\024)27 b Fm(a)2795 3273 y
Fh(2)2834 3259 y Fl(,)34 b(then)g Fi(X)13 b Fo(\()p Fm(x;)i(a)3352
3273 y Fh(1)3392 3259 y Fm(;)g(a)3480 3273 y Fh(2)3520
3259 y Fo(\))28 b(:)12 b Fi(T)22 b Fo(\()p Fm(a)3775
3273 y Fh(2)3815 3259 y Fo(\))p Fl(.)149 3585 y Fo(Note,)30
b(although)c(for)h(our)g(simple)e(t)m(yp)s(e)i(system)g(w)m(e)h(m)m
(ust)f(express)g(co)s(ercions)g(as)g(a)g(case)i(expression)d(with)8
3698 y(eac)m(h)38 b(arm)f(simply)d(c)m(hanging)j(the)g(constructor)g
(\(and)g(the)g(t)m(yp)s(e\))g(represen)m(ting)f(the)h(closure,)h(it)e
(is)g(easy)h(to)8 3811 y(pic)m(k)i(an)h(underlying)c(represen)m(tation)
j(for)h(these)f(datat)m(yp)s(es)i(so)e(that)h(no)g(mac)m(hine)f(co)s
(de)g(actually)g(has)g(to)8 3924 y(b)s(e)32 b(generated.)49
b(In)32 b(terms)h(of)g(the)g(underlying)c(memory)k(ob)5
b(jects,)34 b(all)e(co)s(ercions)h(are)g(the)g(iden)m(tit)m(y)-8
b(.)47 b(If)33 b(these)8 4036 y(datat)m(yp)s(es)40 b(are)f(all)e
(represen)m(ted)i(as)f(a)h(tag)h(w)m(ord)e(\(whose)h(only)f(function)f
(is)h(to)h(distinguish)c(b)s(et)m(w)m(een)k(the)8 4149
y(summands)27 b(forming)h(the)g(datat)m(yp)s(e\))i(follo)m(w)m(ed)f(b)m
(y)f(some)h(\014xed)f(represen)m(tation)h(of)g(the)g(v)-5
b(alue)28 b(b)s(eing)f(carried)8 4262 y(b)m(y)g(that)h(summand,)e(then)
g(the)h(only)g(thing)e(whic)m(h)h(migh)m(t)h(b)s(e)f(c)m(hanged)i(b)m
(y)e(the)i(co)s(ercion)e(function)g(is)g(the)h(tag)8
4375 y(w)m(ord.)40 b(It)29 b(is)f(th)m(us)h(easy)g(to)h(pic)m(k)e(the)h
(tags)h(so)f(that)h(they)f(also)g(don't)f(c)m(hange)i(\(for)f
(instance,)g(use)g(the)g(address)8 4488 y(for)h(the)h(co)s(de)g(of)f
(the)h(pro)s(cedure\).)149 4601 y(W)-8 b(e)34 b(do)f(not)f(do)h(this)e
(in)h(MLton.)47 b(As)33 b(sho)m(wn)f(in)f(Section)h Fk(??)q
Fo(,)h(dynamic)f(coun)m(ts)h(indicate)e(co)s(ercions)i(are)8
4714 y(so)f(rare)f(that)g(their)f(cost)i(is)e(largely)g(unimp)s(ortan)m
(t.)41 b(The)31 b(adv)-5 b(an)m(tage)33 b(of)e(allo)m(wing)e(the)j(co)s
(ercions)e(to)i(c)m(hange)8 4827 y(represen)m(tations)g(is)e(that)i
(one)f(can)h(c)m(hose)g(sp)s(ecialized)e(represen)m(tations)h(for)g(en)
m(vironmen)m(t)g(records.)43 b(MLton)8 4940 y(uses)30
b(this,)g(for)g(example,)g(to)h(\015atten)g(nested)g(tuples.)1898
5532 y(13)p eop
%%Page: 14 14
14 13 bop 8 186 3870 4 v 8 4680 4 4495 v 148 279 a Fo(1.)46
b([)-15 b([)p Fj(let)30 b Fm(x)g Fj(=)g Fm(b)g Fj(in)g
Fl(e)g Fj(end)o Fo(])-15 b(])26 b(=)f Fj(let)k Fm(x)i
Fj(=)f Fo([)-15 b([)p Fm(b)p Fo(])g(])1643 293 y Ff(x)1718
279 y Fj(in)29 b Fo([)-15 b([)p Fl(e)p Fo(])g(])31 b
Fj(end)o Fo(.)148 429 y(2.)46 b([)-15 b([)p Fm(x)p Fo(])g(])26
b(=)f Fm(x)p Fo(.)148 580 y(3.)46 b([)-15 b([)p Fl(e)p
Fo(])g(])376 594 y Ff(x)445 580 y Fo(=)25 b([)-15 b([)p
Fl(e)q Fo(])g(].)148 730 y(4.)46 b([)-15 b([)p Fj(fn)30
b Fm(w)j Fj(=>)d Fl(e)o Fo(])-15 b(])725 744 y Ff(x)795
730 y Fo(=)25 b Fm(C)7 b Fj(\()14 b Fm(:)h(:)g(:)47 b(y)s
Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))p Fo(,)264 843 y(where)30
b Fm(C)h Fo(=)25 b Fi(C)5 b Fo(\()p Fl(F)12 b Fo(\()p
Fm(x)p Fo(\))p Fm(;)j Fj(fn)32 b Fm(w)h Fj(=>)d Fl(e)p
Fo(\))g(and)g Fm(:)15 b(:)g(:)47 b(y)h(:)15 b(:)g(:)26
b Fo(=)f Fc(FV)q Fo(\()p Fj(fn)30 b Fm(w)j Fj(=>)c Fl(e)p
Fo(\).)148 993 y(5.)46 b([)-15 b([)p Fm(y)33 b(z)t Fo(])-15
b(])458 1007 y Ff(x)528 993 y Fo(=)67 b Fj(case)29 b
Fm(y)k Fj(of)889 1106 y Fm(:)15 b(:)g(:)889 1219 y Fj(|)30
b Fm(C)37 b(r)c Fj(=>)71 b(let)60 b Fm(z)1560 1186 y
Fg(0)1613 1219 y Fj(=)30 b Fi(X)13 b Fo(\()p Fm(z)t(;)i
Fl(F)d Fo(\()p Fm(z)t Fo(\))p Fm(;)j Fl(F)d Fo(\()p Fm(w)r
Fo(\)\))1518 1332 y Fm(v)34 b Fj(=)c Fm(f)10 b Fj(\()o
Fm(r)s Fj(,)29 b Fm(z)1943 1299 y Fg(0)1967 1332 y Fj(\))1518
1445 y Fm(v)1565 1412 y Fg(0)1619 1445 y Fj(=)h Fi(X)13
b Fo(\()p Fm(v)s(;)i Fl(F)d Fo(\()p Fl(last)g Fo(\()p
Fm(e)p Fo(\)\))p Fm(;)j Fl(F)d Fo(\()p Fm(x)p Fo(\)\))1310
1558 y Fj(in)30 b Fm(v)1483 1525 y Fg(0)1310 1671 y Fj(end)889
1783 y Fm(:)15 b(:)g(:)264 1939 y Fo(where)30 b(there)g(is)g(one)g
(branc)m(h)g(for)g(eac)m(h)i Fj(fn)d Fm(w)k Fj(=>)d Fm(e)25
b Fi(2)g Fl(F)12 b Fo(\()p Fm(y)s Fo(\),)32 b(where)e
Fm(C)h Fo(=)25 b Fi(C)5 b Fo(\()p Fl(F)12 b Fo(\()p Fm(y)s
Fo(\))p Fm(;)j Fj(fn)32 b Fm(w)h Fj(=>)d Fm(e)p Fo(\),)264
2051 y Fm(f)k Fo(=)25 b Fi(N)13 b Fo(\()p Fj(fn)30 b
Fm(w)j Fj(=>)d Fm(e)p Fo(\),)h(and)f Fm(z)1268 2018 y
Fg(0)1292 2051 y Fo(,)g Fm(v)s Fo(,)h(and)f Fm(v)1674
2018 y Fg(0)1728 2051 y Fo(are)g(fresh)g(v)-5 b(ariables.)148
2202 y(6.)46 b([)-15 b([)p Fm(C)37 b(y)s Fo(])-15 b(])484
2216 y Ff(x)553 2202 y Fo(=)67 b Fj(let)60 b Fm(y)943
2169 y Fg(0)996 2202 y Fj(=)30 b Fi(X)13 b Fo(\()p Fm(y)s(;)i
Fl(F)d Fo(\()p Fm(y)s Fo(\))p Fm(;)j Fl(F)d Fo(\()p Fm(C)7
b Fo(\)\))899 2315 y Fm(r)33 b Fj(=)d Fm(C)37 b(y)1201
2282 y Fg(0)691 2428 y Fj(in)29 b Fm(r)691 2541 y Fj(end)264
2653 y Fo(where)h Fm(y)575 2620 y Fg(0)628 2653 y Fo(and)g
Fm(r)j Fo(are)d(fresh)g(v)-5 b(ariables.)148 2803 y(7.)46
b([)-15 b([)p Fj(case)19 b Fm(y)k Fj(of)35 b Fm(:)15
b(:)g(:)37 b Fj(|)19 b Fm(C)27 b(z)e Fj(=>)19 b Fl(e)35
b Fm(:)15 b(:)g(:)q Fo(])-15 b(])1410 2817 y Ff(x)1480
2803 y Fo(=)66 b Fj(case)30 b Fm(y)j Fj(of)1841 2916
y Fm(:)15 b(:)g(:)1841 3029 y Fj(|)30 b Fm(C)37 b(z)d
Fj(=>)71 b(let)60 b Fm(r)33 b Fj(=)d Fo([)-15 b([)p Fl(e)p
Fo(])g(])2473 3142 y Fm(r)2517 3109 y Fg(0)2570 3142
y Fj(=)30 b Fi(X)13 b Fo(\()p Fm(r)m(;)i Fl(F)d Fo(\()p
Fl(last)g Fo(\()p Fm(e)p Fo(\)\))p Fm(;)j Fl(F)d Fo(\()p
Fm(x)p Fo(\)\))2264 3255 y Fj(in)30 b Fm(r)2434 3222
y Fg(0)2264 3368 y Fj(end)1841 3480 y Fm(:)15 b(:)g(:)264
3636 y Fo(where)30 b Fm(r)s Fo(,)g Fm(r)670 3603 y Fg(0)723
3636 y Fo(are)h(fresh)e(v)-5 b(ariables.)148 3786 y(8.)46
b([)-15 b([)p Fj(\()15 b Fm(:)g(:)g(:)47 b(y)s Fj(,)e
Fm(:)15 b(:)g(:)h Fj(\))p Fo(])-15 b(])859 3800 y Fh(=)918
3786 y Fj(\()15 b Fm(:)g(:)g(:)46 b(y)s Fj(,)f Fm(:)15
b(:)g(:)i Fj(\))o Fo(.)148 3936 y(9.)46 b([)-15 b([)p
Fj(#)p Fm(i)31 b(y)s Fo(])-15 b(])492 3950 y Fh(=)551
3936 y Fj(#)o Fm(i)31 b(y)s Fo(.)102 4086 y(10.)47 b([)-15
b([)p Fj(raise)29 b Fm(y)s Fo(])-15 b(])651 4100 y Fh(=)710
4086 y Fj(raise)29 b Fm(y)s Fo(.)102 4237 y(11.)47 b([)-15
b([)p Fm(e)341 4251 y Fh(1)401 4237 y Fj(handle)19 b
Fm(z)24 b Fj(=>)c Fm(e)932 4251 y Fh(2)972 4237 y Fo(])-15
b(])25 b(=)67 b Fj(let)29 b Fm(y)1388 4251 y Fh(1)1457
4237 y Fj(=)h Fo([)-15 b([)p Fm(e)1612 4251 y Fh(1)1653
4237 y Fo(])g(])30 b Fj(in)g Fi(X)13 b Fo(\()p Fm(y)2002
4251 y Fh(1)2042 4237 y Fm(;)i Fl(F)d Fo(\()p Fm(l)r(ast)p
Fo(\()p Fm(e)2418 4251 y Fh(1)2458 4237 y Fo(\)\))p Fm(;)j
Fl(F)d Fo(\()p Fm(x)p Fo(\)\))33 b Fj(end)1185 4350 y(handle)28
b Fm(z)35 b Fj(=>)30 b(let)f Fm(y)1922 4364 y Fh(2)1992
4350 y Fj(=)h Fm(e)2112 4364 y Fh(2)2182 4350 y Fj(in)f
Fi(X)13 b Fo(\()p Fm(y)2465 4364 y Fh(2)2505 4350 y Fm(;)i
Fl(F)d Fo(\()p Fm(l)r(ast)p Fo(\()p Fm(e)2881 4364 y
Fh(2)2922 4350 y Fo(\)\))p Fm(;)j Fl(F)d Fo(\()p Fm(l)r(ast)p
Fo(\()p Fm(x)p Fo(\)\)\))33 b Fj(end)1267 4638 y Fo(Figure)d(7:)41
b(Closure)29 b(con)m(v)m(ersion)p 3875 4680 V 8 4683
3870 4 v 8 4941 a Fk(5.3.2)106 b(Correctness)8 5112 y
Fo(T)-8 b(o)31 b(sho)m(w)f(that)h(our)f(closure)f(con)m(v)m(ersion)i
(algorithm)e(preserv)m(es)h(the)h(meaning)e(of)i(programs,)f(w)m(e)g
(\014rst)g(de\014ne)8 5225 y Fi(S)39 b Fo(whic)m(h)31
b(con)m(v)m(erts)i(v)-5 b(alues)31 b(and)h(en)m(vironmen)m(ts)f(from)g
(the)i(SXML)e(seman)m(tics)h(to)h(the)f(F)m(OL)g(seman)m(tics.)46
b(W)-8 b(e)1898 5532 y(14)p eop
%%Page: 15 15
15 14 bop 8 274 a Fo(o)m(v)m(erload)32 b Fi(S)37 b Fo(for)30
b(b)s(oth)g Fl(V)-7 b(alue)20 b Fi(\002)g Fl(A)-9 b(V)i(al)24
b Fi(!)i Fl(V)-7 b(alue)30 b Fo(and)g Fl(Env)24 b Fi(!)i
Fl(Env)o Fo(,)31 b(whic)m(h)e(are)i(de\014ned)e(inductiv)m(ely)f(b)m(y)
145 461 y Fi(\017)46 b(S)7 b Fo(\()p Fm(\032)p Fo(\)\()p
Fm(x)p Fo(\))26 b(=)f Fi(S)7 b Fo(\()p Fm(\032)p Fo(\()p
Fm(x)p Fo(\))p Fm(;)15 b Fl(F)d Fo(\()p Fm(x)p Fo(\)\))145
611 y Fi(\017)46 b(S)7 b Fo(\()p Fm(C)37 b(v)s(;)15 b(a)p
Fo(\))26 b(=)f Fm(C)37 b Fi(S)7 b Fo(\()p Fm(v)s(;)15
b Fl(F)d Fo(\()p Fm(C)7 b Fo(\)\))145 761 y Fi(\017)46
b(S)7 b Fo(\(\()p Fm(:)15 b(:)g(:)h(;)f(v)573 775 y Ff(i)602
761 y Fm(;)g(:)g(:)g(:)q Fo(\))p Fm(;)g(a)p Fo(\))27
b(=)e(\()p Fm(:)15 b(:)g(:)h(;)f Fi(S)7 b Fo(\()p Fm(v)1366
775 y Ff(i)1395 761 y Fm(;)15 b Fj(#)p Fm(i)31 b(a)p
Fo(\))p Fm(;)15 b(:)g(:)g(:)r Fo(\))145 911 y Fi(\017)46
b(S)7 b Fo(\()p Fi(h)p Fj(fn)40 b Fm(x)h Fj(=>)g Fm(e;)15
b(\032)p Fi(i)p Fm(;)g(a)p Fo(\))44 b(=)f Fm(C)k Fo(\()p
Fm(:)15 b(:)g(:)i(;)e Fi(S)7 b Fo(\()p Fm(\032)p Fo(\)\()p
Fm(y)1747 925 y Ff(i)1776 911 y Fo(\))p Fm(;)15 b(:)g(:)g(:)r
Fo(\))41 b(where)g Fm(C)49 b Fo(=)42 b Fi(C)5 b Fo(\()p
Fm(a;)15 b Fj(fn)42 b Fm(x)f Fj(=>)f Fm(e)p Fo(\))i(and)e
Fm(:)15 b(:)g(:)h(;)f(y)3590 925 y Ff(i)3618 911 y Fm(;)g(:)g(:)g(:)45
b Fo(=)236 1024 y Fc(FV)p Fo(\()p Fj(fn)30 b Fm(x)h Fj(=>)e
Fm(e)p Fo(\))149 1210 y(The)22 b(translation)g(can)g(ignore)h(the)f
(con)m(text)i(\(represen)m(ted)f(as)g(an)f(abstract)h(v)-5
b(alue\))23 b(in)e(whic)m(h)g(a)i(constructor)8 1323
y(application)32 b(o)s(ccurs,)i(b)s(ecause)g(all)e(suc)m(h)h
(applications)f(are)i(merged)f(b)m(y)h(the)f(\015o)m(w)h(analysis.)48
b(A)34 b(source-lev)m(el)8 1436 y(closure)43 b(is)g(translated)g(to)i
(a)f(constructor)g(application)d(where)j(the)f(tag)i(is)e(the)h
(constructor)g(name,)j(and)8 1549 y(the)41 b(v)-5 b(alue)40
b(is)f(a)i(tuple)f(con)m(taining)g(the)g(translated)h(v)-5
b(alues)39 b(of)i(the)g(free)f(v)-5 b(ariables)39 b(in)h(the)g(corresp)
s(onding)8 1662 y(pro)s(cedure.)149 1775 y(Using)30 b
Fi(S)7 b Fo(,)30 b(w)m(e)h(can)g(state)h(the)e(correctness)h(of)g(the)f
(translation)g(as)8 1962 y Fk(Theorem)k(5.9)i(\(T)-9
b(ranslation)34 b(Correctness\))46 b Fl(If)32 b Fm(\032;)15
b Fl(e)26 b Fm(,)-15 b Fi(!)25 b Fm(v)36 b Fl(then)d
Fi(S)7 b Fo(\()p Fm(\032)p Fo(\))p Fm(;)15 b Fo([)-15
b([)p Fl(e)q Fo(])g(])26 b Fm(,)-15 b Fi(!)25 b(S)7 b
Fo(\()p Fm(v)s(;)15 b Fl(F)d Fo(\()p Fl(last)f Fo(\()p
Fl(e)q Fo(\)\)\))149 2148 y(The)30 b(pro)s(of)g(of)g(this)g(theorem)h
(giv)m(en)f(b)s(elo)m(w)f(uses)h(the)h(follo)m(wing)e(supp)s(orting)f
(lemma:)8 2360 y Fk(Lemma)33 b(5.10)46 b Fl(If)33 b Fm(e;)15
b(\032)26 b(,)-15 b Fi(!)25 b(S)7 b Fo(\()p Fm(v)s(;)15
b(a)1219 2374 y Fh(1)1259 2360 y Fo(\))p Fl(,)33 b(and)h
Fm(a)1580 2374 y Fh(1)1645 2360 y Fi(\024)24 b Fm(a)1788
2374 y Fh(2)1828 2360 y Fl(,)32 b(then)i Fi(X)13 b Fo(\()p
Fm(e;)i(a)2334 2374 y Fh(1)2374 2360 y Fm(;)g(a)2462
2374 y Fh(2)2502 2360 y Fo(\))p Fm(;)g(\032)26 b(,)-15
b Fi(!)25 b(S)7 b Fo(\()p Fm(v)s(;)15 b(a)3008 2374 y
Fh(2)3049 2360 y Fo(\))p Fl(.)149 2571 y Fo(This)30 b(lemma)i(states)h
(that)f(the)g(translation)e(from)i(source)f(programs)h(to)g(target)h
(programs)f(is)f(preserv)m(ed)8 2684 y(b)m(y)23 b(co)s(ercions)h
(induced)d(b)m(y)i(the)g(de\014nition)e(of)j Fi(X)13
b Fo(.)38 b(In)23 b(other)g(w)m(ords,)i(in)m(tro)s(ducing)c(a)i(co)s
(ercion)h(do)s(es)f(not)g(violate)8 2797 y(the)31 b(seman)m(tics)f(of)h
(the)g(target)h(language.)149 2910 y Fk(Pro)s(of)p Fo(.)149
3023 y(By)f(induction)d(on)i Fl(e)p Fm(;)15 b(\032)26
b(,)-15 b Fi(!)25 b Fm(v)s Fo(.)145 3244 y Fi(\017)p
236 3150 517 4 v 236 3291 4 141 v 74 w Fm(\032;)15 b(x)25
b(,)-15 b Fi(!)26 b Fm(\032)p Fo(\()p Fm(x)p Fo(\))p
749 3291 V 236 3294 517 4 v 236 3371 a(By)k(de\014nition)e(of)j
Fi(S)7 b Fo(,)30 b Fm(\032;)15 b Fi(S)7 b Fo(\()p Fm(\032)p
Fo(\)\()p Fm(x)p Fo(\))27 b Fm(,)-15 b Fi(!)25 b(S)7
b Fo(\()p Fm(\032)p Fo(\()p Fm(x)p Fo(\))p Fm(;)15 b
Fl(F)d Fo(\()p Fm(x)p Fo(\)\).)145 3573 y Fi(\017)p 236
3480 1756 4 v 236 3638 4 159 v 74 w Fm(\032;)j Fj(fn)30
b Fm(x)g Fj(=>)g Fm(e)c(,)-15 b Fi(!)25 b(h)p Fj(fn)30
b Fm(x)g Fj(=>)g Fm(e;)15 b(\032)p Fi(j)1402 3597 y Ff(F)10
b(V)16 b Fh(\()p Fj(fn)30 b Ff(x)g Fj(=>)g Ff(e)p Fh(\))1927
3573 y Fi(i)p 1988 3638 V 236 3641 1756 4 v 236 3720
a Fo(By)20 b(de\014nition)e(of)j Fi(S)7 b Fo(,)22 b(w)m(e)f(kno)m(w)f
Fi(S)7 b Fo(\()p Fi(h)p Fj(fn)20 b Fm(x)g Fj(=>)g Fm(e;)15
b(\032)1881 3687 y Fg(0)1905 3720 y Fi(i)p Fm(;)g Fl(F)d
Fo(\()p Fj(fn)21 b Fm(x)f Fj(=>)g Fm(e)p Fo(\)\))26 b(=)20
b Fm(C)27 b Fl(F)12 b Fo(\()p Fj(fn)20 b Fm(x)g Fj(=>)g
Fm(e)p Fo(\))p Fm(;)15 b Fj(fn)21 b Fm(x)f Fj(=>)g Fm(e)p
Fo(\()p Fm(:)15 b(:)g(:)i(;)e Fi(S)7 b Fo(\()p Fm(\032)3927
3687 y Fg(0)3950 3720 y Fo(\)\()p Fm(y)4065 3734 y Ff(i)4094
3720 y Fo(\))p Fm(;)15 b(:)g(:)g(:)r Fo(\).)236 3833
y(Moreo)m(v)m(er,)30 b(w)m(e)f(ha)m(v)m(e)g Fm(\032;)15
b Fi(S)7 b Fo(\()p Fm(p)p Fo(\))26 b Fm(,)-15 b Fi(!)26
b(S)7 b Fo(\()p Fm(\032)p Fo(\()p Fm(y)1639 3847 y Ff(i)1667
3833 y Fo(\))p Fm(;)15 b Fl(F)d Fo(\()p Fm(y)1893 3847
y Ff(i)1922 3833 y Fo(\)\))29 b(and)e Fi(S)7 b Fo(\()p
Fm(\032)p Fo(\))p Fm(;)15 b Fo(\()p Fm(y)2494 3847 y
Fh(1)2535 3833 y Fm(;)g(:)g(:)g(:)h(;)f(y)2781 3847 y
Ff(n)2828 3833 y Fo(\))26 b Fm(,)-15 b Fi(!)25 b Fo(\()p
Fm(v)3094 3847 y Fh(1)3134 3833 y Fm(;)15 b(:)g(:)g(:)i(;)e(v)3380
3847 y Ff(n)3427 3833 y Fo(\))28 b(By)h(de\014ni-)236
3946 y(tion)g(of)i([)-15 b([)31 b(])-15 b(],)31 b Fi(S)7
b Fo(\()p Fm(\032)p Fo(\))p Fm(;)15 b Fi(C)5 b Fo(\()p
Fl(F)12 b Fo(\()p Fj(fn)32 b Fm(x)e Fj(=>)g Fm(e)p Fo(\))p
Fm(;)15 b Fj(fn)30 b Fm(x)h Fj(=>)e Fm(e)p Fo(\)\()p
Fm(y)2040 3960 y Fh(1)2081 3946 y Fm(;)15 b(:)g(:)g(:)h(;)f(y)2327
3960 y Ff(n)2374 3946 y Fo(\))26 b Fm(,)-15 b Fi(!)25
b Fo(\()p Fm(v)2640 3960 y Fh(1)2680 3946 y Fm(;)15 b(:)g(:)g(:)h(;)f
(v)2925 3960 y Ff(n)2973 3946 y Fo(\).)145 4148 y Fi(\017)p
236 4055 792 4 v 236 4195 4 141 v 74 w Fm(\032;)g(C)37
b(x)25 b(,)-15 b Fi(!)25 b Fm(C)37 b Fo(\()p Fm(\032)p
Fo(\()p Fm(x)p Fo(\)\))p 1024 4195 V 236 4198 792 4 v
236 4275 a(W)-8 b(e)21 b(w)m(an)m(t)g(to)g(sho)m(w)f(that)h
Fi(S)7 b Fo(\()p Fm(\032)p Fo(\))p Fm(;)15 b Fo([)-15
b([)p Fm(C)28 b(x)p Fo(])-15 b(])26 b Fm(,)-15 b Fi(!)25
b(S)7 b Fo(\()p Fm(v)s(;)15 b Fl(F)d Fo(\()p Fm(C)28
b(x)p Fo(\)\).)38 b(By)21 b(Lemma)f(5.10,)k(w)m(e)d(ha)m(v)m(e)h
Fi(S)7 b Fo(\()p Fm(\032)p Fo(\))p Fm(;)15 b Fi(X)e Fo(\()p
Fm(x;)i Fl(F)d Fo(\()p Fm(x)p Fo(\))p Fm(;)j Fl(F)d Fo(\()p
Fm(C)7 b Fo(\)\))29 b Fm(,)-15 b Fi(!)236 4388 y(S)7
b Fo(\()p Fm(v)s(;)15 b Fl(F)d Fo(\()p Fm(C)7 b Fo(\)\).)42
b(By)31 b(de\014nition)d(of)i Fi(S)7 b Fo(,)31 b Fi(S)7
b Fo(\()p Fm(\032)p Fo(\))p Fm(;)15 b(C)7 b Fo(\()p Fi(X)13
b Fo(\()p Fm(x;)i Fl(F)d Fo(\()p Fm(x)p Fo(\))p Fm(;)j
Fl(F)d Fo(\()p Fm(C)7 b Fo(\)\)\))30 b Fm(,)-15 b Fi(!)25
b Fm(C)7 b Fo(\()p Fi(S)g Fo(\()p Fm(v)s(;)15 b Fl(F)d
Fo(\()p Fm(C)7 b Fo(\)\)\))27 b(=)e Fi(S)7 b Fo(\()p
Fm(v)s(;)15 b Fl(F)d Fo(\()p Fm(C)7 b Fo(\)\).)145 4662
y Fi(\017)p 236 4497 1883 4 v 236 4782 4 286 v 315 4601
a Fm(\032)p Fo(\()p Fm(y)s Fo(\))26 b(=)f Fi(h)p Fj(fn)30
b Fm(x)g Fj(=>)g Fl(e)p Fm(;)15 b(\032)1100 4568 y Fg(0)1124
4601 y Fi(i)120 b Fm(\032)1326 4568 y Fg(0)1349 4601
y Fo([)p Fm(x)26 b Fi(7!)f Fm(\032)p Fo(\()p Fm(z)t Fo(\)])p
Fm(;)15 b Fl(e)27 b Fm(,)-15 b Fi(!)25 b Fm(v)p 274 4641
1806 4 v 936 4723 a(\032;)15 b Fo(\()p Fm(y)34 b(z)t
Fo(\))26 b Fm(,)-15 b Fi(!)25 b Fm(v)p 2115 4782 4 286
v 236 4785 1883 4 v 236 4944 a Fo(W)-8 b(e)24 b(w)m(an)m(t)h(to)f(sho)m
(w)f(that)h Fi(S)7 b Fo(\()p Fm(\032)p Fo(\))p Fm(;)15
b Fo([)-15 b([)p Fm(y)s Fo(\()p Fm(z)t Fo(\)])g(])28
b Fm(,)-15 b Fi(!)25 b(S)7 b Fo(\()p Fm(v)s(;)15 b Fl(F)d
Fo(\()p Fm(y)s Fo(\()p Fm(z)t Fo(\)\)\).)42 b(By)24 b(\015o)m(w)f
(soundness,)h(w)m(e)f(kno)m(w)h(there)g(exists)236 5057
y(a)30 b Fm(k)j Fo(suc)m(h)c(that)h Fj(fn)g Fm(w)982
5072 y Ff(k)1054 5057 y Fj(=>)f Fm(e)1221 5072 y Ff(k)1289
5057 y Fi(2)c Fl(F)12 b Fo(\()p Fj(fn)30 b Fm(x)g Fj(=>)f
Fm(e)p Fo(\).)41 b(By)30 b(induction)e(h)m(yp)s(othesis,)g(and)h
(de\014nition)f(of)i Fi(S)7 b Fo(,)30 b(w)m(e)236 5170
y(ha)m(v)m(e)35 b Fi(S)7 b Fo(\()p Fm(\032)p Fo(\)\()p
Fm(z)t Fo(\))32 b(=)f Fi(S)7 b Fo(\()p Fm(v)1022 5137
y Fg(0)1046 5170 y Fm(;)15 b Fl(F)d Fo(\()p Fm(z)t Fo(\)\))36
b(and)d Fi(S)7 b Fo(\()p Fm(\032)p Fo(\)\()p Fm(y)s Fo(\))32
b(=)e Fm(C)7 b Fi(S)g Fo(\()p Fi(h)p Fj(fn)34 b Fm(x)f
Fj(=>)h Fm(e;)15 b(\032)p Fi(i)p Fm(;)g Fl(F)d Fo(\()p
Fm(C)7 b Fo(\)\).)53 b(Let)43 b(^)-54 b Fm(\032)31 b
Fo(=)g Fi(S)7 b Fo(\()p Fm(\032)p Fo(\)[)p Fm(r)3624
5185 y Ff(k)3698 5170 y Fi(7!)31 b Fm(t)p Fo(])236 5283
y(where)26 b Fm(r)536 5298 y Ff(k)606 5283 y Fo(is)g(the)h(name)h(of)f
(the)g(en)m(vironmen)m(t)g(record)g(for)g Fj(fn)f Fm(w)2458
5298 y Ff(k)2528 5283 y Fj(=>)h Fo(,)h Fm(t)d Fo(=)g(\()p
Fi(S)7 b Fo(\()p Fm(\032)3037 5250 y Fg(0)3060 5283 y
Fo(\()p Fm(y)3140 5297 y Fh(1)3180 5283 y Fo(\)\))p Fm(;)15
b(:)g(:)g(:)i(;)e Fi(S)7 b Fo(\()p Fm(\032)3596 5250
y Fg(0)3620 5283 y Fo(\()p Fm(y)3700 5297 y Ff(n)3747
5283 y Fo(\)\)\),)1898 5532 y(15)p eop
%%Page: 16 16
16 15 bop 236 274 a Fo(and)32 b Fm(y)460 288 y Ff(i)518
274 y Fi(2)e Fc(FV)q Fo(\()p Fj(fn)j Fm(w)952 289 y Ff(k)1028
274 y Fj(=>)g Fm(e)1199 289 y Ff(k)1242 274 y Fo(\).)50
b(By)34 b(Lemma)g(5.10,)i(w)m(e)e(ha)m(v)m(e)43 b(^)-54
b Fm(\032;)15 b Fi(X)e Fo(\()p Fm(z)t(;)i Fl(F)d Fo(\()p
Fm(z)t Fo(\))p Fm(;)j Fl(F)d Fo(\()p Fm(w)3080 289 y
Ff(k)3127 274 y Fo(\)\))31 b Fm(,)-15 b Fi(!)31 b(S)7
b Fo(\()p Fm(v)3504 241 y Fg(0)3527 274 y Fm(;)15 b Fl(F)d
Fo(\()p Fm(w)3738 289 y Ff(k)3782 274 y Fo(\)\).)236
387 y(By)30 b(induction)e(h)m(yp)s(othesis,)i(w)m(e)g(ha)m(v)m(e)1001
591 y([)p Fm(y)1071 605 y Ff(i)1125 591 y Fi(7!)55 b
Fo(#)p Fm(i)31 b(t)1442 605 y Ff(i)1470 591 y Fm(;)15
b(w)1575 606 y Ff(k)1643 591 y Fi(7!)55 b(S)7 b Fo(\()p
Fm(v)1933 554 y Fg(0)1957 591 y Fm(;)15 b Fl(F)d Fo(\()p
Fm(w)2168 606 y Ff(k)2212 591 y Fo(\)\)])p Fm(;)j(e)2389
606 y Ff(k)2459 591 y Fm(,)-15 b Fi(!)25 b(S)7 b Fo(\()p
Fm(v)s(;)15 b Fl(F)d Fo(\()p Fm(y)s Fo(\()p Fm(z)t Fo(\)\)\))236
795 y(and)839 908 y(^)-53 b Fm(\032;)15 b Fi(N)e Fo(\()p
Fj(fn)31 b Fm(w)1233 923 y Ff(k)1306 908 y Fj(=>)e Fm(e)1473
923 y Ff(k)1516 908 y Fo(\)\()p Fm(r)1627 923 y Ff(k)1671
908 y Fm(;)15 b Fi(X)e Fo(\()p Fm(z)t(;)i Fl(F)d Fo(\()p
Fm(z)t Fo(\))p Fm(;)j Fl(F)d Fo(\()p Fm(w)2308 923 y
Ff(k)2355 908 y Fo(\)\)\))26 b Fm(,)-15 b Fi(!)25 b(S)7
b Fo(\()p Fm(v)s(;)15 b Fl(F)d Fo(\()p Fm(l)r(ast)p Fo(\()p
Fm(e)3132 923 y Ff(k)3177 908 y Fo(\)\)\))236 1075 y(By)30
b(Lemma)h(5.10,)418 1279 y(^)-54 b Fm(\032;)15 b Fi(X)e
Fo(\()p Fi(N)g Fo(\()p Fj(fn)31 b Fm(w)924 1294 y Ff(k)997
1279 y Fj(=>)f Fm(e)1165 1294 y Ff(k)1208 1279 y Fo(\)\()p
Fm(r)1319 1294 y Ff(k)1362 1279 y Fm(;)15 b Fi(X)e Fo(\()p
Fm(z)t(;)i Fl(F)d Fo(\()p Fm(z)t Fo(\))p Fm(;)j Fl(F)d
Fo(\()p Fm(w)1999 1294 y Ff(k)2046 1279 y Fo(\)\)\))p
Fm(;)j Fl(F)d Fo(\()p Fm(l)r(ast)p Fo(\()p Fm(e)2527
1294 y Ff(k)2572 1279 y Fo(\)\))p Fm(;)j Fl(F)d Fo(\()p
Fm(y)s Fo(\()p Fm(z)t Fo(\)\)\))29 b Fm(,)-15 b Fi(!)25
b(S)7 b Fo(\()p Fm(v)s(;)15 b Fl(F)d Fo(\()p Fm(y)s Fo(\()p
Fm(z)t Fo(\)\)\))236 1484 y(By)30 b(induction)e(h)m(yp)s(othesis)h(for)
h Fj(fn)g Fm(w)1560 1499 y Ff(k)1633 1484 y Fj(=>)g Fm(e)1801
1499 y Ff(k)1874 1484 y Fo(and)g(de\014nition)e(of)j([)-15
b([)30 b(])-15 b(],)31 b(w)m(e)g(ha)m(v)m(e)959 1688
y Fi(S)7 b Fo(\()p Fm(\032)p Fo(\))p Fm(;)15 b Fc(case)32
b(y)f Fi(C)5 b Fo(\()p Fl(F)12 b Fo(\()p Fm(y)s Fo(\))p
Fm(;)j Fj(fn)32 b Fm(w)1952 1703 y Ff(k)2025 1688 y Fj(=>)e
Fm(e)2193 1703 y Ff(k)2236 1688 y Fo(\))p Fm(r)2312 1703
y Ff(k)2370 1688 y Fm(:)15 b(:)g(:)26 b(,)-15 b Fi(!)25
b(S)7 b Fo(\()p Fm(v)s(;)15 b Fl(F)d Fo(\()p Fm(y)s Fo(\()p
Fm(z)t Fo(\)\)\))149 1929 y(W)-8 b(e)29 b(omit)e(details)f(of)i(the)f
(pro)s(of)g(for)g(tuple)f(selection)i(and)e(case)j(expressions;)e
(their)f(construction)h(follo)m(ws)8 2042 y(along)k(the)f(cases)i(giv)m
(en)e(ab)s(o)m(v)m(e.)3810 2155 y Fb(2)8 2442 y Fn(6)135
b(Example)8 2645 y Fo(Consider)27 b(the)j(example)e(in)g(Figure)g(8)h
(where)g(w)m(e)g(tak)m(e)i(the)e(\015o)m(w)g(to)g(b)s(e)g(b)s(e)f(the)h
(most)g(precise)g(one)g(consisten)m(t)8 2758 y(with)39
b(our)h(safet)m(y)h(conditions.)68 b(This)38 b(is)i(exactly)g(the)h
(\015o)m(w)f(whic)m(h)e(a)j(standard)e(closure)h(analysis)e(suc)m(h)i
(as)8 2870 y(0-CF)-10 b(A)31 b([)p Fk(?)q Fo(])g(w)m(ould)e(compute.)
149 2983 y(Consider)j(\014rst)g(the)i(translation)e(of)h(the)h(last)f
(expression,)g(the)g(call)g(to)h Fc(m)p Fo(.)49 b(Since)33
b Fc(m)g Fo(ma)m(y)h(b)s(e)e(b)s(ound)f(to)8 3096 y(a)k(pro)s(cedure)e
(corresp)s(onding)g(to)i Fm(\025)1271 3110 y Fh(2)1345
3096 y Fo(or)f Fm(\025)1513 3110 y Fh(4)1552 3096 y Fo(,)i(the)f(call)e
(m)m(ust)i(dispatc)m(h)e(appropriately)-8 b(.)52 b(F)-8
b(or)35 b(the)f(expression)8 3209 y(whic)m(h)h(de\014nes)g
Fc(h)p Fo(,)i(eac)m(h)g(branc)m(h)e(of)h(the)g Fc(case)p
Fo(-expression)f(m)m(ust)g(co)s(erce)i(a)f(pro)s(cedure)f(corresp)s
(onding)e(to)k(a)8 3322 y(kno)m(wn)30 b Fm(\025)p Fo(-expression)g(to)h
(one)f(whic)m(h)g(is)f(asso)s(ciated)i(with)e(an)h(elemen)m(t)h(of)f
Fi(f)p Fm(\025)2750 3336 y Fh(1)2790 3322 y Fm(;)15 b(\025)2883
3336 y Fh(3)2923 3322 y Fi(g)p Fo(.)149 3435 y(In)40
b(the)g(expression)f(de\014ning)g Fc(m)p Fo(,)k(b)s(oth)c(a)i(dispatc)m
(h)e(and)h(a)h(co)s(ercion)f(o)s(ccur:)60 b(\014rst)39
b(a)i(dispatc)m(h)f(based)8 3548 y(on)d(the)g Fm(\025)p
Fo(-expression)f(whic)m(h)g(pro)m(vides)g(the)h(co)s(de)g(for)g(the)g
Fc(h)g Fo(is)f(required.)59 b(Then,)37 b(eac)m(h)i(arm)d(of)h(this)f
(case)8 3661 y(expression)d(m)m(ust)g(co)s(erce)h(the)g(result)e(\(a)j
(function)d(with)g(kno)m(wn)h(co)s(de\))h(to)g(one)g(asso)s(ciated)g
(with)e(either)h Fm(\025)3839 3675 y Fh(2)8 3774 y Fo(or)e
Fm(\025)173 3788 y Fh(4)212 3774 y Fo(.)8 4060 y Fn(7)135
b(The)45 b(CPS)f(Language)8 4263 y Fo(MLton)22 b(translates)f(F)m(OL)g
(in)m(to)g(CPS,)f(another)h(\014rst-order)f(language.)38
b(Cps)20 b(is)g(a)h(high-lev)m(el)f(mac)m(hine)h(language)8
4376 y(from)44 b(whic)m(h)e(lo)s(cal)h(optimizations)g(and)g(mac)m
(hine)h(co)s(de)g(generation)g(can)g(b)s(e)f(directly)g(expressed.)80
b(Tw)m(o)8 4489 y(features)31 b(that)g(distinguish)c(CPS)i(from)h(F)m
(OL)h(are)f(its)g(\(1\))i(explicit)c(supp)s(ort)h(for)h(lo)s(ops)g
(\(via)g(con)m(tin)m(uations\),)8 4602 y(and)43 b(\(2\))i(transparen)m
(t)e(represen)m(tation)g(of)h(the)f(program's)h(exception)f(stac)m(k.)
81 b(Both)44 b(these)g(features)g(are)8 4715 y(in)m(tro)s(duced)33
b(in)f(the)i(CPS)f(language)h(to)h(exp)s(ose)e(lo)s(cal)g(con)m
(trol-\015o)m(w)i(prop)s(erties)d(of)i(an)g(F)m(OL)g(program)g(that)8
4828 y(m)m(ust)d(otherwise)e(b)s(e)h(inferred)e(b)m(y)j(MLton's)g(co)s
(de)f(generator.)149 4941 y(W)-8 b(e)34 b(c)m(ho)s(ose)f(to)g
(transform)e(F)m(OL)i(in)m(to)f(CPS)f(b)s(ecause)h(imp)s(ortan)m(t)f
(in)m(tra-pro)s(cedural)g(optimizations)g(b)s(e-)8 5053
y(come)46 b(p)s(ossible)c(once)j(the)g(distinction)d(b)s(et)m(w)m(een)k
(lo)s(cal)e(and)g(non-lo)s(cal)f(con)m(trol-\015o)m(w)j(is)e(exp)s
(osed)g(in)f(the)8 5166 y(in)m(termediate)30 b(represen)m(tation.)41
b(As)30 b(an)f(example,)h(the)h(translation)e(b)s(et)m(w)m(een)h(F)m
(OL)g(and)g(CPS)f(distinguishes)8 5279 y(b)s(et)m(w)m(een)i(tail)e(and)
g(non-tail)g(function)g(calls.)40 b(This)28 b(distinction)g(is)h(used)g
(b)m(y)h(the)g(compiler's)e(co)s(de-generator)1898 5532
y(16)p eop
%%Page: 17 17
17 16 bop 8 186 3870 4 v 8 3132 4 2946 v 37 274 a Fj(let)46
b(f)i(=)f(fn1)g(a)h(=>)f(fn2)g(b)g(=>)g(a)227 387 y(g)h(=)f(fn3)g(c)h
(=>)f(fn4)g(d)g(=>)g(d)227 500 y(h)h(=)f(case)g(_)g(of)562
613 y(_)g(=>)g(f)466 726 y(|)h(_)f(=>)g(g)227 839 y(m)h(=)f(h)h(13)227
951 y(_)g(=)f(m)h(7)40 1066 y Fo(\(a\))31 b(Source)f(program)139
1568 y Fl(F)12 b Fo(\()p Fj(f)q Fo(\))83 b(=)g Fi(f)p
Fj(fn1)p Fi(g)139 1680 y Fl(F)12 b Fo(\()p Fj(g)q Fo(\))83
b(=)g Fi(f)p Fj(fn3)p Fi(g)139 1793 y Fl(F)12 b Fo(\()p
Fj(h)q Fo(\))83 b(=)g Fi(f)p Fj(fn1)p Fm(;)15 b Fj(fn3)o
Fi(g)139 1906 y Fl(F)d Fo(\()p Fj(m)q Fo(\))83 b(=)g
Fi(f)p Fj(fn2)p Fm(;)15 b Fj(fn4)o Fi(g)277 2108 y Fo(\(b\))31
b(Flo)m(w)1674 274 y Fj(datatype)46 b(t1)h(=)h(C1)f(of)g(unit)g(\(*)g
(fn1)g(*\))1674 387 y(datatype)f(t2)h(=)h(C2)f(of)g(int)95
b(\(*)47 b(fn2)g(*\))1674 500 y(datatype)f(t3)h(=)h(C3)f(of)g(unit)g
(\(*)g(fn3)g(*\))1674 613 y(datatype)f(t4)h(=)h(C4)f(of)g(unit)g(\(*)g
(fn4)g(*\))1674 726 y(datatype)f(t5)h(=)h(C5)f(of)g(unit)g(\(*)g(fn1)g
(in)g({fn1,fn3})e(*\))2247 839 y(|)j(C6)f(of)g(unit)g(\(*)g(fn3)g(in)g
({fn1,fn3})e(*\))1674 951 y(datatype)h(t6)h(=)h(C7)f(of)g(int)95
b(\(*)47 b(fn2)g(in)g({fn2,fn4})e(*\))2247 1064 y(|)j(C8)f(of)g(unit)g
(\(*)g(fn4)g(in)g({fn2,fn4})e(*\))1674 1177 y(fun)i(F\(\(\),)g(a\))g(=)
g(C2)g(a)287 b(\(*)47 b(code)f(for)h(fn1)g(*\))1674 1290
y(fun)g(F'\(\(a\),)f(b\))h(=)h(a)334 b(\(*)47 b(code)f(for)h(fn2)g(*\))
1674 1403 y(fun)g(G\(\(\),)g(c\))g(=)g(C4)g(\(\))239
b(\(*)47 b(code)f(for)h(fn3)g(*\))1674 1516 y(fun)g(G'\(\(\),)f(d\))i
(=)f(d)382 b(\(*)47 b(code)f(for)h(fn4)g(*\))1674 1629
y(val)g(h)h(=)f(case)g(_)g(of)2199 1742 y(_)h(=>)f(case)g(f)g(of)g(C1)g
(r)h(=>)f(C5)g(r)2104 1855 y(|)g(_)h(=>)f(case)g(g)g(of)g(C3)g(r)h(=>)f
(C6)g(r)1674 1968 y(val)g(m)h(=)f(case)g(h)g(of)2199
2081 y(C5)h(r)f(=>)g(\(case)g(F)g(\(r,)g(13\))g(of)2677
2193 y(C2)g(r)g(=>)g(C7)h(r\))2104 2306 y(|)f(C6)h(r)f(=>)g(\(case)g(G)
g(\(r,)g(13\))g(of)2677 2419 y(C4)g(r)g(=>)g(C8)h(r\))1674
2532 y(val)f(_)h(=)f(case)g(m)g(of)2199 2645 y(C7)h(r)f(=>)g(F')g(\(r,)
g(7\))2104 2758 y(|)g(C8)h(r)f(=>)g(G')g(\(r,)g(7\))2077
2912 y Fo(\(c\))32 b(T)-8 b(arget)32 b(program)1464 3089
y(Figure)e(8:)41 b(Example)p 3875 3132 V 8 3135 3870
4 v 8 3392 a(to)d(generate)g(di\013eren)m(t)f(co)s(de)g(sequences)g
(for)g(the)g(t)m(w)m(o)h(cases.)62 b(T)-8 b(ail)35 b(calls)h(\(or)i(lo)
s(ops\))e(are)h(expressed)g(using)8 3505 y Fl(c)-5 b(ontinuations)p
Fo(,)32 b(lo)s(cal)d(functions)f(that)i(require)e(no)i(en)m(vironmen)m
(t.)40 b(Con)m(tin)m(uations)28 b(are)i(in)m(v)m(ok)m(ed)g(via)f(a)h
(jump)8 3618 y(rather)j(than)f(a)h(function)f(call)g(and)g(do)h(not)g
(require)e(allo)s(cation)h(of)h(a)g(new)f(stac)m(k)i(frame.)48
b(Besides)32 b(exp)s(osing)8 3731 y(lo)s(cal)26 b(con)m(trol-\015o)m(w)
h(information,)f(the)g(CPS)g(translation)f(also)h(directly)f(manages)j
(an)e(exception)g(stac)m(k.)41 b(CPS)8 3844 y(programs)d(m)m(ust)h
(explicitly)d(record)i(the)h(in)m(tro)s(duction)d(of)j(exception)g
(handlers,)f(and)g(remo)m(v)m(e)i(them)f(once)8 3957
y(con)m(trol)30 b(lea)m(v)m(es)h(the)e(dynamic)f(con)m(text)j
(surrounded)c(b)m(y)i(the)h(handler.)38 b(The)29 b(seman)m(tics)h(of)f
(exception)h(stac)m(ks)8 4070 y(in)f(CPS)h(mirrors)e(the)j(implemen)m
(tation)e(found)g(in)g(the)h(co)s(de)h(generator.)149
4183 y(Our)44 b(motiv)-5 b(ation)44 b(for)g(compiling)f(to)i(CPS)e(is)h
(not)h(no)m(v)m(el;)52 b(man)m(y)45 b(implemen)m(tations)e(of)i
(higher-order)8 4296 y(languages)31 b(p)s(erform)f(a)h(con)m(tin)m
(uation-passing)f(transformation)g(for)h(similar)d(reasons.)42
b(Ho)m(w)m(ev)m(er,)33 b(b)s(ecause)e(a)8 4408 y(CPS)k(program)g(is)g
(pro)s(duced)f(from)i(an)f(input)f(program)h(whic)m(h)g(is)g(already)g
(\014rst-order,)h(the)g(mec)m(hanics)g(of)8 4521 y(the)f
(transformation)f(are)h(quite)f(di\013eren)m(t)g(from)g(other)h
(implemen)m(tations.)51 b(Since)34 b(the)h(CPS)e(language)i(is)f(a)8
4634 y(\014rst-order)d(language)h(with)f(explicit)f(lo)s(cal)h(con)m
(trol-\015o)m(w,)i(a)f(v)-5 b(ariet)m(y)32 b(of)g(optimization)f(tec)m
(hniques)g(found)g(in)8 4747 y(other)39 b(\014rst-order)e(represen)m
(tations)h(can)h(b)s(e)e(directly)g(applied.)63 b(F)-8
b(or)39 b(example,)h(in)d(the)h(follo)m(wing)f(section,)8
4860 y(w)m(e)27 b(describ)s(e)e(ho)m(w)i(MLton)f(expresses)h
(tuple-\015attening,)f(an)h(imp)s(ortan)m(t)e(represen)m(tation)i
(transformation,)g(in)8 4973 y(this)j(language.)149 5086
y(The)25 b(CPS)e(language)j(is)d(giv)m(en)i(in)e(Figure)i
Fk(??)p Fo(.)39 b(It)25 b(shares)f(the)h(same)g(basic)g(structure)f(as)
h(an)f(F)m(OL)h(program)8 5199 y(with)34 b(some)i(notable)e
(di\013erences.)54 b(A)36 b(CPS)e(expression)f(consists)i(of)g(a)h
(series)e(of)h(declarations)g(follo)m(w)m(ed)f(b)m(y)1898
5532 y(17)p eop
%%Page: 18 18
18 17 bop 8 186 3870 4 v 8 2443 4 2258 v 656 390 a Fm(\034)93
b Fo(::=)84 b Fl(t)39 b Fi(j)30 b Fl(t)1148 404 y Ff(c)1214
390 y Fi(j)45 b Fm(:)15 b(:)g(:)47 b Fj(*)30 b Fm(\034)40
b Fj(*)45 b Fm(:)15 b(:)g(:)635 502 y Fl(P)92 b Fo(::=)84
b Fj(let)44 b Fm(:)15 b(:)g(:)47 b Fl(data)g Fm(:)15
b(:)g(:)46 b Fj(in)30 b(let)45 b Fm(:)15 b(:)g(:)46 b
Fl(fun)g Fm(:)15 b(:)g(:)46 b Fj(in)30 b Fl(e)g Fj(end)f(end)537
615 y Fl(data)84 b Fo(::=)g Fj(datatype)28 b Fl(t)39
b Fj(=)45 b Fm(:)15 b(:)g(:)47 b Fj(|)30 b Fm(C)36 b
Fj(of)30 b Fm(\034)56 b(:)15 b(:)g(:)579 728 y Fl(fun)82
b Fo(::=)i Fj(fun)29 b Fm(f)10 b Fj(\()k Fm(:)h(:)g(:)47
b(x)p Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))30 b(=)g Fm(e)665
841 y Fl(e)82 b Fo(::=)i Fm(k)837 954 y Fi(j)132 b Fj(let)29
b Fm(d)i Fj(in)f Fl(e)g Fj(end)659 1067 y Fm(d)83 b Fo(::=)h
Fm(x)30 b Fj(=)g Fm(b)837 1180 y Fi(j)132 b Fj(handlerPush\()l
Fm(j)5 b Fj(\))837 1293 y Fi(j)132 b Fj(handlerPop)837
1406 y Fi(j)g Fj(label)29 b Fm(j)5 b Fj(\()15 b Fm(:)g(:)g(:)47
b(x)p Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))30 b(=)g Fm(e)667
1519 y(b)83 b Fo(::=)h Fm(C)7 b Fj(\()14 b Fm(:)h(:)g(:)47
b(y)s Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))837 1632 y Fi(j)132
b Fj(#)o Fm(i)1072 1646 y Ff(C)1162 1632 y Fm(y)837 1744
y Fi(j)g Fj(\()15 b Fm(:)g(:)g(:)46 b(y)s Fj(,)f Fm(:)15
b(:)g(:)h Fj(\))837 1857 y Fi(j)132 b Fj(#)o Fm(i)31
b(y)656 1970 y(k)86 b Fo(::=)e Fm(g)s Fj(\()15 b Fm(:)g(:)g(:)47
b(x)p Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))837 2083 y Fi(j)132
b Fj(case)29 b Fm(x)h Fj(of)45 b Fm(:)15 b(:)g(:)47 b
Fj(|)30 b Fm(C)36 b Fj(=>)30 b Fm(j)51 b(:)15 b(:)g(:)660
2196 y(g)86 b Fo(::=)e Fj(tail\()n Fm(f)10 b Fj(\))30
b Fi(j)g Fj(nonTail\()n Fm(f)10 b Fj(,)29 b Fm(j)5 b
Fj(\))31 b Fi(j)g Fj(jump\()n Fm(j)5 b Fj(\))31 b Fi(j)f
Fj(return)f Fi(j)i Fj(raise)1549 2401 y Fo(Figure)e(9:)42
b(CPS)p 3875 2443 V 8 2446 3870 4 v 8 2704 a(a)j Fl(tr)-5
b(ansfer)45 b Fo(statemen)m(t.)84 b(This)42 b(statemen)m(t)k(declares)d
(the)i(action)f(to)h(b)s(e)e(tak)m(en)i(up)s(on)d(ev)-5
b(aluation)44 b(of)g(the)8 2817 y(declarations.)64 b(An)37
b(action)i(is)e(either)h(a)g(transfer)g(of)g(con)m(trol)h(to)g(another)
f(pro)s(cedure)f(or)h(con)m(tin)m(uation,)i(or)8 2930
y(a)d(case)f(dispatc)m(h)g(to)g(one)g(of)g(a)h(series)e(of)h(lo)s(cal)f
(con)m(tin)m(uations.)57 b(Case)36 b(expressions)e(represen)m(t)i(join)
f(p)s(oin)m(ts.)8 3043 y(T)-8 b(op-lev)m(el)40 b(functions)d(can)j(b)s
(e)e(in)m(v)m(ok)m(ed)i(either)e(as)i(a)f(tail-)g(or)g(non-tail)f
(call,)j(although)e(con)m(tin)m(uations)g(are)8 3155
y(alw)m(a)m(ys)d(executed)f(via)f(jumps.)52 b(Both)36
b(con)m(tin)m(uations)e(and)g(top-lev)m(el)h(functions)e(ma)m(y)j
(return)d(con)m(trol)i(bac)m(k)8 3268 y(to)c(their)f(caller,)g(raise)g
(exceptions,)g(or)h(halt.)149 3381 y(Figure)41 b(10)h(presen)m(ts)g
(the)f(translation)f(from)h(F)m(OL)h(programs)f(to)h(CPS)e(ones.)74
b(Giv)m(en)41 b(a)h(list)d(of)j(F)m(OL)8 3494 y(declarations)i(and)f(a)
h(CPS)f(transfer)g(function,)j(the)e(translation)f(returns)g(a)h(new)f
(CPS)g(expression)g(that)8 3607 y(re\015ects)31 b(the)g(transformation)
e(of)i(the)g(F)m(OL)f(declarations)g(to)h(use)f(explicit)f(con)m(tin)m
(uations:)1056 3829 y Fi(C)5 b Fo(\()p Fi(\017)p Fm(;)46
b Fi(\017)p Fo(\))26 b(:)g Fl(F)n(OL)32 b(Exp)21 b Fi(\002)f
Fl(CPS)32 b(Goto)27 b Fi(!)55 b Fl(CPS)33 b(Exp)149 4033
y Fo(The)d(translation)g(of)g(F)m(OL)h(expression)e Fl(e)h
Fo(is)g Fi(C)5 b Fo(\()p Fl(e)p Fm(;)46 b Fj(return)n
Fo(\))149 4146 y(Rule)38 b(3)h(giv)m(es)g(the)g(de\014nition)d(of)i(a)h
(non-tail)f(call:)56 b(a)39 b(function)e(application)g(follo)m(w)m(ed)i
(b)m(y)f(subsequen)m(t)8 4259 y(declarations)29 b(is)g(translated)g(to)
h(a)g(non-tail)e(call.)40 b(The)29 b(call)f(ev)-5 b(aluates)30
b(the)g(function)e(and)h(supplies)e(its)h(result)8 4372
y(to)i(a)f(con)m(tin)m(uation)g(whic)m(h)f(encapsulates)g(the)h
(declarations)g(follo)m(wing)e(the)i(call.)40 b(Rule)28
b(4)h(de\014nes)f(a)h(tail-call:)8 4485 y(if)38 b(a)h(function)e(is)g
(applied)g(with)g(no)h(subsequen)m(t)g(declarations,)j(and)c(if)h(its)g
(result)f(is)h(the)h(return)e(v)-5 b(alue)38 b(of)8 4598
y(the)33 b(enclosing)f(expression,)h(the)g(application)e(is)h(implemen)
m(ted)f(as)i(a)h(tail-call.)47 b(Similarly)-8 b(,)30
b(Rule)i(5)h(presen)m(ts)8 4711 y(the)e(translation)e(of)h(a)g(case)i
(expression)d(whose)g(result)g(is)h(the)g(return)f(v)-5
b(alue)30 b(of)g(the)g(enclosing)f(con)m(text.)43 b(The)8
4824 y(b)s(o)s(dy)34 b(in)g(eac)m(h)i(arm)f(of)g(the)g(case)h(is)e
(encapsulated)h(within)d(a)k(lo)s(cal)e(con)m(tin)m(uation;)k(the)d(v)
-5 b(alue)34 b(returned)g(b)m(y)8 4937 y(the)28 b(case)h(is)e(the)i(v)
-5 b(alue)27 b(returned)g(b)m(y)h(the)g(b)s(o)s(dy)e(in)h(eac)m(h)i
(arm.)40 b(Rule)27 b(6)h(de\014nes)f(the)h(transformation)f(for)h(case)
8 5049 y(expressions)e(when)h(used)g(in)f(a)i(non-tail)f(con)m(text.)41
b(Rules)27 b(7,)h(8,)h(and)e(9)h(concern)g(the)g(translation)e(of)i
(raise)f(and)8 5162 y(handler)i(expressions.)41 b(Their)29
b(translation)h(also)h(distinguishes)c(b)s(et)m(w)m(een)32
b(handler)d(expressions)g(used)h(in)g(tail)8 5275 y(and)g(non-tail)f
(con)m(texts.)1898 5532 y(18)p eop
%%Page: 19 19
19 18 bop 8 186 3870 4 v 8 3610 4 3424 v 348 386 a Fo(1.)46
b Fi(C)5 b Fo(\()p Fm(x;)46 b(g)s Fo(\))26 b(=)f Fm(g)s
Fj(\()q Fm(x)p Fj(\))348 515 y Fo(2.)46 b Fi(C)5 b Fo(\()p
Fj(let)36 b Fm(x)g Fj(=)g Fm(f)10 b Fj(\()k Fm(:)h(:)g(:)53
b(y)s Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))36 b(in)g Fl(e)g
Fj(end)o Fm(;)52 b(g)s Fo(\))36 b(=)f Fj(let)h Fm(d)g
Fj(in)g Fm(g)2625 482 y Fg(00)2668 515 y Fj(\()15 b Fm(:)g(:)g(:)53
b(y)s Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))36 b(end)o Fo(,)464
628 y(where)42 b(\()p Fm(g)820 595 y Fg(0)844 628 y Fm(;)15
b(d)p Fo(\))46 b(=)f Fi(J)16 b Fo(\()p Fm(x;)f Fl(e)q
Fm(;)g(g)s Fo(\))43 b(and)f Fm(g)1775 595 y Fg(00)1863
628 y Fo(=)j Fj(tail\()n Fm(f)10 b Fj(\))41 b Fo(if)h
Fm(g)2503 595 y Fg(0)2572 628 y Fo(=)i Fj(return)d Fo(and)g
Fm(g)3250 595 y Fg(00)3339 628 y Fo(=)464 741 y Fj(nonTail\()n
Fm(f)10 b Fj(,)29 b Fm(j)5 b Fj(\))31 b Fo(if)e Fm(g)1228
708 y Fg(0)1277 741 y Fo(=)c Fj(jump\()o Fm(j)5 b Fj(\))p
Fo(.)348 871 y(3.)46 b Fi(C)5 b Fo(\()p Fj(let)30 b Fm(x)g
Fj(=)g Fm(C)37 b(y)c Fj(in)d Fl(e)g Fj(end)o Fm(;)46
b(g)s Fo(\))26 b(=)f Fj(let)k Fm(x)i Fj(=)f Fm(C)7 b
Fj(\()o Fm(y)s Fj(\))30 b(in)g Fi(C)5 b Fo(\()p Fl(e)p
Fm(;)46 b(g)s Fo(\))31 b Fj(end)348 1000 y Fo(4.)46 b
Fi(C)5 b Fo(\()p Fj(let)30 b Fm(x)g Fj(=)g(case)f Fm(y)k
Fj(of)45 b Fm(:)15 b(:)g(:)47 b Fj(|)30 b Fm(C)1621 1014
y Ff(i)1679 1000 y Fm(z)1721 1014 y Ff(i)1780 1000 y
Fj(=>)g Fl(e)1948 1014 y Ff(i)2021 1000 y Fm(:)15 b(:)g(:)47
b Fj(in)30 b Fl(e)g Fj(end)o Fm(;)46 b(g)s Fo(\))26 b(=)464
1113 y(let)k(\()p Fm(g)676 1080 y Fg(0)700 1113 y Fm(;)15
b(d)p Fo(\))27 b(=)e Fi(J)16 b Fo(\()p Fm(x;)f Fl(e)q
Fm(;)g(g)s Fo(\))505 1226 y Fj(let)60 b Fm(d)713 1339
y(:)15 b(:)g(:)47 b Fj(label)29 b Fm(j)1171 1353 y Ff(i)1200
1339 y Fj(\()o Fm(z)1293 1306 y Fg(0)1289 1363 y Ff(i)1318
1339 y Fj(\))h(=)g(let)f Fm(z)1689 1353 y Ff(i)1748 1339
y Fj(=)h(#)p Fo(1)1919 1353 y Ff(C)1969 1363 y Fa(i)2030
1339 y Fm(z)2076 1306 y Fg(0)2072 1363 y Ff(i)2131 1339
y Fj(in)g Fi(C)5 b Fo(\()p Fl(e)p Fm(;)46 b(g)2504 1306
y Fg(0)2528 1339 y Fo(\))30 b Fj(end)45 b Fm(:)15 b(:)g(:)505
1452 y Fj(in)30 b(case)f Fm(y)k Fj(of)45 b Fm(:)15 b(:)g(:)47
b Fj(|)30 b Fm(C)37 b Fj(=>)29 b Fm(j)51 b(:)15 b(:)g(:)505
1565 y Fj(end)2971 1226 y Fo(.)348 1692 y(5.)46 b Fi(C)5
b Fo(\()p Fj(let)22 b Fm(x)g Fj(=)g(\()15 b Fm(:)g(:)g(:)39
b(y)s Fj(,)e Fm(:)15 b(:)g(:)h Fj(\))22 b(in)g Fl(e)g
Fj(end)p Fm(;)37 b(g)s Fo(\))27 b(=)e Fj(let)c Fm(x)h
Fj(=)h(\()14 b Fm(:)h(:)g(:)39 b(y)s Fj(,)e Fm(:)15 b(:)g(:)h
Fj(\))22 b(in)g Fi(C)5 b Fo(\()p Fl(e)q Fm(;)37 b(g)s
Fo(\))24 b Fj(end)o Fo(.)348 1821 y(6.)46 b Fi(C)5 b
Fo(\()p Fj(let)30 b Fm(x)g Fj(=)g(#)p Fm(i)g(y)k Fj(in)29
b Fl(e)h Fj(end)p Fm(;)45 b(g)s Fo(\))27 b(=)e Fj(let)k
Fm(x)h Fj(=)g(#)p Fm(i)h(y)i Fj(in)d Fi(C)5 b Fo(\()p
Fl(e)p Fm(;)46 b(g)s Fo(\))31 b Fj(end)o Fo(.)348 1951
y(7.)46 b Fi(C)5 b Fo(\()p Fj(let)30 b Fm(x)g Fj(=)g(raise)f
Fm(y)k Fj(in)d Fl(e)g Fj(end)o Fm(;)46 b(g)s Fo(\))26
b(=)f Fj(raise)o(\()o Fm(y)s Fj(\))348 2080 y Fo(8.)46
b Fi(C)5 b Fo(\()p Fj(let)30 b Fm(x)g Fj(=)g Fm(e)928
2094 y Fh(1)998 2080 y Fj(handle)f Fm(y)k Fj(=>)d Fm(e)1561
2094 y Fh(2)1631 2080 y Fj(in)g Fl(e)g Fj(end)o Fm(;)46
b(g)s Fo(\))26 b(=)464 2193 y(let)k(\()p Fm(g)676 2160
y Fg(0)700 2193 y Fm(;)15 b(d)p Fo(\))27 b(=)e Fi(J)16
b Fo(\()p Fm(x;)f Fl(e)q Fm(;)g(g)s Fo(\))505 2306 y
Fj(let)60 b Fm(d)713 2419 y Fj(label)29 b(h\()p Fm(y)s
Fj(\))h(=)g(let)f(handlerPop)f(in)i Fi(C)5 b Fo(\()p
Fm(e)2219 2433 y Fh(2)2259 2419 y Fm(;)46 b(g)2376 2386
y Fg(0)2399 2419 y Fo(\))31 b Fj(end)713 2532 y(handlerPush\()m(h\))713
2645 y(label)e(p\(z\))h(=)g(let)f(handlerPop)f(in)h Fm(g)2134
2612 y Fg(0)2158 2645 y Fj(\(z\))h(end)505 2758 y(in)g
Fi(C)5 b Fo(\()p Fm(e)761 2772 y Fh(1)801 2758 y Fm(;)46
b Fj(jump\()o(p)o(\))p Fo(\))505 2871 y Fj(end)348 3125
y Fo(1.)g Fi(J)16 b Fo(\()p Fm(x;)f(x;)g Fj(return)p
Fo(\))25 b(=)g(\()p Fj(return)o Fm(;)15 b Fo([]\).)348
3271 y(2.)46 b Fi(J)16 b Fo(\()p Fm(x;)f Fl(e)q Fm(;)g(g)s
Fo(\))26 b(=)f(\()p Fj(jump\()o(j\))p Fm(;)15 b Fj(label)29
b(j\()p Fm(x)p Fj(\))h(=)g Fi(C)5 b Fo(\()p Fl(e)p Fm(;)46
b(g)s Fo(\)\))1001 3567 y(Figure)30 b(10:)42 b(T)-8 b(ranslation)29
b(from)h(F)m(OL)g(to)h(CPS.)p 3875 3610 V 8 3613 3870
4 v 8 3870 a Fn(8)135 b(Seman)l(tics)8 4073 y Fo(Since)21
b(the)g(CPS)f(language)i(is)e(in)m(tended)g(to)i(re\015ect)g(a)g(lo)m
(w-lev)m(el)f(virtual)e(mac)m(hine,)k(w)m(e)f(presen)m(t)f(its)g
(de\014nition)e(as)8 4186 y(a)i(small-step)e(op)s(erational)h(seman)m
(tics.)37 b(The)20 b(seman)m(tics)h(de\014nes)e(a)i(mac)m(hine)f(that)h
(op)s(erates)g(o)m(v)m(er)g(expressions,)8 4299 y(en)m(vironmen)m(ts,)
30 b(handler)f(stac)m(ks,)j(and)e(con)m(tin)m(uations:)930
4495 y Fl(CPS)j(State)84 b Fo(::=)f Fl(Exp)20 b Fi(\002)g
Fl(Env)g Fi(\002)g Fl(L)-5 b(ab)g(el)2356 4459 y Fg(\003)2416
4495 y Fi(\002)20 b Fl(Continuation)3029 4460 y Fg(\003)1186
4608 y Fl(Env)83 b Fo(::=)g Fl(V)-7 b(ar)26 b Fi(!)f
Fl(V)-7 b(alue)818 4721 y(Continuation)85 b Fo(::=)e
Fl(Env)20 b Fi(\002)g Fl(L)-5 b(ab)g(el)21 b Fi(\002)f
Fl(L)-5 b(ab)g(el)2407 4684 y Fg(\003)149 4923 y Fo(The)38
b(seman)m(tics)g(is)g(giv)m(en)g(in)f(Figure)g(11.)65
b(W)-8 b(e)40 b(assume)d(an)i(initial)c(state)k Fi(h)15
b Fm(e;)32 b(\032)3014 4937 y Fh(0)3053 4923 y Fm(;)f
Fo([)38 b(])p Fm(;)31 b Fo([)38 b(])15 b Fi(i)39 b Fo(assuming)e(a)8
5036 y(distinguished)27 b(function)i(named)h Fc(main)g
Fo(suc)m(h)g(that)1513 5258 y Fc(fun)g(main)o Fo(\(\))c(=)f
Fm(e)h Fi(2)f Fl(Pr)-5 b(o)g(g)1898 5532 y Fo(19)p eop
%%Page: 20 20
20 19 bop 8 186 3870 4 v 8 2292 4 2106 v 78 390 a Fo(\(1\))32
b Fi(h)15 b Fc(let)g Fm(x)25 b Fo(=)g Fm(b)31 b(d)675
357 y Fg(\003)730 390 y Fc(in)14 b Fm(t;)31 b(\032;)f(H)r(;)h(K)22
b Fi(i)j(\000)-15 b(!)25 b(h)15 b Fc(let)h Fm(d)1677
357 y Fg(\003)1731 390 y Fc(in)f Fm(t;)31 b(\032)p Fo([)p
Fi(P)7 b Fo(\()p Fm(b;)15 b(\032)p Fo(\))27 b Fi(7!)e
Fm(\032)p Fo(])p Fm(;)31 b(H)r(;)f(K)22 b Fi(i)78 502
y Fo(\(2\))32 b Fi(h)15 b Fc(let)g Fj(handlerPush\()m
Fm(h)p Fj(\))30 b Fm(d)1135 469 y Fg(\003)1190 502 y
Fc(in)15 b Fm(t;)30 b(\032;)h(H)r(;)f(K)22 b Fi(i)k(\000)-16
b(!)26 b(h)15 b Fc(let)g Fm(d)2137 469 y Fg(\003)2192
502 y Fc(in)g Fm(t;)30 b(\032;)h(h)25 b Fo(::)h Fm(H)r(;)31
b(K)22 b Fi(i)78 615 y Fo(\(3\))32 b Fi(h)15 b Fc(let)g
Fj(handlerPop)28 b Fm(d)940 582 y Fg(\003)995 615 y Fc(in)14
b Fm(t;)31 b(\032;)f(h)c Fo(::)g Fm(H)r(;)k(K)22 b Fi(i)k(\000)-16
b(!)25 b(h)15 b Fc(let)h Fm(d)2095 582 y Fg(\003)2150
615 y Fc(in)f Fm(t;)30 b(\032;)h(H)r(;)f(K)22 b Fi(i)78
728 y Fo(\(4\))32 b Fi(h)15 b Fc(let)g(fun)g Fm(:)g(:)g(:)46
b(d)720 695 y Fg(\003)775 728 y Fc(in)15 b Fm(t;)31 b(\032;)f(H)r(;)h
(K)21 b Fi(i)26 b(\000)-15 b(!)25 b(h)15 b Fc(let)g Fm(d)1722
695 y Fg(\003)1777 728 y Fc(in)g Fm(t;)31 b(\032;)f(H)r(;)h(K)21
b Fi(i)78 841 y Fo(\(5\))32 b Fi(h)15 b Fc(let)g Fi(h)g(i)g
Fc(in)h Fj(tail\()o Fm(f)10 b Fj(\))o Fo(\()p Fm(x)998
855 y Fh(1)1037 841 y Fm(;)15 b(:)g(:)g(:)i(;)e(x)1291
855 y Ff(n)1338 841 y Fo(\))p Fm(;)31 b(\032;)g Fo([)f(])p
Fm(;)h(K)22 b Fi(i)k(\000)-16 b(!)25 b(h)15 b Fm(e;)32
b Fo([)p Fm(y)2218 855 y Ff(i)2271 841 y Fi(7!)25 b Fm(\032)p
Fo(\()p Fm(x)2521 855 y Ff(i)2550 841 y Fo(\)])p Fm(;)31
b Fo([)f(])p Fm(;)h(K)22 b Fi(i)198 954 y Fo(where)30
b Fc(fun)g Fm(f)10 b Fo(\()p Fm(y)748 968 y Fh(1)787
954 y Fm(;)15 b(:)g(:)g(:)h(;)f(y)1033 968 y Ff(n)1080
954 y Fo(\))26 b(=)f Fm(e)g Fi(2)g Fl(Pr)-5 b(o)g(g)78
1067 y Fo(\(6\))32 b Fi(h)15 b Fc(let)g Fi(h)g(i)g Fc(in)h
Fj(nonTail\()n Fm(f)10 b Fj(,)29 b Fm(j)5 b Fj(\))p Fo(\()p
Fm(x)1261 1081 y Fh(1)1301 1067 y Fm(;)15 b(:)g(:)g(:)i(;)e(x)1555
1081 y Ff(n)1602 1067 y Fo(\))p Fm(;)31 b(\032;)g(H)r(;)f(K)22
b Fi(i)k(\000)-16 b(!)25 b(h)15 b Fm(e;)32 b Fo([)p Fm(y)2479
1081 y Ff(i)2532 1067 y Fi(7!)25 b Fm(\032)p Fo(\()p
Fm(x)2782 1081 y Ff(i)2811 1067 y Fo(\)])p Fm(;)31 b
Fo([)f(])p Fm(;)h Fi(h)p Fm(\032;)15 b(j;)g(H)7 b Fi(i)27
b Fo(::)f Fm(K)c Fi(i)198 1180 y Fo(where)30 b Fc(fun)p
Fm(f)10 b Fo(\()p Fm(y)718 1194 y Fh(1)756 1180 y Fm(;)15
b(:)g(:)g(:)i(;)e(y)1003 1194 y Ff(n)1050 1180 y Fo(\))25
b(=)g Fm(e)h Fi(2)f Fl(Pr)-5 b(o)g(g)78 1293 y Fo(\(7\))32
b Fi(h)15 b Fc(let)g Fi(h)g(i)g Fc(in)h Fj(jump\()o Fm(j)5
b Fj(\))p Fo(\()p Fm(x)986 1307 y Fh(1)1026 1293 y Fm(;)15
b(:)g(:)g(:)h(;)f(x)1279 1307 y Ff(n)1327 1293 y Fo(\))p
Fm(;)31 b(\032;)f(H)r(;)h(K)21 b Fi(i)26 b(\000)-15 b(!)25
b(h)15 b Fm(e;)31 b(\032)p Fo([)p Fm(y)2250 1307 y Ff(i)2303
1293 y Fi(7!)26 b Fm(\032)p Fo(\()p Fm(x)2554 1307 y
Ff(i)2582 1293 y Fo(\)])p Fm(;)31 b(H)r(;)g(K)22 b Fi(i)198
1406 y Fo(where)30 b Fj(label)f Fm(j)5 b Fo(\()p Fm(y)852
1420 y Fh(1)892 1406 y Fm(;)15 b(:)g(:)g(:)h(;)f(y)1138
1420 y Ff(n)1185 1406 y Fo(\))31 b Fj(=)f Fm(e)c Fi(2)f
Fl(Pr)-5 b(o)g(g)78 1519 y Fo(\(8\))32 b Fi(h)15 b Fc(let)g
Fi(h)g(i)g Fc(in)h Fj(return)n Fo(\()p Fm(x)943 1533
y Fh(1)983 1519 y Fm(;)f(:)g(:)g(:)i(;)e(x)1237 1533
y Ff(n)1284 1519 y Fo(\))p Fm(;)31 b(\032;)f Fo([)h(])p
Fm(;)g Fi(h)p Fm(\032)1696 1486 y Fg(0)1719 1519 y Fm(;)15
b Fo(\021)p Fm(;)g(H)1910 1486 y Fg(0)1934 1519 y Fi(i)26
b Fo(::)g Fm(K)c Fi(i)j(\000)-15 b(!)25 b(h)15 b Fm(e;)31
b(\032)2597 1486 y Fg(0)2621 1519 y Fo([)p Fm(y)2691
1533 y Ff(i)2744 1519 y Fi(7!)25 b Fm(\032)p Fo(\()p
Fm(x)2994 1533 y Ff(i)3022 1519 y Fo(\)])p Fm(;)32 b(H)3222
1486 y Fg(0)3245 1519 y Fm(;)e(K)22 b Fi(i)198 1632 y
Fo(where)30 b Fj(label)f Fm(j)5 b Fo(\()p Fm(y)852 1646
y Fh(1)892 1632 y Fm(;)15 b(:)g(:)g(:)h(;)f(y)1138 1646
y Ff(n)1185 1632 y Fo(\))31 b Fj(=)f Fm(e)c Fi(2)f Fl(Pr)-5
b(o)g(g)78 1744 y Fo(\(9\))32 b Fi(h)15 b Fc(let)g Fi(h)g(i)g
Fc(in)h Fj(raise)29 b Fo(\()p Fm(x)926 1758 y Fh(1)966
1744 y Fm(;)15 b(:)g(:)g(:)h(;)f(x)1219 1758 y Ff(n)1267
1744 y Fo(\))p Fm(;)30 b(\032;)h(j)g Fo(::)26 b Fm(H)r(;)k(K)22
b Fi(i)k(\000)-16 b(!)25 b(h)15 b Fm(e;)32 b(\032)p Fo([)p
Fm(y)2334 1758 y Ff(i)2387 1744 y Fi(7!)25 b Fm(\032)p
Fo(\()p Fm(x)2637 1758 y Ff(i)2666 1744 y Fo(\)])p Fm(;)31
b(H)r(;)f(K)22 b Fi(i)198 1857 y Fo(where)30 b Fj(label)f
Fm(j)5 b Fo(\()p Fm(y)852 1871 y Fh(1)892 1857 y Fm(;)15
b(:)g(:)g(:)h(;)f(y)1138 1871 y Ff(n)1185 1857 y Fo(\))31
b Fj(=)f Fm(e)c Fi(2)f Fl(Pr)-5 b(o)g(g)78 1970 y Fo(\(10\))32
b Fi(h)15 b Fc(let)h Fi(h)f(i)g Fc(in)g Fj(raise)29 b
Fo(\()p Fm(x)971 1984 y Fh(1)1011 1970 y Fm(;)15 b(:)g(:)g(:)i(;)e(x)
1265 1984 y Ff(n)1312 1970 y Fo(\))p Fm(;)31 b(\032;)g
Fo([)f(])p Fm(;)h Fi(h)p Fm(\032)1724 1937 y Fg(0)1748
1970 y Fm(;)15 b(j;)g(H)7 b Fi(i)26 b Fo(::)g Fm(K)c
Fi(i)k(\000)-16 b(!)25 b(h)15 b Fc(let)h Fi(h)f(i)g Fc(in)h
Fj(raise)29 b Fo(\()p Fm(x)3118 1984 y Fh(1)3158 1970
y Fm(;)15 b(:)g(:)g(:)h(;)f(x)3411 1984 y Ff(n)3459 1970
y Fo(\))p Fm(;)30 b(\032)3596 1937 y Fg(0)3620 1970 y
Fm(;)g(H)r(;)h(K)22 b Fi(i)1319 2249 y Fo(Figure)30 b(11:)42
b(CPS)29 b(seman)m(tics)p 3875 2292 V 8 2295 3870 4 v
149 2552 a(There)35 b(are)h(t)m(w)m(o)h(categories)g(of)e(rules,)h(one)
f(for)g(declarations)g(\(Rules)g(1-4\))i(and)d(the)i(other)g(for)f
(transfer)8 2665 y(expressions)c(\(Rules)h(5-10\).)49
b(Rule)31 b(\(1\))i(sp)s(eci\014es)e(that)i Fc(let)p
Fo(-bindings)d(are)i(ev)-5 b(aluated)33 b(left-to-righ)m(t,)h(and)e
(that)8 2778 y(simple)f(bindings)f(extend)i(the)h(en)m(vironmen)m(t)g
(with)e(the)i(appropriate)f(binding-v)-5 b(alue)30 b(\()p
Fi(P)7 b Fo(\(\()p Fm(;)15 b(b)p Fo(\))p Fm(;)g(\032)p
Fo(\))36 b(ev)-5 b(aluates)8 2891 y(a)40 b(simple)e(binding)f(in)h(en)m
(vironmen)m(t)h Fm(\032)p Fo(\).)69 b(Rules)39 b(\(2\))h(and)g(\(3\))g
(push)e(and)h(p)s(op)g(handlers)f(on)h(the)h(handler)8
3004 y(stac)m(k.)47 b(Rule)31 b(4)h(indicates)f(that)h(ev)-5
b(aluating)32 b(a)g(top-lev)m(el)g(function)e(declaration)i(in)m(v)m
(olv)m(es)g(no)f(c)m(hange)i(to)g(the)8 3117 y(en)m(vironmen)m(t,)41
b(handler,)f(or)f(con)m(tin)m(uation)g(stac)m(k.)68 b(Rules)37
b(\(5\))k(and)d(\(6\))i(de\014ne)e(the)h(b)s(eha)m(vior)f(of)i(tail)e
(and)8 3230 y(non-tail)c(calls)f(resp)s(ectiv)m(ely)-8
b(.)53 b(A)34 b(tail-call)f(simply)f(causes)j(con)m(trol)g(to)g
(transfer)f(to)h(its)e(argumen)m(t)i(function.)8 3343
y(The)c(handler)f(stac)m(k)k(de\014nes)c(a)i(lo)s(cal)f(stac)m(k)j
(that)e(do)s(es)f(not)h(cross)g(non-lo)s(cal)f(transfer)g(b)s
(oundaries.)42 b(Hence,)8 3455 y(the)34 b(mac)m(hine)g(requires)e(that)
j(it)e(b)s(e)g(empt)m(y)h(when)f(the)h(tail)f(call)g(is)g(executed.)52
b(T)-8 b(o)34 b(execute)i(a)e(non-tail)f(call,)8 3568
y(the)26 b(mac)m(hine)f(extends)g(the)g(con)m(tin)m(uation)g(stac)m(k)i
(with)d(a)i(triple)d(indicating)g(the)j(en)m(vironmen)m(t)f(to)h(b)s(e)
e(restored)8 3681 y(up)s(on)h(return,)i(the)f(lab)s(el)f(of)i(the)f
(con)m(tin)m(uation)h(to)g(whic)m(h)e(con)m(trol)i(should)d(b)s(e)i
(transferred)g(up)s(on)e(return,)j(and)8 3794 y(the)c(curren)m(t)g
(handler)e(stac)m(k.)40 b(As)22 b(with)g(a)h(tail-call,)g(ev)-5
b(aluation)23 b(of)g(the)g(function)e(b)s(o)s(dy)g(b)s(egins)h(with)f
(an)i(empt)m(y)8 3907 y(handler)31 b(stac)m(k.)48 b(Rule)31
b(\(7\))j(ev)-5 b(aluates)33 b(a)g(lo)s(cal)e(jump.)46
b(Jumps)30 b(are)j(similar)d(to)j(tail-calls)e(except)i(there)g(is)e
(no)8 4020 y(requiremen)m(t)h(that)h(the)g(handler)e(stac)m(k)j(b)s(e)e
(empt)m(y)h(since)f(jumps)f(de\014ne)h(lo)s(cal)g(\(in)m(tra-pro)s
(cedural\))g(transfer)8 4133 y(p)s(oin)m(ts.)67 b(Rule)39
b(\(8\))h(de\014nes)f(return)g(op)s(erations.)67 b(The)39
b(con)m(tin)m(uation)g(to)i(whic)m(h)d(con)m(trol)i(returns,)h(from)e
(a)8 4246 y(function)26 b(call)h(is)f(found)g(on)h(the)g(top)g(of)h
(the)f(con)m(tin)m(uation)g(stac)m(k.)41 b(The)27 b(lo)s(cal)f(handler)
f(stac)m(k)k(is)d(also)h(restored)8 4359 y(prior)g(to)i(ev)-5
b(aluating)27 b(the)h(con)m(tin)m(uation.)40 b(Note)30
b(also)e(that)h(the)f(seman)m(tics)g(requires)f(the)h(lo)s(cal)g
(handler)e(stac)m(k)8 4472 y(to)31 b(b)s(e)e(empt)m(y)h(when)f(the)h
(op)s(eration)f(executes.)42 b(Rules)28 b(\(9\))j(and)f(\(10\))h
(de\014ne)e(non-lo)s(cal)g(transfer)g(op)s(erations)8
4585 y(initiated)g(when)g(an)i(exception)f(is)g(raised.)1898
5532 y(20)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF