(original) (raw)
%!PS-Adobe-2.0 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: pos1.dvi %%Pages: 3 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips -o pos1.ps pos1 %DVIPSParameters: dpi=300, compressed, comments removed %DVIPSSource: TeX output 1997.11.26:1736 %%BeginProcSet: texc.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{ statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{ pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{ rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv} B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] }if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{ 3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{ 3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet TeXDict begin 40258431 52099146 1000 300 300 (pos1.dvi) @start /Fa 1 44 df<1330ABB512FCA238003000AB16187E931B>43 D E /Fb 45 122 df12 D<121C123E127EA2123A12021204A21208A21210122012401280070E769F0E>39 D<121C123CA41204A21208A212101220A212401280060E7D840E>44 DI<1302A21306130E133C13DCEA031C12001338A413 70A413E0A4EA01C0A4EA0380A41207EAFFF80F1E7B9D17>49 D<146014E0A3EB01C0A3EB 0380A214005BA21306130E130C5BA25BA213635B1387EA01071203EA060E12041208EA3F 8EEA607C38801FC038001C00A25BA45BA2136013277E9D17>52 D54 D<3804E010EA0BF0000F1320001F1340381E19C038380E80EA3001386003001240EA 8006EA000E130C131C131813385BA213F05B1201A2485AA3485AA3120F90C7FCA2120614 1F799D17>I<131FEB7180EBC0C0EA0180000313E0EA07005A1301121EA314C0EA1C03A3 1307EB0F80120CEA06373803C700EA000F130EA25B1260EAF0385BEAE060EA80C0EA4380 003EC7FC131F7B9D17>57 D<1207120F121FA2120E1200AA127012F8A212F012E008147B 930E>I<14021406A2140E141EA2143F142F144F14CF148FEB010FA21302A213041308A2 0110138014071320EB3FFFEB40071380A2EA0100A2120212061204001E14C039FF807FF8 1D207E9F22>65 D<48B512C039001E00F015781538153C5BA4491378A215F0EC01E09038 F007809038FFFE009038F00F80EC03C03801E00115E0A3EA03C0A315C038078003EC0780 EC0F00141E380F007CB512E01E1F7D9E20>II<90B5128090381E00E0 15701538151C5B150EA35BA449131EA44848133CA3157848481370A215E0EC01C0380780 031580EC0E005C380F0070B512C01F1F7D9E22>I<48B512FE39001E001C150C1504A25B A490387804081500A2140C495AEBFFF8EBF018A23801E010A3EC001048481320A21540A2 48481380140115001407380F001FB512FE1F1F7D9E1F>I<48B512FC39001E0038151815 08A25BA4491310EC0800A3495A1430EBFFF0EBF0303801E020A44848C7FCA4485AA4120F EAFFF81E1F7D9E1E>II<3801FFF038001F00131E A35BA45BA45BA4485AA4485AA4485AA4120FEAFFF0141F7D9E12>73 D77 D<01FFEB3FE0011FEB0F001504EB1780A201275BEB23C0A3903841E010A214F013400180 5B1478A348486C5AA3141E00025CA2140FA24891C7FC80A2120C001C1302EAFF80231F7D 9E22>II<48B5128039001E00E015 701538153C5BA4491378A215F015E09038F003C0EC0F00EBFFFC01F0C7FC485AA4485AA4 485AA4120FEAFFF01E1F7D9E1F>I<903807E04090381C18C09038300580EB600313C000 011301018013001203A391C7FC7FA213F86CB47E14E06C6C7E131FEB01F8EB0078A21438 A21220A2143000601370146014E000705B38E80380D8C606C7FCEA81F81A217D9F1A>83 D<000FB512FC391E03C03800181418001014081220EB078012601240A239800F00100000 1400A3131EA45BA45BA45BA41201387FFF801E1F799E21>I<3BFFE1FFC07F803B1F003E 001C00001E013C13181610143E021E5B121F6C013E5BA2025E5B149E4BC7FC9038011E02 A201025BA201045BA201085BA201105B13205D01405BA2D9801FC8FC80EB000E7E000613 0CA2000413082920779E2D>87 D97 D<137EEA01C138030080EA0E07121E001C1300EA3C0248C7FCA35AA5EA70011302EA3004 EA1838EA07C011147C9315>99 D<1478EB03F8EB0070A414E0A4EB01C0A213F1EA038938 070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C80 380F070015207C9F17>I<137CEA01C2EA0701120E121C123CEA3802EA780CEA7BF0EA7C 0012F0A4127013011302EA3804EA1838EA07C010147C9315>I<1478EB019CEB033CA2EB 07181400A2130EA5EBFFE0EB1C00A45BA55BA55BA5485AA35B1231007BC7FC12F3126612 3C1629829F0E>III<13C0EA01E0A213C0C7FCA7120E12131223EA4380EA4700A21287120EA35AA3EA 38401380A21270EA31001232121C0B1F7C9E0E>I107 DI<391C0F80F0392630 C318394740640C903880680EEB0070A2008E495A120EA34848485AA3ED70803A38038071 00A215E115623970070064D83003133821147C9325>I<381C0F80382630C03847406013 80EB0070A2008E13E0120EA3381C01C0A3EB038400381388A2EB0708EB03100070133038 3001C016147C931A>I<137CEA01C338030180000E13C0121E001C13E0123C1278A338F0 03C0A3EB07801400EA700F130EEA3018EA1870EA07C013147C9317>I<3801C1E0380262 183804741C1378EB701EA2EA08E01200A33801C03CA3143838038078147014E0EBC1C038 072380EB1E0090C7FCA2120EA45AA2B47E171D809317>I114 D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FCEA003E130E1270 EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>II<000E 13C0001313E0382301C0EA4381EA4701A238870380120EA3381C0700A31410EB0E201218 A2381C1E40EA0C263807C38014147C9318>I<000EEBC1C0001313E3392301C3E0384381 C1384701C015603987038040120EA3391C070080A3EC0100A21306EB0F02000C5B380E13 083803E1F01B147C931E>119 D<000E13C0001313E0382301C0EA4381EA4701A2388703 80120EA3381C0700A4130E1218A2EA1C1EEA0C3CEA07DCEA001CA25B12F05BEAE060485A EA4380003EC7FC131D7C9316>121 D E /Fc 77 124 df<90381F83E09038F06E303901 C07878380380F8903800F03048EB7000A7B612803907007000B2383FE3FF1D20809F1B> 11 D<133FEBE0C0EA01C0380381E0EA0701A290C7FCA6B512E0EA0700B2383FC3FC1620 809F19>II< 90381F81F89038F04F043901C07C06390380F80FEB00F05A0270C7FCA6B7FC3907007007 B23A3FE3FE3FE02320809F26>I34 D<127012F812FCA212741204A31208A21210A212 201240060E7C9F0D>39 D<13401380EA01005A12061204120C5AA212381230A212701260 A412E0AC1260A412701230A212381218A27E120412067E7EEA008013400A2E7BA112>I< 7E12407E12307E1208120C7EA212077EA213801201A413C0AC1380A412031300A25A1206 A25A120812185A12205A5A0A2E7EA112>I<127012F012F8A212781208A31210A31220A2 1240050E7C840D>44 DI<127012F8A3127005057C840D>I48 D<13801203120F12F31203B3A6EA07C0EAFFFE0F 1E7C9D17>III<1306A2130EA2131E132EA2134E138EA2EA010E1202A212 041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17>II<137CEA0182EA070138 0E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406EAF807EB0380A2 00F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D17>I<1240387F FFE014C0A23840008038800100A21302485AA25B5BA25BA21360A213E05B1201A41203A7 6C5A131F7E9D17>III<127012F8A312701200AA1270 12F8A3127005147C930D>I63 D<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03EEB801EA248B5FCEB000F A20002EB0780A348EB03C0A2120C001E14E039FF801FFE1F207F9F22>65 DI<90380FE0109038381C30 9038E002703803C00139078000F048C71270121E15305A1510127C127800F81400A91278 007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB0FF01C217E9F21 >IIII<90380FE01090 38381C309038E002703803C00139078000F048C71270121E15305A1510127C127800F814 00A7EC3FFEEC01F000781300127C123CA27EA27E6C7E3903C001703900E002309038380C 1090380FF0001F217E9F24>I<39FFF07FF8390F000780AD90B5FCEB0007AF39FFF07FF8 1D1F7E9E22>II<39FFF007FC390F0003E0EC01 80150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E01341EB80F0EB0078A28080 A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>75 DIIIIIII<3803F040380C 0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF86CB4FC00071380 C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F8018038C60300EA81FC 14217E9F19>I<007FB512E038780F010060EB006000401420A200C0143000801410A400 001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC0080B3A46CEB0100 1380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003FE391F8000F86C C7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213F8EB7804A26D5A A36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF81FF03B1F00 0FC007C06C903907800180170015C001805C00071502EC09E013C000035DEC19F01410D8 01E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C144090383D000F13 3F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<397FF81FF8390FE0 07C03907C0030000031302EBE0063801F00400005BEBF818EB78106D5AEB3E60EB1E406D 5AA213076D7E497E1305EB08F0EB18F8EB1078EB207CEB603EEB401EEB801F3901000F80 1407000214C000061303001FEB07E039FFC01FFE1F1F7F9E22>I<39FFF001FF391F8000 78000F146012076D1340000314807F3901F001001200EBF802EB7C06EB3C04EB3E08131E EB1F10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>I<387FFFFE387E003C12780070 1378006013F814F0384001E0130314C0EB07801200EB0F00131EA25B137C13785B1201EB E002EA03C0A2EA0780000F13061300001E1304003E130C123C48133C14FCB5FC171F7E9E 1C>I<12FFA212C0B3B3A512FFA2082D7CA10D>II<12FFA21203B3B3A512FFA2082D80 A10D>I97 D<121C12FC121CAA137CEA1D87381E 0180EB00C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C 15207E9F19>III< EA03F0EA0E1C487E487EA21270EB038012F0A2B5FC00F0C7FCA31270A26C1380A2381C01 00EA0706EA01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00 B2EA7FE01020809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5A EA1E38EA33E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A400 6013606C13C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D0300 1E1380A2121CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EA FF80091F7F9E0C>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0EA1D F0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>107 D<121C12FC121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D039038391E 01E01CA2001C13C0AE3AFF8FF8FF8021147E9326>IIII<3801F04038070CC0EA0E02EA1C03EA380112781270 12F0A6127012781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>III<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA 01F00E1C7F9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319> I<38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00 E8A21370A3132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440 A214C0D80704138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB 40081E147F9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA 00F01370137813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC1614 7F9318>I<38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A2 13E4EA00E8A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>III E /Fd 25 119 df<49B4FC011F13C090387F80F09038FC00F83801F8010003497EEA07F0A3 6E5A6E5A92C7FCA4B612FCA33807F001B3A33A7FFF1FFFC0A3222A7FA926>12 D45 D<130E131E137EEA07FE12FFA212F81200B3AB387FFFFEA3 17277BA622>49 DII<140E141E143E 147E14FEA213011303EB077E130EA2131C1338137013E0A2EA01C0EA0380EA0700120EA2 5A5A5A5AB612F8A3C7EAFE00A890383FFFF8A31D277EA622>I<91393FF00180903903FF FE03010FEBFF8790393FF007DF9039FF8001FF4848C7127F4848143FD807F0141F000F15 0F48481407A2485A1603127F5B93C7FC12FFA9127FA26DEC0380123FA26C7EEE07006C7E 0007150ED803FC141E6C6C5C6C6C6C13F890393FF007E0010FB55A010391C7FC9038003F F829297CA832>67 D72 D77 D82 D<3803FF80000F13F0381F01F8383F807EA280D81F001380120EC7FC A3EB0FFF90B5FC3807FC3FEA0FE0EA3F8013005A12FEA4007E137F007F13DF393F839FFC 380FFF0F3801FC031E1B7E9A21>97 D99 DIII<9038FF81F00003EBE7F8390FC1FE7C381F80FC9038007C3848EB7E1048EB7F00A6 6C137E6C137CEB80FC380FC1F8381FFFE0001813800038C8FCA2123C123E383FFFF86C13 FF15806C14C06C14E0001F14F0383C0007007CEB01F8481300A4007CEB01F0003C14E000 1FEB07C0390FC01F803903FFFE0038007FF01E287E9A22>II< 1207EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA3 0F2B7DAA14>I108 D<38FFC07F9038C1FFC0 9038C787E0390FCE03F013D88113F0A213E0B03AFFFE3FFF80A3211B7D9A26>110 DI<38FFC1F0EBC7FCEBCE3E380FD87FA213F0143E141CEBE000B0B5FCA3181B7E9A 1C>114 D<3803FE30380FFFF0EA1E03EA380048137012F0A27E00FE1300EAFFE0EA7FFE EBFF806C13E06C13F0000713F8C6FCEB07FCEA600000E0137C143C7E14387E6C137038FF 01E038F7FFC000C11300161B7E9A1B>I<1370A413F0A312011203A21207381FFFF0B5FC A23807F000AD1438A61203EBF870000113603800FFC0EB1F8015267FA51B>I<3AFFFE03 FF80A33A0FF0007800000714706D13F000035CEBFC0100015CA26C6C485AA2EBFF07017F 90C7FC148FEB3F8E14CEEB1FDCA2EB0FF8A36D5AA26D5AA26D5A211B7F9A24>118 D E /Fe 11 119 df97 D<13F8EA0304120EEA1C0EEA181CEA30001270A25A A51304EA60081310EA3060EA0F800F127C9113>99 D<13F8EA0704120CEA1802EA380412 30EA7008EA7FF0EAE000A5EA60041308EA30101360EA0F800F127C9113>101 D105 D110 D<13F8EA030CEA0E06487E1218 123000701380A238E00700A3130EA25BEA60185BEA30E0EA0F8011127C9115>I<380387 803804C860EBD03013E0EA09C014381201A238038070A31460380700E014C0EB0180EB83 00EA0E86137890C7FCA25AA45AB4FC151A809115>I114 DI<12035AA3120EA4EAFFE0EA1C00A35AA45AA4EAE080A2EAE100A2126612380B1A7C 990E>I118 D E /Ff 36 123 df<137E3801C180EA0301380703C012 0EEB018090C7FCA5B512C0EA0E01B0387F87F8151D809C17>12 D34 D<126012F012F812681208A31210A2122012401280050C7C9C0C>39 D<1380EA0100120212065AA25AA25AA35AA412E0AC1260A47EA37EA27EA27E12027EEA00 80092A7C9E10>I<7E12407E12307EA27EA27EA37EA41380AC1300A41206A35AA25AA25A 12205A5A092A7E9E10>I<126012F0A212701210A41220A212401280040C7C830C>44 D<126012F0A2126004047C830C>46 D<1306A3130FA3EB1780A2EB37C01323A2EB43E013 41A2EB80F0A338010078A2EBFFF83802003CA3487FA2000C131F80001E5BB4EBFFF01C1D 7F9C1F>65 D<39FFF0FFF0390F000F00AC90B5FCEB000FAD39FFF0FFF01C1C7F9B1F>72 DI<007FB512C038700F010060130000401440 A200C014201280A300001400B1497E3803FFFC1B1C7F9B1E>84 D92 D97 D<12FC121CAA137CEA1D87381E0180381C00C014E0 14601470A6146014E014C0381E018038190700EA10FC141D7F9C17>II< EB1F801303AAEA03F3EA0E0BEA1807EA30031270126012E0A6126012701230EA1807EA0E 1B3803E3F0141D7F9C17>II<13F8EA018CEA071E1206 EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C0D>II<12FC121CAA 137C1387EA1D03001E1380121CAD38FF9FF0141D7F9C17>I<1218123CA21218C7FCA712 FC121CB0EAFF80091D7F9C0C>I<12FC121CAAEB0FE0EB0780EB06005B13105B5B13E012 1DEA1E70EA1C781338133C131C7F130F148038FF9FE0131D7F9C16>107 D<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0391C838838391D019018001EEBE0 1C001C13C0AD3AFF8FF8FF8021127F9124>IIII114 DI<1204A4120CA2121C123CEAFFE0EA1C00A9 1310A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD1307120CEA0E1B3803E3 F014127F9117>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388A2 13C8EA01D0A2EA00E0A3134013127F9116>I<39FF3FC7E0393C0703C0001CEB01801500 130B000E1382A21311000713C4A213203803A0E8A2EBC06800011370A2EB803000001320 1B127F911E>I<38FF0FE0381E0700EA1C06EA0E046C5AEA039013B0EA01E012007F1201 1338EA021C1204EA0C0E487E003C138038FE1FF014127F9116>I<38FF07E0383C038038 1C0100A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA01D0A2EA00E0A31340A25BA212F0 00F1C7FC12F312661238131A7F9116>II E /Fg 7 117 df65 D97 DII114 DI<1203A45AA25AA2EA3FFC12FFEA1F00A9130C A4EA0F08EA0798EA03F00E1A7F9913>I E /Fh 35 122 df<127012F812FCA212741204 A41208A21210A212201240060F7C840E>44 D<127012F8A3127005057C840E>46 D<13801203120F12F31203B3A9EA07C0EAFFFE0F217CA018>49 DI< EA03F8EA0C1EEA100F38200780004013C0127813031307123800001380A214005B130C13 38EA03F0EA001C130FEB0780A2EB03C0A214E01220127012F8A200F013C01240EB078012 2038100F00EA0C1CEA03F013227EA018>I<00101380381E0700EA1FFF5B13F8EA17E000 10C7FCA6EA11F8EA120CEA1C07381803801210380001C0A214E0A4127012F0A200E013C0 1280EA4003148038200700EA1006EA0C1CEA03F013227EA018>53 D64 D<497EA3497EA3EB05E0A2EB09F01308A2EB1078A3497EA3497EA2EB C01F497EA248B51280EB0007A20002EB03C0A348EB01E0A348EB00F0121C003EEB01F839 FF800FFF20237EA225>I<903807E0109038381830EBE0063901C0017039038000F048C7 FC000E1470121E001C1430123CA2007C14101278A200F81400A812781510127C123CA200 1C1420121E000E14407E6C6C13803901C001003800E002EB381CEB07E01C247DA223>67 DI<903807F0 0890383C0C18EBE0023901C001B839038000F848C71278481438121E15185AA2007C1408 1278A200F81400A7EC1FFF0078EB00F81578127C123CA27EA27E7E6C6C13B86C7E3900E0 031890383C0C08903807F00020247DA226>71 D77 D80 D<3803F020380C0C60EA1802383001E0EA7000 0060136012E0A21420A36C1300A21278127FEA3FF0EA1FFE6C7E0003138038003FC0EB07 E01301EB00F0A214707EA46C1360A26C13C07E38C8018038C60700EA81FC14247DA21B> 83 D<39FFFC07FF390FC000F86C4813701520B3A5000314407FA2000114806C7E903860 0100EB3006EB1C08EB03F020237EA125>85 D97 D<120E12FE121E120EAB131FEB61C0EB8060380F0030000E1338143C141C141EA7 141C143C1438000F1370380C8060EB41C038083F0017237FA21B>II<14E0130F13011300ABEA01F8EA0704EA0C02EA1C01EA3800127812 7012F0A7127012781238EA1801EA0C0238070CF03801F0FE17237EA21B>II<133E13E33801C780EA0387130748C7FCA9 EAFFF80007C7FCB27FEA7FF0112380A20F>I<14703803F198380E1E18EA1C0E38380700 A200781380A400381300A2EA1C0EEA1E1CEA33F00020C7FCA212301238EA3FFE381FFFC0 6C13E0383000F0481330481318A400601330A2003813E0380E03803803FE0015217F9518 >I<120E12FE121E120EABEB1F80EB60C0EB80E0380F0070A2120EAF38FFE7FF18237FA2 1B>I<121C123EA3121CC7FCA8120E127E121E120EB1EAFFC00A227FA10E>I<120E12FE12 1E120EB3ADEAFFE00B237FA20E>108 D<390E1FC07F3AFE60E183803A1E807201C03A0F 003C00E0A2000E1338AF3AFFE3FF8FFE27157F942A>I<380E1F8038FE60C0381E80E038 0F0070A2120EAF38FFE7FF18157F941B>III114 DI<1202A41206A3120E121E123EEAFFFCEA0E00AB1304A6EA 07081203EA01F00E1F7F9E13>I<000E137038FE07F0EA1E00000E1370AD14F0A2380601 70380382783800FC7F18157F941B>I<38FF80FE381E00781430000E1320A26C1340A2EB 80C000031380A23801C100A2EA00E2A31374A21338A3131017157F941A>I<38FF80FE38 1E00781430000E1320A26C1340A2EB80C000031380A23801C100A2EA00E2A31374A21338 A31310A25BA35B12F05B12F10043C7FC123C171F7F941A>121 D E /Fi 15 117 df45 D<91383FE001903901FFF803903807F01E 90391F800307013EC712870178144F49142F4848141F4848140F485A000F150790C8FC48 1503121E123E003C1501127CA30078150012F8AB1278127C1601A2123C123E121E001F15 027E6D1406000715046C6C14086C7E6C6C141001781420013E14C090391F800380903907 F00F00903801FFFC9038003FE028337CB130>67 D72 D79 D99 D<15F0141FA214011400AFEB0FC0EB70303801C00C3803800238070001120E 001E13005AA2127C1278A212F8A71278A2127C123CA27E000E13016C1302380380046C6C 487E3A00F030FF80EB1FC021327EB125>II<15F090387F03083901C1C4 1C380380E8390700700848EB7800001E7FA2003E133EA6001E133CA26C5B6C13706D5A38 09C1C0D8087FC7FC0018C8FCA5121C7E380FFFF86C13FF6C1480390E000FC00018EB01E0 48EB00F000701470481438A500701470A26C14E06CEB01C00007EB07003801C01C38003F E01E2F7E9F21>103 DI<120FEA1F80A4 EA0F00C7FCABEA0780127FA2120F1207B3A6EA0FC0EAFFF8A20D307EAF12>I<380780FE 39FF83078090388C03C0390F9001E0EA07A06E7E13C0A25BB3A2486C487E3AFFFC1FFF80 A2211F7E9E25>110 DI<380783E038FF8418EB887CEA 0F90EA07A01438EBC000A35BB3487EEAFFFEA2161F7E9E19>114 D<3801FC10380E0330381800F048137048133012E01410A37E6C1300127EEA3FF06CB4FC 6C13C0000313E038003FF0EB01F813006C133CA2141C7EA27E14186C1338143000CC1360 38C301C03880FE00161F7E9E1A>I<1340A513C0A31201A212031207120F381FFFE0B5FC 3803C000B01410A80001132013E000001340EB78C0EB1F00142C7FAB19>I E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 611 377 a Fi(Higher-Order)21 b(Connectors)829 504 y Fh(Da)o(vid)16 b(Garlan)676 562 y(Sc)o(ho)q(ol)g(of)h(Computer)e (Science)682 620 y(Carnegie)h(Mellon)f(Univ)o(ersit)o(y)742 678 y(Pittsburgh,)i(P)l(A)f(15213)772 753 y(garlan@cs.cm)o(u.edu)882 920 y Fg(Abstract)176 994 y Ff(A)f(critical)f(issue)h(for)f(arc)o (hitectural)h(design)g(is)f(the)h(nature)h(of)e(the)h(glue,)f(or)g (connectors,)i(with)e(whic)o(h)114 1044 y(a)19 b(system's)g(parts)h (are)g(com)o(bined.)34 b(Th)o(us)20 b(an)f(imp)q(ortan)o(t)f(\014rst)j (step)f(to)o(w)o(ard)f(impro)o(ving)e(our)j(abilit)o(y)114 1094 y(to)d(comp)q(ose)f(parts)i(is)f(to)g(mak)o(e)f(to)h(mak)o(e)f (connectors)j(explicit)d(seman)o(tic)h(en)o(ties,)h(where)g(they)g(can) g(b)q(e)114 1144 y(do)q(cumen)o(ted,)i(analyzed,)g(and)f(\(sometimes\)) f(used)i(to)f(generate)i(co)q(de.)35 b(A)19 b(n)o(um)o(b)q(er)g(of)g (notations)g(for)114 1193 y(soft)o(w)o(are)13 b(arc)o(hitecture)j(do)e (precisely)g(this.)k(Ho)o(w)o(ev)o(er,)c(a)g(k)o(ey)f(second)i(step)g (is)f(to)f(understand)i Fe(op)n(er)n(ations)114 1243 y(over)e(c)n(onne)n(ctors)p Ff(.)18 b(In)13 b(principle,)f(suc)o(h)i (op)q(erations)f(w)o(ould)f(p)q(ermit)f(one)i(to)g(pro)q(duce)h(new)f (connectors)h(out)114 1293 y(of)d(old)g(ones,)i(adapt)e(existing)h (connectors)h(to)f(new)g(con)o(texts)h(of)f(use,)g(and)g(factor)g(out)g (common)d(prop)q(erties)114 1343 y(of)18 b(connectors)j(so)e(they)g (can)h(b)q(e)f(reused.)35 b(In)19 b(this)g(pap)q(er)h(w)o(e)f(argue)h (that)f(the)g(use)h(of)f(\\higher)f(order)114 1393 y(connectors")d(is)f (one)g(w)o(a)o(y)f(to)h(ac)o(hiev)o(e)g(this)g(goal.)0 1536 y Fd(1)69 b(Motiv)l(ation)0 1637 y Fc(T)l(o)17 b(comp)q(ose)g(a)g (system)g(from)g(parts)g(a)g(k)o(ey)g(design)h(consideration)g(is)g(to) f(mak)o(e)f(sure)i(the)f(comp)q(onen)o(ts)h(can)0 1694 y(in)o(teract)d(using)h(the)g(comm)o(unication)g(mec)o(hanisms)g(at)f (hand.)21 b(Comm)o(unication)15 b(mec)o(hanisms)h({)f(or)g Fb(c)n(onne)n(c-)0 1750 y(tors)h Fc({)g(can)h(b)q(e)g(as)e(simple)j(as) e(pro)q(cedure)h(call)g(and)g(data)e(sharing)i(\(t)o(ypically)g(pro)o (vided)g(b)o(y)g(a)e(programming)0 1807 y(language)e(or)e(op)q(erating) i(system\),)f(or)g(as)g(complex)h(as)f(secure)h(proto)q(cols)f(for)g (distributed)i(transactions)d(\(often)0 1863 y(pro)o(vided)16 b(b)o(y)f(middlew)o(are)h(pro)q(ducts\).)71 1919 y(In)j(the)h(past)e (the)i(problem)f(of)g(ac)o(hieving)i(in)o(terop)q(erabilit)o(y)f(b)q (et)o(w)o(een)g(a)f(set)g(of)f(comp)q(onen)o(ts)i(has)f(b)q(een)0 1976 y(cast)f(as)g(a)h(problem)g(of)f(adapting)h(the)g(comp)q(onen)o (ts)f(to)g(matc)o(h)g(some)h(\014xed)g(set)f(of)h(connector)f(t)o(yp)q (es.)30 b(F)l(or)0 2032 y(example,)15 b(in)h(Unix)g(comp)q(onen)o(ts)f (are)g(t)o(ypically)h(programmed)e(to)g(read)h(and)g(write)g(from)f (pip)q(es.)22 b(With)15 b(RPC)0 2089 y(or)g(Corba,)g(comp)q(onen)o(ts)g (m)o(ust)g(b)q(e)h(written)g(to)f(comm)o(unicate)h(via)g(pro)q(cedure)g (calls)h(via)f(stubs)f(and)h(pro)o(xies.)0 2145 y(With)i(ev)o(en)o(t)f (broadcast)g(comp)q(onen)o(ts)h(m)o(ust)f(b)q(e)h(capable)h(of)e (receiving)i(and)f(resp)q(onding)h(to)e(async)o(hronous)0 2202 y(messages.)k(In)c(this)f(scenario,)g(when)h(a)e(comp)q(onen)o(t)h (do)q(es)h(not)e(matc)o(h)g(a)h(giv)o(en)g(connector,)g(one)g(is)h (forced)e(to)0 2258 y(rewrite)g(the)h(comp)q(onen)o(t,)f(or)f(p)q (ossibly)j(add)e(a)g(wrapp)q(er)h(to)e(adapt)h(the)g(comp)q(onen)o(t)g (for)g(its)g(con)o(text)g(of)g(use.)71 2315 y(Ho)o(w)o(ev)o(er,)d (there)i(is)h(a)f(di\013eren)o(t)g(w)o(a)o(y)f(to)g(attac)o(k)g(the)h (problem:)20 b(rather)13 b(than)h(adapting)g(the)g(comp)q(onen)o(ts,)0 2371 y(adapt)k(the)h(connectors.)30 b(That)18 b(is,)i(\014nd)f(w)o(a)o (ys)f(to)g(massage)f(a)i(giv)o(en)g(set)f(of)g(connectors)h(in)o(to)f (a)h(form)f(that)0 2428 y(p)q(ermits)c(the)g(existing)h(comp)q(onen)o (ts)f(to)f(in)o(terop)q(erate.)20 b(While)15 b(this)g(approac)o(h)e(ma) o(y)g(not)h(alw)o(a)o(ys)f(b)q(e)h(p)q(ossible,)0 2484 y(it)h(holds)g(promise)g(as)g(a)f(p)q(o)o(w)o(erful)h(tec)o(hnique)h (for)e(system)g(comp)q(osition:)20 b(since)c(man)o(y)e(comp)q(onen)o (ts)h(can't)f(b)q(e)0 2540 y(rewritten,)f(and)h(wrapp)q(ers)f(ma)o(y)f (not)h(b)q(e)h(su\016cien)o(tly)h(p)q(o)o(w)o(erful,)e(adapting)g(the)h (connectors)f(ma)o(y)f(b)q(e)i(the)g(b)q(est)0 2597 y(option)h(at)g (hand.)71 2653 y(Consider)j(the)f(follo)o(wing)h(simple)h(example.)28 b(Supp)q(ose)18 b(y)o(ou)g(w)o(ould)f(lik)o(e)i(to)e(add)g (capabilities)j(for)d(moni-)0 2710 y(toring)e(error)g(messages)g(that)g (are)g(comm)o(unicated)h(b)q(et)o(w)o(een)f(comp)q(onen)o(ts)h(in)g (some)f(system.)20 b(One)d(option)e(is)0 2766 y(to)f(rewrite)h(eac)o(h) h(comp)q(onen)o(t)f(to)f(send)i(a)e(cop)o(y)h(of)g(eac)o(h)g(error)f (message)h(to)f(a)h(monitoring)g(comp)q(onen)o(t)g(when)0 2823 y(ev)o(er)g(those)f(errors)g(arise.)20 b(A)15 b(somewhat)f(b)q (etter)h(plan)h(w)o(ould)f(b)q(e)h(to)e(pro)o(vide)h(a)g(set)f(of)h (comp)q(onen)o(t)g(wrapp)q(ers)962 2927 y(1)p eop %%Page: 2 2 2 1 bop 0 195 a Fc(that)18 b(observ)o(e)h(whether)f(outgoing)h (messages)f(are)g(error)g(messages,)h(and)g(forw)o(ard)e(a)i(cop)o(y)f (to)g(the)h(monitor)0 252 y(comp)q(onen)o(t.)71 308 y(Ho)o(w)o(ev)o (er,)10 b(another)h(w)o(a)o(y)g(is)g(to)g(consider)h(adapting)g(the)f (connectors)g(so)g(that)g(they)g(automatically)h(monitor)0 364 y(error)j(messages,)f(and)i(send)g(them)f(to)g(the)h(appropriate)f (en)o(tit)o(y)h(in)g(the)f(system)g(for)g(pro)q(cessing.)22 b(Since)17 b(there)0 421 y(are)g(t)o(ypically)i(man)o(y)e(few)o(er)g (connector)g(t)o(yp)q(es)h(in)g(a)f(system)g(than)h(comp)q(onen)o(t)f (t)o(yp)q(es,)h(this)g(has)f(signi\014can)o(t)0 477 y(cost)f(sa)o (vings.)24 b(But)16 b(p)q(erhaps)h(more)f(imp)q(ortan)o(tly)h(it)g (leads)g(to)f(a)g(new)h(opp)q(ortunit)o(y)g(for)f(understanding)h(not)0 534 y(only)f(w)o(a)o(ys)e(to)g(mo)q(dify)i(connectors,)f(but)g Fb(principle)n(d)g Fc(w)o(a)o(ys)f(of)h(doing)g(so.)71 590 y(In)c(this)h(pap)q(er)f(w)o(e)g(sk)o(etc)o(h)g(out)f(one)h(a)o(v)o (en)o(ue)g(for)f(making)i(the)f(notion)g(of)g(connector)g(adaptation)f (principled.)0 647 y(Sp)q(eci\014cally)l(,)k(w)o(e)d(argue)f(that)g(it) g(is)h(p)q(ossible)h(and)f(desirable)h(to)e(consider)h(classes)g(of)f (connector)h(op)q(erators:)17 b(that)0 703 y(is,)e(op)q(erators)e(that) h(tak)o(e)g(connectors)g(as)g(parameters)g(and)g(pro)q(duce)h (connectors)g(as)f(results.)20 b(By)14 b(analogy)g(to)0 760 y(functions)f(that)f(allo)o(w)g(functions)h(as)f(their)h(argumen)o (ts)e(and)h(results,)h(w)o(e)f(call)i(these)e Fb(higher-or)n(der)j(c)n (onne)n(ctors)p Fc(.)0 816 y(F)l(urther,)21 b(w)o(e)f(will)j(argue)d (that)g(there)g(are)g(go)q(o)q(d)h(reasons)f(to)g(b)q(eliev)o(e)i(that) e(higher-order)h(connectors)g(can)0 873 y(supp)q(ort)d(sound)g(seman)o (tics,)h(useful)g(algebraic)g(theories,)f(and)h(capabilities)h(for)d (implemen)o(tation)j(guidance)0 929 y(and)15 b(generation.)0 1072 y Fd(2)69 b(Connectors)23 b(as)g(\014rst)h(class)e(design)g(en)n (tities)0 1174 y Fc(An)c(imp)q(ortan)o(t)g(\014rst)f(step)h(in)h (understanding)g(ho)o(w)f(to)f(in)o(tegrate)h(comp)q(onen)o(ts,)g(is)h (to)e(p)q(ermit)i(the)f(explicit)0 1230 y(description)13 b(and)f(analysis)h(of)f(connector)f(t)o(yp)q(es)h([Sha93].)18 b(By)12 b(making)g(connector)g(abstractions)f(explicit,)k(one)0 1287 y(can)e(mak)o(e)g(principled)j(design)e(c)o(hoices)g(b)q(et)o(w)o (een)g(di\013eren)o(t)f(in)o(teraction)h(sc)o(hemes,)f(supp)q(ort)g (analysis)h(of)f(those)0 1343 y(in)o(teractions,)i(and,)g(in)h(some)f (cases,)g(automatically)h(generate)e(implemen)o(tations)j(for)d(those)h (in)o(teractions.)71 1400 y(A)i(n)o(um)o(b)q(er)g(of)f(arc)o(hitecture) i(description)g(languages)f(ha)o(v)o(e)g(therefore)f(tak)o(en)h(this)g (approac)o(h,)g(including)0 1456 y(W)l(righ)o(t)e([A)o(G94)o(],)g (UniCon)i([SDK)598 1439 y Fa(+)627 1456 y Fc(95],)e(Acme)h([GMW97)n(],) f(and)h(SADL)g([MQ94)o(].)21 b(These)16 b(languages)g(p)q(ermit)0 1512 y(the)21 b(designer)h(to)f(c)o(ho)q(ose)g(among)f(a)h(ric)o(h)h (selection)g(of)f(connector)g(t)o(yp)q(es,)h(and)g(to)e(sp)q(ecify)j (new)e(kinds)h(of)0 1569 y(connector)15 b(t)o(yp)q(es.)71 1625 y(Unfortunately)l(,)k(in)g(all)h(of)e(these)g(languages,)h (connectors)g(are)f(either)h(pro)o(vided)g(as)f(primitiv)o(es)i(\(alb)q (eit,)0 1682 y(a)c(\015exible)j(set\),)d(or)g(m)o(ust)g(b)q(e)h (de\014ned)h(from)e(scratc)o(h.)23 b(F)l(or)16 b(example,)i(in)f (UniCon,)g(while)h(one)f(can)g(add)g(new)0 1738 y(connectors)j(to)g (the)g(system,)h(the)g(task)e(of)h(doing)h(so)f(requires)h(detailed)h (kno)o(wledge)f(of)f(the)g(arc)o(hitectural)0 1795 y(to)q(ols)13 b(and)g(represen)o(tations.)19 b(In)14 b(practice,)g(this)f(mak)o(es)g (it)g(di\016cult)i(to)d(in)o(tro)q(duce)i(new)f(connector)h(t)o(yp)q (es,)f(and)0 1851 y(limits)j(our)f(abilit)o(y)h(to)f(understand)h (relationships)g(b)q(et)o(w)o(een)g(di\013eren)o(t)f(connector)g(t)o (yp)q(es.)20 b(F)l(or)14 b(example,)i(one)0 1908 y(migh)o(t)f(lik)o(e)h (to)f(in)h(what)f(con)o(texts)f(a)h(shared)g(memory)g(bu\013er)g (connector)g(is)h(equiv)m(alen)o(t)h(to)e(a)f(pip)q(e.)0 2051 y Fd(3)69 b(Higher-order)23 b(connectors)0 2152 y Fc(A)14 b(solution)g(to)g(this)g(problem)g(is)h(to)e(pro)o(vide)h(op) q(erators)f(with)h(whic)o(h)h(new)f(connectors)g(can)g(b)q(e)g(built)h (up)g(from)0 2209 y(old)h(connectors)f(using)h(w)o(ell-founded)h(op)q (erators)d(for)h(comp)q(osition.)71 2265 y(Consider)g(the)h(follo)o (wing)g(examples.)56 2342 y(1.)22 b Fb(Bund)r(ling)p Fc(:)d(A)c(set)g(of)g(pro)q(cedure)h(calls)g(is)g(bundled)h(in)o(to)e (a)g(single)i(en)o(tit)o(y)l(,)e(sometimes)g(called)i(an)e(API.)56 2405 y(2.)22 b Fb(Monitoring)p Fc(:)e(A)c(connector)g(is)g(mo)q (di\014ed)h(to)e(transmit)h(certain)g(classes)g(of)f(comm)o(unication)i (ev)o(en)o(ts)e(to)114 2462 y(a)g(monitoring)g(comp)q(onen)o(t.)56 2524 y(3.)22 b Fb(Con\014rmation)p Fc(:)k(An)19 b(RPC)g(connector)g(is) g(mo)q(di\014ed)h(to)e(p)q(ermit)i(the)f(callee)h(to)e(ask)h(for)f (con\014rmation)114 2581 y(from)c(some)h(third)h(part)o(y)e(when)i(an)f (dubious)h(op)q(eration)g(is)f(attempted.)56 2643 y(4.)22 b Fb(Se)n(curity)p Fc(:)i(An)18 b(arbitrary)f(connector)h(is)g(augmen)o (ted)g(with)g(encription,)h(or)e(p)q(ossibly)j(authen)o(tication,)114 2700 y(facilities.)56 2763 y(5.)i Fb(Compr)n(ession)p Fc(:)c(A)e(connector)f(is)g(mo)q(di\014ed)i(to)e(transparen)o(tly)f (compress)h(its)h(data)e(for)h(transmission.)962 2927 y(2)p eop %%Page: 3 3 3 2 bop 0 195 a Fd(4)69 b(Challenges)0 297 y Fc(Eac)o(h)19 b(of)f(the)h(examples)g(ab)q(o)o(v)o(e)g(has)f(the)h(form)f(of)h(pro)q (ducing)h(a)e(new)h(connector)g(t)o(yp)q(e)g(from)f(one)h(or)f(more)0 353 y(existing)e(connector)e(t)o(yp)q(es)h(\(together)f(with)h(certain) g(other)f(information\).)20 b(By)15 b(fo)q(cusing)g(on)g(the)g(problem) g(in)0 409 y(this)h(w)o(a)o(y)e(w)o(e)h(can)g(b)q(egin)i(to)d(ask)h (some)g(imp)q(ortan)o(t)g(questions:)56 503 y(1.)22 b(Notation:)c(Ho)o (w)12 b(can)h(w)o(e)g(write)g(do)o(wn)g(higher-order)g(connectors)g(so) g(w)o(e)f(can)i(understand)f(and)g(analyze)114 560 y(them?)20 b(Ho)o(w)15 b(ric)o(h)h(a)f(notation)f(is)i(needed?)22 b(Can)15 b(it)g(b)q(e)h(declarativ)o(e?)56 654 y(2.)22 b(Seman)o(tics:)c(What)10 b(kind)i(of)e(seman)o(tic)i(treatmen)o(t)d (can)i(w)o(e)g(giv)o(e)g(connector)g(op)q(erations?)19 b(What)10 b(exactly)114 710 y(is)17 b(b)q(eing)i(op)q(erated)e(on)h (and)f(ho)o(w?)27 b(Are)17 b(there)g(a)g(basic)h(set)f(of)g(com)o (binators)g(out)g(of)g(whic)o(h)h(all)g(other)114 766 y(higher-order)e(connectors)f(can)g(b)q(e)h(pro)q(duced?)56 860 y(3.)22 b(Algebra:)e(What)14 b(are)h(the)g(algebraic)h (relationships)g(b)q(et)o(w)o(een)g(di\013eren)o(t)f(connectors?)20 b(Can)15 b(these)g(rela-)114 917 y(tionships)g(form)f(the)h(basis)g(of) f(a)g(\\connector)h(calculus".)21 b(F)l(or)14 b(example,)h(one)g(migh)o (t)f(imagine)i(a)e(rule)h(of)114 973 y(idemp)q(otency)e(w)o(ould)g (apply)g(to)e(a)h(monitoring)g(higher-order)h(connector.)19 b(\(That)12 b(is,)g(adding)h(a)f(monitor)114 1030 y(to)h(a)g(monitored) g(connector)h(do)q(es)g(not)f(c)o(hange)g(it.\))20 b(Or,)13 b(one)h(migh)o(t)f(ask)g(ab)q(out)h(comm)o(utativit)o(y)f(of)g(the)114 1086 y(op)q(erators.)56 1180 y(4.)22 b(T)l(o)q(ols:)34 b(Ho)o(w)22 b(can)g(w)o(e)g(pro)o(vide)h(a)f(ric)o(h)g(set)g(of)g (higher-order)h(connectors)g(to)e(arc)o(hitectural)i(design)114 1236 y(en)o(vironmen)o(ts?)j(Can)17 b(w)o(e)f(translate)h(higher-order) h(connectors)f(in)o(to)g(co)q(de)g(mo)q(di\014cation)h(templates?)114 1293 y(Do)q(es)d(this)g(substan)o(tially)h(simplify)h(the)f(dev)o (elopmen)o(t)g(of)e(arc)o(hitectural)i(compilers?)0 1387 y(These)g(issues)h(remain)f(a)g(promising)h(a)o(v)o(en)o(ue)e(for)h (researc)o(h)g(and)g(dev)o(elopmen)o(t)g(that)f(can)i(b)q(ene\014t)g(b) q(oth)f(from)0 1443 y(go)q(o)q(d)f(formal)g(underpinnings,)i(as)e(w)o (ell)h(as)f(application)i(to)e(real)g(systems.)0 1586 y Fd(References)0 1688 y Fc([A)o(G94])77 b(Rob)q(ert)17 b(Allen)i(and)e(Da)o(vid)g(Garlan.)24 b(F)l(ormalizing)18 b(arc)o(hitectural)f(connection.)26 b(In)17 b Fb(Pr)n(o)n(c)n(e)n(e)n (dings)218 1744 y(of)i(the)g(16th)h(International)d(Confer)n(enc)n(e)g (on)i(Softwar)n(e)f(Engine)n(ering)p Fc(,)e(pages)i(71{80,)f(Sorren)o (to,)218 1801 y(Italy)l(,)f(Ma)o(y)e(1994.)0 1895 y([GMW97])21 b(Da)o(vid)14 b(Garlan,)f(Rob)q(ert)h(T.)f(Monro)q(e,)g(and)h(Da)o(vid) f(Wile.)18 b(A)o(CME:)13 b(An)g(arc)o(hitecture)h(description)218 1951 y(in)o(terc)o(hange)e(language.)i(In)e Fb(Pr)n(o)n(c)n(e)n(e)n (dings)e(of)j(CASCON'97)p Fc(,)d(On)o(tario,)i(Canada,)f(No)o(v)o(em)o (b)q(er)g(1997.)0 2045 y([MQ94])69 b(M.)18 b(Moriconi)g(and)g(X.)g (Qian.)29 b(Correctness)18 b(and)g(comp)q(osition)h(of)e(soft)o(w)o (are)g(arc)o(hitectures.)28 b(In)218 2101 y Fb(Pr)n(o)n(c)n(e)n(e)n (dings)10 b(of)i(A)o(CM)f(SIGSOFT'94:)17 b(Symp)n(osium)12 b(on)g(F)m(oundations)f(of)h(Softwar)n(e)g(Engine)n(ering)p Fc(,)218 2158 y(pages)j(164{174,)e(New)i(Orleans,)h(Louisiana,)g(Decem) o(b)q(er)g(1994.)0 2252 y([SDK)108 2235 y Fa(+)137 2252 y Fc(95])22 b(Mary)15 b(Sha)o(w,)g(Rob)q(ert)h(DeLine,)g(Daniel)h(V.)e (Klein,)i(Theo)q(dore)f(L.)f(Ross,)g(Da)o(vid)h(M.)e(Y)l(oung,)i(and) 218 2308 y(Gregory)j(Zelesnik.)36 b(Abstractions)19 b(for)h(soft)o(w)o (are)e(arc)o(hitecture)i(and)g(to)q(ols)g(to)f(supp)q(ort)h(them.)218 2364 y Fb(IEEE)h(T)m(r)n(ansactions)e(on)i(Softwar)n(e)g(Engine)n (ering,)f(Sp)n(e)n(cial)g(Issue)h(on)g(Softwar)n(e)g(A)o(r)n(chite)n (ctur)n(e)p Fc(,)218 2421 y(21\(4\):314{335,)11 b(April)17 b(1995.)0 2515 y([Sha93])73 b(Mary)13 b(Sha)o(w.)j(Pro)q(cedure)e (calls)h(are)e(the)g(assem)o(bly)h(language)g(of)f(system)g(in)o (terconnection:)20 b(Con-)218 2571 y(nectors)13 b(deserv)o(e)g (\014rst-class)g(status.)i(In)f Fb(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)i (the)h(Workshop)g(on)f(Studies)g(of)g(Softwar)n(e)218 2628 y(Design)p Fc(,)g(Ma)o(y)h(1993.)962 2927 y(3)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF