%!PS-Adobe-2.0
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: manifest-types-popl.dvi
%%Pages: 14
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -o manifest-types-popl.ps
%+ manifest-types-popl.dvi
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 1993.11.29:1436
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
TeXDict begin 39158280 55380996 1000 600 600 (manifest-types-popl.dvi)
@start
%DVIPSBitmapFont: Fa lasy9 9 1
/Fa 1 51 df<003FB712E0B812F0A300F0C9FCB3B2B8FCA42C2C7AAF38>50
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb cmmi5 5 2
/Fb 2 116 df<3A0F01F807E03A3F87FE1FF83A33CE1F387C3A63D80F603CD8C3F013C0
01E01380D803C01300A22607801E5BA3EEF04048484814C0ED01E0EEE18016E3001E9039
7800FF00000C0130137C2A127D9133>109 D<137E3801FF80EA0381380703C0380E0780
EB0300EA0F80EA07F86CB4FC6C1380EA000FEA3003127812F8EB0700EAF00EEA7FFCEA1F
F012127C911C>115 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc cmbx9 9 23
/Fc 23 118 df<147814F81303131FEA03FFB5FCA3EAFC1F1200B3B2007FB512FEA41F31
7AB02C>49 D<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F00C7FCA9120FEA3FC0EA
7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C217AA019>58 D<ED1F80A24B7EA24B7EA34B7EA2
4A7FA34A7FA24A7F15CFA2020F7F1587021F801503023F80EC3E01A2027E80EC7C0002FC
804A137FA20101814A133F0103814A131FA249B67EA24981A290271F8000077F91C77EA2
4982013E80017E82017C80A201FC8249157FB500F0013FB512F0A43C347DB343>65
D<B712F8EEFF8017E017F8C69039E0007FFCEE0FFE707E701380A27013C0A218E0A718C0
A24C1380A24C13004C5AEE7FFC91B612F017C04CC7FC02E0C9FCB3B612E0A433337DB23C
80 D<003FB812F8A4D9F003EB801FD87F80ED03FC01001501007E1600007C177CA20078
173CA400F8173E48171EA4C71600B3A9011FB612F0A437327DB13E>84
D<EB7FFE0003B512E04814F8390FF00FFC391FF803FF806E138016C0157F6C5A6C5AEA01
80C8FCEC7FFF010FB5FC90B6FC0003EBF07F000F1300EA1FF8485A485A485A5BA315FF7F
007F5B6D4813E03A3FF80FBFFF000FB5121F0003EBFC0F39007FE00728217EA02B>97
D<EA01FC12FFA4120F1207ADEC07FC91387FFF8001FDB512E09039FFF00FF89138C007FC
91380003FE496D7E496D1380A217C0167FA217E0A917C0A216FF1780A26D4913006D495A
9138C007FC9039F3F01FF801E1B512E0D9C07F13809026800FF8C7FC2B347EB331>I<90
3807FF80013F13F090B512FC3903FE01FE4848487EEA0FF8EA1FF0EA3FE0A2007F6D5A49
6C5A153000FF91C7FCA9127F7FA2003FEC07807F6C6C130F000FEC1F00D807FE133E3903
FF80FCC6EBFFF8013F13E0010790C7FC21217DA027>I<ED01FC15FFA4150F1507ADEB07
FE90383FFFC790B512F70003EB01FF3907FC003F4848131F4848130F48481307A2127F5B
A212FFA9127FA27F123F150F6C6C131F6C6C133F6C6C497E2603FE03B512E0C6B512E701
3F1387903807FC072B347DB331>I<903803FF80013F13F090B512FC48EB03FE3907FC00
7F4848EB3F804848EB1FC05B003FEC0FE0127F5B16F012FF150790B6FCA301C0C8FCA412
7F7F123F16F06C7E000F14016C6CEB03E0D803FEEB0FC03A01FF807F806C6CB51200011F
13FC010313E024217EA029>I<EC3FE0903803FFF8010F13FC90383FF1FE90387FC3FFEB
FF83481303A2EA03FEEC01FEA2EC00781500A7B512FEA4D803FEC7FCB3A7387FFFF8A420
347EB31B>I<16F890390FFC07FE90387FFF9F48B6127F3907FC0FFC380FF003001F14FE
D9E001133E003FECFF1C1600A6001F5CEBF003000F5C3907FC0FF890B512E0486C1380D9
0FFCC7FC48C9FCA37F7F90B512F015FE6CECFF8016E06C15F06C15F84815FC121F393F80
001F48C7EA03FE481401481400A46C14016C6CEB03FC6C6CEB07F86C6CEB0FF0D80FFCEB
7FE00003B61280C6ECFE00010F13E028327EA12C>I<EA01FC12FFA4120F1207ADEC03FF
020F13C0023F13F09138FC0FF89039FDE007FCEBFFC04A6C7E1400A25BA25BB2B539E07F
FFF0A42C347DB331>I<EA03F0487E487E487EA66C5A6C5A6C5AC8FCA8EA01FC12FFA412
0F1207B3A5B512C0A412357DB418>I108 D<2703F803FEEB03FE00FF903B1FFFC01FFFC0027FD9E07F7F913BF81FF0F8
1FF0903CF9E00FF9E00FF8260FFBC0EBFBC06CB4486CB4486C7E02001400495CA3495CB2
B500E0B500E0B512E0A443217CA04A>I<3901F803FF00FF010F13C0023F13F09138FC0F
F89039F9E007FC380FFBC06CB4486C7E1400A25BA25BB2B539E07FFFF0A42C217DA031>
I<903803FF80011F13F090B512FE48EB01FF3A07FC007FC0D80FF0EB1FE0001F15F04913
0F003F15F8491307007F15FCA300FF15FEA8007F15FCA26D130F003F15F8001F15F06D13
1F6C6CEB3FE06C6CEB7FC03A01FF01FF006CEBFFFE013F13F80103138027217EA02C>I<
3901FC07FC00FF90387FFF8001FDB512E09039FFF01FF89138C007FC000F90380003FE6C
4880496D1380A26F13C0A3EE7FE0A9EEFFC0A34B1380A26D4913006D495A9138C00FFC91
38F03FF801FDB512E0D9FC7F1380DA0FF8C7FC91C9FCABB512E0A42B307EA031>I<3901
F81F8000FFEB7FF0ECFFF89038F9E3FC9038FBC7FE380FFF876C1307A213FEEC03FCEC01
F8EC0060491300B1B512F0A41F217EA024>114 D<9038FFE1C0000713FF5A383F803F38
7E000F14075A14037EA26C6CC7FC13FCEBFFE06C13FC806CEBFF80000F14C06C14E0C6FC
010F13F0EB007F140F00F0130714037EA26C14E06C13076CEB0FC09038C01F8090B51200
00F913FC38E03FE01C217DA023>I<133CA5137CA313FCA21201A212031207001FB51280
B6FCA3D807FCC7FCB0EC03C0A79038FE078012033901FF0F006C13FEEB3FFCEB0FF01A2F
7EAE22>I<D801FC14FE00FF147FA4000F140700071403B21507A2150F151F6C6C497E6C
6C01FB13F06CEBFFF3013F13C3903807FE032C217DA031>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd cmsy6 6 2
/Fd 2 49 df<136013701360A20040132000E0137038F861F0387E67E0381FFF803807FE
00EA00F0EA07FE381FFF80387E67E038F861F038E060700040132000001300A213701360
14157B9620>3 D<EA01E0EA03F0A4EA07E0A213C0120FA21380A2EA1F00A2121EA2123E
123CA25AA3127012F05A12600C1A7E9B12>48 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe cmsy9 9 13
/Fe 13 107 df<D97F8015402601FFE015E0000713F84813FE486D7E486E13019026807F
F014C0277E001FFC13030078D907FF130F007001019038C03F8000F06D6CB5FC486E1400
030F5B03035B030013F00040ED3FC0CCFCA4D97F8015402601FFE015E0000713F84813FE
486D7E486E13019026807FF014C0277E001FFC13030078D907FF130F007001019038C03F
8000F06D6CB5FC486E1400030F5B03035B030013F00040ED3FC033247CA43C>25
D<14E080A213015CA213035C1307495AA249CCFC133E137E5B485A485AEA0FE0003FBA12
E0BB12F0A2003F19E0D80FE0CCFCEA03F06C7E6C7E137E133E7F6D7EA26D7E1303801301
A2801300A25C44287CA64D>32 D<187018F0A2841878A2187C183C183E84A2727E727E85
727E727E727E197F007FBA12C0BB12F0A26C19C0CCEA7F0019FC4E5A4E5A4E5A614E5A4E
C7FCA2183E183C187C1878A218F860A2187044287CA64D>I<91383FFFF849B512FC1307
011F14F8D93FE0C7FC01FFC8FCEA01FCEA03F0485A485A5B48C9FC5A123E5AA21278A212
F8A25AB712F816FCA216F800F0C9FC7EA21278A2127CA27E123F7E6C7E7F6C7E6C7EEA01
FC6CB4FCEB3FE06DB512F8010714FC1301D9003F13F8262E7AA933>50
D<1630167816F8A2ED01F0A2ED03E0A2ED07C0A2ED0F80A2ED1F00A2153EA25DA25DA24A
5AA24A5AA24A5AA24A5AA24AC7FCA2143EA25CA25CA2495AA2495AA2495AA2495AA249C8
FCA2133EA25BA25BA2485AA2485AA2485AA2485AA248C9FCA2123EA25AA25AA25A126025
4675B500>54 D<007FB61280B712C0A27EC81203B3A2003FB6FC5AA27EC81203B3A2007F
B6FCB7FCA26C158022347CB32B>57 D<EC0180EC03C0A21407EB0FE790383FFF80EBF83F
3801E00FEA03C0D8078013C0390F001FE0A24814F0001E133E003E14F8143CA248EB7C7C
A2147814F8A200FCEBF07EA21301A214E01303A214C0A21307A21480A2130FA214005BA2
131EA2D87C3E137CA2133C137C007E14FCD83E7813F8A213F8001E14F0381FF001000F14
E01403D807E013C00003EB0780EC0F00EBF83EEBFFFC3807CFE001C0C7FC5BA26CC8FC1F
407DB926>59 D<126012F0B3A5B712F816FCA216F800F0C9FCB3A5126026347CB32F>96
D<EC07E0143FECFE00EB03F8495A495A5C131F5CB3A5133F91C7FC137E5BEA03F8EA7FE0
48C8FCEA7FE0EA03F8C67E137E7F80131FB3A580130F806D7E6D7EEB00FEEC3FE014071B
4B7BB726>102 D<12FCEAFFC0EA07F0EA01FC6C7E137F7F80131FB3A580130F6D7E6D7E
EB01FC9038007FC0EC1FE0EC7FC0903801FC00EB03F0495A495A131F5CB3A5133F91C7FC
5B13FE485AEA07F0EAFFC000FCC8FC1B4B7BB726>I<EB0180EB03C01307A21480130FA2
EB1F00A2131E133EA25BA2137813F8A2485AA25B1203A2485AA25B120FA248C7FCA2121E
123EA25AA2127812F8A41278127CA27EA2121E121FA26C7EA212077FA26C7EA212017FA2
6C7EA21378137CA27FA2131E131FA2EB0F80A2130714C0A21303EB0180124A79B71E>I<
126012F07EA21278127CA27EA2121E121FA26C7EA212077FA26C7EA212017FA26C7EA213
78137CA27FA2131E131FA2EB0F80A2130714C0A41480130FA2EB1F00A2131E133EA25BA2
137813F8A2485AA25B1203A2485AA25B120FA248C7FCA2121E123EA25AA2127812F8A25A
1260124A7CB71E>I<126012F0B3B3B3B31260044B78B715>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Ff cmmi6 6 6
/Ff 6 108 df<150E0007141F1206120E48140F121848140714C0D8600113061303A3EC
800CEAE007EC0018153838F00F8039701FC0F0007FB512E001F913C0EA3FF1D81FE01300
380F803E20177E9527>33 D<ED01C01507151FED7F00EC01FCEC07F0EC1FC0027FC7FC14
FCEB03F0EB0FC0EB3F8001FEC8FCEA03F8EA0FE0EA3F8000FEC9FC12F812FEEA3F80EA0F
E0EA03F8EA00FEEB3F80EB0FC0EB03F0EB00FC147FEC1FC0EC07F0EC01FCEC007FED1FC0
1507150122237A9D30>60 D<EB0FE0EB7FF83801F03C3803C01C3807803C380F007C121E
003E133814005AA35AA400781304140C00381338003C1370381F03E0380FFF803801FC00
16177E951C>99 D<1338137CA2137813701300A7EA0780EA1FC0EA38E01230EA60F0EAC1
E0A3EA03C0A3EA0780A2EA0F0013041306EA1E0CA21318121CEA1E70EA0FE0EA07800F23
7DA116>105 D<1418143C147CA214381400A7EB0780EB1FE01338EB60F013C0A2EA0180
A2380001E0A4EB03C0A4EB0780A4EB0F00A4131EA21238EA783CEAF8381378EA70F0EA7F
C0001FC7FC162D81A119>I<13F8EA0FF0A21200A2485AA4485AA43807801E147FEB81C3
EB8387380F060F495A1318EB700E4848C7FCA213FCEA1E7EEA3C0F80EB0781158039780F
0300A21402EB070600F0138CEB03F8386000F019247CA221>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fg cmmi9 9 30
/Fg 30 121 df<137001FCEB07C00001EC1FE0157F9038F801EFEC038F00039038070FC0
91381E0780D9F038C7FC5C00075BEBF3C049C8FC13FE380FFFE014FE9038C1FF809038C0
1FE0001FEB07F0A2EB8003EDF808003F151CEDF0181300A24815381630007EECE0701660
00FE903801F0E0EDF1C0489038007F800038EC1E0026227DA02C>20
D<137CEB7F80EB1FE0130F6D7EA26D7EA36D7EA36D7EA28080A26E7EA36E7EA281140FA2
6E7EA381140F141FEC3DFC1479ECF8FEEB01F0EB03E0903807C07FEB0F80EB1F00013EEB
3F80137E4914C04848131F485A4848EB0FE0EA1FC0123F4848EB07F048C7FC4815F84814
0348EC01FC48140026357CB32D>I<91B6FC01031580130F013F1500495C2701FF03FCC7
FC3803F80048487F49137E485A121F49133E48C7127EA25A127EA215FE00FE5C5AA24A5A
A24A5A007C5C14074A5A6C495A4AC8FC6C137C380F81F83803FFE0C66CC9FC29217E9F2C
27 D<017FB512F048B612F85A5A4815E0261F0070C7FC123C1238485B126012E0EA0001
A3495AA31307A25C130FA3131FA291C8FC5BA35BA2137E133C25217E9F22>I<123C127E
12FFA4127E123C08087A8715>58 D<123C127EB4FCA21380A2127F123D1201A412031300
A25A1206120E120C121C5A5A126009177A8715>I<171C177EEE01FEEE07FCEE1FF0EE7F
C0923801FF00ED07FCED1FF0ED7FC04A48C7FCEC07FCEC1FF0EC7FC04948C8FCEB07FCEB
1FF0EB7FC04848C9FCEA07FCEA1FF0EA7FC048CAFCA2EA7FC0EA1FF0EA07FCEA01FF3800
7FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FC
ED01FF9238007FC0EE1FF0EE07FCEE01FEEE007E171C2F2E7AA93C>I<1530157815F8A2
15F01401A215E01403A215C01407A21580140FA215005CA2143EA2143C147CA2147814F8
A25C1301A25C1303A25C1307A2495AA291C7FC5BA2131E133EA2133C137CA2137813F8A2
5B1201A25B1203A2485AA25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A
12601D4B7CB726>I<16035E5EA24C7EA2163F167FA216FFA2ED01BFED033F831506161F
150C1518A215301570156015C083EC01800203130F15001406A25C141C14184A80A2027F
B5FC91B6FCA2903901800007A249C7FC1306835B16035B5B1370136013E01201D807F04A
7EB549B512F0A25B34367DB53A>65 D<DB0FF81318DB7FFF13380203B5EAC078913A0FFC
03E0F091393FC000F102FFC7123BD901FC141FD907F815E04948140F49481407EB3F8001
7F16C049C81203485A5B00031780485A485AA248481600A2485A94C7FC127F5BA312FF90
CBFCA45AA21738A21730A21770176017E0007F4B5A5F16036C6C4AC7FC160E6C6C5C6C6C
5C6C6C5C6C6C495A6C6CEB07C02700FF803FC8FC90383FFFFC010F13F00101138035377C
B437>67 D<010FB712FEA218FC903A003FC000031700187C4B143CA2027F151C181892C8
FCA25CA24A1303A201014A1338040613304A1500160E13035E4A137C91B512FC5B5EECF0
001638130F16305C1860011F027013E0046013C04A140104001380133F17034A15005F01
7F150EA291C8121E5F49157C5F4914030001ED1FF0B8FCA25F37337DB239>69
D<010FB712FCA218F8903A003FC00007170018785D1838147F183092C8FCA25CA25C1606
0101020E1370040C13604A1500A20103141C5E5C16F849B5FCA25EECF001010F13001660
5CA2011F14E05E5CA2013F91C8FCA25CA2137FA291CAFCA25BA25B487EB6FCA336337DB2
31>I<90260FFFE092380FFFC06161D9003FEFE0004F5A19DFDA33F05EF0019F0273ED03
3F97C7FC02631506180C02E35EDAE1F8EC187E14C118300101EE60FE61028115C0EF0180
01031681DA80FC90380301F81400170649ED0C0361010615181730010E017E140705605B
010C15C0A2011C913801800F610118EC030016060138013F141F4C5C01305CA201704A13
3F96C8FC01605C6F5A01E05E4C137E000192C7FCD807F016FEB5D8801E90387FFFFC151C
150C4A337CB24A>77 D<03FF13180207EBE038021FEBF87891397F00FCF802FCEB1FF0D9
01F0130F4948130749481303494814E0A249C71201A2013E15C0A3137E1780A2017F91C7
FC8080EB3FF014FF15F06D13FE6D6D7E6D806D80010080020F7F1400150F6F7E15031501
1500A2120CA2001C5D1218A2150100385D003C14035E4B5A007E4A5A007F141F6D49C7FC
D87BE0137C39F9FC03F839F07FFFE0D8E01F138026C003FEC8FC2D377CB42F>83
D<0103B539C007FFFC5BA29026000FFCC713804BECFC00020715F0606E6C495A4D5A0201
4AC7FC6F130E5F6E6C5B5F92387F80605F92383F818004C3C8FC16C6ED1FEC16F86F5AA2
150782A282150FED1DFE153915704B7E4A5A4A486C7E150002066D7E5C4A131F4A805C4A
6D7E495A49C76C7E1306010E1403013C81137CD803FE4A7EB500C090387FFFFCA2603E33
7EB23F>88 D<ED01F815FFA216F01507A316E0A2150FA216C0A2151FA21680A2153FA2D9
01F81300EB07FE90381F077F90387C03FF496C5AEA01F000031300485A495B120F381F80
01A2D83F005BA214035A007E5CA2140712FE485C1640020F136016E0EDC0C0127CEC1FC1
023F1380003CEB7F81003EEBEF833A1E01C7C300390F0787C73907FE03FE3900F800F825
357EB328>100 D<14FE903807FF8090381F03C090387C01E03801F800485A485A485A48
5A1401D83F0013C01403007EEB0F80ECFE00387FFFF8B5128000FCC8FCA45AA415186C14
38007C147015E0003CEB01C0003EEB07806CEB1E00380F80FC3803FFE0C690C7FC1D227D
A024>I<ED0F80ED3FE0ED7870913801F0F815E31403A2020713F0A291380FC1C0EDC000
A4141F5DA4143F92C7FC011FB512805B1600D9007FC7FC147EA414FE5CA513015CA41303
5CA413075CA4130F5CA45C131FA291C8FC121CEA7F1E133EA2EAFE3C5B1278EA70F0EA3F
C0EA0F8025457CB425>I<EC1F80EC7FE0903901F071C0903907C03FE090380F801F9038
1F000F5B137E017C14C013FC4848131FA248481480A2153F1207491400A25DA249137EA2
15FEA25DA214013803E0034A5A3801F01F3800F83BEB3FF390380FC3F0EB00031407A25D
A2140F001C5C127F4A5A143F00FE91C7FC147E387801FC383C03F0381FFFC0D803FEC8FC
23317FA025>I<EB01C0EB07E014F0130F14E01307EB038090C7FCAA13F0EA03FCEA071E
EA0E1F121C123800301380EB3F00127012605BEAE07EEA40FE12005B12015BA212035B12
071420EBE070000F136013C014E014C0EA1F80EA0F81EB8380EB8700EA078EEA03FCEA00
F014337EB11A>105 D<EB1F80EA07FF5A1400C67EA3137EA213FEA25BA21201A25BA212
03A25BA21207A25BA2120FA25BA2121FA25BA2123FA290C7FCA25AA2127E1304EAFE0E13
0C12FCA2131C131812F81338EA7C701360EA3FE0EA0F8011357DB317>108
D<D801E001FEEB07F03C07F803FF801FFC3C0E3E0F07E0783F001C903B3C03F1E01F803C
181F7001F3800F003801E0EBF70026303FC001FE14C01270006001805B02005B0303141F
D8E07F4A1480EA407E12000307143F01FE1700495C60030F147E1201494A13FEF0FC0403
1F150E00030401130C49028013F8191C033F01031318000717F04902001438050113704B
15E0000F933800F1C049017EEC7F80D80380011CEC1E003F227EA044>I<D801E013FE3A
07F803FF803A0E3E0F07E0001C90383C03F039181F7001003813E026303FC07F12700060
138014001503D8E07F5CEA407E1200150701FE5C5B150F5E120149131FEE8080EE81C000
03023F13804914011603037F13000007147E495CED3E0E5E000FEC1E3849EB0FF0D80380
EB03C02A227EA02E>I<147F903803FFC090380FC1F090383F00F8017C137C497F485A48
487F1207485A5B001F1580123F90C7FCED3F005A127EA25D157E5A15FE5D007C5C14014A
5A5D6C495A4A5A6C49C7FC380F807E3807C1F83801FFE06C6CC8FC21227EA025>I<011F
131F90397FC07FE09039E3E1E0F09039C3E380783A01C1F7007CD981FE133CD983FC133E
00035BEB03F0163FEA0707120600025B1200010F147F167E5CA2011F14FE16FC5CA2013F
EB01F8A291380003F016E0491307ED0FC002801380ED1F009038FFC03E9038FEE0F89038
FC7FE0EC1F80000190C8FCA25BA21203A25BA21207A25BB57EA3283083A027>I<3903E0
03E0390FF81FF8391C7C3C1C0018EB703E39383EE0FE38303FC0EB7F800070EB00FCEA60
7E157000E01400EAC0FEEA40FC1200A212015BA312035BA312075BA3120F5BA3121F5B00
07C8FC1F227EA023>114 D<EB01FCEB0FFF90383E03C090387800E04913603901E001E0
14030003130713C013E0EC03806DC7FC13FF14F014FC6C7F6C7F6D1380130F9038007FC0
141F140F007E130700FE1480A3EC0F005A00C0131E6C5B00705B383C01F0380FFFC0D803
FEC7FC1B227CA024>I<EB0380EB0FC0A3131FA21480A2133FA21400A25BA2137E387FFF
FEA2B5FC3800FC00A21201A25BA21203A25BA21207A25BA2120FA25B1408001F131C1418
1380143814701460EB00E0EB01C0380F8380EB8700EA07FEEA01F817307FAE1C>I<01F0
130ED803FC131FD8071EEB3F80EA0E1F121C0038EB801F0030140F013F13070070130000
6014035BD8E07E14001240EA00FE495B000114065BA2150E0003140C5B151C1518153849
1330157015606D13E04A5A0001495A6D48C7FC3800FC1EEB3FF8EB07E021227EA025>
118 D<90391F801F8090397FE07FE09039E0F0E0703A01C0F9C0F83903807D833807007F
000E1403000C15F0001C137E0018EC01C002FEC7FC00385B1210C7FC13015CA31303A25C
1640010714E016C0001C5B007E1401010F148000FE1403011FEB0700011B130E39F839F0
1C397070F878393FE07FE0390F801F8025227EA02C>120 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh cmtt9 9 62
/Fh 62 125 df<007FB512FEB7FCA37E90C7123F6C7EA26C7E120F7F6C6C131E15006C7E
A26C7E12007F137FA26D7EA26D7EA2495AA249C7FCA213FE5B1201485AA2485A151E4848
133F5B121F485AA248C7FC90B6FCB7FCA36C14FE202E7DAD27>6
D<120FEA1FC0123F13E0A213F0121F120F1201A4120313E01207EA0FC0A2EA3F80EA7F00
5A5A12F812700C1773AD27>39 D<EB01C0EB03E0130F131FEB3FC0EB7F80EBFE00485A5B
1203485A5B485AA2485AA248C7FCA3127EA45AAC127EA47EA36C7EA26C7EA26C7E7F6C7E
12017F6C7EEB7F80EB3FC0EB1FE0130F1303EB01C0133A73B327>I<127012F812FE7E6C
7E6C7EEA0FE06C7E12037F6C7E1200137EA27FA2EB1F80A3EB0FC0A4EB07E0ACEB0FC0A4
EB1F80A3EB3F00A2137EA25B1201485A5B1207485AEA3FC0485A48C7FC5A12F81270133A
7AB327>I
43 D<007FB512F8B612FCA46C14F81E067C9927>45 D<121EEA7F80A2EAFFC0A4EA7F80
A2EA1E000A0A728927>I<130E131FA25B5BA25B5A5A127FB5FCA213BFEA7E3F1200B3AA
003FB512805A15C01580A21A2F79AE27>49 D<EB3FE03801FFF84813FE000FEBFF804814
C0393FE07FE0EB800F397F0007F0007EEB03F800FE13015A6C14FC1400A3127CC8FCA214
0115F8A2140315F01407EC0FE0EC1FC0143FEC7F80ECFF00495A495A495A495A495A495A
495A01FEC7FC485AD807F81378484813FC485A485A48B5FCB6FCA36C14F81E2F7CAE27>
I<EB1FF8EBFFFE0003EBFF80000F14C015E0391FF01FF0393FC007F8EB800115FC1400A2
6CC7FC1204C8FC140115F81403EC07F0140FEC3FE090381FFFC0491380A215E06D13F090
38001FF8EC03FC1401EC00FE157E157F153FA21238127C12FEA2157F48147E6C14FE007F
EB01FCEB8003393FF01FF86CB512F06C14E000031480C6EBFE00EB1FF820307DAE27>I<
121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCAC121EEA7F80A2EAFFC0A4EA7F80A2EA1E
000A20729F27>58 D<120FEA3FC0A2EA7FE0A4EA3FC0A2EA0F00C7FCAC120FEA3F8013C0
127F13E0A3123FA2120F120713C0120FA2EA3F80EA7F005A5A12F812700B2A739F27>I<
153815FC14011407140FEC3FF8EC7FE0ECFFC001031300495AEB1FF8495A495A3801FF80
4890C7FCEA0FFC485AEA7FF0EAFFC05BA27FEA7FF0EA1FF86C7EEA03FF6C7F38007FE06D
7E6D7EEB07FE6D7E010013C0EC7FE0EC3FF8EC0FFC14071401140015381E287CAA27>I<
007FB512FEB7FCA4003F14FEC9FCA6003FB512FEB7FCA46C14FE20127D9F27>I<127012
FC7E6C7E7FEA7FF0EA1FF86C7EEA03FF6C7F38007FE06D7E6D7EEB07FE6D7E010013C0EC
7FE0EC3FF8EC0FFC1407A2140FEC3FF8EC7FE0ECFFC001031300495AEB1FF8495A495A38
01FF804890C7FCEA0FFC485AEA7FF0EAFFC05B48C8FC5A12701E287CAA27>I<EB03F049
7EA2497EA4143CEB1F3EA5EB3F3FA3EB3E1FA2017E7FA4496C7EA548486C7EA390B5FCA2
4880A3EBF003A248486C7EA4000F803A7FFC0FFF8000FF15C06D5A497E007F1580222F7E
AE27>65 D<007FB5FCB612C08115F87E3907E003FCEC00FE157E157F81A6157EA25D1403
EC0FF890B55A15C015F081819038E000FE157FED3F80151FA2ED0FC0A6151F1680153FED
7F004A5A007FB55AB65A5D15E06C1480222E7FAD27>I<007FB61280B712C0A37E3907E0
000FA6ED078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCA4ED03C0ED07E0
A7007FB6FCB7FCA36C15C0232E7FAD27>69 D<007FB61280B712C0A37E3907E0000FA6ED
078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCAC387FFF80B57EA36C5B22
2E7EAD27>I<903807F03890381FFC7C90387FFFFC90B5FC5A3803FC1F3807F00F380FE0
07EBC003001F13011380123F90C7FCA2127EA2157892C7FC5AA8EC1FFF4A1380A3007E6D
1300EC00FCA36C1301A21380121FEBC003120FEBE0073807F00F3803FC1F6CB5FC7EEB7F
FE90381FFC78D907F0C7FC21307DAE27>I<007FB512E0B612F0A36C14E039001F8000B3
B2007FB512E0B612F0A36C14E01C2E7BAD27>73 D<387FFFC080B5FC7E5CD803F0C8FCB3
AAED0780ED0FC0A7007FB6FCA2B7FC7E1680222E7FAD27>76 D<D87FE0EB7FE0486CEBFF
F0A26D5A007F15E0000F150001B813DFEBBC03A3EBBE07019E139FA3EB9F0FA2018F131F
A2149FA2EB879EA4EB839C14FCA3EB81F8A2EB80F01400AAD87FF0EBFFE0486C4813F0A3
6C486C13E0242E7FAD27>I79 D<007FB5FCB612E081816C803907E003
FEEC00FF81ED3F80151F16C0150FA6151F1680153FED7F005DEC03FE90B55A5D5D5D92C7
FC01E0C8FCADEA7FFEB5FCA36C5A222E7FAD27>I<EBFFFC0007EBFF80001F14E0A24814
F0EBE01F397F8007F8EB0003007E1301A300FE14FC481300B3A4EB07E0A200FE13F1007E
14F8EB03F9A2387F01FF1381D83FE013F090B5FC6C14E0A200071480C6FC9038001FC0A2
EC0FE0A2EC07F0A2EC03F8A2EC01F01E397CAE27>I<387FFFF0B512FE6E7E816C803907
E01FF014076E7E1401811400A514015D14034A5A141F90B55A5D5DA281EBE01F6E7E1407
6E7EA816F0EDF1F8A4397FFE01FBB5EBFFF08016E06C48EB7FC0C8EA1F00252F7FAD27>
I<90387FC0E03901FFF1F0000713FF5A5AEA3FE0EB801F387F000F007E130712FE5A1403
A3EC01E06C90C7FC127E127FEA3FC013F86CB47E6C13F86C13FE6CEBFF80C614C0010F13
E0010013F0140FEC07F81403140115FC1400127812FCA46CEB01F8A26C130390388007F0
9038F01FE090B5FC15C0150000F85B38701FF81E307CAE27>I<007FB61280B712C0A439
FC03F00FA60078EC0780000091C7FCB3AB90B512C04880A36C5C222E7EAD27>I<3A7FFE
01FFF8B54813FCA36C486C13F83A07E0001F80B3AB6D133F00031500A26D5B0001147E6D
13FE6C6C485A90387F87F814FF6D5B010F13C06D5BD901FEC7FC262F80AD27>I<3A7FFC
03FFE06D5A00FF15F0007F15E0497E3A07E0007E00A46C6C5BA4EBF80100015CA46C6C48
5AA490387E07E0A56D485AA4011F5B149FA3010F90C7FCA5EB07FEA46D5AA26D5A242F7F
AD27>I<D87FE0EB7FE0486CEBFFF0A36C48EB7FE0001FC7EA0F80A76C6CEB1F00A614F0
EB81F83907C3FC3EA4149CEBC79EA30003143CA301E7137CEBEF9FA2140FA200011478A4
9038FE07F8A300005CA2EBFC0390387801E0242F7FAD27>I<393FFC1FFE387FFE3F815D
383FFC1F3903F00FE001F85B1201EBFC1F00005CEBFE3F017E90C7FCEB7F7FEB3F7E14FE
6D5AA26D5AA26D5AA21303130780130F80131F80EB3F7E147F497E017E7F141F01FC7F14
0FD801F87F14071203496C7E120701E07F3A7FFC0FFF8000FF15C06D5A497E007F158022
2E7EAD27>I<3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07F000FE0000035CEBF801
00015CA2EBFC0300005CEBFE07017E5BA26D485AA290381F9F80A3010F90C7FCA2EB07FE
A26D5AA26D5AAF90381FFF80497FA36D5B242E7FAD27>I<387FFFF0B512F8A314F000FC
C7FCB3B3ACB512F014F8A36C13F0153A71B327>91 D<387FFFF0B512F8A37EEA0001B3B3
ACEA7FFFB5FCA36C13F0153A7EB327>93 D<007FB512F8B612FCA46C14F81E067C7E27>
95 D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0F
FF137F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612
806C15C07E000313F1C69038807F8022207C9F27>97 D<EA7FE0487EA3127F1203A914FF
01F313C090B512F08181EC81FE49C67E49EB3F8049131F16C049130FA216E01507A6150F
16C07F151F6DEB3F80157F6DEBFF009038FF83FEECFFFC5D5D01F313C02601E0FEC7FC23
2E7FAD27>I<EB0FFF017F13C048B512E04814F05A380FF807EA1FE0393FC003E0903880
008048C8FC127EA212FE5AA67E127EA2007F14F0393F8001F813C0381FE003390FF80FF0
6CB5FC6C14E06C14C06C6C1300EB0FF81D207B9F27>I<EC3FF04A7EA3143F1401A9EB0F
E1EB7FFD48B5FC5A5A380FF83F381FE00F383FC007EB8003EA7F00007E1301A212FE5AA6
7E007E1303A2127F6C1307EB800F381FE01F380FF03F6CB612C06C15E06C13FD38007FF9
D91FE013C0232E7EAD27>I<EB0FF8EB3FFE90B51280000314C04814E0390FFC0FF0391F
E003F8EBC001D83F8013FC48C7FC127E157E12FEB612FEA415FC00FCC8FC7E127E127F6C
143C6D137E6C7E01F013FE390FFC07FC6CB5FC000114F86C14F0013F13C0903807FE001F
207D9F27>II<153F
90391FC0FF80D97FF313C048B612E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F
48486C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F
6CB5FC15E015F84814FE4880EB8001007EC7EA3F80007C140F00FC15C0481407A46C140F
007C1580007F143F6C6CEB7F009038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23
337EA027>II<130F49
7E497EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815
F07E1D2F7BAE27>I<143C147E14FFA4147E143C1400A73801FFFE4813FFA37EC7123FB3
B0147E1238007C13FE38FE01FC1303B512F814F06C13E06C13803807FE0018407CAE27>
I<387FFF80B57EA37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>108
D<397F07C01F3AFF9FF07FC09039FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC001E013
8001C01300A3EB803EB03A7FF0FFC3FF486C01E3138001F913E701F813E36C4801C31300
2920819F27>I<387FE07F39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B
5BA25BB03A7FFF83FFE0B500C713F0A36C018313E024207F9F27>I<EB1FE0EB7FF83801
FFFE487F481480390FF03FC0391FC00FE0393F8007F0EB00034814F8007E1301A248EB00
FCA76C1301007E14F8A2007F1303393F8007F0A2391FE01FE0390FF03FC06CB512806C14
006C5B38007FF8EB1FE01E207C9F27>I<387FE0FFD8FFF313C090B512F0816C800003EB
81FE49C67E49EB3F8049131F16C049130FA216E01507A6150F16C07F151F6DEB3F80157F
6DEBFF009038FF83FEECFFFC5D5D01F313C0D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B
23317F9F27>I<90380FF03C90383FFE7E90B5FC000314FE5A380FFC1F381FE007EBC003
383F800148C7FC127EA200FE147E5AA67E007E14FEA2007F1301EA3F80EBC003381FE007
380FF81F6CB5FC7E6C147E38007FFCEB0FF090C7FCAC91381FFFF8A24A13FC6E13F8A226
317E9F27>I<397FFC03FC39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F891
38F00F809138E002004AC7FC5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E9F27>
I<9038FFF3800007EBFFC0121F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F8013FC
383FFFF06C13FC000713FF00011480D8000F13C09038003FE014070078EB03F000FC1301
A27E14036CEB07E0EBE01F90B512C01580150000FB13FC38707FF01C207B9F27>I<133C
137EA8007FB512F0B612F8A36C14F0D8007EC7FCAE1518157EA415FE6D13FC1483ECFFF8
6D13F06D13E0010313C0010013001F297EA827>I<397FE01FF8486C487EA3007F131F00
031300B21401A21403EBFC0F6CB612E016F07EEB3FFE90390FF87FE024207F9F27>I<3A
7FFC0FFF80486C4813C0A36C486C13803A07C000F800EBE00100035CA2EBF00300015CA2
EBF80700005CA390387C0F80A36D48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA26D5A22
207E9F27>I<3A7FFE07FFE000FF15F06D5A497E007F15E03A0F80001F00A36D5B000714
3EA414F0EBC1F83903E3FC7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE07
90387C03E024207F9F27>I<393FFC1FFF486C5A168016006C487E3901F807E06C6C485A
4A5A017E90C7FC6D5AEB1F7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90
387C0F8001F87F00016D7E3803F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F
27>I<3A7FFC0FFF80486C4813C0A36C486C13803A07E000F800000313015D13F0000113
0301F85B1200A26D485A137CA290387E0F80133EA2011F90C7FC5CA2130F149E14BE1307
14FC1303A25C1301A25CA213035CA213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE
6C5A5B6C5AEA07C022317E9F27>I<127812FCB3B3B3A21278063A70B327>124
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fi cmr6 6 4
/Fi 4 59 df<13FF000313C0380781E0380F00F0001E137848133CA248131EA400F8131F
AD0078131EA2007C133E003C133CA26C13786C13F0380781E03803FFC0C6130018227DA0
1E>48 D<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>II<127812FCA412781200A9127812FCA4127806157A9412>
58 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fj cmtt10 7 34
/Fj 34 125 df<121E123F138013C0A2121F1203A312071380120FA2EA1F00127E5A5A12
700A1276A31F>39 D<131E133E137E13F8EA01F0EA03E0EA07C0EA0F8013005A121E123E
123C127C1278A312F85AA97E1278A3127C123C123E121E121F7E1380EA07C0EA03E0EA01
F0EA00F8137E133E131E0F2D76A71F>I<127012F8127C7E7EEA0F80EA07C0EA03E01201
13F0120013F81378137C133CA3133E131EA9133E133CA3137C137813F813F0120113E012
03EA07C0EA0F80EA1F00123E5A5A12700F2D7BA71F>I<387FFFFEB6FCA36C13FE18057D
931F>45 D<123C127E12FFA4127E123C080875871F>I<123C127E12FFA4127E123C1200
A9123C127E12FFA4127E123C081975981F>58 D<121E123FEA7F80A4EA3F00121EC7FCA9
121E123F5A1380A3123F121F120FA2EA1F005A127E5A5A1270092176981F>I<007FB512
80B612C0A36C1480C9FCA5007FB51280B612C0A36C14801A0F7E981F>61
D<127012F812FE7EEA7FC06C7EEA0FF86C7EEA01FF6C1380EB3FE0EB1FF0EB07FCEB03FE
EB00FF147F14FFEB03FEEB07FCEB1FF0EB3FE0EBFF80481300EA07FC485AEA3FE0485A48
C7FC5A12F81270181F7DA01F>I<EB0FE0EB7FF8497E00037F3807F83F380FC01F903883
FF80485AEA3E0FEA3C1F397C3E1FC038787C0FEB780712F8EAF0F8EBF003A6EBF807D8F8
7813801278EB7C0F397C3E1F00383C1FFE383E0FFC6C6C5A380F83F09038C003C03807F8
1F6CB5FCC614006D5AEB0FF01A247EA31F>64 D<131E133FA3EB7380A4EBF3C0A413E100
017FA43803C0F0A400077FEB8078EBFFF8A3487FEB003CA348133E001E131E39FFC0FFC0
A41A247EA31F>I<387FFFE0B512F8806C7F380F003F80EC0F801407A5EC0F005C143EEB
FFFC5C8080EB003FEC0F80EC07C01403EC01E0A5140315C01407EC1F80007FB5FCB61200
14FC6C13F01B247FA31F>I<387FFFFEB6FCA36C13FE18057D7E1F>95
D<EA07FE381FFF80487F80383E07F0381C00F8C7FC1478A2EB7FF8EA03FF120F123F387F
C078EA7E0012F85AA36C13F8EA7E07007FB512C06C14E06C13BF3907FC0FC01B197D981F
97 D<EB7FE03801FFF8000713FC5A381FC07C383F0038007C1300A2127812F85AA57E12
78007C133C127E6C137C381FE0F8EA0FFF6C13F0000113C038007F0016197C981F>99
D<EB03F8497EA21303EB003CA713FE3803FFBC4813FC5AEA1FC3EA3F00007C137CA24813
3CA25AA56C137CA21278007C13FCEA3E01EA3F836CB512C06CEBBFE00003133F3900FC1F
C01B247EA31F>I<137F3801FFC0000713E04813F8EA1FC1383F007C127E007C133E5A14
1EB512FEA314FC00F0C7FC7EA2007C130C007E131E6C133E381FC0FE380FFFFC6C13F800
0113E038007F8017197D981F>I<14FEEB07FF4913805BEB3F0F90387C07000178C7FCA5
387FFFFCB57EA26C5BD80078C7FCB1383FFFF0487FA26C5B19247FA31F>I<EC0F809038
FE3FC00003B512E05A4813F9391F83F1C0903801F000383E00F8003C1378A4003E13F86C
485A1383EBFFE05C485BD83CFEC7FC90C8FC123EA2381FFFE06C13FC487F487F397E003F
800078130F00F8EB07C0481303A36C1307A2007EEB1F80393F807F00381FFFFE6C5B0003
13F0C613C01B287E991F>I<13F0487EA46C5A90C7FCA6EA7FF0487EA2127FEA0078B1B5
12F8A415257BA41F>105 D<EB0780EB0FC0A4EB078090C7FCA63807FF804813C0A27EEA
0003B3A81307122038F80F80131FB512005B6C5AEA1FF012327DA41F>I<EA7FF8487EA2
127FEA003CB3AA387FFFFEB6FCA26C13FE18247DA31F>108 D<387C7C1F39FFFE7F8090
B512C06C14E0381FCFF3EB87E1EB07C1A2001E1381AD397F87E1F839FFCFF3FCA2397F87
E1F81E1980981F>I<387F0FE038FFBFF8EBFFFC7E3807F87EEBE03EEBC01EA21380AD39
7FF87FE039FFFCFFF0A2397FF87FE01C197F981F>I<13FCEA03FF000F13C04813E01387
383E01F0387C00F800781378A248133CA66C137C00781378A2007C13F8383E01F0381F87
E013FF6C13C000031300EA00FC16197C981F>I<387F07F038FF9FFCEBFFFE6C7F3907F8
3F80EBE00F9038C007C01403018013E0A21401A5EBC00315C0140713E0EC1F809038F87F
00EBFFFE5CEB9FF8EB8FE00180C7FCA9EA7FF8487EA26C5A1B267F981F>I<387FC07F39
FFE3FF8001E713C0EA7FEF3801FFC7EC038001FCC7FC5BA25BA25BAA387FFFE0B57EA26C
5B1A197E981F>114 D<3803FE70381FFFF05A5AEAFE03EAF8005AA26C1300127FEA3FFC
381FFF80000713E038003FF0EB01F83870007C00F0133C7EA26C137C38FF01F813FF14F0
00F713C000E1130016197C981F>I<136013F0A6387FFFFCB57EA26C5BD800F0C7FCAB14
03EC0780A3EBF80F9038FC1F00EB7FFE6D5A6D5AEB0FE019207F9F1F>I<387F01FC38FF
83FEA2EA7F813807801EAE143EA2EBC0FE90B512E06C14F07E6CEB0FE01C197F981F>I<
397FF0FFE0D8FFF913F0A2D87FF013E03907801E00A2EBC03E0003133CA36C6C5AA36C6C
5AA3EB79E0A4EB39C0133FA26D5A6DC7FC1C197F981F>I<397FE1FF80EAFFF3A2EA7FE1
3907C0F000EA03E13801E3E0EBF3C06CB45A137F6DC7FC133E131E133F497E13F7EBF3C0
3801E1E000037F13C038078078397FE1FF80D8FFF313C0A2D87FE113801A197E981F>
120 D<39FFE1FFC001F313E0A201E113C0390F003C00138012075C13C012035CEA01E0A2
EBE1E0EA00F1A25C137BA2133B5C133F131F91C7FCA3131EA35BA2EA707CEAF8F8EAF9F0
12FF5B6C5A001FC8FC1B267E981F>I<127012F8B3B3A71270052D73A71F>124
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fk cmr7 7 50
/Fk 50 122 df<14FF010F13C090383F01E090387C00F0EBF001EA01E01203EA07C06E5A
92C7FCA6EC0FF8B6FCA23807C000B3A2486C487E3A7FFC0FFF80A221297FA826>12
D<1238127C12FE12FFA2127F123B1203A31206A3120C121812381270122008127B8613>
44 DI<1238127C12FEA3127C123807077B8613>I<EC0180140314
071500A25C140E141E141CA2143C143814781470A214F05CA213015C13035CA2130791C7
FC5B130EA2131E131C133C1338A21378137013F05BA212015B12035BA2120790C8FCA25A
120E121E121CA2123C123812781270A212F05AA2193B7DAB21>I<EB3F803801FFF03803
E0F83807803C48487E001E7F003E1480A2003C1307007C14C0A400FC14E0AE007C14C0A3
6CEB0F80A36CEB1F006C131E6C6C5A3803E0F86CB45A38003F801B277EA521>I<133813
78EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521>I<13FF000313E0380E03
F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15005C143E147E147C5C49
5A495A5C495A010EC7FC5B5B903870018013E0EA0180390300030012065A001FB5FC5A48
5BB5FCA219267DA521>I<13FF000313E0380F01F8381C007C0030137E003C133E007E13
3FA4123CC7123E147E147C5C495AEB07E03801FF8091C7FC380001E06D7E147C80143F80
1580A21238127C12FEA21500485B0078133E00705B6C5B381F01F03807FFC0C690C7FC19
277DA521>I<1438A2147814F81301A2130313071306130C131C131813301370136013C0
12011380EA03005A120E120C121C5A12305A12E0B612E0A2C7EAF800A7497E90383FFFE0
A21B277EA621>I<0018130C001F137CEBFFF85C5C1480D819FCC7FC0018C8FCA7137F38
19FFE0381F81F0381E0078001C7F0018133EC7FC80A21580A21230127C12FCA3150012F0
0060133E127000305B001C5B380F03E03803FFC0C648C7FC19277DA521>I<137F3801FF
C03807C1E0380F0070001E1378003E7F003C133E007C131EA200FC131FA41580A4007C13
3FA2123C003E137F001E135F380F01DF3807FF9F3801FE1FD8001013001300A2143E123C
007E133CA25C5C007C5B383003C0381C0780D80FFFC7FCEA03F819277DA521>57
D<1238127C12FEA3127C12381200AB1238127C12FEA3127C123807197B9813>I<140EA2
141FA34A7EA3EC6FC0A2ECEFE014C7A290380183F0A390380301F8A201067F1400A24913
7EA2011C137F01187FA24980013FB5FCA2903960000FC0A201E080491307A248486D7EA2
00038115011207D81FC0497ED8FFF890383FFFE0A22B2A7EA931>65
D<91387FC002903903FFF80690390FE01E0E90383F0007017CEB019ED801F0EB00FE4848
147E4848143E5B000F151E48C8FC48150E123EA2007E1506A2127C00FC1500A8127C007E
1506A2123EA2003F150C7E6C7E000715186D14386C6C14306C6C1460D8007CEB01C0013F
EB038090390FE01E00903803FFF89038007FC0272A7DA82F>67 D<B612F015FE3A07F000
3F800003EC07C0ED01F06F7E167C82A282EE0F80A3EE07C0A317E0A917C0A2160F1780A2
EE1F00A2163E5E5E4B5AED07E00007EC3F80B600FEC7FC15F02B287EA732>I<B712F0A2
3907F000070003EC00F816781638A21618A3160C1560A21600A215E0A2140390B5FCA2EB
F0031400A21560A21606A2ED000CA4161C16181638A21678ED01F80007EC07F0B7FCA227
287EA72D>I<B712C0A23907F0001F0003EC03E015011500A21660A31630A215C01600A3
1401A2140790B5FCA2EBF0071401A21400A492C7FCA9487EB512E0A224287EA72B>I<B5
12C0A23807F8006C5AB3B0487EB512C0A212287EA718>73 D<D8FFF0EDFFF06D5C0007EE
FE0000035E017CEC037CA26D1406A26D140CA36D6C1318A26D6C1330A36D6C1360A26D6C
13C0A3903900F80180A291387C0300A2EC3E06A36E5AA2EC0F98A3EC07F0A26E5AEA0780
D80FC015FE3CFFFC01C01FFFF0A234287DA73C>77 D<D8FFF0903807FFE07FD803FC9038
007E006D143C1618137F6D7E6D7EA26D7E6D7E6D7EA26D7E6D7E147FA2EC3F80EC1FC0EC
0FE015F01407EC03F8EC01FCEC00FEA2157FED3F98ED1FD8A2ED0FF815071503A2150115
00486C1478487ED8FFFC143816182B287EA731>I80 D<B67E15F03907F000FC0003143FED0F806F7E82
150382A55E15075E4B5A033FC7FC15FC90B512F0A29038F001FCEC007F6F7E151F82150F
A71730A3923807E070486C1560B539C003F0E0923800FFC0C9EA3F002C297EA730>82
D<90387F80203903FFF06039078078E0380E000E481307481303007813010070130012F0
A21560A27E1500127C127FEA3FE013FF6C13F06C13FC000313FFC61480010F13C0010013
E0EC0FF014031401EC00F8A200C01478A46C1470A26C14F06C14E06CEB01C000EFEB0780
39E3E01F0038C0FFFC38801FF01D2A7DA825>I<007FB7FCA23A7E003F003F0078150F00
7081006081A200E01680481501A5C791C7FCB3A64A7E013FB5FCA229287EA72F>I<B539
C007FFE0A2D807F8C7EA7E006C48143C1618B3A816386C6C143016706C6C1460017C14E0
017E495A6D495A90260F8007C7FC903807E03E903801FFF89038003FC02B297EA731>I<
B590B5EB3FFEA2D80FF8D90FF8EB07F06C486D48EB03E00003EF01C003031580A26C6C6E
EB0300A36C6CD906FC1306A26D160E017ED90C7E130CA2017F027F131C6D496C1318A290
261F80386D5AED301FA290260FC0706D5AED600FA26D6C486C6C5AA214F0903B03F18003
F180A202F914F3902801FB0001FBC7FCA202FF14FF6D486D5AA2027E5C027C147CA20238
1438A33F297FA743>87 D<13FE3807FFC0380F03E0381C00F0003E1378003F137C143C14
3E121EC7FCA3EB3FFEEA01FF3807F03EEA1FC0EA3F00127EA2481418A3147E127EECDF38
393F838FF0390FFE0FE03903F807C01D1C7E9A21>97 DI<
EB3FC0EBFFF83803E03C3807C00E380F801F381F003F123EA2007E131E007C1300A212FC
A7127C127E1403123E6C1306EA0F803807C00C3803F0383800FFE0EB3F80181C7E9A1E>
I<EC03E0143FA214071403AAEB3F833801FFE33803E03B3807800F380F0007481303123E
127E127CA212FCA7127CA2127E123E001E1307001F130F390F801FF03903E073FE3801FF
E339007F03E01F297EA725>I<133F3801FFE03803E1F0380F80F8381F007C143E123E00
7E131E141F127C12FCA2B6FCA200FCC7FCA4127C127E1403123E6C1307380F800E3807C0
1C3803E0783800FFE0EB3F80181C7E9A1E>II<90387E
03E03901FF9FF03807C3FC380F00F048EBF800001E1378003E137CA6001E1378001F13F8
6C5BEBC3E0380DFF80D81C7EC7FC90C8FCA3121E380FFFF014FC6C13FF001F1480393E00
1FC000781307EC03E0481301A40078EB03C0007C13076CEB0F80390FC07E003803FFF838
007FC01C277E9921>II<120EEA3F80A5
EA0E00C7FCA7EA078012FFA2121F120FB3121FEAFFF8A20D287EA713>I<130EEB3F80A5
EB0E0090C7FCA7EB0F80EA01FFA2EA001F130FB3A8127812FCEB1F00A2133EEA707CEA3F
F8EA0FE0113483A715>I
108 D<260F81FC137F3BFF8FFF03FFC0903A9C0F8703E03B1FB007CC01F0D80FE013D890
3AC003F000F8A301805BAF486C486C487E3CFFF83FFE0FFF80A2311A7E9937>I<380F81
FC38FF8FFF90389C0F80391FB007C0EA0FE09038C003E0A31380AF391FC007F039FFF83F
FEA21F1A7E9925>I<EB3F80EBFFE03803E0F83807803C48487E001E7F003E1480A248EB
07C0A300FC14E0A7007C14C0A2007E130F003E1480001E1400001F5B380F803E3803E0F8
6CB45A38003F801B1C7E9A21>I<380F81FC38FF8FFF9038BC0FC0391FF007E0390FC003
F0EB800115F8EC00FCA2157C157EA7157C15FCA2EC01F801C013F0EC03E09038F007C090
38BC1F8090388FFF00EB83F80180C7FCA7487EEAFFF8A21F257E9925>I<90383F806039
01FFE0E03803F0703807C019380F800D381F00075A007E1303A2127C12FCA7127C127EA2
7E6C1307EB800F380FC01B3803E0733801FFE338007F031300A7EC07F0EC3FFEA21F257E
9923>I<380F07C038FF1FF0EB38F8EA1F71EA0F6113C1EBC0F014005BAF487EEAFFFCA2
151A7E991A>I<3803F840380FFEC0EA3C07EA7803EA7001EAF000A37E6C1300EA7FC013
FC6CB4FC6C1380000713C0C613E0130738C003F0130113007EA26C13E0130100F813C038
EE078038C7FF00EA81FC141C7E9A1A>I<13C0A41201A312031207120F121FB512E0A238
07C000AC1430A73803E060A23801F0C03800FF80EB3F0014257FA31A>I<390F8003E000
FF133FA2001F1307000F1303B01407A20007130F9038C01BF03903E073FE3801FFE33900
7F83E01F1B7E9925>I<39FFF807FEA2390FE001F001C013E0000714C013E000031480EB
F00300011400A23800F806A2EB7C0CA2EB7E1CEB3E18A26D5AA2EB0FE0A36D5AA26D5AA2
1F1A7F9823>I<3BFFF8FFF07FE0A23B1FC01FC01F80000F90390F800E00A20007150CEC
1FC02603E01B5B15E0143B2601F0315B15F0D9F86013700000156015F89039FCC078E001
7CEB7CC0137D90393F803D80153FEC001F6D91C7FCA2011E7F010E130EA22B1A7F982F>
I<39FFF807FEA2390FE001F001C013E0000714C0EA03E01580EBF003000114006D5A0000
130613FCEB7C0CA26D5AA26D5AA214F06D5AA26D5AA26D5AA291C7FCA213061230EA780E
EAFC0C131C1318485AEA70E0EA3FC06CC8FC1F257F9823>121 D
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fl cmsy5 5 1
/Fl 1 4 df<13E0A438F0E1E0EAF843387E4FC0380F5E00EA01F0A2EA0F5E387E4FC038
F843E0EAF0E13800E000A413127B921F>3 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fm cmbx10 10 43
/Fm 43 122 df<913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF
8049485A5A1480484A13C04A6C1380A36F1300167E93C7FCA592383FFFC0B8FCA4000390
C7FCB3ABB5D8FC3F13FFA4303A7EB935>12 D33 D 45 D I<141E143E14FE1307133FB5FCA313CFEA000F
B3B3A6007FB61280A4213779B630>49 D<EB0FFC90387FFFC048B512F0000714FC390FF0
3FFF261F800F1380263F000313C05AD9C00113E0486C6C13F07FA2ED7FF8A46C5A6C5A00
0FC7FCC8FCEDFFF0A216E05C16C04A138016004A5A5D4A5A4A5A4A5AEC7F8092C7FC14FE
EB01F849481378495A495A495A013EC712F84914F05B4848130148B6FCA25A5A5A5A4815
E0B7FCA425377BB630>I<EB03FF011F13F0017F13FC3901FC07FF2603F003138048486C
13C0496C13E0EA0FF001FC14F0121F7FA56C4814E0A23803F001C714C04A138016004A5A
4A5AEC3FF090380FFFC092C7FC15F090380007FE913801FF806E13C016E0ED7FF016F816
FC153FA216FEEA1FC0487E487E487EA416FCA249EB7FF8127F01C0EBFFF06C4814E06C6C
4813C0260FFC0713806CB61200000114FC6C6C13F0010790C7FC27387CB630>I<ED07C0
150FA2151F153F157F15FFA25C5C5C5CA2141E5C147C5C5C495A495A1307495A5C131E5B
137C5B5B485A485A1207485A90C7FC121E5A127C5AB81280A4C70001EBC000AA0103B612
80A429377DB630>I<001C15C0D81F80130701F8137F90B61280A216005D5D15F05D1580
4AC7FC14F090C9FCA8EB07FE90383FFFE090B512F89038FC07FC9038E003FFD980011380
90C713C0120EC813E0157F16F0A216F8A21206EA3F80EA7FE012FF7FA44914F0A26C4813
FF90C713E0007C15C06C5B6C491380D9C0071300390FF01FFE6CB512F8000114E06C6C13
80D90FF8C7FC25387BB630>I<EC0FF8ECFFFE0103EBFF8090390FF80FC090393FE003E0
90397FC001F09038FF000F48EC1FF84848133F485A120F5B121FA2003FEC1FF0ED0FE049
90C7FC127FA21408EC7FF039FFF1FFFC01F313FFD9F78013809039FF007FC049EB3FE049
14F0ED1FF85B16FCA34914FEA5127FA5123F16FCA26C7E16F8000F143F6C6C14F0ED7FE0
6C6C14C03A01FF81FF806C90B51200013F13FC010F13F00101138027387CB630>I<ED03
E04B7EA24B7EA34B7EA24B7EA34B7EA292B57EA34A8015F302038015E1A202078015C002
0F80ED807FA2021F80ED003F4A80023E131FA2027E80027C7F02FC814A7FA20101824A7F
49B77EA3498202C0C7FC010F824A147FA2011F8291C8123F4982013E151FA2017E82017C
8101FE83B500F80107B61280A4413A7DB948>65 D<B912F0A426007FF8C7FCEF1FF81707
17031701A21700A21878A3043C137C183CA41800167CA216FC150391B5FCA4ECF8031500
167CA2163C180FA3181EA293C7FCA2183EA2183C187CA218FCA2EF01F81703170F173FEE
01FFB9FC18F0A338397DB83F>69 D<B912C0A43A007FF800039338007FE0171F170F1707
A21703A21701A318F0EE7800A41800A216F8A21501150791B5FCA4ECF80715011500A216
78A693C8FCADB7FCA434397DB83C>I<B6D8FC03B612F0A426007FF8C70001EBE000B3A3
91B8FCA402F8C71201B3A6B6D8FC03B612F0A444397DB84B>72 D76
D<B500F80403B512F06E5EA26E5ED8007FF1E000A2D97BFF161EA201796D5DA201786D5D
A26E6C5DA36E6C4A5AA26E6C4A5AA26E6C4A5AA26E6C4A5AA26E6C141EA36E6D5BA26E6D
5BA26F6C5BA26F6C485AA36F6C485AA26F6C485AA26F6C48C7FCA2923803FF1EA36F13BC
A26F13F8A2705AA2705AA213FCB500FC6D4848B612F0A2EE0F80EE070054397DB85B>I<
EDFFF8020FEBFF80027F14F0903A01FFC01FFC010790380007FFD91FFC010113C0D93FF0
6D6C7E49486E7E49486E7E48496E7E48834890C86C7EA248486F1380A248486F13C0A200
3F18E0A348486F13F0A400FF18F8AC007F18F06D5DA3003F18E0A26D5D001F18C0A26C6C
4B13806C18006E5C6C6D4A5A6C5F6C6D4A5A6D6C4A5AD93FFC49485A6DB401075B0107D9
C01F90C7FC010190B512FC6D6C14F0020F1480020001F8C8FC3D3B7BB948>79
D<D907FF130E013FEBE01E90B5EAF83E0003ECFE7E3A07FC01FFFE390FF0001F4848130F
48481303491301007F140090C8FC167E5A163EA27F161E7F7F6D91C7FC13FC387FFFE014
FEECFFF06C14FE6F7E6C816C15F06C816C81C681133F010F801301D9000F1480EC007F03
0F13C01503818100F0157FA3163FA27E17807E167F6C16007E6D14FE01E0495A01F81303
9039FF801FF800FC90B512E0D8F83F5CD8F00749C7FC39E0007FF02A3B7BB935>83
D<003FB91280A4D9F800EBF003D87FC09238007FC049161F007EC7150FA2007C1707A200
781703A400F818E0481701A4C892C7FCB3AE010FB7FCA43B387DB742>I<EB3FFE0003B5
12E0000F14F8391FF00FFE003FEB03FF6D6C7F6E7FA26F7EA26C5A6C5AEA0380C8FCA2EC
3FFF010FB5FC137F3901FFF87F00071380380FFE00EA3FF85B485A12FF5BA415FF6D5A12
7F263FF00713F83B1FFC1FBFFFC0390FFFFE1F0003EBF80F39003FE0032A257DA42E>97
D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE03FFDAF00013804AEB7FC002
80EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE1FF8A217F06E133F6EEB7FE0
6E14C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9E00F13E0D9C00390C7FC2F3A
7EB935>I<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF812
1F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6C
EB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>I<EE
7F80ED7FFFA4150381AF903801FF81010F13F1013F13FD9038FFC07F0003EB001FD807FC
1307000F8048487F5B123FA2485AA312FFAA127FA27F123FA26C6C5B000F5C6C6C5B6C6C
4913C02701FF80FD13FE39007FFFF9011F13E1010313012F3A7DB935>I<903803FF8001
1F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC1FE05B003FEC0F
F0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F0
00071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025257DA42C>I<EC
1FF0903801FFFC010713FF90391FF87F8090383FE0FFD9FFC113C0A2481381A24813016E
1380A2ED3E0092C7FCA8B6FCA4000390C8FCB3ABB512FEA4223A7DB91D>I<161FD907FE
EBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48486C138F003F15CF4990
387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B512F8
6D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF8016E06C15F86C816C81
5A001F81393FC0000F48C8138048157F5A163FA36C157F6C16006D5C6C6C495AD81FF0EB
07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA41207
7EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01138014784A7E4A14C05CA25CA291
C7FCB3A3B5D8FC3F13FFA4303A7DB935>I<EA01F0EA07FC487EA2487EA56C5AA26C5AEA
01F0C8FCA913FF127FA412077EB3A9B512F8A4153B7DBA1B>I<13FFB5FCA412077EAF92
380FFFE0A4923803FC0016F0ED0FE0ED1F804BC7FC157E5DEC03F8EC07E04A5A141FEC7F
E04A7E8181A2ECCFFEEC0FFF496C7F806E7F6E7F82157F6F7E6F7E82150F82B5D8F83F13
F8A42D3A7EB932>107 D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>I<01FED97F
E0EB0FFC00FF902601FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA3C00
903887801F000749DACF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3A3B5
D8FC1FB50083B512F0A44C257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91381F
03FFDA3C011380000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430
257DA435>I<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D
7E48486D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA2
6C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>
I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDAF00113800007496C13C06C0180EB
7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06E
EBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA4
2F357EA435>I<49B4EB0780010FEBE00F013FEBF81F9039FFC07C3F0003EB803E3A07FE
000F7F4848EB07FF121F497F123F497F127FA25B12FFAA6C7EA36C7E5D6C7E000F5C6C6C
5B6C6C133F6CEBC0FD39007FFFF1011F13C10101130190C7FCAC037F13FEA42F357DA432
I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA2913880
7F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>I<90383FF0383903FFFEF8
000F13FF381FC00F383F0003007E1301007C130012FC15787E7E6D130013FCEBFFE06C13
FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE140700F0130114007E157E
7E157C6C14FC6C14F8EB80019038F007F090B512C000F8140038E01FF81F257DA426>I<
130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7FCB21578A815F86CEB80F0
14816CEBC3E090383FFFC06D1380903803FE001D357EB425>I<01FFEC3FC0B5EB3FFFA4
000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90387FFFFC011F13F0010313
8030257DA435>I<B539F001FFF8A4000390C7EA3F00161E6E133E6C153C6E137C6C1578
6E13F8017F5CECF001013F5C14F8011F495AA2ECFC07010F5CECFE0F010791C7FC6E5A6D
131E15BE6D13BC15FC6D5BA36E5AA26E5AA26E5AA26E5AA22D257EA432>I<B500F1B538
803FFFA43D07FE000FF80003E06C6C010715C082028015076C6E6C148015076C01C0ED0F
00826E485C017FED801E5D90273FF01E7F5B17C0DAF83E147C011F90393C3FE078037C14
F8903B0FFC781FF0F0A29139FEF00FF10107EDF9E002FF14FB6D496CB45AA24B7E6D5EA2
6D496C90C7FCA292C7FC6E5CA2023E147C023C143C40257EA445>I<B539F01FFFF0A400
0390398003F8006C01C013E06C1407D97FE05B6D6C485A6E48C7FC90381FFC3E010F5B90
3807FEFC6D6C5A5D6D5B6D5B6E7E6E7E814A7EA24A7E903801F3FFD903E37FD907C17FEB
0FC049486C7E4A6C7E013E80496D7E49130F00016E7EB590383FFFF8A42D257EA432>I<
B539F001FFF8A4000390C7EA3F00161E6E133E6C153C6E137C6C15786E13F8017F5CECF0
01013F5C14F8011F495AA2ECFC07010F5CECFE0F010791C7FC6E5A6D131E15BE6D13BC15
FC6D5BA36E5AA26E5AA26E5AA26E5AA292C8FCA25C141E003F133E387F803C38FFC07C14
7814F8EBC1F0EBC3E06C485A387D1F80D83FFFC9FCEA1FFCEA07F02D357EA432>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fn cmr9 9 87
/Fn 87 125 df0 D<4A7E4A7EA34A7EA34A7EA44A7E141BA2EC33FC1431
A2EC61FE1460A24A7E81A2D901807F153FA2D903007F151FA2010680150FA249801507A2
49801503A249801501A249801500A2498082A200011680163F487ED80FF0ECFFC0D8FFFE
010F13FFA330367EB535>3 D5 D<B812F0A3D87FC0C7127F16076C6CEC01F86C6C1400
000F16787F6C6C153812036D15186C7E6C7F170C6D7E6D7E131F6E14006D7E6D7EA26D7E
6D7E7F816EC8FC143E143C141814385C4A140C495A495A49C8FC010E151C4915185B4915
385B48481578485A90C912F8481501000E150748ED7FF0003FB7FC5AB8FCA22E337CB237
I<91393FE00FE0903A01FFF83FF8903A07E01EF83C903A1F800FF07E903A3F001FE0FE
017E133F4914C0485A1738484890381F8000ACB812C0A33B03F0001F8000B3A7486C497E
B50083B5FCA32F357FB42D>11 D<EC1FE0ECFFFC903803F01E90390FC00780EB1F809039
3F000FC0017E131F5BA2485AED0F8092C7FCA9ED0FC0B7FCA33901F8001F150FB3A6486C
EB1FE0267FFFC1B5FCA328357FB42B>I<EC1FF891B512C0903803F00F90380FC01FEB1F
80EB3F00137E5B150F485AACB7FCA33901F8000FB3A7486CEB1FE0267FFFE3B5FCA32835
7FB42B>I<DA1FE013FF9126FFFC0713E0903B03F01E1F80F0903B0FC0077E003CD91F80
5B90273F001FF8137E017E4A13FE495CA248485C030F147C95C7FCA9187EB912FEA33B01
F8000FC000187EB3A6486C496C13FF297FFFC1FFFE0F13F8A33D357FB440>I16 D<137813FCA212011203EA07F813E0
EA0FC0EA1F801300123C5A5A12400E0E71B326>19 D<003C13F0387E01F838FF03FCA2EB
83FEA2EA7F81383D80F600011306A40003130EEB000CA248131C00061318000E1338000C
1330001C13704813E0387001C00060138017177EB326>34 D<123C127EB4FCA21380A212
7F123D1201A412031300A25A1206120E120C121C5A5A126009177AB315>39
D<14C01301EB0380EB0F00130E5B133C5B5BA2485A485AA212075B120F90C7FC5AA2121E
123EA3123C127CA55AB0127CA5123C123EA3121E121FA27E7F12077F1203A26C7E6C7EA2
13787F131C7F130FEB0380EB01C01300124A79B71E>I<12C07E1270123C121C7E120F6C
7E6C7EA26C7E6C7EA27F1378137C133C133EA2131E131FA37F1480A5EB07C0B0EB0F80A5
14005BA3131E133EA2133C137C137813F85BA2485A485AA2485A48C7FC120E5A123C1270
5A5A124A7CB71E>I<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E
120C121C5A5A126009177A8715>44 DI<123C127E12FFA4127E
123C08087A8715>I<1530157815F8A215F01401A215E01403A215C01407A21580140FA2
15005CA2143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A2495AA291C7FC5B
A2131E133EA2133C137CA2137813F8A25B1201A25B1203A2485AA25B120FA290C8FC5AA2
121E123EA2123C127CA2127812F8A25A12601D4B7CB726>I<EB0FE0EB7FFCEBF83E3903
E00F803907C007C0EB8003000F14E0391F0001F0A24814F8A2003E1300007E14FCA500FE
14FEB2007E14FCA56CEB01F8A36C14F0A2390F8003E03907C007C0A23903E00F803900F8
3E00EB7FFCEB0FE01F347DB126>I<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2
497E007FB51280A319327AB126>I<EB3FC0EBFFF0000313FC380F80FF391E007F80001C
EB3FC048EB1FE048130F15F00060130712FC6C14F87E1403A3007E1307123CC7FC15F0A2
140F15E0EC1FC0A2EC3F801500147E5C495A5C495A495A495A49C7FC133E133C4913185B
485A48481330485A48C7FC001C1470001FB512F05A5AB612E0A31D327CB126>I<EB1FE0
EBFFFC4813FF3907E03F80390F001FC0001EEB0FE0001CEB07F0123F018013F8140313C0
1380A2381F0007C7FC15F0A2EC0FE015C0141FEC3F80EC7E00EB01F8EB7FE014FCEB003F
EC1FC0EC0FE0EC07F015F8140315FC140115FEA3127EB4FCA415FC48130312780070EB07
F86C14F0003C130F001FEB1FE0390FE03F800003B51200C613FCEB1FE01F347DB126>I<
EC01C0A214031407A2140F141FA2143F147F146F14CF1301EB038F140F1307130E130C13
1C13381330137013E013C0EA0180120313001206120E120C5A123812305A12E0B71280A3
C7380FC000A94A7E0107B51280A321337EB226>I<000C14C0380FC00F90B5128015005C
5C14F014C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC012
0E000CEB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC
0FC06C131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<
14FE903807FF80011F13E090383F00F0017C13703901F801F8EBF003EA03E01207EA0FC0
EC01F04848C7FCA248C8FCA35A127EEB07F0EB1FFC38FE381F9038700F809038E007C039
FFC003E0018013F0EC01F8130015FC1400A24814FEA5127EA4127F6C14FCA26C13010180
13F8000F14F0EBC0030007EB07E03903E00FC03901F81F806CB51200EB3FFCEB0FE01F34
7DB126>I<1230123C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C0
1401EC0380C7EA07001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91
C7FCA25BA55BA9131C20347CB126>I<EB0FE0EB7FFC90B5FC3903F01F803907C007C039
0F0003E0000EEB01F0001E1300001C14F8003C1478A3123EA2003F14F86D13F0EBC001D8
1FF013E09038F803C0390FFE07803907FF0F006C13DE6C13F87EEB3FFE8001F713C0D803
E313E0D8078013F0390F007FF8001E131F003EEB07FC003C1303481301EC007E12F84814
3EA2151EA37E153C1278007C14787E6C14F0390F8003E03907F01FC00001B5120038007F
FCEB1FE01F347DB126>I<EB0FE0EB7FF8EBFFFE3803F83F3907E00F80390FC007C0D81F
8013E0EC03F0EA3F0048EB01F8127EA200FE14FC1400A415FEA5007E1301A2127F7E1403
EA1F80000F13073807C00E3803E01C3801F03838007FF090381FC0FC90C7FC1401A215F8
A215F01403001F14E0383F800715C0140FEC1F809038003F00001C137E381F01FC380FFF
F0000313C0C690C7FC1F347DB126>I<123C127E12FFA4127E123C1200B0123C127E12FF
A4127E123C08207A9F15>I<123C127E12FFA4127E123C1200B0123C127E12FE12FFA312
7F123F1203A412071206A3120E120C121C1238123012701260082F7A9F15>I<007FB812
C0B912E0A26C17C0CCFCAC007FB812C0B912E0A26C17C033147C9C3C>61
D<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA202707FEC601FA202E0
7FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010FB5FCA249800118C77E
A24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8FFFE49B512E0A33336
7DB53A>65 D<B7FC16E016F83A03FC0003FE0001EC00FFEE7F80EE3FC0161F17E0160F17
F0A617E0161F17C0EE3F80EE7F0016FEED03FC90B612F05E9039FC0007FCED00FEEE3F80
EE1FC0EE0FE017F0160717F8160317FCA617F81607A2EE0FF0EE1FE0163FEE7FC0000391
3803FF00B75A16F816C02E337DB236>I<DA03FE130C91393FFF801C91B512E0903A03FE
01F83C903A0FF0003C7CD91FC0EB0EFCD97F80130701FEC7120348481401000315005B48
48157C485A173C485A171C123F5B007F160CA390C9FC481600AB7E6D150CA3123F7F001F
161C17186C7E17386C6C15306C6C15706D15E012016C6CEC01C0D97F80EB0380D91FC0EB
0F00D90FF0131ED903FE13FC0100B512F0023F13C0DA03FEC7FC2E377CB437>I<B77E16
F016FE3A01FE0001FF00009138003FC0EE0FE0707E707E707E707E177E177FEF3F80A2EF
1FC0A3EF0FE0A418F0AA18E0A3171F18C0A21880173F18005F17FE5F4C5AEE07F04C5AEE
3FC000014AB45AB748C7FC16F8168034337EB23B>I<B812C0A3D803FCC7127F0001150F
EE03E01601A21600A21760A403061330A41700150EA2151E157E90B512FEA39038FC007E
151E150EA21506170CA3171892C7FCA41738A21770A217F01601160316070003157FB812
E0A32E337DB234>I<B81280A3D803FCC7FC0001151FEE07C01603A21601A21600A41760
150CA31700A2151CA2153C15FC90B5FCA3EBFC00153C151CA2150CA592C8FCAB487EB512
FEA32B337DB232>I<DA03FE130C91393FFF801C91B512E0903A03FE01F83C903A0FF000
3C7CD91FC0EB0EFCD97F80130701FEC7120348481401000315005B4848157C485A173C48
5A171C123F5B007F160CA390C9FC4893C7FCAA0303B512E07E7F92390003FE00705A123F
7F121FA26C7E7F12076C7E7F6C6C14036C7E6D6C1307D91FC0EB0E7CD90FF0EB1C3CD903
FEEBF81C0100B5EAF00C023F01C0C7FCDA03FEC8FC33377CB43C>I<B5D8FE03B512F8A3
000190C73807FC006C486E5AB390B7FCA349C71203B3A3486C4A7EB5D8FE03B512F8A335
337EB23A>II<017FB5FCA3
9038003FE0EC1FC0B3B1127EB4FCA4EC3F805A0060140000705B6C13FE6C485A380F03F0
3803FFC0C690C7FC20357DB227>I<B500FE903807FFF8A3000190C7000113006C48EC00
FC17F04C5A4C5A4CC7FC160E5E5E5E5E4B5A4B5A4BC8FC150E5D5D15F84A7E14034A7EEC
0EFF5C4A6C7E4A6C7EECE01FD9FFC07F4A6C7E4A6C7E5B6F7E6F7EA26F7E707EA2707E70
7E160F83707E707EA283486C913807FF80B500FE013F13FCA336337EB23C>II<D8FFFC923801FFF86D5DA20003EFFE00D801BFED06FCA3D99F80140CA2D98FC0
1418A3D987E01430A2D983F01460A3D981F814C0A3D980FCEB0180A2027EEB0300A36E13
06A26E6C5AA36E6C5AA36E6C5AA26E6C5AA36E6C5AA3913800FD80A2037FC7FCA3486C13
3ED80FF04B7EB5011C90387FFFF8A33D337CB246>I<D8FFFE91381FFFF87F80C6030013
006E143CD9DFE01418EBCFF0A2EBC7F8EBC3FCA2EBC1FEEBC0FF6E7EA26E7E6E7EA26E7E
6E7E6E7EA26E7E6E7EA2ED7F80ED3FC0ED1FE0A2ED0FF0ED07F8A2ED03FCED01FEED00FF
A2EE7F98EE3FD8A2EE1FF8160F1607A216031601A2486C1400D807F81578B500C01438A2
171835337EB23A>I<EC07FC91387FFFC0903901FC07F0903907E000FCD90F80133E013F
C76C7E017E6E7E496E7E48486E7E48486E7EA248486E7E000F8249157E001F167FA24848
ED3F80A2007F17C0A290C9121FA24817E0AB6C17C06D153FA3003F17806D157FA2001F17
006D5D000F5E6C6C4A5AA26C6C4A5A00015E6C6C4A5A017E4A5A6D4A5AD91FC0017FC7FC
D907E013FC903901FC07F09039007FFFC0DA07FCC8FC33377CB43C>I<B612FEEDFFC016
F03A03FC0007FC0001EC00FE167FEE3F80EE1FC017E0160FA217F0A617E0A2EE1FC0A2EE
3F80EE7F0016FEED07F890B65A168001FCC9FCB3A2487EB512F8A32C337DB234>I<EC07
FC91387FFFC0903901FC07F0903907E000FC4948137E013FC7EA1F80017E6E7E496E7E48
486E7E00038249140148486E7E000F8249157E001F167FA24848ED3F80A2007F17C0A390
C9121F4817E0AB6C17C0A26D153FA2003F1780A26D157F001F1700A2270FE001F013FE00
07D907FC5B9039F00E0E013B03F80C0703F8000190391C0383F03B00FC180187E0017EEC
CFC0013FECDF8090271F9C00FFC7FCD907EC13FC902701FE07F013609038007FFF913807
FC7091C7007813E0A2EE7C01EE7E0393387F07C0EE3FFFA21880821800705A705AEE01F0
33447CB43C>I<B612FCEDFF8016F03A01FE0007FC0000EC01FEED007F707E707E83160F
83A65FA24C5AA24C5A047EC7FC4B5AED0FF090B612C093C8FC9039FE001FC0ED07F06F7E
6F7E150082167E167FA583A5180C17C0A2043F131C486C1618B500FEEB1FE0040F133893
3807F070C93801FFE09338003F8036357EB239>I<90381FE00390387FFC0748B5FC3907
F01FCF390F8003FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13C0
EA3FF013FF6C13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF140302001380
157F153FED1FC0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C05B
39F1FC03F800E0B512E0011F138026C003FEC7FC22377CB42B>I<007FB712FEA3903980
07F001D87C00EC003E0078161E0070160EA20060160600E01607A3481603A6C71500B3AB
4A7E011FB512FCA330337DB237>I<B500FE90381FFFF8A3000190C813006C48153C1718
B3AF1738017F1530A217706D6C1460011F15E06E495A010F14036D6C495A6D6C49C7FCD9
01FC131E6DB413FC91383FFFF0020F13C0020190C8FC35357EB23A>I<B500F0903803FF
F8A3D807FEC8EA7FC06C48ED1F000001161E6D151C00001618A26D15386D1530A26D6C5C
A26E14E0011F5DA26D6C495AA28001074AC7FCA26D6C1306A28001015CA26E131C010014
18806E5BA2ED8070023F1360A26E6C5AA215E1020F5BA2DA07F3C8FCA215FBEC03FEA36E
5AA26E5AA31570A235357EB23A>I<B5D8F007B539800FFFF0A3000390C7273FF0000113
00D801FC6E48EB007C1A386D140F00001930836D020715706D1860A26E496C14E0013F60
A26ED919FC1301011F60A26ED930FE1303010F95C7FCA26ED9607F5B01071706A26E9039
C03F800E0103170CA2913BFC01801FC01C01011718A2913BFE03000FE03801001730A2DA
FF06EB07F0027F5EA2038CEB03F8023F5EA203D8EB01FC021FEDFD80A203F0EB00FF020F
93C8FCA24B800207157EA24B143E0203153CA24B141C020115184C357FB24F>I<267FFF
FC90B512C0A3000101E090381FF80026007F80EB0FC0013F6E5A6E91C7FC6D6C130E010F
140C6E5B6D6C133801035C6E13606D6C13E06D6C485A5EDA7F83C8FCEC3FC715C6EC1FEC
EC0FFC5D14076E7EA26E7E815C6F7E9138063FC0140E4A6C7E9138180FF0EC380702707F
91386003FCECC0010101804A6C7E49C77E4981010E6E7E010C6E7E131C496E7E01786E7E
13FCD807FEEC1FFEB56C90B512F8A335337EB23A>I<003FB612FCA39039F80007F813C0
90C7EA0FF0003EEC1FE0123C0038EC3FC00078EC7F801270EDFF004A5AA20060495AA24A
5A4A5AC7FC4A5A4A5AA24A5A4AC7FCA2495A495AA2495A495AA24948130C495AA2495A49
C7FCA24848141CA2485A485A1638485A4848147816F84848130148481307153FB7FCA326
337CB22F>90 DI<0003130C48131C
000E133848137000181360003813E0003013C0EA700100601380A2EAE00300C01300A400
DE137800FF13FCEB83FEA2EA7F81A2383F00FC001E1378171774B326>II<EB7F803803FFF0380F80FC381C003E003F133F6D6C7E
6E7EA26E7EEA1F00C7FCA4EB01FF131FEBFF873803FC07EA0FF0EA1FC0EA3F80127F1300
4815C05AA3140FA26C131F6C133B3A3F8071F180391FC1E1FF2607FFC013003900FE003C
22237DA126>97 D<EA03F012FFA312071203AEEC3F80ECFFE09038F3C0F89038F7007E01
FE7F49EB1F8049EB0FC05BED07E016F0A2150316F8AA16F0150716E0A2ED0FC07F6DEB1F
8001ECEB3F0001CF137C90388381F8903801FFE0C76CC7FC25357EB32B>I<EB07F8EB3F
FF9038FC07C03901F000E03903E003F03807C007120FEA1F80123F90380003E04890C7FC
A2127E12FEAA127FA26C14187F001F14386D1330000F14706C6C13E03903F001C03900FC
0F8090383FFE00EB07F01D237EA122>I<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC
0F3901F003BF3907E001FF48487E48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C
5BA26C6C5B6C6C4813803A03F007BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>I<
EB0FE0EB7FFCEBF83F3903F00F80D807E013C0390FC007E0381F800315F0EA3F00140148
14F8127EA212FEA2B6FCA248C8FCA5127E127FA26C1418A26C6C1338000F14306D13706C
6C13E03901F003C03900FC0F00EB3FFEEB07F01D237EA122>I<EB01FCEB07FF90381F07
8090383E0FC0EB7C1F13FCEA01F8A20003EB070049C7FCACB512F0A3D803F0C7FCB3A748
7E387FFFE0A31A357FB417>I<151F90391FC07F809039FFF8E3C03901F07FC73907E03F
033A0FC01F83809039800F8000001F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48
C7FCEBF07C380EFFF8380C1FC0001CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC
4880381F0001003EEB007F4880ED1F8048140FA56C141F007C15006C143E6C5C390FC001
F83903F007E0C6B51280D91FFCC7FC22337EA126>II<EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FCAAEA07E012FFA3120F
1207B3A6EA0FF0B5FCA310337EB215>I<EB03C0EB07E0EB0FF0A4EB07E0EB03C090C7FC
AAEB03F013FFA313071303B3B01238127C00FE13E0130714C0130F007C138038381F00EA
1FFCEA07F0144384B217>I<EA03F012FFA312071203AF913803FFE0A36E1300EC00F8EC
01E05D4A5A020FC7FC141C5C5C14F0EBF3F8EBF7FC13FEEBFC7EEBF87F496C7E141F6E7E
8114076E7E8114016E7E81486CEBFF80B500C313F0A324347EB329>I<EA07E012FFA312
0F1207B3B3A7EA0FF0B5FCA310347EB315>I<2703F01FE013FF00FF90267FF80313C090
3BF1E07C0F03E0903BF3803E1C01F02807F7003F387FD803FE1470496D486C7EA2495CA2
495CB3486C496C487EB53BC7FFFE3FFFF0A33C217EA041>I<3903F01FC000FFEB7FF090
38F1E0FC9038F3807C3907F7007EEA03FE497FA25BA25BB3486CEB7F80B538C7FFFCA326
217EA02B>I<EB07F0EB3FFE9038FC1F803901F007C03903C001E000078048486C7E48C7
127CA248147E003E143E007E143FA300FE1580A8007E1500A36C147EA26C147C6D13FC6C
6C485A00075C3903F007E03900FC1F80D93FFEC7FCEB07F021237EA126>I<3903F03F80
00FFEBFFE09038F3C0F89038F7007ED807FE7F6C48EB1F804914C049130F16E0ED07F0A3
ED03F8A9150716F0A216E0150F16C06D131F6DEB3F80160001FF13FC9038F381F89038F1
FFE0D9F07FC7FC91C8FCAA487EB512C0A325307EA02B>I<903807F00390383FFC07EBFC
0F3901F8038F3807E001000F14DF48486CB4FC497F123F90C77E5AA25A5AA9127FA36C6C
5B121F6D5B000F5B3907E003BF3903F0073F3800F81EEB3FF8EB0FE090C7FCAAED7F8091
380FFFFCA326307DA029>I<3803E07C38FFE1FF9038E38F809038E71FC0EA07EEEA03EC
A29038FC0F8049C7FCA35BB2487EB512E0A31A217FA01E>I<EBFF06000713CE381F00FE
003C133E48131E140E5A1406A27EA200FE90C7FC6C7EEA7FFC383FFFC014F0000F7F6C7F
C67FEB0FFF1300EC3F8000C0131F140F6C1307A37E15006C5B6C130E6C5B38F7807838E1
FFE038C07F8019237EA11E>I<1330A51370A313F0A21201A212031207381FFFFEB5FCA2
3803F000AF1403A814073801F806A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>I<D8
03F0133F00FFEB0FFFA30007EB007F000380B35DA35D12016D4813800000903803BFFC90
387E073FEB1FFED907F8130026227EA02B>I<B5EBFFF0A3D80FF0EB3F800007EC1F0000
03140E150C6D131C00011418A26C6C5BA26D1370017E1360137F6D5BA290381F8180A214
C3010F90C7FCA2EB07E6A214FE6D5AA26D5AA36D5AA2146024217E9F29>I<B53A1FFF81
FFF0A33C07F801FC003F8001F049EB1E0000030100141C816C6C017C1318A26D017E1338
000002FE1330A290267E01FF5B159F168090263F030F5BA216C0903A1F8607C180A202C6
13E390260FCC0390C7FCA2D907FC13F6ECF80116FE6D486C5AA36D481378A36D48133034
217F9F37>I<B53801FFF8A32603FE0013806C48EB7C0000001478017E1370017F5B9038
3F81C090381F8380D90FC3C7FCEB07E614FE6D5A6D5A6D7E80805B9038039F809038071F
C09038060FE0EB0C0790381C03F0496C7E01707FEBF000000180000FECFF8026FFFC0313
FCA326207F9F29>I<3A7FFF807FF8A33A07F8001FC00003EC0F800001EC070015066C6C
5BA26D131C017E1318A26D5BA2EC8070011F1360ECC0E0010F5BA2903807E180A214F301
0390C7FC14FBEB01FEA26D5AA31478A21430A25CA214E05CA2495A1278D8FC03C8FCA213
06130EEA701CEA7838EA1FF0EA0FC025307F9F29>I<003FB512F0A2EB000F003C14E000
38EB1FC00030EB3F800070137F1500006013FE495A13035CC6485A495AA2495A495A49C7
FC153013FE485A12035B48481370485A001F14604913E0485A387F000348130F90B5FCA2
1C207E9F22>II I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fo cmbx12 12 32
/Fo 32 121 df<EC03C01407141F147FEB03FF133FB6FCA413C3EA0003B3B3ADB712FCA5
264177C038>49 D<ECFFE0010F13FE013F6D7E90B612E0000315F82607FC0313FE3A0FE0
007FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13F07F17F881A46C5A
6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E4B5A4B5A4A90C7FC
4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014F0495A495A49C8FC
017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038>I<ECFFF0010713
FF011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E81D80FF86D138013FE001F16
C07FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A5B020F1380902607FFFEC7FC
15F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017E0A26F13F0A217F8A3EA0FC0
EA3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F80491380D81FF0491300D80F
FEEBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E02D427BC038>I<163FA25E5E
5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14F8
EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E5A
12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>I<0007150301E0143F01FF
EB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5FC01C7
14C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F6C4815E0C8
FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC74813C012
3E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480010F01
FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13FC49B6FC01079038807F8090
390FFC001FD93FF014C04948137F4948EBFFE048495A5A1400485A120FA248486D13C0EE
7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000FF017F13E091B512F89039F9
F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13E0A24915F0A317F85BA4127F
A5123FA217F07F121FA2000F4A13E0A26C6C15C06D4913806C018014006C6D485A6C9038
E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D427BC038>I<EE1F80A24C7E
A24C7EA34C7EA24B7FA34B7FA24B7FA34B7F169F031F80161F82033F80ED3E07037E8015
7C8203FC804B7E02018115F0820203814B137F0207815D173F020F814B7F021F8292C77E
A24A82023E80027E82027FB7FCA291B87EA2498302F0C8FCA20103834A157F0107834A15
3FA249488284011F8491C97E4984133E017E82B6020FB612F0A54C457CC455>65
D<DCFFF01470031F01FF14F04AB6EAE0010207EDF803023FEDFE0791B539E001FF0F4949
C7EA3F9F010701F0EC0FFF4901C0804990C87E4948814948814948167F4849163F484916
1F5A4A160F485B19074890CAFC19035A5BA2007F1801A34994C7FC12FFAE127F7F1AF0A2
123FA27F6C18011AE06C7F19036C6D17C06E16077E6C6DEE0F806C6DEE1F006D6C5E6D6C
167E6D6C6C5D6D6D4A5A6D01F0EC07F0010101FEEC1FE06D903AFFF001FF80023F90B6C7
FC020715FC020115F0DA001F1480030001F8C8FC44467AC451>67
D<BA12F8A485D8001F90C71201EF003F180F180318011800A2197E193EA3191EA21778A2
85A405F890C7FCA316011603161F92B5FCA5ED001F160316011600A2F101E01778A2F103
C0A494C7FC1907A21A80A2190FA2191FA2193FF17F0061601807181F4DB5FCBBFC61A443
447DC34A>69 D73
D<B812F8EFFFC018F818FE727ED8001F90C7003F13E005037F05007F727E727E727EA286
84A286A762A24E90C7FCA24E5A61187F943801FFF005075B053F138092B7C8FC18F818E0
18F892C77FEF3FFF050F7F717F717FA2717FA2717FA785A61B0F85A2187F73131F72141E
B700E06DEB803E72EBE0FC72EBFFF8060114F0726C13E0CC0007138050457DC354>82
D<903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7E
A26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC0100
0313E0000F1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013E
EBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97
DI<EC3FFC49B512C0010F14F0013F14FC90
397FF003FE9039FFC001FF0003495A48494813805B120F485AA2485A6F1300007F6E5AED
00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F16806D140F6C6DEB1F00
6C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC9038003FF82A2F7CAD32
I<EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEBFF8F013F14CF9039FFF8
07FF48EBC00148903880007F4890C7123F4848141F49140F121F485AA3127F5BA212FFAC
127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6CD9C00314FC6C9038F01F
EF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC43E>I<EC3FF80103B57E
010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C7E48486D1380485A001F
ED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0C9FCA5127FA27FA2123F
17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01F0EB3F0090397FFE01FE
011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33>II<DAFFE0137E
010F9039FE03FF80013FEBFF8F90B812C048D9C07F133F489038001FF84848EB0FFC4848
903907FE1F80001F9238FF0F00496D90C7FCA2003F82A8001F93C7FCA26D5B000F5D6C6C
495A6C6C495A6C9038C07FF04890B55A1680D8078F49C8FC018013E0000F90CAFCA47F7F
7F90B612C016FC6CEDFF8017E06C826C16FC7E000382000F82D81FF0C77ED83FC0140748
48020113808248C9FC177FA46D15FF007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B
07FFC001FFF0000190B612C06C6C92C7FC010F14F8D9007F90C8FC32427DAC38>I<137C
48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7F
FFA512037EB3AFB6FCA518467CC520>105 D<EB7FC0B5FCA512037EB293387FFFE0A593
380FE0004C5A4CC7FC167E5EED03F8ED07E04B5A4B5A037FC8FC15FEECC1FCECC3FE14C7
ECDFFF91B57E82A202F97F02E17F02C07FEC807F6F7E826F7E816F7F836F7F816F7F8370
7E163FB60003B512F8A535457DC43B>107 D<EB7FC0B5FCA512037EB3B3B3A3B61280A5
19457CC420>I<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002
816E4880913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C
019E6D013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5
572D7CAC5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F
801F000390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7C
AC3E>I<EC1FFC49B512C0010714F0011F14FC90397FF80FFF9026FFC0017F48496C7F48
48C7EA3FE000078248486E7E49140F001F82A2003F82491407007F82A400FF1780AA007F
1700A46C6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF8
0F90C7FC6DB55A010F14F8010114C09026001FFCC8FC312F7DAD38>I<90397FC00FF8B5
90B57E02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A
15C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B
6E4913806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9
FCADB67EA536407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F
1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5
272D7DAC2E>114 D<90391FFC038090B51287000314FF120F381FF003383FC00049133F
48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14
FC6C800003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27E
A26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007
FEC7FC232F7CAD2C>I<EB01E0A51303A41307A2130FA2131FA2133F137F13FF1203000F
90B51280B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C0137F150790393FF80F809039
1FFC1F006DB5FC6D13FC01015B9038003FE023407EBE2C>I<D97FC049B4FCB50103B5FC
A50003EC000F6C81B3A85EA25EA25E7E6E491380017FD901F713FE9138F807E76DB512C7
010F1407010313FE9026007FF0EBFC00372E7CAC3E>I<B6903803FFFCA5000101E09038
003E006C163C80017F5D8017F8013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F
6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF
6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578362C7EAB3B>I<B5D8FE1FB539801FFFF0
A500019027C0003FE0C7EA7C007114786E17F86C6F6C5C6E1601017F6E6C5CA26E011F14
03013F6F5C6E013F1407011F6F5CA26E0179140F010F048090C7FC6E01F95C6D02F0EBC0
1E15806D902681E07F5B18E003C3157C6D9139C03FF07815E76DDA801F5B18F803FF14F9
6E9039000FFDE018FF6E486D5BA36E486D5BA26E486D90C8FCA24B7F02075DA26E48147C
4B143C4C2C7EAB51>I<B500FE90383FFFF0A5C601F0903803E0006D6C495A013F4A5A6D
6C49C7FC6E5B6D6C137E6DEB807C6D6D5A6DEBC1F0EDE3E06DEBF7C06EB45A806E90C8FC
5D6E7E6E7F6E7FA24A7F4A7F8291381F3FFCEC3E1F027C7F4A6C7E49486C7F01036D7F49
487E02C08049486C7F49C76C7E013E6E7E017E141FB500E090B512FCA5362C7EAB3B>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fp cmr10 10 14
/Fp 14 122 df<D90FF813C090383FFE0190B512813903F807E33907E000F74848137F48
48133F48C7121F003E140F007E1407A2007C140312FC1501A36C1400A37E6D14006C7E7F
13F86CB47E6C13F8ECFF806C14E06C14F86C14FEC680013F1480010714C0EB007F020713
E0EC007FED3FF0151F150FED07F8A200C01403A21501A37EA216F07E15036C15E06C1407
6C15C06C140F6DEB1F80D8FBF0EB3F00D8F0FE13FE39E03FFFF8010F13E0D8C00190C7FC
253D7CBA2E>83 D<B6903807FFFEA3000101809038007FE06C90C8EA1F80EF0F001706B3
B2170E6D150C80171C133F17186D6C14385F6D6C14F06D6C5C6D6C495A6D6CEB07806D6C
49C7FC91387F807E91381FFFF8020713E09138007F80373B7DB83E>85
D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C6C7E13E06E7EA26E7E6C5A6C5A
C8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FEA314
01A26C13036CEB077C903980063E18383FC01E3A0FE0781FF03A03FFF00FE03A007F8007
C026277DA52A>97 D<ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E078F9038F8
01EF3903F0007F4848133F4848131FA24848130F123F90C7FC5AA2127E12FEAA127E127F
A27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C078F90381FFE
0FD907F813C0283B7DB92E>100 D<EB07F8EB1FFF90387C0FC03901F803E03903F001F0
D807E013F8380FC0004848137CA248C7127E153E5A153F127E12FEA3B7FCA248C8FCA512
7EA2127FA26C14037F001F14076C6C13060007140E6D131CD801F013386C6C137090387E
03E090381FFF80903803FC0020277EA525>I<147E903803FF8090380FC1E0EB1F879038
3F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A3
1C3B7FBA19>I<EA0380EA0FE0487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA
487EB512C0A312387EB717>105 D<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0F
F3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A329257EA42E>
110 D<EB03FE90380FFF8090383E03E09038F800F84848137C48487F48487F4848EB0F80
001F15C090C712074815E0A2007EEC03F0A400FE15F8A9007E15F0A2007F14076C15E0A2
6C6CEB0FC0000F15806D131F6C6CEB3F006C6C137EC66C13F890387E03F090381FFFC0D9
03FEC7FC25277EA52A>I<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03
E613EE9038EC03E09038FC0080491300A45BB3A2487EB512F0A31C257EA421>114
DI<1318A5
1338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580
EB7C03017E13006D5AEB0FFEEB01F81A347FB220>I<B538803FFEA33A0FF8000FF06C48
EB07E00003EC03C06D148000011500A26C6C1306A26D130E017E130CA26D5BA2EC803801
1F1330A26D6C5AA214E001075BA2903803F180A3D901FBC7FCA214FF6D5AA2147CA31438
A227257EA32C>118 D<B538803FFEA33A0FF8000FF06C48EB07C00003EC03806C7E1600
7F00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070010F1360A26D6C5AA214F101035B
A2D901FBC7FCA214FF6D5AA2147CA31438A21430A214701460A25CA2EA7C0100FE5B1303
91C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357EA32C>121
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fq cmsy8 8 1
/Fq 1 4 df<130C131EA50060EB01800078130739FC0C0FC0007FEB3F80393F8C7F0038
07CCF83801FFE038007F80011EC7FCEB7F803801FFE03807CCF8383F8C7F397F0C3F8000
FCEB0FC039781E078000601301000090C7FCA5130C1A1D7C9E23>3
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fr cmr12 12 9
/Fr 9 122 df76
D<003FB500E0011FB5FCA3C691C7000713E0D93FFC020190C7FC6D4815FC010F6F5A6D6C
15E0A26D6C4A5A6D6C5D4DC8FC6D6D5B6E6C13065F6E6C131C6E6C13185F6E6C13706E6C
13605F913803FE01DA01FF5B4CC9FC6E1387ED7FC616CCED3FFC6F5A5E6F7E6F7EA26F7E
82A203067F150E92380C7FC04B6C7E15389238301FF04B6C7E15E04B6C7E4A486C7E1403
4B6C7E02066D7F140E020C6E7E4A6E7E143802306E7E4A6E7E14E04A6E7E49486E7E1303
49C86C7E496F7F5B496C8201FF83000701E0020313F8B500F8021FEBFFF0A344447EC349
88 D<EB07FC90383FFF809038F80FE03903C003F048C66C7E000E6D7ED80FC0137E486C
137F6D6D7EA36F7EA26C5AEA0380C8FCA4EC0FFF49B5FC90380FFE1FEB3FC0EBFF00EA03
FC485A485A485A485A127F5B176048C7FCA3153FA36D137F007F14EF6D9038C7E0C0003F
13013A1FE00783F13B07F81E03FF802701FFFC0113003A001FE0007C2B2E7CAC31>97
D<EB01FE903807FFC090381F03F090387E00FC49137E48487F485A4848EB1F80000F15C0
49130F121F484814E01507A2007F15F090C7FCA25AA390B6FCA290C9FCA67EA27FA2123F
16306C7E1670000F15606D14E06C6C14C0000314016C6CEB03806C6CEB0700013E131E90
381F80F8903803FFE0010090C7FC242E7DAC2B>101 D105
D<EC7F80903803FFF090380FC0FC90383E001F496D7E496D7E48486D7E48486D7E48486D
7E000F81A24848147E003F157FA290C87E481680A44816C0AA6C1680A26D147F003F1600
A2001F157E6D14FE000F5D6D130100075D6C6C495A6C6C495A6C6C495A013E49C7FC9038
1FC0FE903807FFF89038007F802A2E7DAC31>111 D<3903F803F000FFEB1FFCEC3C3EEC
707F0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FE
A3202C7DAB26>114 D<B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600160E12
00160C017F5CA280013F5CA26E1370011F146080010F5CA2ECF00101075CA26D6C48C7FC
A26E5A01011306A26D6C5AA214FF6E5AA215B8EC3FB015F06E5AA36E5AA26E5AA36EC8FC
2E2C7EAA33>118 D<B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600160E0000
150C6D141C6D1418A26E1338013F1430A26D6C5BA26E13E0010F5CA26D6C485AA2ECF803
010391C7FCA2903801FC06A2ECFE0E0100130CA2EC7F18A215B8EC3FB0A2EC1FE0A36E5A
A26E5AA36EC8FCA21406A35CA25CA2123C007E5BB4FC5CA25CEAFE01387C0380D87007C9
FCEA3C1EEA0FFCEA03F02E3F7EAA33>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fs cmr17 17.28 18
/Fs 18 122 df<120FEA3FC0EA7FE012FF13F0A313F8A2127F123FEA0F381200A71378A2
1370A313F013E0A2120113C012031380120713005A121EA25A5A127012300D28748B24>
44 D<B500FC071FB51280A36E61C6F58000013F51C7FCD91DFFF177FCA2011C6D18E7A3
6E6CEF01C7A36E6CEF0387A36E6CEF0707A26E6C170EA36E6C171CA36E6C1738A36E6C17
70A26E6D16E0A36F6CED01C0A36F6CED0380A36F6CED0700A26F6C150EA36F6C5DA36F6C
5DA36F6C5DA26F6D5CA3706C495AA3706C495AA3706C49C7FCA2706C130EA3706C5BA370
6C5BA3706C5BA3706D5AA294387FC1C0A394383FE380A3DD1FF7C8FCA3EF0FFEA2013E6F
5AA2137F715A2601FFC04F7E000701F896383FFF80B66C6D48023FB61280A3715A696278
E17A>77 D<EC3FF0903803FFFE010F6D7E90393FC03FE090397E0007F801F86D7ED801E0
6D7E48486D7E48486E7E48C86C7E7F01F06E7E487E6D6E7EA3707EA36C5AEA03E0C9FCA6
167FED7FFF020FB5FC91387FF807903801FF80903807FC00EB1FF0EB7FC0495AD803FEC7
FC485A120F5B485A485AA2484817E0A312FF5BA2160FA3161F6D141B007F153B16736D91
3971FC01C06C6C14E1001FEC01C1D80FFC903A0780FE03806C6C903A0F00FF07002701FF
807E6DB4FC27007FFFF86D5A011F01E0EB1FF8010190C7EA07E03B417ABF42>97
D<4AB47E020F13F8023F13FE9139FF007F80D903FCEB07E0D907F0EB01F0D91FE0EB0078
49488049488049C87E48485D4915FF00034B138048485CA2485AA2485AA2003F6F130049
EC007C94C7FC127FA35B12FFAD127F7FA4123F7FA2001FEE01C07F000F16036D16801207
6C6C15076D160000015E6C6C151E6D6C5C6D6C5C6D6C5CD90FF8495AD903FCEB07C0903A
00FF803F8091263FFFFEC7FC020F13F80201138032417CBF3A>99
D<181EEF3FFEEE07FFA4EE000F1703A21701B3AAEDFF80020F13F8023F13FE9139FF803F
81903A03FC0007C14948EB01E1D91FE0EB00F94948147D4948143D49C8121F4848150F49
1507120348481503491501120F121F5BA2123F5B127FA45B12FFAD127F7FA3123FA27F12
1FA26C6C1503A26C6C150712036D150F6C6C151F0000163D137F6D6CECF9FF6D6CEB01F1
D90FF0D903C113C06D6CD90F81EBFF80D901FFEB7F019039007FFFFC021F13E002010100
91C7FC41657CE349>I<EC03FE91381FFFE091B512F8903901FE03FE903A07F0007F8049
486D7ED93FC06D7E49C76C7E496E7E49140348488148481401000782491400000F828348
5A1880123F49153FA2007F17C0A35BA212FF90B8FCA30180CAFCA9127F7FA3123FA27F12
1FEF01C06C7E17036C6C1680A26C6C15070001EE0F006D150E6C6C151E6D6C5C6D6C5C6D
6C5CD907F0EB03E0D903FC495A902700FF803FC7FC91383FFFFC020F13F0020113803241
7CBF3A>II<133C13FF487F487FA66C5B6C90C7FC
133C90C8FCB3A2EB03C0EA07FF127FA41201EA007FA2133FB3B3AC497E497EB612E0A41B
5F7DDE23>105 D108 D<D903C0D9FFC0EC07FED807FF010301F891381FFFC0B5010F01
FE027F13F0923D3F00FF8001F807FC0378903B3FC003C001FEDAC1E090261FE00FC77E00
01D9C3C090260FF01E6E7ED8007F49902607F81C6E7E02C7C75CD93FCE6E6C486E7E02CC
166002DC16E002D85E02F8DA01FF6F7E4A5EA24A93C8FCA44A5DB3B3496C4A6C4B7E496C
4A6D4A7EB6D8F007B6D8803FB512FCA4663F7CBE6F>I<D903C0EB7FE0D807FF903803FF
FCB5010F13FFDB3F0013C00378EB1FE04B6D7E0001D9C1C06D7E27007FC3808002C7C712
03D93FCE81170114DC14D802F86E7E5CA35CA35CB3B3496C4A7F496C4A7FB6D8F003B612
C0A4423F7DBE49>I<EDFF80020F13F8023F13FE9139FF007F80D903FCEB1FE0D907F0EB
07F0D90FC0EB01F8D93F80EB00FE49C8127F017E81496F7E48486F7E0003834915070007
8348486F7EA2001F83491501A2003F83A348486F7EA400FF1880AC007F1800A26D5DA200
3F5FA36C6C4B5AA36C6C4B5A00075FA26C6C4B5A6C6C4B5AA26C6C4B5A017F4BC7FC6D6C
14FE6D6C495AD90FF0EB07F8D903FCEB1FE0D900FFEB7F806EB5C8FC020F13F8020113C0
39417CBF42>I<D903C0EB7FC0D807FF903807FFFCB5011F13FFDB7F0013C003F8EB1FF0
DAC3E0EB07F80001D9C7806D7E26007FCFC76C7E02DE6E7ED93FFC6F7E4A6F7E4A82181F
4A82727E5C727EA2727EA3727EA41A8084AC4E1300A54E5AA2611807A24E5A6E5E181F6E
4B5A6E5E187F6E4B5A02DE4A90C7FC02CF4A5ADAC780495ADAC3C0EB0FF0DAC1F0EB3FE0
913AC07E01FF806FB448C8FC030F13F80300138093CAFCB3A3497E497EB612F0A4415B7D
BE49>I<9039078003F8D807FFEB0FFFB5013F13C092387C0FE0913881F01F9238E03FF0
0001EB838039007F8700148FEB3F8E029CEB1FE0EE0FC00298EB030002B890C7FCA214B0
14F0A25CA55CB3B0497EEBFFF8B612FCA42C3F7CBE33>114 D<9139FFE00180010FEBFC
03017FEBFF073A01FF001FCFD803F8EB03EFD807E0EB01FF48487F4848147F48C8123F00
3E151F007E150F127CA200FC1507A316037EA27E7F6C7E6D91C7FC13F8EA3FFE381FFFF0
6CEBFF806C14F86C14FF6C15C06C6C14F0011F80010714FED9007F7F02031480DA003F13
C01503030013E0167F00E0ED1FF0160F17F86C15071603A36C1501A37EA26C16F016037E
17E06D14076DEC0FC06D1580D8FDF0141FD8F8F8EC7F00013E14FC3AF01FC00FF80107B5
12E0D8E001148027C0003FF8C7FC2D417DBF34>I<1438A71478A414F8A31301A31303A2
1307130F131FA2137F13FF1203000F90B6FCB8FCA3260007F8C8FCB3AE17E0AE6D6CEB01
C0A316036D6C148016076D6C14006E6C5A91383FC01E91381FF07C6EB45A020313E09138
007F802B597FD733>I<D903C0150FD807FFED1FFFB50203B5FCA40001ED0007D8007F15
01A2013F81B3B25FA35FA35F011F15066E140E5F130F6E4A7F01075D6D6C494813E0D901
FE4948EBFFC0903A00FFC01F8091393FFFFE00020F13F8020001C0EC800042407DBE49>
I<B66C49B512E0A4000101F8C8387FFE0026007FE0ED1FF819E0013F705A61131F6E93C7
FC010F160EA26D6C5DA26E153C01031638A26D6C5DA26E15F06D5EA26E6C495AA26F1303
023F5DA26F1307021F92C8FC6F5B020F140EA26F131E0207141C6F133C02031438A26F13
78020114706F13F06E5CA21681037F5B16C3033F5BA216E7031F90C9FC16FF6F5AA36F5A
A26F5AA36F5AA26F5AA215015E15035EA2150793CAFC5D150EA2151E151C153CD81F8013
38487E486C5BA25D14015D49485A383F80074948CBFC001E133E380FC0FC6CB45A000113
E06C6CCCFC435B7FBD46>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Ft cmti9 9 50
/Ft 50 124 df<923803FF80031F13F092383F00F803F8133C4A48133E4A48137E17FE4A
5A17FC17384A481300A3141F92C8FCA55C143E011FB612E0A217C09039007E0007147C16
0F1780A214FC4A131F1700A301015C4A133EA3167E0103147C5C1718EEFC1CEEF83C0107
15385C1778177016F0010F15F04AEBF8E01679EE3FC0011FEC0F0093C7FC91C9FCA3133E
A21238EA7E3C137CEAFE7812FC485AEA79E0EA3FC0000FCAFC2F4582B42B>12
D<EA0380EA0FE0121FA5EA0760120013E013C0A2120113801203EA07001206120E5A5A5A
5A5A0B177A8718>44 DI<121C127F12FFA412FE123808
08778718>I<EC1FC0EC7FF0903801E0F8903807C03CEB0F00011E131E133E013C131F5B
13F85B1201A2485AA20007143F5BA2120F153E49137E121FA348C712FCA4007EEB01F8A4
007CEB03F012FCA2EC07E0A24814C0A2EC0F80A2EC1F00A2141E5C0078137C5C387C01F0
383C03E0381F0F80D80FFEC7FCEA03F8203477B127>48 D<EC01801403A21407140FEC1F
005C14FF5BEB1FFEEB7FBEEB7E7E1320EB007CA214FCA25CA21301A25CA21303A25CA213
07A25CA2130FA25CA2131FA291C7FCA25BA2133EA2137EA2137C13FCB512FCA3193277B1
27>I<EC0FE0EC3FF8ECF03E903803C01F903907800F80EB0F00011EEB07C0131C5BD978
C013E0EB70E0EBF06013E0120113C0ECE00F000301C013C013801381EC801F0183148090
3887003F018E1400D801FC137ED800F05B90380001F84A5A4A5A4A5A4AC7FC147E14F8EB
03E0EB0FC049C8FC133E13784848EB0380485A4913074848140048C75A121E001C141E00
3F143E01F85B397DFF80F838781FFF486C5BD8E0035B6D1380D9007EC7FC23347AB127>
I<EC07F0EC3FFCECF81E903803E00F903907800780D90F0013C0011E13035B013814E0EB
7980EB71C00170130701F014C013E0A201E1130FD9E380138090387F001F013C140090C7
123E5D5D4A5AEC1FE0903807FF804AC7FC6D7E90380007C06E7EA26E7EA514031218127E
A21407485C5A00E0495AA26C495A007049C7FC147E00785B383C01F0381E07E03807FF80
D801FCC8FC233479B127>I<150E151FA2153F153EA3157E157CA215FC15F8A2140115F0
A2EC03E0A3EC07C0A2EC0F80A2EC1F00A2143EA25C147814F85C1301903803E0E0ECC1F0
EB0781EB0F83EC03E0131E133CEB7C0701F813C0EA01F0EA03E03807C00FD80F801380EA
1FFC383FFFCF48EBFF82D8F00313FF3860003FC7EA1FF8EC3F00143EA3147E147CA314FC
5CA4146020417DB127>I<010614C090380FC00F91B51280160015FC4913F015C0D91CFE
C7FC91C8FC133C1338A313781370A313F0EBE0FE9038E3FF809038EF03C03901FC01E001
F87FEBF000497F485A5BC8FCA41401A4003C130300FC5CA34A5A5A00E0495AA24A5A4AC7
FC6C137E00705B387801F8383E07F0381FFFC06C90C8FCEA03F8223478B127>I<D9E0F8
1338EBE3FC2601EFFE137801FF14F048EC01E09038FE0E03D807F814C09039F0060F8039
0FC0071F90398003FF00391F0001EF001EEB001E003E5C123C485C15F8485C4813015DC7
12034A5AA24A5AA2141F92C7FC5C143E147EA25CA2495AA3495AA213075CA2130F5CA213
1FA25C133FA391C8FCA2131C253476B127>55 D<EC07E0EC3FFC4A7E903801F81F903903
E00F809038078007D90F0013C0491303131E5BA21507017C1480A2150F1600017E131E01
7F133E6E5A6D6C5AECE1E090381FFBC06DB4C7FC6D5A6D7E497F011E7F90387C7FE09038
F01FF048486C7E3807C007EB8003380F0001001E1300123E003C1478127C1278A215F800
F85C5A6C495A007813035D007C495A003C011FC7FC003E133E381F81FC380FFFF0000313
C0C648C8FC223479B127>I<EC0FC0EC7FF0ECFFFC903803F07E903807C03E49487EEB1F
00013E7F017E14805BA2485AA2485A151FA212075BA2ED3F00A2485A5DA2000714FEA214
01140300035CEBE0070001131E3900F039F8EB7FF1EB0FC190380003F0A24A5AA25D4A5A
141F003891C7FC007E133E00FE137E5C48485A48485A48485A38781F80D87FFFC8FCEA1F
FCEA07E0213478B127>I<161C163CA2167C16FCA21501821503A2ED077E150F150E151C
A21538A2157015F015E0EC01C0A2913803807F82EC0700A2140E141E141C5CA25CA25C49
B6FCA25B913880003F49C7EA1F80A2130E131E131C133C13385B13F05B12011203D80FF0
EC3FC0D8FFFE903807FFFEA32F367BB539>65 D<DB1FF013C09238FFFC010203EBFF0391
3A0FF00F878091393F8003CF9139FE0001EF4948EB00FFD903F01500D90FE080495A4948
8091C8123E137E13FE485A4848153CA2485AA248481538A2485A94C7FC123F5BA3127F90
CBFCA412FEA2EE03C0A25F127E160794C7FC5E160E007F151E6C5D5E6C6C147016F06C6C
495A6C6CEB07C06C6C49C8FC6C6C133E6CB413FC90387FFFF0011F13C0D903FEC9FC3237
75B437>67 D<0107B612C04915F017FC903A003F8001FEEE007FEF1F8092C7EA0FC0EF07
E05CEF03F0147E170102FE15F8A25CA21301A25CA2130317035CA2130718F04A1407A213
0F18E04A140F18C0011F151F18805CEF3F00133F177E91C85AA2494A5A4C5A017E4A5A4C
5A01FE4A5A047EC7FC49495A0001EC0FF8007FB612E0B7C8FC15F835337BB23A>I<0107
B712E05B18C0903A003F80003F170F170792C7FC17035C1880147EA214FEA25C161C0101
EC3C07043813004A91C7FCA20103147816704A13F0150349B5FCA25EECE003130F6F5A14
C0A2011F13035E1480A2013F90C9FCA291CAFCA25BA2137EA213FEA25B1201387FFFFCB5
FCA233337CB232>70 D<010FB51280A216009038003FC05DA292C7FCA25CA2147EA214FE
A25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCA25B
A2137EA213FEA25B1201B512F8A25C21337BB21E>73 D<0107B512C05BA29026003FC0C7
FC5DA292C8FCA25CA2147EA214FEA25CA21301A25CA21303A25CA21307A25CA2130FA25C
17E0011F140117C05C1603013F1580160791C7FCEE0F005B5E017E143EA201FE5CED01FC
4913030001EC1FF8007FB6FCB7FC5E2B337CB230>76 D<902607FFC0ED7FFC4917FF81D9
003F4B1300611803023BED077CA2027BED0EFC610273151C1838DAF1F01439F071F014E1
18E10101ED01C36102C1EC0383EF070301031607050E5BEC80F8171C0107ED380F610200
1470A249EDE01FDC01C090C7FC130EEE0380011E017C5C933807003E011C140EA2013C4A
137E187C01385C5E017816FC6F485B1370ED3FC001F0EC80016000011500D807F8150327
7FFF803E90B512C0B5EB3C01151C46337BB245>I<902607FF8090383FFFC0496D5BA2D9
001F913803F8004A6C6D5A6060EC3BF0027B140360EC71F8A202F11407DAF0FC91C7FC14
E0A20101017E5B170E14C0810103151EEE801CEC801FA20107ECC03C030F1338140016E0
49010713781770010E14F01503011E15F0705A011C1301A2013C14FD03005B133816FF01
78147F5F0170143FA213F070C8FC1201EA07F8267FFF807FB5140EA23A337BB239>I<ED
1FE0913801FFFC913807E03F91391F800FC091393E0003E002F8EB01F0495A4948EB00F8
494814FC4948147C49C8127E133E017E153E49153F485AA2485A12075B120F5B121F177F
5B123FA348C912FEA4EE01FC12FEEE03F8A217F0160717E0160F007E16C0EE1F80A2EE3F
006C157E5E5E6C6C495A000F4A5A6D495A0007EC1F806C6C013EC7FCD801F813FC39007E
07F090383FFF80D907FCC8FC303775B43B>I<0107B612C04915F883903A003F8001FEEE
003FEF1F8092C713C0170F5C18E0147EA214FEEF1FC05CA201011680173F4A1500177E01
0315FE5F4AEB03F8EE07E00107EC3FC091B6C7FC16F802E0C9FC130FA25CA2131FA25CA2
133FA291CAFCA25BA2137EA213FEA25B1201387FFFF0B5FCA233337CB234>I<913901FC
018091380FFF03023F13C791387E07EF903A01F801FF0049487E4A7F495A4948133E131F
91C7FC5B013E143CA3137E1638A293C7FC137FA26D7E14E014FE90381FFFC06D13F86D7F
01017F6D6C7E020F7F1400153F6F7E150FA4120EA2001E5D121CA2151F003C92C7FCA200
3E143E5D127E007F5C6D485A9038C007E039F3F80FC000F0B5C8FC38E03FFC38C00FF029
377AB42B>83 D<0003B812C05A1880903AF800FC003F260FC001141F0180150F01005B00
1EEE07001403121C003C4A5BA200380107140E127800705CA2020F141E00F0161CC74990
C7FCA2141FA25DA2143FA292C9FCA25CA2147EA214FEA25CA21301A25CA21303A25CA213
07A25C497E001FB512F05AA2323374B237>I<EB03F0EB0FF890383E1C6090387C0FF0EB
F807EA01F0EA03E00007EB03E0EA0FC0A2381F800715C0EA3F00A2140F481480127EA214
1F00FE14005A1506EC3F07EC3E0F150E147E007C141EECFE1CEB01FCD83C03133C393E07
BE38391F0E1E783907FC0FF03901F003C0202278A027>97 D<137EEA0FFE121F5B1200A3
5BA21201A25BA21203A25BA21207A2EBC3E0EBCFF8380FDC3EEBF81F497E01E01380EA1F
C0138015C013005AA2123EA2007E131F1580127CA2143F00FC14005AA2147EA25CA23878
01F85C495A6C485A495A6C48C7FCEA0FFCEA03F01A3578B323>I<14FCEB07FF90381F07
8090383E03C0EBFC013801F8033803F0073807E00F13C0120F391F80070091C7FC48C8FC
A35A127EA312FE5AA4007C14C0EC01E0A2EC03C06CEB0F80EC1F006C137C380F81F03803
FFC0C648C7FC1B2278A023>I<ED0FC0EC03FFA21680EC001FA31600A25DA2153EA2157E
A2157CA215FCA2903803F0F8EB0FF8EB3E1DEB7C0F496C5AEA01F0EA03E000071303D80F
C05BA2381F8007A2D83F005BA2140F5A007E5CA2141F12FE4891C7FC1506EC3F075DEC3E
0E147E007C141EECFE1CEB01FCD83C03133C393E07BE38391F0E1E783907FC0FF03901F0
03C0223578B327>I<EB03F8EB0FFEEB3E0F9038F807803801F003EA03E0EA07C0120FEA
1F801407D83F0013005C007E133EEB03F8387FFFE04848C7FC00FCC8FCA45AA4EC0180EC
03C0A2007CEB0780EC1F00003C133E6C13F8380F03E03807FF80D801FCC7FC1A2277A023
I<151FED7FC0EDF0E0020113F0EC03E3A2EC07C316E0EDC1C091380FC0005DA4141F92
C7FCA45C143E90381FFFFEA3D9007EC7FC147CA414FC5CA513015CA413035CA413075CA3
130FA25CA3131F91C8FCA35B133E1238EA7E3CA2EAFE7812FC485AEA78E0EA3FC0000FC9
FC244582B418>I<143FECFF80903803E1E6903807C0FF90380F807FEB1F00133E017E13
3F49133EA24848137EA24848137CA215FC12074913F8A21401A2D80FC013F0A214031207
15E01407140F141F3903E03FC00001137FEBF0FF38007FCF90381F0F801300141FA21500
A25C143E1238007E137E5C00FE5B48485A387803E0387C0F80D81FFFC7FCEA07F820317C
A023>I<EB0FC0EA03FFA25CEA001FA391C8FCA25BA2133EA2137EA2137CA213FCA29038
F83F80ECFFE03901FBE0F09038FF80F8EC007849137C485A5B5BA2484813FC5D5BA2000F
13015D1380A2001F13035DEB0007EDC0C048ECC1E0020F13C0003E1481A2007E1483ED03
80007C1407160000FC140E151E48EB07F80070EB01F023357BB327>I<EB0180EB07E0A2
130FEB07C0EB038090C7FCABEA01F0EA03FCEA0F1E120E121C123C1238EA783E1270A213
7EEAF07CEA60FCC65AA212015BA212035BA2000713C0EBC1E0000F13C01381A21383EB03
8013071400130E131EEA07F8EA01F013337AB118>I<EB0FC0EA01FF5A5CEA001FA391C7
FCA25BA2133EA2137EA2137CA213FCA2491378EC01FE0001EB078FEC0E0F9038F01C3F14
3800031370ECE03E9038E1C01C9038E38000D807E7C7FC13EE5B13F8120F13FFEB9FC0EB
83F0EA1F81EB80F81300150C48141E151C123EA2007E143C1538127C157800FCEB787015
E048EB3FC00070EB0F8020357BB323>107 D<133FEA07FF5A13FEEA007EA3137CA213FC
A213F8A21201A213F0A21203A213E0A21207A213C0A2120FA21380A2121FA21300A25AA2
123EA2127EA2127C1318EAFC1C133CEAF838A21378137012F013F0EAF8E01279EA3FC0EA
0F00103579B314>I<2703C003F8137F3C0FF00FFE01FFC03C1E783C1F07C1E03C1C7CF0
0F8F01F03B3C3DE0079E0026383FC001FC7FD97F805B007001005B5E137ED8F0FC90380F
C00100E05FD860F8148012000001021F130360491400A200034A13076049013E130FF081
800007027EEC83C0051F138049017C1403A2000F02FC1407053E130049495CEF1E0E001F
01015D183C010049EB0FF0000E6D48EB03E03A227AA03F>I<3903C007F0390FF01FFC39
1E787C1E391C7CF01F393C3DE00F26383FC01380EB7F8000781300EA707EA2D8F0FC131F
00E01500EA60F8120000015C153E5BA20003147E157C4913FCEDF8180007153C02011338
01C013F0A2000F1578EDE070018014F016E0001FECE1C015E390C7EAFF00000E143E2622
7AA02B>I<14FCEB07FF90381F07C090383E03E09038FC01F0EA01F83903F000F8485A5B
120F484813FCA248C7FCA214014814F8127EA2140300FE14F05AA2EC07E0A2007CEB0FC0
1580141FEC3F006C137E5C381F01F0380F83E03803FF80D800FCC7FC1E2278A027>I<01
1E137C90387F81FF9039F3C387C09039E3EF03E03901E1FE01D9C1FC13F0EBC3F8000313
F0018314F814E0EA07871307000313C01200010F130316F01480A2011F130716E01400A2
49EB0FC0A2013EEB1F80A2017EEB3F00017F133E5D5D9038FF81F09038FDC3E09038F8FF
80027EC7FC000190C8FCA25BA21203A25BA21207A25BB5FCA325307FA027>I<3903C00F
C0390FF03FF0391E78F078391C7DE03C393C3FC0FC00381380EB7F00007814F8D8707E13
701500EAF0FC12E0EA60F812001201A25BA21203A25BA21207A25BA2120FA25BA2121FA2
90C8FC120E1E227AA020>114 D<EB03F0EB1FFCEB3C1EEB780FEBF007EA01E0140F0003
131F13C0A2EBE00414007FEBFF8014E06C13F06C13F8EB7FFC1307EB00FE147E143E1238
00FC133CA3147C00F013784813F0EAF001387803E0383C0F80381FFE00EA03F818227AA0
1F>I<1303EB0F80A3131FA21400A25BA2133EA2137EA2137C387FFFF8A2B5FC3800F800
A21201A25BA21203A25BA21207A25BA2120FA25B1460001F13F014E01300130114C01303
001E1380EB07005BEA0F1EEA07F8EA01E015307AAE19>I<EA01F0D803FC1307D80F1E5B
000E5C121C123C00385CD8783E133E1270A2017E137ED8F07C137CEA60FCC65A15FC0001
5C5BA2140100035C13E0166002031370EDE0F0D807C014E0A20003EB07E116C09038E00F
C1EC1FC3000190383FE3809038F071E73A007FE0FF0090381F803C24227AA029>I<01F0
1338D803FC13FCEA0F1E120E121C123C0038147CEA783E0070143CA2137ED8F07C1338EA
60FCC65A1578000114705BA215F0000314E05BA2EC01C0A2EBC003158014071500EBE00E
A26C6C5A3800F878EB7FE0EB1F801E227AA023>I<D801F01538D803FC010E13FCD80F1E
131E000E143E121C123C0038027E137CD8783E137C0070163CA2017E13FCD8F07C491338
EA60FCC65A0201147800014A137013F0A2020314F0000316E001E05BA2160117C001C013
C00207EB0380A29039E00FE0071700021F130E3A01F03DF01E3A00F878F83C90393FF03F
F090390FC00FC02E227AA033>I<011F137C90387FC1FF3A01E1E787803A03C0F703C090
3880FE0FEA07004813FC000E1580001E9038F80700001C91C7FC1301003C5B1218120013
035CA31307A25C1506010F130F150E14800038141ED87C1F131C00FC143C1538013F5B39
F07FC0E03970F3C3C0393FE1FF80260F807EC7FC22227CA023>I<13F0D803FC1307D80F
1E130F000E141F121C123C0038143FD8783E133E1270A2017E137ED8F07C137CEA60FCC6
5A15FC000114F85BA21401000314F013E0A2140315E0EA07C0A20003130715C0EBE00F14
1F0001133F9038F07F8038007FEFEB1F8FEB001F1500A25C003E133E007E137E147C5C00
7C5BEA7001495A38380780D83C1FC7FCEA0FFCEA07F020317AA025>I<903807801C9038
1FE03C90383FF038017F13789038FFF8F03901F07CE0EBE01F3903C003C09038800780EC
0F00C7121E141C143C5C5C495AEB07C0495A011EC7FC5B5B4913704913F0000114E0485A
38078001390FC003C0381FF80790383E0F80393C1FFF00127838700FFE38F007F838E001
E01E227CA01F>II E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: A4
%%EndSetup
%%Page: 1 1
1 0 bop 645 54 a Ft(Pr)l(o)l(c.)36 b(21st)28 b(Symp.)35
b(Principles)28 b(of)f(Pr)l(o)l(gr)l(amming)i(L)l(anguages,)g(1994,)f
(p)l(ages)h(109{122.)507 314 y Fs(Manifest)44 b(t)l(yp)t(es,)e(mo)t
(dules,)i(and)g(separate)f(compilation)1675 529 y Fr(Xa)m(vier)33
b(Lero)m(y)2259 493 y Fq(\003)1612 676 y Fp(Stanford)27
b(Univ)n(ersit)n(y)-133 981 y Fo(Abstract)-133 1153 y
Fn(This)36 b(pap)r(er)e(presen)n(ts)h(a)g(v)l(arian)n(t)f(of)i(the)e
(SML)h(mo)r(dule)f(system)-133 1244 y(that)e(in)n(tro)r(duces)g(a)g
(strict)h(distinction)f(b)r(et)n(w)n(een)g(abstract)h(t)n(yp)r(es)-133
1336 y(and)28 b(manifest)f(t)n(yp)r(es)h((t)n(yp)r(es)f(whose)h
(de\014nitions)g(are)g(part)g(of)g(the)-133 1427 y(mo)r(dule)21
b(sp)r(eci\014cation),)j(while)e(retaining)h(most)e(of)h(the)f
(expressiv)n(e)-133 1518 y(p)r(o)n(w)n(er)36 b(of)g(the)f(SML)g(mo)r
(dule)f(system.)63 b(The)35 b(resulting)h(mo)r(dule)-133
1610 y(system)28 b(pro)n(vides)g(m)n(uc)n(h)e(b)r(etter)i(supp)r(ort)g
(for)h(separate)g(compila-)-133 1701 y(tion.)-133 1948
y Fo(1)112 b(In)m(tro)s(duction)-133 2129 y Fm(1.1)95
b(Mo)s(dules)30 b(and)i(separate)g(compilation)-133 2275
y Ft(Mo)l(dularization)42 b Fn(is)g(the)f(pro)r(cess)h(of)g(decomp)r
(osing)g(a)f(program)-133 2366 y(in)35 b(small)g(units)g(()p
Ft(mo)l(dules)6 b Fn())35 b(that)g(can)g(b)r(e)g(understo)r(o)r(d)g
(in)g(isola-)-133 2458 y(tion)24 b(b)n(y)e(the)h(programmers,)g(and)g
(making)g(the)f(relations)j(b)r(et)n(w)n(een)-133 2549
y(these)k(units)g(explicit)g(to)g(the)f(programmers.)43
b Ft(Sep)l(ar)l(ate)33 b(c)l(ompila-)-133 2640 y(tion)26
b Fn(is)f(the)g(pro)r(cess)i(of)f(decomp)r(osing)f(a)h(program)f(in)g
(small)g(units)-133 2732 y(()p Ft(c)l(ompilation)33
b(units)6 b Fn())33 b(that)e(can)h(b)r(e)g(t)n(yp)r(ec)n(hec)n(k)n(ed)
e(and)h(compiled)-133 2823 y(separately)38 b(b)n(y)e(the)h(compiler,)j
(and)d(making)f(the)h(relations)i(b)r(e-)-133 2914 y(t)n(w)n(een)28
b(these)h(units)e(explicit)i(to)f(the)g(compiler)g(and)g(link)n(er.)42
b(Both)-133 3006 y(pro)r(cesses)31 b(are)f(required)f(for)h(realistic)i
(programming:)41 b(mo)r(dular-)-133 3097 y(ization)34
b(mak)n(es)d(large)j(programs)e(understandable)g(b)n(y)g(program-)-133
3188 y(mers;)e(separate)f(compilation)g(mak)n(es)f(large)i(programs)e
(tractable)-133 3280 y(b)n(y)d(compilers.)-50 3375 y(Sev)n(eral)32
b(languages)h(rely)f(on)f(a)h(common)f(mec)n(hanism)f(to)h(pro-)-133
3466 y(vide)d(mo)r(dules)g(and)g(separate)h(compilation.)44
b(A)27 b(t)n(ypical)i(example)-133 3557 y(is)22 b(Mo)r(dula-2)g([27)q
(],)h(where)e(mo)r(dules)g(are)h(iden)n(ti\014ed)e(with)h(compila-)-133
3649 y(tion)j(units)g(comp)r(osed)f(of)i(an)f(implemen)n(tation)f
(\014le)g((source)i(co)r(de))-133 3740 y(and)c(an)g(in)n(terface)h
(\014le)f((sp)r(eci\014cation).)33 b(Ho)n(w)n(ev)n(er,)22
b(this)f(iden)n(ti\014ca-)-133 3831 y(tion)k(is)h(limiting.)34
b(Since)25 b(compilation)g(units)g(are)g(usually)g(directly)-133
3923 y(mapp)r(ed)20 b(on)n(to)i(\014le)g(system)e(ob)t(jects,)k
(separate)f(compilation)f(tends)-133 4014 y(to)29 b(k)n(eep)g(the)f
(structure)h(of)g(compilation)h(units)e(simple,)i(with)f(the)-133
4105 y(dep)r(endencies)i(\hard-wired”)g(inside)g(the)g(units.)49
b(Mo)r(dern)31 b(mo)r(d-)-133 4197 y(ule)25 b(systems)g(go)h(m)n(uc)n
(h)d(farther)j(in)f(their)g(attempts)f(to)i(accurately)-133
4288 y(express)21 b(the)g(program)g(structure.)33 b(A)21
b(w)n(ell-kno)n(wn)g(example)g(is)g(the)-133 4379 y(mo)r(dule)j(system)
g(of)h(SML)g([14)q(],)h(whic)n(h)f(is)g(actually)g(a)g(small)g(t)n(yp)r
(ed)-133 4471 y(language)f(of)f(its)f(o)n(wn,)i(with)f(mo)r(dules)e
((also)j(called)f Ft(structur)l(es)6 b Fn())25 b(as)-133
4562 y(the)31 b(base)g(data)g(structure,)i(mo)r(dule)d(sp)r
(eci\014cations)i(()p Ft(signatur)l(es)6 b Fn())-133
4653 y(as)32 b(t)n(yp)r(es,)f(functions)h(from)e(mo)r(dules)h(to)g(mo)r
(dules)f(()p Ft(functors)6 b Fn())32 b(to)p -133 4740
801 4 v -48 4792 a Fl(\003)-14 4817 y Fk(Dept.)h(of)h(Computer)f
(Science,)h(Stanford)e(Univ)n(ersit)n(y)-5 b(,)36 b(Stanford)d(CA)-133
4883 y(94305-2140.)50 b(E-mail:)41 b Fj(xavier(at)cs.stanf)o(or)o(d.)o(ed)
o(u)p Fk(.)h(Supp)r(orted)27 b(b)n(y)h(an)h(IN-)-133
4950 y(RIA)23 b(p)r(ost-do)r(ctoral)e(gran)n(t.)-48 5002
y Fi(0)-14 5027 y Fk(P)n(ermission)33 b(to)h(cop)n(y)g(without)g(fee)f
(all)g(or)i(part)e(of)h(this)g(material)f(is)-133 5093
y(gran)n(ted)16 b(pro)n(vided)f(that)h(the)g(copies)f(are)i(not)f(made)
f(or)i(distributed)e(for)h(direct)-133 5160 y(commercial)i(adv)l(an)n
(tage,)j(the)f(A)n(CM)i(cop)n(yrigh)n(t)e(notice)f(and)h(the)g(title)g
(of)h(the)-133 5226 y(publication)k(and)h(its)g(date)g(app)r(ear,)g
(and)g(notice)g(is)g(giv)n(en)g(that)g(cop)n(ying)g(is)-133
5293 y(b)n(y)d(p)r(ermission)f(of)h(the)f(Asso)r(ciation)h(for)g
(Computing)f(Mac)n(hinery)-5 b(.)29 b(T)-5 b(o)24 b(cop)n(y)-133
5359 y(otherwise,)d(or)i(to)f(republish,)e(requires)h(a)i(fee)e(and/or)
g(sp)r(eci\014c)f(p)r(ermission.)2066 981 y Fn(represen)n(t)25
b(parameterized)g(mo)r(dules,)f(and)h(function)g(applications)2066
1072 y(to)k(connect)f(mo)r(dules|all)h(features)h(that)e(cannot)h(b)r
(e)f(accoun)n(ted)2066 1164 y(for)f(in)e(the)h(\mo)r(dules)f(as)h
(compilation)h(units”)e(approac)n(h.)2149 1257 y(As)c(a)g(consequence)f
(of)i(this)e(tension,)j(SML)d(mak)n(es)g(no)h(pro)n(vision)2066
1348 y(for)28 b(separate)g(compilation.)38 b(SML)27 b(is)g(de\014ned)f
(as)i(\an)f(in)n(teractiv)n(e)2066 1440 y(language”)38
b([17)q(],)h(implying)d(that)g(users)g(are)h(exp)r(ected)e(to)i(build)
2066 1531 y(their)29 b(programs)h(linearly)g(in)f(strict)h(b)r
(ottom-up)d(order.)45 b(This)30 b(re-)2066 1622 y(quiremen)n(t)g(can)i
(b)r(e)f(alleviated)i(b)n(y)d(systematic)h(use)h(of)g(functors,)2066
1714 y(at)h(the)g(cost)h(of)g(extra)f(declarations)h((sharing)g
(constrain)n(ts))f(and)2066 1805 y(late)k(detection)f(of)h(in)n
(ter-compilation)f(unit)g(t)n(yp)r(e)f(clashes.)67 b(Re-)2066
1896 y(cen)n(tly)-6 b(,)24 b(Shao)h(and)f(App)r(el)f([24)q(])i(ha)n(v)n
(e)f(prop)r(osed)g(a)h(more)f(free-form)2066 1987 y(separate)30
b(compilation)g(mec)n(hanism)e(for)i(SML,)f(whic)n(h)g(infers)h(the)
2066 2079 y(required)18 b(constrain)n(ts,)i(but)d(dela)n(ys)h(all)h(t)n
(yp)r(e)f(c)n(hec)n(ks)f(b)r(et)n(w)n(een)h(com-)2066
2170 y(pilation)30 b(units)e(to)h(the)f(linking)h(phase,)h(whic)n(h)f
(is)g(m)n(uc)n(h)e(to)r(o)i(late.)2066 2261 y(Late)f(detection)f(of)h
(t)n(yp)r(e)f(errors)h(increases)h(the)e(lik)n(eliness)h(of)g(pro-)2066
2353 y(grammers)23 b(writing)j(large)f(quan)n(tities)f(of)h
(inconsisten)n(t)f(co)r(de,)h(only)2066 2444 y(to)33
b(disco)n(v)n(er)g(later)g(that)f(ma)t(jor)h(c)n(hanges)g(are)g
(required)f(to)h(bring)2066 2535 y(the)25 b(parts)h(together.)2149
2629 y(The)f(w)n(ork)g(presen)n(ted)f(in)h(this)f(pap)r(er)h(grew)h
(out)e(of)i(an)e(attempt)2066 2720 y(to)50 b(apply)g(the)g(Mo)r(dula-2)
g(separate)h(compilation)g(tec)n(hniques)2066 2811 y((whic)n(h)25
b(ensure)f(early)h(detection)g(of)g(in)n(ter-compilation)g(unit)f(t)n
(yp)r(e)2066 2903 y(clashes))i(to)f(the)g(SML)g(mo)r(dule)f(system.)34
b(The)25 b(starting)h(idea)f(is)h(to)2066 2994 y(abandon)53
b(the)g(iden)n(ti\014cation)g(of)g(mo)r(dules)g(and)g(compilation)2066
3085 y(units,)27 b(and)e(consider)i(compilation)g(units)f(as)h(an)f
(additional)h(la)n(y)n(er)2066 3177 y(on)i(top)g(of)h(mo)r(dules:)41
b(just)29 b(as)h(Mo)r(dula-2)g(compilation)g(units)f(are)2066
3268 y(collections)g(of)f(language)g(ob)t(jects)g((t)n(yp)r(es,)f(v)l
(ariables,)h(functions),)2066 3359 y(SML)47 b(compilation)h(units)f
(should)g(b)r(e)h(collections)h(of)f(mo)r(dule)2066 3451
y(ob)t(jects)29 b((signatures,)h(structures,)f(functors).)42
b(These)28 b(collections)2066 3542 y(of)41 b(mo)r(dules)e(can,)k(then,)
g(b)r(e)c(de\014ned)g(in)g(implemen)n(tation)g(\014les)2066
3633 y(and)i(sp)r(eci\014ed)g((b)n(y)f(their)h(signatures))h(in)g(in)
n(terface)g(\014les,)j(and)2066 3724 y(their)52 b(dep)r(endencies)g
(can)g(b)r(e)g(expressed)g(b)n(y)f(Mo)r(dula-2-st)n(yle)2066
3816 y Fh(import)27 b Fn(declarations.)2066 4029 y Fm(1.2)95
b(The)32 b(problem)d(with)j(SML)g(mo)s(dules)2066 4172
y Fn(The)19 b(simple)g(approac)n(h)g(outlined)f(ab)r(o)n(v)n(e)h(turns)
f(out)h(to)g(fail,)j(not)d(b)r(e-)2066 4263 y(cause)25
b(it)g(is)f(inheren)n(tly)g(\015a)n(w)n(ed,)h(but)e(b)r(ecause)i(it)g
(exp)r(oses)f(a)h(w)n(eak-)2066 4354 y(ness)18 b(in)f(the)g(SML)h(mo)r
(dule)e(system:)30 b(a)17 b(mo)r(dule)g(signature)h(do)r(es)g(not)2066
4446 y(express)30 b(all)h(the)f(t)n(yping)f(prop)r(erties)h(that)g(the)
f(remainder)h(of)g(the)2066 4537 y(program)d(can)g(assume)g(ab)r(out)g
(the)g(corresp)r(onding)h(structure.)38 b(In)2066 4628
y(other)23 b(terms,)h(SML)f(signatures)h(are)g(not)f(complete)g(sp)r
(eci\014cations)2066 4720 y(with)31 b(resp)r(ect)g(to)f(t)n(yping.)49
b(This)31 b(is)g(b)r(ecause)g(t)n(yp)r(e)f(sp)r(eci\014cations)2066
4811 y(in)24 b(signatures)g(are)g(\transparen)n(t”:)34
b(they)22 b(do)i(not)f(hide)g(the)g(actual)2066 4902
y(t)n(yp)r(e)17 b(pro)n(vided)g(b)n(y)f(the)h(structure.)32
b(F)-6 b(or)17 b(instance,)j(assume)e(a)g(struc-)2066
4994 y(ture)g Fh(S)h Fn(has)g(a)g(signature)g Fh(\006)g
Fn(sp)r(ecifying)g(a)g(t)n(yp)r(e)f(comp)r(onen)n(t)f
Fh(t)p Fn(.)33 b(Ev)n(en)2066 5085 y(though)20 b(the)g(signature)h(do)r
(es)g(not)f(sa)n(y)g(an)n(ything)g(ab)r(out)g(the)g(imple-)2066
5176 y(men)n(tation)27 b(of)i Fh(t)p Fn(,)g(another)f(structure)g
Fh(S’)g Fn(can)g(rely)g(on)g Fh(S.t)h Fn(b)r(eing)2066
5268 y(implemen)n(ted)c(as)j(some)f(particular)i(t)n(yp)r(e,)e(sa)n(y)
-6 b(,)28 b Fh(int)p Fn(.)40 b(If)27 b Fh(S)h Fn(and)f
Fh(S’)2066 5359 y Fn(are)c(not)g(de\014ned)e(in)i(the)f(same)h
(compilation)g(unit,)g(the)f(implemen-)3842 5982 y(P)n(age)27
b(1)p eop
%%Page: 2 2
2 1 bop -133 -108 a Fn(tation)24 b(de\014ning)g Fh(S’)g
Fn(cannot)g(therefore)g(b)r(e)g(t)n(yp)r(ec)n(hec)n(k)n(ed)e(un)n(til)h
(the)-133 -17 y(implemen)n(tation)18 b(de\014ning)g Fh(S)i
Fn(has)f(b)r(een)g(written:)31 b(the)19 b(corresp)r(ond-)-133
75 y(ing)26 b(in)n(terface,)h(sp)r(ecifying)g(only)f
Fh(structure)41 b(S)22 b Fn(:)g Fh(\006)p Fn(,)k(do)r(es)g(not)g(suf-)
-133 166 y(\014ce)k(to)h(determine)e(whether)h Fh(S’)g
Fn(is)h(correct)g(in)f(assuming)g Fh(S.t)h Fn(to)-133
257 y(b)r(e)25 b Fh(int)p Fn(.)35 b(Hence,)26 b(t)n(yp)r(ec)n(hec)n
(king)e(and)h(compilation)g(m)n(ust)f(b)r(e)h(done)-133
349 y(in)e(b)r(ottom-up)e(order,)j(just)f(as)g(in)g(a)g(toplev)n
(el-based)g(approac)n(h.)34 b(In)-133 440 y(con)n(trast,)j(\true”)d
(separate)h(compilation,)i(as)e(in)f(Mo)r(dula-2,)j(al-)-133
531 y(lo)n(ws)d(t)n(yp)r(ec)n(hec)n(king)e(and)h(compilation)g(of)g(a)h
(program)e(fragmen)n(t)-133 623 y(at)24 b(an)n(y)f(time,)g(based)h
(only)f(on)h(the)f(in)n(terfaces)i(of)f(the)f(fragmen)n(ts)h(it)-133
714 y(imp)r(orts.)-50 806 y(The)33 b(fact)h(that)f(t)n(yp)r(e)f(sp)r
(eci\014cations)j(in)e(SML)g(signatures)h(are)-133 897
y(transparen)n(t)21 b(is)h(no)f(acciden)n(t:)33 b(it)21
b(accoun)n(ts)g(for)h(a)g(large)g(part)f(of)h(the)-133
989 y(expressiv)n(e)28 b(p)r(o)n(w)n(er)h(of)g(SML)f(mo)r(dules.)41
b(T)-6 b(reating)29 b(t)n(yp)r(e)f(sp)r(eci\014ca-)-133
1080 y(tions)23 b(as)h(opaque,)f(that)f(is,)i(making)e(all)i(exp)r
(orted)e(t)n(yp)r(es)g(abstract,)-133 1171 y(w)n(ould)i(\014x)e(the)h
(problem)g(with)g(separate)i(compilation)e(but)g(drasti-)-133
1263 y(cally)j(reduce)g(the)f(expressiv)n(eness)h(of)h(the)e(mo)r(dule)
g(system)g([15)q(].)-133 1471 y Fm(1.3)95 b(This)31 b(w)m(ork)-133
1612 y Fn(This)d(pap)r(er)e(prop)r(oses)i(a)f(w)n(a)n(y)g(out)g(of)h
(this)f(dilemma:)35 b(mak)n(e)26 b(t)n(yp)r(e)-133 1704
y(sp)r(eci\014cations)34 b(opaque)e((so)g(that)g(the)g(users)h(of)g(a)
f(structure)g(can)-133 1795 y(only)h(assume)g(what)h(is)f(declared)h
(in)f(its)h(signature),)i(but)c(enric)n(h)-133 1886
y(signatures)21 b(with)e Ft(manifest)j(typ)l(e)h(sp)l(e)l(ci\014c)l
(ations)p Fn(.)35 b(A)18 b(manifest)i(t)n(yp)r(e)-133
1978 y(sp)r(eci\014cation)h(of)g(the)f(form)g Fh(type)40
b(t)21 b Fn(=)g Fg(\034)29 b Fn(not)20 b(only)f(declares)j(a)e(t)n(yp)r
(e)-133 2069 y(iden)n(ti\014er)j Fh(t)p Fn(,)g(but)f(also)i(publicizes)
g(that)e(it)h(is)h(implemen)n(ted)c(as)j(the)-133 2160
y(t)n(yp)r(e)33 b(expression)i Fg(\034)9 b Fn(.)58 b(This)35
b(w)n(a)n(y)-6 b(,)36 b(signatures)f(b)r(ecome)e(complete)-133
2251 y(mo)r(dule)c(sp)r(eci\014cations)i(with)f(resp)r(ect)g(to)f(t)n
(yping,)h(making)f(sepa-)-133 2343 y(rate)h(compilation)g(feasible)h
(while)f(retaining)h(the)e(expressiv)n(eness)-133 2434
y(of)38 b(the)e(SML)h(mo)r(dule)f(system.)67 b((Harp)r(er)37
b(and)f(Lillibridge)j([10)q(])-133 2525 y(ha)n(v)n(e)25
b(in)n(v)n(estigated)h(similar)h(ideas)f(indep)r(enden)n(tly)-6
b(.))-50 2618 y(The)40 b(t)n(w)n(o)h(comp)r(onen)n(ts)e(of)i(this)f
(approac)n(h|manifest)g(t)n(yp)r(es)-133 2709 y(and)29
b(opaque)g(signatures|ha)n(v)n(e)g(already)g(b)r(een)g(prop)r(osed)g
(as)h(ex-)-133 2800 y(tensions)i(to)g(the)g(SML)f(mo)r(dule)g(system:)
46 b(t)n(yp)r(e)31 b(abbreviation)h(in)-133 2892 y(signatures)c(and)e
(MacQueen’s)i Fh(abstraction)h Fn(construct,)e(resp)r(ec-)-133
2983 y(tiv)n(ely)-6 b(.)50 b(The)31 b(no)n(v)n(elt)n(y)f(of)i(this)f
(pap)r(er)g(is)g(to)g(tak)n(e)g(these)g(t)n(w)n(o)g(con-)-133
3074 y(cepts)21 b(as)h(the)e(basic)i(mec)n(hanisms)e(of)h(a)h(mo)r
(dule)e(system,)h(replacing)-133 3166 y(SML’s)d(transparen)n(t)f(t)n
(yp)r(e)f(sp)r(eci\014cations)j(instead)e(of)h(supplemen)n(t-)-133
3257 y(ing)26 b(them.)-50 3349 y(The)i(bulk)f(of)h(this)g(pap)r(er)g
(is)g(dev)n(oted)f(to)h(the)f(study)g(of)h(the)f(re-)-133
3440 y(sulting)21 b(v)l(arian)n(t)e(of)i(the)f(SML)g(mo)r(dule)f
(system,)i(with)f(opaque)g(t)n(yp)r(e)-133 3532 y(sp)r(eci\014cations)
32 b(and)d(manifest)h(t)n(yp)r(es)g(in)g(signatures.)49
b(This)30 b(mo)r(d-)-133 3623 y(ule)k(system)f(supp)r(orts)g(the)g(SML)
h(mo)r(dular)f(programming)g(st)n(yle)-133 3714 y(in)28
b(a)g(satisfactory)i(w)n(a)n(y)-6 b(.)40 b(It)27 b(pro)n(vides)h(a)g
(strong)g(t)n(yp)r(e)f(abstraction)-133 3806 y(mec)n(hanism,)h(whic)n
(h)g(guaran)n(tees)g(in)n(teresting)h(represen)n(tation)g(in-)-133
3897 y(dep)r(endence)j(prop)r(erties)h([18)q(])f(and)h(easily)g(accoun)
n(ts)g(for)g(genera-)-133 3988 y(tiv)n(e)23 b(datat)n(yp)r(es.)34
b(More)24 b(surprisingly)-6 b(,)25 b(the)e(manifest)h(t)n(yp)r(e)e(mec)
n(ha-)-133 4080 y(nism)35 b(subsumes)f(large)j(parts)f(of)g(the)f(SML)g
(sharing)i(constrain)n(t)-133 4171 y(mac)n(hinery)-6
b(,)41 b(an)e(essen)n(tial)h(part)e(of)i(the)e(SML)h(mo)r(dule)f
(system:)-133 4262 y(manifest)24 b(t)n(yp)r(es)e(in)i(functor)f
(argumen)n(t)g(p)r(osition)h(express)f(sharing)-133 4354
y(constrain)n(ts)33 b(b)r(et)n(w)n(een)f(t)n(yp)r(es,)h(and)f(the)g
(simple)f(t)n(yping)h(rules)g(for)-133 4445 y(manifest)27
b(t)n(yp)r(es)g(su\016ce)g(to)g(c)n(hec)n(k)g(these)g(constrain)n(ts.)
39 b(The)28 b(main)-133 4536 y(missing)34 b(SML)f(feature)i(is)f
(sharing)g(constrain)n(ts)g(b)r(et)n(w)n(een)g(struc-)-133
4628 y(tures)28 b((though)f(iden)n(tit)n(y)f(c)n(hec)n(ks)h(on)h
(structures)f(can)h(b)r(e)f(enco)r(ded)-133 4719 y(using)g(abstract)g
(t)n(yp)r(es);)g(w)n(e)g(argue)g(that)f(this)g(is)i(a)e(small)h(price)
g(to)-133 4810 y(pa)n(y)22 b(for)h(the)f(o)n(v)n(erall)h
(simpli\014cations)g(resulting)g(from)f(this)h(restric-)-133
4902 y(tion.)-50 4994 y(On)30 b(the)f(tec)n(hnical)i(side,)h(the)e
(main)f(originalit)n(y)j(of)f(this)f(pap)r(er)-133 5085
y(is)k(the)f(use)h(of)g(what)g(is)g(essen)n(tially)g(w)n(eak)g(sums)f
([19)q(,)h(7]|alb)r(eit)-133 5176 y(with)d(an)g(un)n(usual)f
(elimination)h(construct:)44 b(the)30 b(\dot)h(notation”)-133
5268 y([4)q(,)22 b(5]|instead)h(of)f(the)g(strong)g(sums)g(that)f(ha)n
(v)n(e)h(b)r(een)f(used)h(so)g(far)-133 5359 y(to)i(giv)n(e)f(t)n(yp)r
(e-theoretic)g(accoun)n(ts)g(of)i(SML)e(mo)r(dules)g([15)q(,)g(12)q(,)h
(13)q(].)2066 -108 y(Unlik)n(e)32 b(strong)i(sums,)g(w)n(eak)f(sums)f
(pro)n(vide)g(direct)h(supp)r(ort)f(for)2066 -17 y(t)n(yp)r(e)20
b(abstraction)i(and)f(mak)n(e)f(the)g(\phase)i(distinction”)f([13)r(])
g(ob)n(vi-)2066 75 y(ous.)33 b(The)21 b(w)n(ell-kno)n(wn)g
(inadequacies)g(of)g(w)n(eak)g(sums)e(for)j(mo)r(dular)2066
166 y(programming)g([15)q(])g(are)h(here)g(o\013set)f(b)n(y)g(the)g
(extra)g(expressiv)n(eness)2066 257 y(brough)n(t)j(b)n(y)g(manifest)h
(t)n(yp)r(es.)2149 353 y(The)36 b(presen)n(t)f(pap)r(er)h(also)h(puts)e
(forw)n(ard)i(a)f(new)g(w)n(a)n(y)g(to)g(ac-)2066 444
y(coun)n(t)24 b(for)i(t)n(yp)r(e)d(sharing,)j(distinct)f(from)f(the)h
(hea)n(vy)e(graph-based)2066 535 y(formalism)31 b(of)g(the)f
Ft(De\014nition)h Fn([11)q(,)g(17)q(,)g(25)q(])g(and)f(from)g(Ap)r(on)n
(te’s)2066 627 y(record-based)38 b(mo)r(dule)f(algebra)i([1)q(].)71
b(Previous)39 b(approac)n(hes)f(to)2066 718 y(sharing)24
b(fo)r(cus)h(on)e(structure)g(generativit)n(y)h(and)f(sharing)h(b)r(et)
n(w)n(een)2066 809 y(structures;)e(as)f(a)f(consequence,)h(they)f
(require)f(stamps)h(o)n(v)n(er)g(struc-)2066 901 y(tures)27
b(and)g(consistency)h(conditions)g(b)r(et)n(w)n(een)f(structures)g(ha)n
(ving)2066 992 y(the)f(same)f(stamp.)35 b(In)25 b(con)n(trast,)i
(sharing)f(restricted)h(to)f(t)n(yp)r(es,)f(as)2066 1083
y(in)i(this)h(pap)r(er,)g(can)f(b)r(e)g(expressed)g(b)n(y)g(a)g
(standard)h(term)e(algebra)2066 1175 y(without)j(extra)g(consistency)g
(c)n(hec)n(ks.)43 b(More)30 b(generally)-6 b(,)31 b(the)d
Ft(Def-)2066 1266 y(inition)f Fn(uses)h(seman)n(tic)g(ob)t(jects)g
((ric)n(her)g(than)f(signature)i(expres-)2066 1357 y(sions))35
b(in)f(the)g(static)h(seman)n(tics,)i(while)e(our)f(t)n(yp)r(e)f
(system)h(uses)2066 1449 y(only)f(syn)n(tactic)g(ob)t(jects)h
((signature)g(and)e(mo)r(dule)h(t)n(yp)r(e)f(expres-)2066
1540 y(sions),)27 b(in)f(k)n(eeping)f(with)h(the)f(t)n(yp)r(ed)g
Fg(\025)p Fn(-calculus)h(tradition.)2066 1763 y Fm(1.4)95
b(Outline)2066 1910 y Fn(The)34 b(remainder)g(of)g(this)h(pap)r(er)e
(is)i(organized)g(as)g(follo)n(ws.)62 b(Sec-)2066 2001
y(tion)36 b(2)h(in)n(tro)r(duces)f(manifest)g(t)n(yp)r(es)f(and)h
(illustrates)i(ho)n(w)e(they)2066 2093 y(propagate)g(t)n(yp)r(e)e
(equalities)i(and)f(express)g(sharing)h(constrain)n(ts.)2066
2184 y(Section)26 b(3)h(formalizes)h(a)e(small)g(SML-lik)n(e)g(mo)r
(dule)g(calculus)h(with)2066 2275 y(manifest)32 b(t)n(yp)r(es.)53
b(Section)32 b(4)g(sho)n(ws)h(the)e(expressiv)n(eness)h(of)h(this)2066
2367 y(calculus)26 b(b)n(y)d(enco)r(ding)i(a)g(\014rst-order)f
(calculus)h(with)g(strong)g(sums)2066 2458 y(in)38 b(it.)70
b(Section)38 b(5)g(men)n(tions)f(some)g(simple)h(extensions)g(of)g
(this)2066 2549 y(w)n(ork,)26 b(follo)n(w)n(ed)i(b)n(y)d(concluding)h
(remarks)f(in)g(section)i(6.)2066 2797 y Fo(2)112 b(Informal)37
b(dev)m(elopmen)m(t)2066 2978 y Fm(2.1)95 b(T)-8 b(ransparency)34
b(in)d(SML)2066 3125 y Fn(The)39 b(SML)g(mo)r(dule)e(language)j(is)g
(often)f(presen)n(ted)f(as)h(a)g(small)2066 3216 y(t)n(yp)r(ed)d
(functional)h(language,)42 b(with)37 b(structures)f(as)i(base)f(v)l
(alues)2066 3307 y(and)22 b(data)g(structures,)g(functors)h(as)f
(functions,)h(and)f(signatures)g(as)2066 3399 y(t)n(yp)r(es.)42
b(Ho)n(w)n(ev)n(er,)29 b(this)f(mo)r(dule)g(language)h(departs)g
(signi\014can)n(tly)2066 3490 y(from)36 b(most)f(t)n(yp)r(ed)g
(languages)i(on)f(one)g(p)r(oin)n(t:)54 b(to)36 b(t)n(yp)r(ec)n(hec)n
(k)f(a)2066 3581 y(mo)r(dule)23 b(expression)i(con)n(taining)f(a)h
(free)f(structure)g(iden)n(ti\014er)g Fh(S)p Fn(,)g(it)2066
3672 y(do)r(es)d(not)f(su\016ce)g(to)g(kno)n(w)g(the)f(signature)i
((the)e(t)n(yp)r(e))g(of)i Fh(S)p Fn(;)f(the)g(ac-)2066
3764 y(tual)25 b(structure)e((the)h(v)l(alue))g(b)r(ound)f(to)i
Fh(S)f Fn(is)h(also)h(needed)d(in)h(some)2066 3855 y(cases.)36
b(Consider)27 b(the)e(follo)n(wing)j(co)r(de)e(fragmen)n(t:)2143
4004 y Fh(…)40 b(S.less)g(1)g(2)f(…)2066 4148 y Fn(where)26
b Fh(S)g Fn(is)g(assumed)f(to)h(ha)n(v)n(e)f(the)h(follo)n(wing)i
(signature:)2143 4297 y Fh(S)39 b(:)h(sig)g(type)g(t;)g(val)g(less:)g
(t)f(->)h(t)f(->)h(bool)g(end)2066 4442 y Fn(The)35 b(co)r(de)f
(fragmen)n(t)g(ab)r(o)n(v)n(e)g(is)h(w)n(ell-t)n(yp)r(ed)f(if)h
Fh(S)f Fn(is)h(b)r(ound)e(to)i(a)2066 4533 y(structure)21
b(that)h(implemen)n(ts)d Fh(t)j Fn(as)g(the)f(t)n(yp)r(e)g
Fh(int)h Fn(of)g(in)n(tegers.)34 b(But)2066 4625 y(it)27
b(is)g(ill-t)n(yp)r(ed)g(if)g Fh(S.t)g Fn(has)g(b)r(een)g(implemen)n
(ted)d(as)k(another)f(t)n(yp)r(e.)2066 4716 y(Both)21
b(implemen)n(tations)f(of)h Fh(S)g Fn(satisfy)h(the)e(signature)h(giv)n
(en)g(ab)r(o)n(v)n(e,)2066 4807 y(though.)2149 4902 y(As)34
b(sho)n(wn)g(b)n(y)e(this)i(example,)h(signatures)g(are)f(not)f
(complete)2066 4994 y(t)n(yp)r(e)19 b(sp)r(eci\014cations)j(for)f
(structures:)31 b(some)20 b(information)h(required)2066
5085 y(to)g(t)n(yp)r(ec)n(hec)n(k)d(co)r(de)j(that)f(uses)g(the)g
(structure)g(is)h(missing)f(from)g(the)2066 5176 y(signature,)33
b(and)d(m)n(ust)e(b)r(e)j(extracted)f(from)g(the)f(structure)h(itself.)
2066 5268 y(This)37 b(is)f(b)r(ecause)g(t)n(yp)r(e)f(sp)r
(eci\014cations)i(in)f(SML)g(signatures)h(are)2066 5359
y Ft(tr)l(ansp)l(ar)l(ent)7 b Fn(:)38 b(ev)n(en)25 b(if)i(the)e
(signature)h(only)g(sa)n(ys)g Fh(type)40 b(t)26 b Fn(without)3842
5982 y(P)n(age)h(2)p eop
%%Page: 3 3
3 2 bop -133 -108 a Fn(an)n(y)30 b(indication)h(on)f(ho)n(w)g
Fh(t)g Fn(is)h(implemen)n(ted,)e(the)h(actual)h(imple-)-133
-17 y(men)n(tation)25 b(of)h Fh(t)g Fn(\sho)n(ws)h(through”)f(the)f
(signature.)-50 77 y(This)31 b(mak)n(es)f(sense)g(in)h(the)f(con)n
(text)f(of)i(a)g(toplev)n(el-based)f(sys-)-133 169 y(tem:)62
b(b)r(ecause)40 b(of)h(static)f(scoping,)45 b(the)39
b(user)h(m)n(ust)e(pro)n(vide)i(a)-133 260 y(de\014nition)33
b(for)i Fh(S)f Fn(b)r(efore)g(b)r(eing)g(able)g(to)g(en)n(ter)f(co)r
(de)h(that)g(men-)-133 351 y(tions)21 b Fh(S)p Fn(;)h(hence)e(the)h(t)n
(yp)r(ec)n(hec)n(k)n(er)e(has)i(access)i(to)e(the)f(actual)i(struc-)
-133 443 y(ture)g(b)r(ound)f(to)h Fh(S)g Fn(when)g(t)n(yping)g
(expressions)g(referring)i(to)e Fh(S)p Fn(.)g(This)-133
534 y(is)31 b(no)f(longer)i(true)e(in)g(the)g(con)n(text)f(of)i
(separate)h(compilation:)44 b Fh(S)-133 625 y Fn(can)28
b(b)r(e)g(de\014ned)e(in)i(a)g(compilation)g(unit)f Fh(A)h
Fn(and)f(used)g(in)h(another)-133 717 y(unit)f Fh(B)p
Fn(,)g(and)g Fh(A)g Fn(migh)n(t)f(not)h(y)n(et)f(b)r(e)h(written)g(at)g
(the)g(time)f(w)n(e)h(wish)-133 808 y(to)e(t)n(yp)r(ec)n(hec)n(k)f(and)
h(compile)g Fh(B)p Fn(.)g(Hence,)h(the)e(fact)i(that)f(t)n(yp)r(e)f(sp)
r(ec-)-133 899 y(i\014cations)i(are)f(transparen)n(t)f(precludes)h(Mo)r
(dula-2-st)n(yle)g(separate)-133 991 y(compilation,)30
b(where)g(program)e(fragmen)n(ts)h(are)g(t)n(yp)r(ed)f(and)g(com-)-133
1082 y(piled)e(indep)r(enden)n(tly)-6 b(,)24 b(relying)i(only)g(on)f
(their)h(exp)r(ort)f(in)n(terfaces.)-50 1176 y(In)39
b(spite)g(of)h(these)f(di\016culties)h(with)f(separate)h(compilation,)
-133 1267 y(transparen)n(t)30 b(t)n(yp)r(e)f(sp)r(eci\014cations)i(are)
g(an)f(imp)r(ortan)n(t)f(feature)h(of)-133 1358 y(the)c(SML)g(mo)r
(dule)f(system,)h(one)g(that)f(accoun)n(ts)i(for)g(a)f(large)h(part)
-133 1450 y(of)e(its)f(expressiv)n(e)g(p)r(o)n(w)n(er.)34
b(In)23 b(the)g(traditional)i(view)g(of)f(structures)-133
1541 y(as)h(t)n(yp)r(es)f(equipp)r(ed)g(with)g(op)r(erations)i(o)n(v)n
(er)f(them)e([14)q(],)i(transpar-)-133 1632 y(en)n(t)20
b(t)n(yp)r(e)f(sp)r(eci\014cations)i(mak)n(es)e(it)h(p)r(ossible)h(to)f
(add)g(op)r(erations)h(to)-133 1724 y(a)g(preexisting)g(t)n(yp)r(e,)g
(and)g(apply)f(these)h(op)r(erations)h(to)f(preexisting)-133
1815 y(v)l(alues.)34 b(A)21 b(stricter)i(in)n(terpretation)g(of)g(t)n
(yp)r(e)e(sp)r(eci\014cations)j(w)n(ould)-133 1906 y(generate)35
b(a)f(new)g(t)n(yp)r(e,)i(incompatible)d(with)h(the)g(original)i(t)n
(yp)r(e,)-133 1998 y(therefore)28 b(compromising)e(the)h(usefulness)h
(of)f(the)g(additional)h(op-)-133 2089 y(erations.)36
b(Consider)26 b(for)g(instance)g(the)f(follo)n(wing)j(signature)e(for)g
(a)-133 2180 y(t)n(yp)r(e)f(equipp)r(ed)g(with)g(a)h(total)h(ordering)f
(function:)-56 2323 y Fh(datatype)41 b(order)f(=)g(Less)g(|)f(Equal)i
(|)e(Greater;)-56 2415 y(signature)i(Order)g(=)22 2506
y(sig)101 2597 y(type)f(t)101 2689 y(val)g(cmp:)g(t)f(->)h(t)g(->)f
(order)22 2780 y(end)-133 2921 y Fn(W)-6 b(e)33 b(can)g(de\014ne)f(an)h
Fh(Order)h Fn(structure)f(for)h(a)f(base)h(t)n(yp)r(e)e(suc)n(h)g(as)
-133 3012 y Fh(int)p Fn(:)-56 3155 y Fh(structure)41
b(intOrder:)h(Order)e(=)22 3246 y(struct)101 3338 y(type)g(t)f(=)h(int)
101 3429 y(fun)g(cmp)g(i1)f(i2)h(=)179 3520 y(if)g(i1)g(=)f(i2)h(then)g
(Equal)g(else)179 3612 y(if)g(i1)g(<)f(i2)h(then)g(Less)g(else)g
(Greater)22 3703 y(end)-133 3844 y Fn(Since)63 b(the)g(t)n(yp)r(e)f(sp)
r(eci\014cation)i(in)e Fh(Order)i Fn(is)g(transparen)n(t,)-133
3935 y Fh(intOrder.t)42 b Fn(is)f(compatible)f(with)g
Fh(int)p Fn(,)45 b(hence)39 b Fh(intOrder.cmp)-133 4026
y Fn(can)53 b(b)r(e)g(applied)g(to)g(an)n(y)f(in)n(teger.)117
b(If)53 b(t)n(yp)r(e)f(sp)r(eci\014cations)-133 4117
y(w)n(ere)57 b(opaque,)63 b Fh(intOrder.t)58 b Fn(w)n(ould)e(b)r(e)g
(an)g(abstract)h(t)n(yp)r(e,)-133 4209 y(incompatible)26
b(with)h(an)n(y)f(other)g(t)n(yp)r(e,)g(and)g Fh(intOrder.cmp)j
Fn(could)-133 4300 y(not)d(b)r(e)f(applied)h(to)g(an)n(y)f(v)l(alue,)h
(making)f(the)g(structure)g(useless.)-50 4394 y(T)-6
b(ransparency)37 b(also)g(w)n(orks)g(across)h(functors.)67
b(Consider)37 b(the)-133 4485 y(follo)n(wing)d(functor)d(that)g(tak)n
(es)g(an)g(ordered)g(t)n(yp)r(e)f(and)h(pro)r(duces)-133
4577 y(an)26 b(ordering)g(o)n(v)n(er)g(lists)g(of)h(elemen)n(ts)e(of)h
(that)g(t)n(yp)r(e:)-56 4720 y Fh(functor)41 b(listOrder(base:)h
(Order):)f(Order)g(=)22 4811 y(struct)101 4902 y(type)f(t)f(=)h
(base.t)h(list)101 4994 y(fun)f(cmp)g([])f([])h(=)g(Equal)179
5085 y(|)g(cmp)g([])f()79 b(=)40 b(Less)179 5176 y(|)g(cmp)g()78
b([])40 b(=)g(Greater)179 5268 y(|)g(cmp)g((h1::t1))h((h2::t2))g(=)
336 5359 y(case)f(base.cmp)h(h1)f(h2)g(of)2614 -108 y(Equal)g(=>)g(cmp)
g(t1)f(t2)2535 -17 y(|)h(c)f(=>)h(c)2221 75 y(end)2066
224 y Fn(The)47 b(application)g(of)g Fh(listOrder)h Fn(to)e
Fh(intOrder)i Fn(pro)r(duces)e(an)2066 316 y Fh(Order)28
b Fn(structure)e(whose)h(t)n(yp)r(e)f Fh(t)g Fn(is)h(compatible)f(with)
h Fh(int)40 b(list)p Fn(,)2066 407 y(hence)j(whose)i
Fh(cmp)f Fn(function)g(can)g(b)r(e)f(applied)h(to)g(preexisting)2066
498 y(lists)32 b(of)g(in)n(tegers.)51 b(Again,)33 b(functors)e(suc)n(h)
f(as)i Fh(listOrder)h Fn(w)n(ould)2066 590 y(b)r(e)26
b(useless)h(without)e(transparency)-6 b(.)2066 821 y
Fm(2.2)95 b(Manifest)31 b(t)m(yp)s(es)2066 970 y Fn(So)23
b(far,)h(w)n(e)f(ha)n(v)n(e)f(seen)h(t)n(w)n(o)f(in)n(terpretations)i
(of)f(t)n(yp)r(e)e(declarations)2066 1062 y(in)40 b(signatures:)64
b(the)40 b(opaque)g(in)n(terpretation,)k(whic)n(h)c(supp)r(orts)2066
1153 y(separate)35 b(compilation)f(but)f(is)i(to)r(o)f(restrictiv)n(e,)
j(and)d(the)f(trans-)2066 1244 y(paren)n(t)22 b(in)n(terpretation,)h
(whic)n(h)f(is)h(expressiv)n(e)f(enough)g(but)f(causes)2066
1336 y(di\016culties)37 b(with)f(separate)h(compilation.)65
b(W)-6 b(e)36 b(no)n(w)g(prop)r(ose)h(a)2066 1427 y(third)22
b(approac)n(h,)h(whic)n(h)f(com)n(bines)g(expressiv)n(eness)g(and)g
(separate)2066 1518 y(compilation.)44 b(W)-6 b(e)29 b(consider)g(t)n
(yp)r(e)f(declarations)i(as)f(opaque,)h(but)2066 1610
y(allo)n(w)h(t)n(w)n(o)e(kinds)g(of)g(t)n(yp)r(e)g(declarations:)42
b Ft(abstr)l(act)34 b(typ)l(e)d(de)l(clar)l(a-)2066 1701
y(tions)p Fn(,)k(of)e(the)f(form)g Fh(type)40 b(t)p Fn(,)35
b(whic)n(h)d(giv)n(e)g(no)h(clue)f(on)h(ho)n(w)f Fh(t)h
Fn(is)2066 1792 y(implemen)n(ted)28 b(and)h(therefore)i(mak)n(es)d
Fh(t)i Fn(incompatible)g(with)g(an)n(y)2066 1884 y(other)h(t)n(yp)r(e)g
((opaque)f(in)n(terpretation);)35 b(and)30 b Ft(manifest)j(typ)l(e)h
(de)l(c-)2066 1975 y(lar)l(ations)p Fn(,)e(of)e(the)f(form)g
Fh(type)41 b(t)27 b Fn(=)h Fg(\034)9 b Fn(,)30 b(whic)n(h)f(require)g
(that)h Fh(t)f Fn(b)r(e)2066 2066 y(implemen)n(ted)c(as)i(the)g(t)n(yp)
r(e)f(expression)i Fg(\034)9 b Fn(,)26 b(and)h(therefore)h(mak)n(es)
2066 2158 y Fh(t)f Fn(compatible)g(with)h Fg(\034)9 b
Fn(.)2767 2126 y Fi(1)2839 2158 y Fn(This)28 b(w)n(a)n(y)-6
b(,)27 b(signatures)h(b)r(ecome)f(expres-)2066 2249 y(siv)n(e)i(enough)
g(to)h(capture)f(the)f(required)h(t)n(yp)r(e)f(equiv)l(alences,)i(and)
2066 2340 y(there)c(is)g(no)g(need)g(to)g(refer)h(to)f(the)f
(structures)h(to)g(establish)h(these)2066 2432 y(equiv)l(alences.)44
b(Consider)29 b(again)h(the)f Fh(intOrder)h Fn(example)e(ab)r(o)n(v)n
(e.)2066 2523 y(The)e(structure)2143 2678 y Fh(structure)41
b(intOrder)g(=)2221 2769 y(struct)2300 2861 y(type)f(t)f(=)h(int)2300
2952 y(fun)g(cmp)g(i1)f(i2)h(=)2378 3043 y(if)g(i1)g(=)f(i2)h(then)g
(Equal)g(else)2378 3135 y(if)g(i1)g(<)f(i2)h(then)g(Less)g(else)g
(Greater)2221 3226 y(end)2066 3375 y Fn(no)n(w)26 b(has)g(signature)
2143 3531 y Fh(intOrder:)41 b(sig)2614 3622 y(type)f(t)f(=)h(int)2614
3713 y(val)g(cmp:)g(t)f(->)h(t)f(->)h(order)2535 3804
y(end)2066 3954 y Fn(F)-6 b(rom)34 b(this)h(signature,)k(w)n(e)c(can)g
(deduce)g(that)f Fh(intOrder.t)j Fn(and)2066 4045 y Fh(int)25
b Fn(are)h(compatible;)f(hence,)g(the)f(application)i(of)f
Fh(intOrder.cmp)2066 4137 y Fn(to)30 b(in)n(teger)h(v)l(alues)f(is)g(w)
n(ell-t)n(yp)r(ed.)47 b(Notice)31 b(that)e(w)n(e)i(ha)n(v)n(e)e(estab-)
2066 4228 y(lished)g(this)h(b)n(y)d(lo)r(oking)k(at)e(the)f(signature)i
(only)-6 b(,)29 b(but)g(not)f(at)h(the)2066 4319 y(actual)40
b(structure)f(b)r(ound)g(to)g Fh(intOrder)p Fn(.)78 b(W)-6
b(e)39 b(can)g(sho)n(w)h(that)2066 4411 y Fh(intOrder.cmp)i(1)e(2)25
b Fn(is)h(w)n(ell-t)n(yp)r(ed)f(ev)n(en)g(if)h Fh(intOrder)h
Fn(is)f(de\014ned)2066 4502 y(in)i(another)g(compilation)g(unit)g(and)f
(all)i(w)n(e)f(kno)n(w)g(ab)r(out)g(it)g(is)h(its)2066
4593 y(signature,)e(as)f(pro)n(vided)f(b)n(y)g(the)g(in)n(terface)i(of)
f(the)f(unit.)2149 4690 y(Manifest)j(t)n(yp)r(es)d(also)i(w)n(ork)g
(across)g(functors.)36 b(Consider)27 b(again)2066 4781
y(the)g Fh(listOrder)i Fn(functor)e(ab)r(o)n(v)n(e.)39
b(With)27 b(manifest)g(t)n(yp)r(es,)g(w)n(e)h(can)2066
4873 y(de\014ne)d(it)h(as:)p 2066 4948 801 4 v 2151 5002
a Fi(1)2185 5027 y Fk(W)-5 b(e)41 b(do)h(not)f(consider)g(generativ)n
(e)e(datat)n(yp)r(e)i(declarations)f(in)i(sig-)2066 5093
y(natures,)54 b(since)47 b(they)g(can)h(b)r(e)f(view)n(ed)g(as)i
(declarations)e(of)h(abstract)2066 5160 y(t)n(yp)r(es)h(plus)g
(injection)e(and)i(pro)t(jection)e(op)r(erations.)110
b(F)-5 b(or)49 b(instance,)2066 5226 y(the)57 b(t)n(yp)r(e)g(sp)r
(eci\014cation)d Fj(sig)29 b(type)g(t)h(=)g(A)g(|)g(B)g(of)g(int)f(end)
56 b Fk(is)i(equiv)l(a-)2066 5293 y(len)n(t)31 b(to)h
Fj(sig)d(type)f(t;)i(val)f(inj_A:)e(t;)j(val)f(inj_B:)e(int->t;)h(val)h
(elim_t:)e(t)2066 5359 y(->)j((unit->‘a))25 b(->)30
b((int->‘a))c(->)j(‘a)h(end)p Fk(.)3842 5982 y Fn(P)n(age)d(3)p
eop
%%Page: 4 4
4 3 bop -56 -108 a Fh(functor)41 b(listOrder(base:)h(Order):)22
-17 y(sig)101 75 y(type)e(t)f(=)h(base.t)h(list)101 166
y(val)f(cmp:)g(t)f(->)h(t)g(->)f(order)22 257 y(end)-56
349 y(=)g(struct)101 440 y(type)h(t)f(=)h(base.t)h(list)101
531 y(fun)f(cmp)g(l1)f(l2)h(=)g(…)22 623 y(end)-133
764 y Fn(The)30 b(result)f(signature)h(for)g Fh(listOrder)i
Fn(mak)n(es)c(it)h(apparen)n(t)g(that)-133 856 y(the)f(comp)r(onen)n(t)
g Fh(t)h Fn(in)f(the)h(result)g(structure)f(is)h(compatible)g(with)-133
947 y Fh(base.t)41 b(list)p Fn(,)24 b(where)f Fh(base)h
Fn(is)f(the)f(argumen)n(t)g(structure.)33 b(This)24 b(is)-133
1038 y(a)c(dep)r(enden)n(t)f(function)h(t)n(yp)r(e:)31
b(the)19 b(t)n(yp)r(e)g(of)i(the)f(result)g(dep)r(ends)f(on)-133
1130 y(the)25 b(v)l(alue)h(of)g(the)g(argumen)n(t.)33
b(Then,)26 b(consider)g(the)g(application)-56 1274 y
Fh(structure)41 b(intListOrder)h(=)e(listOrder(intOrder))-133
1416 y Fn(This)26 b(application)g(is)g(w)n(ell-t)n(yp)r(ed,)f(ev)n(en)g
(though)g(the)f(signature)i(of)-133 1507 y Fh(intOrder)g
Fn(is)e(di\013eren)n(t)f(from)h Fh(Order)p Fn(,)i(the)d(argumen)n(t)g
(signature)h(of)-133 1599 y(the)30 b(functor:)43 b Fh(Order)31
b Fn(sp)r(eci\014es)g Fh(type)40 b(t)30 b Fn((an)g(abstract)g(t)n(yp)r
(e))f(but)-133 1690 y(the)36 b(signature)g(of)h Fh(intOrder)g
Fn(sa)n(ys)f Fh(type)41 b(t)e(=)h(int)c Fn((a)g(manifest)-133
1781 y(t)n(yp)r(e).)42 b(Ho)n(w)n(ev)n(er,)29 b(a)g(manifest)g(t)n(yp)
r(e)e(is)i(a)g(sp)r(ecial)h(case)f(of)g(an)g(ab-)-133
1873 y(stract)j(t)n(yp)r(e:)46 b(w)n(e)32 b(can)g(alw)n(a)n(ys)g(mak)n
(e)f(a)h(manifest)g(t)n(yp)r(e)f(abstract)-133 1964 y(b)n(y)22
b(forgetting)j(the)e(additional)h(information.)34 b(W)-6
b(e)23 b(shall)h(formalize)-133 2055 y(this)31 b(idea)h(as)g(a)f(subt)n
(yping)f(relation)i(b)r(et)n(w)n(een)f(signatures.)52
b(This)-133 2146 y(relation)31 b(will)h(sho)n(w)e(that)g(the)f
(signature)i(of)g Fh(intOrder)g Fn(is)g(a)f(sub-)-133
2238 y(t)n(yp)r(e)d(of)h Fh(Order)p Fn(,)h(hence)e(the)f(application)j
Fh(listOrder(intOrder))-133 2329 y Fn(is)d(w)n(ell-t)n(yp)r(ed.)-50
2423 y(According)e(to)h(the)e(standard)h(elimination)h(rule)f(for)h
(dep)r(enden)n(t)-133 2515 y(function)48 b(t)n(yp)r(es)f((substitute)g
(the)g(actual)i(parameter)e(for)h(the)-133 2606 y(formal)j(parameter)f
(in)h(the)f(result)h(t)n(yp)r(e),)56 b(the)50 b(signature)h(of)-133
2697 y Fh(intListOrder)28 b Fn(is:)-56 2842 y Fh(intListOrder:)22
2933 y(sig)101 3025 y(type)40 b(t)f(=)h(intOrder.t)h(list)101
3116 y(val)f(cmp:)g(t)f(->)h(t)g(->)f(order)22 3207 y(end)-133
3349 y Fn(F)-6 b(rom)49 b(this)g(signature,)57 b(it)50
b(follo)n(ws)i(that)d Fh(intListOrder.t)k Fn(is)-133
3440 y(equiv)l(alen)n(t)k(to)g Fh(intOrder.t)42 b(list)p
Fn(,)66 b(and)58 b(w)n(e)f(already)h(kno)n(w)-133 3532
y(that)66 b Fh(intOrder.t)h Fn(is)g(equiv)l(alen)n(t)d(to)i
Fh(int)p Fn(.)155 b(Since)66 b(t)n(yp)r(e)-133 3623 y(equiv)l(alence)35
b(is)g(transitiv)n(e)g(and)f(a)i(congruence,)h(it)e(follo)n(ws)i(that)
-133 3714 y Fh(intListOrder.t)46 b Fn(is)e(equiv)l(alen)n(t)e(to)h
Fh(int)d(list)p Fn(,)49 b(whic)n(h)43 b(is)g(the)-133
3806 y(result)38 b(w)n(e)g(need)f(to)h(b)r(e)g(able)g(to)g(apply)f
Fh(intListOrder.cmp)k Fn(to)-133 3897 y(in)n(teger)30
b(lists.)48 b(Again,)32 b(w)n(e)e(ha)n(v)n(e)f(reac)n(hed)h(the)f(same)
h(conclusions)-133 3988 y(as)48 b(with)f(the)g(SML)g(mo)r(dule)g
(system,)52 b(but)46 b(the)h(reasoning)i(is)-133 4080
y(completely)30 b(di\013eren)n(t:)42 b(w)n(e)31 b(ha)n(v)n(e)e
(reasoned)i(only)f(at)g(the)g(lev)n(el)g(of)-133 4171
y(signatures,)d(while)g(in)e(SML)h(w)n(e)g(had)f(to)h(lo)r(ok)h(inside)
f(structures.)-133 4389 y Fm(2.3)95 b(Av)m(oiding)31
b(signature)g(duplication)-133 4534 y Fn(An)17 b(apparen)n(t)g(w)n
(eakness)h(of)h(the)e(approac)n(h)h(presen)n(ted)f(ab)r(o)n(v)n(e)g(is)
h(the)-133 4626 y(duplication)27 b(of)g(signatures:)37
b Fh(intOrder)p Fn(,)29 b Fh(intListOrder)g Fn(and)d(the)-133
4717 y(result)d(of)g(the)g Fh(listOrder)h Fn(functor)f(all)h(ha)n(v)n
(e)e(di\013eren)n(t)g(signatures,)-133 4808 y(while)28
b(in)f(SML)g(they)f(share)h(the)g(same)f(signature)i
Fh(Order)p Fn(.)39 b(W)-6 b(orse,)-133 4899 y(the)37
b(result)h(signature)h(for)f(the)f Fh(listOrder)j Fn(functor)e(cannot)f
(b)r(e)-133 4991 y(declared)18 b(and)g(named)e(b)r(efore,)21
b(since)d(it)g(dep)r(ends)f(on)h(the)f(argumen)n(t)-133
5082 y(of)27 b(the)e(functor.)-50 5176 y(T)-6 b(o)24
b(factor)g(out)f(the)g(common)f(parts)i(b)r(et)n(w)n(een)f(these)g
(signatures)-133 5268 y((the)k Fh(val)h Fn(declarations,)i(usually),)
e(one)f(solution)i(is)f(to)f(in)n(tro)r(duce)-133 5359
y(signatures)g(parameterized)e(b)n(y)g(t)n(yp)r(e)g(expressions:)2143
-108 y Fh(signature)41 b(ManifestOrder(type)j Fg(\034)9
b Fh())38 b(=)2221 -17 y(sig)i(type)g(t)g(=)f Fg(\034)9
b Fh(;)39 b(val)h(cmp:)g(t)g(->)f(t)h(->)g(order)g(end)2066
123 y Fn(so)33 b(that)e(the)h(signature)g(of)h Fh(intOrder)g
Fn(is)g Fh(ManifestOrder(int))p Fn(,)2066 214 y(and)25
b Fh(listOrder)j Fn(can)e(b)r(e)f(declared)i(as:)2143
356 y Fh(functor)41 b(listOrder(base:)h(Order):)2221
448 y(ManifestOrder(base.t))i(=)c(…)2066 587 y Fn(The)26
b(remaining)f(problem)g(is)h(that)f(the)g(generic)h Fh(Order)h
Fn(signature,)2066 679 y(with)34 b Fh(t)f Fn(left)h(abstract,)i(cannot)
d(b)r(e)g(obtained)g(b)n(y)f(application)i(of)2066 770
y Fh(ManifestOrder)29 b Fn(and)c(m)n(ust)f(therefore)j(b)r(e)e
(declared)i(separately)-6 b(.)2149 863 y(Another)85 b(approac)n(h)h(is)
g(to)g(in)n(tro)r(duce)f(the)h(notation)2066 955 y Fh(Order)29
b(with)f(type)g(t)d Fn(=)f Fg(\034)36 b Fn(as)28 b(syn)n(tactic)g
(sugar)g(for)g(the)f(signature)2066 1046 y Fh(Order)74
b Fn(where)e(the)g(sp)r(eci\014cation)i(of)f Fh(t)f Fn(is)h(replaced)g
(b)n(y)2066 1137 y Fh(type)40 b(t)22 b Fn(=)f Fg(\034)9
b Fn(,)25 b(that)h(is:)2143 1279 y Fh(sig)40 b(type)g(t)f(=)h
Fg(\034)9 b Fh(;)39 b(val)h(cmp:)g(t)f(->)h(t)f(->)h(order)g(end)2066
1419 y Fn(This)29 b(st)n(yle)f(of)i(\after)f(the)f(fact”)i
(parameterization,)g(reminiscen)n(t)2066 1510 y(of)k(SML’s)f(syn)n(tax)
f(for)i(sharing)f(constrain)n(ts,)j(mak)n(es)c(it)h(p)r(ossible)2066
1602 y(to)26 b(write)g(the)f(signature)h(only)g(once)g(and)f(use)g(it)h
(in)f(b)r(oth)h(abstract)2066 1693 y(and)33 b(manifest)h(con)n(texts.)
58 b((T)-6 b(ofte)34 b([26)q(])g(has)g(prop)r(osed)g(a)f(similar)2066
1784 y(notation)22 b(to)h(express)e(t)n(yp)r(e)g(abbreviations)i(in)f
(signatures,)i(though)2066 1876 y(for)j(di\013eren)n(t)e(purp)r
(oses.))2149 1969 y(The)35 b Fh(with)g Fn(construct)f(is)h(just)g(a)g
(notational)g(con)n(v)n(enience:)52 b(it)2066 2060 y(can)21
b(alw)n(a)n(ys)g(b)r(e)g(expanded)e(b)r(efore)j(t)n(yping)e(as)h
(describ)r(ed)g(ab)r(o)n(v)n(e,)g(as)2066 2152 y(long)h(as)g
(signatures)g(can)f(b)r(e)g(named)f(but)h(not)g(abstracted)g(o)n(v)n
(er)g(nor)2066 2243 y(stored)34 b(in)g(structures.)58
b(A)34 b(t)n(yp)r(ec)n(hec)n(k)n(er)e(w)n(ould)i(certainly)g(a)n(v)n
(oid)2066 2334 y(this)k(expansion)f(for)h(the)f(sak)n(e)h(of)g
(e\016ciency)-6 b(,)40 b(but)c(the)h(p)r(oin)n(t)h(is)2066
2426 y(that)26 b(the)f Fh(with)h Fn(construct)g(do)r(es)g(not)g
(complicate)g(the)f(formalism.)2149 2519 y(This)32 b(is)f(no)f(longer)i
(true)e(if)i(signatures)f(can)g(app)r(ear)g(as)h(struc-)2066
2611 y(ture)i(comp)r(onen)n(ts)e(or)i(as)h(functor)f(parameters:)50
b(if)35 b Fh(S)e Fn(is)i(a)f(func-)2066 2702 y(tor)26
b(parameter,)h Fh(S)39 b(with)h(type)g(t)23 b Fn(=)e
Fg(\034)35 b Fn(cannot)26 b(b)r(e)g(expanded)f(b)r(e-)2066
2793 y(fore)g(t)n(yping.)33 b(In)23 b(this)h(con)n(text,)g(the)f
(unrestricted)h Fh(with)g Fn(construct)2066 2885 y(seems)f(to)g
(require)f(a)h(t)n(yp)r(e)f(system)g(similar)h(to)g(those)g(for)h(p)r
(olymor-)2066 2976 y(phic)g(extensible)g(records)h([6)q(].)34
b(A)24 b(more)f(reasonable)j(alternativ)n(e)f(is)2066
3067 y(to)d(restrict)g Fh(with)h Fn(to)f(situations)h(where)f(the)f
(left-hand)g(side)h(can)g(b)r(e)2066 3159 y(statically)27
b(reduced)e(to)h(a)g Fh(sig)40 b(…)g(end)26 b Fn(expression.)2066
3374 y Fm(2.4)95 b(Sharing)32 b(constrain)m(ts)g(for)g(free!)2066
3517 y Fn(So)23 b(far,)i(w)n(e)f(ha)n(v)n(e)f(seen)g(that)g(manifest)h
(t)n(yp)r(es)e(in)i(toplev)n(el)f(p)r(osition)2066 3609
y(or)18 b(functor)g(result)f(p)r(osition)i(can)e(replace)i(SML’s)f
(transparen)n(t)f(t)n(yp)r(e)2066 3700 y(sp)r(eci\014cations.)35
b(W)-6 b(e)21 b(shall)i(no)n(w)g(see)f(that)g(manifest)g(t)n(yp)r(es)g
(in)g(func-)2066 3791 y(tor)c(argumen)n(t)f(p)r(osition)i(can)f
(replace)g(SML’s)h(sharing)f(constrain)n(ts.)2066 3883
y(The)26 b(idea)g(is)g(that)g(a)g(functor)g(of)g(the)f(form)2143
4025 y Fh(functor)41 b(F)2261 4116 y((structure)g(S1:)f(sig)g(type)g
(t;)g(…)g(end)2300 4207 y(structure)h(S2:)f(sig)g(type)g(t)g(=)f
(S1.t;)h(…)g(end))g(…)2066 4347 y Fn(can)33 b(only)h(b)r(e)f
(applied)g(to)g(structures)g Fh(S1)h Fn(and)f Fh(S2)g
Fn(for)h(whic)n(h)g(w)n(e)2066 4438 y(can)26 b(pro)n(v)n(e)f(that)h
Fh(S1.t)h Fn(is)f(the)g(same)f(t)n(yp)r(e)g(as)i Fh(S2.t)p
Fn(|just)f(lik)n(e)g(the)2066 4530 y(corresp)r(onding)h(SML)e(functor)h
(with)g(a)g(sharing)g(constrain)n(t:)2143 4671 y Fh(functor)41
b(F)2261 4763 y((structure)g(S1:)f(sig)g(type)g(t;)g(…)g(end)2300
4854 y(structure)h(S2:)f(sig)g(type)g(t;)g(…)g(end)2300
4945 y(sharing)h(type)f(S1.t)g(=)f(S2.t))i(…)2066
5085 y Fn(Sharing)20 b(constrain)n(ts)h(are)g(an)f(essen)n(tial)h
(feature)g(of)g(the)e(SML)h(mo)r(d-)2066 5176 y(ule)29
b(system:)40 b(they)28 b(guaran)n(tee)h(that)g(a)g(functor)g(com)n
(bining)f(op)r(er-)2066 5268 y(ations)33 b(from)f(sev)n(eral)h
(structures)g(will)g(only)f(b)r(e)h(applied)f(to)g(con-)2066
5359 y(sisten)n(t)26 b(sets)f(of)i(structures|t)n(ypically)-6
b(,)24 b(structures)i(deriv)n(ed)e(from)3842 5982 y(P)n(age)j(4)p
eop
%%Page: 5 5
5 4 bop -133 -108 a Fn(one)27 b(common)e(structure)i(b)n(y)e(addition)i
(of)h(op)r(erations.)39 b(This)27 b(pro-)-133 -17 y(gramming)j
(situation,)k(kno)n(wn)c(as)i(the)f(\diamond)f(imp)r(ort)h(prob-)-133
75 y(lem”)d([15)q(],)i(arises)g(often)e(in)g(practice.)43
b(The)29 b(follo)n(wing)i(\diamond)-133 166 y(imp)r(ort”)36
b(example)f(sho)n(ws)i(that)f(manifest)g(t)n(yp)r(es)f(su\016ce)i(to)f
(ex-)-133 257 y(press)d(and)f(c)n(hec)n(k)g(the)g(required)f(sharing)i
(prop)r(erties.)56 b(W)-6 b(e)32 b(start)-133 349 y(b)n(y)d(a)i
(structure)f(implemen)n(ting)f(some)h(abstract)h(data)f(t)n(yp)r(e,)h
(sa)n(y)-6 b(,)-133 440 y(in)n(teger)26 b(lists:)-56
581 y Fh(signature)41 b(Intlist)g(=)22 672 y(sig)101
764 y(type)f(t)101 855 y(val)g(nil:)g(t)101 946 y(val)g(cons:)g(int)g
(->)g(t)f(->)h(t)22 1038 y(end)-133 1176 y Fn(Then,)22
b(w)n(e)g(de\014ne)e(t)n(w)n(o)h(functors)h(that)e(tak)n(e)h(an)g
Fh(Intlist)h Fn(structure)-133 1268 y(and)j(equip)g(its)i(t)n(yp)r(e)d
Fh(t)i Fn(with)g(deriv)n(ed)f(op)r(erations.)-56 1409
y Fh(signature)41 b(Interval)g(=)22 1500 y(sig)f(type)g(t;)g(val)g
(interval:)h(int)f(->)g(int)g(->)g(t)f(end)-56 1683 y(functor)i
(interval(intlist:)i(Intlist):)258 1774 y(Interval)e(with)f(type)g(t)
g(=)f(intlist.t)-56 1865 y(=)g(struct)101 1957 y(type)h(t)f(=)h
(intlist.t;)101 2048 y(fun)g(interval)h(i)e(j)h(=)f(…)22
2139 y(end)-56 2322 y(signature)i(Sumlist)g(=)22 2413
y(sig)f(type)g(t;)g(val)g(sumlist:)h(t)f(->)f(int)h(end)-56
2596 y(functor)h(sumlist(intlist:)i(Intlist):)258 2687
y(Sumlist)e(with)f(type)g(t)f(=)h(intlist.t)-56 2779
y(=)f(struct)101 2870 y(type)h(t)f(=)h(intlist.t;)101
2961 y(fun)g(sumlist)h(l)e(=)h(…)22 3053 y(end)-133
3191 y Fn(Finally)-6 b(,)41 b(w)n(e)c(de\014ne)g(a)g(functor)h(that)f
(com)n(bines)f(the)h(structures)-133 3283 y(returned)25
b(b)n(y)g(the)g(functors)h Fh(interval)h Fn(and)f Fh(sumlist)p
Fn(.)-56 3424 y Fh(functor)41 b(main)62 3515 y((structure)g(i:)f
(Interval)101 3606 y(structure)h(s:)f(Sumlist)h(with)f(type)g(t)f(=)h
(i.t))-56 3698 y(=)f(struct)101 3789 y(fun)h(f)f(n)h(=)f
(s.sumlist(i.interval)44 b(1)39 b(n))22 3880 y(end)-133
4019 y Fn(The)34 b(application)g(of)g Fh(s.sumlist)h
Fn(to)f(the)e(result)i(of)g Fh(i.interval)-133 4111 y
Fn(is)26 b(w)n(ell-t)n(yp)r(ed)e(b)r(ecause)i(the)f(signature)h(of)f
Fh(s)h Fn(guaran)n(tees)g(that)e(the)-133 4202 y(t)n(yp)r(es)k
Fh(s.t)g Fn(and)g Fh(i.t)h Fn(are)g(compatible.)41 b(No)n(w,)30
b(w)n(e)e(can)h(sho)n(w)f(that)-133 4293 y(the)d(application)-56
4434 y Fh(main(interval(list))44 b(sumlist(list)))-133
4573 y Fn(is)24 b(w)n(ell-t)n(yp)r(ed,)g(giv)n(en)f(a)h(structure)f
Fh(list)h Fn(of)g(t)n(yp)r(e)f Fh(Intlist)p Fn(.)35 b(First,)-133
4664 y(the)25 b(signature)i(of)f Fh(interval(list))j
Fn(is)-56 4805 y Fh(interval(list):)43 b(Interval)e(with)f(type)g(t)f
(=)h(list.t)-133 4944 y Fn(whic)n(h)33 b(is)g(included)g(in)f(the)h
(exp)r(ected)f(signature)i(for)f Fh(i)g Fn(in)g Fh(main)p
Fn(.)-133 5035 y(Then,)f(follo)n(wing)h(the)d(t)n(yping)f(rule)i(for)g
(functor)g(application,)i(w)n(e)-133 5127 y(substitute)21
b(the)g(actual)h(parameter)f Fh(interval(list))k Fn(for)d(the)f(for-)
-133 5218 y(mal)i(parameter)g Fh(i)g Fn(in)h(the)e(remainder)h(of)h
(the)f(functor)g(argumen)n(ts:)-56 5359 y Fh(s:)40 b(Sumlist)g(with)h
(type)f(t)f(=)h(interval(list).t)2066 -108 y Fn(W)-6
b(e)29 b(m)n(ust)f(no)n(w)i(pro)n(v)n(e)e(that)h(the)g(signature)h(of)h
(the)e(second)g(argu-)2066 -17 y(men)n(t:)2143 115 y
Fh(sumlist(list):)42 b(Sumlist)f(with)f(type)g(t)g(=)f(list.t)2066
247 y Fn(is)27 b(included)f(in)g(the)f(signature)i(for)g
Fh(s)p Fn(.)36 b(According)27 b(to)f(the)g(subt)n(yp-)2066
338 y(ing)20 b(rules)g(in)g(section)g(3,)i(this)e(amoun)n(ts)e(to)i
(sho)n(wing)h(that)e(the)h(t)n(yp)r(es)2066 430 y Fh(list.t)30
b Fn(and)e Fh(interval(list).t)k Fn(are)d(iden)n(tical.)43
b(This)29 b(immedi-)2066 521 y(ately)h(follo)n(ws)i(from)d(the)g
(signature)h(of)g Fh(interval(list))p Fn(;)35 b(again,)2066
612 y(only)26 b(the)g(signature)h(is)f(used.)36 b(Hence)26
b(the)f(application)j(of)f Fh(main)g Fn(is)2066 704 y(w)n(ell-t)n(yp)r
(ed.)43 b(On)27 b(the)h(other)h(hand,)g(w)n(e)g(will)g(correctly)g
(reject)h(ap-)2066 795 y(plications)24 b(of)f Fh(main)g
Fn(to)g(inconsisten)n(t)g Fh(i)f Fn(and)h Fh(s)f Fn(structures,)i(suc)n
(h)d(as)2143 927 y Fh(main(interval(list))44 b(sumlist(list2)))
2066 1059 y Fn(where)32 b Fh(list2)h Fn(is)g(another)e(implemen)n
(tation)g(of)h Fh(Intlist)i Fn(with)e(a)2066 1150 y(t)n(yp)r(e)19
b Fh(t)g Fn(incompatible)h(with)g Fh(list.t)p Fn(.)33
b(T)n(yping)20 b(pro)r(ceeds)g(as)g(ab)r(o)n(v)n(e,)2066
1241 y(but)35 b(fails)j(b)r(ecause)f Fh(interval(list).t)j
Fn(and)c Fh(list2.t)i Fn(are)e(not)2066 1333 y(compatible,)g(hence)d
(the)h(signature)g(of)g Fh(sumlist(list2))j Fn(is)d(not)2066
1424 y(included)25 b(in)h(the)f(signature)i(sp)r(eci\014ed)e(for)i
Fh(s)p Fn(.)2149 1515 y(Notice)f(that)g(w)n(e)g(ha)n(v)n(e)f(c)n(hec)n
(k)n(ed)g(the)g(sharing)i(constrain)n(t)f(using)2066
1607 y(only)c(the)g(general)h(rules)f(for)h(subt)n(yping)e(and)h
(functor)g(application:)2066 1698 y(no)33 b(sp)r(ecial)i(t)n(yping)d
(rule)i(is)f(required|at)g(least)h(for)g(this)f(simple)2066
1789 y(diamond)g(imp)r(ort)g(problem;)k(section)d(3.4)g(sho)n(ws)h
(that)e(an)h(addi-)2066 1881 y(tional)e(\t)n(yp)r(e)f(strengthening”)h
(rule)f(is)h(sometimes)f(necessary)h(to)2066 1972 y(establish)27
b(the)e(exp)r(ected)g(sharing)h(prop)r(erties.)2066 2176
y Fm(2.5)95 b(Expressible)30 b(sharing)h(constrain)m(ts)2066
2315 y Fn(The)c(sharing)g(constrain)n(ts)g(expressible)g(with)f
(manifest)h(t)n(yp)r(es)f(are)2066 2407 y(less)j(general)g(than)f
(those)g(expressible)h(in)f(the)f(SML)h(mo)r(dule)f(sys-)2066
2498 y(tem.)k(First,)20 b(manifest)e(t)n(yp)r(es)e(can)i(only)f
(express)h(constrain)n(ts)g(of)g(the)2066 2589 y(form)g
Ft(typ)l(e)28 b(identi\014er)j Fn(=)21 b Ft(typ)l(e)27
b(expr)l(ession)6 b Fn(,)23 b(whic)n(h)18 b(are)h(b)r(oth)f(asym-)2066
2681 y(metrical)j(and)f(lo)r(cal)i((a)e(constrain)n(t)h(o)n(v)n(er)g
(a)f(t)n(yp)r(e)g Fh(t)g Fn(m)n(ust)f(app)r(ear)i(in)2066
2772 y(the)f(signature)h(that)f(declares)i Fh(t)p Fn().)33
b(In)19 b(con)n(trast,)j(SML)f(allo)n(ws)h(shar-)2066
2863 y(ing)28 b(constrain)n(ts)g(of)g(the)f(form)g Ft(long)36
b(identi\014er)d Fn(=)24 b Ft(long)36 b(identi\014er)2066
2954 y Fn((e.g.)44 b Fh(p.t)c(=)f(q.x.t)p Fn(),)30
b(more)e(symmetrical)g(and)g(non-lo)r(cal.)43 b(This)2066
3046 y(di\013erence)34 b(is)h(mostly)f(cosmetic,)j(ho)n(w)n(ev)n(er:)52
b(SML-st)n(yle)33 b(sharing)2066 3137 y(constrain)n(ts)24
b(can)f(b)r(e)g(compiled)f(in)n(to)h(manifest)h(t)n(yp)r(es)e(b)n(y)g
(c)n(ho)r(osing)2066 3228 y(a)31 b(represen)n(tativ)n(e)f(for)h(eac)n
(h)g(equiv)l(alence)f(class)i(of)f(shared)f(t)n(yp)r(es,)2066
3320 y(and)40 b(pushing)f(the)h(constrain)n(ts)h(do)n(wn)e(the)h
(constrained)g(signa-)2066 3411 y(tures.)2149 3502 y(A)30
b(more)g(substan)n(tial)g(di\013erence)g(is)h(that)f(manifest)g(t)n(yp)
r(es)g(can)2066 3594 y(only)h(express)h(the)f(equalit)n(y)g(of)h(t)n(w)
n(o)f(t)n(yp)r(es,)i(while)f(SML)f(sharing)2066 3685
y(constrain)n(ts)g(can)f(also)h(express)f(the)g(equalit)n(y)g(of)g(t)n
(w)n(o)h(structures.)2066 3776 y(Manifest)20 b(t)n(yp)r(es)d(can)i
(accoun)n(t)f(for)h(the)f(most)f(common)g(use)h(of)h(shar-)2066
3868 y(ing)31 b(constrain)n(ts)g(o)n(v)n(er)g(structures:)44
b(to)31 b(sp)r(ecify)g(sharing)g(b)r(et)n(w)n(een)2066
3959 y(all)d(t)n(yp)r(e)d(comp)r(onen)n(ts)h(of)h(t)n(w)n(o)g
(structures)f(in)g(a)h(compact)f(w)n(a)n(y)-6 b(.)37
b(A)2066 4050 y(more)28 b(adv)l(anced)f(use)g(of)i(sharing)g(constrain)
n(ts)f(o)n(v)n(er)g(structures)g(is)2066 4142 y(to)33
b(ensure)g(that)g(the)f(v)l(alue)h(comp)r(onen)n(ts)f(of)i(the)f
(structures)g(are)2066 4233 y(also)i(iden)n(tical,)g(whic)n(h)e(is)h
(useful)f(to)h(deal)f(with)g(structures)g(that)2066 4324
y(ha)n(v)n(e)25 b(a)i(lo)r(cal)g(state)g([11)q(].)35
b(This)27 b(can)f(b)r(e)g(enco)r(ded)f(to)h(some)g(exten)n(t)2066
4416 y(in)h(our)g(calculus,)h(b)n(y)e(in)n(tro)r(ducing)h(an)g
(abstract)g(t)n(yp)r(e)f(to)h(act)g(as)h(a)2066 4507
y(structure)d(stamp.)34 b(F)-6 b(or)26 b(instance,)g(the)g(SML)f(sp)r
(eci\014cation)2143 4639 y Fh(functor)41 b(F)2182 4730
y((structure)h(A:)d(sig)h(val)g(r:)g(int)g(ref)g(…)g(end)2221
4821 y(structure)i(B:)d(sig)h(val)g(r:)g(int)g(ref)g(…)g(end)2221
4913 y(sharing)h(A)f(=)f(B))2066 5045 y Fn(b)r(ecomes)2143
5176 y Fh(functor)i(F)2182 5268 y((structure)h(A:)d(sig)h(type)g
(stamp;)2888 5359 y(val)g(r:)g(int)g(ref)g(…)g(end)3842
5982 y Fn(P)n(age)27 b(5)p eop
%%Page: 6 6
6 5 bop 22 -108 a Fh(structure)42 b(B:)d(sig)h(type)g(stamp)h(=)e
(A.stamp;)689 -17 y(val)h(r:)g(int)g(ref)g(…)g(end))-133
130 y Fn(If)28 b(the)f Fh(stamp)i Fn(t)n(yp)r(e)d(\014elds)i(are)g
(abstract)g(t)n(yp)r(es)f(in)g(all)i(structures,)-133
221 y(then)d(the)h(equalit)n(y)f(of)i(stamp)e(t)n(yp)r(es)h(guaran)n
(tees)g(the)g(equalit)n(y)f(of)-133 313 y(the)e(structures,)h(b)n(y)e
(generativit)n(y)h(of)i(abstract)e(t)n(yp)r(es.)34 b(This)25
b(relies)-133 404 y(on)e(programmer’s)g(discipline,)i(ho)n(w)n(ev)n
(er;)g(hence)e(the)g(t)n(yp)r(e)f(system)-133 495 y(cannot)i(infer)h
(that)e(all)i(comp)r(onen)n(ts)f(of)g(these)g(t)n(w)n(o)h(structures)f
(are)-133 587 y(themselv)n(es)18 b(shared.)33 b(On)18
b(the)h(other)g(hand)f(the)g(absence)i(of)f(sharing)-133
678 y(constrain)n(ts)28 b(o)n(v)n(er)f(structures)g(greatly)h
(simpli\014es)f(the)g(formalism:)-133 769 y(since)g(structures)e(ha)n
(v)n(e)h(no)f(\iden)n(tit)n(y”,)h(there)g(is)g(no)g(need)g(to)g(rep-)
-133 861 y(resen)n(t)g(them)e(b)n(y)h(unique)g(stamps,)h(as)g(in)g([17)
q(];)g(simple)g(record-lik)n(e)-133 952 y(terms)f(su\016ce.)-133
1179 y Fm(2.6)95 b(The)53 b(problem)f(with)h(t)m(yp)s(e)g
(abbreviations)h(in)85 1278 y(signatures)-133 1426 y
Fn(Manifest)36 b(t)n(yp)r(es)d(are)h(similar)h(to)f(an)g(often)g(prop)r
(osed)g(extension)-133 1517 y(of)29 b(SML)f(called)h(\t)n(yp)r(e)f
(abbreviations)h(in)f(signatures”.)43 b(This)29 b(ex-)-133
1609 y(tension)i(has)f(b)r(een)g(excluded)f(from)h(the)g(Standard)g(b)r
(ecause)g(it)h(is)-133 1700 y(kno)n(wn)21 b(to)h(cause)g(serious)h
(di\016culties)f([16)r(]:)32 b(if)23 b(t)n(yp)r(e)d(abbreviations)-133
1791 y(are)i(allo)n(w)n(ed)h(in)f(signatures,)h(signature)g(elab)r
(oration)g(b)r(ecomes)e(un-)-133 1883 y(decidable.)38
b(It)26 b(is)h(w)n(orth)g(p)r(oin)n(ting)g(out)f(that)h(this)f(problem)
g(is)h(not)-133 1974 y(inheren)n(t)22 b(to)g(t)n(yp)r(e)f
(abbreviations)i(in)e(signatures,)k(but)c(stems)g(from)-133
2065 y(their)k(in)n(teraction)g(with)f(sharing)i(constrain)n(ts.)34
b(In)24 b(the)g(simple)h(ap-)-133 2157 y(proac)n(h)38
b(suggested)h(in)f([16)q(],)k(sharing)c(constrain)n(ts)h(ma)n(y)e(in)n
(v)n(olv)n(e)-133 2248 y(abbreviated)26 b(t)n(yp)r(e)e(constructors,)j
(as)f(in:)-56 2399 y Fh(sig)22 2491 y(type)41 b(t)e(=)g
Fg(\034)22 2582 y Fh(type)i(s)e(=)g Fg(\033)22 2673 y
Fh(sharing)i(type)f(t)g(=)f(s)-56 2765 y(end)-133 2911
y Fn(In)23 b(this)g(approac)n(h,)h(sharing)g(constrain)n(ts)f(are)h
(therefore)g(no)f(longer)-133 3003 y(restricted)k(to)f(equalities)g(b)r
(et)n(w)n(een)g(t)n(yp)r(e)f(constructors:)36 b(they)25
b(can)-133 3094 y(no)n(w)36 b(express)f(arbitrary)h(equations)g(b)r(et)
n(w)n(een)f(t)n(yp)r(e)f(expressions)-133 3185 y(()p
Fg(\034)42 b Fn(=)33 b Fg(\033)i Fn(in)e(the)f(example)h(ab)r(o)n(v)n
(e).)55 b(Since)33 b(t)n(yp)r(e)f(equations)h(ma)n(y)-133
3277 y(in)n(v)n(olv)n(e)23 b(abstract)h(t)n(yp)r(e)e(constructors)i
((as)f(in)g Fh(int)40 b(t)22 b Fn(=)f Fh(int)j Fn(where)-133
3368 y Fh(t)30 b Fn(is)h(declared)g(as)f Fh(type)40 b(‘a)g(t)p
Fn(),)31 b(second-order)g(uni\014cation)f(is)g(re-)-133
3459 y(quired)25 b(to)h(elab)r(orate)h(these)f(sharing)g(constrain)n
(ts.)-50 3555 y(Our)37 b(approac)n(h)i(a)n(v)n(oids)f(this)g
(di\016cult)n(y:)58 b(since)39 b(sharing)f(con-)-133
3646 y(strain)n(ts)21 b(are)g(expressed)f(in)g(terms)g(of)h(manifest)f
(t)n(yp)r(es,)h(all)g(express-)-133 3738 y(ible)30 b(sharing)g
(constrain)n(ts)g(are)g(of)h(the)e(format)g Ft(long)38
b(identi\014er)e Fn(=)-133 3829 y Ft(typ)l(e)d(expr)l(ession)6
b Fn(,)28 b(where)d Fg(l)q(ong)i(identif)8 b(ier)27 b
Fn(refers)e(to)g(an)g(abstract)-133 3920 y(t)n(yp)r(e.)53
b(Hence)31 b(there)h(is)h(no)f(w)n(a)n(y)g(to)g(equate)f(t)n(w)n(o)i
(arbitrary)f(t)n(yp)r(e)-133 4012 y(expressions.)50 b(F)-6
b(or)31 b(instance,)i(the)d(pathological)j(signature)e(giv)n(en)-133
4103 y(ab)r(o)n(v)n(e)23 b(is)h(not)f(expressible)h(in)f(our)g(system:)
32 b(assuming)23 b Fh(t)g Fn(is)h(c)n(hosen)-133 4194
y(as)g(represen)n(tativ)n(e)g(for)g(the)f(equiv)l(alence)g(class)i(of)f
Fh(s)g Fn(and)f Fh(t)p Fn(,)h(then)f Fh(s)-133 4286 y
Fn(w)n(ould)h(ha)n(v)n(e)f(to)h(b)r(e)g(declared)g(as)g(equal)g(to)g
Fg(\033)i Fn(and)e(equal)g(to)g Fh(t)f Fn(also,)-133
4377 y(whic)n(h)j(is)g(syn)n(tactically)g(imp)r(ossible.)-133
4628 y Fo(3)112 b(A)37 b(calculus)g(of)g(mo)s(dules)-133
4802 y Fn(W)-6 b(e)18 b(no)n(w)h(formalize)g(the)f(ideas)h(presen)n
(ted)f(ab)r(o)n(v)n(e)g(in)g(a)g(simple)g(mo)r(d-)-133
4893 y(ule)26 b(calculus)g(built)g(on)g(top)f(of)i(a)f(t)n(yp)r(ed)e
(base)i(language.)-133 5120 y Fm(3.1)95 b(Syn)m(tax)-133
5268 y Fn(In)23 b(the)h(follo)n(wing)i(grammar,)e Fg(v)i
Fn(ranges)f(o)n(v)n(er)e(v)l(alue)h(names,)g Fg(t)f Fn(o)n(v)n(er)-133
5359 y(t)n(yp)r(e)i(names)g(and)h Fg(x)f Fn(o)n(v)n(er)h(mo)r(dule)f
(names.)34 b(Iden)n(ti\014ers)25 b Fg(v)1591 5367 y Ff(i)1618
5359 y Fn(,)h Fg(t)1693 5367 y Ff(i)1744 5359 y Fn(and)2066
-108 y Fg(x)2110 -100 y Ff(i)2162 -108 y Fn(are)g(comp)r(osed)g(of)g(a)
h(name)e(plus)g(a)h(stamp)f Fg(i)h Fn(tak)n(en)g(from)f(some)2066
-17 y(in\014nite)g(set)h(of)h(stamps.)2149 76 y(Stamps)20
b(are)h(used)f(to)g(distinguish)h(iden)n(ti\014ers)g(ha)n(ving)f(the)g
(same)2066 168 y(name.)45 b(W)-6 b(e)29 b(cannot)h(allo)n(w)h
(arbitrary)f(renamings)f(on)h(iden)n(ti\014ers,)2066
259 y(since)j(the)f(calculus)h(relies)g(on)f(the)g(names)g(to)g
(extract)g(structure)2066 350 y(\014elds.)42 b(Instead,)29
b(w)n(e)g(will)g(use)f(renamings)g(that)g(only)g(c)n(hange)g(the)2066
442 y(stamp)33 b(parts)h(of)h(iden)n(ti\014ers,)h(but)d(preserv)n(e)h
(the)f(name)g(parts)h(of)2066 533 y(iden)n(ti\014ers.)j(This)27
b(causes)g(no)g(di\016culties)g(with)f(structure)g(access,)2066
624 y(since)g(access)h(is)g(b)n(y)d(name,)h(not)h(b)n(y)f(name)f(plus)i
(stamp.)2149 717 y(Stamps)f(are)h(needed)f(only)h(during)g(t)n(yp)r(ec)
n(hec)n(king.)33 b(In)25 b(particu-)2066 809 y(lar,)g(they)f(can)g(b)r
(e)f(omitted)h(from)f(program)h(texts,)g(since)h(they)e(can)2066
900 y(b)r(e)32 b(reco)n(v)n(ered)g(b)n(y)e(applying)i(the)g(standard)f
(scoping)i(rules)f((eac)n(h)2066 991 y(binding)26 b(generates)g(a)g
(new)g(stamp,)g(eac)n(h)f(reference)i(to)f(an)g(iden)n(ti-)2066
1083 y(\014er)i(is)g(giv)n(en)g(the)f(stamp)g(of)i(its)f(most)f(recen)n
(t)h(binding).)40 b(W)-6 b(e)28 b(will)2066 1174 y(follo)n(w)g(this)e
(con)n(v)n(en)n(tion)f(to)h(mak)n(e)e(examples)h(more)g(legible.)2066
1320 y(V)-6 b(alue)26 b(expressions:)2164 1411 y Fg(e)21
b Fn(::=)h Fg(v)2382 1419 y Ff(i)3038 1411 y Fn(v)l(alue)k(iden)n
(ti\014er)2302 1502 y Fe(j)c Fg(p:v)596 b Fn(v)l(alue)26
b(comp)r(onen)n(t)e(of)j(a)f(structure)2302 1594 y Fe(j)c
Fg(:)13 b(:)g(:)604 b Fn(dep)r(ends)25 b(on)h(the)f(base)h(language)
2066 1712 y(T)n(yp)r(e)g(expressions:)2157 1803 y Fg(\034)k
Fn(::=)22 b Fg(t)2373 1811 y Ff(i)3038 1803 y Fn(t)n(yp)r(e)j(iden)n
(ti\014er)2302 1894 y Fe(j)d Fg(p:t)605 b Fn(t)n(yp)r(e)25
b(comp)r(onen)n(t)g(of)h(a)g(structure)2302 1986 y Fe(j)c
Fg(:)13 b(:)g(:)604 b Fn(dep)r(ends)25 b(on)h(the)f(base)h(language)
2066 2103 y(Mo)r(dule)g(expressions:)2132 2195 y Fg(m)21
b Fn(::=)h Fg(x)2389 2203 y Ff(i)3038 2195 y Fn(mo)r(dule)j(iden)n
(ti\014er)2302 2286 y Fe(j)d Fg(p:x)589 b Fn(mo)r(dule)25
b(comp)r(onen)n(t)g(of)h(a)g(structure)2302 2377 y Fe(j)c
Fh(struct)40 b Fg(s)f Fh(end)227 b Fn(structure)25 b(construction)2302
2469 y Fe(j)d Fh(functor)q Fn(()p Fg(x)2693 2477 y Ff(i)2740
2469 y Fn(:)g Fg(M)8 b Fn())13 b Fg(m)62 b Fn(functor)2302
2560 y Fe(j)22 b Fg(m)2413 2568 y Fi(1)2447 2560 y Fn(()p
Fg(m)2545 2568 y Fi(2)2579 2560 y Fn())429 b(functor)26
b(application)2066 2678 y(Mo)r(dule)g(t)n(yp)r(es:)2117
2769 y Fg(M)k Fn(::=)22 b Fh(sig)40 b Fg(S)j Fh(end)329
b Fn(signature)27 b(t)n(yp)r(e)2302 2861 y Fe(j)22 b
Fh(functor)q Fn(()p Fg(x)2693 2869 y Ff(i)2740 2861
y Fn(:)g Fg(M)8 b Fn())13 b Fg(M)2990 2829 y Fd(0)3038
2861 y Fn(dep)r(enden)n(t)24 b(function)i(t)n(yp)r(e)2066
2978 y(Structure)f(b)r(o)r(dy:)2164 3070 y Fg(s)c Fn(::=)h
Fe(;)f(j)h Fg(s)2483 3078 y Ff(c)2515 3070 y Fn(;)13
b Fg(s)2066 3188 y Fn(Structure)25 b(comp)r(onen)n(ts:)2132
3279 y Fg(s)2168 3287 y Ff(c)2221 3279 y Fn(::=)d Fh(val)40
b Fg(v)2539 3287 y Ff(i)2587 3279 y Fn(=)21 b Fg(e)334
b Fn(v)l(alue)26 b(binding)2302 3370 y Fe(j)c Fh(type)40
b Fg(t)2569 3378 y Ff(i)2616 3370 y Fn(=)21 b Fg(\034)307
b Fn(t)n(yp)r(e)25 b(binding)2302 3462 y Fe(j)d Fh(module)40
b Fg(x)2663 3470 y Ff(i)2710 3462 y Fn(:)22 b Fg(M)30
b Fn(=)21 b Fg(m)32 b Fn(mo)r(dule)25 b(binding)2066
3579 y(Signature)h(b)r(o)r(dy:)2148 3671 y Fg(S)g Fn(::=)c
Fe(;)f(j)h Fg(S)2494 3679 y Ff(c)2526 3671 y Fn(;)13
b Fg(S)2066 3789 y Fn(Signature)26 b(comp)r(onen)n(ts:)2121
3880 y Fg(S)2168 3888 y Ff(c)2221 3880 y Fn(::=)c Fh(val)40
b Fg(v)2539 3888 y Ff(i)2587 3880 y Fn(:)21 b Fg(\034)375
b Fn(v)l(alue)26 b(declaration)2302 3971 y Fe(j)c Fh(type)40
b Fg(t)2569 3979 y Ff(i)3038 3971 y Fn(abstract)26 b(t)n(yp)r(e)f
(declaration)2302 4063 y Fe(j)d Fh(type)40 b Fg(t)2569
4071 y Ff(i)2616 4063 y Fn(=)21 b Fg(\034)307 b Fn(manifest)26
b(t)n(yp)r(e)f(declaration)2302 4154 y Fe(j)d Fh(module)40
b Fg(x)2663 4162 y Ff(i)2710 4154 y Fn(:)22 b Fg(M)211
b Fn(mo)r(dule)25 b(declaration)2066 4272 y(Access)h(paths:)2161
4363 y Fg(p)21 b Fn(::=)h Fg(x)2389 4371 y Ff(i)2436
4363 y Fe(j)g Fg(p:x)2066 4481 y Fn(T)n(yping)k(en)n(vironmen)n(ts:)
2139 4572 y Fg(E)f Fn(::=)d Fe(;)f(j)h Fg(E)t Fn(;)13
b Fg(S)2589 4580 y Ff(c)2149 4811 y Fn(T)-6 b(erms)33
b(are)h(iden)n(ti\014ed)f(up)g(to)h(alpha-con)n(v)n(ersion.)58
b(The)34 b(bind-)2066 4902 y(ing)i(constructs)f(are)h
Fh(functor)h Fn((with)e(scop)r(e)h(the)f(functor)h(result)2066
4994 y(part))27 b(and)g Fh(val)p Fn(,)i Fh(type)f Fn(and)f
Fh(module)i Fn((with)f(scop)r(e)g(the)f(remainder)2066
5085 y(of)c(the)f(structure)g(or)h(signature).)34 b(Alpha-con)n(v)n
(ersion)21 b(can)i(rename)2066 5176 y(the)h(stamp)g(part)h(of)g(iden)n
(ti\014ers,)h(but)e(is)h(required)f(to)h(preserv)n(e)f(the)2066
5268 y(name)i(part.)36 b(The)27 b(comp)r(onen)n(ts)f(of)h(a)g
(structure)f(or)g(signature)i(are)2066 5359 y(assumed)d(to)h(ha)n(v)n
(e)f(distinct)h(names.)3842 5982 y(P)n(age)h(6)p eop
%%Page: 7 7
7 6 bop -133 -108 a Fc(The)29 b(base)g(language)-133
32 y Fn(The)19 b(base)g(language)h((v)l(alue)e(and)g(t)n(yp)r(e)f
(expressions))j(is)f(left)g(mostly)-133 123 y(unsp)r(eci\014ed,)36
b(since)e(the)g(mo)r(dule)f(calculus)h(mak)n(es)f(few)i(assump-)-133
215 y(tions)h(ab)r(out)g(it)f(and)g(should)h(accommo)r(date)f(a)h(v)l
(ariet)n(y)e(of)j(base)-133 306 y(languages.)e((W)-6
b(e)20 b(ha)n(v)n(e)g(exp)r(erimen)n(ted)f(with)i(t)n(w)n(o)g(base)g
(languages:)-133 397 y(ML)26 b(and)g(a)g(more)f(Algol-lik)n(e)h
(language)h(deriv)n(ed)e(from)h([22)q(].))35 b(The)-133
489 y(base)29 b(language)h(can)e(access)i(v)l(alues)f(and)f(t)n(yp)r
(es)g(b)r(ound)f(earlier)j(in)-133 580 y(the)23 b(same)f(structure)h
(()p Fg(v)580 588 y Ff(i)629 580 y Fn(and)f Fg(t)803
588 y Ff(i)829 580 y Fn().)34 b(It)22 b(can)h(also)h(refer)g(to)f(v)l
(alue)f(and)-133 671 y(t)n(yp)r(e)h(comp)r(onen)n(ts)g(of)i(other)f
(structures)f(through)h(the)f(\dot)h(nota-)-133 763
y(tion”)33 b Fg(p:v)i Fn(and)d Fg(p:t)g Fn(where)g Fg(p)g
Fn(is)h(an)f(access)i(path)d(to)i(a)f(structure)-133
854 y(with)26 b(a)g Fg(v)143 862 y Ff(i)195 854 y Fn(or)g
Fg(t)317 862 y Ff(i)369 854 y Fn(comp)r(onen)n(t.)-133
1051 y Fc(The)j(mo)r(dule)h(language)-133 1191 y Fn(The)j(mo)r(dule)g
(language)h(has)g(b)r(oth)e(structures)h(and)g(functors)g(as)-133
1283 y(\014rst-class)28 b(mo)r(dule)e(v)l(alues.)39 b(W)-6
b(e)26 b(use)h(the)g(w)n(ord)g(\mo)r(dule”)g(to)g(re-)-133
1374 y(fer)19 b(to)g(structures)f(and)g(functors.)33
b(F)-6 b(unctors)18 b(liv)n(e)g(at)h(the)f(same)g(lev)n(el)-133
1465 y(as)27 b(structure,)e(unlik)n(e)h(in)f(T)-6 b(ofte’s)28
b(system)d([25)q(].)35 b(The)26 b(mo)r(dule)f(lan-)-133
1557 y(guage)32 b(is)f(actually)g(lam)n(b)r(da-calculus)g(with)f(one)h
(data)g(structure:)-133 1648 y(generalized)i(pro)r(ducts.)53
b(Its)32 b(dynamic)e(seman)n(tics)i(is)g(giv)n(en)g(b)n(y)f(a)-133
1739 y(straigh)n(tforw)n(ard)21 b(translation)f(to)f(un)n(t)n(yp)r(ed)e
(lam)n(b)r(da-calculus)i(with)-133 1831 y(pro)r(ducts,)26
b(b)n(y)f(erasing)h(the)g(t)n(yp)r(e)f(comp)r(onen)n(ts)f(in)i
(structures.)-50 1922 y(Structures)d(are)g(sequences)g(of)h(bindings)f
(for)h(v)l(alues,)g(t)n(yp)r(es)e(and)-133 2014 y(mo)r(dules.)59
b(T)-6 b(o)35 b(k)n(eep)e(this)h(pap)r(er)g(simple,)j(w)n(e)d(do)g(not)
g(formalize)-133 2105 y(mo)r(dule)25 b(t)n(yp)r(e)g(bindings)h(()p
Fh(signature)41 b(X)e(=)h(sig)g(…)f(end)p Fn().)d(Sim-)-133
2196 y(ple)25 b(uses)f(of)i(mo)r(dule)d(t)n(yp)r(e)h(bindings)g((as)h
(in)g(the)f(examples)g(of)h(sec-)-133 2288 y(tion)36
b(2))g(can)f(b)r(e)h(translated)g(b)n(y)e(duplicating)i(mo)r(dule)f(t)
n(yp)r(e)g(ex-)-133 2379 y(pressions.)66 b(In)n(tro)r(ducing)35
b(mo)r(dule)g(t)n(yp)r(e)g(bindings)g(as)h(structure)-133
2470 y(comp)r(onen)n(ts)22 b(is)g(tempting,)h(as)g(it)f(brings)h
(considerable)g(expressiv)n(e)-133 2562 y(p)r(o)n(w)n(er)d(to)f(the)g
(mo)r(dule)f(system:)31 b(p)r(olymorphic)18 b(mo)r(dules)h(and)g(ev)n
(en)-133 2653 y Fg(F)-84 2661 y Ff(!)-39 2653 y Fn(-lik)n(e)30
b(mo)r(dule)g(t)n(yp)r(e)f(op)r(erators)j(are)f(de\014nable.)48
b(F)-6 b(or)30 b(instance,)-133 2744 y(the)h(p)r(olymorphic)g(mo)r
(dule)g(\003)p Fg(X)r(:m)h Fn(w)n(ould)f(b)r(e)h(expressed)f(as)h(the)
-133 2836 y(functor)-56 2970 y Fh(functor(x:)41 b(sig)f(signature)i(X)
d(end))h Fn(()p Fg(m)p Fe(f)p Fg(X)28 b Fe( )21 b Fh(x)p
Fg(:)p Fh(X)q Fe(g)p Fn())p Fg(:)-133 3103 y Fn(Ho)n(w)n(ev)n(er,)38
b(the)c(implications)h(of)h(in)n(tro)r(ducing)f(mo)r(dule)f(t)n(yp)r
(es)g(as)-133 3195 y(structure)c(comp)r(onen)n(ts)g(are)h(not)g(clear)g
(y)n(et,)h(esp)r(ecially)g(with)e(re-)-133 3286 y(sp)r(ect)c(to)g
(decidabilit)n(y)g(of)g(t)n(yp)r(ec)n(hec)n(king)f([10)q(].)-133
3483 y Fc(Access)k(paths)-133 3623 y Fn(The)37 b(main)f(singularit)n(y)
h(of)g(this)g(calculus)g(is)g(the)f(restriction)i(to)-133
3715 y(paths)31 b(()p Fg(p:v)s Fn(,)i Fg(p:x)p Fn(,)g
Fg(p:t)p Fn())e(when)g(accessing)i(structure)f(comp)r(onen)n(ts,)-133
3806 y(instead)i(of)g(a)g(more)f(general)i(pro)t(jection)g(construct)f
(()p Fg(m:v)s Fn(,)h Fg(m:x)p Fn(,)-133 3897 y Fg(m:t)p
Fn())19 b(that)g(could)g(b)r(e)h(applied)f(to)h(an)n(y)e(mo)r(dule)h
(expression)h Fg(m)p Fn(,)g(as)g(in)-133 3989 y(DL)k(and)g(XML)g([15)q
(,)g(12)q(].)34 b(F)-6 b(or)25 b(instance,)g(our)f(calculus)h(allo)n
(ws)h Fg(x)1793 3997 y Ff(i)1819 3989 y Fg(:t)-133 4080
y Fn(in)31 b(the)f(scop)r(e)h(of)g(the)f(binding)g Fg(x)866
4088 y Ff(i)921 4080 y Fn(=)f Fg(m)1078 4088 y Fi(1)1112
4080 y Fn(()p Fg(m)1210 4088 y Fi(2)1245 4080 y Fn(),)i(but)f(not)g
(directly)-133 4171 y Fg(m)-65 4179 y Fi(1)-31 4171 y
Fn(()p Fg(m)67 4179 y Fi(2)102 4171 y Fn())p Fg(:t)p
Fn(.)-50 4263 y(The)22 b(reason)h(wh)n(y)f(general)h(pro)t(jections)h
((and)d(ev)n(en)g(pro)t(jections)-133 4354 y(restricted)h(to)g(v)l
(alues,)h(as)f(in)g(Harp)r(er)f(and)g(Lillibridge)j([10)q(]))d(are)i
(in-)-133 4446 y(adequate)j(is)g(that)g(w)n(e)g(ha)n(v)n(e)f(abstract)i
(t)n(yp)r(es)e(and)h(therefore)g(m)n(ust)-133 4537 y(accoun)n(t)g(for)g
(t)n(yp)r(e)f(generativit)n(y)-6 b(.)35 b(F)-6 b(or)25
b(instance,)i(assuming)e Fg(f)35 b Fn(is)26 b(a)-133
4628 y(functor)g(returning)g(a)g(structure)g(con)n(taining)g(an)g
(abstract)h(t)n(yp)r(e)e Fg(t)p Fn(,)-133 4719 y(then)d(t)n(w)n(o)i
(applications)g(of)g Fg(f)31 b Fn(to)23 b(a)h(structure)e
Fg(m)h Fn(m)n(ust)e(return)i(t)n(w)n(o)-133 4811 y(di\013eren)n(t)g(t)n
(yp)r(es)f Fg(t)p Fn(.)34 b(With)22 b(general)j(pro)t(jections,)g(w)n
(e)f(w)n(ould)f(b)r(e)g(un-)-133 4902 y(able)j(to)f(determine)e
(whether)i(the)g(t)n(w)n(o)g(t)n(yp)r(es)f Fg(f)8 b Fn(()p
Fg(m)p Fn())p Fg(:t)25 b Fn(and)f Fg(f)8 b Fn(()p Fg(m)p
Fn())p Fg(:t)-133 4993 y Fn(are)31 b(compatible)g((if)g(the)f(t)n(w)n
(o)h(o)r(ccurrences)g(of)g Fg(f)8 b Fn(()p Fg(m)p Fn())31
b(corresp)r(ond)-133 5085 y(to)g(the)f(same)g(application)h(of)h
Fg(f)8 b Fn())30 b(or)h(incompatible)f((if)h(these)g(are)-133
5176 y(distinct)26 b(applications)h(of)f Fg(f)8 b Fn().)-50
5268 y(This)48 b(problem)f(disapp)r(ears)i(if)f(w)n(e)g(restrict)g(pro)
t(jections)h(to)-133 5359 y(paths,)63 b(and)55 b(put)f(suitable)i
(restrictions)h(on)e(rebindings)h([5)q(].)2066 -108 y(Then,)48
b(the)42 b(t)n(w)n(o)i(t)n(yp)r(es)e Fg(p:t)h Fn(and)g
Fg(p:t)f Fn(are)i(alw)n(a)n(ys)g(compatible,)2066 -17
y(b)r(ecause)38 b(the)f(t)n(w)n(o)h(o)r(ccurrences)h(of)f
Fg(p)f Fn(are)h(guaran)n(teed)g(to)f(refer)2066 75 y(to)55
b(the)f(same)g(structure:)92 b(paths)54 b(do)g(not)g(con)n(tain)h
(functor)2066 166 y(applications,)63 b(hence)53 b(their)h(ev)l
(aluation)g(cannot)g(create)h(new)2066 257 y(t)n(yp)r(es.)34
b(Similarly)-6 b(,)25 b(the)g(t)n(w)n(o)h(t)n(yp)r(es)e
Fg(p:t)h Fn(and)g Fg(p)3420 226 y Fd(0)3442 257 y Fg(:t)g
Fn(where)h Fg(p)20 b Fe(6)p Fn(=)i Fg(p)3918 226 y Fd(0)3965
257 y Fn(are)2066 349 y(incompatible)43 b((assuming)f
Fg(t)g Fn(and)h Fg(t)3185 317 y Fd(0)3249 349 y Fn(are)g(abstract)h(t)n
(yp)r(es,)i(not)2066 440 y(manifest)27 b(t)n(yp)r(es),)f(b)r(ecause)h
Fg(p)e Fn(and)h Fg(p)3170 408 y Fd(0)3219 440 y Fn(are)g(assumed)g(to)h
(b)r(e)f(b)r(ound)2066 531 y(to)38 b(di\013eren)n(t)f(structures.)69
b(In)37 b(other)g(terms,)j(w)n(e)e(rely)g(on)f(name)2066
623 y(equiv)l(alence)26 b(to)f(accoun)n(t)h(for)h(generativit)n(y)-6
b(.)2066 826 y Fm(3.2)95 b(T)m(yping)32 b(rules)2066
965 y Fn(W)-6 b(e)30 b(no)n(w)g(giv)n(e)g(an)g(o)n(v)n(erview)g(of)h
(the)e(t)n(yping)g(rules,)j(whic)n(h)e(assign)2066 1056
y(mo)r(dule)20 b(t)n(yp)r(es)h(to)g(mo)r(dule)f(expressions)h(()p
Fg(E)k Fe()c Fg(m)g Fn(:)h Fg(M)8 b Fn(\))21 b(and)f(signa-)2066 1148 y(tures)25 b(to)g(structures)g(\()p Fg(E)g Fe(
)c
Fg(s)g Fn(:)h Fg(S)t Fn().)34 b(The)25 b(t)n(yping)g(rules)g(for)h(mo)
r(dule)2066 1239 y(expressions)h(are)f(mostly)f(standard:)2189
1476 y Fg(E)g Fe()c Fg(x)2383 1484 y Ff(i)2431 1476 y Fn(:)g Fg(E)t Fn(\()p Fg(x)2608 1484 y Ff(i)2634 1476 y Fn(\))2982 1403 y Fg(E)k Fe(
)c Fg(m)g Fn(:)h Fg(M)3346
1372 y Fd(0)3483 1403 y Fg(E)j Fe()d Fg(M)3716 1372 y Fd(0)3760 1403 y Fg(<)p Fn(:)f Fg(M)p 2982 1456 963 4 v 3281 1547 a(E)k Fe(
)c Fg(m)g Fn(:)h Fg(M)2916 1686
y(E)j Fe()c Fg(s)g Fn(:)h Fg(S)p 2484 1739 1167 4 v 2484 1830 a(E)j Fe(
)c Fn(()p Fh(struct)40 b Fg(s)f
Fh(end)q Fn())21 b(:)h(()p Fh(sig)40 b Fg(S)j Fh(end)q
Fn())2448 1969 y Fg(E)25 b Fe()d Fg(M)33 b Fn(mo)r(dule)25 b(t)n(yp)r(e)115 b Fg(x)3284 1977 y Ff(i)3340 1969 y Fg(=)-47 b Fe(2)22 b Fn(Dom)o(\()p Fg(E)t Fn(\))2605 2061 y Fg(E)t Fn(;)j Fh(module)41 b Fg(x)3031 2069 y Ff(i)3078 2061 y Fn(:)22 b Fg(M)29 b Fe(
)22 b Fg(m)f
Fn(:)g Fg(M)3506 2029 y Fd(0)p 2323 2113 1488 4 v 2323
2205 a Fg(E)k Fe()c Fh(functor)r Fn(\()p Fg(x)2822 2213 y Ff(i)2869 2205 y Fn(:)h Fg(M)8 b Fn(\))p Fg(m)21 b Fn(:)g Fh(functor)r Fn(\()p Fg(x)3504 2213 y Ff(i)3551 2205 y Fn(:)h Fg(M)8 b Fn(\))p Fg(M)3788 2173 y Fd(0)2247 2343 y Fg(E)25 b Fe(
)c Fg(m)2465 2351 y Fi(1)2521 2343
y Fn(:)h Fh(functor)q Fn(()p Fg(x)2912 2351 y Ff(i)2959
2343 y Fn(:)g Fg(M)8 b Fn())p Fg(M)3196 2312 y Fd(0)3334
2343 y Fg(E)25 b Fe()c Fg(m)3552 2351 y Fi(2)3608 2343 y Fn(:)g Fg(M)p 2247 2396 1486 4 v 2514 2488 a(E)k Fe(
)c
Fg(m)2732 2496 y Fi(1)2767 2488 y Fn(()p Fg(m)2865 2496
y Fi(2)2899 2488 y Fn())g(:)h Fg(M)3075 2456 y Fd(0)3097
2488 y Fe(f)p Fg(x)3179 2496 y Ff(i)3227 2488 y Fe( )f
Fg(m)3393 2496 y Fi(2)3427 2488 y Fe(g)2066 2613 y Fn(The)38
b(application)h(rule)e(is)i(the)e(usual)h(elimination)g(rule)f(for)i
(de-)2066 2705 y(p)r(enden)n(t)28 b(function)i(t)n(yp)r(es.)44
b(Because)31 b(only)e(paths)g(are)h(allo)n(w)n(ed)g(in)2066
2796 y(pro)t(jections,)35 b(the)c(substitution)g Fg(M)3143
2764 y Fd(0)3166 2796 y Fe(f)p Fg(x)3248 2804 y Ff(i)3305
2796 y Fe( )f Fg(m)3480 2804 y Fi(2)3514 2796 y Fe(g)i
Fn(is)g(unde\014ned)d(if)2066 2887 y Fg(m)2134 2895 y
Fi(2)2195 2887 y Fn(is)e(not)g(a)g(path)f(and)g Fg(x)2850
2895 y Ff(i)2903 2887 y Fn(o)r(ccurs)h(in)f Fg(M)3313
2855 y Fd(0)3336 2887 y Fn(.)37 b(In)26 b(this)h(case,)h(the)f(ap-)2066
2979 y(plication)c Fg(m)2446 2987 y Fi(1)2480 2979 y
Fn(()p Fg(m)2578 2987 y Fi(2)2613 2979 y Fn())e(is)i(ill-t)n(yp)r
(ed;)g(an)f(in)n(termediate)f(binding)h(of)h Fg(m)4033
2987 y Fi(2)2066 3070 y Fn(to)37 b(a)g(mo)r(dule)f(iden)n(ti\014er)g(m)
n(ust)f(b)r(e)h(in)n(tro)r(duced.)67 b(F)-6 b(elleisen)37
b(and)2066 3161 y(Sabry’s)24 b(A-normalization)g([23)q(])h(can)f(b)r(e)
g(used)g(to)g(in)n(tro)r(duce)g(these)2066 3252 y(bindings)i(in)f(a)h
(systematic)g(w)n(a)n(y)g(b)r(efore)g(t)n(yp)r(ec)n(hec)n(king.)2149
3344 y(The)g(most)f(un)n(usual)g(rule)h(is)g(the)g(rule)f(for)i(mo)r
(dule)e(access:)2380 3480 y Fg(E)g Fe()c Fg(p)g Fn(:)h(\()p Fh(sig)39 b Fg(S)2866 3488 y Fi(1)2901 3480 y Fn(;)26 b Fh(module)40 b Fg(x)3266 3488 y Ff(i)3314 3480 y Fn(:)21 b Fg(M)8 b Fn(;)26 b Fg(S)3532 3488 y Fi(2)3606 3480 y Fh(end)q Fn(\))p 2380 3533 1375 4 v 2413 3624 a Fg(E)f Fe(
)c Fg(p:x)g Fn(:)g Fg(M)8 b Fe(f)p Fg(n)2896 3632
y Ff(i)2945 3624 y Fe( )21 b Fg(p:n)h Fe(j)f Fg(n)3259
3632 y Ff(i)3307 3624 y Fe(2)h Fn(Dom)o(()p Fg(S)3618
3632 y Fi(1)3652 3624 y Fn())p Fe(g)2066 3775 y Fn(Here,)h
Fg(n)e Fn(ranges)i(o)n(v)n(er)e(all)h(three)g(kinds)f(of)h(names.)32
b(In)21 b(the)g(premise,)2066 3867 y(w)n(e)30 b(consider)h(the)e(path)h
Fg(p)f Fn(as)i(a)f(sp)r(ecial)h(case)g(of)g(mo)r(dule)e(expres-)2066
3958 y(sion.)48 b(The)30 b(rule)g(sa)n(ys)h(that)e Fg(p)h
Fn(in)g Fg(p:x)f Fn(m)n(ust)f(refer)j(to)f(a)g(structure)2066
4049 y(with)f(a)f(mo)r(dule)g(comp)r(onen)n(t)f(named)g
Fg(x)p Fn(;)i(the)e(t)n(yp)r(e)h(for)h(this)f(com-)2066
4141 y(p)r(onen)n(t)i(giv)n(es)h(the)f(t)n(yp)r(e)g(for)h
Fg(p:x)p Fn(.)49 b(Ho)n(w)n(ev)n(er,)32 b(the)e(t)n(yp)r(e)g(found)g
(in)2066 4232 y(the)k(signature)h(ma)n(y)e(refer)i(to)f(iden)n
(ti\014ers)g(b)r(ound)g(earlier)h(in)f(the)2066 4323
y(signature,)27 b(as)f(in)2143 4453 y Fg(p)p Fh(:)39
b(sig)h(type)g Fg(t)2641 4461 y Ff(j)2418 4544 y Fh(module)g
Fg(x)2736 4552 y Ff(i)2762 4544 y Fh(:)f(sig)h(val)g
Fg(v)3191 4553 y Ff(k)3230 4544 y Fh(:)f Fg(t)3336 4552
y Ff(j)3408 4544 y Fh(end)2261 4635 y(end)2066 4765 y
Fn(These)29 b(iden)n(ti\014ers)g(m)n(ust)e(b)r(e)h(pre\014xed)g(b)n(y)f
Fg(p)h Fn(when)h(the)f(t)n(yp)r(e)f(of)j Fg(x)2066 4856
y Fn(is)e(extracted)e(from)h(the)g(signature.)39 b(In)27
b(the)f(example)g(ab)r(o)n(v)n(e,)i(this)2066 4947 y(giv)n(es)h
Fg(p:x)e Fn(the)g(correct)i(t)n(yp)r(e)e Fh(sig)40 b(val)g
Fg(v)3307 4956 y Ff(k)3370 4947 y Fn(:)25 b Fg(p:t)39
b Fh(end)q Fn(,)29 b(with)f Fg(p:t)f Fn(in)2066 5039
y(place)f(of)h Fg(t)2378 5047 y Ff(j)2410 5039 y Fn(.)2149
5176 y(The)36 b(t)n(yping)f(of)h(structures)g(is)g(straigh)n(tforw)n
(ard.)67 b(Structures)2066 5268 y(are)25 b(dep)r(enden)n(t)e(pro)r
(ducts,)h(hence)g(a)h(binding)f(m)n(ust)f(b)r(e)h(pushed)f(in)2066
5359 y(the)i(en)n(vironmen)n(t)f(b)r(efore)j(t)n(yping)e(the)g(follo)n
(wing)j(bindings.)3842 5982 y(P)n(age)f(7)p eop
%%Page: 8 8
8 7 bop 722 -108 a Fg(E)25 b Fe()c(;)h Fn(:)g Fe(;)49 46 y Fg(E)j Fe(
)d Fg(e)f Fn(:)g Fg(\034)124 b(v)494
54 y Ff(i)550 46 y Fg(=)-46 b Fe(2)21 b Fn(Dom)o(()p
Fg(E)t Fn())115 b Fg(E)t Fn(;)26 b Fh(val)40 b Fg(v)1313
54 y Ff(i)1361 46 y Fn(:)21 b Fg(\034)30 b Fe()21 b Fg(s)g Fn(:)h Fg(S)p 49 99 1638 4 v 268 190 a(E)j Fe(
)c
Fn(()p Fh(val)40 b Fg(v)642 198 y Ff(i)690 190 y Fn(=)21
b Fg(e)p Fn(;)k Fg(s)p Fn())c(:)h(()p Fh(val)40 b Fg(v)1207
198 y Ff(i)1255 190 y Fn(:)21 b Fg(\034)9 b Fn(;)26 b
Fg(S)t Fn())250 345 y Fg(E)g Fe()21 b Fg(\034)34 b Fn(de\014nable)25 b(t)n(yp)r(e)114 b Fg(t)1083 353 y Ff(i)1139 345 y Fg(=)-46 b Fe(2)21 b Fn(Dom)o(\()p Fg(E)t Fn(\))496 436 y Fg(E)t Fn(;)26 b Fh(type)40 b Fg(t)828 444 y Ff(i)875 436 y Fn(=)21 b Fg(\034)30 b Fe(
)21 b
Fg(s)g Fn(:)h Fg(S)p 215 489 1305 4 v 215 580 a(E)j Fe()d Fn(\()p Fh(type)40 b Fg(t)620 588 y Ff(i)667 580 y Fn(=)21 b Fg(\034)9 b Fn(;)26 b Fg(s)p Fn(\))20 b(:)i(\()p Fh(type)40 b Fg(t)1221 588 y Ff(i)1269 580 y Fn(=)21 b Fg(\034)9 b Fn(;)25 b Fg(S)t Fn(\))-72 735 y Fg(E)g Fe(
)d Fg(m)f
Fn(:)g Fg(M)124 b(x)452 743 y Ff(i)507 735 y Fg(=)-46
b Fe(2)21 b Fn(Dom)o(()p Fg(E)t Fn())115 b Fg(E)t Fn(;)26
b Fh(module)40 b Fg(x)1394 743 y Ff(i)1442 735 y Fn(:)21
b Fg(M)30 b Fe()21 b Fg(s)g Fn(:)h Fg(S)p -72 787 1879 4 v 35 879 a(E)j Fe(
)c Fn(()p Fh(module)40 b Fg(x)533
887 y Ff(i)581 879 y Fn(:)21 b Fg(M)30 b Fn(=)21 b Fg(m)p
Fn(;)26 b Fg(s)p Fn())21 b(:)g(()p Fh(module)41 b Fg(x)1401
887 y Ff(i)1448 879 y Fn(:)22 b Fg(M)8 b Fn(;)26 b Fg(S)t
Fn())-133 1131 y(W)-6 b(e)28 b(assume)g(giv)n(en)g(t)n(yping)g
(judgemen)n(ts)f(for)j(the)e(base)g(language,)-133 1222
y Fg(E)46 b Fe()d Fg(e)f Fn(:)g Fg(\034)47 b Fn(and)38 b Fg(E)46 b Fe(
)c Fg(\034)34 b Fn(de\014nable)25 b(t)n(yp)r(e,)41
b(to)e(assign)g(t)n(yp)r(es)f(to)-133 1314 y(expressions)23
b(and)e(to)h(c)n(hec)n(k)f(the)h(w)n(ell-formedness)g(of)h(t)n(yp)r(e)e
(expres-)-133 1405 y(sions,)k(resp)r(ectiv)n(ely)-6 b(.)34
b((In)23 b(the)g(case)i(of)f(ML,)g(the)f(former)h(is)g(de\014ned)-133
1496 y(b)n(y)31 b(Damas)h(and)f(Milner’s)j(t)n(yp)r(e)d(system)g([9)q
(])h(with)g(the)g(extra)f(re-)-133 1588 y(quiremen)n(t)k(that)i
Fg(\034)45 b Fn(is)37 b(a)g(closed)h(t)n(yp)r(e)e(sc)n(heme,)j(and)d
(the)h(latter)-133 1679 y(c)n(hec)n(ks)30 b(that)h Fg(\034)39
b Fn(is)31 b(a)g(closed)h(simple)e(t)n(yp)r(e)g(and)h(that)f(all)i
(external)-133 1770 y(t)n(yp)r(es)25 b Fg(p:t)g Fn(in)h
Fg(\034)34 b Fn(are)26 b(v)l(alid.))-50 1871 y(The)20
b(rules)h(ab)r(o)n(v)n(e)f(mak)n(e)f(all)i(t)n(yp)r(e)e(comp)r(onen)n
(ts)g(manifest)h(in)g(the)-133 1962 y(inferred)27 b(signature.)37
b(They)26 b(can)g(b)r(e)g(abstracted)h(later,)h(if)f(desired,)-133
2054 y(using)f(a)g(mo)r(dule)f(t)n(yp)r(e)g(constrain)n(t.)-50
2155 y(The)18 b(rules)g(require)f(iden)n(ti\014ers)h(to)g(b)r(e)f
(renamed)f(so)j(that)e(they)g(are)-133 2246 y(b)r(ound)k(at)h(most)g
(once.)34 b(Rebindings)21 b(lead)i(to)f(incorrect)h(t)n(ypings)e(in)
-133 2337 y(conjunction)26 b(with)f(name)f(equiv)l(alence)h(o)n(v)n(er)
g(paths,)h(as)g(sho)n(wn)f(b)n(y)-133 2429 y(the)g(follo)n(wing)k
(example:)-56 2600 y Fh(module)41 b(x)e(:)g(sig)h(type)h(t;)e(val)h
(v:t)g(end)297 2691 y(=)f(struct)i(type)f(t=int;)h(val)f(v=3)g(end;)-56
2783 y(val)g(u)f(=)h(x.v;)-56 2874 y(module)h(x)e(:)g(sig)h(type)h(t;)e
(val)h(v:t)g(end)297 2965 y(=)f(struct)i(type)f(t=bool;)h(val)f(v=true)
h(end;)-56 3057 y(val)f(w)f(=)h(x.v;)-133 3218 y Fn(If)33
b(b)r(oth)f(mo)r(dules)g Fh(x)h Fn(ha)n(v)n(e)f(the)g(same)g(stamp,)i
(sa)n(y)-6 b(,)34 b Fh(x)1497 3226 y Ff(i)1524 3218 y
Fn(,)h(then)c(the)-133 3310 y(v)l(alues)i Fh(u)f Fn(and)h
Fh(w)f Fn(ha)n(v)n(e)g(the)g(same)g(t)n(yp)r(e)g Fh(x)1143
3318 y Ff(i)1170 3310 y Fg(:)p Fh(t)p Fn(,)j(but)c(one)i(is)g(an)g(in-)
-133 3401 y(teger)f(and)g(the)f(other)g(a)h(b)r(o)r(olean.)54
b(The)32 b(side)g(conditions)g(in)f(the)-133 3492 y(rules)24
b(ab)r(o)n(v)n(e)g(guaran)n(tee)g(that)g(the)f(t)n(w)n(o)h
Fh(x)g Fn(mo)r(dules)f(ha)n(v)n(e)h(di\013eren)n(t)-133
3584 y(stamps,)i(hence)f(that)g(the)h(t)n(yp)r(es)f(of)h
Fh(u)g Fn(and)f Fh(v)h Fn(are)g(incompatible.)-133 3835
y Fm(3.3)95 b(T)m(yp)s(e)32 b(inclusion)e(and)j(equiv)-5
b(alence)-133 3991 y Fn(T)n(yp)r(e)36 b(equiv)l(alence,)i(written)e
Fe(\031)p Fn(,)i(tak)n(es)d(in)n(to)h(accoun)n(t)g(the)f(t)n(yp)r(e)
-133 4083 y(equations)26 b(enco)r(ded)g(in)f(manifest)h(t)n(yp)r(e)f
(sp)r(eci\014cations:)388 4254 y Fg(E)445 4262 y Fi(1)479
4254 y Fn(;)h Fh(type)40 b Fg(t)750 4262 y Ff(i)798 4254
y Fn(=)21 b Fg(\034)9 b Fn(;)25 b Fg(E)1025 4262 y Fi(2)1080
4254 y Fe()d Fg(t)1177 4262 y Ff(i)1224 4254 y Fe(\031)f Fg(\034)182 4408 y(E)k Fe(
)c Fg(p)g Fn(:)g Fh(sig)40
b Fg(S)638 4416 y Fi(1)673 4408 y Fn(;)26 b Fh(type)40
b Fg(t)944 4416 y Ff(i)991 4408 y Fn(=)21 b Fg(\034)9
b Fn(;)26 b Fg(S)1209 4416 y Fi(2)1282 4408 y Fh(end)p
146 4461 1291 4 v 146 4552 a Fg(E)f Fe()c Fg(p:t)g Fe(\031)g Fg(\034)9 b Fe(f)p Fg(n)613 4560 y Ff(i)661 4552 y Fe( )21 b Fg(p:n)g Fe(j)h Fg(n)975 4560 y Ff(i)1023 4552 y Fe(2)g Fn(Dom)o(\()p Fg(S)1334 4560 y Fi(1)1368 4552 y Fn(\))p Fe(g)-133 4710 y Fn(The)f(remaining)f(rules)h(for)h(t)n(yp)r(e)d(equiv) l(alence)h(dep)r(end)g(on)h(the)f(base)-133 4801 y(language)39 b(considered.)72 b(\(F)-6 b(or)38 b(ML,)g(they)f(consist)i(of)f(the)g (usual)-133 4893 y(transitivit)n(y)27 b(and)g(congruence)g(rules.\))39 b(Inclusion)27 b(b)r(et)n(w)n(een)g(t)n(yp)r(es)-133 4984 y(\()p Fg(E)e Fe(
)c Fg(\034)30 b(<)p Fn(:)21 b
Fg(\034)256 4952 y Fd(0)278 4984 y Fn())k(is)h(base)g(language-dep)r
(enden)n(t;)g(the)f(only)g(assump-)-133 5075 y(tion)36
b(is)f(that)g(t)n(yp)r(e)g(equiv)l(alence)g(implies)g(t)n(yp)r(e)f
(inclusion.)64 b((F)-6 b(or)-133 5167 y(ML,)26 b(subt)n(yping)f(is)h
(subsumption)e(b)r(et)n(w)n(een)i(t)n(yp)r(e)f(sc)n(hemes.))-50
5268 y(The)32 b(inclusion)g(rules)g(b)r(et)n(w)n(een)f(mo)r(dule)g(t)n
(yp)r(es)g(are)h(standard.)-133 5359 y(F)-6 b(unctor)25
b(t)n(yp)r(es)g(are)i(con)n(tra)n(v)l(arian)n(t)e(in)h(their)f(domain.)
2235 -127 y Fg(E)g Fe()d Fg(M)2460 -119 y Fi(2)2516 -127 y Fg(<)p Fn(:)f Fg(M)2692 -119 y Fi(1)2842 -127 y Fg(E)t Fn(;)26 b Fh(module)40 b Fg(x)3268 -119 y Ff(i)3316 -127 y Fn(:)21 b Fg(M)3432 -119 y Fi(2)3488 -127 y Fe(
)h
Fg(M)3639 -159 y Fd(0)3631 -113 y Fi(1)3687 -127 y Fg(<)p
Fn(:)f Fg(M)3871 -159 y Fd(0)3863 -113 y Fi(2)p 2235
-74 1663 4 v 2244 17 a Fg(E)k Fe()c Fh(functor)r Fn(\()p Fg(x)2743 25 y Ff(i)2790 17 y Fn(:)h Fg(M)2907 25 y Fi(1)2941 17 y Fn(\))p Fg(M)3053 -15 y Fd(0)3045 31 y Fi(1)3101 17 y Fg(<)p Fn(:)g Fh(functor)q Fn(\()p Fg(x)3552 25 y Ff(i)3599 17 y Fn(:)g Fg(M)3716 25 y Fi(2)3751 17 y Fn(\))p Fg(M)3863 -15 y Fd(0)3855 31 y Fi(2)2790 159 y Fg(E)k Fe(
)21 b Fg(S)k(<)p Fn(:)d Fg(S)3167 127 y
Fd(0)p 2477 212 1027 4 v 2477 303 a Fg(E)j Fe()c Fh(sig)40 b Fg(S)j Fh(end)22 b Fg(<)p Fn(:)g Fh(sig)40 b Fg(S)3324 271 y Fd(0)3385 303 y Fh(end)2066 437 y Fn(Inclusion)26 b(b)r(et)n(w)n(een)g(signatures)g(is)g(de\014ned)f(as)h(follo)n(ws:) 2891 576 y Fg(E)f Fe(
)d(;)f Fg(<)p Fn(:)h Fe(;)2136
718 y Fg(E)j Fe()c Fg(S)2333 726 y Ff(c)2387 718 y Fg(<)p Fn(:)g Fg(S)2540 686 y Fd(0)2536 731 y Ff(c)2683 718 y Fg(E)t Fn(;)26 b Fg(S)2838 726 y Ff(c)2891 718 y Fe(
)21
b Fg(S)26 b(<)p Fn(:)21 b Fg(S)3185 686 y Fd(0)p 2136
771 1072 4 v 2359 862 a Fg(E)26 b Fe()21 b Fg(S)2557 870 y Ff(c)2589 862 y Fn(;)13 b Fg(S)25 b(<)p Fn(:)d Fg(S)2849 830 y Fd(0)2845 875 y Ff(c)2877 862 y Fn(;)13 b Fg(S)2962 830 y Fd(0)3473 718 y Fg(E)t Fn(;)25 b Fg(S)3627 726 y Ff(c)3681 718 y Fe(
)c Fg(S)k(<)p Fn(:)d Fg(S)3975
686 y Fd(0)p 3473 771 525 4 v 3479 862 a Fg(E)j Fe()c Fg(S)3676 870 y Ff(c)3708 862 y Fn(;)14 b Fg(S)25 b(<)p Fn(:)c Fg(S)3968 830 y Fd(0)2066 1078 y Fn(The)26 b(righ)n(tmost)f (rule)g(allo)n(ws)j(skipping)d(some)g(comp)r(onen)n(ts)f(of)i(the)2066 1169 y(ric)n(her)31 b(signature)g(if)g(they)f(ha)n(v)n(e)f(no)i(coun)n (terpart)f(in)g(the)g(simpler)2066 1261 y(signature.)65 b(Inclusion)35 b(b)r(et)n(w)n(een)h(signature)g(comp)r(onen)n(ts)f(is)h (de-)2066 1352 y(\014ned)i(in)g(the)g(ob)n(vious)g(w)n(a)n(y:)60 b Fh(val)39 b Fn(t)n(yp)r(es)e(and)h Fh(module)i Fn(mo)r(dule)2066 1443 y(t)n(yp)r(es)c(m)n(ust)f(b)r(e)h(prop)r(erly)g(included;)41 b(manifest)36 b(t)n(yp)r(e)g(sp)r(eci\014ca-)2066 1535 y(tions)d(are)g(included)f(in)g(abstract)h(t)n(yp)r(e)f(sp)r (eci\014cations;)38 b(and)32 b(t)n(w)n(o)2066 1626 y(manifest)f(t)n(yp) r(e)g(sp)r(eci\014cations)h(are)g(included)f(if)h(and)f(only)g(if)g (the)2066 1717 y(manifest)26 b(t)n(yp)r(es)f(are)h(equiv)l(alen)n(t.) 2876 1895 y Fg(E)f Fe(
)c Fg(\034)30 b(<)p Fn(:)22 b
Fg(\034)3236 1863 y Fd(0)p 2592 1947 951 4 v 2592 2039
a Fg(E)j Fe()c Fh(val)40 b Fg(v)2936 2047 y Ff(i)2984 2039 y Fn(:)21 b Fg(\034)30 b(<)p Fn(:)22 b Fh(val)39 b Fg(v)3386 2047 y Ff(i)3434 2039 y Fn(:)22 b Fg(\034)3520 2007 y Fd(0)2836 2181 y Fg(E)j Fe(
)d Fg(M)29 b(<)p Fn(:)22
b Fg(M)3275 2149 y Fd(0)p 2428 2233 1278 4 v 2428 2325
a Fg(E)j Fe()c Fh(module)41 b Fg(x)2897 2333 y Ff(i)2944 2325 y Fn(:)22 b Fg(M)29 b(<)p Fn(:)22 b Fh(module)40 b Fg(x)3511 2333 y Ff(i)3558 2325 y Fn(:)22 b Fg(M)3683 2293 y Fd(0)2108 2467 y Fg(E)j Fe(
)c Fh(type)40 b Fg(t)2482
2475 y Ff(i)2530 2467 y Fn(=)21 b Fg(\034)29 b(<)p Fn(:)22
b Fh(type)40 b Fg(t)3001 2475 y Ff(i)3251 2467 y Fg(E)25
b Fe()c Fh(type)41 b Fg(t)3626 2475 y Ff(i)3673 2467 y Fg(<)p Fn(:)21 b Fh(type)41 b Fg(t)4000 2475 y Ff(i)2887 2609 y Fg(E)25 b Fe(
)c Fg(\034)30 b Fe(\031)21 b Fg(\034)3225
2577 y Fd(0)p 2523 2662 1087 4 v 2523 2753 a Fg(E)26
b Fe()21 b Fh(type)40 b Fg(t)2898 2761 y Ff(i)2945 2753 y Fn(=)21 b Fg(\034)30 b(<)p Fn(:)22 b Fh(type)40 b Fg(t)3417 2761 y Ff(i)3464 2753 y Fn(=)21 b Fg(\034)3588 2721 y Fd(0)2066 2887 y Fn(In)26 b(e\013ect,)h(the)f(inclusion)h Fg(S)2889 2895 y Fi(1)2946 2887 y Fg(<)p Fn(:)c Fg(S)3097 2895 y Fi(2)3157 2887 y Fn(c)n(hec)n(ks)j(that)h(all)g(comp)r(onen)n (ts)2066 2978 y(in)32 b Fg(S)2209 2986 y Fi(2)2276 2978 y Fn(are)g(presen)n(t)g(in)g Fg(S)2827 2986 y Fi(1)2861 2978 y Fn(,)i(p)r(ossibly)e(with)h(more)e(general)i(t)n(yp)r(es,)2066 3070 y(and)d(p)r(ossibly)g(in)n(tersp)r(ersed)g(with)g(other)g(comp)r (onen)n(ts.)47 b(T)-6 b(o)30 b(k)n(eep)2066 3161 y(the)19 b(rules)h(simple,)h(the)e(comp)r(onen)n(ts)g(common)f(to)h Fg(S)3604 3169 y Fi(1)3658 3161 y Fn(and)h Fg(S)3849 3169 y Fi(2)3902 3161 y Fn(m)n(ust)2066 3252 y(app)r(ear)27 b(in)f(the)h(same)f(order;)h(in)g(practice,)g(it)g(w)n(ould)g(b)r(e)f (desirable)2066 3344 y(to)g(allo)n(w)h(p)r(erm)n(utations)e(of)i(indep) r(enden)n(t)d(comp)r(onen)n(ts.)2149 3437 y(Whenev)n(er)19 b(w)n(e)i(skip)f(or)g(retain)h(a)g(comp)r(onen)n(t)e(of)i Fg(S)3647 3445 y Fi(1)3681 3437 y Fn(,)h(it)e(is)h(added)2066 3528 y(to)26 b(the)e(en)n(vironmen)n(t)g(for)i(comparing)f(the)g (remainders)g(of)h Fg(S)3884 3536 y Fi(1)3943 3528 y Fn(and)2066 3619 y Fg(S)2113 3627 y Fi(2)2148 3619 y Fn(.)42 b(This)29 b(is)g(useful)g(if)h(the)e(comp)r(onen)n(t)f(is)i(a)g (manifest)f(t)n(yp)r(e)g(\(the)2066 3711 y(t)n(yp)r(e)40 b(equation)h(migh)n(t)f(b)r(e)h(needed)f(to)i(establish)f(an)g (inclusion)2066 3802 y(later\))33 b(or)g(a)f(mo)r(dule)g(\(whose)h(mo)r (dule)e(t)n(yp)r(e)g(can)i(con)n(tain)f(mani-)2066 3893 y(fest)27 b(t)n(yp)r(es\).)2149 3986 y(Com)n(bining)d(the)h(inclusion)g (rules)g(for)h(signatures)f(and)f(the)h(t)n(yp-)2066 4077 y(ing)f(rules)f(for)h(structures,)g(w)n(e)f(can)g(t)n(yp)r(e)g (the)f(follo)n(wing)k(three)d(t)n(yp-)2066 4169 y(ical)k(examples:)2143 4308 y(\(1\))39 b Fh(struct)i(type)f(t=int;)h(val)f(x=1)f(end)h(:)2928 4399 y(sig)f(type)i(t;)e(val)h(x:t)g(end)2143 4491 y Fn(\(2\))f Fh(struct)i(type)f(t=int;)h(val)f(x=1)f(end)h(:)2928 4582 y(sig)f(type)i(t=int;)f(val)g(x:t)g(end)2143 4673 y Fn(\(3\))f Fh(struct)i(type)f(t=int;)h(val)f(x=\(1:t\))g(end)g(:)2928 4765 y(sig)f(val)h(x:int)h(end)2066 4902 y Fn(\(1\))30 b(corresp)r(onds)g(to)g(an)g(abstract)g(t)n(yp)r(e)e(with)i(asso)r (ciated)i(op)r(era-)2066 4994 y(tions)f(b)r(eing)f(implemen)n(ted)f(as) h(some)h(sp)r(eci\014c)f(t)n(yp)r(e)g(\(here,)h Fh(int)p Fn(\).)2066 5085 y(\(2\))f(is)h(similar,)h(but)d(the)h(t)n(yp)r(e)f(is) i(exp)r(orted)f(concretely)-6 b(,)31 b(with)g(its)2066 5176 y(implemen)n(tation.)h(\(3\))21 b(corresp)r(onds)i(to)e(a)h(lo)r (cal)h(t)n(yp)r(e)d(declaration,)2066 5268 y(whic)n(h)h(is)h(not)f(exp) r(orted)g(but)f(is)i(tak)n(en)f(in)n(to)g(accoun)n(t)g(for)h(signature) 2066 5359 y(matc)n(hing.)3842 5982 y(P)n(age)27 b(8)p eop %%Page: 9 9 9 8 bop -133 -108 a Fm(3.4)95 b(Sharing)25 b(constrain)m(ts)g(and)g(t)m (yp)s(e)g(strengthening)-133 32 y Fn(The)37 b(calculus)g(presen)n(ted)f (ab)r(o)n(v)n(e)h(con)n(tains)g(no)g(sp)r(ecial)h(rule)e(for)-133 123 y(c)n(hec)n(king)g(sharing)g(constrain)n(ts)h(at)f(functor)g (applications.)66 b(The)-133 214 y(general)20 b(inclusion)f(and)g (application)h(rules)f(can)g(sho)n(w)g(that)f(sharing)-133 306 y(constrain)n(ts)26 b(are)f(satis\014ed)g(in)g(man)n(y)e (situations,)k(esp)r(ecially)f(those)-133 397 y(deriving)37 b(from)f(the)h(\\diamond)f(imp)r(ort")g(situation.)69 b(Ho)n(w)n(ev)n(er,)-133 488 y(they)19 b(are)i(not)e(alw)n(a)n(ys)i (su\016cien)n(t.)33 b(First,)22 b(they)d(are)h(sensitiv)n(e)g(to)g(the) -133 580 y(order)30 b(in)g(whic)n(h)f(sharing)i(constrain)n(ts)f(are)g (written:)43 b(the)29 b(curried)-133 671 y(functor)-56 789 y Fh(module)41 b(f)e(=)22 880 y(functor)i(\(a:)f(sig)g(type)g(t;)g (...)g(end\))22 971 y(functor)h(\(b:)f(sig)g(type)g(t)g(=)f(a.t;)h(...) g(end\))g(...)-133 1089 y Fn(cannot)e(b)r(e)f(applied)h(to)f (structures)h(with)f(the)g(follo)n(wing)j(signa-)-133 1181 y(tures:)-56 1298 y Fh(a)f(:)h(sig)g(type)g(t)f(=)h(b.t;)g(...)g (end)-56 1390 y(b)f(:)h(sig)g(type)g(t;)g(...)g(end)-133 1508 y Fn(b)r(ecause)28 b(the)g(signature)g(of)g Fh(b)g Fn(is)g(not)g(included)f(in)g Fh(sig)40 b(type)g(t)g(=)-133 1599 y(a.t;)g(...)g(end)p Fn(,)c(ev)n(en)c(though)h Fh(a.t)h Fn(and)e Fh(b.t)i Fn(are)f(kno)n(wn)g(to)g(b)r(e)-133 1690 y(equiv)l(alen)n(t.)64 b(F)-6 b(or)35 b(the)g(same)h(reasons,)j (the)d(rules)g(fail)h(to)e(recog-)-133 1782 y(nize)30 b(that)g(a)g(structure)g(alw)n(a)n(ys)g(shares)h(with)f(itself:)44 b(the)30 b(functor)-133 1873 y(application)d Fh(g\(c\)\(c\))p Fn(,)g(with)f Fh(g)g Fn(declared)g(as)-56 1991 y Fh(module)41 b(g)e(=)22 2082 y(functor)i(\(a:)f(sig)g(type)g(t)g(end\))22 2173 y(functor)h(\(b:)f(sig)g(type)g(t)g(=)f(a.t)h(end\))g(...)-133 2291 y Fn(fails)25 b(if)e Fh(c.t)g Fn(is)h(abstract.)34 b(In)22 b(b)r(oth)g(cases,)j(the)d(problem)g(is)h(that)g(w)n(e)-133 2383 y(compare)33 b(signatures)i(without)e(taking)h(in)n(to)f(accoun)n (t)h(that)f(they)-133 2474 y(are)28 b(not)f(signatures)h(of)f (arbitrary)h(structures,)f(but)f(signatures)i(of)-133 2565 y(a)37 b(giv)n(en)g(path.)66 b(F)-6 b(ortunately)g(,)39 b(this)e(fact)g(can)g(b)r(e)g(expressed)f(b)n(y)-133 2657 y(in)n(tro)r(ducing)24 b(more)g(manifest)g(t)n(yp)r(es)f(in)h(the) g(signature:)34 b(whenev)n(er)-133 2748 y(a)26 b(path)f Fg(p)g Fn(has)h(t)n(yp)r(e)449 2880 y Fg(p)21 b Fn(:)h Fh(sig)40 b(type)g Fg(t)933 2888 y Ff(i)959 2880 y Fn(;)26 b Fg(:)13 b(:)g(:)52 b Fh(end)q Fg(;)-133 3012 y Fn(it)26 b(also)h(has)f(t)n(yp)r(e)354 3144 y Fg(p)21 b Fn(:)h Fh(sig)39 b(type)i Fg(t)838 3152 y Ff(i)885 3144 y Fn(=)21 b Fg(p:t)p Fn(;)26 b Fg(:)13 b(:)g(:)52 b Fh(end)q Fg(:)-133 3276 y Fn(If)21 b(w)n(e)g(apply)f(this)h(transformation)g(to)g(the)f(t) n(yp)r(es)h(of)g Fh(b)g Fn(and)f Fh(c)h Fn(in)f(the)-133 3367 y(examples)25 b(ab)r(o)n(v)n(e,)g(the)f(subt)n(yping)g(rules)h(no) n(w)h(recognize)g(that)e(the)-133 3458 y(sharing)k(constrain)n(ts)g (are)g(satis\014ed.)40 b(F)-6 b(or)27 b(instance,)i(when)e(t)n(yping) -133 3550 y(the)g(application)h Fh(f\(a\)\(b\))h Fn(ab)r(o)n(v)n(e,)f (w)n(e)g(ha)n(v)n(e)e(to)i(sho)n(w)f(that)g Fh(b)h Fn(has)-133 3641 y(t)n(yp)r(e)-56 3759 y Fh(sig)40 b(type)g(t)f(=)h(a.t;)g(...)g (end)-133 3877 y Fn(and)32 b(this)h(can)g(b)r(e)f(done)h(b)n(y)e (\014rst)i(considering)g Fh(b)g Fn(with)g(t)n(yp)r(e)e Fh(sig)-133 3968 y(type)40 b(t)g(=)f(b.t;)h(...)g(end)p Fn(,)29 b(then)f(pro)n(ving)f Fh(b.t)40 b(=)g(a.t)28 b Fn(from)f(the)-133 4059 y(t)n(yp)r(e)e(of)h Fh(a)p Fn(.)-50 4151 y(This)e(op)r(eration)h(on)e(path)g(t)n(yp)r(es)g(is)h (called)g Ft(str)l(engthening)p Fn(.)37 b(The)-133 4242 y(corresp)r(onding)27 b(t)n(yping)e(rule)g(is:)700 4370 y Fg(E)g Fe(
)c Fg(p)g Fn(:)h Fg(M)p 664 4422 408 4 v
664 4514 a(E)j Fe()c Fg(p)g Fn(:)h Fg(M)t(=p)-133 4646 y Fn(where)k(the)g(strengthening)f(op)r(eration)i Fg(M)t(=p)e Fn(is)i(de\014ned)d(b)n(y:)180 4778 y(\()p Fh(sig)40 b Fg(S)j Fh(end)q Fn(\))p Fg(=p)83 b Fn(=)f Fh(sig)40 b Fg(S=p)f Fh(end)527 4894 y Fg(M)t(=p)83 b Fn(=)f Fg(M)34 b Fn(if)27 b Fg(M)34 b Fn(is)26 b(not)f(a)h(signature)120 5010 y(\()p Fh(val)40 b Fg(v)344 5018 y Ff(i)392 5010 y Fn(:)21 b Fg(\034)9 b Fn(;)26 b Fg(S)t Fn(\))p Fg(=p)83 b Fn(=)f Fh(val)40 b Fg(v)1101 5018 y Ff(i)1149 5010 y Fn(:)22 b Fg(\034)9 b Fn(;)25 b Fg(S=p)197 5127 y Fn(\()p Fh(type)40 b Fg(t)451 5135 y Ff(i)477 5127 y Fn(;)26 b Fg(S)t Fn(\))p Fg(=p)83 b Fn(=)f Fh(type)41 b Fg(t)1132 5135 y Ff(i)1179 5127 y Fn(=)21 b Fg(p:t)p Fn(;)26 b Fg(S=p)52 5243 y Fn(\()p Fh(type)40 b Fg(t)306 5251 y Ff(i)353 5243 y Fn(=)21 b Fg(\034)9 b Fn(;)26 b Fg(S)t Fn(\))p Fg(=p)83 b Fn(=)f Fh(type)41 b Fg(t)1132 5251 y Ff(i)1179 5243 y Fn(=)21 b Fg(p:t)p Fn(;)26 b Fg(S=p)-44 5359 y Fn(\()p Fh(module)41 b Fg(x)305 5367 y Ff(i)352 5359 y Fn(:)22 b Fg(M)8 b Fn(;)26 b Fg(S)t Fn(\))p Fg(=p)83 b Fn(=)f Fh(module)41 b Fg(x)1226 5367 y Ff(i)1273 5359 y Fn(:)22 b Fg(M)t(=p:x)p Fn(;)k Fg(S=p)2066 -108 y Fn(Ev)n(en)17 b(in)h(the)f(cases)i(for)g(manifest)f(t)n(yp)r(es,)h(no)f(information)g (is)g(lost)h(b)n(y)2066 -17 y(strengthening:)46 b(if)32 b(w)n(e)g(replace)g Fh(type)40 b Fg(t)3275 -9 y Ff(i)3332 -17 y Fn(=)30 b Fg(\034)40 b Fn(b)n(y)30 b Fh(type)40 b Fg(t)3832 -9 y Ff(i)3889 -17 y Fn(=)31 b Fg(p:t)2066 75 y Fn(in)36 b(the)f(t)n(yp)r(e)f(of)j Fg(p)p Fn(,)g(w)n(e)f(can)g (still)h(sho)n(w)f(that)f(the)g Fg(t)g Fn(comp)r(onen)n(t)2066 166 y(is)f(equiv)l(alen)n(t)e(to)h Fg(\034)9 b Fn(,)35 b(b)n(y)d(lo)r(oking)i(up)f(the)f(original)j(t)n(yp)r(e)e(of)h Fg(p)e Fn(in)2066 257 y(the)d(t)n(yping)f(en)n(vironmen)n(t.)42 b(This)30 b(remark)e(can)h(b)r(e)g(formalized)g(as)2066 349 y(follo)n(ws:)37 b(if)25 b Fg(p)f Fn(has)h(t)n(yp)r(e)f Fg(M)33 b Fn(in)24 b(the)g(en)n(vironmen)n(t)f Fg(E)t Fn(,)i(then)f Fg(M)t(=p)h Fn(is)2066 440 y(a)j(subt)n(yp)r(e)f(of)i Fg(M)36 b Fn(in)28 b Fg(E)t Fn(.)41 b(Hence,)28 b(it)g(is)h(alw)n(a)n (ys)g(safe)g(to)f(apply)f(the)2066 531 y(strengthening)f(rule)g(b)r (efore)g(c)n(hec)n(king)g(t)n(yp)r(e)e(inclusion.)2149 688 y(T)n(yp)r(e)36 b(strengthening)g(is)h(also)g(useful)g(when)f (taking)g(m)n(ultiple)2066 779 y(views)26 b(of)g(a)f(structure)g(while) h(preserving)g(t)n(yp)r(e)e(compatibilit)n(y)h(b)r(e-)2066 870 y(t)n(w)n(een)35 b(the)g(views.)64 b(Assume)34 b Fh(x)h Fn(is)h(b)r(ound)e(to)i(a)f(structure)g(with)2066 962 y(t)n(yp)r(e)2143 1115 y Fh(x)k(:)h(sig)g(type)g(t;)g(val)g(f:)f Fg(\034)9 b Fh(;)39 b(val)h(g:)g Fg(\033)h Fh(end)2066 1263 y Fn(and)20 b(w)n(e)g(wish)h(to)f(view)h Fh(x)f Fn(without)g(the)g Fh(g)g Fn(comp)r(onen)n(t.)31 b(If)20 b(w)n(e)h(de\014ne)2066 1354 y(the)k(view)i(as)2143 1508 y Fh(module)41 b(y)e(:)g(sig)h(type)h(t;)e(val)h(f:)g Fg(\034)47 b Fh(end)40 b(=)g(x)2066 1656 y Fn(then,)20 b(b)n(y)d(generativit)n(y)-6 b(,)20 b Fh(y.t)f Fn(is)g(a)g(\\new")g(t)n (yp)r(e,)h(incompatible)e(with)2066 1747 y Fh(x.t)p Fn(,)32 b(since)e Fh(x)g Fn(and)f Fh(y)h Fn(are)g(not)f(the)g(same)h(path.)46 b(T)-6 b(o)30 b(ensure)f(com-)2066 1838 y(patibilit)n(y)23 b(b)r(et)n(w)n(een)g Fh(x.t)g Fn(and)g Fh(y.t)p Fn(,)h(w)n(e)f(m)n(ust) f(mak)n(e)f Fh(t)i Fn(manifest)g(in)2066 1930 y(the)i(signature)i(of)f Fh(y)p Fn(:)2143 2083 y Fh(module)41 b(y)e(:)g(sig)h(type)h(t)e(=)g (x.t;)i(val)e(f:)h Fg(\034)48 b Fh(end)40 b(=)f(x)2066 2231 y Fn(Chec)n(king)34 b(the)g(t)n(yp)r(e-correctness)g(of)h(this)f (binding)g(requires)g(the)2066 2322 y(strengthening)c(rule:)42 b(without)30 b(prior)g(strengthening,)g(the)f(signa-)2066 2414 y(ture)g(of)h Fh(x)f Fn(w)n(ould)h(not)f(b)r(e)g(a)g(subt)n(yp)r (e)f(of)i(the)f(signature)h(declared)2066 2505 y(for)d Fh(y)p Fn(.)2066 2734 y Fm(3.5)95 b(T)m(yp)s(e)32 b(inference)2066 2882 y Fn(The)e(t)n(yping)f(rules)h(presen)n(ted)g(ab)r(o)n(v)n(e)f(do) h(not)g(lead)g(directly)g(to)g(a)2066 2974 y(t)n(yp)r(e)35 b(c)n(hec)n(king)g(or)g(t)n(yp)r(e)g(inference)h(algorithm,)i(since)e (the)f(rules)2066 3065 y(for)26 b(subsumption)e(and)h(strengthening)g (are)h(not)f(syn)n(tax-directed.)2066 3156 y(Ho)n(w)n(ev)n(er,)46 b(the)41 b(applications)j(of)e(these)g(rules)g(can)g(b)r(e)g (\\\015oated)2066 3248 y(do)n(wn)n(w)n(ards")24 b(and)e(com)n(bined)g (with)h(the)g(functor)g(application)g(and)2066 3339 y(mo)r(dule)32 b(binding)f(rules.)55 b(More)33 b(precisely)-6 b(,)34 b(w)n(e)f(de\014ne)e(a)h(syn)n(tax-)2066 3430 y(directed)26 b(v)l(arian)n(t)g(of)h(the)f(calculus)h(ab)r(o)n(v)n(e)f(b)n(y)g(remo)n (ving)f(the)h(sub-)2066 3522 y(sumption)33 b(and)g(strengthening)g (rules,)k(and)c(replacing)i(the)e(rules)2066 3613 y(for)27 b(functor)e(application)i(and)f(mo)r(dule)f(binding)g(b)n(y:)2308 3810 y Fg(E)h Fe(
)21 b Fg(m)2527 3818 y Fi(1)2582 3810
y Fn(:)h Fh(functor)r Fn(()p Fg(x)2974 3818 y Ff(i)3021
3810 y Fn(:)f Fg(M)3137 3818 y Fi(1)3172 3810 y Fn())p
Fg(M)123 b(E)26 b Fe()21 b Fg(m)3618 3818 y Fi(2)3673 3810 y Fn(:)h Fg(M)3790 3818 y Fi(2)2751 3901 y Fg(E)j Fe(
)c Fg(M)2975 3909 y Fi(2)3010 3901 y Fg(=m)3116 3909
y Fi(2)3172 3901 y Fg(<)p Fn(:)g Fg(M)3348 3909 y Fi(1)p
2308 3954 1517 4 v 2602 4045 a Fg(E)k Fe()c Fg(m)2820 4053 y Fi(1)2855 4045 y Fn(\()p Fg(m)2953 4053 y Fi(2)2987 4045 y Fn(\))g(:)h Fg(M)8 b Fe(f)p Fg(x)3245 4053 y Ff(i)3293 4045 y Fe( )21 b Fg(m)3459 4053 y Fi(2)3493 4045 y Fe(g)2455 4192 y Fg(E)26 b Fe(
)21 b Fg(m)g Fn(:)g Fg(M)2819 4161
y Fd(0)2957 4192 y Fg(E)k Fe()d Fg(M)3190 4161 y Fd(0)3212 4192 y Fg(=m)g(<)p Fn(:)f Fg(M)2290 4284 y(x)2334 4292 y Ff(i)2390 4284 y Fg(=)-47 b Fe(2)22 b Fn(Dom)o(\()p Fg(E)t Fn(\))115 b Fg(E)t Fn(;)25 b Fh(module)41 b Fg(x)3277 4292 y Ff(i)3324 4284 y Fn(:)22 b Fg(M)29 b Fe(
)22 b
Fg(s)f Fn(:)g Fg(S)p 2157 4336 1667 4 v 2157 4428 a(E)k
Fe()c Fn(\()p Fh(module)41 b Fg(x)2656 4436 y Ff(i)2703 4428 y Fn(:)22 b Fg(M)29 b Fn(=)21 b Fg(m)p Fn(;)26 b Fg(s)p Fn(\))21 b(:)g(\()p Fh(module)41 b Fg(x)3523 4436 y Ff(i)3570 4428 y Fn(:)22 b Fg(M)8 b Fn(;)26 b Fg(S)t Fn(\))2066 4576 y(Here,)36 b(w)n(e)e(write)g Fg(M)t(=m)g Fn(for)g Fg(M)42 b Fn(if)35 b Fg(m)e Fn(is)h(not)g(a)f(path,)j(and)d Fg(M)t(=p)2066 4668 y Fn(if)j Fg(m)f Fn(is)h(a)g(path)f Fg(p)p Fn(.)63 b(The)35 b(resulting)h(system)f(has)h(the)f(follo)n (wing)2066 4759 y(correctness)27 b(and)e(completeness)h(prop)r(erties:) 2131 4907 y(1.)42 b(if)29 b Fg(E)f Fe(
)d Fg(m)f Fn(:)i
Fg(M)36 b Fn(in)27 b(the)h(syn)n(tax-directed)e(system,)i(then)f
Fg(E)h Fe()2232 4998 y Fg(m)21 b Fn(:)h Fg(M)34 b Fn(in)25 b(the)h(original)h(system;)2131 5176 y(2.)42 b(if)29 b Fg(E)h Fe(
)c Fg(m)g Fn(:)g Fg(M)37 b Fn(in)28 b(the)g(original)i
(system,)f(then)e(there)i(exists)2232 5268 y Fg(M)2314
5236 y Fd(0)2357 5268 y Fn(suc)n(h)20 b(that)g Fg(E)25
b Fe()c Fg(m)g Fn(:)h Fg(M)3050 5236 y Fd(0)3092 5268 y Fn(in)e(the)g(syn)n(tax-directed)f(system)2232 5359 y(and)26 b Fg(E)f Fe(
)c Fg(M)2614 5327 y Fd(0)2637 5359
y Fg(=m)g(<)p Fn(:)g Fg(M)8 b Fn(.)3842 5982 y(P)n(age)27
b(9)p eop
%%Page: 10 10
10 9 bop -133 -108 a Fn(Moreo)n(v)n(er,)38 b(the)d(t)n(yp)r(e)f(equiv)l
(alence)h(and)f(t)n(yp)r(e)g(subsumption)f(re-)-133 -17
y(lations)k(b)r(et)n(w)n(een)e(mo)r(dule)f(t)n(yp)r(es)h(are)g(ob)n
(viously)h(decidable)f((b)n(y)-133 75 y(structural)25
b(induction)f(on)h(the)f(t)n(yp)r(e)g(expressions))h(as)g(so)r(on)g
(as)g(the)-133 166 y(corresp)r(onding)c(relations)h(on)e(base)g(t)n(yp)
r(es)g(are)g(decidable.)33 b(The)21 b(de-)-133 257 y(cidabilit)n(y)28
b(problems)f(encoun)n(tered)g(in)h(Harp)r(er)g(and)f(Lillibridge’s)-133
349 y(system)21 b([10)q(])i(are)f(a)n(v)n(oided)g(here)g(b)r(ecause)h
(w)n(e)f(do)g(not)g(ha)n(v)n(e)g(mo)r(dule)-133 440 y(t)n(yp)r(es)j(as)
i(structure)e(comp)r(onen)n(ts.)-50 534 y(F)-6 b(rom)25
b(these)g(remarks,)g(w)n(e)h(easily)g(obtain)g(a)f(t)n(yp)r(e)g
(inference)h(al-)-133 625 y(gorithm)31 b(whic)n(h,)i(giv)n(en)e(an)g
(en)n(vironmen)n(t)e Fg(E)34 b Fn(and)d(a)h(mo)r(dule)e(ex-)-133
716 y(pression)c Fg(m)p Fn(,)g(either)f(returns)g(the)g(most)g(general)
i(t)n(yp)r(e)d(of)j Fg(m)e Fn(in)g Fg(E)t Fn(,)-133 808
y(or)30 b(fails)i(if)e Fg(m)g Fn(is)g(ill-t)n(yp)r(ed)g(in)f
Fg(E)t Fn(.)47 b(A)n(t)29 b(the)g(lev)n(el)i(of)f(the)g(core)g(lan-)
-133 899 y(guage,)21 b(it)e(assumes)g(giv)n(en)f(algorithms)i(to)e
(infer)i(the)e(principal)h(t)n(yp)r(e)-133 990 y(of)j(a)g(v)l(alue)f
(expression)h(and)f(to)h(c)n(hec)n(k)f(equalit)n(y)g(and)g(subsumption)
-133 1081 y(b)r(et)n(w)n(een)27 b(core)h(t)n(yp)r(e)e(expressions.)40
b(The)27 b(algorithms)h(for)g(the)e(core)-133 1173 y(language)36
b(m)n(ust)c(tak)n(e)i(in)n(to)g(accoun)n(t)g(the)g(extra)g(t)n(yp)r(e)f
(equalities)-133 1264 y(induced)21 b(b)n(y)f(the)h(manifest)h(t)n(yp)r
(es)f(in)g(the)g(curren)n(t)g(t)n(yping)g(en)n(viron-)-133
1355 y(men)n(t.)51 b(In)31 b(the)g(case)h(of)h(ML,)f(the)f(principal)h
(t)n(yp)r(e)f(prop)r(ert)n(y)f(and)-133 1447 y(the)h(existence)g(of)h
(a)g(t)n(yp)r(e)e(inference)i(algorithm)g(still)g(hold)f(when)-133
1538 y(equations)22 b(b)r(et)n(w)n(een)g(t)n(yp)r(es)g(are)g(in)n(tro)r
(duced)g(to)g(tak)n(e)g(in)n(to)g(accoun)n(t)-133 1629
y(manifest)31 b(t)n(yp)r(e)e(declarations.)50 b(This)31
b(follo)n(ws)h(from)e(R)n(\023)-36 b(em)n(y’s)29 b(gen-)-133
1721 y(eral)i(results)g(on)f(t)n(yp)r(e)f(inference)h(mo)r(dulo)g(an)g
(equational)h(theory)-133 1812 y([21)q(].)-133 2052 y
Fo(4)112 b(Expressiv)m(eness)-133 2221 y Fn(The)32 b(aim)f(of)i(this)f
(section)g(is)g(to)g(sho)n(w)g(that)g(our)f(calculus)i((with)-133
2312 y(opaque)63 b(signatures)h(and)f(propagation)h(of)g(t)n(yp)r(e)e
(equalities)-133 2403 y(through)43 b(manifest)h(t)n(yp)r(es))f(is)h
(at)f(least)i(as)f(expressiv)n(e)f(as)h(the)-133 2495
y(SML)56 b(mo)r(dule)g(system)f((with)i(transparen)n(t)f(signatures)h
(and)-133 2586 y(propagation)87 b(of)f(t)n(yp)r(e)f(equalities)h
(through)f(structures).)-133 2677 y(Ideally)-6 b(,)46
b(w)n(e)d(should)f(presen)n(t)g(a)g(t)n(yp)r(e-preserving)g(enco)r
(ding)g(of)-133 2769 y(a)57 b(signi\014can)n(t)f(fragmen)n(t)g(of)h
(SML)f((e.g.)h(without)f(structure)-133 2860 y(sharing))45
b(in)n(to)g(our)g(calculus.)92 b(Unfortunately)-6 b(,)49
b(the)44 b(size)h(and)-133 2951 y(complexit)n(y)23 b(of)i(the)e(SML)h
(de\014nition)g([17)q(])h(are)f(suc)n(h)g(that)g(de\014ning)-133
3043 y(this)32 b(enco)r(ding)h(and)f(reasoning)i(ab)r(out)e(it)g(is)h
(hop)r(eless.)55 b(Instead,)-133 3134 y(w)n(e)28 b(will)h(start)f(from)
f(a)h(m)n(uc)n(h)e(simpler)h(calculus)h(based)g(on)g(strong)-133
3225 y(sums,)33 b(similar)f(to)g(MacQueen’s)h(DL)f(calculus)g(and)g
(Harp)r(er)f(and)-133 3317 y(Mitc)n(hell’s)39 b(XML)e(calculus)i([15)q
(,)f(12].)70 b(This)38 b(calculus)h(accoun)n(ts)-133
3408 y(for)h(the)f(basic)h(features)g(of)h(the)d(SML)i(mo)r(dule)e
(system)h(except)-133 3499 y(generativit)n(y)26 b(and)f(sharing.)-50
3593 y(T)-6 b(o)31 b(k)n(eep)e(the)g(enco)r(ding)i(simple,)g(the)f
(target)g(of)h(the)f(enco)r(ding)-133 3684 y(will)23
b(not)f(b)r(e)g(the)f(mo)r(dule)g(system)g(presen)n(ted)g(in)h(the)f
(previous)h(sec-)-133 3776 y(tion,)32 b(but)e(a)h(simpler)f(calculus,)j
(closer)f(in)e(syn)n(tax)g(to)g(the)h(strong)-133 3867
y(sums)f(calculus,)j(but)c(with)i(w)n(eak)g(sums)e(and)h(manifest)h(t)n
(yp)r(es)f(in-)-133 3958 y(stead)24 b(of)h(strong)g(sums.)33
b(The)24 b(target)h(calculus)g(accoun)n(ts)f(for)h(most)-133
4049 y(of)38 b(the)e(features)h(of)h(our)e(mo)r(dule)g(system)g(except)
g(generativit)n(y)-6 b(.)-133 4141 y(The)37 b(fragmen)n(t)g(of)h(the)e
(target)i(calculus)f(actually)h(used)f(b)n(y)e(the)-133
4232 y(translation)k(can)e(easily)h(b)r(e)f(enco)r(ded)g(in)n(to)h(the)
f(system)f(of)i(sec-)-133 4323 y(tion)26 b(3.)-133 4538
y Fm(4.1)95 b(Strong)31 b(sums)f(and)j(manifest)d(sums)-133
4682 y Fn(The)c(source)g(and)g(target)g(calculi)h(ha)n(v)n(e)e(the)g
(follo)n(wing)k(syn)n(tax:)-133 4830 y(T)-6 b(erms:)-67
4921 y Fg(m)21 b Fn(::=)h Fg(x)f Fe(j)g Fg(\025x)p Fn(:)p
Fg(M)t(:)13 b(m)21 b Fe(j)h Fg(m)675 4929 y Fi(1)709
4921 y Fn(()p Fg(m)807 4929 y Fi(2)841 4921 y Fn())103
5012 y Fe(j)g Fn([)p Fg(t)17 b Fn(=)g Fg(\034)t(;)26
b(m)p Fn(])21 b Fe(j)h Fh(ops)p Fn(()p Fg(m)p Fn())103
5104 y Fe(j)g(h)p Fg(x)16 b Fn(=)h Fg(m)381 5112 y Fi(1)415
5104 y Fg(;)26 b(m)530 5112 y Fi(2)564 5104 y Fe(i)c(j)f
Fh(fst)q Fn(()p Fg(m)p Fn())g Fe(j)g Fh(snd)q Fn(()p
Fg(m)p Fn())-133 5222 y(Simple)k(t)n(yp)r(es:)-42 5313
y Fg(\034)30 b Fn(::=)22 b Fh(int)g Fe(j)f Fh(bool)i
Fe(j)e Fg(:)13 b(:)h(:)21 b Fe(j)h Fg(\034)736 5321 y
Fi(1)792 5313 y Fe(!)f Fg(\034)924 5321 y Fi(2)979 5313
y Fe(j)h Fg(t)f Fe(j)h Fh(typ)q Fn(()p Fg(m)p Fn())2066
-108 y(Mo)r(dule)k(t)n(yp)r(es:)2117 -17 y Fg(M)k Fn(::=)22
b Fg(\034)29 b Fe(j)22 b(9)p Fg(t:)13 b(M)29 b Fe(j)22
b(9)p Fg(t)f Fn(=)g Fg(\034)t(:)13 b(M)29 b Fe(j)22 b
Fn(\006)p Fg(x)p Fn(:)p Fg(M)3287 -9 y Fi(1)3322 -17
y Fg(:)13 b(M)3430 -9 y Fi(2)3486 -17 y Fe(j)22 b Fn(\005)p
Fg(x)p Fn(:)p Fg(M)3726 -9 y Fi(1)3760 -17 y Fg(:)13
b(M)3868 -9 y Fi(2)2066 130 y Fn(Structures)22 b(are)i(replaced)f(b)n
(y)f(t)n(w)n(o)h(simpler)g(constructs,)h([)p Fg(t)12
b Fn(=)g Fg(\034)t(;)25 b(m)p Fn(])2066 221 y(to)32 b(pac)n(k)l(age)g
(a)h(t)n(yp)r(e)e Fg(\034)40 b Fn(with)32 b(a)h(mo)r(dule)e
Fg(m)p Fn(,)i(and)f Fe(h)p Fg(x)21 b Fn(=)g Fg(m)3833
229 y Fi(1)3867 221 y Fg(;)26 b(m)3982 229 y Fi(2)4016
221 y Fe(i)p Fn(,)2066 312 y(whic)n(h)c(is)g(the)g(dep)r(enden)n(t)e
(pair)i(of)h(t)n(w)n(o)f(mo)r(dules.)33 b(Access)22 b(in)g(pac)n(k-)
2066 404 y(ages)34 b(and)e(pairs)h(is)g(b)n(y)e(p)r(osition)i((pro)t
(jections)h Fh(typ)f Fn(and)f Fh(ops)h Fn(for)2066 495
y(pac)n(k)l(ages,)e Fh(fst)f Fn(and)f Fh(snd)g Fn(for)h(pairs))g
(instead)f(of)h(b)n(y)e(\014eld)h(names.)2066 586 y(Similarly)-6
b(,)37 b(signatures)f(are)f(replaced)g(b)n(y)f(existen)n(tial)h(t)n(yp)
r(es)f((for)2066 678 y(pac)n(k)l(ages))c(and)f(\006-t)n(yp)r(es)g
((for)i(dep)r(enden)n(t)d(pairs).)46 b(F)-6 b(unctors)30
b(are)2066 769 y(presen)n(ted)i(b)n(y)g Fg(\025)p Fn(-abstractions)i
(and)e(\005-t)n(yp)r(es)f((dep)r(enden)n(t)h(func-)2066
860 y(tion)26 b(t)n(yp)r(es).)2149 953 y(A)k(di\013erence)g(with)g(DL)
f(and)h(XML)g(is)g(that)g(w)n(e)g(k)n(eep)g(existen-)2066
1045 y(tial)f(t)n(yp)r(es)e(distinct)h(from)f(\006-t)n(yp)r(es,)h
(instead)g(of)h(injecting)f(simple)2066 1136 y(t)n(yp)r(es)g(in)n(to)g
(mo)r(dule)f(terms,)h(whic)n(h)g(turns)f(pac)n(k)l(ages)i(in)n(to)f(sp)
r(ecial)2066 1227 y(cases)k(of)f(pairs)f(and)g(existen)n(tial)h(t)n(yp)
r(es)f(in)n(to)g(sp)r(ecial)i(cases)f(of)g(\006-)2066
1319 y(t)n(yp)r(es.)68 b(In)36 b(our)h(system,)i(w)n(e)e(ha)n(v)n(e)f
(manifest)h(existen)n(tial)h(t)n(yp)r(es)2066 1410 y(but)21
b(no)h(manifest)f(\006-t)n(yp)r(es,)i(hence)e(w)n(e)h(cannot)g(iden)n
(tify)f(these)h(t)n(w)n(o)2066 1501 y(notions.)2149 1594
y(The)95 b(base)g(language)h(used)f(here)f(is)i(simply-t)n(yp)r(ed)2066
1686 y(lam)n(b)r(da-calculus)35 b((with)f(constan)n(ts)h(represen)n
(ted)f(as)h(prede\014ned)2066 1777 y(iden)n(ti\014ers).)149
b(Instead)64 b(of)g(explicitly)g(injecting)h(the)f(base)2066
1868 y(language)48 b(in)n(to)e(the)g(mo)r(dule)f(language,)53
b(w)n(e)46 b(simply)f(consider)2066 1960 y(the)g(base)h(language)h(as)f
(a)f(subset)h(of)g(the)f(mo)r(dule)f(language:)2066 2051
y Fg(\025)p Fn(-abstraction)53 b(and)g(application)g(at)g(the)g(lev)n
(el)g(of)g(the)g(base)2066 2142 y(language)30 b(are)g(merged)e(with)h
Fg(\025)p Fn(-abstraction)g(and)g(application)h(at)2066
2234 y(the)38 b(lev)n(el)h(of)g(mo)r(dules.)72 b(This)38
b(mak)n(es)g(no)g(seman)n(tic)g(di\013erence)2066 2325
y([12)q(])43 b(but)f(further)h(simpli\014es)f(the)h(calculus.)86
b(The)43 b(calculus)h(is)2066 2416 y(still)g(strati\014ed)f(at)g(the)f
(t)n(yp)r(e)g(lev)n(el,)48 b(ho)n(w)n(ev)n(er:)69 b(base-language)2066
2508 y(functions)47 b(and)f(mo)r(dule-lev)n(el)f(functors)i(ha)n(v)n(e)
f(distinct)g(t)n(yp)r(es,)2066 2599 y(and)23 b(existen)n(tially)i(quan)
n(ti\014ed)d(t)n(yp)r(e)h(v)l(ariables)h(range)g(o)n(v)n(er)f(simple)
2066 2690 y(t)n(yp)r(es,)j(not)f(o)n(v)n(er)h(mo)r(dule)f(t)n(yp)r(es.)
2149 2783 y(The)j(dynamic)f(seman)n(tics)h(for)g(the)g(calculus)g(are)h
(giv)n(en)f(b)n(y)e(the)2066 2875 y(follo)n(wing)i(reduction)e(rules:)
2137 3042 y(()p Fg(\025x)p Fn(:)p Fg(M)t(:)13 b(m)p
Fn()()p Fg(m)2585 3006 y Fd(0)2606 3042 y Fn())83
b Fe(!)g Fg(m)p Fe(f)p Fg(x)21 b Fe( )g Fg(m)3216 3006
y Fd(0)3238 3042 y Fe(g)2202 3158 y Fh(typ)p Fn([)p Fg(t)c
Fn(=)g Fg(\034)t(;)26 b(m)p Fn(])83 b Fe(!)g Fg(\034)2202
3274 y Fh(ops)p Fn([)p Fg(t)17 b Fn(=)g Fg(\034)t(;)26
b(m)p Fn(])83 b Fe(!)g Fg(m)p Fe(f)p Fg(t)21 b Fe( )g
Fg(\034)9 b Fe(g)2070 3390 y Fh(fst)q Fe(h)p Fg(x)16
b Fn(=)h Fg(m)2423 3398 y Fi(1)2457 3390 y Fg(;)26 b(m)2572
3398 y Fi(2)2606 3390 y Fe(i)83 b(!)g Fg(m)2947 3398
y Fi(1)2070 3507 y Fh(snd)q Fe(h)p Fg(x)16 b Fn(=)h Fg(m)2423
3515 y Fi(1)2457 3507 y Fg(;)26 b(m)2572 3515 y Fi(2)2606
3507 y Fe(i)83 b(!)g Fg(m)2947 3515 y Fi(2)2981 3507
y Fe(f)p Fg(x)22 b Fe( )f Fg(m)3251 3515 y Fi(1)3285
3507 y Fe(g)2478 3623 y Fn(\000[)p Fg(m)p Fn(])83 b Fe(!)g
Fn(\000[)p Fg(m)3016 3587 y Fd(0)3038 3623 y Fn(])26
b(if)h Fg(m)21 b Fe(!)g Fg(m)3411 3591 y Fd(0)3433 3623
y Fn(,)26 b(for)g(an)n(y)f(con)n(text)g(\000)2066 3801
y(W)-6 b(e)33 b(write)2433 3757 y Fd(\003)2410 3801 y
Fe(!)g Fn(for)i(the)e(re\015exiv)n(e)f(and)h(transitiv)n(e)h(closure)g
(of)g(the)2066 3893 y(reduction)26 b(rules.)2149 3986
y(Figure)d(1)f(sho)n(ws)g(the)f(t)n(yping)g(rules)h(for)h(the)e(t)n(w)n
(o)h(v)l(arian)n(ts)g(of)g(the)2066 4077 y(calculus)k(that)f(will)i
(serv)n(e)e(as)g(source)h(and)f(target)h(for)g(the)f(transla-)2066
4168 y(tion.)34 b(The)23 b(\014rst)f(v)l(arian)n(t,)h(named)e(S)h(for)i
(\strong)f(sums”,)g(do)r(es)g(not)2066 4260 y(use)g(manifest)f
(existen)n(tial)h(t)n(yp)r(es)f Fe(9)p Fg(t)f Fn(=)g
Fg(\034)t(:)13 b(M)31 b Fn(and)22 b(treats)h(pac)n(k)l(ages)2066
4351 y(as)37 b(transparen)n(t.)67 b(The)37 b(second)g(v)l(arian)n(t,)i
(named)c(M)i(for)g(\w)n(eak)2066 4442 y(sums)31 b(with)h(manifest)f(t)
n(yp)r(es”,)j(uses)e(manifest)f(existen)n(tial)i(t)n(yp)r(es)2066
4534 y(to)26 b(propagate)h(t)n(yp)r(e)d(equalities)j(and)e(treats)i
(pac)n(k)l(ages)f(as)g(opaque.)2149 4627 y(The)k(di\013erence)f(b)r(et)
n(w)n(een)h(S)f(and)g(M)g(is)h(apparen)n(t)g(in)f(the)g(t)n(yp)r(e)2066
4718 y(equiv)l(alence)k(rules)g(for)g Fh(typ)q Fn(()p
Fg(m)p Fn().)55 b(In)32 b(M,)h(if)h Fg(m)e Fn(do)r(es)h(not)g(ha)n(v)n
(e)f(a)2066 4809 y(manifest)21 b(existen)n(tial)h(t)n(yp)r(e,)f(the)g
(t)n(yp)r(e)f(expression)i Fh(typ)p Fn(()p Fg(m)p Fn())f(is)g(only)
2066 4901 y(equiv)l(alen)n(t)c(to)h Fh(typ)q Fn(()p
Fg(m)2725 4869 y Fd(0)2746 4901 y Fn())g(where)g Fg(m)f
Fn(and)h Fg(m)3303 4869 y Fd(0)3342 4901 y Fn(are)g(syn)n(tactically)h
(iden-)2066 4992 y(tical.)35 b(In)24 b(S,)f(rule)i(6)f(sa)n(ys)g(that)g
Fh(typ)q Fn(()p Fg(m)p Fn())f(is)i(equiv)l(alen)n(t)e(to)h(the)g(t)n
(yp)r(e)2066 5083 y(part)i(of)g(whatev)n(er)g(pac)n(k)l(age)g
Fg(m)f Fn(reduces)h(to.)2149 5176 y(The)i(in)n(tro)r(duction)f(rules)g
(for)h(\006)g(di\013er)f(accordingly)-6 b(.)39 b(In)26
b(S,)h(the)2066 5268 y(second)38 b(comp)r(onen)n(t)f
Fg(m)2799 5276 y Fi(2)2871 5268 y Fn(of)i(the)e(pair)h
Fe(h)p Fg(x)25 b Fn(=)g Fg(m)3537 5276 y Fi(1)3571 5268
y Fg(;)h(m)3686 5276 y Fi(2)3720 5268 y Fe(i)38 b Fn(is)g(t)n(yp)r(ed)
2066 5359 y(after)32 b(textual)f(substitution)g(of)h
Fg(x)f Fn(b)n(y)f Fg(m)3302 5367 y Fi(1)3336 5359 y Fn(,)j(so)f(that)e
Fg(m)3729 5367 y Fi(2)3795 5359 y Fn(can)h(rely)3804
5982 y(P)n(age)26 b(10)p eop
%%Page: 11 11
11 10 bop -133 -188 4200 4 v -133 2889 4 3077 v 1656
-40 a Fg(E)25 b Fe()c Fg(x)g Fn(:)h Fg(E)t Fn(\()p Fg(x)p Fn(\))66 b(\(1\))1118 99 y Fg(E)t(;)12 b(x)21 b Fn(:)h Fg(\034)1354 107 y Fi(1)1410 99 y Fe(
)f Fg(m)g Fn(:)h
Fg(\034)1644 107 y Fi(2)p 1023 152 751 4 v 1023 243 a
Fg(E)j Fe()c Fg(\025x)p Fn(:)p Fg(\034)1317 251 y Fi(1)1351 243 y Fg(:)13 b(m)21 b Fn(:)h Fg(\034)1551 251 y Fi(1)1606 243 y Fe(!)g Fg(\034)1739 251 y Fi(2)1933 99 y Fg(E)j Fe(
)c Fg(m)2151 107 y Fi(1)2207 99 y Fn(:)g Fg(\034)30
b Fe(!)21 b Fg(\034)2454 67 y Fd(0)2553 99 y Fg(E)k Fe()c Fg(m)2771 107 y Fi(2)2827 99 y Fn(:)g Fg(\034)p 1933 152 979 4 v 2151 243 a(E)k Fe(
)c Fg(m)2369 251 y Fi(1)2403
243 y Fn(()p Fg(m)2501 251 y Fi(2)2535 243 y Fn())h(:)f
Fg(\034)2672 211 y Fd(0)901 383 y Fg(E)t(;)13 b(x)20
b Fn(:)i Fg(M)1177 391 y Fi(1)1233 383 y Fe()f Fg(m)g Fn(:)h Fg(M)1507 391 y Fi(2)p 767 435 909 4 v 767 527 a Fg(E)j Fe(
)c Fg(\025x)p Fn(:)p Fg(M)1101 535 y Fi(1)1136
527 y Fg(:)13 b(m)21 b Fn(:)g(\005)p Fg(x)p Fn(:)p Fg(M)1498
535 y Fi(1)1533 527 y Fg(:)13 b(M)1641 535 y Fi(2)1835
383 y Fg(E)26 b Fe()21 b Fg(m)2054 391 y Fi(1)2109 383 y Fn(:)h(\005)p Fg(x)p Fn(:)p Fg(M)t(:)13 b(M)2469 351 y Fd(0)2568 383 y Fg(E)25 b Fe(
)c Fg(m)2786 391 y Fi(2)2842
383 y Fn(:)h Fg(M)p 1835 435 1132 4 v 1949 527 a(E)j
Fe()c Fg(m)2167 535 y Fi(1)2201 527 y Fn(\()p Fg(m)2299 535 y Fi(2)2333 527 y Fn(\))g(:)h Fg(M)2509 495 y Fd(0)2532 527 y Fe(f)p Fg(x)f Fe( )g Fg(M)8 b Fe(g)3034 455 y Fn(\(2\))-63 666 y Fg(E)25 b Fe(
)34 674 y Fb(s)87 666 y Fg(m)p Fe(f)p
Fg(t)d Fe( )f Fg(\034)9 b Fe(g)21 b Fn(:)g Fg(M)8 b Fe(f)p
Fg(t)22 b Fe( )f Fg(\034)9 b Fe(g)p -63 719 898 4 v 26
810 a Fg(E)25 b Fe()123 818 y Fb(s)177 810 y Fn([)p Fg(t)17 b Fn(=)g Fg(\034)t(;)26 b(m)p Fn(])21 b(:)h Fe(9)p Fg(t:)12 b(M)901 739 y Fn(\(3\))3077 666 y Fg(E)25 b Fe(
)3174 674 y Fb(m)3251 666 y Fg(m)p Fe(f)p Fg(t)c
Fe( )g Fg(\034)9 b Fe(g)21 b Fn(:)h Fg(M)8 b Fe(f)p Fg(t)22
b Fe( )f Fg(\034)9 b Fe(g)p 3077 719 921 4 v 3096 810
a Fg(E)25 b Fe()3193 818 y Fb(m)3270 810 y Fn([)p Fg(t)17 b Fn(=)g Fg(\034)t(;)26 b(m)p Fn(])21 b(:)h Fe(9)p Fg(t)f Fn(=)g Fg(\034)t(:)13 b(M)-63 950 y(E)25 b Fe(
)34 958
y Fb(s)87 950 y Fg(m)155 958 y Fi(1)211 950 y Fn(:)d
Fg(M)328 958 y Fi(1)439 950 y Fg(E)j Fe()536 958 y Fb(s)590 950 y Fg(m)658 958 y Fi(2)692 950 y Fe(f)p Fg(x)c Fe( )g Fg(m)961 958 y Fi(1)996 950 y Fe(g)g Fn(:)h Fg(M)1172 958 y Fi(2)1207 950 y Fe(f)p Fg(x)f Fe( )g Fg(m)1476 958 y Fi(1)1510 950 y Fe(g)p -63 1002 1612 4 v 225 1094 a Fg(E)k Fe(
)322 1102 y Fb(s)376 1094 y Fe(h)p Fg(x)16
b Fn(=)h Fg(m)611 1102 y Fi(1)645 1094 y Fg(;)26 b(m)760
1102 y Fi(2)795 1094 y Fe(i)21 b Fn(:)g(\006)p Fg(x)p
Fn(:)p Fg(M)1082 1102 y Fi(1)1117 1094 y Fg(:)14 b(M)1226
1102 y Fi(2)1616 1022 y Fn((4))2773 950 y Fg(E)25 b
Fe()2870 958 y Fb(m)2946 950 y Fg(m)3014 958 y Fi(1)3070 950 y Fn(:)d Fg(M)3187 958 y Fi(1)3298 950 y Fg(E)t(;)13 b(x)21 b Fn(:)h Fg(M)3575 958 y Fi(1)3631 950 y Fe(
)3646
958 y Fb(m)3722 950 y Fg(m)3790 958 y Fi(2)3846 950 y
Fn(:)g Fg(M)3963 958 y Fi(2)p 2773 1002 1225 4 v 2856
1094 a Fg(E)j Fe()2953 1102 y Fb(m)3030 1094 y Fe(h)p Fg(x)16 b Fn(=)h Fg(m)3265 1102 y Fi(1)3299 1094 y Fg(;)26 b(m)3414 1102 y Fi(2)3448 1094 y Fe(i)c Fn(:)f(\006)p Fg(x)p Fn(:)p Fg(M)3736 1102 y Fi(1)3771 1094 y Fg(:)13 b(M)3879 1102 y Fi(2)719 1233 y Fg(E)26 b Fe(
)21 b Fg(m)g
Fn(:)g Fe(9)p Fg(t:)13 b(M)p 448 1286 1011 4 v 448 1377
a(E)26 b Fe()21 b Fh(ops)p Fn(\()p Fg(m)p Fn(\))g(:)h Fg(M)8 b Fe(f)p Fg(t)22 b Fe( )f Fh(typ)p Fn(\()p Fg(m)p Fn(\))p Fe(g)1619 1233 y Fg(E)k Fe(
)c Fg(m)g Fn(:)h(\006)p
Fg(x)p Fn(:)p Fg(M)2095 1241 y Fi(1)2130 1233 y Fg(:)13
b(M)2238 1241 y Fi(2)p 1619 1286 655 4 v 1662 1377 a
Fg(E)25 b Fe()c Fh(fst)q Fn(\()p Fg(m)p Fn(\))g(:)g Fg(M)2195 1385 y Fi(1)2632 1233 y Fg(E)k Fe(
)d Fg(m)f
Fn(:)g(\006)p Fg(x)p Fn(:)p Fg(M)3108 1241 y Fi(1)3143
1233 y Fg(:)14 b(M)3252 1241 y Fi(2)p 2433 1286 1054
4 v 2433 1377 a Fg(E)25 b Fe()c Fh(snd)q Fn(\()p Fg(m)p Fn(\))g(:)g Fg(M)2966 1385 y Fi(2)3001 1377 y Fe(f)p Fg(x)g Fe( )g Fh(fst)q Fn(\()p Fg(m)p Fn(\))p Fe(g)-63 1517 y Fg(E)k Fe(
)34 1525 y Fb(s)87 1517 y Fg(m)c Fn(:)h
Fg(M)85 b(E)25 b Fe()475 1525 y Fb(s)529 1517 y Fg(M)k Fe(\031)21 b Fg(M)795 1485 y Fd(0)p -63 1570 882 4 v 184 1661 a Fg(E)k Fe(
)281 1669 y Fb(s)335 1661 y Fg(m)c
Fn(:)g Fg(M)548 1629 y Fd(0)885 1589 y Fn((5))2446
1517 y Fg(E)k Fe()2543 1525 y Fb(s)2596 1517 y Fg(m)c Fn(:)h Fg(M)85 b(E)25 b Fe(
)2984 1525 y Fb(s)3038 1517
y Fg(M)k(<)p Fn(:)22 b Fg(M)3326 1485 y Fd(0)p 2446 1570
903 4 v 2704 1661 a Fg(E)j Fe()2801 1669 y Fb(s)2854 1661 y Fg(m)c Fn(:)h Fg(M)3068 1629 y Fd(0)3559 1517 y Fg(E)j Fe(
)3656 1525 y Fb(m)3733 1517 y Fg(m)c Fn(:)g
Fg(M)p 3508 1570 490 4 v 3508 1661 a(E)k Fe()3605 1669 y Fb(m)3682 1661 y Fg(m)c Fn(:)g Fg(M)t(=m)-63 1813 y(E)k Fe(
)34 1821 y Fb(s)87 1813 y Fg(m)c Fn(:)h Fe(9)p Fg(t:)13
b(M)85 b(m)594 1768 y Fd(\003)572 1813 y Fe(!)21 b Fn([)p
Fg(t)c Fn(=)g Fg(\034)t(;)26 b(m)966 1781 y Fd(0)988
1813 y Fn(])p -63 1865 1073 4 v 203 1957 a Fg(E)f Fe()300 1965 y Fb(s)353 1957 y Fh(typ)q Fn(\()p Fg(m)p Fn(\))c Fe(\031)g Fg(\034)1076 1879 y Fn(\(6\))2597 1807 y Fg(E)k Fe(
)2694 1815 y Fb(m)2771 1807 y Fg(m)c Fn(:)g Fe(9)p
Fg(t)g Fn(=)g Fg(\034)t(:)13 b(M)p 2597 1859 633 4 v
2632 1951 a(E)25 b Fe()2729 1959 y Fb(m)2805 1951 y Fh(typ)q Fn(\()p Fg(m)p Fn(\))c Fe(\031)g Fg(\034)3297 1879 y Fn(\(7\))3524 1807 y Fg(E)k Fe(
)3621 1815 y Fb(m)3697
1807 y Fg(M)30 b Fe(\031)21 b Fg(M)3964 1775 y Fd(0)p
3513 1859 485 4 v 3513 1951 a Fg(E)k Fe()3610 1959 y Fb(m)3687 1951 y Fg(M)k(<)p Fn(:)22 b Fg(M)3975 1919 y Fd(0)3186 2097 y Fg(E)j Fe(
)3283 2105 y Fb(m)3360
2097 y Fe(9)p Fg(t)20 b Fn(=)h Fg(\034)t(:)14 b(M)29
b(<)p Fn(:)22 b Fe(9)p Fg(t:)12 b(M)1749 2236 y(E)26
b Fe()1847 2244 y Fb(m)1923 2236 y Fg(M)k(<)p Fn(:)21 b Fg(M)2211 2204 y Fd(0)p 1645 2289 694 4 v 1645 2380 a Fg(E)k Fe(
)1742 2388 y Fb(m)1819 2380 y Fe(9)p Fg(t:)12
b(M)30 b(<)p Fn(:)21 b Fe(9)p Fg(t:)13 b(M)2316 2348
y Fd(0)2498 2236 y Fg(E)25 b Fe()2595 2244 y Fb(m)2672 2236 y Fg(\034)k Fe(\031)22 b Fg(\034)2860 2204 y Fd(0)2958 2236 y Fg(E)j Fe(
)3055 2244 y Fb(m)3132 2236 y Fg(M)8
b Fe(f)p Fg(t)21 b Fe( )h Fg(\034)9 b Fe(g)21 b Fg(<)p
Fn(:)g Fg(M)3686 2204 y Fd(0)3709 2236 y Fe(f)p Fg(t)g
Fe( )g Fg(\034)3937 2204 y Fd(0)3959 2236 y Fe(g)p 2498
2289 1500 4 v 2747 2380 a Fg(E)k Fe()2844 2388 y Fb(m)2921 2380 y Fe(9)p Fg(t)c Fn(=)g Fg(\034)t(:)13 b(M)30 b(<)p Fn(:)21 b Fe(9)p Fg(t)g Fn(=)g Fg(\034)3588 2348 y Fd(0)3609 2380 y Fg(:)14 b(M)3726 2348 y Fd(0)1170 2519 y Fg(E)25 b Fe(
)1267 2527 y Fb(m)1344 2519 y Fg(M)1418 2527 y
Fi(1)1474 2519 y Fg(<)p Fn(:)c Fg(M)1658 2488 y Fd(0)1650
2533 y Fi(1)1762 2519 y Fg(E)t(;)13 b(x)20 b Fn(:)i Fg(M)2038
2527 y Fi(1)2094 2519 y Fe()f Fg(M)2236 2527 y Fi(2)2293 2519 y Fg(<)p Fn(:)g Fg(M)2477 2488 y Fd(0)2469 2533 y Fi(2)p 1170 2572 1334 4 v 1316 2663 a Fg(E)k Fe(
)1413
2671 y Fb(m)1490 2663 y Fn(\006)p Fg(x)p Fn(:)p Fg(M)1684
2671 y Fi(1)1719 2663 y Fg(:)13 b(M)1827 2671 y Fi(2)1883
2663 y Fg(<)p Fn(:)22 b(\006)p Fg(x)p Fn(:)p Fg(M)2188
2632 y Fd(0)2180 2677 y Fi(1)2215 2663 y Fg(:)13 b(M)2331
2632 y Fd(0)2323 2677 y Fi(2)2664 2519 y Fg(E)25 b Fe()2761 2527 y Fb(m)2837 2519 y Fg(M)2919 2488 y Fd(0)2911 2533 y Fi(1)2967 2519 y Fg(<)p Fn(:)d Fg(M)3144 2527 y Fi(1)3255 2519 y Fg(E)t(;)13 b(x)21 b Fn(:)h Fg(M)3540 2488 y Fd(0)3532 2533 y Fi(1)3588 2519 y Fe(
)f Fg(M)3730 2527 y Fi(2)3786
2519 y Fg(<)p Fn(:)h Fg(M)3971 2488 y Fd(0)3963 2533
y Fi(2)p 2664 2572 V 2808 2663 a Fg(E)j Fe()2905 2671 y Fb(m)2981 2663 y Fn(\005)p Fg(x)p Fn(:)p Fg(M)3178 2671 y Fi(1)3213 2663 y Fg(:)13 b(M)3321 2671 y Fi(2)3377 2663 y Fg(<)p Fn(:)21 b(\005)p Fg(x)p Fn(:)p Fg(M)3684 2632 y Fd(0)3676 2677 y Fi(1)3710 2663 y Fg(:)14 b(M)3827 2632 y Fd(0)3819 2677 y Fi(2)337 2791 y Fn(Plus)26 b(the)f(standard)h (congruence,)g(transitivit)n(y)g(and)f(symmetry)e(rules)j(for)h Fe(\031)p Fn(,)e(and)h(transitivit)n(y)f(rule)h(for)g Fg(<)p Fn(:)p 4064 2889 4 3077 v -133 2892 4200 4 v -133 3038 a(Figure)38 b(1:)58 b(T)n(yping)37 b(rules)g(for)h(strong)g(sums)e (\(S\))h(and)f(w)n(eak)i(sums)e(with)i(manifest)f(existen)n(tials)h (\(M\).)f(Left:)58 b(S-sp)r(eci\014c)37 b(rules;)44 b(righ)n(t:)-133 3129 y(M-sp)r(eci\014c)26 b(rules;)h(cen)n(ter:)34 b(common)24 b(rules.)35 b Fe(
)26 b Fn(stands)f(for)i(either)f Fe()1878 3137 y Fb(s)1935 3129 y Fn(or)g Fe(
)2044 3137 y Fb(m)2100
3129 y Fn(.)-133 3393 y(on)i(sp)r(eci\014c)g(implemen)n(tations)f(of)i
(abstract)f(t)n(yp)r(es)f(in)h Fg(m)1582 3401 y Fi(1)1616
3393 y Fn(.)41 b(In)27 b(M,)-133 3484 y(only)f(the)f(t)n(yp)r(e)g(of)i
Fg(m)497 3492 y Fi(1)531 3484 y Fn(,)f(not)g Fg(m)783
3492 y Fi(1)843 3484 y Fn(itself,)h(is)f(tak)n(en)g(in)n(to)f(accoun)n
(t)h(for)-133 3576 y(the)f(t)n(yping)g(of)i Fg(m)394
3584 y Fi(2)428 3576 y Fn(.)-50 3667 y(The)34 b(system)g(M)g(also)h
(has)g(subsumption)d(and)i(strengthening)-133 3758 y(rules)27
b(similar)g(to)g(those)f(of)i(the)e(full)h(mo)r(dule)f(calculus.)37
b(Strength-)-133 3850 y(ening)26 b Fg(M)t(=m)g Fn(is)g(here)f
(de\014ned)g(as:)407 4095 y Fg(\034)9 b(=m)82 b Fn(=)h
Fg(\034)203 4211 y Fn(()p Fe(9)p Fg(t:)12 b(M)c Fn())p
Fg(=m)83 b Fn(=)g Fe(9)p Fg(t)21 b Fn(=)g Fh(typ)q Fn(()p
Fg(m)p Fn())p Fg(:)12 b(M)t(=)p Fh(ops)q Fn(()p Fg(m)p
Fn())62 4328 y(()p Fe(9)p Fg(t)21 b Fn(=)g Fg(\034)t(:)13
b(M)8 b Fn())p Fg(=m)83 b Fn(=)g Fe(9)p Fg(t)21 b Fn(=)g
Fh(typ)q Fn(()p Fg(m)p Fn())p Fg(:)12 b(M)t(=)p Fh(ops)q
Fn(()p Fg(m)p Fn())17 4444 y((\006)p Fg(x)p Fn(:)p
Fg(M)241 4452 y Fi(1)276 4444 y Fg(:)i(M)385 4452 y Fi(2)419
4444 y Fn())p Fg(=m)83 b Fn(=)g(\006)p Fg(x)p Fn(:)p
Fg(M)975 4452 y Fi(1)1010 4444 y Fg(=)p Fh(fst)q Fn(()p
Fg(m)p Fn())p Fg(:)13 b(M)1402 4452 y Fi(2)1437 4444
y Fg(=)p Fh(snd)q Fn(()p Fg(m)p Fn())15 4560 y((\005)p
Fg(x)p Fn(:)p Fg(M)242 4568 y Fi(1)276 4560 y Fg(:)h(M)385
4568 y Fi(2)419 4560 y Fn())p Fg(=m)83 b Fn(=)g(\005)p
Fg(x)p Fn(:)p Fg(M)978 4568 y Fi(1)1012 4560 y Fg(:)13
b(M)1120 4568 y Fi(2)1155 4560 y Fg(=m)p Fn(()p Fg(x)p
Fn())-133 4763 y Fm(4.2)95 b(The)32 b(\014rst-order)g(fragmen)m(t)-133
4902 y Fn(W)-6 b(e)22 b(no)n(w)g(sho)n(w)g(that)g(the)f(\014rst-order)h
(fragmen)n(t)f(of)i(S,)f(the)f(calculus)-133 4994 y(with)29
b(strong)g(sums,)f(is)h(included)f(in)g(the)g(\014rst-order)g(fragmen)n
(t)g(of)-133 5085 y(M,)33 b(the)e(calculus)i(with)f(w)n(eak)g(sums)f
(and)g(manifest)h(existen)n(tials.)-133 5176 y(By)20
b(\\014rst-order”,)h(w)n(e)f(mean)f(that)g(functors)h(cannot)f(tak)n
(e)h(functors)-133 5268 y(as)35 b(argumen)n(ts,)h(as)g(in)e(SML.)h
(Unlik)n(e)e(SML,)i(w)n(e)g(will)h(still)f(allo)n(w)-133
5359 y(functors)23 b(as)g(structure)f(comp)r(onen)n(ts,)g(as)h(long)g
(as)g(suc)n(h)f(structures)2066 3393 y(are)32 b(not)f(passed)g(to)g
(functors.)52 b(Consider)32 b(the)e(follo)n(wing)k(subsets)2066
3484 y(of)27 b(mo)r(dule)e(t)n(yp)r(es:)2066 3618 y(F)-6
b(unctor)25 b(argumen)n(t)g(t)n(yp)r(es:)2118 3709 y
Fg(F)32 b Fn(::=)22 b Fg(\034)29 b Fe(j)22 b(9)p Fg(t:)12
b(F)32 b Fe(j)22 b Fn(\006)p Fg(x)p Fn(:)p Fg(F)r(:)14
b(F)2066 3821 y Fn(Abstract)26 b(\014rst-order)f(t)n(yp)r(es:)2120
3913 y Fg(A)c Fn(::=)h Fg(\034)29 b Fe(j)22 b(9)p Fg(t:)12
b(A)21 b Fe(j)h Fn(\006)p Fg(x)p Fn(:)p Fg(A:)13 b(A)21
b Fe(j)h Fn(\005)p Fg(x)p Fn(:)p Fg(F)r(:)12 b(A)2066
4025 y Fn(Concrete)27 b(\014rst-order)e(t)n(yp)r(es:)2117
4116 y Fg(C)i Fn(::=)22 b Fg(\034)29 b Fe(j)22 b(9)p
Fg(t)f Fn(=)g Fg(\034)t(:)13 b(C)26 b Fe(j)c Fn(\006)p
Fg(x)p Fn(:)p Fg(C)q(:)13 b(C)27 b Fe(j)22 b Fn(\005)p
Fg(x)p Fn(:)p Fg(F)r(:)12 b(C)2104 4250 y Fn(W)-6 b(e)38
b(are)h(going)g(to)f(sho)n(w)h(that)f(an)n(y)g(term)f(that)h(is)h(t)n
(ypable)e(in)2066 4341 y(S)d(using)g(only)g Fg(A)g Fn(t)n(yp)r(es)g(is)
g(also)i(t)n(ypable)d(in)h(M)h(using)f Fg(C)39 b Fn(t)n(yp)r(es.)2066
4432 y(Moreo)n(v)n(er,)25 b(the)e Fg(C)29 b Fn(t)n(yp)r(es)23
b(used)g(in)g(the)g(M)h(deriv)l(ation)f(corresp)r(ond,)2066
4524 y(in)j(a)g(sense)h(to)f(b)r(e)g(made)f(precise)i(b)r(elo)n(w,)g
(to)f(the)g Fg(A)f Fn(t)n(yp)r(es)g(used)h(in)2066 4615
y(the)f(S)h(deriv)l(ation.)2149 4706 y(The)k(corresp)r(ondence)h(b)r
(et)n(w)n(een)f Fg(A)f Fn(and)h Fg(C)35 b Fn(t)n(yp)r(es)29
b(is)i(captured)2066 4798 y(b)n(y)23 b(the)g(follo)n(wing)k
(\stripping”)d(op)r(eration,)i(written)p 3654 4737 61
4 v 24 w Fg(C)5 b Fn(,)25 b(whic)n(h)e(re-)2066 4889
y(mo)n(v)n(es)h(all)i(manifest)f(t)n(yp)r(e)f(information)i(from)f(a)g
Fg(C)30 b Fn(t)n(yp)r(e,)25 b(turning)2066 4980 y(it)h(in)n(to)g(an)f
Fg(A)h Fn(t)n(yp)r(e:)p 2911 5084 43 4 v 2911 5127 a
Fg(\034)92 b Fn(=)83 b Fg(\034)p 2649 5181 306 4 v 2649
5243 a Fe(9)p Fg(t)20 b Fn(=)h Fg(\034)t(:)14 b(C)88
b Fn(=)83 b Fe(9)p Fg(t:)p 3284 5182 61 4 v 12 w(C)p
2621 5298 334 4 v 2621 5359 a Fn(\006)p Fg(x)p Fn(:)p
Fg(C)2796 5367 y Fi(1)2830 5359 y Fg(:)13 b(C)2919 5367
y Fi(2)3037 5359 y Fn(=)83 b(\006)p Fg(x)p Fn(:)p 3300
5298 90 4 v Fg(C)3355 5367 y Fi(1)3389 5359 y Fg(:)p
3423 5298 V 13 w(C)3478 5367 y Fi(2)3804 5982 y Fn(P)n(age)26
b(11)p eop
%%Page: 12 12
12 11 bop 487 -169 268 4 v 487 -108 a Fn(\005)p Fg(x)p
Fn(:)p Fg(F)r(:)13 b(C)88 b Fn(=)83 b(\005)p Fg(x)p Fn(:)p
Fg(F)r(:)p 1188 -169 61 4 v 12 w(C)-133 38 y Fn(This)98
b(op)r(eration)h(is)f(extended)f(p)r(oin)n(t)n(wise)h(to)g(t)n(yping)
-133 130 y(en)n(vironmen)n(ts.)-133 267 y Fc(Prop)r(osition)33
b(1)42 b Ft(L)l(et)34 b Fg(E)j Ft(b)l(e)d(a)g(typing)g(envir)l(onment)h
(c)l(ontaining)-133 359 y Fg(F)j Ft(and)28 b Fg(C)33
b Ft(typ)l(es.)-71 484 y(1.)41 b(If)p 114 423 V 27 w
Fg(E)25 b Fe()211 492 y Fb(s)265 484 y Fg(m)d Fn(:)g Fg(A)p Ft(,)k(then)j(ther)l(e)h(exists)f Fg(C)j Ft(such)d(that)p 1498 423 V 29 w Fg(C)e Fn(=)21 b Fg(A)28 b Ft(and)33 575 y Fg(E)d Fe(
)130 583 y Fb(m)207 575 y Fg(m)c Fn(:)h
Fg(C)5 b Ft(.)-71 725 y(2.)41 b(If)p 118 664 V 31 w Fg(E)34
b Fe()224 733 y Fb(s)286 725 y Fg(A)29 b Fe(\031)g Fg(A)520 693 y Fd(0)574 725 y Ft(and)k Fg(A)c Fn(=)p 904 664 V 29 w Fg(C)6 b Ft(,)32 b(then)h(ther)l(e)h(exists)g Fg(C)1667 693 y Fd(0)1721 725 y Ft(such)33 816 y(that)29 b Fg(A)248 784 y Fd(0)291 816 y Fn(=)p 372 755 83 4 v 21 w Fg(C)432 795 y Fd(0)482 816 y Ft(and)f Fg(E)d Fe(
)728 824 y Fb(m)805
816 y Fg(C)h Fe(\031)21 b Fg(C)1027 784 y Fd(0)1050 816
y Ft(.)-50 954 y Fn(P)n(art)34 b((2))f(is)h(the)e(main)h(di\016cult)n
(y)f(of)i(the)f(pro)r(of:)51 b(apparen)n(tly)-6 b(,)-133
1045 y(system)29 b(S)f(can)i(deriv)n(e)f(more)g(t)n(yp)r(e)f
(equalities)i((using)g(reductions)-133 1136 y(during)j(t)n(yping)g
(whenev)n(er)g(necessary))h(than)f(system)g(M)h((where)-133
1228 y(the)18 b(only)g(information)h(a)n(v)l(ailable)g(is)g(the)e(one)i
(recorded)f(in)g(manifest)-133 1319 y(t)n(yp)r(es).)46
b(W)-6 b(e)30 b(will)h(sho)n(w)f(that)g(this)g(is)g(not)g(the)f(case,)j
(at)e(least)h(for)-133 1410 y(the)25 b(\014rst-order)h(fragmen)n(t.)-50
1502 y(The)d(pro)r(of)h(mak)n(es)e(use)h(of)g(the)g(follo)n(wing)i
(prop)r(erties)e(of)h(system)-133 1593 y(M:)35 b(sub)t(ject)f
(reduction)f((if)i Fg(E)j Fe()836 1601 y Fb(m)926 1593 y Fg(m)c Fn(:)i Fg(M)41 b Fn(and)34 b Fg(m)1483 1549 y Fd(\003)1460 1593 y Fe(!)h Fg(m)1640 1561 y Fd(0)1662 1593 y Fn(,)h(then)-133 1684 y Fg(E)i Fe(
)-23 1692 y
Fb(m)65 1684 y Fg(m)133 1653 y Fd(0)155 1684 y Fn())33
b(and)g(uniqueness)f(of)i(t)n(ypings)f((if)g Fg(E)38
b Fe()1358 1692 y Fb(m)1447 1684 y Fg(m)33 b Fn(:)h Fg(M)1677 1692 y Fi(1)1744 1684 y Fn(and)-133 1776 y Fg(E)t(;)13 b(E)23 1744 y Fd(0)67 1776 y Fe(
)82 1784
y Fb(m)158 1776 y Fg(m)21 b Fn(:)h Fg(M)364 1784 y Fi(2)399
1776 y Fn(,)j(then)g Fg(E)t(;)13 b(E)776 1744 y Fd(0)820
1776 y Fe()835 1784 y Fb(m)911 1776 y Fg(M)985 1784 y Fi(1)1041 1776 y Fe(\031)22 b Fg(M)1197 1784 y Fi(2)1231 1776 y Fn(\).)-133 1913 y Fc(Pro)r(of:)43 b Fn(b)n(y)20 b(induction)g(on)h(the)f(deriv)l(ations)h(and)g(case)g(analysis)h(on) -133 2005 y(the)j(last)i(rule)f(used.)34 b(W)-6 b(e)25 b(sho)n(w)i(the)e(main)g(cases.)-133 2138 y(\(2\),)f(rule)f(6.)33 b(F)-6 b(rom)22 b(the)g(left)i(premise)e(and)g(the)h(induction)f(h)n (yp)r(oth-)-133 2229 y(esis)31 b(\(1\),)h(w)n(e)f(get)f Fg(E)j Fe(
)519 2237 y Fb(m)603 2229 y Fg(m)c Fn(:)g
Fe(9)p Fg(t)f Fn(=)h Fg(\033)n(:)13 b(C)36 b Fn(with)30
b Fe(9)p Fg(t:)p 1389 2168 61 4 v 13 w(C)k Fn(=)28 b
Fg(A)p Fn(.)48 b(Since)-133 2332 y Fg(m)-18 2288 y Fd(\003)-40
2332 y Fe(!)25 b Fn([)p Fg(t)g Fn(=)g Fg(\034)t(;)13
b(m)361 2301 y Fd(0)383 2332 y Fn(],)29 b(it)f(follo)n(ws)i(that)e
Fg(E)h Fe()1057 2340 y Fb(m)1137 2332 y Fn([)p Fg(t)c Fn(=)g Fg(\034)t(;)13 b(m)1436 2301 y Fd(0)1458 2332 y Fn(])26 b(:)f Fe(9)p Fg(t)g Fn(=)g Fg(\033)n(:)13 b(C)-133 2424 y Fn(b)n(y)22 b(sub)t(ject)i(reduction.)33 b(By)23 b(uniqueness)g(of)g(t)n(ypings,)h Fg(E)h Fe(
)1579 2432
y Fb(m)1655 2424 y Fg(\033)f Fe(\031)d Fg(\034)9 b Fn(.)-133
2515 y(Hence)29 b Fg(E)j Fe()203 2523 y Fb(m)286 2515 y Fh(fst)q Fn(\()p Fg(m)p Fn(\))27 b Fe(\031)h Fg(\034)38 b Fn(b)n(y)28 b(rule)i(7)g(and)f(transitivit)n(y)-6 b(,)30 b(and)g(w)n(e)-133 2606 y(can)c(tak)n(e)f Fg(C)234 2574 y Fd(0)278 2606 y Fn(=)c Fg(\034)9 b Fn(.)-133 2740 y(\(1\),)37 b(rule)d(1.)61 b(If)34 b Fg(E)t Fn(\()p Fg(x)p Fn(\))f(is)i(a)g Fg(C)k Fn(t)n(yp)r(e,)d(w)n(e)e(can)h(tak)n(e)f Fg(C)40 b Fn(=)c Fg(E)t Fn(\()p Fg(x)p Fn(\).)-133 2831 y(Otherwise,)27 b Fg(E)t Fn(\()p Fg(x)p Fn(\))d(is)j(a)f Fg(F)36 b Fn(t)n(yp)r(e)25 b(and)g(w)n(e)h(can)g(tak)n(e)f Fg(C)i Fn(=)21 b Fg(E)t Fn(\()p Fg(x)p Fn(\))p Fg(=x)p Fn(.)-133 2964 y(\(1\),)f(rule)d(3.)33 b(W)-6 b(e)17 b(ha)n(v)n(e)g Fg(A)k Fn(=)g Fe(9)p Fg(t:)12 b(A)858 2932 y Fd(0)880 2964 y Fn(.)32 b(By)17 b(induction)g(h)n(yp)r (othesis)h(\(1\),)-133 3066 y(w)n(e)28 b(ha)n(v)n(e)f Fg(E)i Fe(
)262 3074 y Fb(m)341 3066 y Fg(m)p Fe(f)p
Fg(t)c Fe( )f Fg(\034)9 b Fe(g)24 b Fn(:)h Fg(C)812 3034
y Fd(0)835 3066 y Fe(f)p Fg(t)f Fe( )h Fg(\034)9 b Fe(g)27
b Fn(and)p 1286 3005 V 27 w Fg(C)1346 3019 y Fd(0)1393
3066 y Fn(=)e Fg(A)1536 3034 y Fd(0)1558 3066 y Fn(.)40
b(W)-6 b(e)27 b(can)-133 3157 y(tak)n(e)f Fg(C)g Fn(=)21
b(()p Fe(9)p Fg(t)g Fn(=)g Fg(\034)t(:)13 b(C)531 3126
y Fd(0)553 3157 y Fn().)-133 3291 y((1),)24 b(rule)f(2.)34
b(F)-6 b(ollo)n(ws)25 b(immediately)d(from)g(the)h(induction)g(h)n(yp)r
(oth-)-133 3382 y(esis)k((1))f(and)f(the)g(fact)i(that)e
Fg(E)g Fe()829 3390 y Fb(m)906 3382 y Fg(C)h(<)p Fn(:)p 1090 3321 V 22 w Fg(C)k Fn(for)d(all)f Fg(C)5 b Fn(.)-133 3515 y(\(1\),)46 b(rule)41 b(4.)82 b(By)41 b(induction)f(h)n(yp)r (othesis)h(\(1\))h(applied)f(to)g(the)-133 3606 y(premises,)36 b(w)n(e)e(get)g Fg(E)k Fe(
)578 3614 y Fb(m)668 3606
y Fg(m)736 3614 y Fi(1)805 3606 y Fn(:)d Fg(C)916 3614
y Fi(1)984 3606 y Fn(and)e Fg(E)39 b Fe()1252 3614 y Fb(m)1341 3606 y Fg(m)1409 3614 y Fi(2)1444 3606 y Fe(f)p Fg(x)34 b Fe( )h Fg(m)1740 3614 y Fi(1)1774 3606 y Fe(g)g Fn(:)-133 3698 y Fg(C)-78 3706 y Fi(2)-43 3698 y Fe(f)p Fg(x)d Fe( )g Fg(m)248 3706 y Fi(1)282 3698 y Fe(g)h Fn(\(3\),)i(with)p 688 3637 90 4 v 32 w Fg(C)743 3706 y Fi(1)810 3698 y Fn(=)d Fg(A)960 3706 y Fi(1)1027 3698 y Fn(and)p 1183 3637 V 32 w Fg(C)1238 3706 y Fi(2)1305 3698 y Fn(=)g Fg(A)1455 3706 y Fi(2)1489 3698 y Fn(.)55 b(W)-6 b(e)31 b(m)n(ust)-133 3789 y(pro)n(v)n(e)36 b(that)g Fg(E)t(;)13 b(x)39 b Fn(:)h Fg(C)556 3797 y Fi(1)629 3789 y Fe(
)644 3797 y Fb(m)739 3789 y Fg(m)807 3797
y Fi(2)880 3789 y Fn(:)g Fg(C)996 3797 y Fi(2)1067 3789
y Fn((4).)67 b(Consider)37 b(eac)n(h)g(o)r(c-)-133
3880 y(currence)g(of)g Fg(x)g Fn(substituted)f(b)n(y)f
Fg(m)963 3888 y Fi(1)1034 3880 y Fn(in)i(the)f(deriv)l(ation)h(of)h
((3).)-133 3972 y(These)28 b(o)r(ccurrences)g(corresp)r(ond)g(to)g
(sub-deriv)l(ations)f(of)h(the)f(for-)-133 4063 y(mat)f
Fg(E)t(;)13 b(E)182 4031 y Fd(0)226 4063 y Fe()241 4071 y Fb(m)319 4063 y Fg(m)387 4071 y Fi(1)443 4063 y Fn(:)23 b Fg(C)31 b Fn(\(5\))c(for)g(some)f Fg(E)1070 4031 y Fd(0)1118 4063 y Fn(and)g Fg(C)5 b Fn(.)37 b(By)26 b(uniqueness)-133 4154 y(of)k(t)n(ypings,)f(w)n(e)g(ha)n(v)n(e)f Fg(E)t(;)13 b(E)704 4123 y Fd(0)753 4154 y Fe(
)768 4162 y Fb(m)849
4154 y Fg(C)32 b Fe(\031)26 b Fg(C)1077 4162 y Fi(1)1111
4154 y Fn(.)44 b(Hence)28 b(w)n(e)i(can)e(deriv)n(e)-133
4246 y Fg(E)t(;)13 b(x)35 b Fn(:)g Fg(C)152 4254 y Fi(1)186
4246 y Fg(;)13 b(E)281 4214 y Fd(0)338 4246 y Fe()353 4254 y Fb(m)444 4246 y Fg(x)34 b Fn(:)h Fg(C)k Fn(\(6\).)59 b(By)34 b(substituting)g(\(6\))g(for)g(\(5\))g(in)-133 4337 y(the)c(deriv)l(ation)h(of)h(\(3\))e(for)i(eac)n(h)e(o)r (ccurrence)i(of)f Fg(x)p Fn(,)h(w)n(e)f(obtain)g(a)-133 4428 y(deriv)l(ation)26 b(of)g(\(4\).)-133 4562 y(\(1\),)e(rule)f(5.)34 b(F)-6 b(ollo)n(ws)25 b(immediately)d(from)g(the)h(induction)g(h)n(yp)r (oth-)-133 4653 y(esis)k(\(2\).)1684 b Fa(2)-133 4854 y Fm(4.3)95 b(Higher-order)31 b(functors)-133 4994 y Fn(The)e(expressiv)n(eness)g(result)g(ab)r(o)n(v)n(e)g(do)r(es)g(not)g (extend)e(to)i(higher-)-133 5085 y(order)d(functors.)34 b(The)26 b(reason)g(is)g(that)f(higher-order)g(functors)h(are)-133 5176 y(\\more)34 b(p)r(olymorphic")f(in)h(system)f(S)g(than)g(in)h (system)f(M.)h(Con-)-133 5268 y(sider)f(the)f(follo)n(wing)j(example)c (\(w)n(e)i(rev)n(ert)e(to)i(SML-lik)n(e)f(syn)n(tax)-133 5359 y(for)27 b(clarit)n(y\):)2143 -108 y Fh(signature)41 b(S)f(=)f(sig)h(type)g(t)g(...)g(end;)2143 -17 y(module)h(G)e(=)2221 75 y(functor)i(\(F:)f(functor\(X:S\)S\))j(functor)d(\(X:S\))h(F\(X\);) 2143 166 y(module)g(A)e(=)2221 257 y(G\(functor\(X:S\))k(X\))2261 349 y(\(struct)d(type)h(t=int)f(...)g(end\);)2143 440 y(module)h(B)e(=)2221 531 y(G\(functor\(X:S\))k(struct)d(type)h(t=int)f (...)g(end\))2261 623 y(\(struct)g(type)h(t=bool)f(...)g(end\);)2066 753 y Fn(In)33 b(SML)h(with)f(higher-order)h(functors)g([25)q(],)j Fh(A)c Fn(and)h Fh(B)f Fn(are)h(w)n(ell-)2066 845 y(t)n(yp)r(ed,)25 b(and)g(moreo)n(v)n(er)f Fh(A.t)i Fn(and)f Fh(B.t)h Fn(are)g(b)r(oth)f (compatible)g(with)2066 936 y Fh(int)p Fn(.)56 b(In)32 b(our)h(calculus,)j(if)d(w)n(e)g(do)g(not)f(in)n(tro)r(duce)h(an)n(y)f (manifest)2066 1027 y(t)n(yp)r(e)e(in)g(the)f(de\014nition)h(of)h Fh(G)p Fn(,)g Fh(A)f Fn(and)g Fh(B)h Fn(are)f(w)n(ell-t)n(yp)r(ed)g (but)f Fh(A.t)2066 1118 y Fn(and)20 b Fh(B.t)g Fn(are)h(incompatible)e (with)h Fh(int)p Fn(.)34 b(T)-6 b(o)20 b(mak)n(e)f Fh(A.t)h Fn(compatible)2066 1210 y(with)26 b Fh(int)p Fn(,)h(w)n(e)f(can)g (de\014ne)e Fh(G)i Fn(as:)2143 1340 y Fh(module)41 b(G)e(=)2221 1432 y(functor)i(\(F:)f(functor\(X:S\))i(S)e(with)g(type)g(t=X.t\))2221 1523 y(functor)h(\(X:S\))g(F\(X\);)2066 1654 y Fn(but)20 b(then)h(the)f(de\014nition)h(of)h Fh(B)f Fn(is)h(ill-t)n(yp)r(ed,)g(b) r(ecause)f(the)g(constan)n(t)2066 1745 y(functor)f(giv)n(en)g(as)h (\014rst)e(argumen)n(t)g(has)i(the)e(wrong)i(t)n(yp)r(e.)32 b(T)-6 b(o)20 b(mak)n(e)2066 1836 y Fh(B.t)26 b Fn(compatible)g(with)g Fh(int)p Fn(,)h(w)n(e)f(can)f(similarly)i(de\014ne)d Fh(G)i Fn(as:)2143 1967 y Fh(module)41 b(G)e(=)2221 2058 y(functor)i(\(F:)f(functor\(X:S\))i(S)e(with)g(type)g(t=int\))2221 2149 y(functor)h(\(X:S\))g(F\(X\);)2066 2280 y Fn(but)28 b(then)f(the)h(de\014nition)g(of)h Fh(A)f Fn(is)h(ill-t)n(yp)r(ed.)42 b(Hence,)29 b(our)f(system)2066 2371 y(mak)n(es)h(it)h(imp)r(ossible)h (to)f(de\014ne)f(a)h(functor)g Fh(G)g Fn(that)g(can)g(b)r(e)f(used)2066 2463 y(in)d(all)g(con)n(texts)g(where)g(its)g(SML)g(coun)n(terpart)f (can.)2149 2554 y(F)-6 b(rom)48 b(the)h(discussion)h(ab)r(o)n(v)n(e,)k (one)49 b(migh)n(t)f(conclude)h(that)2066 2645 y(higher-order)36 b(functors)h(are)f(strictly)h(more)e(expressiv)n(e)h(in)g(SML)2066 2736 y(than)50 b(in)g(our)h(system.)107 b(This)51 b(is)g(not)g(so:)84 b(in)50 b(our)h(system,)2066 2828 y(higher-order)30 b(functors)g(can)g (sp)r(ecify)h(all)f(the)g(sharing)g(prop)r(erties)2066 2919 y(of)d(their)e(functorial)i(argumen)n(ts,)f(suc)n(h)f(as)h(\\the)g (parameter)g Fh(F)f Fn(is)i(a)2066 3010 y(functor)e(that)f(tak)n(es)g (a)h(structure)e Fh(X)i Fn(with)f(a)h(t)n(yp)r(e)e Fh(t)i Fn(and)f(returns)g(a)2066 3102 y(structure)h(with)h(a)g(t)n(yp)r(e)f (equal)h(to)g Fh(t)39 b(list)p Fn(":)2143 3232 y Fh(functor\(F:)i (functor\(X:S\))h(S)e(with)g(type)g(t)g(=)f(X.t)h(list\))2066 3363 y Fn(This)28 b(is)g(not)e(supp)r(orted)h(in)g(T)-6 b(ofte's)29 b(prop)r(osal)f([25)q(]:)38 b(sharing)27 b(con-)2066 3454 y(strain)n(ts)33 b(in)g(the)f(functor)g(sp)r (eci\014cation)i(can)e(require)h(that)f(the)g Fh(t)2066 3545 y Fn(comp)r(onen)n(t)18 b(of)h(the)f(result)h(structure)f(is)h (iden)n(tical)h(to)e(another)h(t)n(yp)r(e)2066 3637 y(constructor)26 b(suc)n(h)f(as)h Fh(X.t)p Fn(,)g(but)e(they)h(cannot)g(express)h(more)e (gen-)2066 3728 y(eral)33 b(dep)r(endencies)f(as)h(in)f(the)g(example)f (ab)r(o)n(v)n(e.)54 b(Consequen)n(tly)-6 b(,)2066 3819 y(T)g(ofte's)29 b(system)d(do)r(es)i(not)f(allo)n(w)i(abstracting)f(o)n (v)n(er)f(an)n(y)g(functor:)2066 3911 y(the)e(follo)n(wing)k(co)r(de)d (fragmen)n(t)2143 4041 y Fh(signature)41 b(S)f(=)f(sig)h(type)g(t;)g (val)g(x:t;)g(val)g(f:t->t)g(end;)2143 4133 y(functor)h(F\(X:S\))f(=)g (struct)g(type)h(t=X.t)f(list;)g(...)g(end;)2143 4224 y(structure)h(G)f(=)2221 4315 y(struct)2300 4407 y(structure)h(A)f(=)f (struct)i(type)f(t=int;)g(...)g(end;)2300 4498 y(structure)h(R)f(=)f (F\(A\);)2300 4589 y(val)h(y)f(=)h(R.f)g([A.x])2221 4681 y(end;)2066 4811 y Fn(is)33 b(w)n(ell-t)n(yp)r(ed,)g(but)e(w)n(e)h (cannot)g(abstract)g(o)n(v)n(er)g Fh(F)g Fn(in)f Fh(G)p Fn(,)i(b)r(ecause)2066 4902 y(no)c(functor)h(signature)g(for)g Fh(F)f Fn(can)g(sp)r(ecify)h(that)f Fh(F\(X\).t)h Fn(is)g(equal)2066 4994 y(to)h Fh(X.t)40 b(list)p Fn(,)33 b(nor)d(to)h Fh(int)40 b(list)p Fn(.)50 b(In)29 b(con)n(trast,)k(our)d(system)g(al-)2066 5085 y(lo)n(ws)36 b(abstracting)f(o)n(v)n(er)g(an)n(y)f(functor|whic)n (h)g(is)h(an)g(imp)r(ortan)n(t)2066 5176 y(motiv)l(ation)h(for)h (higher-order)f(functors:)55 b(allo)n(w)38 b(arbitrary)e(pro-)2066 5268 y(gram)31 b(fragmen)n(ts)g(to)g(b)r(e)g(\\closed")h(b)n(y)e (abstracting)i(o)n(v)n(er)e(all)i(free)2066 5359 y(iden)n(ti\014ers.) 3804 5982 y(P)n(age)26 b(12)p eop %%Page: 13 13 13 12 bop -133 -108 a Fo(5)112 b(Extensions)-133 78 y Fm(5.1)95 b(T)m(yp)s(e)32 b(systems)e(with)h(kinds)-133 230 y Fn(A)c(useful)i(extension)e(of)i(the)e(mo)r(dule)g(calculus)i (presen)n(ted)e(in)h(this)-133 321 y(pap)r(er)d(is)h(the)f(in)n(tro)r (duction)g(of)i(kinds)d(at)i(the)f(lev)n(el)g(of)h(core)g(t)n(yp)r(es.) -133 412 y(Kinds)c(are)h(required)f(to)h(ensure)f(the)h(w)n (ell-formedness)g(of)g(t)n(yp)r(e)f(ex-)-133 504 y(pressions)i(in)e (the)g(presence)h(of)h(t)n(yp)r(e)d(constructors,)k(as)e(in)f(full)h (ML,)-133 595 y(or)30 b(t)n(yp)r(e)f(op)r(erators,)j(as)e(in)f Fg(F)748 603 y Ff(!)793 595 y Fn(.)46 b(Kinds)29 b(also)i(pro)n(vide)e (an)g(elegan)n(t)-133 686 y(treatmen)n(t)c(of)h(b)r(ounded)f(quan)n (ti\014cation)g([3)q(,)h(4].)-50 784 y(In)n(tro)r(ducing)34 b(kinds)g(in)h(the)f(mo)r(dule)f(calculus)j(is)f(straigh)n(tfor-)-133 876 y(w)n(ard:)54 b(abstract)36 b(t)n(yp)r(e)e(sp)r(eci\014cations)j (in)e(signatures)h(no)n(w)g(ha)n(v)n(e)-133 967 y(the)28 b(form)g Fh(type)41 b Fg(t)25 b Fn(::)i Fg(\024)p Fn(,)i(where)g Fg(\024)g Fn(is)g(a)g(kind.)42 b(The)28 b(mo)r(di\014ed)g(t)n(yp-)-133 1058 y(ing)38 b(rules)h(c)n(hec)n(k)e(that)g(the)h(implemen)n(tation)e (t)n(yp)r(es)h(are)i(of)f(the)-133 1150 y(exp)r(ected)28 b(kinds,)g(and)g(that)g(kinds)f(are)i(prop)r(erly)f(included)f(when) -133 1241 y(c)n(hec)n(king)c(signature)i(inclusion.)34 b(\(See)24 b([4)q(])f(for)i(a)f(similar)g(calculus.\))-50 1339 y(Ha)n(ving)j(kinds)g(in)h(t)n(yp)r(e)f(sp)r(eci\014cations)h (o\013ers)h(an)e(opp)r(ortunit)n(y)-133 1430 y(to)i(simplify)f(the)g (treatmen)n(t)f(of)i(manifest)g(t)n(yp)r(es.)42 b(The)28 b(idea)h(is)g(to)-133 1522 y(in)n(tro)r(duce)d(the)f(kind)g Fh(EQUIV)q Fn(\()p Fg(\034)9 b Fn(\))24 b(of)j(all)f(t)n(yp)r(es)f (that)h(are)g(equiv)l(alen)n(t)-133 1613 y(to)37 b Fg(\034)9 b Fn(.)67 b(This)38 b(w)n(a)n(y)-6 b(,)39 b(a)f(manifest)e(t)n(yp)r(e)g (declaration)i Fh(type)j Fg(t)e Fn(=)h Fg(\034)-133 1704 y Fn(in)e(a)h(signature)g(can)f(b)r(e)g(expressed)g(as)h(the)f(t)n(yp)r (e)f(sp)r(eci\014cation)-133 1796 y Fh(type)j Fg(t)23 b Fn(::)g Fh(EQUIV)q Fn(\()p Fg(\034)9 b Fn(\).)35 b(This)27 b(tric)n(k)f(parallels)j(Cardelli's)f(treatmen)n(t)-133 1887 y(of)21 b(b)r(ounded)e(quan)n(ti\014cation)g(using)i(the)e(kind)g Fh(POWER)q Fn(\()p Fg(\034)9 b Fn(\))19 b(of)i(all)g(sub-)-133 1978 y(t)n(yp)r(es)g(of)i Fg(\034)30 b Fn([3)q(,)22 b(4].)33 b(With)22 b(the)f Fh(EQUIV)i Fn(kind,)f(there)f(is)i(only)e(one)h(syn-) -133 2070 y(tactic)h(construct)e(to)h(declare)h(a)f(t)n(yp)r(e)f(in)h (a)g(signature:)33 b Fh(type)41 b Fg(t)21 b Fn(::)h Fg(\024)p Fn(.)-133 2161 y(The)28 b(kind)e Fg(\024)i Fn(sa)n(ys)f(whether)h Fh(t)f Fn(is)h(manifest)f(\(if)h Fg(\024)d Fn(=)e Fh(EQUIV)r Fn(\()p Fg(\034)9 b Fn(\)\))26 b(or)-133 2252 y(abstract)g(\(if)h Fg(\024)21 b Fn(=)g Fh(TYPE)q Fn(,)26 b(where)g Fh(TYPE)h Fn(is)f(the)f(kind)g(of)i(all)f(t)n(yp)r(es\).)-50 2351 y(Besides)k(simplifying)e(the)g(syn)n(tax,)h(the)f Fh(EQUIV)h Fn(kind)f(also)i(clar-)-133 2442 y(i\014es)k(the)f(t)n(yping)g(rules,)j (b)n(y)c(mo)n(ving)h(all)h(manifest)g(t)n(yp)r(e-sp)r(eci\014c)-133 2533 y(rules)e(up)f(to)g(the)g(kind)g(lev)n(el,)i(making)e(them)f (orthogonal)j(to)e(the)-133 2624 y(rules)26 b(for)g(structures)g(and)f (signatures.)35 b(The)26 b(prop)r(erties)g(of)g(mani-)-133 2716 y(fest)c(t)n(yp)r(es)e(are)h(captured)g(b)n(y)e(the)i(rules)g(b)r (elo)n(w)h(for)g(the)e Fh(EQUIV)i Fn(kind)-133 2807 y(\(left)27 b(column\).)37 b(They)26 b(are)h(surprisingly)g(similar)g(to)g(the)f (rules)h(for)-133 2898 y(the)e Fh(POWER)i Fn(kind)e(\(righ)n(t)h (column\).)28 3109 y Fg(E)f Fe(
)c Fg(\034)30 b Fe(\031)21
b Fg(\033)p -91 3162 581 4 v -91 3253 a(E)k Fe()c Fg(\034)30 b Fn(::)22 b Fh(EQUIV)q Fn(\()p Fg(\033)s Fn(\))1355 3109 y Fg(E)j Fe(
)c Fg(\034)30 b(<)p Fn(:)21 b Fg(\033)p
1246 3162 V 1246 3253 a(E)k Fe()c Fg(\034)30 b Fn(::)22 b Fh(POWER)q Fn(\()p Fg(\033)s Fn(\))-91 3403 y Fg(E)j Fe(
)c Fg(\034)30 b Fn(::)22 b Fh(EQUIV)q Fn(()p Fg(\033)s
Fn())p -91 3456 V 28 3547 a Fg(E)j Fe()c Fg(\034)30 b Fe(\031)21 b Fg(\033)1246 3403 y(E)k Fe(
)c Fg(\034)30
b Fn(::)22 b Fh(POWER)q Fn(()p Fg(\033)s Fn())p 1246
3456 V 1355 3547 a Fg(E)j Fe()c Fg(\034)30 b(<)p Fn(:)21 b Fg(\033)-91 3698 y(E)k Fe(
)c Fh(EQUIV)q Fn(()p Fg(\034)9
b Fn())21 b Fg(<)p Fn(::)g Fh(TYPE)418 b Fg(E)25 b Fe()c Fh(POWER)r Fn(\()p Fg(\034)9 b Fn(\))20 b Fg(<)p Fn(::)i Fh(TYPE)186 3847 y Fg(E)j Fe(
)c Fg(\034)30 b Fe(\031)21
b Fg(\033)p -91 3900 897 4 v -91 3991 a(E)k Fe()c Fh(EQUIV)q Fn(\()p Fg(\034)9 b Fn(\))21 b Fg(<)p Fn(::)g Fh(EQUIV)q Fn(\()p Fg(\033)s Fn(\))1197 3847 y Fg(E)k Fe(
)c Fg(\034)30
b(<)p Fn(:)22 b Fg(\033)p 931 3900 V 931 3991 a(E)j Fe(`)c
Fh(POWER)q Fn(()p Fg(\034)9 b Fn())20 b Fg(<)p Fn(::)i
Fh(POWER)q Fn(()p Fg(\033)s Fn())-50 4141 y(As)g(demonstrated)f(b)n
(y)g(the)h(rules)g(ab)r(o)n(v)n(e,)h(once)f(kinds)g(are)g(in)n(tro-)
-133 4232 y(duced)i(in)g(a)h(t)n(yp)r(e)f(system,)g(it)h(is)g(then)f
(straigh)n(tforw)n(ard)i(to)f(extend)-133 4324 y(it)32
b(with)g(manifest)f(t)n(yp)r(es,)i(b)r(ounded)e(quan)n(ti\014cation,)i
(or)f(b)r(oth)f(at)-133 4415 y(the)25 b(same)h(time.)-133
4653 y Fm(5.2)95 b(First-class)31 b(mo)s(dules)-133 4804
y Fn(Another)d(natural)h(extension)g(of)g(the)g(w)n(ork)g(presen)n(ted)
f(here)h(is)g(to)-133 4896 y(merge)21 b(the)g(mo)r(dule)g(language)i
(and)e(the)g(base)h(language,)i(b)n(y)c(treat-)-133 4987
y(ing)30 b(mo)r(dules)f(as)h(\014rst-class)g(v)l(alues.)45
b(This)30 b(approac)n(h)g(brings)g(ad-)-133 5078 y(ditional)d
(expressiv)n(e)e(p)r(o)n(w)n(er)i(and)e(simpli\014es)h(the)f
(formalization.)-50 5176 y(In)19 b(the)g(case)h(of)h(a)e(mo)r(dule)g
(system)f(based)i(on)f(strong)h(sums,)h(suc)n(h)-133
5268 y(as)40 b(SML’s,)j(\014rst-class)c(mo)r(dules)g(raise)h(ma)t(jor)f
(di\016culties)g([12)r(]:)-133 5359 y(simply-t)n(yp)r(ed)27
b(lam)n(b)r(da-calculus)i(with)g(strong)h(sums)e(is)i(logically)2066
-108 y(inconsisten)n(t)23 b((i.e.)g(non-normalizing))e(and)h(has)g
(no)g(phase)g(distinc-)2066 -17 y(tion)f((i.e.)g(arbitrary)g
(reductions)g(are)g(required)f(during)g(t)n(yp)r(ec)n(hec)n(k-)2066
75 y(ing);)30 b(as)f(a)g(consequence,)g(t)n(yp)r(ec)n(hec)n(king)e(is)
i(undecidable.)43 b(Strat-)2066 166 y(i\014cation)29
b(in)n(to)f(a)h(base)f(language)i(and)d(a)i(mo)r(dule)e(language)i(is)g
(es-)2066 257 y(sen)n(tial)36 b(to)f(ensure)g(the)g(phase)g
(distinction)g(and)g(decidabilit)n(y)g(of)2066 349 y(t)n(yping)25
b([13)q(].)2149 444 y(First-class)j(mo)r(dules)e(cause)h(less)g
(di\016culties)g(in)f(our)g(approac)n(h)2066 536 y(b)r(ecause)g(it)g
(is)h(based)f(on)f(w)n(eak)h(sums)f([19)q(,)i(7].)35
b(No)26 b(reductions)g(are)2066 627 y(needed)k(during)g(t)n(yp)r(ec)n
(hec)n(king,)g(hence)g(the)g(phase)g(distinction)h(is)2066
718 y(ob)n(vious,)26 b(whether)g(mo)r(dules)f(are)h(\014rst-class)h(or)
f(not.)2149 814 y(As)h(sho)n(wn)g(b)n(y)f(Harp)r(er)g(and)h
(Lillibridge)h([10)q(],)g(\014rst-class)f(mo)r(d-)2066
905 y(ules)i(still)h(mak)n(e)e(t)n(yp)r(ec)n(hec)n(king)g(undecidable)h
(in)g(the)f(presence)h(of)2066 997 y(manifest)42 b(t)n(yp)r(es,)j(but)
40 b(for)i(di\013eren)n(t)f(reasons)i(than)d(for)j(strong)2066
1088 y(sums:)j(what)32 b(is)g(undecidable)f(is)i(the)e(subt)n(yping)f
(relation,)35 b(as)d(in)2066 1179 y Fg(F)2115 1187 y
Ff(<)p Fi(:)2217 1179 y Fn([20)q(],)j(and)d(this)g(is)h(due)f(to)g(the)
g(com)n(bination)g(of)h(subt)n(yping,)2066 1271 y(manifest)i(t)n(yp)r
(es)f(and)g(dep)r(enden)n(t)f(function)i(t)n(yp)r(es)f(at)g(the)g(same)
2066 1362 y(lev)n(el.)49 b(Strati\014cation)31 b(a)n(v)n(oids)g(this)g
(problem)e(b)n(y)h(allo)n(wing)j(di\013er-)2066 1453
y(en)n(t)28 b(com)n(binations)g(of)h(these)f(features)h(at)g(the)f(t)n
(w)n(o)g(lev)n(els:)40 b(in)28 b(the)2066 1544 y(system)35
b(presen)n(ted)g(ab)r(o)n(v)n(e,)k(manifest)d(t)n(yp)r(es)f(but)g(no)h
(subt)n(yping)2066 1636 y(nor)25 b(dep)r(enden)n(t)f(function)h(t)n(yp)
r(es)f(at)i(the)e(base)i(lev)n(el,)f(and)g(subt)n(yp-)2066
1727 y(ing)j(and)g(dep)r(enden)n(t)e(function)i(t)n(yp)r(es)g(but)f(no)
h(manifest)g(t)n(yp)r(es)f(at)2066 1818 y(the)e(mo)r(dule)g(lev)n(el.)
2066 2068 y Fo(6)112 b(Conclusions)2066 2241 y Fn(W)-6
b(e)19 b(ha)n(v)n(e)g(presen)n(ted)g(a)h(v)l(ariation)g(on)g(the)f(SML)
g(approac)n(h)h(to)f(mo)r(d-)2066 2332 y(ularit)n(y)40
b(that)f(propagates)i(t)n(yp)r(e)e(equations)h(explicitly)f(through)
2066 2424 y(signatures)31 b(and)f(mo)r(dule)f(t)n(yp)r(es,)i(instead)g
(of)g(implicitly)e(through)2066 2515 y(structures)i(and)f(mo)r(dule)g
(v)l(alues.)49 b(While)31 b(retaining)h(the)e(expres-)2066
2606 y(siv)n(eness)37 b(of)g(the)e(SML)h(mo)r(dule)f(system,)j(our)e(v)
l(arian)n(t)g(pro)n(vides)2066 2698 y(m)n(uc)n(h)25 b(b)r(etter)i(supp)
r(ort)g(for)h(Mo)r(dula-st)n(yle)g(separate)g(compilation)2066
2789 y(and,)21 b(more)e(generally)-6 b(,)21 b(mak)n(es)e(it)h(easier)g
(to)g(understand)e(co)r(de)i(frag-)2066 2880 y(men)n(ts)31
b(with)h(free)g(structure)g(iden)n(ti\014ers.)53 b(The)32
b(underlying)f(t)n(yp)r(e)2066 2972 y(theory)25 b(is)i(also)g(simpler.)
2149 3067 y(A)37 b(protot)n(yp)r(e)f(batc)n(h)g(compiler)h(in)n
(tegrating)h(the)e(main)g(ideas)2066 3159 y(in)29 b(this)g(pap)r(er)g
((t)n(yp)r(e)g(abbreviations)g(in)g(signatures)i(and)d(opaque)2066
3250 y(in)n(terpretation)21 b(of)h(signatures))f(has)g(b)r(een)g
(deriv)n(ed)f(from)h(SML/NJ)2066 3341 y(0.93)40 b(b)n(y)d(Pierre)i(Cr)n
(\023)-36 b(egut)38 b([8)q(].)72 b(The)39 b(main)e(di\013erence)h(with)
g(the)2066 3433 y(w)n(ork)e(presen)n(ted)f(here)g(is)h(that)g(b)r(oth)f
(opaque)g(and)g(transparen)n(t)2066 3524 y(signatures)f(are)g(supp)r
(orted,)h(via)f(t)n(w)n(o)g(distinct)f(mo)r(dule)f(binding)2066
3615 y(constructs.)37 b(Another)26 b(implemen)n(tation,)g(based)g(on)g
(the)h(author’s)2066 3707 y(Caml)g(Ligh)n(t)g(system)f(and)g(closer)i
(to)f(the)f(calculus)i(in)n(tro)r(duced)e(in)2066 3798
y(sections)h(2)f(and)f(3,)i(is)f(in)f(progress.)2149
3894 y(On)32 b(the)g(practical)h(side,)i(some)d(concern)h(has)f(b)r
(een)g(expressed)2066 3985 y(ab)r(out)18 b(the)g(additional)h(v)n(erb)r
(osit)n(y)f(brough)n(t)g(b)n(y)f(declaring)i(manifest)2066
4076 y(t)n(yp)r(es)30 b(in)g(signatures.)50 b(Previous)31
b(attempts)f(at)g(programming)g(in)2066 4168 y(a)38 b(fully)g
(functorized)f(st)n(yle,)k(with)d(all)g(t)n(yp)r(e)f(equations)g
(explicit,)2066 4259 y(ha)n(v)n(e)26 b(demonstrated)f(a)i(ma)t(jor)g
(increase)g(in)g(program)f(size)h(due)f(to)2066 4350
y(the)j(extra)g(sharing)h(declarations)h(required)e([2)q(].)45
b(W)-6 b(e)29 b(exp)r(ect)g(this)2066 4442 y(problem)37
b(to)g(b)r(e)g(less)h(acute)f(in)h(our)f(approac)n(h,)j(since)e
(manifest)2066 4533 y(t)n(yp)r(es)21 b(pro)n(vides)g(b)r(etter)g(supp)r
(ort)f(for)i(non-fully)f(functorized)g(co)r(de;)2066
4624 y(moreo)n(v)n(er,)i(one)f(manifest)h(t)n(yp)r(e)e(declaration)i
((in)g(the)e(de\014nition)h(of)2066 4715 y(the)e(signature)g(of)h(a)f
(mo)r(dule))g(sometimes)f(replace)i(sev)n(eral)f(sharing)2066
4807 y(declarations)h((one)e(for)h(eac)n(h)g(functor)f(that)g(imp)r
(orts)g(this)h(mo)r(dule).)2066 4898 y(More)27 b(practical)g(exp)r
(erience)e(is)i(required)e(to)h(assess)h(this)f(issue.)2149
4994 y(Finally)-6 b(,)23 b(the)f(general)h(idea)f(of)h(making)e(the)g
(de\014nitions)h(of)g(some)2066 5085 y(structure)i(comp)r(onen)n(ts)g
(explicit)g(in)h(the)f(signature,)i(here)e(applied)2066
5176 y(to)37 b(the)f(t)n(yp)r(e)f(comp)r(onen)n(ts,)k(could)d(also)i(b)
r(e)e(extended)f(to)i(other)2066 5268 y(kinds)26 b(of)h(comp)r(onen)n
(ts:)34 b(v)l(alues)26 b(and)g(sub-structures.)35 b(De\014ning)26
b(a)2066 5359 y(v)l(alue)32 b(in)g(a)g(mo)r(dule)g(signature)h(do)r(es)
f(not)g(mak)n(e)f(m)n(uc)n(h)f(sense)j(at)3804 5982 y(P)n(age)26
b(13)p eop
%%Page: 14 14
14 13 bop -133 -108 a Fn(\014rst)27 b(sigh)n(t,)i(but)e(is)h(actually)g
(a)g(common)e(programming)g(practice)-133 -17 y((de\014nition)f(of)h
(constan)n(ts)f(in)g(Mo)r(dula)h(in)n(terfaces,)h(of)f(macros)f(and)
-133 75 y(in-line)33 b(functions)f(in)h(C)f(and)h(C)p
Fh(++)p Fn())g(and)f(pro)n(vides)g(a)h(simple)f(y)n(et)-133
166 y(highly)f(practical)i(approac)n(h)e(to)g(user-con)n(trolled)h
(function)f(inlin-)-133 257 y(ing.)-133 486 y Fo(Ac)m(kno)m(wledgmen)m
(ts)-133 651 y Fn(The)70 b(author)f(is)h(grateful)h(for)f(con)n(v)n
(ersations)g(with)g(Luca)-133 743 y(Cardelli,)42 b(Rob)r(ert)36
b(Harp)r(er,)k(Mark)c(Lillibridge,)42 b(Pierre)37 b(Cr)n(\023)-36
b(egut,)-133 834 y(Didier)38 b(R)n(\023)-36 b(em)n(y)35
b(and)i(Mar)-9 b(\023)-30 b(\020a-Virginia)41 b(Ap)r(on)n(te.)69
b(John)38 b(Mitc)n(hell,)-133 925 y(Stefan)46 b(Kahrs)f(and)g(Lars)h
(Birk)n(edal)g(suggested)g(a)g(n)n(um)n(b)r(er)d(of)-133
1017 y(impro)n(v)n(emen)n(ts)23 b(in)j(earlier)h(drafts.)-133
1245 y Fo(References)-94 1411 y Fn([1])42 b(M.-V.)29
b(Ap)r(on)n(te.)45 b(Extending)28 b(record)i(t)n(yping)e(to)i(t)n(yp)r
(e)e(para-)28 1502 y(metric)c(mo)r(dules)f(with)i(sharing.)32
b(In)24 b Ft(20th)j(symp)l(osium)g(Prin-)28 1593 y(ciples)22
b(of)g(Pr)l(o)l(gr)l(amming)h(L)l(anguages)p Fn(,)g(pages)e(465{478.)i
(A)n(CM)28 1685 y(Press,)k(1993.)-94 1842 y([2])42 b(L.)28
b(Birk)n(edal,)i(N.)e(Roth)n(w)n(ell,)h(M.)f(T)-6 b(ofte,)30
b(and)e(D.)f(N.)h(T)-6 b(urner.)28 1933 y(The)27 b(ML)f(kit,)h(v)n
(ersion)f(1.)37 b(T)-6 b(ec)n(hnical)27 b(rep)r(ort)f(93/14,)j(DIKU,)28
2025 y(1993.)-94 2182 y([3])42 b(L.)e(Cardelli.)76 b(Structural)38
b(subt)n(yping)g(and)h(the)g(notion)g(of)28 2273 y(p)r(o)n(w)n(er)25
b(t)n(yp)r(e.)32 b(In)24 b Ft(15th)k(symp)l(osium)f(Principles)g(of)f
(Pr)l(o)l(gr)l(am-)28 2365 y(ming)h(L)l(anguages)p Fn(,)h(pages)f
(70{79.)h(A)n(CM)e(Press,)h(1988.)-94 2522 y([4])42 b(L.)18
b(Cardelli.)23 b(T)n(yp)r(eful)18 b(programming.)i(In)d(E.)h(J.)g
(Neuhold)f(and)28 2613 y(M.)32 b(P)n(aul,)h(editors,)h
Ft(F)-6 b(ormal)33 b(Description)h(of)e(Pr)l(o)l(gr)l(amming)28
2705 y(Conc)l(epts)p Fn(,)c(pages)e(431{507.)j(Springer-V)-6
b(erlag,)26 b(1989.)-94 2862 y([5])42 b(L.)31 b(Cardelli)g(and)f(X.)g
(Lero)n(y)-6 b(.)47 b(Abstract)30 b(t)n(yp)r(es)g(and)f(the)h(dot)28
2954 y(notation.)22 b(In)17 b Ft(Pr)l(o)l(c.)k(IFIP)e(TC2)h(working)h
(c)l(onfer)l(enc)l(e)h(on)f(pr)l(o-)28 3045 y(gr)l(amming)28
b(c)l(onc)l(epts)i(and)e(metho)l(ds)p Fn(.)f(North-Holland,)f(1990.)-94
3202 y([6])42 b(L.)29 b(Cardelli)g(and)f(J.)h(C.)g(Mitc)n(hell.)43
b(Op)r(erations)29 b(on)f(records.)28 3294 y(In)h Ft(Mathematic)l(al)i
(F)-6 b(oundations)33 b(of)d(Pr)l(o)l(gr)l(amming)i(Seman-)28
3385 y(tics)p Fn(,)25 b(v)n(olume)c(442)k(of)e Ft(L)l(e)l(ctur)l(e)28
b(Notes)e(in)f(Computer)h(Scienc)l(e)p Fn(,)28 3476 y(pages)h(22{52,)h
(1989.)-94 3634 y([7])42 b(L.)34 b(Cardelli)i(and)e(P)-6
b(.)34 b(W)-6 b(egner.)59 b(On)33 b(understanding)g(t)n(yp)r(es,)28
3725 y(data)e(abstraction,)i(and)d(p)r(olymorphism.)47
b Ft(Computing)33 b(sur-)28 3816 y(veys)p Fn(,)27 b(17(4):471{522,)j
(1985.)-94 3974 y([8])42 b(P)-6 b(.)19 b(Cr)n(\023)-36
b(egut.)24 b(Separate)c(compilation)f(in)g(SML.)24 b(W)-6
b(orking)19 b(note,)28 4065 y(Magic)27 b(group,)f(ECR)n(C,)h(1993.)-94
4222 y([9])42 b(L.)34 b(Damas)g(and)f(R.)h(Milner.)60
b(Principal)35 b(t)n(yp)r(e-sc)n(hemes)d(for)28 4314
y(functional)j(programs.)61 b(In)33 b Ft(9th)k(symp)l(osium)f
(Principles)f(of)28 4405 y(Pr)l(o)l(gr)l(amming)i(L)l(anguages)p
Fn(,)i(pages)c(207{212.)i(A)n(CM)e(Press,)28 4496 y(1982.)-133
4654 y([10])43 b(R.)d(Harp)r(er)g(and)f(M.)i(Lillibridge.)79
b(A)39 b(t)n(yp)r(e-theoretic)h(ap-)28 4745 y(proac)n(h)53
b(to)g(higher-order)f(mo)r(dules)g(with)h(sharing.)116
b(In)28 4836 y Ft(21st)28 b(symp)l(osium)e(Principles)h(of)f(Pr)l(o)l
(gr)l(amming)h(L)l(anguages)p Fn(.)28 4928 y(A)n(CM)f(Press,)h(1994.)
-133 5085 y([11])43 b(R.)27 b(Harp)r(er,)h(R.)f(Milner,)i(and)e(M.)h(T)
-6 b(ofte.)41 b(A)27 b(t)n(yp)r(e)f(discipline)28 5176
y(for)37 b(program)e(mo)r(dules.)63 b(In)35 b Ft(T)-6
b(APSOFT)37 b(87)p Fn(,)i(v)n(olume)34 b(250)28 5268
y(of)c Ft(L)l(e)l(ctur)l(e)j(Notes)e(in)f(Computer)i(Scienc)l(e)p
Fn(,)f(pages)f(308{319.)28 5359 y(Springer-V)-6 b(erlag,)26
b(1987.)2066 -108 y([12])43 b(R.)f(Harp)r(er)h(and)f(J.)h(C.)g(Mitc)n
(hell.)85 b(On)42 b(the)g(t)n(yp)r(e)g(struc-)2227 -17
y(ture)29 b(of)i(Standard)e(ML.)46 b Ft(A)n(CM)31 b(T)-6
b(r)l(ans.)32 b(Pr)l(o)l(g.)g(L)l(ang.)f(Syst.)p Fn(,)2227
75 y(15(2):211{252,)f(1993.)2066 232 y([13])43 b(R.)27
b(Harp)r(er,)g(J.)g(C.)g(Mitc)n(hell,)i(and)d(E.)h(Moggi.)39
b(Higher-order)2227 324 y(mo)r(dules)26 b(and)f(the)h(phase)g
(distinction.)36 b(In)25 b Ft(17th)k(symp)l(osium)2227
415 y(Principles)j(of)f(Pr)l(o)l(gr)l(amming)i(L)l(anguages)p
Fn(,)h(pages)d(341{354.)2227 506 y(A)n(CM)26 b(Press,)h(1990.)2066
664 y([14])43 b(D.)19 b(MacQueen.)k(Mo)r(dules)d(for)f(Standard)f(ML.)
23 b(In)18 b(R.)h(Harp)r(er,)2227 756 y(D.)36 b(MacQueen,)i(and)d(R.)g
(Milner,)40 b(editors,)f Ft(Standar)l(d)f(ML)p Fn(.)2227
847 y(Univ)n(ersit)n(y)c(of)i(Edin)n(burgh,)g(tec)n(hnical)g(rep)r(ort)
f(ECS)g(LF)n(CS)2227 938 y(86-2,)27 b(1986.)2066 1096
y([15])43 b(D.)20 b(MacQueen.)25 b(Using)20 b(dep)r(enden)n(t)f(t)n(yp)
r(es)g(to)h(express)g(mo)r(du-)2227 1187 y(lar)f(structure.)j(In)17
b Ft(13th)22 b(symp)l(osium)f(Principles)g(of)f(Pr)l(o)l(gr)l(am-)2227
1279 y(ming)27 b(L)l(anguages)p Fn(,)h(pages)f(277{286.)h(A)n(CM)e
(Press,)h(1986.)2066 1436 y([16])43 b(R.)21 b(Milner)h(and)f(M.)h(T)-6
b(ofte.)28 b Ft(Commentary)c(on)g(Standar)l(d)h(ML)p
Fn(.)2227 1528 y(The)h(MIT)g(Press,)h(1991.)2066 1685
y([17])43 b(R.)28 b(Milner,)h(M.)g(T)-6 b(ofte,)29 b(and)f(R.)g(Harp)r
(er.)41 b Ft(The)29 b(de\014nition)h(of)2227 1777 y(Standar)l(d)g(ML)p
Fn(.)k(The)26 b(MIT)g(Press,)h(1990.)2066 1934 y([18])43
b(J.)36 b(C.)f(Mitc)n(hell.)63 b(On)34 b(the)g(equiv)l(alence)h(of)g
(data)g(represen-)2227 2026 y(tations.)64 b(In)35 b(V.)g(Lifsc)n(hitz,)
k(editor,)f Ft(A)n(rti\014cial)f(intel)t(ligenc)l(e)2227
2117 y(and)j(mathematic)l(al)h(the)l(ory)g(of)f(c)l(omputation)p
Fn(,)k(pages)c(305{)2227 2208 y(330.)27 b(Academic)e(Press,)i(1991.)
2066 2366 y([19])43 b(J.)j(C.)g(Mitc)n(hell)g(and)e(G.)i(D.)f(Plotkin.)
92 b(Abstract)45 b(t)n(yp)r(es)2227 2457 y(ha)n(v)n(e)31
b(existen)n(tial)h(t)n(yp)r(e.)50 b Ft(A)n(CM)32 b(T)-6
b(r)l(ans.)33 b(Pr)l(o)l(g.)g(L)l(ang.)g(Syst.)p Fn(,)2227
2549 y(10(3):470{502,)d(1988.)2066 2707 y([20])43 b(B.)22
b(C.)g(Pierce.)29 b(Bounded)21 b(quan)n(ti\014cation)g(is)h
(undecidable.)28 b(In)2227 2798 y Ft(19th)e(symp)l(osium)f(Principles)g
(of)f(Pr)l(o)l(gr)l(amming)i(L)l(anguages)p Fn(,)2227
2889 y(pages)h(305{315.)h(A)n(CM)e(Press,)h(1992.)2066
3047 y([21])43 b(D.)36 b(R)n(\023)-36 b(em)n(y)-6 b(.)64
b(Extending)36 b(ML)h(t)n(yp)r(e)e(system)h(with)g(a)h(sorted)2227
3138 y(equational)26 b(theory)-6 b(.)32 b(Researc)n(h)26
b(rep)r(ort)f(1766,)i(INRIA,)c(1992.)2066 3296 y([22])43
b(J.)23 b(C.)g(Reynolds.)29 b(The)22 b(essence)h(of)h(Algol.)30
b(In)21 b(de)h(Bakk)n(er)g(and)2227 3387 y(v)l(an)35
b(Vliet,)j(editors,)h Ft(A)n(lgorithmic)d(languages)p
Fn(,)j(pages)e(345{)2227 3479 y(372.)27 b(North-Holland,)f(1981.)2066
3636 y([23])43 b(A.)27 b(Sabry)f(and)g(M.)i(F)-6 b(elleisen.)39
b(Reasoning)27 b(ab)r(out)g(programs)2227 3728 y(in)33
b(con)n(tin)n(uation-passing)h(st)n(yle.)57 b(In)33 b
Ft(Lisp)h(and)h(F)-6 b(unctional)2227 3819 y(Pr)l(o)l(gr)l(amming)29
b(1992)p Fn(,)d(pages)h(288{298,)i(1992.)2066 3977 y([24])43
b(Z.)c(Shao)g(and)f(A.)g(App)r(el.)72 b(Smartest)38 b(recompilation.)74
b(In)2227 4068 y Ft(20th)26 b(symp)l(osium)f(Principles)g(of)f(Pr)l(o)l
(gr)l(amming)i(L)l(anguages)p Fn(,)2227 4159 y(pages)h(439{450.)h(A)n
(CM)e(Press,)h(1993.)2066 4317 y([25])43 b(M.)21 b(T)-6
b(ofte.)26 b(Principal)c(signatures)f(for)g(higher-order)f(program)2227
4408 y(mo)r(dules.)i(In)17 b Ft(19th)k(symp)l(osium)g(Principles)g(of)f
(Pr)l(o)l(gr)l(amming)2227 4500 y(L)l(anguages)p Fn(,)28
b(pages)f(189{199.)h(A)n(CM)e(Press,)h(1992.)2066 4658
y([26])43 b(M.)32 b(T)-6 b(ofte.)53 b(T)n(yp)r(e)31 b(abbreviations)i
(in)e(signatures.)53 b(Message)2227 4749 y(sen)n(t)26
b(to)f(the)h Fh(sml)g Fn(mailing)g(list,)h(Jan.)f(1992.)2066
4907 y([27])43 b(N.)26 b(Wirth.)35 b Ft(Pr)l(o)l(gr)l(amming)28
b(in)g(Mo)l(dula-2)p Fn(.)36 b(Springer-V)-6 b(erlag,)2227
4998 y(1983.)3804 5982 y(P)n(age)26 b(14)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF