%!PS-Adobe-2.0 %%Creator: dvipsk 5.526b Copyright 1986, 1993 Radical Eye Software %%Title: Notes.dvi %%Pages: 104 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%EndComments %DVIPSCommandLine: dvips Notes %DVIPSParameters: dpi=600, compressed, comments removed %DVIPSSource: TeX output 1996.02.13:1410 %%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 39158280 55380996 1000 600 600 (Notes.dvi) @start /Fa 1 66 df<1538A21578A215F88114011403A21407EC06FEEC0C7EA21418A2 EC307F811460A214C082903801801FA2EB03005B010680010E130F010FB5FC5B90381800 0F498015075BA25B824848130312031207D81FC0497ED8FFF090387FFF80A2292A7EA92E >65 D E /Fb 4 84 df<90387FFFFE90B5FCA2010113006D5AA213015CA513035CA51307 5CA5130F5CA5131F5CA5133F5CA5137F91C7FCA4497E007F13FEB5FCA21F337EB21C>73 D<90B6FCA25DD903FEC8FC6D5AA213035CA513075CA5130F5CA5131F5CA5133F4A1430A3 1760A2137F91C812E017C01601A21603491580491407160FEE3F0016FF00011407B8FC5E A22C337DB230>76 D<90B612FEEEFFC017F0903A03FC0007FC0101EC01FEEE007F0103ED 3F805C18C0A2171F173F13075CA31880177F010F16005C17FE4C5A4C5AEE0FE0011FEC7F C091B6C7FC16F802C0C9FCA3133F5CA5137F91CAFCA55B5BA41201B512FCA332337DB234 >80 D<91390FF0018091387FFE0349B51207903A07F00FCF0090390FC001FF49C7FC013E 804980A249141E5B0001150EA31203160CA27F93C7FC7F6C7E6D7E14F86CEBFF806D13F8 15FE011F7F6D80010380D9003F7F14039138003FF0150F1507A21503820018140100385D 1230A400384A5A12784B5A127C007E4A5A007F4AC7FC6D133ED8FBC05B39F1FC03F839F0 7FFFE0D8E01F138026C003FEC8FC29377CB42B>83 D E /Fc 1 2 df<123C127E12FFA4127E123C08087A9615>1 D E /Fd 1 49 df48 D E /Fe 6 116 df<90380FFFC0017F13F848B512FE486E7E4815E04881823A1FFC 007FFC49EB0FFE1507ED01FFA26C486D7F6C48147FC97F163FA60203B5FC147F0103B6FC 131F137F90B7FC0003ECC03F48EBF800481380D81FFCC7FCEA3FF05B485A5B12FF90C8FC A56D147F127F6D14FF6C6C130301F8010F7F6CB490B612F86C90B7FC18FC6C15CF000115 076CDAFC0313F8013F9038F0007F010790C9FC363679B43E>97 D<913807FFF0023F13FE 49B61280010715C04915E04915F0137F903AFFFC003FF84801E0131F48138091C7FC485A 4848EC0FF049EC07E0484891C7FC5B123F5B127F5BA312FF90CAFCA97F127FA27F123F7F 17FC6C6CEC01FE7F6C7E6C6C14036DEC07FC6C01C0130F6C01F0EB1FF86C01FEEBFFF06D B612E06D15C0010F15806D1500010114FC6D6C13F0020790C7FC2F3678B43E>99 D101 D<923801FFC0030F13F003 3F13FC92B512FE5C4A14FF5C4A1303EC1FF89238F001FEEC3FE09238C000FC027F14005D AA003FB712F05AB812F8A36C16F0A2C7D87F80C7FCB3B3003FB7FCA2481680A36C1600A2 304A7CC93E>I110 D<903901FFF00F011F9038FE1F8090B612BF000315FF5A5A5A393FFE003F01F01307D87F C0130190C8FC5A48157FA47EEE3F00D87FC091C7FC13F0EA3FFE381FFFF06CEBFFC06C14 FE6C6E7EC615E0013F14F8010780D9003F7F02007F03071380030013C0003EED3FE0007F 151F48150F17F06D1407A37FA26D140F6D15E0161F01FCEC3FC06D14FF9026FFC00F1380 91B612005E485D013F5C6D14E0D8FC0714802778007FF8C7FC2C3677B43E>115 D E /Ff 1 111 df<000F13FC381FC3FF3931C707803861EC0301F813C0EAC1F0A213E0 3903C00780A3EC0F00EA0780A2EC1E041506D80F00130C143C15181538001EEB1C70EC1F E0000CEB07801F177D9526>110 D E /Fg 15 119 df<147F903803FFE090380FC0F890 383F007C017C017E1360497F484815E0484890381F80C0120748481481EEC1804848130F 003F15C390C7140016C74815C6007E15CE16DC16D816F8485D5E5E127CA3151F6C143F03 7713C06C903801E7E03A0F800783E13B07C07E03E3803B01FFF801FF003A007F80007C2B 227EA031>11 D<123C127E12FFA4127E123C08087A8715>58 D97 D<133FEA1FFFA25B1200A35BA21201A25BA21203A25BA21207A2EBE0F8EBE3FF390FEF07 809038FC03C001F813E0EBF001D81FE013F013C0138015F8123FA21300A248130315F012 7EA2140700FE14E05AA2EC0FC0A2EC1F80007C14005C147E003C137C003E5B381E01F038 0F07C06CB4C7FCEA00FC1D357EB321>I<14FE903807FF8090381F03C090387C01E03801 F800485A485A485A485A1401D83F0013C01403007EEB0F80ECFE00387FFFF8B5128000FC C8FCA45AA415186C1438007C147015E0003CEB01C0003EEB07806CEB1E00380F80FC3803 FFE0C690C7FC1D227DA024>101 DII109 DI<147F903803FFC0 90380FC1F090383F00F8017C137C497F485A48487F1207485A5B001F1580123F90C7FCED 3F005A127EA25D157E5A15FE5D007C5C14014A5A5D6C495A4A5A6C49C7FC380F807E3807 C1F83801FFE06C6CC8FC21227EA025>I<011F131F90397FC07FE09039E3E1E0F09039C3 E380783A01C1F7007CD981FE133CD983FC133E00035BEB03F0163FEA0707120600025B12 00010F147F167E5CA2011F14FE16FC5CA2013FEB01F8A291380003F016E0491307ED0FC0 02801380ED1F009038FFC03E9038FEE0F89038FC7FE0EC1F80000190C8FCA25BA21203A2 5BA21207A25BB57EA3283083A027>I<3903E003E0390FF81FF8391C7C3C1C0018EB703E 39383EE0FE38303FC0EB7F800070EB00FCEA607E157000E01400EAC0FEEA40FC1200A212 015BA312035BA312075BA3120F5BA3121F5B0007C8FC1F227EA023>114 DI<13 F8D803FEEB01C0D8070FEB03E0000EEB8007121C001813C00038140FEA301F0070018013 C01260013F131F00E0130000401580C65A017E133F13FE491400A25D120149137E1602ED FE0716064913FCA2160E0201130C9039F803F81C1618000090380F7C38D97C1C13709039 3FF81FE0903907E0078028227EA02C>117 D<01F0130ED803FC131FD8071EEB3F80EA0E 1F121C0038EB801F0030140F013F130700701300006014035BD8E07E14001240EA00FE49 5B000114065BA2150E0003140C5B151C15181538491330157015606D13E04A5A0001495A 6D48C7FC3800FC1EEB3FF8EB07E021227EA025>I E /Fh 10 58 df48 D<143014F01301130FEA03FD13F3380003E0A5130714C0A5130F1480A5131F1400A55B13 3EA5137E137CA413FC487EB512FCA2162C79AB23>I<147F903803FFE090380F81F89038 3C007C0170137E497F4848148049131F487E13F0A21207A36C48133FC8FCED7F00A215FE 5D14014A5A5D4A5A4A5A4AC7FC143E5C14F0495AEB07C049C8FC131E49130C495B5BEA01 C048485B48C71270001FB512F0485C5AB6FC5D212C7DAB23>I<14FF010713C090381F03 F090383801F890387000FC5BD801F8137EA215FEA3D8006013FCEB000115F8140315F0EC 07E0EC0FC0EC1F80EC7E00EB1FF814FE9038001F80EC0FC0EC07E015F0140315F8A4121C 127E127F140700FE14F0A2007CEB0FE0006014C00070EB1F806CEB3F006C137E380F81F8 3803FFE038007F801F2D7CAB23>I<1530157015F014011403A2EC07E0140F141B143B14 731463ECC7C0EB0187EB03071307130E130C9038180F801330136013E0EA01C013803903 001F0012065A121C5A123048133EB612FCA2C7EA3E00A2147EA2147CA414FC130190383F FFF05B1E2D7CAC23>I<0160130C017E13FC90387FFFF815F090B512E01580ECFE00EBC7 E001C0C7FCA212015BA5380383F8EB1FFEEB7C0F9038E007C013C090388003E01300C7EA 01F0A51403A2127812FCA2140715E05A00C0EB0FC015806C131F0060EB3F000070137E6C 13F8381E03F03807FFC0D801FEC7FC1E2D7BAB23>II<120C121E001FB512FCA24814F815F015E00070C712C0006013 01EC038048EB0700140E5CC75A5C5C495A5C130349C7FC130E131E131C133C5BA25BA212 015B1203A2485AA2120FA3485AA5123F90C8FCA2120E1E2E76AC23>I<14FE903807FF80 90381F03E090383C00F04913F84913784848137C4848133CA3157C000714787F15F83903 F001F09038FC03E09038FE07C03901FF8F806CEBDE00EB7FF8133F6D7EEB7FFFD801F313 80D803C013C0390F807FE0381F001F003EEB0FF0003C130748130314015A1400A2140115 E0A2EC03C0158000781307007CEB0F006C133C380F80F83807FFE0C690C7FC1E2D7BAB23 >II E /Fi 15 118 df<123E127FEAFF80A5EA7F 00123E0909738823>46 DI<123E127FEAFF 80A5EA7F00123EC7FCAB123E127FEAFF80A5EA7F00123E091D739C23>58 D<3803FF80000F13E04813F8487F80EB80FFEC3F80381F001FC7FC140F14FF137F0003B5 FC120F5A387FF00F130012FCA25A141F7E6C133F387F81FF90B512FC6C14FE7E000713C7 3901FE01FC1F1D7D9C23>97 D99 D<147F903801FFC0010713E05B5BEB3FCF140F9038 3E07C091C7FCA4007FB51280B612C0A36C1480D8003EC7FCB3383FFFFE487FA36C5B1B29 7EA823>102 D104 D<133813FEA5133890C7 FCA6EA7FFC487EA3127FEA003EB3387FFFFEB6FCA36C13FE182A7AA923>I108 D<397E1F01F039FF7FC7FC9038FFEFFE14FF6C80390FE1FE1FEBC1FC01C07FEB80F8A2EB 00F0AE3A7FE3FE3FE026FFF3FF13F0A3267FE3FE13E0241D819C23>I<38FF81FCEBC7FF 01DF138090B512C0A23907FE0FE0EBF807EBF00313E0A313C0AD39FFFE1FFF5CA380201D 7F9C23>I<38FF81FCEBC7FF01DF13C090B512E015F03907FE0FF8EBF8039038F001FCEB E000A249137EA2153EA5157E7F15FC7F14019038F803F89038FE0FF090B5FC15E001DF13 8001CF1300EBC3F801C0C7FCAAEAFFFEA51F2C7F9C23>112 D<397FF00FE039FFF87FF8 ECFFFC13FB6CB5FCC613F8ECC078EC800091C7FC5BA25BA35BAA387FFFFCB57EA36C5B1E 1D7E9C23>114 D<137013F8A7007FB51280B612C0A36C1480D800F8C7FCACEC01C0EC03 E0A3EBFC07140F9038FE1FC0EB7FFF158090383FFE00EB0FFCEB07F01B257EA423>116 D<39FF807FC001C013E0A400071303B01407140FEBE03F90B6FC7EA2C613F3EB3FC1201D 7F9C23>I E /Fj 90 127 df<123C127E12FFAF127EAE123C1200A7123C127E12FFA412 7E123C082F71AE27>33 D<00101320007C13F838FE01FCAAEAFC00007C13F8A900381370 161778AE27>I<90383C03C090387E07E0A7EBFE0F01FC13C0A2003FB512FC4814FEB7FC A36C14FE3901F81F80AC007FB512FEB7FCA36C14FE6C14FC3903F03F00A200075BEBE07E A73803C03C202E7DAD27>I<000F1470486C13F8383FC001EA7FE0140315F038FFF00700 F914E0A2140F15C0A2141F00FF1480387FE03F1500A26C485A381F807E380F00FEC75AA2 13015CA213035C13075CA2130F5C131F5CA2133F91C7FCA24913F090387E01F89038FE03 FC9038FC07FEA212019038F80FFF0003149F13F0A2120713E0A2000F14FF9038C007FE12 1F1380EC03FC000FEB01F86CC712F0203A7DB327>37 D<131FEB7FC0497E5A80EA03F1EB E1F8EA07E013C0A513C15C9039C3F1FF80D9E3E113C03803E7E3EBEFC101FF1480913881 F800EC01F0EA01FEEBFC0301F85B00031307D807FC5B120F381FFE0FD83FBE5BEB3F1FD8 7E1F90C7FC149F38FC0FBF14FE1307ECFC020103EB0F80EB01F8A238FE03FC387E07FE39 7F1FFF9F6CB61200149F6CEB0FFE390FFC03FC3903F000F822307EAE27>I<120FEA1FC0 123F13E0A213F0121F120F1201A4120313E01207EA0FC0A2EA3F80EA7F005A5A12F81270 0C1773AD27>II<127012F812FE7E6C7E6C7EEA0FE06C 7E12037F6C7E1200137EA27FA2EB1F80A3EB0FC0A4EB07E0ACEB0FC0A4EB1F80A3EB3F00 A2137EA25B1201485A5B1207485AEA3FC0485A48C7FC5A12F81270133A7AB327>I<130F 497EA60078EB81E000FEEB87F000FF138FEBDFBF6CB512E06C14C0000F1400000313FCC6 13F0A2000313FC000F13FF003F14C04814E039FFDFBFF0EB1F8F00FE13870078EB81E000 00EB8000A66DC7FC1C207BA627>II<120FEA3FC013E0EA7FF0A213F8A2123FA2120F120113F01203 EA07E0121FEA7FC0EAFF8013005A12700D14738927>I<007FB512F8B612FCA46C14F81E 067C9927>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A728927>I<1538157C15FCA2 140115F8140315F0140715E0140F15C0141F1580143F1500A25C147E14FE5C13015C1303 5C13075C130F5CA2131F5C133F91C7FC5B137E13FE5B12015B12035BA212075B120F5B12 1F5B123F90C8FC5A127E12FE5AA25A12781E3A7CB327>II<130E 131FA25B5BA25B5A5A127FB5FCA213BFEA7E3F1200B3AA003FB512805A15C01580A21A2F 79AE27>IIII<001FB512E04814F0A315E090C8FCACEB1FF0EBFFFC14FF158015C09038F03F E09038C00FF0EB0007003EEB03F8001C1301C7FC15FC1400A3127C12FEA2140115F84813 036C14F0007F130F9038801FE0393FE07FC06CB512806C14006C5B000113F838007FC01E 2F7CAD27>I<14FF010713C0011F13F04913F890B5FC48EB81FC3803FE0113F8EA07F0EA 0FE09038C000F8001F1400485A90C8FCA25A127EEB0FF838FE3FFE48B51280B612C015E0 9038F80FF09038E007F890388001FC90C7FC15FE48147E157F153FA3127EA3127F6C147F 157E6C6C13FE9038C001FC120F9038F007F83907F81FF06CB512E06C14C06C148090383F FE00EB0FF820307DAE27>I<1278B612FE15FFA315FE39FC0001FCEC03F8EC07F0007814 E0C7120FEC1FC01580143FEC7F00147E14FE5C13015C13035C13075CA2495AA3495AA313 3F91C7FCA55B137EA9133C20307DAE27>III<121EEA7F80A2EAFFC0 A4EA7F80A2EA1E00C7FCAC121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A20729F27>I<12 0FEA3FC0A2EA7FE0A4EA3FC0A2EA0F00C7FCAC120FEA3F8013C0127F13E0A3123FA2120F 120713C0120FA2EA3F80EA7F005A5A12F812700B2A739F27>I<15101578EC01FC140314 0FEC1FF8EC7FF0ECFFC0491380903807FE00495AEB3FF0495A48485A4890C7FCEA0FFEEA 1FF8EA7FF0EAFFC05BA27FEA7FF0EA1FF8EA0FFEEA03FF6C13C06C6C7E6D7EEB0FFC6D7E 903801FF806D13C0EC7FF0EC1FF8EC0FFC14031401EC007815101E287CAA27>I<007FB5 12FEB7FCA4003F14FEC9FCA6003FB512FEB7FCA46C14FE20127D9F27>I<1230127812FE 7E13C06C7EEA3FF8EA0FFC6C7E3801FF806C7FEB3FF06D7EEB0FFEEB03FF6D13C0903800 7FE0EC3FF8EC0FFC1407A2140FEC3FF8EC7FE0903801FFC0491300EB0FFEEB1FF8495AEB FFC0485BD807FEC7FC485AEA3FF8EA7FE0485A90C8FC5A127812301E287CAA27>IIII<007FB5FCB612C08115F87E3907E003FCEC00FE157E15 7F81A6157EA25D1403EC0FF890B55A15C015F081819038E000FE157FED3F80151FA2ED0F C0A6151F1680153FED7F004A5A007FB55AB65A5D15E06C1480222E7FAD27>I<903803F8 0E90381FFE1F90383FFFBF90B6FC5A3803FE0F3807F803497E48487E485A49137FA248C7 123FA25A127E151E150012FE5AAA7E127EA2151E007F143F7EA26C7E157F6D137E6C6C13 FE3907F001FCEBF8033903FE0FF86CB512F06C14E0013F13C06D1300EB03F820307DAE27 >I<387FFFFC14FFB612C06C80813907E00FF81407EC01FC6E7EA2157E157F811680151F A316C0150FABED1F80A3153F1600A25D15FEA24A5A4A5A140F007FB55A5DB65A6C91C7FC 14FC222E7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED078092C7FCA4EC07804A 7EA390B5FCA5EBE00FA36E5A91C8FCA4ED03C0ED07E0A7007FB6FCB7FCA36C15C0232E7F AD27>I<007FB61280B712C0A37E3907E0000FA6ED078092C7FCA4EC07804A7EA390B5FC A5EBE00FA36E5A91C8FCAC387FFF80B57EA36C5B222E7EAD27>I<903807F03890381FFC 7C90387FFFFC90B5FC5A3803FC1F3807F00F380FE007EBC003001F13011380123F90C7FC A2127EA2157892C7FC5AA8EC1FFF4A1380A3007E6D1300EC00FCA36C1301A21380121FEB C003120FEBE0073807F00F3803FC1F6CB5FC7EEB7FFE90381FFC78D907F0C7FC21307DAE 27>I<3A7FFE07FFE0B54813F0A36C486C13E03A07E0007E00AF90B512FEA59038E0007E B03A7FFE07FFE0B54813F0A36C486C13E0242E7FAD27>I<007FB512E0B612F0A36C14E0 39001F8000B3B2007FB512E0B612F0A36C14E01C2E7BAD27>I<90381FFFF84913FCA36D 13F89038001F80B3AC127CA212FEA2EC3F005C387F81FE13FF6C5B6C5B000713E0C690C7 FC1E2F7BAD27>I<387FFFC080B5FC7E5CD803F0C8FCB3AAED0780ED0FC0A7007FB6FCA2 B7FC7E1680222E7FAD27>76 DI<3A 7FF003FFE0486C4813F0A213FC007F6D13E000079038003E0013DEA313CFA3148013C714 C0A213C314E0A213C114F0A3EBC0F8A31478147CA2143C143EA2141E141F140FA3EC07BE A3EC03FEEA7FFCEAFFFE1401A26C486C5A242E7FAD27>II<007FB5FC B612E081816C803907E003FEEC00FF81ED3F80151F16C0150FA6151F1680153FED7F005D EC03FE90B55A5D5D5D92C7FC01E0C8FCADEA7FFEB5FCA36C5A222E7FAD27>I<387FFFF0 B512FE6E7E816C803907E01FF014076E7E1401811400A514015D14034A5A141F90B55A5D 5DA281EBE01F6E7E14076E7EA816F0EDF1F8A4397FFE01FBB5EBFFF08016E06C48EB7FC0 C8EA1F00252F7FAD27>82 D<90387FC0E03901FFF1F0000713FF5A5AEA3FE0EB801F387F 000F007E130712FE5A1403A3EC01E06C90C7FC127E127FEA3FC013F86CB47E6C13F86C13 FE6CEBFF80C614C0010F13E0010013F0140FEC07F81403140115FC1400127812FCA46CEB 01F8A26C130390388007F09038F01FE090B5FC15C0150000F85B38701FF81E307CAE27> I<007FB61280B712C0A439FC03F00FA60078EC0780000091C7FCB3AB90B512C04880A36C 5C222E7EAD27>I<3A7FFE01FFF8B54813FCA36C486C13F83A07E0001F80B3AB6D133F00 031500A26D5B0001147E6D13FE6C6C485A90387F87F814FF6D5B010F13C06D5BD901FEC7 FC262F80AD27>I<3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07E0007E00A46C6C5B A4EBF80100015CA46C6C485AA490387E07E0A56D485AA4011F5B149FA3010F90C7FCA5EB 07FEA46D5AA26D5A242F7FAD27>II< 393FFC1FFE387FFE3F815D383FFC1F3903F00FE001F85B1201EBFC1F00005CEBFE3F017E 90C7FCEB7F7FEB3F7E14FE6D5AA26D5AA26D5AA21303130780130F80131F80EB3F7E147F 497E017E7F141F01FC7F140FD801F87F14071203496C7E120701E07F3A7FFC0FFF8000FF 15C06D5A497E007F1580222E7EAD27>I<3A7FFC03FFE06D5A00FF15F0007F15E0497E3A 07F000FE0000035CEBF80100015CA2EBFC0300005CEBFE07017E5BA26D485AA290381F9F 80A3010F90C7FCA2EB07FEA26D5AA26D5AAF90381FFF80497FA36D5B242E7FAD27>I<00 3FB512FE4814FFA4007EC712FEEC01FCA2EC03F8EC07F0A2003CEB0FE0C7EA1FC0A2EC3F 80EC7F00A214FE5C1301495A5C1307495A5C131F495A91C7FC5B13FEA2485A4848131E15 3F485A485AA2485A485AA248C7FCB7FCA46C14FE202E7DAD27>I<387FFFF0B512F8A314 F000FCC7FCB3B3ACB512F014F8A36C13F0153A71B327>I<127812F87EA27E127E127F7E 7F121F7F120F7F12077F1203A27F12017F12007F137E137F7F80131F80130FA280130780 130380130180130080147E147F80A21580141F15C0140F15E0140715F0140315F8140115 FC1400A2157C15381E3A7CB327>I<387FFFF0B512F8A37EEA0001B3B3ACEA7FFFB5FCA3 6C13F0153A7EB327>I<131C137E3801FF80000713E0001F13F84813FC38FFE7FF13C313 0000FC133F0078131E180B79AD27>I<007FB512F8B612FCA46C14F81E067C7E27>I<3803 FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0FFF137F0003 B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612806C15C07E 000313F1C69038807F8022207C9F27>97 D III II<153F90391FC0FF 80D97FF313C048B612E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F48486C7EA6 6C6C485AEBC01FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5FC15E0 15F84814FE4880EB8001007EC7EA3F80007C140F00FC15C0481407A46C140F007C158000 7F143F6C6CEB7F009038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23337EA027> II<130F497E497EA46D 5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E1D2F7B AE27>I<143C147E14FFA4147E143C1400A73801FFFE4813FFA37EC7123FB3B0147E1238 007C13FE38FE01FC1303B512F814F06C13E06C13803807FE0018407CAE27>II<387FFF80B57EA37EEA 000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>I<397F07C01F3AFF9FF07FC09039 FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC001E0138001C01300A3EB803EB03A7FF0FF C3FF486C01E3138001F913E701F813E36C4801C313002920819F27>I<387FE07F39FFF1 FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA25BB03A7FFF83FFE0B500C713 F0A36C018313E024207F9F27>II<387FE0FFD8FFF313C090B512F0816C800003EB81FE49C67E49EB3F8049131F16C0 49130FA216E01507A6150F16C07F151F6DEB3F80157F6DEBFF009038FF83FEECFFFC5D5D 01F313C0D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B23317F9F27>I<90380FF03C9038 3FFE7E90B5FC000314FE5A380FFC1F381FE007EBC003383F800148C7FC127EA200FE147E 5AA67E007E14FEA2007F1301EA3F80EBC003381FE007380FF81F6CB5FC7E6C147E38007F FCEB0FF090C7FCAC91381FFFF8A24A13FC6E13F8A226317E9F27>I<397FFC03FC39FFFE 0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138F00F809138E002004AC7FC5CA2 91C8FCA2137EAD007FB57EB67EA36C5C22207E9F27>I<9038FFF3800007EBFFC0121F5A 5AEB803F38FC000F5AA2EC07806C90C7FCEA7F8013FC383FFFF06C13FC000713FF000114 80D8000F13C09038003FE014070078EB03F000FC1301A27E14036CEB07E0EBE01F90B512 C01580150000FB13FC38707FF01C207B9F27>I<133C137EA8007FB512F0B612F8A36C14 F0D8007EC7FCAE1518157EA415FE6D13FC1483ECFFF86D13F06D13E0010313C001001300 1F297EA827>I<397FE01FF8486C487EA3007F131F00031300B21401A21403EBFC0F6CB6 12E016F07EEB3FFE90390FF87FE024207F9F27>I<3A7FFC0FFF80486C4813C0A36C486C 13803A07C000F800EBE00100035CA2EBF00300015CA2EBF80700005CA390387C0F80A36D 48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA26D5A22207E9F27>I<3A7FFE07FFE000FF 15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC7CA4EB E79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27>I<393F FC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A017E90C7FC6D5AEB1F7E5C6D 5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F8001F87F00016D7E3803F0 033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27>I<3A7FFC0FFF80486C4813C0 A36C486C13803A07E000F800000313015D13F00001130301F85B1200A26D485A137CA290 387E0F80133EA2011F90C7FC5CA2130F149E14BE130714FC1303A25C1301A25CA213035C A213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B6C5AEA07C022317E9F27> I<001FB512FE4814FFA490380001FEEC03FCEC07F8EC0FF0001EEB1FE0C7EA3FC0EC7F80 ECFF00495A495A495AEB1FE0495A495A49C7FC485A4848131E4848133F485A485A485A48 5AB7FCA46C14FE20207E9F27>II<127812FCB3B3B3A21278063A70B327>II< 3901F003803903FC07C0000F130F381FFE1F393FFF7F80397FBFFF0038FE1FFE486C5A00 F813F0387003E01A0A7AAD27>I E /Fk 4 35 df27 D[153 153 277 131 299 32 D[153 154 277 281 299 I[<122012F0AC7EA21278A7127CA2123CA4123EA2121EA3121FA27EA27FA212 07A27FA212037FA212017FA212007FA21378137CA2133C133EA27FA26D7EA2130780A26D 7EA26D7EA26D7EA2147CA280143F806E7EA26E7E8114036E7EA26E7E81157E153E818215 0F6F7E826F7E15016F7E82167E82707E160F707E83707E707E707E177E83717E717E717E 717E717E717E187E727E727EF007E0727E727EF000FE197FF11F80F10FE0737EF101FC73 7EF23F80747EF20FF0F203F8F200FEF37F80F31FE0F30FF8F303FE983800FF80F43FE0F4 0FF8F403FE993800FFC0F53FF0F50FFE9A3803FFC09A38007FF8F61FFF0C0313F09B3800 7FFF0D0F13F80D01EBFFE0E5001FEBFFF00E0191B51280E6000F15C0F9003FE8001F1380 >154 154 128 281 299 I E /Fl 2 84 df<1A40F101F01903F107F8190F1AF0191FF1 3FE0F17FC01A8019FF4E13004E5A6118074E5A4E5A61183F4E5A4E5A96C7FC5F4D5A4D5A 60170F4D5A4D5A60177F4D5A4C90C8FC5F16034C5A4C5A5F161F4C5A4C5A5F16FF4B90C9 FC4B5A5E15074B5A4B5A5E153F4B5A4B5A93CAFC5C4A5A4A5A5D140F4A5A4A5A5D147F4A 5A4990CBFC5C1303495A495A5C131F495A495A5C13FF4890CCFC485A5B1207485A485A5B 123F485A5B48CDFCA25A5A127C455A83D63E>19 D<1210127C12FC7E7EA26C7E7F6C7E12 1F7F6C7E6C7E12037F6C7E6C7F137F806D7E6D7E130F806D7E6D7E1301806D7F6E7E143F 816E7E6E7E1407816E7E6E7E80826F7E6F7E151F826F7E6F7E1503826F7E6F7F167F8370 7E707E160F83707E707E160183707F717E173F84717E717E170784717E717E8385727E72 7E181F85727E727E180385727E721380197F1AC0F13FE0F11FF0190F1AF81907F103F019 01455A83D63E>83 D E /Fm 1 110 df<953807FFFC95B612E0050F15FE057FEDFFC004 03B812F8041F17FF047F18C04BB526FC000714F04B0280D9003F7F030F01F8C8000313FE 033F01C09239007FFF804B48CA000F7FDBFFF805037F020301E0050013F84A49727E4A90 CCEA1FFEDA1FFCF107FF4A48737F4A48737FDAFFC0736C7E4949747E4990CE6C7E4A1B0F 4948757E4948757E4948757E4A87013F8A4948767E4A1C3F49D06C7E488B491D0F484877 7EA24848777EA2491D01000F8BA24848777EA2498A003F2080A2491E3FA2007F20C0A290 D2121FA44820E0A2481F0FAD6C1F1FA26C20C0A46D1E3FA2003F2080A26D1E7FA2001F20 006D66A26C6C535AA20007676D1D03A26C6C535AA26C6C535A6D1D1F6C676D6C525A6E1C 7F6D6C525A011F9BC7FC6E636D6C515A6D6C515A6D6C515A6E1B1F6D6D505A6D6D505ADA 7FF04F485A6E6C4F5B6E6C4F90C8FC6EB4F11FFE6E01C0F07FFC6E6D4E5A020001F80503 13E0DB7FFE050F5B92263FFFC0047F5B030F01F8922603FFFEC9FC0303D9FF80023F13F8 6F02FC0107B55A6F6C90B812C0041F95CAFC040317F8DC007F16C0050F4BCBFC050015E0 060701FCCCFC7B7BBDBD74>109 D E /Fn 1 68 df<90381FC38090387FF7C048B5FC5A EA07F0380FC03F381F801FA2383F000F123E007E1307127CA200FCEB038091C7FC5AA87E A2007CEB0380EC07C0127E123E003F130FEA1F80EC1F80380FC03F3907F07F003803FFFE 6C5B38007FF0EB1FC01A267EA41F>67 D E /Fo 28 123 df12 D<387FFFC0A2B5FCA26C130012057A901A>45 D<13F0EA01F812031207A3EA03F0EA01C0 C7FCAD121C127F5AA45A12380D1D789C16>58 D<16E01501821503A21507150FA2151FA2 153B157B157315E382EC01C114031581EC0701A2140EA2141C143C143802707F15005C13 015C49B5FCA249C7FCA2130E131E131C4980167E5B13F0485AA21203D80FF014FFD8FFFC 011F13F0A22C2F7CAE35>65 D67 D<011FB612FEA2903900FE0001EE007E4A143EA20101151E171C5CA21303A25C16E00107 1301170002E05B1503130F15074A485A91B5FC5BECC01F4A6CC7FCA2133FA2DA000E13E0 A2491401030013C0017E1403178001FE14071700495C161E12015E49147CED01FC0003EC 0FF8B7FC5E2F2D7CAC30>69 D<011FB612F8A2903900FE000716014A1300177813011770 5CA21303A25C16E001071301170002E05B1503130F15074A485A91B5FC5BECC01F4A6CC7 FCA2133FA2EC000EA25B92C8FC137EA213FEA25BA21201A25BA21203B512F0A22D2D7CAC 2E>I<90381FFFFEA2D900FEC7FCA25CA21301A25CA21303A25CA21307A25CA2130FA25C A2131FA25CA2133FA291C7121CA249143C1638017E1478167001FE14F0A249EB01E0A200 011403ED07C049130FED3F80000314FFB7FC1600262D7BAC2D>76 DI97 D<13F8121FA21201A25BA21203A25BA21207A25B A2120FEBC7C0EB9FF0EBF878381FF03CEBE03EEBC01EEB801FEA3F00A2123EA2007E133F A2127CA2147F00FC137E5AA214FCA214F8130114F0EB03E0EA780714C0383C0F80381E3E 00EA0FF8EA03E0182F78AD21>II<153EEC07FEA2 EC007EA2157CA215FCA215F8A21401A215F0A21403EB07C390381FF3E0EB7C3BEBF81FEA 01F03903E00FC0EA07C0120FEA1F801580EA3F00141F5A007E1400A25C12FE48133EA2EC 7E18153848137CA214FCD878011378397C03F870A2393C0F78E0381E1E3D390FF81FC039 03E00F001F2F79AD24>III<14F8EB03FE90380F873890381F 03F8137EEB7C0113F81201EA03F015F0EA07E01403120F01C013E0A21407121F018013C0 A2140FA21580141F120F143FEC7F006C6C5AEA03C33801FFBF38007E3E1300147EA2147C A214FC00385BEAFC015C495A48485A38F01F80D87FFEC7FCEA1FF01D2C7C9D21>I<131F EA03FFA2EA003FA2133EA2137EA2137CA213FCA25BA21201147E9038F3FF809038F787C0 3903FE03E013FC13F8A2EA07F013E0A213C0000F130715C01380A2001F130F1580130014 1F481406150E003E133F143E007E141EEC7E1C007C137CEC3C3812FC157048EB1FE00070 EB07801F2F7BAD24>I<130E131FEB3F80A2EB1F00130E90C7FCA9EA03E0EA0FF0EA1E78 EA1C7C12381278127013FCEAF0F812E012E1EAC1F0120112035B12075BA2120F13831387 121F13075BEA3F0E123EEA1E1C133C1338EA0FF0EA03C0112E7AAC16>I<3B07801FC007 F03B1FE07FF01FFC3B3DF1E0F8783E3B38F3C078F01E3B78FF007DC01FD870FEEB7F80A2 D8F1FC1400D8E1F8137EA249137C00C302FC5B0003163E495BA200070101147E177C01C0 5B17FC000F0103ECF83018700180EBE00117F0001F010715F0040313E0010001C013E0EF E1C048010F1301EFE380003E91398000FF00001C6DC7123C341F7A9D3A>109 D<3907801FC0391FE07FF0393DF1E0F83938F3C0783978FF007CEA70FEA2EAF1FCEAE1F8 A25B00C314FC00035C5BA2000713015D13C01403000FECE0C015E1EB800715C1001F14C3 020F13800100138391380787005A158E003EEB03FC001CEB00F0221F7A9D28>II<90383C01F09038FF07FC3901E79E1E9038C7 BC0F000301F81380903887F00702E013C038078FC0130F1480A2D8061F130F12001400A2 49131F1680133EA2017EEB3F00A2017C133E157E01FC137C5DEBFE015D486C485AEC0F80 D9F3FEC7FCEBF0F8000390C8FCA25BA21207A25BA2120FA2EAFFFCA2222B7F9D24>I<38 07803E391FE0FF80393CF3C1C03938F781E03878FF07EA70FE13FC12F139E1F8038091C7 FC5B12C312035BA21207A25BA2120FA25BA2121FA290C8FCA25AA2123E121C1B1F7A9D1E >114 DI<131C133EA2137EA2137CA213 FCA25BA21201A2B512E0A23803F000A25BA21207A25BA2120FA25BA2121FA290C7FCA248 13C01301123E130314801307003C1300130E131E6C5AEA0FF0EA07C0132B7AA918>II121 D<010F13E0EB3F80EBFFC1EC E3C048EBF3803803E0FF9038C03F00EB801E00075BC7123814785C495A495A495A49C7FC 131E5B5B9038F001803801E003EA03C038078007390F000F00EA1FE0EBF83E383C7FFE48 6C5A38701FF838F00FF038E007C01B1F7C9D1D>I E /Fp 2 56 df<170EA3170F838417 0384170184717E1878187C84180FF007C0BA12F819FC19F8CBEA07C0F00F00183E601878 604D5A60170360170795C7FC5F170EA33E237CA147>33 D<12E0AB12F012F812F012E0AB 05197C9C00>55 D E /Fq 1 37 df36 D E /Fr 1 70 df<017FB612C0A2903903F0001F4A13 07A20107EC0380A25CA2130FA2EC800EA2011F011EC7FC151C1400153C49137CECFFF8A2 EB3E00017E13781570137CA201FCEBF01EEDE01C491300163C00011538167849147016F0 12034B5A491303ED0FC00007143FB7FC5E2A287AA72E>69 D E /Fs 2 34 df<007FBA12FEBCFCA36C19FE4805769F5D>0 D<1B1E1B1FA4881B0FA2881B07A2 881B0388757EA2757E1C7EA288767E767E767E89F403FC767E9938007F80777EF51FF000 7FBE12FEC01280A36CF5FE00D0EA1FF0F53FC0535AE201FEC7FC525AF407F065525A525A 52C8FC1C7EA264515AA2515A641B0764A21B0F64A21B1F99C9FCA41B1E693F79BC78>33 D E /Ft 3 18 df11 DI< 01F8EB03FCD803FEEB1FFFD8071F90387C0FC03B0E0F80E007E0001C9038C3C003271807 C70013F002CE1301003801DC14F8003013D8EB0FF800705B00605BA200E0491303D8C01F 15F05C12001607133F91C713E0A2160F5B017E15C0A2161F13FE491580A2163F12014915 00A25E120349147EA216FE1207495CA21501120F495CEA0380C81203A25EA21507A25EA2 150FA25EA2151FA25EA2153FA293C7FC150E2D417DAB30>17 D E /Fu 9 116 df11 D<15FE913807FF8091381F03C091383801E0146002C013F0EB0180EB030013065BA249EB 03E01338013014C0ED078049130F91381FFE004A5AA29038C01FDEEC000FA2ED0780485A A448C7120FA448EC1F00A2151E153E48143CD80D805B6D5B390CE001E039187007C0D93F FFC7FCEB0FFC90C9FC5AA45AA45A24347FA826>I14 D<3907801F80390FE07FE03918F1E0F03930F380 F89038FE0078485AA25BD8C1F013F8A21201A23903E001F0A43907C003E0A4390F8007C0 A4391F000F80A2120EC7FCEC1F00A4143EA4143C14381D267D9922>17 D<130E131F5BA2133E131C90C7FCA7EA03E0487EEA0C78EA187C1230A212605B12C0A2EA 01F0A3485AA2485AA2EBC180EA0F81A2381F0300A213066C5A131CEA07F06C5A11287DA6 17>105 D<3B07801FC007E03B0FE07FF01FF83B18F0E0F8783C3B30F1807CE03E903AFB 007D801ED860FEEB3F005B49133E00C14A133E5B1201A24848495BA35F4848485A1830EE 01F0A23C0F8003E003E060A218C0933801E180271F0007C013E3933800FF00000E6D4813 7C341B7D993B>109 D<3907801FC0390FE07FF03918F0E0F83930F1807CEBFB00D860FE 133C5B5B00C1147C5B1201A248485BA34A5AEA07C01660EC03E0A23A0F8007C0C0A2EDC1 80913803C300D81F0013C7EC01FE000EEB00F8231B7D9929>I<3807803E390FE0FF8038 18F3C13930F703C0EBFE073860FC0F13F8158039C1F0070091C7FC1201A2485AA4485AA4 485AA448C8FCA2120E1A1B7D991F>114 DI E /Fv 4 121 df<147C49B4FC903803C78090380783C090381F03E0EB1E01133E017C13 F013F8A2EA01F0120313E01207A2EA0FC01403A2EA1F80A21407003F14E0130090B5FCA2 397F000FC0127EA2141F1580127C00FC14005CA2147EA248137C14FC00785B495AA2387C 03E0383C07C0495A001C90C7FCEA1E3EEA0FF8EA03E01C307DAE21>18 D<13FC13FFEB1FC0130F6D7EA36D7EA2130180A26D7EA3147EA280A36E7EA2140F81A24A 7E143F147FECF3F0EB01E3EB03C190380781F8130F49C67E133E5B49137E485A48487F12 07485A4848EB1F8048C7FC127E48EC0FC048EC07E000701403232F7DAD29>21 D<123C127E12FFA4127E123C08087A8714>58 D<013F137C9038FFC1FF3A01C1E383803A 0380F703C0390700F60F000E13FE4813FC12180038EC0700003049C7FCA2EA200100005B A313035CA301075B5D14C000385CD87C0F130600FC140E011F130C011B131C39F03BE038 D8707113F0393FE0FFC0260F803FC7FC221F7E9D28>120 D E /Fw 6 118 df<123C123F90B612E0A44815C0168016005D5D397C0001F80078495A00F8495A 485C140F4A5AC748C7FC147E5CA2495A13035C1307A2495AA2131FA3495AA4137FA96D5A 6DC8FC232E7CAC29>55 DI89 D<2707E00FF8EB1FF000FFD97FFEEBFFFC01E1B5008313FF9028E7E07FCF C01380903BEF803FDF007F260FFE0013FC031FEC3FC0495C495CA2495CB0B53B01FFFE03 FFFCA43E1E7C9D45>109 D<3801FF8E000713FE121FEA3F00007C137E0078133E00F813 1EA27EB490C7FC13F0EBFF806C13E06C13F86C13FE7E00037FD8003F13801300143F00F0 131F140F7EA26CEB1F007E38FF807EEBFFFC00FB13F000E01380191E7D9D20>115 D117 D E /Fx 4 53 df<13E01201120712FF12F91201B3 A7487EB512C0A212217AA01E>49 DI<13FF00 0313C0380F03E0381C00F014F8003E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0 EB0FC03801FF00A2380003E0EB00F01478147C143E143F1230127812FCA2143E48137E00 60137C003813F8381E03F0380FFFC00001130018227DA01E>I<14E01301A213031307A2 130D131D13391331136113E113C1EA01811203EA07011206120C121C12181230127012E0 B6FCA2380001E0A6EB03F0EB3FFFA218227DA11E>I E /Fy 1 51 df<003FB712FEB9FCA300F0C9120FB3B3A4B9FCA4303079B43E>50 D E /Fz 10 126 df56 D58 D60 D<1402EC0F80EC3FE0ECFF F8497F903807F8FF90391FE03FC090393F800FE09039FE0003F8D803F8EB00FED80FE0EC 3F8048C8EA07C0007CED01F000F0ED007800C016182D0F80BD2E>98 D<197C953807FFC0067F13FC0507B612C0057F15FC040FB50083EBFFE093B526F0001F13 FE030F01FCC8387FFFE092B50080030313FE020F01F0CA381FFFE0DAFFFCCCEA7FFE011F 0180963803FFF02601FFF0CEEA1FFFD81FFED013F0D8FF80F503FE00F0D2121E771080BF 78>100 D<93263FFF801906031FB500F8193E0203B76CEF03F891273FFE000301F0EF1F C0902601FF809026003FFC933801FE00D91FF0C82603FF80ED1FF001FFCAD87FF8DA03FF C7FCD807F094261FFF80EBFFF8D83F80050390B6128000F8CC003F02F0C8FC00C0070301 F8C9FC770B80BD78>103 D122 DI<12F87E7E7EA26C7E6C7E7F6C7EEA0FFC6C7E6C6C7E14E06C13F86C13 FF013F13E06D13FF6DECFF807F13016D7E80140F14016E7E150FED007F291B839A25>I< EE0F80161F163F167FA2EEFF004B5A15034B5AED1FF84B5AEDFFE01403020F5B027F5B90 2603FFFEC7FC017F5BB65A5D15C092C8FC5C14F814C091C9FC13F890CAFC291B819A25> I E /FA 6 66 df<1C0C1C1E1C3E1C7E1CFCF301F8F303F0F307E0F30FC0F31F80F33F00 1B7E63505A505A505A505A505A50C7FC1A7E624F5A4F5A4F5A4F5A4F5A4FC8FC197E614E 5A4E5A4E5A4E5A4E5A4EC9FC187E604D5A4D5A4D5A4D5A4D5A4DCAFC177E5F4C5A4C5A4C 5A4C5A4C5A4CCBFC167E5E4B5A4B5A4B5A4B5A4B5A4BCCFC157E5D4A5A4A5A4A5A4A5A4A 5A4ACDFC147E5C495A495A495A495A495A49CEFC137E5B485A485A485A485A485A48CFFC 127E5A5A1260575782D453>0 D<1718173C177CA217F8A2EE01F0A2EE03E0A2EE07C0A2 EE0F80A2EE1F00A2163EA25EA25EA24B5AA24B5AA24B5AA24B5AA24BC7FCA2153EA25DA2 5DA24A5AA24A5AA24A5A140F5D4AC8FCA2143EA25CA25CA2495AA2495AA2495AA2495AA2 49C9FCA2133EA25BA25BA2485AA2485AA2485AA2485AA248CAFCA2123EA25AA25AA25A12 602E5782D42A>I<12C012F012FCB4FC13C013F813FEEBFFC014F814FF15E015FEA215E0 150014F814C049C7FC13F813C090C8FC12FC12F012C01F184E8B53>45 D<1318A4133CA3137EA313FFA3481380A34813C0A24813E0A34813F0A24813F8A24813FC A24813FEA2B6FCA2181F8CD053>54 D<126012F87E127E7E6C7E6C7E6C7E6C7E6C7E6C7E 137E7F6D7E6D7E6D7E6D7E6D7E6D7E147E806E7E6E7E6E7E6E7E6E7E6E7E157E816F7E6F 7E6F7E6F7E6F7E6F7E167E82707E707E707E707E707E707E177E83717E717E717E717E71 7E717E187E84727E727E727E727E727E727E197E85737E737E737E737E737E737E1A7E86 747E747E747E747E747E747E1B7E87F31F80F30FC0F307E0F303F0F301F8F300FC1C7E1C 3E1C1E1C0C575782D453>64 D<126012F07EA2127CA27EA27EA26C7EA26C7EA26C7EA26C 7EA26C7EA2137CA27FA27FA26D7EA26D7EA26D7EA26D7EA26D7EA2147CA280A280A26E7E 8114076E7EA26E7EA26E7EA2157CA281A281A26F7EA26F7EA26F7EA26F7EA26F7EA2167C A282A282A2EE0F80A2EE07C0A2EE03E0A2EE01F0A2EE00F8A2177CA2173C17182E5782D4 2A>I E /FB 64 123 df<9138FF807E01079038E1FF80903A1F807FC3C0D93E00EB87E0 49EBFF074913FE485A00039138FC018049017CC7FCAAB712FCA22703E0007CC7FCB3A648 6C13FE3A7FFF0FFFF0A22B2F7FAE29>11 D<14FF010713E090381F80F090383E00384913 7C4913FC485A1203491378153092C7FCA7157CB612FCA23803E000157CB3A5486C13FE3A 7FFF0FFFE0A2232F7FAE27>II<123C12 7EB4FCA21380A2127F123D1201A312031300A25A1206120E5A5A5A126009157AAD14>39 D<13031307130E131C1338137013F0EA01E013C01203EA0780A2EA0F00A2121EA35AA45A A512F8A25AAB7EA21278A57EA47EA37EA2EA0780A2EA03C0120113E0EA00F01370133813 1C130E1307130310437AB11B>I<12C07E12707E7E7E120FEA0780120313C0EA01E0A2EA 00F0A21378A3133CA4131EA5131FA2130FAB131FA2131EA5133CA41378A313F0A2EA01E0 A2EA03C013801207EA0F00120E5A5A5A5A5A10437CB11B>I43 D<123C127EB4FCA21380A2127F123D1201A312031300A2 5A1206120E5A5A5A126009157A8714>II<123C127E12FFA4127E 123C08087A8714>I48 D<130C133C137CEA03FC12FFEAFC7C 1200B3B113FE387FFFFEA2172C7AAB23>III< 140EA2141E143EA2147E14FEA2EB01BE1303143E1306130E130C131813381330136013E0 13C0EA0180120313001206120E120C5A123812305A12E0B612FCA2C7EA3E00A9147F9038 1FFFFCA21E2D7EAC23>I<1230123C003FB512F8A215F05A15E039700001C00060148014 0348EB0700140E140CC7121C5C143014705C495AA2495AA249C7FCA25B130E131EA2133E A3133C137CA413FCA913781D2E7CAC23>55 DI I<123C127E12FFA4127E123C1200AD123C127E12FFA4127E123C081D7A9C14>I<4A7E4A 7EA34A7EA24A7EA3EC1BF81419A2EC30FCA2EC70FEEC607EA24A7EA349486C7EA2010380 EC000FA201066D7EA3496D7EA2011FB57EA29038180001496D7EA349147EA201E0147F49 80A20001ED1F801203000716C0D80FF0EC3FE0D8FFFC0103B5FCA2302F7EAE35>65 D67 D69 D71 DII<90387FFFF0A201001300147EB3AD123812FEA314FE5C1278 387001F86C485A381E07E03807FF80D801FCC7FC1C2E7DAC24>I76 DIIII< B612C015FC3903F8007F0001EC0FC06F7E6F7E6F7E82150082A55E15015E4B5A4B5A4B5A 037FC7FC90B512FC15F09038F800FC153E6F7E150F826F7EA582A5170316F81503170748 6C903801FC0EB539F000FE1CEE3FF8C9EA07E0302E7DAC34>82 D<90383F80303901FFF0 703807C07C390F000EF0001E13074813034813011400127000F01470A315307EA26C1400 127E127FEA3FE013FE381FFFE06C13FC6C13FF00011480D8003F13E013039038003FF0EC 07F81401140015FC157C12C0153CA37EA215787E6C14706C14F06CEB01E039F78003C039 E3F00F0038E07FFE38C00FF01E2F7CAD27>I<007FB712F8A29039000FC003007C150000 701638A200601618A200E0161CA248160CA5C71500B3A94A7E011FB512E0A22E2D7EAC33 >I86 DI89 D91 D93 D<12035A120E5A5A1230 12701260A212E05AA312DEB4FC1380A2127FA2EA3F00121E09157BAD14>96 D<13FF000713C0380F01F0381C00F8003F137C80A2143F001E7FC7FCA4EB07FF137F3801 FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE14065AA3143F7E007E137F007FEBEF8C391F 83C7FC390FFF03F83901FC01E01F207D9E23>III<15F8141FA214011400ACEB0FE0EB7FF83801F81E3803 E0073807C003380F8001EA1F00481300123E127EA25AA9127C127EA2003E13017EEB8003 000F13073903E00EFC3A01F03CFFC038007FF090391FC0F800222F7EAD27>III<013F13F89038FFC3FE39 03E1FF1E3807807C000F140C391F003E00A2003E7FA76C133EA26C6C5A00071378380FE1 F0380CFFC0D81C3FC7FC90C8FCA3121E121F380FFFF814FF6C14C04814F0391E0007F848 130048147C12F848143CA46C147C007C14F86CEB01F06CEB03E03907E01F803901FFFE00 38003FF01F2D7E9D23>III107 DI<2607C07FEB07F03BFFC3FFC03FFC903AC783F0783F3C0FCE01F8E01F80 3B07DC00F9C00F01F8D9FF8013C04990387F000749137EA249137CB2486C01FEEB0FE03C FFFE0FFFE0FFFEA2371E7E9D3C>I<3807C0FE39FFC3FF809038C703E0390FDE01F0EA07 F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2221E7E9D27>II<3807C0FE39FFC7FF809038CF03E0390FDC01F03907F800FC49137E49133E 49133FED1F80A3ED0FC0A8151F1680A2ED3F00A26D137E6D137C5D9038FC01F09038CE07 E09038C7FF80D9C1FCC7FC01C0C8FCA9487EEAFFFEA2222B7E9D27>I<380781F838FF87 FEEB8E3FEA0F9CEA07B813B0EBF01EEBE000A45BB0487EB5FCA2181E7E9D1C>114 D<3801FE183807FFB8381E01F8EA3C00481378481338A21418A27E7EB41300EA7FF06CB4 FC6C13C06C13F0000113F838001FFC130138C0007E143EA26C131EA27EA26C133CA26C13 7838FF01F038E3FFC000C0130017207E9E1C>I<1360A413E0A312011203A21207121FB5 12F0A23803E000AF1418A714383801F03014703800F860EB3FE0EB0F80152A7FA81B>I< D807C013F800FF131FA2000F130100071300B21401A314033803E007EC0EFC3A01F81CFF C038007FF890391FE0F800221F7E9D27>I<3AFFFC01FFC0A23A0FE0007E000007147C15 380003143015706C6C1360A26C6C5BA390387C0180A26D48C7FCA2EB3F07EB1F06A2EB0F 8CA214DCEB07D8A2EB03F0A36D5AA26D5A221E7F9C25>I<3BFFFC3FFE07FFA23B0FE003 F001F801C09038E000F00007010114E0812603E00314C0A2913807F8012701F006781380 A29039F80E7C030000D90C3C1300A290397C181E06A2151F6D486C5AA2168C90391F6007 98A216D890390FC003F0A36D486C5AA36DC75A301E7F9C33>I<3AFFFC07FF80A23A0FF0 03FC000003EB01F0000114C06D485A000091C7FCEB7C06EB3E0E6D5A14B8EB0FB0EB07E0 13036D7E497E1307EB067C497EEB1C1F01387FEB700F496C7E6E7ED803C07F00076D7E39 1FE003FC3AFFF007FFC0A2221D7F9C25>I<3AFFFC01FFC0A23A0FE0007E000007147C15 38000314306D137000011460A26C6C5BA2EBFC01017C5BEB7E03013E90C7FCA2EB1F06A2 148EEB0F8CA2EB07D8A2EB03F0A36D5AA26D5AA2495AA2130391C8FC1278EAFC06A25B13 1CEA7838EA7070EA3FE0EA0F80222B7F9C25>I<003FB51280A2EB003F003C1400003813 7E00305BEA700100605B495A495A130F00005B495A49C7FC5B137E9038FC0180EA01F812 0313F03807E003EA0FC0001F1400138048485A007E5B00FE133FB6FCA2191D7E9C1F>I E /FC 4 50 df0 D<1338A50060130C00F8133E00FC137E00FE 13FE383FBBF83807FFC000011300EA007C48B4FC000713C0383FBBF838FE38FE00FC137E 00F8133E0060130C00001300A517197B9A22>3 D<13E0EA01F0EA03F8A3EA07F0A313E0 A2120F13C0A3EA1F80A21300A25A123EA35AA3127812F8A25A12100D1E7D9F13>48 D<017F157F2601FFE0903803FFC0000701F890380FF1F0260F83FC90381F0038261E00FF 013C7F001890263F8078130C4890261FC0E07F007090260FE1C07F0060EB07E3913803F7 80486DB4C7EA01806E5A157E157F81824B7E0060DAF7E0EB0300913801E3F0DBC3F85B6C 90260381FC13066C90260F00FE5B001C011E90387F803C6C017C90381FE0F82607C7F86D B45A2601FFE0010313C06C6CC86CC7FC391B7C9942>I E /FD 8 116 df<140EB3A2B812E0A3C7000EC8FCB3A22B2B7DA333>43 D48 D<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521>I<13FF000313 E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15005C143E147E 147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA0180390300030012065A001F B5FC5A485BB5FCA219267DA521>I<13FF000313E0380F01F8381C007C0030137E003C13 3E007E133FA4123CC7123E147E147C5C495AEB07E03801FF8091C7FC380001E06D7E147C 80143F801580A21238127C12FEA21500485B0078133E00705B6C5B381F01F03807FFC0C6 90C7FC19277DA521>I<1438A2147814F81301A2130313071306130C131C131813301370 136013C012011380EA03005A120E120C121C5A12305A12E0B612E0A2C7EAF800A7497E90 383FFFE0A21B277EA621>I<0018130C001F137CEBFFF85C5C1480D819FCC7FC0018C8FC A7137F3819FFE0381F81F0381E0078001C7F0018133EC7FC80A21580A21230127C12FCA3 150012F00060133E127000305B001C5B380F03E03803FFC0C648C7FC19277DA521>I<38 03F840380FFEC0EA3C07EA7803EA7001EAF000A37E6C1300EA7FC013FC6CB4FC6C138000 0713C0C613E0130738C003F0130113007EA26C13E0130100F813C038EE078038C7FF00EA 81FC141C7E9A1A>115 D E /FE 33 123 df12 DI39 D<387FFFF8A2B5FCA214F0150579941E>45 D67 D<0103B5D8F80FB512E0A390260007F8C7381FE0004B5DA2020F153F615DA2021F157F96 C7FC5DA2023F5D605DA2027F14016092C7FCA24A1403605CA249B7FC60A202FCC7120701 03150F605CA20107151F605CA2010F153F605CA2011F157F95C8FC5CA2013F5D5F5CA201 7F14015F91C7FC491403007FD9FE01B512F8B55BA243397CB83E>72 D<0107B512FCA25E9026000FF8C7FC5D5D141FA25DA2143FA25DA2147FA292C8FCA25CA2 5CA21301A25CA21303A25CA21307A25CA2130F170C4A141CA2011F153C17384A1478A201 3F157017F04A14E01601017F140317C091C71207160F49EC1F80163F4914FF0001020713 00B8FCA25E2E397BB834>76 D<0107B612F817FF1880903B000FF0003FE04BEB0FF0EF03 F8141FEF01FC5DA2023F15FEA25DA2147FEF03FC92C7FCA24A15F817074A15F0EF0FE013 01EF1FC04AEC3F80EFFE0001034A5AEE0FF091B612C04CC7FCD907F8C9FCA25CA2130FA2 5CA2131FA25CA2133FA25CA2137FA291CAFCA25BA25B1201B512FCA337397BB838>80 D<14F8EB07FE90381F871C90383E03FE137CEBF801120148486C5A485A120FEBC001001F 5CA2EA3F801403007F5C1300A21407485C5AA2140F5D48ECC1C0A2141F15831680143F15 87007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901F000F0222677 A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312015BA312035BA31207EBE0F8EBE7FE 9038EF0F80390FFC07C013F89038F003E013E0D81FC013F0A21380A2123F1300A214075A 127EA2140F12FE4814E0A2141F15C05AEC3F80A215005C147E5C387801F8007C5B383C03 E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B926>I<147F903803FFC090380FC1E0 90381F0070017E13784913383901F801F83803F003120713E0120FD81FC013F091C7FC48 5AA2127F90C8FCA35A5AA45AA3153015381578007C14F0007EEB01E0003EEB03C0EC0F80 6CEB3E00380F81F83803FFE0C690C7FC1D2677A426>II<147F903803FFC090380F C1E090383F00F0017E13785B485A485A485A120F4913F8001F14F0383F8001EC07E0EC1F 80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA21530007C14381578007E14F0003EEB01 E0EC03C06CEB0F806CEB3E00380781F83803FFE0C690C7FC1D2677A426>IIIII107 DIII<147F903803FFC090380FC1F090381F00F8017E137C5B4848 137E4848133E0007143F5B120F485AA2485A157F127F90C7FCA215FF5A4814FEA2140115 FC5AEC03F8A2EC07F015E0140F007C14C0007EEB1F80003EEB3F00147E6C13F8380F83F0 3803FFC0C648C7FC202677A42A>I<9039078007C090391FE03FF090393CF0787C903938 F8E03E9038787FC00170497EECFF00D9F0FE148013E05CEA01E113C15CA2D80003143FA2 5CA20107147FA24A1400A2010F5C5E5C4B5A131F5EEC80035E013F495A6E485A5E6E48C7 FC017F133EEC70FC90387E3FF0EC0F8001FEC9FCA25BA21201A25BA21203A25B1207B512 C0A3293580A42A>II<3903C003F0390FF0 1FFC391E783C0F381C7C703A3C3EE03F8038383FC0EB7F800078150000701300151CD8F0 7E90C7FCEAE0FE5BA2120012015BA312035BA312075BA3120F5BA3121F5BA3123F90C9FC 120E212679A423>I<14FE903807FF8090380F83C090383E00E04913F00178137001F813 F00001130313F0A215E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F6D13807F010F13 C01300143F141F140F123E127E00FE1480A348EB1F0012E06C133E00705B6C5B381E03E0 6CB45AD801FEC7FC1C267AA422>II<13F8D803FEEB01C0D8078FEB03E0390E0F8007121E121C0038140F131F0078 15C01270013F131F00F0130000E015805BD8007E133FA201FE14005B5D120149137EA215 FE120349EBFC0EA20201131E161C15F813E0163CD9F003133814070001ECF07091381EF8 F03A00F83C78E090393FF03FC090390FC00F00272679A42D>I<01F0130ED803FC133FD8 071EEB7F80EA0E1F121C123C0038143F49131F0070140FA25BD8F07E140000E08013FEC6 485B150E12015B151E0003141C5BA2153C000714385B5DA35DA24A5A140300035C6D48C7 FC0001130E3800F83CEB7FF8EB0FC0212679A426>I<01F01507D803FC903903801F80D8 071E903907C03FC0D80E1F130F121C123C0038021F131F49EC800F00701607A249133FD8 F07E168000E0ED000313FEC64849130718000001147E5B03FE5B0003160E495BA2171E00 070101141C01E05B173C1738A217781770020314F05F0003010713016D486C485A000190 391E7C07802800FC3C3E0FC7FC90393FF81FFE90390FE003F0322679A437>I<903907E0 07C090391FF81FF89039787C383C9038F03E703A01E01EE0FE3803C01F018013C0D80700 14FC481480000E1570023F1300001E91C7FC121CA2C75AA2147EA214FEA25CA21301A24A 1370A2010314F016E0001C5B007E1401010714C000FEEC0380010F1307010EEB0F003978 1CF81E9038387C3C393FF03FF03907C00FC027267CA427>I<13F0D803FCEB01C0D8071E EB03E0D80E1F1307121C123C0038140F4914C01270A249131FD8F07E148012E013FEC648 133F160012015B5D0003147E5BA215FE00075C5BA214015DA314035D14070003130FEBF0 1F3901F87FE038007FF7EB1FC7EB000F5DA2141F003F5C48133F92C7FC147E147C007E13 FC387001F8EB03E06C485A383C1F80D80FFEC8FCEA03F0233679A428>I<903903C00380 90380FF007D91FF81300496C5A017F130E9038FFFE1E9038F83FFC3901F007F849C65A49 5B1401C7485A4A5A4AC7FC141E5C5C5C495A495A495A49C8FC131E5B49131C5B4848133C 48481338491378000714F8390FF801F0391FFF07E0383E1FFFD83C0F5B00785CD8700790 C7FC38F003FC38E000F021267BA422>I E /FF 1 22 df21 D E /FG 52 122 df12 D39 D45 DI<9138 03FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF849486D7E49486D7E49 486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A24817FC49157FA3007F 17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D4913E0 A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF06D90B5 5A01011580D9003F01FCC7FC020313C0384F7BCD43>48 D<157815FC14031407141F14FF 130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>II<91380FFFC091B512FC0107ECFF80011F15E090263FF8 077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15E0A4 805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDB FFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E7013807013 C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FCA25E 18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A6CD9 F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C17FE A2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C15FC EC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A131F49 C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF 020FB712C0A53A4F7CCE43>III<121F7F7FEBFF80 91B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F4C5A 160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FFA24A 90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC06E5A 395279D043>I<913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3FE000 3FFCD97F80EB0FFE49C76C7E48488048486E1380000717C04980120F18E0177FA2121F7F A27F7F6E14FF02E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B9238FE 1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC01078101 1F81491680EBFFE748018115C048D9007F14E04848011F14F048487F48481303030014F8 484880161F4848020713FC1601824848157F173FA2171FA2170FA218F8A27F007F17F06D 151FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C01FC EBFFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<91380FFF 8091B512F8010314FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E48498048 6F7E484980824817805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA37EA25E 6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C30103028313F8 9039007FFE03EC00401500A218F05EA3D801F816E0487E486C16C0487E486D491380A218 005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807FFEC7FC 6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7ACD43>I<171F4D7E4D7EA24D7E A34C7FA24C7FA34C7FA34C7FA24C7FA34C8083047F80167E8304FE804C7E03018116F883 0303814C7E03078116E083030F814C7E031F81168083033F8293C77E4B82157E8403FE82 4B800201835D840203834B800207835D844AB87EA24A83A3DA3F80C88092C97E4A84A202 7E8202FE844A82010185A24A820103854A82010785A24A82010F855C011F717FEBFFFCB6 00F8020FB712E0A55B547BD366>65 D<932601FFFCEC01C0047FD9FFC013030307B600F8 1307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0F F94A01800203B5FC494848C9FC4901F8824949824949824949824949824990CA7E494883 A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA298C7FC5CA2B5FCAE7EA2 80A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D606C6D187EA26D6C606D 6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC 07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F93C8FC030715FCDB007F 14E0040101FCC9FC525479D261>67 DIII73 D76 DII<93380FFFC00303B6FC031F15 E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F4948 48ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F4948707FA24849 717E48864A83481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C 1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E 6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02 035B023F01E0011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E0030392C9 FCDB001F13E0565479D265>II82 D<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801 E0EB0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F82A28412 FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C 16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F15C0ED00 7F040714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0 A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0 486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<00 3FBC1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F49193F90 C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A55351 7BD05E>I89 D97 DI<913801FFF8021FEBFF8091B612F0010315FC010F9038C0 0FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7 FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E14 0F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01 001580023F49C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A49138 01FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC4948 7F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F 6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5 128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49 B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E481780 48497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA2 7F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CEC FF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387C B63D>IIII<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0 B5FCA512017EB3B3A6B612E0A51B547BD325>I108 DII<9138 01FFE0021F13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49 486D7F48496D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400 FF18C0AC007F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D 495B6D6C495BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC0201 13E03A387CB643>I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F91 3AF7F8007FFE0003D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285 187F85A4721380AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7 FC03F0EBFFFC9126FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612 F8A5414D7BB54B>I<912601FFE0EB0780021F01F8130F91B500FE131F0103ECFF80010F 9039F03FC03F499039800FE07F903A7FFE0003F04948903801F8FF4849EB00FD4849147F 4A805A4849805A4A805AA291C87E5AA35B12FFAC6C7EA37EA2806C5EA26C6D5CA26C6D5C 6C6D5C6C93B5FC6C6D5B6D6C5B6DB4EB0FEF010F9038C07FCF6D90B5120F010114FED900 3F13F80203138091C8FCB1040FB61280A5414D7CB547>I<90397FE003FEB590380FFF80 033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF1500 14EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>I<903903 FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F4980127F90C8 7EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C816C816C 81C681013F1580010F15C01300020714E0EC003F030713F015010078EC007F00F8153F16 1F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FFC00FFC6D B55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147EA414FEA21301 A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE07C0AB01 1FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B020313802A4D 7ECB34>IIII<007FB500F090387F FFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A6D6D91C8FC6D 6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E91C9FCA26E5B 6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A486C7E020F7FDA 1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E49486E7E49486E7F EBFFF0B500FE49B612C0A542357EB447>II E /FH 14 95 df<123C127E12FFA4127E123C08087A8715>46 D<1530157815F8A215F0 1401A215E01403A215C01407A21580140FA215005CA2143EA2143C147CA2147814F8A25C 1301A25C1303A25C1307A2495AA291C7FC5BA2131E133EA2133C137CA2137813F8A25B12 01A25B1203A2485AA25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A1260 1D4B7CB726>I<007FB812C0B912E0A26C17C0CCFCAC007FB812C0B912E0A26C17C03314 7C9C3C>61 D66 D70 D73 D<017FB5FCA39038003FE0EC1FC0B3B1127EB4FCA4EC3F805A0060 140000705B6C13FE6C485A380F03F03803FFC0C690C7FC20357DB227>I76 DII80 D<90381FE00390387FFC0748B5FC3907F01FCF390F8003 FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13C0EA3FF013FF6C13 F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF140302001380157F153FED1FC0 150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C05B39F1FC03F800E0 B512E0011F138026C003FEC7FC22377CB42B>83 D87 D<1320137013F8487EEA03DEEA078F380F0780381E03C0383C01E0387800F000E0 133800401310150C78B326>94 D E /FI 1 22 df21 D E /FJ 15 116 df<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED07F01503 A2ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001FE0 ED07F0ED03F81501ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612E0 16C0B712806CECFE0015F027337FB22C>66 D<02FF13700107EBE0F84913F9013F13FD49 13FFEBFF813901FE007F4848131FD807F0130F1507485A491303485A150148C7FCA25A00 7EEC00F01600A212FE5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C 130716E0D803FC131F6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F001001380 25357DB32C>I<007FB612F0B712F8A37E3903F00001A7ED00F01600A4EC01E04A7EA490 B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB612FEB7FCA36C15FC27337EB22C>69 D<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED01F8A8007FB6FCB7FCA36C15F025337D B22C>76 D<007FB512C0B612F88115FF6C15802603F00013C0153FED0FE0ED07F0A21503 16F81501A6150316F01507A2ED0FE0ED3FC015FF90B61280160015FC5D15C001F0C8FCB0 387FFF80B57EA36C5B25337EB22C>80 D<007FB612FCB712FEA43AFC007E007EA7007815 3CC71400B3AF90383FFFFCA2497F6D5BA227337EB22C>84 D<3B7FFF803FFFC0B56C4813 E0A36C496C13C03B03F00001F800B3AF6D130300015DA26D130700005D6D130F017F495A 6D6C485AECE0FF6DB5C7FC6D5B010313F86D5B9038003F802B3480B22C>I<387FFFFCB5 12FEA314FC00FCC7FCB3B3B3B512FC14FEA36C13FC17416FB92C>91 D<387FFFFCB512FEA37EC7127EB3B3B3387FFFFEB5FCA36C13FC17417DB92C>93 D<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8 127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F 14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C> 97 D<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E484813 1890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE03 FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>99 D 101 DI<397F F01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B 5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>110 D<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0007F1400 13F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE0078147F00 FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8148039701FFC 0020247AA32C>115 D E /FK 17 107 df<007FB81280B912C0A26C17803204799641>0 D<121C127FEAFF80A5EA7F00121C0909799917>I<0060150600F8150F6C151F007E153F 6C157E6C6C14FC6C6CEB01F86C6CEB03F06C6CEB07E06C6CEB0FC06C6CEB1F80017EEB3F 006D137E6D6C5A90380FC1F8903807E3F0903803F7E06DB45A6D5B6EC7FCA24A7E497F90 3803F7E0903807E3F090380FC1F890381F80FC90383F007E017E7F49EB1F804848EB0FC0 4848EB07E04848EB03F04848EB01F84848EB00FC48C8127E007E153F48151F48150F0060 1506282874A841>I15 D<007FB812F8B912FCA26C17F8CCFCAD007FB812F8B912FCA26C17F8CC FCAD007FB812F8B912FCA26C17F836267BA741>17 D20 D24 D<181EA4181F84A2851807 85727EA2727E727E85197E85F11F80F10FC0F107F0007FBA12FCBCFCA26C19FCCCEA07F0 F10FC0F11F80F13F00197E61614E5A4E5AA24E5A61180F96C7FCA260181EA4482C7BAA53 >33 D<14301478B3B3AD00C0150C00F8157C00FEEC01FCD8FF801307D83FE0EB1FF0D807 F0EB3F80D801F8EB7E00D800FC5B90383E79F090381F7BE06DB45A6D5BA26D90C7FC6D5A A26D5AA21478A31430A3264A7EB92A>35 D54 D<126012F0AD12FCA412F0AD126006207BA400>I<007FB712F8B812FCA27ECA123CB217 182E177C9D37>58 D<14034A7E4A7EA24A7EA34A7EA2EC7CF8A2ECF87CA2ECF03C010113 3EA249487EA249486C7EA249486C7EA2EC00034980A2013E6D7EA2496D7EA20178147801 F8147CA2484880A2484880A24848EC0F80A2491407000F16C0A248C8EA03E0A2003EED01 F0A2003C1500007C16F8A248167CA248163C006016182E347CB137>94 D<0060161800F0163C6C167CA2007C16F8A2003C16F0003E1501A26CED03E0A26C6CEC07 C0A2000716806D140FA26C6CEC1F00A26C6C143EA26C6C5CA201781478017C14F8A26D49 5AA26D495AA26D5CEC8007A26D6C485AA26D6C48C7FCA2903801F03EA20100133CECF87C A2EC7CF8A2EC3FF0A26E5AA36E5AA26E5A6EC8FC2E347CB137>I<14C0EB01E01303A214 C01307A21480130FA2EB1F00A2131E133EA25BA2137813F8A2485AA25B1203A25B1207A2 485AA290C7FC5AA2123EA2123C127CA2127812F8A41278127CA2123C123EA27EA27E7FA2 6C7EA212037FA212017FA26C7EA21378137CA27FA2131E131FA2EB0F80A2130714C0A213 0314E0A21301EB00C0135278BD20>104 D<126012F07EA21278127CA2123C123EA27EA2 7E7FA26C7EA212037FA26C7EA212007FA21378137CA27FA2131E131FA2EB0F80A2130714 C0A2130314E0A414C01307A21480130FA2EB1F00A2131E133EA25BA2137813F8A25B1201 A2485AA25B1207A2485AA290C7FC5AA2123EA2123C127CA2127812F8A25A126013527CBD 20>I<126012F0B3B3B3B3A91260045377BD17>I E /FL 60 123 df<913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF8049485A5A 1480484A13C04A6C1380A36F1300167E93C7FCA592383FFFC0B8FCA4000390C7FCB3ABB5 D8FC3F13FFA4303A7EB935>12 D45 D<49B4FC010F13E0017F13 FC9038FF83FE4848C67E4848EB7F804848EB3FC04848EB1FE0A2001F15F0A24848EB0FF8 A3007F15FCA500FF15FEB3007F15FCA4003F15F8A26D131F001F15F0A2000F15E06D133F 000715C06C6CEB7F806C6CEBFF003900FF83FE6DB45A011F13F0010190C7FC27387CB630 >48 D<141E143E14FE1307133FB5FCA313CFEA000FB3B3A6007FB61280A4213779B630> IIII<001C15C0D81F80 130701F8137F90B61280A216005D5D15F05D15804AC7FC14F090C9FCA8EB07FE90383FFF E090B512F89038FC07FC9038E003FFD98001138090C713C0120EC813E0157F16F0A216F8 A21206EA3F80EA7FE012FF7FA44914F0A26C4813FF90C713E0007C15C06C5B6C491380D9 C0071300390FF01FFE6CB512F8000114E06C6C1380D90FF8C7FC25387BB630>II<123C123EEA3FE090B71280A41700485D5E5E 5EA25E007CC7EA0FC000784A5A4BC7FC00F8147E48147C15FC4A5A4A5AC7485A5D140F4A 5A143F92C8FC5C147E14FE1301A2495AA31307A2130F5CA2131FA5133FA96D5A6D5A6D5A 293A7BB830>I<49B47E010F13F0013F13FC9038FE01FF3A01F8007F804848EB3FC04848 EB1FE0150F485AED07F0121FA27FA27F7F01FEEB0FE0EBFF809138E01FC06CEBF03F02FC 13809138FF7F006C14FC6C5C7E6C14FE6D7F6D14C04914E048B612F0EA07F848486C13F8 261FE01F13FC383FC007EB8001007F6D13FE90C7123F48140F48140715031501A21500A2 16FC7E6C14016D14F86C6CEB03F06D13076C6CEB0FE0D80FFEEB7FC00003B61200C614FC 013F13F00103138027387CB630>III65 DII< B87E17F817FF18C028007FF8000713F09338007FF8EF1FFE717E050313807113C0A27113 E0F07FF0A2F03FF8A219FC181FA219FEA419FFAC19FEA419FC183FA219F8187F19F0F0FF E0A24D13C04D13804D1300EF1FFEEF7FFC933807FFF0B912C095C7FC17FC178040397DB8 49>IIIIII75 DII79 DIIII<003FB91280A4D9F800EB F003D87FC09238007FC049161F007EC7150FA2007C1707A200781703A400F818E0481701 A4C892C7FCB3AE010FB7FCA43B387DB742>I86 D<007FB5D8F803B512F8A4C66C48C7D80FF0C7FC 6D6C5D6D5E6F495A6D6D49C8FC7F6D6D137E6F5B6DEBF8016D5D6F485A6E6C485A023F13 0FDA1FFF5BEE9F806E01FFC9FC805E6E5B6E5B80826F7E153F826F7F5D4B7F92B57EA2DA 01F97FDA03F17F03F07F913807E07FDA0FC07F021F6D7E4B7E4A486C7F027E8102FE6D7F 4A7F49488149486D7F0107804A6E7E49488149486E7E013F81017F83B60107B61280A441 397DB848>88 DI<003FB712FEA4913980007FFC01FCC7EAFFF801F05B01C015F04949 13E090C75A4816C0007E4A13805D007C16004B5A157F00785D4B5A5C5EC7485B5C5E5C4A 5B93C7FC5C4A5A5D14FF495B5D5B495B4B131E5B5D4990C7FC5B5C4948143E13FF5C485B 48167E4A147C484914FC5A4A13014890C7120348150F49143F4848EB01FFB8FCA42F397B B83A>I97 D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE03FF DAF00013804AEB7FC00280EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE1FF8 A217F06E133F6EEB7FE06E14C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9E00F 13E0D9C00390C7FC2F3A7EB935>I<903801FFC0010F13FC017F13FFD9FF8013802603FE 0013C048485AEA0FF8121F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F12 3FED01E06C7E15036C6CEB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101 138023257DA42A>II<903803FF80011F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0 001FEC1FE05B003FEC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E16 78121F6C6C14F86D14F000071403D801FFEB0FE06C9038C07FC06DB51200010F13FC0101 13E025257DA42C>II<161FD907FEEBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48 486C138F003F15CF4990387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7 FC3907FE07FE48B512F86D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF 8016E06C15F86C816C815A001F81393FC0000F48C8138048157F5A163FA36C157F6C1600 6D5C6C6C495AD81FF0EB07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA5 30>I<13FFB5FCA412077EAFED7FC0913803FFF8020F13FE91381F03FFDA3C0113801478 4A7E4A14C05CA25CA291C7FCB3A3B5D8FC3F13FFA4303A7DB935>II< 13FFB5FCA412077EAF92380FFFE0A4923803FC0016F0ED0FE0ED1F804BC7FC157E5DEC03 F8EC07E04A5A141FEC7FE04A7E8181A2ECCFFEEC0FFF496C7F806E7F6E7F82157F6F7E6F 7E82150F82B5D8F83F13F8A42D3A7EB932>107 D<13FFB5FCA412077EB3B3ACB512FCA4 163A7DB91B>I<01FED97FE0EB0FFC00FF902601FFFC90383FFF80020701FF90B512E0DA 1F81903983F03FF0DA3C00903887801F000749DACF007F00034914DE6D48D97FFC6D7E4A 5CA24A5CA291C75BB3A3B5D8FC1FB50083B512F0A44C257DA451>I<01FEEB7FC000FF90 3803FFF8020F13FE91381F03FFDA3C011380000713780003497E6D4814C05CA25CA291C7 FCB3A3B5D8FC3F13FFA430257DA435>I<903801FFC0010F13F8017F13FFD9FF807F3A03 FE003FE048486D7E48486D7E48486D7EA2003F81491303007F81A300FF1680A9007F1600 A3003F5D6D1307001F5DA26C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13 FC010113C029257DA430>I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDAF00113 800003496C13C00280EB7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F816 3F17F06E137F6E14E06EEBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0020390 C7FC91C9FCACB512FCA42F357EA435>I<49B4EB0780010FEBE00F013FEBF81F9039FFC0 7C3F0003EB803E3A07FE000F7F4848EB07FF121F497F123F497F127FA25B12FFAA6C7EA3 6C7E5D6C7E000F5C6C6C5B6C6C133F6CEBC0FD39007FFFF1011F13C10101130190C7FCAC 037F13FEA42F357DA432>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000 075B6C6C5A5CA29138807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>I< 90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15787E7E 6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE14 0700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F8140038 E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7FC B21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D357EB425>I< 01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF9038 7FFFFC011F13F00103138030257DA435>IIIII<003FB612C0A3D9F0031380EB800749481300003E5C003C495A007C13 3F5D0078495A14FF5D495B5BC6485B92C7FC495A131F5C495A017FEB03C0EBFFF014E048 13C05AEC80074813005A49EB0F80485A003F141F4848133F9038F001FFB7FCA322257DA4 2A>I E /FM 56 128 df44 DI<121E12 7FEAFF80A413005A123C0909788817>I48 D<15C014031407141F14FF90B5FC15803801FE3F C7FCA3147F1500A55C5CA513015CA513035CA513075CA5130F5CA5131F5CA3133F497EB6 12F0A215E01C3878B72A>II54 D56 DII<160E A2161EA2163E163F5EA25EA25D83ED037FA21506A2150C83ED183FA21530A2156083EDC0 1F14011580140303007F5C0206130F140E140C141C0218800238130714301470146091B6 FC835B913880000349C7FCA2130683491401A25BA24981A201708013F0486C4A1380D80F FC4A13C0B56C017F13FF93B6FC18FE383C7DBB3E>65 D<017FB612F017FEEFFF80010090 39C0003FE06E48EB1FF0EF07F814FF92C7EA03FC18FEA21701A25B5CA21703A218FC0103 15074A15F8EF0FF0EF1FE0EF3FC0EF7F800107913801FF004AEB07FC91B612F05F9139F8 0007FCEE00FE010FED7F804AEC3FC0171F18E018F0170F131F4A15F8A5013F16F04A141F A218E0173FEF7FC0137F4AECFF804C13004C5AEE0FFCD801FFEC3FF0B812C094C7FC16F8 37397DB83B>II< 017FB612F017FE717E0100D9C0007F6E48EB1FE0EF07F002FF6E7E92C76C7E717E8484F0 3F805B5C19C0181FA219E013035CA513074A153FA5010F17C04A157FA31980A2011F16FF 4A1600A24D5AA24D5A013F5E4A1407604D5A4D5A173F017F4B5A4A02FEC7FC4C5AEE07F8 EE1FF0D801FFECFFC0B8C8FC16FC16C03B397DB83F>I<017FB712FEA301009038C00007 6E481300183E02FF151E92C8FC180EA45B4A1506A3933801800CA20103EC03004A1500A2 5EA25E0107141E4A137E91B512FEA3ECF800010F143C4A131CA3160C041C1306011F0218 130C5CA293C71218A3013F16305C1870186018E0A2017F15014AEC03C01707171FEF7F80 D801FFEC03FFB9FC1800A237397DB839>I<017FB712FCA301009038C0000F6E481301EF 007C02FF153C92C8FC181CA45B4A150CA318181603010314064A1500A3160EA201075C4A 133C16FC91B5FCA390390FF801F89138F000781638A4011F14305CA393C8FCA2133F5CA5 137F5CA448487EB612E0A336397DB836>II<017FB500C0B61280A24C150001009026C0 000113806E486D90C7FC5F14FF92C75BA417035B4A5DA4170713034A5DA4170F13074A5D 91B7FCA302F8C7121F130F4A5DA4173F131F4A5DA4177F133F4A5DA417FF137F4A92C8FC A448486C01037FB60081B6FCA203015C41397DB83E>I<013FB512E0A25B9039007FE000 6E5AA2147F5DA514FF92C7FCA55B5CA513035CA513075CA5130F5CA5131F5CA5133F5CA4 EBFFE0007FEBFFC0A2B6FC23397EB81E>I<023FB512F0A217E09139001FFC006F5AA35E A4151FA25EA4153FA25EA4157FA25EA415FFA293C7FCA45CA25DA41403A2D81F805BEA3F C0EA7FE0A24A5AEAFFC0140F01805B6C48485A00605C0070495A6C49C8FC6C13FE380F03 F83803FFE0C690C9FC2C3B7CB82B>I<017FB512F0A3010001C0C8FC6E5AA214FF92C9FC A55B5CA513035CA513075CA5130F5CA4EF0180011FED03005CA25F1706A2013F150E4A14 0CA2171C173C1738017F15784A14F81601EE07F0161FD801FF14FFB8FC5FA231397DB834 >76 D<90267FFF80923803FFFE81610100F0FE00027FEE0DFCDA6FE0151B14EF02CFEE33 F8A2DAC7F01563A219C71301028792380187F0DA83F8EC0307A21806190F90260381FC14 0C02015F1818A218306E6C151F491660010604C05BA2037FEB0180A2943803003F130E01 0C03065CED3F805F5F197F011C6D6C5A011895C7FC5FA25FDB0FE05C0138ECE180013002 E3C75AA216E6ED07F604FC1301137001604A5C150301F05C00015DD807FCEE07FEB500E0 D9C003B512FC150116804F397DB84C>I<90267FFFC00103B51280A26F1600D9007F9138 003FF06FEC0F8072C7FCECEFF802CF1506ECC7FCA2ECC3FE180E903801C1FF0281150C02 807FA26F7E181C01036D7E020015186F7EA26F7E1838496D7E010616306F7EA26F7E6F14 70010E1580010C027F136017C0163F17E0041F13E0011C15F00118020F5B17F8160717FC EE03FD013815FF01306E5BA282A2177F137001606FC8FCA201F0811201D807FC81B512E0 17065C41397DB83E>I<017FB612E017FC17FF0100D9C00013C06E48EB1FE0EF0FF002FF EC07F892C7EA03FCA318FEA25B5CA418FC010315075C18F8EF0FF0A2EF1FE00107ED3FC0 4AEC7F00EE01FEEE0FF891B612E094C7FCD90FF8C9FC5CA5131F5CA5133F5CA5137F5CA4 48487EB67EA337397DB839>80 D<017FB6FC17F017FC01009038C003FF913A7F80007FC0 EF1FE002FF6E7E92C7FC717EA284A25B5CA44D5A13034A5D4D5A604D5A4DC7FC0107EC01 FE4AEB03F8EE3FE091B6C8FC16FC9138F8007F010FEC1FC04A6D7E707E83160383131F5C A5013F14075CA5017F17C05CA21801198048486C1503B6D880031400706C5A92C7130ECA EA3FFCEF07F03A3B7DB83D>82 DI<0007B812FCA3903AF8007FE003D80FC090383FC00049163C00 0EC7127F001E4B131C121CA212180038170C003014FF93C7FCA25A1818A2485BC7491400 A514035DA514075DA5140F5DA5141F5DA5143F5DA3147F4A7E0003B612F85AA2363977B8 3C>I86 D<011FB539C00FFFFE495D16809028007FFC000313C0DA3FF0903801FC00715A021F15E0 020F4A5A6F5C4DC7FC6E6C5B170E6E6C130C5F6E6C5B5F6EEB80E0EE81C092387FC18004 C3C8FCED3FE616EEED1FFC5E5E6F7EA26F7EA26F7E1507ED0DFF151903387F5D9238607F C015C0913801803FDA03007F5C020E6D7E140C4A6D7E5C02706D7E5C49486D7E5C49C76C 7E5B010E6E7F133E017F4A7F2603FF80497FB500F0013FEBFF80A33F397EB83E>88 D<011FB71280A39126FE0001130014E0D93F80495A91C7485A013E4A5A013C5D49141F01 704A5A4C5A01605D16FF01E04990C7FC49495A4B5AA24848495AC8485A4B5AA24B5A4B5A 4A90C8FC5D14034A5A4A5A5D141F4A5A4A5A4A5AA24990C7121849485C495AA2495A4948 1470494814605C017F15E0495A4890C85A49140100031503485A4848140748484A5A163F 484814FF48481307B8FC94C7FCA231397BB833>90 D<14FF010713E090381F01F8903878 007C01F8137E01FE7F0001801680A35BEA007090C7FCA4EC0FFF49B5FC90390FFC3F00EB 7FC03801FE00EA03F848485B485A4848137E485A007F150690C7FC15FE48ECFC0C481301 A21403007F9038077C18140E3A3F801C7E303A1FC0F83FF03A07FFE01FC0C69038000F80 27277CA52A>97 D<137FEA1FFF5BA212011200A35BA512015BA512035BEC1FC0EC7FF890 38F1E03E9038F7801F3A07FE000F8049EB07C04914E04913034914F0A2000F15F8491301 A41503121F5BA41507003F15F090C7FC16E0150F16C0151F481580ED3F005D6D137E007D 5C3979C001F039F0E007E039E0781F8026C01FFEC7FC380007F0253B78B92E>III<147F903803FFE090380F81F090383E00FC49137C4848 7F4848133F0007805B48481480121F5B123FA248C7FCA3B71200A248C9FCA65A7EA2007E 140EA25D6C14186C14386D5B6C6C485A3907E003802601F01FC7FC38007FFCEB1FE02127 7BA525>I<157F913801FFC0913807C1E091381F87F0EC3F0F147E14FCA2D901F813E0ED 07C04948C7FCA413075CA5130F5CA20007B512E0A326001FC0C7FC5CA5133F91C8FCA55B 137EA513FE5BA512015BA4487EB512F0A3243B7EBA19>IIII107 D<14FC137F14F8A213071303A314F0A5130714E0A5130F14C0A5131F1480A5133F1400A5 5B137EA513FE5BA512015BA41203B512E014C0A2163A7EB917>I<90270FC03FC0EB7F80 D803FF903AFFF001FFE048903BC3C0F80781F0913BCF007C1E00F826003FDCD97E387F6D 485C02F0D93EE0137C4AD93FC0137E4A5C047F14FE494891C75AA291C7127EA44902FE13 01017E4A5CA501FE01011403494A5CA5000102031407494A5CA4486C496C497EB500E1B5 00C3B51280A202C10283140041257EA445>I<90390FC03FC0D803FFEBFFF0489038C3C0 F89138CF007C26003FDC137E6D5A02F0133E4A133F5C5E4948137EA291C7FCA316FE5B01 7E5CA4150113FE495CA415031201495CA400031407B500E1B512C0A202C114802A257EA4 2E>II<903901F80FE0017FEB3FFC01FFEBF03F9139FBC00F8090 2607FF0013C06D48EB07E04AEB03F05C4A14F81601010715FC5CA5130F5CA41603011F15 F85CEE07F0A2EE0FE0A2013FEC1FC01780163F6EEB7F0016FE9138E001F890397F7003F0 90397E3C0FC0DA0FFFC7FCEC03F891C9FC13FEA25BA41201A25BA2487EB512E0A32E3581 A42E>I<027F1318903903FFC03890380FC0F090393F003878017EEB18F04848131C4848 130D4848130F491307120F485A16E0485AA248C7FC150F5A4815C0A4151FA21680A4153F 127E007FEC7F006C5C5C391F8003BF6C6C485A0007130E3903F03C7E3800FFF0EB1FC090 C7FC15FE5DA514015DA34A7E91B512E0A325357AA42C>I<90381F807C3903FF81FF4890 38878F80EC8E1F39003F9C3FEB1F3814709138601F00ECE0044AC7FC133F5CA291C8FCA3 5B137EA513FE5BA512015BA4487EB512F0A321257EA421>I<903803FE0C90380FFF9C90 383E01FCEBF0004848137C4848133C1538485AA215181538487E1530D807F0130013FCEB FFE06C13FC14FFC614806D13C0011F13E01300EC0FF01407003013031401A31238007814 E0A3007CEB03C0EC0780127EB4EB1F0038F3C07C38E1FFF038C03F801E277DA521>I<13 06A4130EA2130C131CA2133C137C13FC5B12031207001FB5FCB6FCA23803F8005BA51207 5BA5120F5BA5001F130C1380A4141C003F131813007E1438EB80301470380FC0E03807C1 C03803FF8038007E00183479B220>II<3A7FFFC01FFFB51280A23A07FC0007F86C48EB03E04914C06D1480000115001506A2 5D7F00005C153815306D5B137E5DA24A5AEB3F0392C7FC5C1406148C131F1498A214F013 0F5C5CA25C130791C8FCA2282579A32C>II< 3B03FFFE01FFFC17F8A227001FF8001380D907F0EBFC005E010314E06D6C485A5E6D6C48 C7FCECFE06EC7E0CEC7F186E5AEC1FE05D140F8114074A7E141FEC39F81471ECE0FC4948 7E903803807EEC007F01067F011C6D7E013C8049130FD801F880D807FC497EB46C90387F FF8092B5FCA22E247FA32C>I<90B538803FFE5A150026000FF8EB0FF06D48EB07C01780 1700010314065EA26E5B0101143816305E8001005CA24B5A1503027E90C7FC1506A25D14 7F6E5A1538153015E0141F5DA25D140F92C8FC140EA2140CA25C143814305CA2003E5B12 7E38FE018049C9FC5BEAFC0EEA701C1378EA3FE0EA0F802F3580A32C>I<90B612F0A23A 01FE000FE001F0EB1FC049148049EB3F0048485B15FE49485A4A5A4A5A0006495A4A5A5D C7123F4AC7FC14FE495A495A495A495A90391FC001801480133FEB7F0001FEEB0300485A 485A48485B485A49130E4848131E003F147E397F0001FEB65AA224247EA325>I<001C13 1C007F137F486C5A1580A2491300A2485B0038133819096FB72A>127 D E /FN 50 127 df11 DI<1403EC3FF891387FFF80D901E313C014800103133F9138 001F80ED070092C7FC80A280A2808013018080130080147F81143F8149B47E130790380F 8FF0EB3E0F496C7E13F83801F003D803E07F1207380FC0011380121FEA3F0014005A127E A212FE5D481301A35DA24813035D6C13075D127C4A5A6C91C7FC5C6C133E6C6C5A3807C0 F03801FFE0D8003FC8FC223D7DBB25>14 D17 DI<133F14C0EB07F06D7E801301A26D7EA3147FA36E7EA36E7E A36E7EA36E7EA36E7EA36E7EA26E7EA214014A7E5C4A7E91381E3F80143C14784A6C7E13 01EB03E049486C7EEB0F80EB1F00496D7E137E5B48486D7E485A485A000F6E7E485A485A 48C87E12FE167F4816800070151F293B7CB930>21 D<027FB512C00103B612E0130F5B01 7F15C09026FF81FEC7FC3901FC007E48487F485A497F484880485AA248C7FCA2127EA215 3F00FE92C7FC5AA25D157E5A5DA24A5AA24A5A007C495A5D003C495A003E013FC8FC6C13 7C380F81F83803FFE0C66CC9FC2B257DA32F>27 D<160C161C1618A316381630A3167016 60A316E05EA315015EA301F80103130FD803FE9138001F80D8070F153F000E018015C000 1C5C001814060038161F0030160FD8701F010E13070060140C1703D8E03F168000C0EB00 1C491318EA007E180001FE13384913305F000116064913700360130E5F000316184901E0 13384B133017705F0201495AD801F849485A4CC7FC160E2600FC035B017EEB0078013FEB 01E090390FE30F80902603FFFEC8FC9038003FF00206C9FCA2140E140CA3141C1418A314 381430A314701460324B7EB936>32 D<121C127FEAFF80A5EA7F00121C0909798817>58 D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A 12600A19798817>II<150C151E15 3EA2153C157CA2157815F8A215F01401A215E01403A215C01407A21580140FA215005CA2 141E143EA2143C147CA2147814F8A25C1301A25C1303A2495AA25C130FA291C7FC5BA213 1E133EA2133C137CA2137813F8A25B1201A25B1203A25B1207A25B120FA290C8FC5AA212 1E123EA2123C127CA2127812F8A25A12601F537BBD2A>I<124012F812FE6C7EEA3FE0EA 0FF8EA03FEC66C7EEB3FE0EB0FF8EB03FE903800FF80EC3FE0EC0FF8EC03FE913800FF80 ED3FE0ED0FF8ED03FE923800FF80EE3FE0EE0FF8EE03FE933800FF80EF3FC0A2EFFF8093 3803FE00EE0FF8EE3FE0EEFF80DB03FEC7FCED0FF8ED3FE0EDFF80DA03FEC8FCEC0FF8EC 3FE0ECFF80D903FEC9FCEB0FF8EB3FE0EBFF80D803FECAFCEA0FF8EA3FE0EAFF8048CBFC 12F81260323279AD41>I<1760177017F01601A21603A21607160FA24C7EA21633167316 6316C3A2ED0183A2ED0303150683150C160115181530A21560A215C014011580DA03007F A202061300140E140C5C021FB5FC5CA20260C7FC5C83495A8349C8FC1306A25BA25B1338 5B01F01680487E000716FFB56C013F13FF5EA2383C7DBB3E>65 D<0103B77E4916F018FC 903B0007F80003FE4BEB00FFF07F80020FED3FC0181F4B15E0A2141FA25DA2143F19C04B 143F1980027F157F190092C812FE4D5A4A4A5AEF0FF04AEC1FC005FFC7FC49B612FC5F02 FCC7B4FCEF3FC00103ED0FE0717E5C717E1307844A1401A2130F17035CA2131F4D5A5C4D 5A133F4D5A4A4A5A4D5A017F4BC7FC4C5A91C7EA07FC49EC3FF0B812C094C8FC16F83B39 7DB83F>I<9339FF8001C0030F13E0037F9038F80380913A01FF807E07913A07F8000F0F DA1FE0EB079FDA3F80903803BF0002FFC76CB4FCD901FC80495A4948157E495A495A4948 153E017F163C49C9FC5B1201484816385B1207485A1830121F4993C7FCA2485AA3127F5B A312FF90CCFCA41703A25F1706A26C160E170C171C5F6C7E5F001F5E6D4A5A6C6C4A5A16 076C6C020EC8FC6C6C143C6C6C5C6CB4495A90393FE00FC0010FB5C9FC010313FC903800 7FC03A3D7CBA3B>I<0103B7FC4916E018F8903B0007F80007FE4BEB00FFF03F80020FED 1FC0180F4B15E0F007F0021F1503A24B15F81801143F19FC5DA2147FA292C8FCA25C1803 5CA2130119F84A1507A2130319F04A150FA2010717E0181F4A16C0A2010FEE3F80A24AED 7F00187E011F16FE4D5A4A5D4D5A013F4B5A4D5A4A4A5A057FC7FC017F15FEEE03FC91C7 EA0FF049EC7FC0B8C8FC16FC16C03E397DB845>I<0103B812F05BA290260007F8C7123F 4B1407F003E0020F150118005DA2141FA25D19C0143FA24B1330A2027F1470190092C712 6017E05C16014A495A160F49B6FCA25F9138FC000F01031407A24A6DC8FCA201075C1803 4A130660010F160693C7FC4A150E180C011F161C18184A1538A2013F5E18F04A4A5AA201 7F15074D5A91C8123F49913803FF80B9FCA295C7FC3C397DB83D>I<0103B812E05BA290 260007F8C7123F4B140FF003C0140F18015DA2141FA25D1980143FA25D1760027F14E095 C7FC92C75AA24A1301A24A495A16070101141F91B6FC94C8FCA2903903FC001F824A130E A21307A24A130CA2010F141CA24A90C9FCA2131FA25CA2133FA25CA2137FA291CBFC497E B612C0A33B397DB835>I<0103B500F8903807FFFC5BA290260007F8C813804BEDFC0019 F0020F4B5AF003804B4AC7FC180E021F1538604B5CEF0380023F4AC8FC170E4B133C1770 027F5C4C5ADB0007C9FC160E4A5B167E4A13FE4B7E01015B92380E7F80ECFC1CED383F01 0301E07FECFDC04A486C7EECFF00D907FC6D7E5C4A130783130F707E5C1601011F81A24A 6D7EA2013F6F7EA24A143F84137F717E91C8123F496C81B60107B512C0A26146397DB847 >75 D<92391FE00380DBFFFC130002036D5A91390FE01F8F91393F0007DF027EEB01FE02 F81300495A4948147E177C4948143C495AA2011F153891C8FCA3491530A28094C7FC8080 6D7E14FEECFFE06D13FE6DEBFFC06D14F06D806D80021F7F02037FEC003F03037F150016 7F163F161FA3120C160FA2001C151F94C7FCA3003C153EA25E003E5D127E007F4A5A6D49 5A6DEB0FC0D8F9F0495AD8F0FE01FEC8FC39E03FFFF8010F13E0D8C00190C9FC313D7CBA 33>83 D<003FB56C48B51280485DA226007F80C7381FF00091C8EA07C0604993C7FCA249 1506A20001160E170C5BA20003161C17185BA20007163817305BA2000F167017605BA200 1F16E05F5BA2003F15015F5BA2007F150394C8FC90C8FCA25E4815065A160E160C161C16 1816385E127E5E4B5A6C4A5A4BC9FC6C6C131E6C6C5B6C6C13F83903F807E06CB55A6C6C 48CAFCEB0FF0393B7BB839>85 D<267FFFFC91383FFFC0B55DA2000390C83807FC006C48 ED03E06060000094C7FC5F17065FA25F6D5DA26D5D17E05F4C5AA24CC8FC6E1306A2013F 5C161C16185EA25E6E5BA2011F495A150393C9FC1506A25D6E5AA2010F5B157015605DA2 ECE18002E3CAFC14F3EB07F614FE5C5CA25C5CA26D5AA25C91CBFC3A3B7CB830>I<147E 903803FF8090390FC1C38090391F00EFC0017E137F49133F485A4848EB1F8012075B000F 143F48481400A2485A5D007F147E90C7FCA215FE485C5AA214015D48150CA21403EDF01C 16181407007C1538007E010F1330003E131F027B13706C01E113E03A0F83C0F9C03A03FF 007F80D800FCEB1F0026267DA42C>97 D<133FEA1FFFA3C67E137EA313FE5BA312015BA3 12035BA31207EBE0FCEBE3FF9038E707C0390FFE03E09038F801F001F013F8EBE000485A 15FC5BA2123F90C7FCA214015A127EA2140312FE4814F8A2140715F05AEC0FE0A215C0EC 1F80143F00781400007C137E5C383C01F86C485A380F07C06CB4C7FCEA01FC1E3B7CB924 >II<163FED1FFFA3ED007F167EA216FEA216FCA21501A216F8A21503A216F0A21507A2 027E13E0903803FF8790380FC1CF90381F00EF017EEB7FC049133F485A4848131F000715 805B000F143F485A1600485A5D127F90C7127EA215FE5A485CA21401A248ECF80CA21403 161CEDF0181407007C1538007E010F1330003E131F027B13706C01E113E03A0F83C0F9C0 3A03FF007F80D800FCEB1F00283B7DB92B>II<16F8ED03FEED0F8792381F0F80 ED3E3F167F157CA215FC1700161C4A48C7FCA414035DA414075DA20107B512F0A3902600 0FE0C7FC5DA4141F5DA4143F92C8FCA45C147EA514FE5CA413015CA4495AA45C1307A25C 121E123F387F8F80A200FF90C9FC131E12FEEA7C3CEA7878EA1FF0EA07C0294C7CBA29> III<14E0EB03F8A21307A314F0EB01C090C7FCAB13 F8EA03FEEA070F000E1380121C121812381230EA701F1260133F00E0130012C05BEA007E A213FE5B1201A25B12035BA20007131813E01438000F133013C01470EB806014E014C013 81EB838038078700EA03FEEA00F815397EB71D>I<150FED3F80A2157FA31600151C92C7 FCABEC0F80EC3FE0ECF0F0903801C0F849487E14005B130E130C131CEB1801133801305B A2EB0003A25DA21407A25DA2140FA25DA2141FA25DA2143FA292C7FCA25CA2147EA214FE A25CA21301001E5B123F387F83F0A238FF87E0495A00FE5BD87C1FC8FCEA707EEA3FF8EA 0FC0214981B722>IIIIII<90390F8003F090391FE00FFC903939F03C 1F903A70F8700F80903AE0FDE007C09038C0FF80030013E00001491303018015F05CEA03 8113015CA2D800031407A25CA20107140FA24A14E0A2010F141F17C05CEE3F80131FEE7F 004A137E16FE013F5C6E485A4B5A6E485A90397F700F80DA383FC7FC90387E1FFCEC07E0 01FEC9FCA25BA21201A25BA21203A25B1207B512C0A32C3583A42A>I<02FC13C0903803 FF0190380F838390383F01C790397E00EF8049137F485A4848133F000715005B485A001F 5C157E485AA2007F14FE90C75AA3481301485CA31403485CA314075D140F127C141F007E 495A003E137F381F01EF380F839F3903FF1F80EA00FC1300143F92C7FCA35C147EA314FE 5C130190387FFFF0A322357DA425>I<3903E001F83907F807FE390E3C1E07391C3E381F 3A183F703F800038EBE07F0030EBC0FF00705B00601500EC007E153CD8E07F90C7FCEAC0 7EA2120013FE5BA312015BA312035BA312075BA3120F5BA3121F5B0007C9FC21267EA425 >I<14FF010313C090380F80F090383E00380178131C153C4913FC0001130113E0A33903 F000F06D13007F3801FFE014FC14FF6C14806D13C0011F13E013039038003FF014071403 001E1301127FA24814E0A348EB03C012F800E0EB07800070EB0F006C133E001E13F83807 FFE0000190C7FC1E267CA427>II<13F8D803FE1438D8070F147C000E6D13FC121C1218003814011230D8701F5C12 601503EAE03F00C001005B5BD8007E1307A201FE5C5B150F1201495CA2151F120349EC80 C0A2153F1681EE0180A2ED7F0303FF130012014A5B3A00F8079F0E90397C0E0F1C90393F FC07F8903907F001F02A267EA430>I<01F8EB03C0D803FEEB07E0D8070F130F000E0180 13F0121C12180038140700301403D8701F130112601500D8E03F14E000C090C7FC5BEA00 7E16C013FE5B1501000115805B150316001203495B1506150E150C151C151815385D0001 5C6D485A6C6C485AD97E0FC7FCEB1FFEEB07F024267EA428>I<01F816F0D803FE9138E0 01F8D8070F903801F003000ED9800314FC121C12180038020713010030EDE000D8701F16 7C1260030F143CD8E03F163800C001005B5BD8007E131F183001FE5C5B033F1470000117 604991C7FCA218E000034A14C049137E17011880170318005F03FE1306170E000101015C 01F801BF5B3B00FC039F8070903A7E0F0FC0E0903A1FFC03FFC0902703F0007FC7FC3626 7EA43B>I<903907E001F090391FF807FC9039783E0E0F9039E01F1C1FD801C09038383F 803A03800FF07F0100EBE0FF5A000E4A1300000C157E021F133C001C4AC7FC1218A2C712 3FA292C8FCA25CA2147EA214FEA24A130CA20101141C001E1518003F5BD87F8114380183 5C00FF1560010714E03AFE0E7C01C0D87C1C495A2778383E0FC7FC391FF00FFC3907C003 F029267EA42F>I<13F8D803FE1470D8070F14F8000EEB8001121C121800381403003015 F0EA701F1260013F130700E0010013E012C05BD8007E130F16C013FE5B151F000115805B A2153F000315005BA25D157EA315FE5D1401000113033800F80790387C1FF8EB3FF9EB0F E1EB00035DA2000E1307D83F805B007F495AA24A5A92C7FCEB003E007C5B00705B6C485A 381E07C06CB4C8FCEA01FC25367EA429>II<1504151E151FA2ED0F8016C0ED07E0007FB612F0B712F8A26C15F0C8EA1F C0ED3F00157E5D5D5D1560251271BB2A>126 D E /FO 88 128 df<1506150FA24B7EA2 4B7EA24B7EA2EDDFF0A29138018FF8A291380307FCA291380603FEA291380E01FF140CDA 1C007F141802386D7E143002706D7E146002E06D7E5C01016E7E5C01036E7E91C7FC496E 7E1306010E6E7E130C011C6E7F131801386F7E133001706F7E136001E06F7E5B170F4848 82170748C97F17030006831701488383481880001FB9FC4818C0A24818E0A2BA12F0A23C 3C7CBB45>1 D11 DIII<133C137EA213FE1201EA03FC13F0EA07E0EA0FC0EA1F80EA 1E005A5A5A12C00F0F6FB92A>19 D<121C127FEAFF80A8EA7F00AB123EAB121CABC7FCA8 121C127FEAFF80A5EA7F00121C093C79BB17>33 D<001C131C007F137F39FF80FF80A26D 13C0A3007F137F001C131C00001300A40001130101801380A20003130301001300485B00 061306000E130E485B485B485B006013601A197DB92A>I<141FEC7FC0903801F0E09038 03C0600107137090380F803090381F00381518A25BA2133E133F15381530A215705D5D14 0190381F838092CAFC1487148E02DC49B51280EB0FF85C4A9039003FF8000107ED0FC06E 5D71C7FC6E140E010F150CD91DFC141C01391518D970FE143801E015302601C07F1470D8 03805D00076D6C5BD80F00EBC00148011F5C4890380FE003003E6E48C8FC007E903807F8 060203130E00FE6E5A6E6C5A1400ED7F706C4B13036F5A6F7E6C6C6D6C5B7013066C6C49 6C130E6DD979FE5B281FF001F07F133C3C07F80FE03FC0F86CB539800FFFF0C69026FE00 0313C0D91FF0D9007FC7FC393E7DBB41>38 D<121C127FEAFF80A213C0A3127F121C1200 A412011380A2120313005A1206120E5A5A5A12600A1979B917>I<146014E0EB01C0EB03 80EB0700130E131E5B5BA25B485AA2485AA212075B120F90C7FCA25A121EA2123EA35AA6 5AB2127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A27F7F130E7FEB03 80EB01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA2 1378A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A314 00A25B131EA2133E133C137C1378A25BA2485A485AA2485A48C7FC120E5A5A5A5A5A1352 7CBD20>I<15301578B3A6007FB812F8B912FCA26C17F8C80078C8FCB3A6153036367BAF 41>43 D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E 5A5A5A12600A19798817>II<121C127FEAFF80A5EA7F00121C09 09798817>I48 DIII< 1538A2157815F8A2140114031407A2140F141F141B14331473146314C313011483EB0303 13071306130C131C131813301370136013C01201EA038013005A120E120C5A123812305A 12E0B712F8A3C73803F800AB4A7E0103B512F8A325397EB82A>I<0006140CD80780133C 9038F003F890B5FC5D5D158092C7FC14FC38067FE090C9FCABEB07F8EB3FFE9038780F80 3907E007E090388003F0496C7E12066E7EC87EA28181A21680A4123E127F487EA490C713 00485C12E000605C12700030495A00385C6C1303001E495A6C6C485A3907E03F800001B5 C7FC38007FFCEB1FE0213A7CB72A>II<1230123812 3E003FB612E0A316C05A168016000070C712060060140E5D151800E01438485C5D5DC712 014A5A92C7FC5C140E140C141C5CA25CA214F0495AA21303A25C1307A2130FA3495AA313 3FA5137FA96DC8FC131E233B7BB82A>III<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479 A317>I<121C127FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201A412 031300A25A1206A2120E5A121812385A1260093479A317>I<007FB812F8B912FCA3CCFC AEB912FCA36C17F836167B9F41>61 D63 D<1538A3157CA315FEA34A7EA34A6C7EA202077FEC06 3FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC6003A202C07F1501A2 D901807F81A249C77F167FA20106810107B6FCA24981010CC7121FA2496E7EA3496E7EA3 496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3373C7DBB3E>65 DI<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03 FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F48 48150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A312 3F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE0 5C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D 7BBA3C>III< B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED01 80A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612 C0A32F397DB836>III I<013FB512E0A39039001FFC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B 0070131F6C5C6C495A6C49C7FC380781FC3801FFF038007F80233B7DB82B>III< B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9C3 F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C13 30A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED1F D8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045397DB84C >I IIIIII<003FB812E0A3D9C003EB001F273E0001FE130348EE 01F00078160000701770A300601730A400E01738481718A4C71600B3B0913807FF80011F B612E0A335397DB83C>IIII89 D91 D<3901800180000313033907000700000E130E485B001813180038133800301330007013 7000601360A200E013E0485BA400CE13CE39FF80FF806D13C0A3007F137FA2393F803F80 390E000E001A1974B92A>II<1310 1338137C13FE487E3803C780380783C0380F01E0381E00F04813780070131C48130E0040 1304170D77B92A>I96 DII< EB03FC90381FFF8090387E03E03901F80070484813F83907E001FC380FC003A2EA1F8012 3F90380001F848EB00F01500A2127E12FEAA127E127FA26C14067F001F140E6D130C000F 141C6C6C13386C6C13706C6C13E039007C07C090381FFF00EB07F81F277DA525>III<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213FCA23901F803 C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>IIIIIII<27 03F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F83803F3D0FF3800FC7 001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B5 00C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0F F3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A329257EA42E> II<3903F01FE000FFEB7FF89038F1E07E9039F3801F803A07F7000FC0 D803FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03 F816F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FC AB487EB512C0A328357EA42E>II<3807E01F00FFEB7FC09038E1E3E09038E387F038 0FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512F0A31C257EA421 >II<1318 A51338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC0115 80EB7C03017E13006D5AEB0FFEEB01F81A347FB220>IIIIII<003FB512FCA2EB8003D8 3E0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F800060137F150014FE495AA2C6 485A495AA2495A495A495AA290387F000613FEA2485A485A0007140E5B4848130C484813 1CA24848133C48C7127C48EB03FC90B5FCA21F247EA325>III<001C131C007F137F39FF80FF80A5397F007F00001C131C190978 B72A>127 D E /FP 37 122 df45 D49 D<92380FFFE04AB67E020F15F0027F15FE49B87E4917E001 0F17F8013F8349D9C01F14FF9027FFFC0001814801E06D6C80480180021F804890C86C80 48486F8048486F8001FF6F804801C06E8002F081486D18806E816E18C0B5821BE06E81A3 7214F0A56C5BA36C5B6C5B6C5B000313C0C690C9FC90CA15E060A34E14C0A21B80601B00 60626295B55A5F624D5C624D5C4D91C7FC614D5B4D13F04D5B6194B55A4C49C8FC4C5B4C 5B4C13E04C5B604C90C9FCEE7FFC4C5A4B5B4B5B4B0180EC0FF04B90C8FC4B5A4B5A4B48 ED1FE0EDFFE04A5B4A5B4A90C9FC4A48163F4A5ADA3FF017C05D4A48167F4A5A4990CA12 FFD903FC160749BAFC5B4919805B5B90BBFC5A5A5A5A481A005A5ABCFCA462A44C7176F0 61>I<137F3801FFC0000713F0487F487F487F487FA2B61280A96C1400A26C5B6C5B6C5B 6C5B000113C06C6CC7FC90C8FCB3A9137F3801FFC0000713F0487F487F487F487FA2B612 80A96C1400A26C5B6C5B6C5B6C5B000113C06C6CC7FC194D72CC36>58 D65 DI<96267FFFE01670063FB6ED01F80503B700F01403053F 04FC14074CB96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F 03C09039003FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA 121F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A8549 4A85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E 075DA2F703F0489BC7FCA45DA2B6FCB27EA281A47EA2F703F06FF307F87EA36C80A21F0F 7E6F1CF07E6F1B1F7E20E06C6E1B3F816DF57FC06D80F7FF806D806D6E4F13006D6E616D 525A826D6E4F5A6D6E4F5A6E6D6C4E5A021F6EF0FFE06E6E4D5B6E02F84D5B6E02FE050F 90C7FC02006E6CEE3FFE6F02F0EEFFFC031F02FE03035B6FDAFFC0021F13E0030303FF01 03B55A030093B7C8FC043F18FC040718F0040118C0DC003F94C9FC050316F8DD003F1580 DE007F01F0CAFC757A75F78C>I73 D76 DI<95380FFFFC0503B612F0053F15FF0403B812F0040F17FC047F EFFF804BBA12E003079126FE001F14F8031F02E0010114FE4B91C8003F7F92B500FC030F 14C04A02F0030380020702C0030014F84A4A707F4A91CA6C7F4A01FC050F7F4A49718091 B5487180494A71804989494A71804C8449894991CC6C7F4949737FA24949738090B589A2 484A7380A2484A7380A2488B4B85A2488BA3484A7380A3488BA4484A741480A7B61EC0B1 6C2080A36F97B6FCA46C2000A46C6E4F5CA36C676F61A26C67A26C6E4F5CA26C676F616C 676F616D666F616D9BC7FC6D6E4E5BA26D6E95B55A6D6E4D5C6D656D6E4D5C6D6E4D5C6E 6D4D5C6E6D4D91C8FC6E6D4D5B6E02C093B55A6E6E4B5C6E02F803075C02006E4B14C06F D9FF80027F5C031F02E049B548C9FC030702FE011F14F8030191B812E06F6C1880041F4D CAFC040317F0DC003F93CBFC050315F0DD000F01FCCCFC7A7A75F791>79 DI<95380FFFFC0503B612 F0053F15FF0403B812F0040F17FC047FEFFF804BBA12E003079126FE001F14F8031F02E0 010114FE4B91C8003F7F92B500FC030F14C04A02F0030380020702C0030014F84A4A707F 4A91CA6C7F4A01FC050F7F4A49718091B5487180494A71804989494A71804C844991CC6C 7F49894949737FA24949738090B5894B85488B4B85488BA2484A7380A3484A7380A3488B A24B86488BA4482080A292CE7EA5B61EC0B16C2080A46F62A36C2000A46C676F97B5FCA2 6C67A26F616C67A26C676F616C676F616CDE7FC05F953803FFF06D6D020F01FC4A5C063F 13FF6D6D4A6E4991C7FC6D6D91B66C495B9638C07FE06D91298001FE000FF0495B6D6E48 486D6C90B55A6D4C6D6C5D6D02E0496D6C485C6DDAF0070200495C6E01F849DA7F075C6E 01FC058F91C8FC6E01FEDC3F9F5B6ED9FF8793B55A6E02C7606EDAF7F06E5C020002FF18 C06F6E4A5C031F6E49B548C9FC030702FF011F14F8030192B712E06F6C1880041F4DC912 80040371ED03E0DC003F83050303F37FDD000FEBFC0395C86E14078977140F756D141F0B FF14FFF6E0079BB612C087A4761680A3210088A2765DA2765DA2765D6888765D68765D0B 3F49C7FC775B0B0713F00B0013807B9975F791>II<001FC012F8A7481FFC03F0C76C91C7120F92C8EF007F02F81B1F02E01B0702801B 0191C984491D7F491D3F491D1FA2491D0FA2491D07007F1FFEA2491D03A4491D01A700FF 1FFF90CA85A6CB1A00B3B3B3AD4ABC12C0A8787479F387>84 D<92383FFFF80207B612E0 027F15FC49B87E010717E0011F83499026F0007F13FC4948C7000F7F90B502036D7E486E 6D806F6D80727F486E6E7F8486727FA28684A26C5C72806C5C6D90C8FC6D5AEB0FF8EB03 E090CAFCA70507B6FC041FB7FC0303B8FC157F0203B9FC021FECFE0391B612800103ECF8 00010F14C04991C7FC017F13FC90B512F04814C0485C4891C8FC485B5A485B5C5A5CA2B5 FC5CA360A36E5DA26C5F6E5D187E6C6D846E4A48806C6D4A4814FC6C6ED90FF0ECFFFC6C 02E090263FE07F14FE00019139FC03FFC06C91B6487E013F4B487E010F4B1307010303F0 1301D9003F0280D9003F13FC020101F8CBFC57507ACE5E>97 D<903801FFFCB6FCA8C67E 131F7FB3ADF0FFFC050FEBFFE0057F14FE0403B77E040F16E0043F16F84CD9007F13FE92 26FDFFF001077F92B500C001018094C86C13E004FC6F7F4C6F7F04E06F7F4C6F7F5E747F 93C915804B7014C0A27414E0A21DF087A21DF8A31DFC87A41DFEAF1DFCA4631DF8A31DF0 98B5FC1DE0A25014C0A26F1980501400705D705F704B5B505B704B5B04FC4B5BDBE7FE92 B55A9226C3FF8001035C038101E0011F49C7FC9226807FFC90B55A4B6CB712F04A010F16 C04A010393C8FC4A010015F84A023F14C090C9000301F0C9FC5F797AF76C>I<93383FFF F00307B612C0033F15F84AB712FE0207707E021F17E0027F8391B526FC001F7F010302C0 01037F4991C7487F49495C495B4901F04A7F5B90B55A485CA2485C4891C8FCA248715B5C 48715B725B4A6F5B489438007FC0071FC7FC96C8FC5AA25CA3B5FCAF7E80A47E80A27E80 6CF11F80F23FC06C6E167FA26C6EEEFF80816C606C6E17006D6D4B5A6D6D15076D6D4B5A 6D6D6C4A5A6D02E0EC7FF06D02F849485A01009126FF801F5B6E91B6C7FC021F5E020716 F8020116E06E6C1580030702FCC8FCDB003F13804A507ACE56>I<97380FFFE00607B6FC A8F00003190086B3AD93383FFF800307B512F8033F14FF4AB712C0020716F0021F16FC02 7F9039FE007FFE91B500F0EB0FFF01030280010190B5FC4949C87E494981494981494981 49498190B548814884484A8192CAFC5AA2485BA25A5C5AA35A5CA4B5FCAF7EA4807EA37E A2807EA26C7F616C6E5D6C606C80616D6D5D6D6D5D6D6D92B67E6D6D4A15FC010301FF02 07EDFFFE6D02C0EB3FFE6D6C9039FC01FFF86E90B65A020F16C002031600DA007F14FC03 0F14E09226007FFEC749C7FC5F797AF76C>I<93387FFF80030FB512FC037FECFF804AB7 12E0020716F8021F16FE027FD9F8077F49B5D8C000804991C7003F13E04901FC020F7F49 496E7F49498049496E7F49496E7F90B55A48727E92C914804884485B1BC048841BE0485B A27313F05AA25C5AA21BF885A2B5FCA391BAFCA41BF002F8CCFCA67EA3807EA47E806CF1 03F0F207F86C7F1A0F6C6E17F06C191F6F17E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13 806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC6D02F8ECFFF86D9126FFC00F5B023F91B65A 020F178002034CC7FC020016F8031F15E0030392C8FCDB000F13E04D507BCE58>III<903801 FFFCB6FCA8C67E131F7FB3AD95380FFFE095B512FE05036E7E050F15E0053F15F84D8193 2701FFF01F7F4CD900077FDC07FC6D80DC0FF06D80DC1FC07F4C48824CC8FC047E6F7F5E EDFDF85E03FF707F5EA25EA25EA293C9FCA45DB3B3A6B8D8E003B81280A8617879F76C> II<903801FFFCB6FCA8C67E131F7FB3AE0603B612FEA8DE001F01F8C7FC07 0713804F90C8FCF13FFE4F5AF1FFF04E5B4E5B4E5B061F90C9FC4E5AF07FF84E5A4D5B05 075B4D5B4D48CAFC4D5A4D5A4D5A04035B4C7F4C7F5E4C7F4C7F03FDB6FC92B7FC858585 A204F98004E0804C804C7E4C6C7F4B6D7F4B824B7F7180718086837180727F8684727F72 808784728072808784737F737F87854F14C0B8D88007B712F0A85C787AF766>107 D<903801FFFCB6FCA8C67E131F7FB3B3B3B3B3ABB812C0A82A7879F735>I<902601FFF8 91260FFFE093383FFF80B692B500FE0303B512F805036E6C020F14FE050F03E0023F6E7E 053F03F891B712E04D6F4982932701FFF01F6D0107D9C07F7F4CD900076D90270FFC001F 7FDC07FC6D9126801FF06D7FC66CDA0FF06D9126C03FC06D7F011FDA1FC06D4BC77E6D4A 48DCE0FE834CC8ECE1FC047E6FD9F1F86E804CEFF3F0DBF9F8EFF7E04C6003FB7001FF6F 804C6015FF4C95C9FCA24C5FA293C95CA44B60B3B3A6B8D8E003B8D8800FB712FEA8974E 79CDA2>I<902601FFF891380FFFE0B692B512FE05036E7E050F15E0053F15F84D819327 01FFF01F7F4CD900077FDC07FC6D80C66CDA0FF06D80011FDA1FC07F6D4A48824CC8FC04 7E6F7F5EEDF9F85E03FB707F5E15FF5EA25EA293C9FCA45DB3B3A6B8D8E003B81280A861 4E79CD6C>I<93381FFFE00303B6FC031F15E092B712FC020316FF020F17C0023FD9FC00 14F091B500C0010F13FC4991C700037F4901FC02007F010F496F13C049496F7F49496F7F 4B8149496F7F90B5C96C7F4886A24849707F481B80A248497014C0A2481BE0A348497113 F0A3481BF8A5B51AFCAE6C1BF8A46C1BF06E94B5FCA36C1BE0A26C6D4C14C0A26C1B806E 5E6C1B006C6E4B5BA26C6E4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D92B55A6D01FF02035C 6D02C0010F91C7FC010002FC90B512FC6E90B75A021F17E00207178002014CC8FCDA003F 15F0030392C9FCDB001F13E056507BCE61>I<902601FFFCEC7FFEB6020FB512F0057F14 FE4CB712C0040716F0041F82047F16FE93B5C66C7F92B500F0010F14C0C66C0380010380 011F4AC76C806D4A6E8004F06F7F4C6F7F4C6F7F4C8193C915804B7014C0861DE0A27414 F0A27414F8A47513FCA57513FEAF5113FCA598B512F8A31DF0621DE0621DC0621D806F5E 701800704B5B505B704B5B7092B55A04FC4A5C704A5C706C010F5C05E0013F49C7FC9227 FE7FFC01B55A70B712F0040F16C0040393C8FC040015F8053F14C0050301F0C9FC94CCFC B3A6B812E0A85F6F7ACD6C>I<902601FFF8EB07FEB691383FFFC094B512F00403804C14 FE4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEBF9FC 16F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5AF001E095C8FCA25D A65DB3B3A2B812F8A8434E7ACD4F>114 D<912603FFFCEB0780027F9039FFE00FC00103 B6EAF83F010FEDFEFF013F92B5FC49EB000F2601FFF01300480180143F4890C8120F4848 814848814981123F83485A187FA212FF6D163FA37F7F6DEE1F8002C092C7FC14F014FEEC FFF06CECFF8016FEEEFFE06C16FC6C16FF18C06C836C17F86C836C836C83013F17806D17 C0010717E0010117F0EB003F020716F8EC001F030015FC1607EE007F051F13FE1707007E 82B482836D167FA2183F7F181FA27F19FC7FA26D163F6D17F86D167F19F06D16FF6E4A13 E002E04A13C06E4A138002FE023F1300913AFFC003FFFE01E790B65A01C316F0018016C0 26FE003F92C7FC48010714F80070D9007F90C8FC3F507ACE4C>I<15FFA75CA55CA45CA2 5CA25CA25CA25C91B5FCA25B5B5B131F5B90B9FC120FBAFCA6D8000791C9FCB3B3A3F01F E0AE183F7014C07F187F7014806D16FF826D4B13006E6D485AEEFE0F6E90B55A020F5D6E 5D020115C06E6C5C031F49C7FC030113F03B6E7CEC4B>IIII121 D E /FQ 18 120 df<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F 000B0B6C8A33>46 D<167816F8ED01FCA21503A2ED07F8A2ED0FF0A2ED1FE0A216C0153F A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA25D143FA24A5AA24AC7FCA2 495AA25C1303A2495AA2495AA25C131FA2495AA2495AA249C8FCA25B1201A2485AA2485A A2485AA25B121FA2485AA2485AA248C9FCA25AA2127CA2264D7AC433>I<121FEA3F80EA 7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCB3A3121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F 80EA1F000B2B6CAA33>58 D97 D99 D101 D103 DI<1570EC01FCA2EC03FEA3EC01FCA2EC 00701500AA90383FFFFC4913FE90B5FCA27F7F90C7FCB3B3A9140115FCA21218007EEB03 F81407B414F0140F9038803FE090B512C06C14806C14006C5B6C13F8000113E01F557BBD 33>106 DI<383FFFFC487FB5FCA27E7EC7 FCB3B3AD003FB612F84815FCB712FEA26C15FC6C15F8273D7ABC33>I<02FC137E3B7FC3 FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07130301FC01FE7F 9039F803FC01A201F013F8A401E013F0B3A53C7FFE0FFF07FF80B548018F13C0A46C486C 01071380322C80AB33>I112 D114 D<90381FFE0F90B5EA8F80000314FF 120F5A5AEBF007387F800190C7FC00FE147F5A153FA37E007FEC1F0001C090C7FCEA3FF8 EBFFC06C13FF6C14E0000314F8C680011F13FF01001480020713C0EC007FED1FE0007C14 0F00FEEC07F01503A27EA27F15076D14E06D130F6DEB3FC09038FE01FF90B61280160000 FD5C00FC14F8D8F83F13E0D8780790C7FC242E79AC33>III<3B7FFF8007FF F8B56C4813FC6E5AA24A7E6C496C13F8D80FC0C7EA0FC06D141F00071680A56D143F0003 1600A3EC0FC0EC1FE0A23A01F83FF07EA3EC7FF8147CA20000157C9039FCFCFCFCA3ECF8 7CA2017C5C017D137EECF03EA2017F133FA26D486C5AA3ECC00F90390F8007C02E2B7EAA 33>119 D E /FR 2 42 df<140C141C1438147014E0EB01C01303EB0780EB0F00A2131E 5BA25B13F85B12015B1203A2485AA3485AA348C7FCA35AA2123EA2127EA4127CA312FCB3 A2127CA3127EA4123EA2123FA27EA36C7EA36C7EA36C7EA212017F12007F13787FA27F7F A2EB0780EB03C01301EB00E014701438141C140C166476CA26>40 D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378137C133C133E131E131FA2EB0F 80A3EB07C0A3EB03E0A314F0A21301A214F8A41300A314FCB3A214F8A31301A414F0A213 03A214E0A3EB07C0A3EB0F80A3EB1F00A2131E133E133C137C13785BA2485A485AA2485A 48C7FC120E5A5A5A5A5A16647BCA26>I E /FS 53 123 df12 D<157F913803FFC0020F7F4A7F91383FE1F891387F80789138FF007C 49143C495A163E4948131EA3130FA3163E163C167C16786E13F84B5A4B5A15075E6D6C48 5A4BC70003B512E0153E15FC6D5B5D4B91390007C0004B5E6D6D150F4FC7FC6D6D151E49 173E496D5D491778496D15F890261FBFFE4A5AD93F3F5E9026FE1FFF1403D801FC6E495A 00036D5E48486C6D130F000F6F49C8FC001F6D6D133E48486C6D133C187C007F6D6D5B6F 6C485A00FF6E6C485A6FEB87C06F13CFEFFF806F91C9FC6D6D5B6F49EC01E06F7F6C6CEC 3FFF706D13036C6C4A6DEB07C06C6C91B500F0130FDA800702FCEB1F806C9026E03FF890 39FF80FF00000390B5D8F03FEBFFFE6CDBC00F5C6C6CDA00035C011F01F8D9007F13E001 030180020790C7FC4B477BC557>38 D40 D<12F07E127E7E6C7E6C7E6C7E7F6C7E6C7E12007F137F80133F806D7EA2 6D7EA26D7EA2801303A2801301A280A27F1580A4EC7FC0A615E0A2143FAE147FA215C0A6 ECFF80A415005BA25CA213035CA213075CA2495AA2495AA2495A5C137F91C7FC13FE5B12 01485A485A5B485A485A48C8FC127E12F85A1B647ACA2C>I44 DI< EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F0F788E1F>I49 DII<163FA25E5E5D5DA25D5D5D5D A25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14F8EB01F0EB03E013 0714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E5A12FCB91280A5C8 000F90C7FCAC027FB61280A531417DC038>I<0007150301E0143F01FFEB07FF91B6FC5E 5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5FC01C714C001DF14F090 39FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F6C4815E0C8FC6F13F0A317F8 A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC74813C0123E003F4A1380D8 1FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480010F01FCC7FC010113C0 2D427BC038>I<4AB47E021F13F0027F13FC49B6FC01079038807F8090390FFC001FD93F F014C04948137F4948EBFFE048495A5A1400485A120FA248486D13C0EE7F80EE1E00003F 92C7FCA25B127FA2EC07FC91381FFF8000FF017F13E091B512F89039F9F01FFC9039FBC0 07FE9039FF8003FF17804A6C13C05B6F13E0A24915F0A317F85BA4127FA5123FA217F07F 121FA2000F4A13E0A26C6C15C06D4913806C018014006C6D485A6C9038E01FFC6DB55A01 1F5C010714C0010191C7FC9038003FF02D427BC038>I<121E121F13FC90B712FEA45A17 FC17F817F017E017C0A2481680007EC8EA3F00007C157E5E00785D15014B5A00F84A5A48 4A5A5E151FC848C7FC157E5DA24A5A14035D14074A5AA2141F5D143FA2147F5D14FFA25B A35B92C8FCA35BA55BAA6D5A6D5A6D5A2F447AC238>I57 D65 D67 DI70 DIII<0107B7FCA590C7001F1300B3B3A9EA1FE0487E48 7EA2487EA44B5AA26C48495A495C6C4813FF6C48485B260FFC0713C06CB65A6C4AC7FCC6 6C13F8010F138030457DC33A>I76 DI80 D82 DI<003FBA12E0A5 9026FE000FEB8003D87FE09338003FF049171F90C71607A2007E1803007C1801A3007818 00A400F819F8481978A5C81700B3B3A20107B8FCA545437CC24E>I87 D<903801FFE0011F13FE017F6D7E48B612E03A03FE007F F84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6 FC1307013F13F19038FFFC01000313E0000F1380381FFE00485A5B127F5B12FF5BA35DA2 6D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007 D90FFCC9FC322F7DAD36>97 D99 DIIIII<137C48B4 FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFFA5 12037EB3AFB6FCA518467CC520>I107 DI<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002816E4880 913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D01 3C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC 5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F0003 90399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>I< EC1FFC49B512C0010714F0011F14FC90397FF80FFF9026FFC0017F48496C7F4848C7EA3F E000078248486E7E49140F001F82A2003F82491407007F82A400FF1780AA007F1700A46C 6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF80F90C7FC 6DB55A010F14F8010114C09026001FFCC8FC312F7DAD38>I<90397FC00FF8B590B57E02 C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15C04A6D 13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E491380 6E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FCADB67E A536407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE0003 13BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC 2E>114 D<90391FFC038090B51287000314FF120F381FF003383FC00049133F48C7121F 127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C8000 03806C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15C0 6C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC23 2F7CAD2C>IIIIIII<001FB71280A49026FC001F130001E0495A5B4949 5A90C7485A48495B123E4A5B4A5B003C495BA24A90C7FC4A5A4A5AC7FC4A5A495B495BA2 495B499038800780491300A2495A4948130F49481400A2485B48495B485BA248495B4890 C75A48485C15034848EB1FFEB7FCA4292C7DAB32>I E /FT 15 118 df<92BB12FC5CA280DB007F90C8120F704815007048EE3FF8043F170F1C074D1603A216 7F1C014D17F0A216FFA25FA25D1DE05FA25DA25F1C034B19C0A294CAFC1AE04B4B6C1480 5090C7FC5EA2031F1503625E1907153F624C140F191F157F077FC9FC4C5C180F92B8FC61 A34A9038E0000FF001FC4C1300A25C19785E19F85C6193C8FCA24A1501615DA2021F5E95 CBFC5DA2143FA25DA2147FA25DA214FFA25DA25BA25DA25BA25DA25B5B013F13F0007FB6 12FEB7FCA35E6276E15C>70 D<037FB612F892B7FCA219F0DB003FEBE0007090C7FC705A 161FA25FA2163FA25FA2167FA25FA216FFA25FA25DA25FA25DA25FA25DA294C8FCA25DA2 5EA2151FA25EA2153FA25EA2157FA25EA215FFA25EA25CA25EA25CA25EA25CA293C9FCA2 5CA25DA2141FA25DA2143FA25DA2147FA25DA214FFA25DA25BA25DA25B5B011F13F0007F B612F882B75A7E3D6277E136>73 D<92B912C01BFC4AF0FF806E85DB007F90C7000713F0 70489138007FF87048ED1FFC043F707E757E4D6F13807513C0167F7513E05F1DF016FFA2 5FA24B19F8A25FA24B19F0635FA25D5113E094C9FCA24B4D13C0A24C1880511300151F51 5A4C5F515A153F515A4C4C5A501380037F4C90C7FCF20FFE4C4B5AF27FF003FF923803FF C0073F90C8FC93B712FC1AE097C9FC4A01E0CCFC5EA35C5EA35C93CDFCA35C5DA3141F5D A3143F5DA3147F5DA314FF5DA35B5DA35B5DA25B5B013F13E0007FB612F0B7FCA25E5D62 76E15F>80 D97 D<4BB4FC031F13E0037F13F8913901FF01FE913907F8003FDA1FE0EB1F804A48130F DAFF80EB07C04948C712034948140F0107153F4948147F494814FF49485B137F495A5C48 17804890C81300177C4893C7FC5B120F5B121FA2485AA3127F5BA312FF5BA45BA75B1703 18806DED07C0007FEE0F80EF1F005F003F167E6D5D001F4B5A000FED07E06D4A5A6C6CEC 3F806C6C02FEC7FC6C6CEB07F83A007F807FE06DB51280010F01FCC8FC010013C0324070 BE41>99 D<193F95387FFF80050FB5FC4D1400A283EF000F725A18031807A261A2180FA2 61A2181FA261A2183FA261A2187FA261A218FFA261A25FA296C7FCA2923807F003ED3FFE 92B55B913903FC0F8391390FF007C791391FC003E7913A7F8001F7FC4AC7FC494814FF49 48147F49485D010F153F495A495A604948141F01FF153F5C485F5A91C8127F5A60485A17 FFA248485EA25E123F4993C8FCA25E127F495DA21607A2495D12FF160F19704D13F05B16 1F007F170105F05BA2043F1303047F5C17E0003F15FF4B4A5A5D6C6CD907DF130FDB0F9F 91C7FC000FDA1F1F5B6C6C013E141E6C6CD97C0F133E6D48486C6C5A2800FE07E0035B90 3B7FFFC001FFF0011F90C75BD903F8EC1F80416571E348>I103 D<150FED3F80ED7FC015FF5CA416806E1300153C92C7FCB3A3EB01F8EB07FE90381FFF80 90383E0FC001F87F13F048486C7EEA03C00007130F1380EA0F00A2121E141F123E123C14 3F007C5C0078137F5DA200F813FF00705CC7FC5B92C7FCA25B5C13075CA2130F5CA2131F 5CA2133F5C137F9138C001C0150313FFEC800716805A1400ED0F005A495B151EA2495BA2 5D5D000113015D0000EB07C06D485AD93FFFC7FCEB1FFCEB07F0226074DE2B>105 D<15FC903801FFFE133F15FCA3EB003FEC1FF8140F141FA215F0A2143FA215E0A2147FA2 15C0A214FFA21580A25BA21500A25BA25CA21307A25CA2130FA25CA2131FA25CA2133FA2 5CA2137FA25CA213FFA25CA25AA291C7FCA25AA25BA21207A25BA2120FA25BA2121FA25B A2123FEC01C0EBE003A2007F1307158013C0A2140F00FF140013805C141EA2007F133E14 3C147C1478003F13F8381F81F0EBC3E03807FFC06C5BD8007EC7FC1F6573E324>108 DI I<4BB4FC031F13E0037F13F8913901FF01FE913907F8007FDA1FE0EB3F804A48EB1FC0DA FF8014E04948C7EA0FF04948EC07F81307494815FC49481403495A017F16FE495A5C5A48 90C813FFA25A5B120F495D121FA2485AA25F007F17FE5BA2171F00FF17FC5BA2173F18F8 5BEF7FF0A218E017FF18C0A2494A138018005E5F6C6C4A5A4C5AA2003F4B5A6D4A5A001F 4B5A000F4BC7FC6D495A6C6C495A6C6CEB0FF06C6C495A3A007F80FF806DB448C8FC010F 13F001011380384070BE48>I114 D<15F0EC01FC14031407A3140FA25DA2141FA25DA2143FA25DA2147FA25DA214FFA25DA2 5B007FB612FEB7FCA216FCD8000390C7FC5CA21307A25CA2130FA25CA2131FA25CA2133F A25CA2137FA25CA213FFA25CA25AA291C8FCA25AA25BA2120716704914F0A2000F140116 E049130316C01507001F158049130F16005D153E000F143C5D15F84A5A0007495A6C6C48 5AEC1F802600FFFEC7FCEB7FF8EB0FE0275A72D82F>116 DI E /FU 18 118 df58 D<4DB5ED03C0057F02F014070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC 137F033F9127F8007FFE13FF92B6C73807FF814A02F0020113C3020702C09138007FE74A 91C9001FB5FC023F01FC16074A01F08291B54882490280824991CB7E4949844949844949 8449865D49498490B5FC484A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA448 99C7FCA25CA3B5FCB07EA380A27EA2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E 1A00A26C6E616D1BFE6D7F6F4E5A7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A 6E6DEFFF806E01FC4C90C7FC020F01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF91 3803FFE0033F02F8013F1380030F91B648C8FC030117F86F6C16E004071680DC007F02F8 C9FC050191CAFC626677E375>67 DI70 D76 D<001FBEFCA64849C79126E0000F148002E0180091C8171F498601F81A0349864986A249 1B7FA2491B3F007F1DC090C9181FA4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3 021FBAFCA663617AE070>84 D<913803FFFE027FEBFFF00103B612FE010F6F7E4916E090 273FFE001F7FD97FE001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C 496E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013F EBFE004913F048B512C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E80 6C047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191 B5487E6C6C4B7E011F02FC130F010302F001011400D9001F90CBFC49437CC14E>97 D<92380FFFF04AB67E020F15F0023F15FC91B77E01039039FE001FFF4901F80101138049 01E0010713C04901804913E0017F90C7FC49484A13F0A2485B485B5A5C5A7113E0485B71 13C048701380943800FE0095C7FC485BA4B5FCAE7EA280A27EA2806C18FCA26C6D150119 F87E6C6D15036EED07F06C18E06C6D150F6D6DEC1FC06D01E0EC7F806D6DECFF00010701 FCEB03FE6D9039FFC03FFC010091B512F0023F5D020F1580020102FCC7FCDA000F13C03E 437BC148>99 D<92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE037F49 9039F0007FFF011F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A80488448 5B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A27EA27E 6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01E04A5A 6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715E00200 92C8FC030713F041437CC14A>101 D105 D<903807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A62364 7BE32C>108 D<902607FF80D91FFFEEFFF8B691B500F00207EBFF80040702FC023F14E0 041F02FF91B612F84C6F488193267FE07F6D4801037F922781FE001F9027E00FF0007FC6 DA83F86D9026F01FC06D7F6DD987F06D4A487F6DD98FC0DBF87EC7804C6D027C80039FC7 6E488203BEEEFDF003BC6E4A8003FC04FF834B5FA24B5FA24B94C8FCA44B5EB3B2B7D8F0 07B7D8803FB612FCA67E417BC087>I<902607FF80EB1FFFB691B512F0040714FC041F14 FF4C8193267FE07F7F922781FE001F7FC6DA83F86D7F6DD987F07F6DD98FC0814C7F039F C78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007B71280A651417BC05A>I<9238 07FFE092B6FC020715E0021F15F8027F15FE494848C66C6C7E010701F0010F13E04901C0 01037F49496D7F4990C87F49486F7E49486F7E48496F13804819C04A814819E048496F13 F0A24819F8A348496F13FCA34819FEA4B518FFAD6C19FEA46C6D4B13FCA36C19F8A26C6D 4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B13006D6C4B5A6D6D495B6D6D495B01 0701F0010F13E06D01FE017F5B010090B7C7FC023F15FC020715E0020092C8FC030713E0 48437CC151>I114 D<913A3FFF8007800107B5 EAF81F011FECFE7F017F91B5FC48B8FC48EBE0014890C7121FD80FFC1407D81FF0801600 485A007F167F49153FA212FF171FA27F7F7F6D92C7FC13FF14E014FF6C14F8EDFFC06C15 FC16FF6C16C06C16F06C826C826C826C82013F1680010F16C01303D9007F15E0020315F0 EC001F1500041F13F81607007C150100FC81177F6C163FA2171F7EA26D16F0A27F173F6D 16E06D157F6D16C001FEEDFF806D0203130002C0EB0FFE02FCEB7FFC01DFB65A010F5DD8 FE0315C026F8007F49C7FC48010F13E035437BC140>II<902607FFC0ED3FFEB60207B5FCA6C6EE0007 6D826D82B3B3A260A360A2607F60183E6D6D147E4E7F6D6D4948806D6DD907F0ECFF806D 01FFEB3FE06D91B55A6E1500021F5C020314F8DA003F018002F0C7FC51427BC05A>I E end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: a4 %%EndSetup %%Page: 1 1 1 0 bop -24 510 3867 4 v -26 626 4 117 v 3841 626 V -26 879 4 253 v 25 726 a FU(Title:)690 b FT(Intr)-7 b(o)g(duction)48 b(to)i(F)-11 b(unctional)48 b(Pr)-7 b(o)g(gr)g(amming)p 3841 879 V -26 1012 4 134 v 25 977 a FU(Lecturer:)425 b FS(Mik)m(e)37 b(Gordon)p 3841 1012 V -26 1246 4 235 v 1097 1093 a FR(\()p FQ(http://www.cl.cam.ac.uk/us)q(ers/)q(mjcg)q(/)p FR(\))p 3841 1246 V -26 1499 4 253 v 25 1346 a FU(Class:)660 b FS(Computer)36 b(Science)h(T)-9 b(rip)s(os,)37 b(P)m(art)g(I)s (I\(General\))f(&)h(Diploma)p 3841 1499 V -26 1750 4 252 v 25 1597 a FU(T)-13 b(erm:)653 b FS(Len)m(t)37 b(term)g(1996)p 3841 1750 V -26 2003 4 253 v 25 1850 a FU(First)55 b(Lecture:)98 b FS(F)-9 b(rida)m(y)37 b(Jan)m(uary)h(19)g(1996)f(at)h(12am)p 3841 2003 V -26 2255 V 25 2102 a FU(Lo)t(cation:)417 b FS(Heyco)s(c)m(k)37 b(Lecture)g(Ro)s(om)p 3841 2255 V -26 2508 V 25 2355 a FU(Duration:)391 b FS(Tw)m(elv)m(e)36 b(lectures)h(\(M.)g(W.)g(F.)h(12\))p 3841 2508 V -24 2511 3867 4 v eop %%Page: 1 2 1 1 bop 330 498 3000 9 v 330 751 a FP(Preface)p 330 875 V 330 1364 a FO(This)25 b(course)g(aims)g(to)g(teac)n(h)g(b)r(oth)h (the)g(theory)e(and)h(practice)g(of)h(functional)f(programming.)330 1464 y(The)k(theory)f(consists)g(of)h(the)g FN(\025)p FO(-calculus)g(and)g(the)g(practice)f(will)h(b)r(e)g(illustrated)g (using)g(the)330 1564 y(programming)c(language)h(Standard)h(ML.)330 1680 y(The)k(\014eld)g(of)f(F)-7 b(unctional)31 b(Programming)d(splits) j(in)n(to)f(those)g(who)h(prefer)f(`lazy')g(languages)330 1780 y(lik)n(e)35 b(Hask)n(ell)g(and)h(those)f(who)g(prefer)g(`strict') h(languages)e(lik)n(e)h(ML.)h(The)f(practical)g(parts)330 1879 y(of)d(this)h(course)e(almost)h(exclusiv)n(ely)f(emphasise)h(the)h (latter,)g(but)g(the)g(material)e(on)h(the)h FN(\025)p FO(-)330 1979 y(calculus)27 b(underlies)g(b)r(oth)h(approac)n(hes.)330 2095 y(The)36 b(c)n(hapters)f(on)h(the)h FN(\025)p FO(-calculus)f(ha)n (v)n(e)f(b)r(een)h(largely)f(condensed)g(from)h(P)n(art)f(I)r(I)i(of)f (the)330 2195 y(b)r(o)r(ok:)538 2394 y(M.J.C.)g(Gordon,)i FM(Programming)c(Language)h(Theory)g(and)i(its)g(Implemen)n(ta-)538 2494 y(tion)p FO(,)25 b(Pren)n(tice)g(Hall)g(In)n(ternational)f(Series) h(in)h(Computer)f(Science,)g(1988)f(\(cur-)538 2593 y(ren)n(tly)j(out)g (of)h(prin)n(t\).)330 2792 y(The)g(in)n(tro)r(duction)f(to)g(ML)h(in)g (Chapter)f(4)g(started)g(life)h(as)f(part)g(of:)538 2992 y(Gordon,)43 b(M.J.C.,)i(Milner,)g(A.J.R.G.)d(and)f(W)-7 b(adsw)n(orth,)44 b(C.P)-7 b(.,)45 b FM(Edin)n(burgh)538 3091 y(LCF:)c(a)f(mec)n(hanized)g(logic)g(of)h(computation)p FO(,)j(Springer)39 b(Lecture)i(Notes)f(in)538 3191 y(Computer)27 b(Science,)g(Springer-V)-7 b(erlag,)26 b(1979.)330 3390 y(The)i(ML)f(parts)g(of)h(this)g(w)n(ere)e(up)r(dated)i(substan)n (tially)f(in)h(the)g(tec)n(hnical)f(rep)r(ort:)538 3589 y(G.)52 b(Cousineau,)58 b(M.)52 b(Gordon,)57 b(G.)c(Huet,)59 b(R.)52 b(Milner,)59 b(L.)52 b(P)n(aulson,)57 b(and)538 3689 y(C.)27 b(W)-7 b(adsw)n(orth,)27 b FM(The)h(ML)f(handb)r(o)r(ok)p FO(,)g(INRIA)i(\(1986\).)330 3888 y(I)d(translated)g(the)g(in)n(tro)r (duction)g(of)g(this)h(rep)r(ort)e(in)n(to)h(Standard)g(ML)g(and)g (added)g(some)g(new)330 3988 y(material)34 b(to)g(get)h(Chapter)f(4.)58 b(The)35 b(case)f(studies)h(w)n(ere)e(written)i(b)n(y)g(me)g(at)f (great)g(sp)r(eed,)330 4088 y(and)26 b(so)g(are)g(b)r(ound)g(to)h(con)n (tain)f(n)n(umerous)f(mistak)n(es!)36 b(They)26 b(aim)g(to)h(sho)n(w)e (ho)n(w)h(ML-based)330 4187 y(functional)i(programming)d(can)i(b)r(e)h (used)g(in)g(practice.)330 4303 y(The)h(follo)n(wing)f(p)r(eople)h(ha)n (v)n(e)f(con)n(tributed)g(in)i(v)-5 b(arious)27 b(w)n(a)n(ys)h(to)h (the)g(material)f(cited)h(ab)r(o)n(v)n(e)330 4403 y(or)i(to)h(these)g (notes:)45 b(Graham)31 b(Birt)n(wistle,)i(Shiu)f(Kai)g(Chin,)h(Avra)e (Cohn,)i(Jan)f(v)-5 b(an)32 b(Eijc)n(k,)330 4503 y(Mik)n(e)e(F)-7 b(ourman,)30 b(Elsa)e(Gun)n(ter,)j(P)n(eter)e(Hanco)r(c)n(k,)g(Martin)h (Hyland,)h(T)-7 b(om)29 b(Melham,)i(Allan)330 4602 y(C.)d(Milne,)g(Nic) n(holas)e(Ouruso\013,)h(Da)n(vid)g(Shepherd)h(and)f(Roger)g(Stok)n(es.) 1818 5988 y(i)p eop %%Page: 2 3 2 2 bop 450 108 a FO(ii)2687 b(Preface)p 450 249 3000 9 v eop %%Page: 3 4 3 3 bop 330 498 3000 9 v 330 749 a FP(Con)-5 b(ten)g(ts)p 330 874 V 330 1447 a FL(Preface)2664 b(i)330 1648 y(1)77 b(In)m(tro)s(duction)32 b(to)f(the)h FN(\025)p FL(-calculus)1579 b(1)455 1765 y FO(1.1)83 b(Syn)n(tax)28 b(and)f(seman)n(tics)g(of)g (the)h FN(\025)p FO(-calculus)j FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f(:)h (:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)138 b FO(1)455 1881 y(1.2)83 b(Notational)27 b(con)n(v)n(en)n(tions)33 b FN(:)42 b(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)138 b FO(3)455 1998 y(1.3)83 b(F)-7 b(ree)28 b(and)f(b)r(ound)h(v)-5 b(ariables)80 b FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)138 b FO(3)455 2114 y(1.4)83 b(Con)n(v)n(ersion)26 b(rules)74 b FN(:)42 b(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f (:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)138 b FO(4)645 2231 y(1.4.1)94 b FN(\013)p FO(-con)n(v)n(ersion)77 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)138 b FO(5)645 2347 y(1.4.2)94 b FN(\014)t FO(-con)n(v)n(ersion)79 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)138 b FO(5)645 2464 y(1.4.3)94 b FN(\021)s FO(-con)n(v)n(ersion)22 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)138 b FO(6)645 2580 y(1.4.4)94 b(Generalized)27 b(con)n(v)n(ersions)60 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)138 b FO(6)455 2697 y(1.5)83 b(Equalit)n(y)27 b(of)h FN(\025)p FO(-expressions)83 b FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)138 b FO(7)455 2813 y(1.6)83 b(The)28 b FK(\000)-14 b(!)28 b FO(relation)63 b FN(:)42 b(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:) f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)138 b FO(9)455 2930 y(1.7)83 b(Extensionalit)n(y)23 b FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f (:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(10)455 3046 y(1.8)83 b(Substitution)34 b FN(:)41 b(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h (:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(10)330 3247 y FL(2)77 b(Represen)m(ting)30 b(Things)h(in)h(the)f FN(\025)p FL(-calculus)1200 b(13)455 3364 y FO(2.1)83 b(T)-7 b(ruth-v)i(alues)27 b(and)h(the)g(conditional)63 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)97 b FO(13)455 3480 y(2.2)83 b(P)n(airs)26 b(and)i(tuples)83 b FN(:)42 b(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:) 97 b FO(15)455 3597 y(2.3)83 b(Num)n(b)r(ers)25 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h (:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(16)455 3713 y(2.4)83 b(De\014nition)29 b(b)n(y)e(recursion)36 b FN(:)42 b(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(20)455 3830 y(2.5)83 b(F)-7 b(unctions)28 b(with)g(sev)n(eral)e(argumen)n(ts) 35 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)97 b FO(22)455 3946 y(2.6)83 b(Mutual)28 b(recursion)51 b FN(:)42 b(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(25)455 4063 y(2.7)83 b(Represen)n(ting)27 b(the)h(recursiv)n(e)e (functions)67 b FN(:)41 b(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f (:)h(:)g(:)f(:)h(:)f(:)97 b FO(26)645 4179 y(2.7.1)d(The)28 b(primitiv)n(e)f(recursiv)n(e)f(functions)45 b FN(:)c(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(26)645 4296 y(2.7.2)d(The)28 b(recursiv)n(e)e(functions)77 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)97 b FO(27)645 4412 y(2.7.3)d(The)28 b(partial)f(recursiv)n(e)e(functions)68 b FN(:)42 b(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(29)455 4529 y(2.8)83 b(Extending)28 b(the)g FN(\025)p FO(-calculus)e FN(:)41 b(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h (:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(29)455 4645 y(2.9)83 b(Theorems)27 b(ab)r(out)h(the)g FN(\025)p FO(-calculus)63 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)97 b FO(30)455 4762 y(2.10)41 b(Call-b)n(y-v)-5 b(alue)27 b(and)g FL(Y)64 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:) 97 b FO(33)330 4963 y FL(3)77 b(Com)m(binators)2244 b(35)455 5079 y FO(3.1)83 b(Com)n(binator)27 b(reduction)66 b FN(:)42 b(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(36)455 5196 y(3.2)83 b(F)-7 b(unctional)28 b(completeness)49 b FN(:)41 b(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h (:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(36)455 5312 y(3.3)83 b(Reduction)28 b(mac)n(hines)74 b FN(:)42 b(:)g(:)f(:)h(:)f(:) h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)97 b FO(39)455 5429 y(3.4)83 b(Impro)n(v)n(ed)27 b(translation)f(to)i(com)n(binators)50 b FN(:)41 b(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(41)455 5545 y(3.5)83 b(More)27 b(com)n(binators)81 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(42)455 5662 y(3.6)83 b(Curry's)27 b(algorithm)c FN(:)42 b(:)f(:)h(:)g(:)f(:)h (:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:) h(:)g(:)f(:)h(:)f(:)97 b FO(43)455 5778 y(3.7)83 b(T)-7 b(urner's)27 b(algorithm)56 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:) f(:)97 b FO(44)1795 5988 y(iii)p eop %%Page: 4 5 4 4 bop 450 108 a FO(iv)2610 b(Con)n(ten)n(ts)p 450 249 3000 9 v 450 498 a FL(4)77 b(A)32 b(Quic)m(k)g(Ov)m(erview)g(of)g(ML) 1722 b(47)575 614 y FO(4.1)83 b(In)n(teracting)27 b(with)h(ML)61 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(47)575 731 y(4.2)83 b(Expressions)54 b FN(:)41 b(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:) f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(47)575 847 y(4.3)83 b(Declarations)28 b FN(:)41 b(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h (:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(48)575 963 y(4.4)83 b(Commen)n(ts)30 b FN(:)42 b(:)f(:)h(:)f(:)h (:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:) f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(49)575 1079 y(4.5)83 b(F)-7 b(unctions)64 b FN(:)42 b(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:) f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(49)575 1196 y(4.6)83 b(T)n(yp)r(e)28 b(abbreviations)35 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h (:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:) f(:)h(:)f(:)97 b FO(51)575 1312 y(4.7)83 b(Op)r(erators)51 b FN(:)42 b(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(52)575 1428 y(4.8)83 b(Lists)49 b FN(:)42 b(:)f(:)h(:)g(:)f(:)h(:) f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(53)575 1544 y(4.9)83 b(Strings)32 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:) f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(53)575 1660 y(4.10)41 b(Records)62 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:) h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)97 b FO(54)575 1777 y(4.11)41 b(P)n(olymorphism)20 b FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f (:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(54)575 1893 y(4.12)41 b FJ(fn)p FO(-expressions)22 b FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f (:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(55)575 2009 y(4.13)41 b(Conditionals)23 b FN(:)41 b(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h (:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(56)575 2125 y(4.14)41 b(Recursion)58 b FN(:)42 b(:)f(:)h(:)f(:)h (:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:) f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(56)575 2242 y(4.15)41 b(Equalit)n(y)27 b(t)n(yp)r(es)82 b FN(:)41 b(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(57)575 2358 y(4.16)41 b(P)n(attern)27 b(matc)n(hing)35 b FN(:)42 b(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g (:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(58)575 2474 y(4.17)41 b(The)28 b FJ(case)e FO(construct)i FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(60)575 2590 y(4.18)41 b(Exceptions)84 b FN(:)41 b(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:) f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(61)575 2707 y(4.19)41 b(Datat)n(yp)r(e)28 b(declarations)66 b FN(:)42 b(:)f(:)h(:)f(:)h(:)f (:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:) h(:)f(:)97 b FO(63)575 2823 y(4.20)41 b(Abstract)28 b(t)n(yp)r(es)73 b FN(:)41 b(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h (:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(65)575 2939 y(4.21)41 b(T)n(yp)r(e)28 b(constructors)78 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(66)575 3055 y(4.22)41 b(References)28 b(and)f(assignmen)n(t)d FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f (:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(67)575 3171 y(4.23)41 b(Iteration)34 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f (:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:) g(:)f(:)h(:)f(:)97 b FO(67)575 3288 y(4.24)41 b(Programming)25 b(in)j(the)g(large)57 b FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h (:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(68)450 3487 y FL(5)77 b(Case)31 b(study)h(1:)42 b(parsing)1868 b(69)575 3603 y FO(5.1)83 b(Lexical)27 b(analysis)39 b FN(:)i(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f (:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(69)575 3719 y(5.2)83 b(Simple)29 b(sp)r(ecial)e(cases)f(of)i (parsing)80 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f (:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(73)765 3836 y(5.2.1)d (Applicativ)n(e)28 b(expressions)77 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h (:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(73)765 3952 y(5.2.2)d(Precedence)26 b(parsing)h(of)g(in\014xes)74 b FN(:)41 b(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h (:)f(:)97 b FO(77)575 4068 y(5.3)83 b(A)28 b(general)f(top-do)n(wn)f (precedence)h(parser)62 b FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h (:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(82)450 4267 y FL(6)77 b(Case)31 b(study)h(2:)42 b(the)32 b FN(\025)p FL(-calculus)1598 b(89)575 4384 y FO(6.1)83 b(A)28 b FN(\025)p FO(-calculus)g(parser)34 b FN(:)41 b(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(90)575 4500 y(6.2)83 b(Implemen)n(ting)28 b(substitution)37 b FN(:)42 b(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f (:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)97 b FO(92)575 4616 y(6.3)83 b(The)28 b(SECD)g(mac)n(hine)80 b FN(:)42 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h (:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)g(:)f(:)h(:) f(:)97 b FO(94)450 4815 y FL(Bibliograph)m(y)2369 b(97)p eop %%Page: 1 6 1 5 bop 2836 498 a FS(Chapter)38 b(1)p 330 609 3000 9 v 330 861 a FP(In)-5 b(tro)5 b(duction)65 b(to)f(the)h FI(\025)p FP(-calculus)p 330 986 V 330 1480 a FO(The)38 b FN(\025)p FO(-calculus)g(\(or)g(lam)n(b)r(da-calculus\))g(is)g(a)g (theory)g(of)g(functions)h(that)f(w)n(as)g(originally)330 1579 y(dev)n(elop)r(ed)c(b)n(y)f(the)i(logician)d(Alonzo)i(Ch)n(urc)n (h)f(as)g(a)h(foundation)g(for)f(mathematics.)56 b(This)330 1679 y(w)n(ork)21 b(w)n(as)g(done)h(in)h(the)g(1930s,)e(sev)n(eral)f(y) n(ears)h(b)r(efore)h(digital)g(computers)g(w)n(ere)f(in)n(v)n(en)n (ted.)35 b(A)330 1779 y(little)24 b(earlier)f(\(in)h(the)g(1920s\))e (Moses)h(Sc)n(h\177)-42 b(on\014nk)n(el)23 b(dev)n(elop)r(ed)g(another) g(theory)g(of)h(functions)330 1878 y(based)36 b(on)g(what)g(are)g(no)n (w)f(called)i(`com)n(binators'.)61 b(In)37 b(the)g(1930s,)f(Hask)n(ell) g(Curry)f(redis-)330 1978 y(co)n(v)n(ered)g(and)h(extended)g(Sc)n (h\177)-42 b(on\014nk)n(el's)36 b(theory)g(and)g(sho)n(w)n(ed)f(that)i (it)g(w)n(as)e(equiv)-5 b(alen)n(t)36 b(to)330 2078 y(the)28 b FN(\025)p FO(-calculus.)37 b(Ab)r(out)28 b(this)g(time)g(Kleene)g (sho)n(w)n(ed)e(that)i(the)g FN(\025)p FO(-calculus)f(w)n(as)g(a)g (univ)n(ersal)330 2177 y(computing)32 b(system;)h(it)g(w)n(as)d(one)i (of)g(the)g(\014rst)f(suc)n(h)h(systems)f(to)h(b)r(e)g(rigorously)d (analysed.)330 2277 y(In)d(the)h(1950s)d(John)h(McCarth)n(y)g(w)n(as)g (inspired)h(b)n(y)g(the)g FN(\025)p FO(-calculus)g(to)g(in)n(v)n(en)n (t)f(the)h(program-)330 2376 y(ming)31 b(language)e FH(LISP)p FO(.)i(In)g(the)g(early)f(1960s)e(P)n(eter)i(Landin)h(sho)n(w)n(ed)e (ho)n(w)i(the)g(meaning)f(of)330 2476 y(imp)r(erativ)n(e)d(programming) d(languages)i(could)h(b)r(e)g(sp)r(eci\014ed)g(b)n(y)g(translating)f (them)i(in)n(to)f(the)330 2576 y FN(\025)p FO(-calculus.)37 b(He)27 b(also)g(in)n(v)n(en)n(ted)g(an)g(in\015uen)n(tial)h(protot)n (yp)r(e)f(programming)e(language)h(called)330 2675 y FH(ISWIM)34 b FO([24)o(].)59 b(This)34 b(in)n(tro)r(duced)h(the)g(main) f(notations)g(of)h(functional)g(programming)d(and)330 2775 y(in\015uenced)24 b(the)g(design)g(of)f(b)r(oth)h(functional)g (and)g(imp)r(erativ)n(e)f(languages.)34 b(Building)23 b(on)h(this)330 2875 y(w)n(ork,)j(Christopher)h(Strac)n(hey)f(laid)i (the)g(foundations)f(for)g(the)h(imp)r(ortan)n(t)f(area)f(of)i(denota-) 330 2974 y(tional)h(seman)n(tics)g([13)o(,)g(33)o(].)46 b(T)-7 b(ec)n(hnical)29 b(questions)h(concerning)f(Strac)n(hey's)g(w)n (ork)g(inspired)330 3074 y(the)22 b(mathematical)g(logician)f(Dana)g (Scott)i(to)e(in)n(v)n(en)n(t)h(the)g(theory)f(of)h(domains,)h(whic)n (h)f(is)g(no)n(w)330 3173 y(one)27 b(of)g(the)h(most)f(imp)r(ortan)n(t) f(parts)h(of)g(theoretical)f(computer)h(science.)37 b(During)27 b(the)g(1970s)330 3273 y(P)n(eter)34 b(Henderson)h(and)g(Jim)g(Morris)f (to)r(ok)g(up)i(Landin's)f(w)n(ork)f(and)h(wrote)f(a)h(n)n(um)n(b)r(er) g(of)330 3373 y(in\015uen)n(tial)29 b(pap)r(ers)g(arguing)e(that)i (functional)g(programming)e(had)i(imp)r(ortan)n(t)g(adv)-5 b(an)n(tages)330 3472 y(for)30 b(soft)n(w)n(are)f(engineering)h([17)o (,)h(16)o(].)46 b(A)n(t)31 b(ab)r(out)g(the)g(same)f(time)i(Da)n(vid)e (T)-7 b(urner)30 b(prop)r(osed)330 3572 y(that)36 b(Sc)n(h\177)-42 b(on\014nk)n(el)36 b(and)g(Curry's)f(com)n(binators)f(could)i(b)r(e)h (used)f(as)g(the)g(mac)n(hine)g(co)r(de)g(of)330 3672 y(computers)26 b(for)f(executing)h(functional)h(programming)d (languages.)34 b(Suc)n(h)27 b(computers)e(could)330 3771 y(exploit)h(mathematical)f(prop)r(erties)g(of)g(the)h FN(\025)p FO(-calculus)g(for)f(the)h(parallel)e(ev)-5 b(aluation)26 b(of)f(pro-)330 3871 y(grams.)35 b(During)24 b(the)i(1980s)c(sev)n(eral)h(researc)n(h)g(groups)h(to)r(ok)g(up)h (Henderson's)f(and)h(T)-7 b(urner's)330 3970 y(ideas)20 b(and)h(started)f(w)n(orking)e(on)j(making)f(functional)g(programming)f (practical)h(b)n(y)g(designing)330 4070 y(sp)r(ecial)27 b(arc)n(hitectures)f(to)i(supp)r(ort)f(it,)h(some)f(of)h(them)g(with)g (man)n(y)f(pro)r(cessors.)330 4186 y(W)-7 b(e)41 b(th)n(us)g(see)f (that)h(an)g(obscure)e(branc)n(h)h(of)h(mathematical)f(logic)g (underlies)g(imp)r(ortan)n(t)330 4286 y(dev)n(elopmen)n(ts)27 b(in)h(programming)d(language)h(theory)-7 b(,)27 b(suc)n(h)g(as:)408 4471 y(\(i\))43 b(The)27 b(study)h(of)g(fundamen)n(tal)f(questions)g (of)h(computation.)385 4642 y(\(ii\))43 b(The)27 b(design)g(of)h (programming)d(languages.)362 4813 y(\(iii\))43 b(The)27 b(seman)n(tics)g(of)h(programming)d(languages.)365 4984 y(\(iv\))42 b(The)27 b(arc)n(hitecture)g(of)g(computers.)330 5280 y FG(1.1)135 b(Syn)l(tax)46 b(and)e(seman)l(tics)i(of)g(the)f FF(\025)p FG(-calculus)330 5479 y FO(The)26 b FN(\025)p FO(-calculus)f(is)h(a)f(notation)g(for)g(de\014ning)h(functions.)36 b(The)26 b(expressions)e(of)i(the)g(notation)330 5579 y(are)35 b(called)g FN(\025)p FE(-expr)l(essions)43 b FO(and)36 b(eac)n(h)f(suc)n(h)g(expression)g(denotes)g(a)h(function.)62 b(It)36 b(will)g(b)r(e)330 5679 y(seen)28 b(later)f(ho)n(w)h(functions) g(can)g(b)r(e)h(used)f(to)g(represen)n(t)f(a)h(wide)g(v)-5 b(ariet)n(y)27 b(of)h(data)g(and)g(data-)330 5778 y(structures)d (including)h(n)n(um)n(b)r(ers,)g(pairs,)g(lists)g(etc.)36 b(F)-7 b(or)26 b(example,)g(it)g(will)g(b)r(e)h(demonstrated)1809 5988 y(1)p eop %%Page: 2 7 2 6 bop 450 92 a FO(2)1417 b(Chapter)27 b(1.)64 b(In)n(tro)r(duction)27 b(to)g(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a(ho)n(w)j(an)g(arbitrary)e(pair)i(of)g(n)n(um)n(b)r(ers)g (\()p FN(x;)14 b(y)s FO(\))32 b(can)f(b)r(e)h(represen)n(ted)e(as)g(a)h FN(\025)p FO(-expression.)47 b(As)450 598 y(a)35 b(notational)f(con)n (v)n(en)n(tion,)h(mnemonic)h(names)e(are)g(assigned)g(in)i FL(b)s(old)e FO(or)g(underlined)p 2958 611 384 4 v 35 w(to)450 697 y(particular)28 b FN(\025)p FO(-expressions;)g(for)g (example)h(1)p 1824 710 42 4 v 29 w(is)g(the)g FN(\025)p FO(-expression)f(\(de\014ned)h(in)h(Section)f(2.3\))450 797 y(whic)n(h)f(is)f(used)h(to)f(represen)n(t)f(the)i(n)n(um)n(b)r(er) g(one.)450 913 y(There)f(are)g(just)h(three)f(kinds)h(of)f FN(\025)p FO(-expressions:)528 1072 y(\(i\))43 b FL(V)-8 b(ariables:)46 b FN(x)p FO(,)34 b FN(y)s FO(,)f FN(z)j FO(etc.)51 b(The)33 b(functions)g(denoted)f(b)n(y)g(v)-5 b(ariables)31 b(are)h(determined)658 1172 y(b)n(y)e(what)h(the)g(v)-5 b(ariables)29 b(are)h(b)r(ound)h(to)g(in)g(the)g FE(envir)l(onment)8 b FO(.)46 b(Binding)31 b(is)g(done)f(b)n(y)658 1271 y(abstractions)c (\(see)h(3)g(b)r(elo)n(w\).)37 b(W)-7 b(e)28 b(use)f FN(V)19 b FO(,)28 b FN(V)2112 1283 y FD(1)2150 1271 y FO(,)f FN(V)2248 1283 y FD(2)2314 1271 y FO(etc.)37 b(for)27 b(arbitrary)e(v)-5 b(ariables.)505 1425 y(\(ii\))43 b FL(F)-8 b(unction)34 b(applications)c FO(or)f FL(com)m(binations:)40 b FO(if)30 b FN(E)2444 1437 y FD(1)2512 1425 y FO(and)g FN(E)2737 1437 y FD(2)2805 1425 y FO(are)f FN(\025)p FO(-expressions,)658 1525 y(then)g(so)f(is)h(\()p FN(E)1129 1537 y FD(1)1195 1525 y FN(E)1256 1537 y FD(2)1294 1525 y FO(\);)h(it)f(denotes)f(the)i(result)e(of)h(applying)f(the)h (function)h(denoted)e(b)n(y)658 1625 y FN(E)719 1637 y FD(1)790 1625 y FO(to)34 b(the)g(function)g(denoted)g(b)n(y)f FN(E)1880 1637 y FD(2)1918 1625 y FO(.)55 b FN(E)2057 1637 y FD(1)2129 1625 y FO(is)33 b(called)h(the)g FE(r)l(ator)43 b FO(\(from)33 b(`op)r(erator'\))658 1724 y(and)g FN(E)886 1736 y FD(2)957 1724 y FO(is)h(called)f(the)h FE(r)l(and)43 b FO(\(from)34 b(`op)r(erand'\).)54 b(F)-7 b(or)33 b(example,)i(if)f (\()p FN(m)p 2951 1737 73 4 v 1 w(;)14 b(n)p 3062 1737 50 4 v -1 w FO(\))34 b(denotes)658 1824 y(a)g(function)h(represen)n (ting)e(the)h(pair)g(of)h(n)n(um)n(b)r(ers)e FN(m)i FO(and)f FN(n)h FO(\(see)f(Section)g(2.2\))g(and)658 1924 y FL(sum)j FO(denotes)i(the)h(addition)f(function)1970 1893 y FD(1)2047 1924 y FN(\025)p FO(-calculus)g(\(see)h(Section)f(2.5\),)j(then)e(the) 658 2023 y(application)27 b(\()p FL(sum)n FO(\()p FN(m)p 1321 2036 73 4 v(;)14 b(n)p 1431 2036 50 4 v FO(\)\))28 b(denotes)f FN(m)p FO(+)p FN(n)p 1873 2043 188 4 v FO(.)482 2177 y(\(iii\))43 b FL(Abstractions:)f FO(if)32 b FN(V)49 b FO(is)31 b(a)f(v)-5 b(ariable)30 b(and)g FN(E)36 b FO(is)31 b(a)f FN(\025)p FO(-expression,)g(then)i FN(\025V)5 b(:)31 b(E)36 b FO(is)30 b(an)658 2277 y(abstraction)d(with)j FE(b)l(ound)h(variable)38 b FN(V)48 b FO(and)29 b FE(b)l(o)l(dy)37 b FN(E)5 b FO(.)42 b(Suc)n(h)29 b(an)g(abstraction)e(denotes)658 2377 y(the)40 b(function)h(that)f(tak)n(es)g(an)g(argumen)n(t)f FN(a)h FO(and)g(returns)f(as)h(result)g(the)h(function)658 2476 y(denoted)33 b(b)n(y)g FN(E)38 b FO(in)c(an)f(en)n(vironmen)n(t)f (in)h(whic)n(h)h(the)f(b)r(ound)h(v)-5 b(ariable)32 b FN(V)52 b FO(denotes)33 b FN(a)p FO(.)658 2576 y(More)h(sp)r (eci\014cally)-7 b(,)37 b(the)e(abstraction)f FN(\025V)5 b(:)36 b(E)k FO(denotes)35 b(a)g(function)h(whic)n(h)f(tak)n(es)f(an) 658 2675 y(argumen)n(t)20 b FN(E)1089 2645 y FC(0)1135 2675 y FO(and)h(transforms)g(it)h(in)n(to)f(the)i(thing)f(denoted)f(b)n (y)h FN(E)5 b FJ([)p FN(E)2880 2645 y FC(0)2903 2675 y FN(=V)18 b FJ(])k FO(\(the)g(result)658 2775 y(of)31 b(substituting)g FN(E)1287 2745 y FC(0)1342 2775 y FO(for)g FN(V)50 b FO(in)31 b FN(E)5 b FO(,)33 b(see)d(Section)i(1.8\).)47 b(F)-7 b(or)30 b(example,)i FN(\025x:)g FL(sum)o FO(\()p FN(x;)14 b FO(1)p 3376 2788 42 4 v(\))658 2875 y(denotes)27 b(the)h(add-one)e(function.)450 3034 y(Using)h FH(BNF)p FO(,)h(the)g(syn)n(tax)f(of)g FN(\025)p FO(-expressions)f(is)i(just:) 864 3181 y FN(<)23 b(\025)p FM(-expression)p FN(>)81 b FO(::=)i FN(<)p FM(v)-5 b(ariable)p FN(>)1636 3281 y FK(j)83 b FO(\()p FN(<)23 b(\025)p FM(-expression)p FN(>)j(<)c(\025)p FM(-expression)p FN(>)n FO(\))1636 3380 y FK(j)83 b FO(\()p FN(\025)28 b(<)p FM(v)-5 b(ariable)p FN(>)26 b(:)i(<)22 b(\025)p FM(-expression)p FN(>)n FO(\))450 3529 y(If)30 b FN(V)49 b FO(ranges)28 b(o)n(v)n(er)g(the)j(syn)n(tax)d (class)h FN(<)e FM(v)-5 b(ariable)30 b FN(>)f FO(and)h FN(E)5 b FO(,)31 b FN(E)2529 3541 y FD(1)2566 3529 y FO(,)g FN(E)2681 3541 y FD(2)2718 3529 y FO(,)g FN(:)14 b(:)g(:)30 b FO(etc.)43 b(range)29 b(o)n(v)n(er)450 3629 y(the)f(syn)n(tax)f(class)f FN(<)d(\025)p FM(-expression)f FN(>)p FO(,)27 b(then)h(the)g FH(BNF)g FO(simpli\014es)f(to:)1482 3828 y FN(E)h FO(::=)1705 3836 y FN(V)1595 4011 y FB(v)l(ariables)p 1728 3967 4 114 v 1729 3937 a FA(6)1795 3828 y FK(j)23 b FO(\()p FN(E)1934 3840 y FD(1)2000 3828 y FN(E)2061 3840 y FD(2)2098 3828 y FO(\))1841 3884 y Fz(|)p 1878 3884 70 10 v 70 w({z)p 2022 3884 V 70 w(})1801 4106 y FB(applications)1755 4167 y(\(com)n(binations\))p 1984 4084 4 162 v 1986 4006 a FA(6)2153 3828 y FK(j)h FN(\025V)5 b(:)28 b(E)2200 3863 y Fz(|)p 2237 3863 35 10 v 35 w({z)p 2346 3863 V 35 w(})2122 4019 y FB(abstractions)p 2307 3976 4 75 v 2309 3985 a FA(6)450 4307 y FO(The)41 b(description)g(of)g (the)h(meaning)f(of)g FN(\025)p FO(-expressions)f(just)i(giv)n(en)e(ab) r(o)n(v)n(e)g(is)i(v)-5 b(ague)40 b(and)450 4406 y(in)n(tuitiv)n(e.)g (It)29 b(to)r(ok)f(ab)r(out)h(40)f(y)n(ears)f(for)h(logicians)f(\(Dana) h(Scott,)i(in)e(fact)h([32)o(]\))g(to)g(mak)n(e)f(it)450 4506 y(rigorous)d(in)j(a)f(useful)h(w)n(a)n(y)-7 b(.)36 b(W)-7 b(e)28 b(shall)f(not)h(b)r(e)g(going)e(in)n(to)h(details)h(of)f (this.)450 4676 y FL(Example:)39 b FO(\()p FN(\025x:)29 b(x)p FO(\))g(denotes)e(the)h(`iden)n(tit)n(y)g(function':)37 b(\(\()p FN(\025x:)29 b(x)p FO(\))g FN(E)5 b FO(\))23 b(=)g FN(E)5 b FO(.)37 b Fy(2)450 4845 y FL(Example:)i FO(\()p FN(\025x:)31 b FO(\()p FN(\025f)t(:)f FO(\()p FN(f)38 b(x)p FO(\)\)\))30 b(denotes)f(the)h(function)f(whic)n(h)h (when)f(applied)g(to)g FN(E)34 b FO(yields)450 4945 y(\()p FN(\025f)t(:)c FO(\()p FN(f)37 b(x)p FO(\)\))p FJ([)q FN(E)5 b(=x)p FJ(])p FO(,)29 b(i.e.)g(\()p FN(\025f)t(:)h FO(\()p FN(f)38 b(E)5 b FO(\)\).)41 b(This)29 b(is)g(the)g(function)g (whic)n(h)g(when)g(applied)g(to)g FN(E)3427 4914 y FC(0)450 5044 y FO(yields)e(\()p FN(f)37 b(E)5 b FO(\))p FJ([)p FN(E)1001 5014 y FC(0)1024 5044 y FN(=f)k FJ(])27 b FO(i.e.)64 b(\()p FN(E)1455 5014 y FC(0)1507 5044 y FN(E)5 b FO(\).)37 b(Th)n(us)1303 5197 y(\(\()p FN(\025x:)29 b FO(\()p FN(\025f)t(:)f FO(\()p FN(f)37 b(x)p FO(\)\)\))29 b FN(E)5 b FO(\))23 b(=)g(\()p FN(\025f)t(:)28 b FO(\()p FN(f)37 b(E)5 b FO(\)\))450 5350 y(and)1472 5450 y(\(\()p FN(\025f)t(:)28 b FO(\()p FN(f)37 b(E)5 b FO(\)\))28 b FN(E)2014 5415 y FC(0)2038 5450 y FO(\))23 b(=)g(\()p FN(E)2279 5415 y FC(0)2330 5450 y FN(E)5 b FO(\))450 5581 y Fy(2)p 450 5622 1200 4 v 542 5676 a Fx(1)577 5699 y FB(Note)25 b(that)f Fw(sum)f FB(is)g(a)h Fv(\025)p FB(-expression,)f(whereas)h(+)g(is)f(a)h (mathematical)f(sym)n(b)r(ol)f(in)i(the)g(`metalanguage')450 5778 y(\(i.e.)31 b(English\))24 b(that)h(w)n(e)e(are)h(using)g(for)f (talking)h(ab)r(out)h(the)f Fv(\025)p FB(-calculus.)p eop %%Page: 3 8 3 7 bop 330 108 a FO(1.2.)64 b(Notational)27 b(con)n(v)n(en)n(tions) 1929 b(3)p 330 249 3000 9 v 330 498 a FL(Exercise)31 b(1)330 598 y FO(Describ)r(e)d(the)g(function)g(denoted)f(b)n(y)h(\()p FN(\025x:)h FO(\()p FN(\025y)s(:)f(y)s FO(\)\).)37 b Fy(2)330 792 y FL(Example:)i FO(Section)23 b(2.3)f(describ)r(es)g(ho)n (w)h(n)n(um)n(b)r(ers)f(can)g(b)r(e)i(represen)n(ted)d(b)n(y)i FN(\025)p FO(-expressions.)330 892 y(Assume)30 b(that)g(this)h(has)e(b) r(een)h(done)g(and)g(that)g(0)p 1882 905 42 4 v(,)g(1)p 1977 905 V(,)g(2)p 2072 905 V(,)h FN(:)14 b(:)g(:)30 b FO(are)f FN(\025)p FO(-expressions)f(whic)n(h)i(rep-)330 991 y(resen)n(t)d(0,)h(1,)g(2,)g FN(:)14 b(:)g(:)p FO(,)28 b(resp)r(ectiv)n(ely)-7 b(.)38 b(Assume)28 b(also)f(that)i FL(add)f FO(is)g(a)g FN(\025)p FO(-expression)f(denoting)g(a)330 1091 y(function)h(satisfying:)1438 1191 y(\(\()p FL(add)k FN(m)p 1686 1204 73 4 v FO(\))c FN(n)p 1819 1204 50 4 v FO(\))23 b(=)g FN(m)p FO(+)p FN(n)p 2012 1211 188 4 v -1 w(:)330 1337 y FO(Then)38 b(\()p FN(\025x:)h FO(\(\()p FL(add)32 b FO(1)p 994 1350 42 4 v(\))38 b FN(x)p FO(\)\))h(is)e(a)g FN(\025)p FO(-expression)f(denoting)i(the)g(function)g(that)f (transforms)330 1437 y FN(n)p 330 1450 50 4 v 50 w FO(to)49 b(1)18 b(+)g FN(n)p 553 1457 193 4 v FO(,)55 b(and)50 b(\()p FN(\025x:)g FO(\()p FN(\025y)s(:)h FO(\(\()p FL(add)33 b FN(x)p FO(\))p FN(y)s FO(\)\)\))51 b(is)e(a)g FN(\025)p FO(-expression)f(denoting)i(the)g(func-)330 1536 y(tion)43 b(that)g(transforms)e FN(m)p 1140 1549 73 4 v 43 w FO(to)i(the)g (function)g(whic)n(h)g(when)g(applied)g(to)f FN(n)p 2778 1549 50 4 v 43 w FO(yields)h FN(m)p FO(+)o FN(n)p 3120 1557 188 4 v FO(,)330 1636 y(namely)27 b FN(\025y)s(:)h FO(\(\()p FL(add)33 b FN(m)p 1010 1649 73 4 v FO(\))p FN(y)s FO(\)\).)k Fy(2)330 1830 y FO(The)29 b(relationship)g(b)r(et)n (w)n(een)g(the)h(function)g FL(sum)e FO(in)i(\(ii\))g(at)f(the)h(b)r (eginning)f(of)h(this)f(section)330 1930 y(\(page)e(2\))g(and)g(the)h (function)g FL(add)f FO(in)h(the)g(previous)e(example)h(is)g(explained) g(in)h(Section)f(2.5.)330 2220 y FG(1.2)135 b(Notational)48 b(con)l(v)l(en)l(tions)330 2419 y FO(The)28 b(follo)n(wing)e(con)n(v)n (en)n(tions)g(help)i(minimize)g(the)g(n)n(um)n(b)r(er)f(of)h(brac)n(k)n (ets)e(one)h(has)g(to)h(write.)431 2597 y(1.)42 b(F)-7 b(unction)51 b(application)g(asso)r(ciates)e(to)j(the)f(left,)58 b(i.e.)108 b FN(E)2531 2609 y FD(1)2620 2597 y FN(E)2681 2609 y FD(2)2784 2597 y FK(\001)14 b(\001)g(\001)65 b FN(E)3007 2609 y Fu(n)3104 2597 y FO(means)538 2697 y(\(\()28 b FK(\001)14 b(\001)g(\001)41 b FO(\()p FN(E)861 2709 y FD(1)927 2697 y FN(E)988 2709 y FD(2)1025 2697 y FO(\))h FK(\001)14 b(\001)g(\001)28 b FO(\))f FN(E)1344 2709 y Fu(n)1390 2697 y FO(\).)37 b(F)-7 b(or)27 b(example:)587 2876 y FN(E)648 2888 y FD(1)714 2876 y FN(E)775 2888 y FD(2)1164 2876 y FO(means)99 b(\()p FN(E)1583 2888 y FD(1)1649 2876 y FN(E)1710 2888 y FD(2)1747 2876 y FO(\))587 2976 y FN(E)648 2988 y FD(1)714 2976 y FN(E)775 2988 y FD(2)840 2976 y FN(E)901 2988 y FD(3)1164 2976 y FO(means)g(\(\()p FN(E)1615 2988 y FD(1)1681 2976 y FN(E)1742 2988 y FD(2)1780 2976 y FO(\))p FN(E)1873 2988 y FD(3)1910 2976 y FO(\))587 3075 y FN(E)648 3087 y FD(1)714 3075 y FN(E)775 3087 y FD(2)840 3075 y FN(E)901 3087 y FD(3)966 3075 y FN(E)1027 3087 y FD(4)1164 3075 y FO(means)g(\(\(\()p FN(E)1647 3087 y FD(1)1713 3075 y FN(E)1774 3087 y FD(2)1812 3075 y FO(\))p FN(E)1905 3087 y FD(3)1943 3075 y FO(\))p FN(E)2036 3087 y FD(4)2073 3075 y FO(\))431 3336 y(2.)42 b FN(\025V)5 b(:)37 b(E)760 3348 y FD(1)835 3336 y FN(E)896 3348 y FD(2)985 3336 y FN(:)14 b(:)g(:)50 b(E)1193 3348 y Fu(n)1276 3336 y FO(means)37 b(\()p FN(\025V)5 b(:)38 b FO(\()p FN(E)1827 3348 y FD(1)1902 3336 y FN(E)1963 3348 y FD(2)2051 3336 y FN(:)14 b(:)g(:)51 b(E)2260 3348 y Fu(n)2306 3336 y FO(\)\).)66 b(Th)n(us)36 b(the)i(scop)r(e)f(of)g(`)p FN(\025V)19 b FO(')538 3435 y(extends)27 b(as)g(far)g(to)h(the)g(righ)n (t)e(as)h(p)r(ossible.)431 3600 y(3.)42 b FN(\025V)634 3612 y FD(1)713 3600 y FK(\001)14 b(\001)g(\001)42 b FN(V)900 3612 y Fu(n)945 3600 y FN(:)28 b(E)33 b FO(means)27 b(\()p FN(\025V)1472 3612 y FD(1)1510 3600 y FN(:)h FO(\()g FK(\001)14 b(\001)g(\001)41 b FN(:)28 b FO(\()p FN(\025V)1938 3612 y Fu(n)1984 3600 y FN(:)g(E)5 b FO(\))42 b FK(\001)14 b(\001)g(\001)27 b FO(\)\).)38 b(F)-7 b(or)27 b(example:)587 3778 y FN(\025x)i(y)s(:)e(E)264 b FO(means)99 b(\()p FN(\025x:)29 b FO(\()p FN(\025y)s(:)f(E)5 b FO(\)\))587 3878 y FN(\025x)29 b(y)h(z)t(:)d(E)194 b FO(means)99 b(\()p FN(\025x:)29 b FO(\()p FN(\025y)s(:)f FO(\()p FN(\025z)t(:)g(E)5 b FO(\)\)\))587 3978 y FN(\025x)29 b(y)h(z)h(w)r(:)e(E)104 b FO(means)99 b(\()p FN(\025x:)29 b FO(\()p FN(\025y)s(:)f FO(\()p FN(\025z)t(:)g FO(\()p FN(\025w)r(:)h(E)5 b FO(\)\)\)\))330 4331 y FL(Example:)39 b FN(\025x)29 b(y)s(:)e FL(add)33 b FN(y)d(x)e FO(means)f(\()p FN(\025x:)i FO(\()p FN(\025y)s(:)f FO(\(\()p FL(add)33 b FN(y)s FO(\))28 b FN(x)p FO(\)\)\).)38 b Fy(2)330 4699 y FG(1.3)135 b(F)-11 b(ree)45 b(and)g(b)t(ound)f(v)-7 b(ariables)330 4898 y FO(An)28 b(o)r(ccurrence)f(of)h(a)f(v)-5 b(ariable)27 b FN(V)47 b FO(in)28 b(a)g FN(\025)p FO(-expression)e(is)i FE(fr)l(e)l(e)34 b FO(if)29 b(it)f(is)g(not)g(within)g(the)h(scop)r(e) 330 4998 y(of)f(a)f(`)p FN(\025V)19 b FO(',)28 b(otherwise)f(it)h(is)f FE(b)l(ound)p FO(.)37 b(F)-7 b(or)27 b(example)1530 5192 y(\()p FN(\025x:)h(y)j(x)p FO(\)\()p FN(\025y)s(:)e(x)f(y)s FO(\))1644 5459 y FB(free)p 1731 5402 4 143 v 1732 5343 a FA(6)1732 5649 y FB(b)r(ound)p 1802 5573 4 352 v 1804 5305 a FA(6)1970 5459 y FB(free)p 2057 5402 4 143 v 2058 5343 a FA(6)2062 5649 y FB(b)r(ound)p 2132 5573 4 352 v 2134 5305 a FA(6)p eop %%Page: 4 9 4 8 bop 450 92 a FO(4)1417 b(Chapter)27 b(1.)64 b(In)n(tro)r(duction)27 b(to)g(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a FG(1.4)135 b(Con)l(v)l(ersion)46 b(rules)450 709 y FO(In)22 b(Chapter)g(2)g(it)g(is)g(explained)g(ho)n(w)g FN(\025)p FO(-expressions)e(can)i(b)r(e)h(used)f(to)g(represen)n(t)f (data)h(ob)5 b(jects)450 809 y(lik)n(e)34 b(n)n(um)n(b)r(ers,)h (strings)e(etc.)56 b(F)-7 b(or)33 b(example,)i(an)f(arithmetic)g (expression)e(lik)n(e)i(\(2)22 b(+)h(3\))f FK(\002)g FO(5)450 909 y(can)k(b)r(e)h(represen)n(ted)e(as)g(a)h FN(\025)p FO(-expression)f(and)i(its)f(`v)-5 b(alue')26 b(25)g(can)g(also)f(b)r(e)i(represen)n(ted)e(as)g(a)450 1008 y FN(\025)p FO(-expression.)35 b(The)26 b(pro)r(cess)e(of)i (`simplifying')g(\(2)15 b(+)g(3\))f FK(\002)h FO(5)25 b(to)h(25)f(will)h(b)r(e)g(represen)n(ted)f(b)n(y)g(a)450 1108 y(pro)r(cess)f(called)g FE(c)l(onversion)32 b FO(\(or)25 b FE(r)l(e)l(duction)6 b FO(\).)36 b(The)25 b(rules)f(of)h FN(\025)p FO(-con)n(v)n(ersion)e(describ)r(ed)h(b)r(elo)n(w)450 1207 y(are)e(v)n(ery)f(general,)h(y)n(et)g(when)h(they)g(are)e(applied) i(to)f FN(\025)p FO(-expressions)f(represen)n(ting)g(arithmetic)450 1307 y(expressions)26 b(they)i(sim)n(ulate)f(arithmetical)g(ev)-5 b(aluation.)450 1423 y(There)42 b(are)g(three)g(kinds)h(of)f FN(\025)p FO(-con)n(v)n(ersion)f(called)h FN(\013)p FO(-con)n(v)n (ersion,)i FN(\014)t FO(-con)n(v)n(ersion)d(and)h FN(\021)s FO(-)450 1523 y(con)n(v)n(ersion)34 b(\(the)i(original)f(motiv)-5 b(ation)36 b(for)f(these)i(names)e(is)h(not)g(clear\).)62 b(In)36 b(stating)g(the)450 1622 y(con)n(v)n(ersion)29 b(rules)i(the)g(notation)g FN(E)5 b FJ([)p FN(E)1719 1592 y FC(0)1742 1622 y FN(=V)18 b FJ(])31 b FO(is)g(used)h(to)f(mean)g (the)g(result)g(of)h(substituting)450 1722 y FN(E)516 1692 y FC(0)569 1722 y FO(for)d(eac)n(h)f FE(fr)l(e)l(e)36 b FO(o)r(ccurrence)28 b(of)i FN(V)48 b FO(in)30 b FN(E)5 b FO(.)42 b(The)29 b(substitution)h(is)g(called)f FE(valid)39 b FO(if)30 b(and)f(only)450 1822 y(if)h(no)g(free)g(v)-5 b(ariable)28 b(in)j FN(E)1287 1792 y FC(0)1340 1822 y FO(b)r(ecomes)e(b)r(ound)i(in)f FN(E)5 b FJ([)o FN(E)2205 1792 y FC(0)2229 1822 y FN(=V)18 b FJ(])p FO(.)44 b(Substitution)30 b(is)g(describ)r(ed)g(in)450 1921 y(more)d(detail)g(in)h(Section)g (1.8.)p 450 2077 2976 4 v 448 3878 4 1802 v 1411 2234 a FL(The)k(rules)f(of)h FN(\025)p FL(-con)m(v)m(ersion)624 2467 y FK(\017)41 b FN(\013)p FL(-con)m(v)m(ersion)p FO(.)890 2633 y(An)n(y)57 b(abstraction)f(of)h(the)h(form)f FN(\025V)5 b(:)57 b(E)63 b FO(can)57 b(b)r(e)g(con)n(v)n(erted)f(to)890 2732 y FN(\025V)1005 2702 y FC(0)1029 2732 y FN(:)37 b(E)5 b FJ([)p FN(V)1266 2702 y FC(0)1289 2732 y FN(=V)18 b FJ(])37 b FO(pro)n(vided)f(the)i(substitution)g(of)f FN(V)2625 2702 y FC(0)2686 2732 y FO(for)g FN(V)56 b FO(in)37 b FN(E)43 b FO(is)890 2832 y(v)-5 b(alid.)624 2998 y FK(\017)41 b FN(\014)t FL(-con)m(v)m(ersion)p FO(.)890 3164 y(An)n(y)35 b(application)f(of)g(the)h(form)g(\()p FN(\025V)5 b(:)35 b(E)2218 3176 y FD(1)2256 3164 y FO(\))g FN(E)2384 3176 y FD(2)2456 3164 y FO(can)g(b)r(e)g(con)n(v)n(erted)e (to)890 3264 y FN(E)951 3276 y FD(1)989 3264 y FJ([)o FN(E)1093 3276 y FD(2)1131 3264 y FN(=V)18 b FJ(])p FO(,)25 b(pro)n(vided)f(the)h(substitution)g(of)f FN(E)2421 3276 y FD(2)2483 3264 y FO(for)h FN(V)43 b FO(in)25 b FN(E)2854 3276 y FD(1)2916 3264 y FO(is)g(v)-5 b(alid.)624 3430 y FK(\017)41 b FN(\021)s FL(-con)m(v)m(ersion)p FO(.)890 3596 y(An)n(y)30 b(abstraction)e(of)i(the)g(form)f FN(\025V)5 b(:)31 b FO(\()p FN(E)k(V)19 b FO(\))30 b(in)g(whic)n(h)g FN(V)48 b FO(has)29 b(no)h(free)890 3695 y(o)r(ccurrence)c(in)i FN(E)33 b FO(can)27 b(b)r(e)h(reduced)f(to)h FN(E)5 b FO(.)p 3423 3878 V 450 3881 2976 4 v 450 4091 a(The)28 b(follo)n(wing)e(notation)h(will)h(b)r(e)g(used:)575 4303 y FK(\017)41 b FN(E)719 4315 y FD(1)779 4303 y FK(\000)-14 b(!)824 4353 y Fu(\013)936 4303 y FN(E)997 4315 y FD(2)1062 4303 y FO(means)27 b FN(E)1377 4315 y FD(1)1443 4303 y FN(\013)p FO(-con)n(v)n(erts)e(to)j FN(E)2012 4315 y FD(2)2049 4303 y FO(.)575 4552 y FK(\017)41 b FN(E)719 4564 y FD(1)779 4552 y FK(\000)-14 b(!)826 4607 y Fu(\014)936 4552 y FN(E)997 4564 y FD(2)1062 4552 y FO(means)27 b FN(E)1377 4564 y FD(1)1443 4552 y FN(\014)t FO(-con)n(v)n(erts)e(to)j FN(E)2010 4564 y FD(2)2047 4552 y FO(.)575 4817 y FK(\017)41 b FN(E)719 4829 y FD(1)779 4817 y FK(\000)-14 b(!)828 4866 y Fu(\021)936 4817 y FN(E)997 4829 y FD(2)1062 4817 y FO(means)27 b FN(E)1377 4829 y FD(1)1443 4817 y FN(\021)s FO(-con)n(v)n(erts)e(to)j FN(E)2003 4829 y FD(2)2040 4817 y FO(.)450 5064 y(In)g(Section)f(1.4.4)g(b)r(elo)n(w)g(this)h (notation)f(is)g(extended.)450 5181 y(The)33 b(most)g(imp)r(ortan)n(t)g (kind)g(of)g(con)n(v)n(ersion)e(is)i FN(\014)t FO(-con)n(v)n(ersion;)g (it)h(is)f(the)g(one)g(that)g(can)g(b)r(e)450 5280 y(used)e(to)g(sim)n (ulate)f(arbitrary)f(ev)-5 b(aluation)31 b(mec)n(hanisms.)46 b FN(\013)p FO(-con)n(v)n(ersion)29 b(is)i(to)g(do)f(with)i(the)450 5380 y(tec)n(hnical)27 b(manipulation)f(of)h(b)r(ound)h(v)-5 b(ariables)25 b(and)i FN(\021)s FO(-con)n(v)n(ersion)e(expresses)g(the) j(fact)f(that)450 5479 y(t)n(w)n(o)19 b(functions)h(that)f(alw)n(a)n (ys)f(giv)n(e)h(the)g(same)g(results)g(on)h(the)g(same)e(argumen)n(ts)h (are)f(equal)h(\(see)450 5579 y(Section)29 b(1.7\).)41 b(The)29 b(next)h(three)f(subsections)f(giv)n(e)g(further)h (explanation)g(and)g(examples)f(of)450 5679 y(the)d(three)g(kinds)g(of) f(con)n(v)n(ersion)f(\(note)i(that)g(`con)n(v)n(ersion')e(and)h (`reduction')h(are)f(used)g(b)r(elo)n(w)450 5778 y(as)j(synon)n(yms\).) p eop %%Page: 5 10 5 9 bop 330 108 a FO(1.4.)64 b(Con)n(v)n(ersion)25 b(rules)2165 b(5)p 330 249 3000 9 v 330 498 a FS(1.4.1)112 b Ft(\013)q FS(-con)m(v)m(ersion)330 668 y FO(A)28 b FN(\025)p FO(-expression)f (\(necessarily)g(an)g(abstraction\))g(to)h(whic)n(h)g FN(\013)p FO(-reduction)g(can)g(b)r(e)g(applied)g(is)330 768 y(called)34 b(an)f FN(\013)p FE(-r)l(e)l(dex)10 b FO(.)56 b(The)34 b(term)g(`redex')g(abbreviates)e(`reducible)i (expression'.)54 b(The)34 b(rule)330 867 y(of)27 b FN(\013)p FO(-con)n(v)n(ersion)e(just)j(sa)n(ys)e(that)i(b)r(ound)f(v)-5 b(ariables)26 b(can)h(b)r(e)h(renamed)e(pro)n(vided)h(no)g(`name-)330 967 y(clashes')g(o)r(ccur.)330 1083 y FL(Examples)1550 1377 y FN(\025x:)h(x)c FK(\000)-14 b(!)1812 1427 y Fu(\013)1924 1377 y FN(\025y)s(:)28 b(y)1473 1627 y(\025x:)g(f)36 b(x)24 b FK(\000)-14 b(!)1812 1677 y Fu(\013)1924 1627 y FN(\025y)s(:)28 b(f)36 b(y)330 1802 y FO(It)28 b(is)f FE(not)36 b FO(the)28 b(case)e(that)1155 1958 y FN(\025x:)j(\025y)s(:)f FL(add)g FN(x)g(y)e FK(\000)-14 b(!)1812 2008 y Fu(\013)1924 1958 y FN(\025y)s(:)28 b(\025y)s(:)f FL(add)i FN(y)h(y)330 2144 y FO(b)r(ecause)e(the)i(substitution)f(\()p FN(\025y)s(:)h FL(add)f FN(x)g(y)s FO(\))p FJ([)p FN(y)s(=x)p FJ(])f FO(is)h(not)g(v)-5 b(alid)29 b(since)f(the)i FN(y)h FO(that)e(replaces) 330 2243 y FN(x)f FO(b)r(ecomes)f(b)r(ound.)38 b Fy(2)330 2488 y FS(1.4.2)112 b Ft(\014)6 b FS(-con)m(v)m(ersion)330 2658 y FO(A)29 b FN(\025)p FO(-expression)e(\(necessarily)h(an)g (application\))h(to)f(whic)n(h)h FN(\014)t FO(-reduction)f(can)g(b)r(e) i(applied)e(is)330 2757 y(called)j(a)f FN(\014)t FE(-r)l(e)l(dex)10 b FO(.)47 b(The)32 b(rule)e(of)h FN(\014)t FO(-con)n(v)n(ersion)e(is)i (lik)n(e)f(the)i(ev)-5 b(aluation)30 b(of)h(a)g(function)g(call)330 2857 y(in)c(a)f(programming)e(language:)35 b(the)27 b(b)r(o)r(dy)f FN(E)1794 2869 y FD(1)1859 2857 y FO(of)g(the)h(function)g FN(\025V)5 b(:)27 b(E)2630 2869 y FD(1)2694 2857 y FO(is)f(ev)-5 b(aluated)27 b(in)f(an)330 2956 y(en)n(vironmen)n(t)g(in)i(whic)n(h)f (the)h(`formal)f(parameter')f FN(V)46 b FO(is)28 b(b)r(ound)f(to)h(the) g(`actual)e(parameter')330 3056 y FN(E)391 3068 y FD(2)429 3056 y FO(.)330 3251 y FL(Examples)1454 3467 y FO(\()p FN(\025x:)i(f)37 b(x)p FO(\))28 b FN(E)g FK(\000)-14 b(!)1953 3521 y Fu(\014)2063 3467 y FN(f)36 b(E)1129 3645 y FO(\()p FN(\025x:)29 b FO(\()p FN(\025y)s(:)f FL(add)g FN(x)g(y)s FO(\)\))g(3)p 1874 3658 42 4 v 23 w FK(\000)-15 b(!)1985 3699 y Fu(\014)2095 3645 y FN(\025y)s(:)28 b FL(add)g FO(3)p 2418 3658 V 28 w FN(y)1310 3823 y FO(\()p FN(\025y)s(:)g FL(add)g FO(3)p 1665 3836 V 27 w FN(y)s FO(\))g(4)p 1838 3836 V 23 w FK(\000)-15 b(!)1949 3878 y Fu(\014)2059 3823 y FL(add)28 b FO(3)p 2239 3836 V 28 w(4)p 2309 3836 V 330 4014 a(It)g(is)f FE(not)36 b FO(the)28 b(case)e(that)764 4170 y(\()p FN(\025x:)j FO(\()p FN(\025y)s(:)f FL(add)g FN(x)g(y)s FO(\)\))g(\()p FL(square)h FN(y)s FO(\))23 b FK(\000)-15 b(!)1985 4224 y Fu(\014)2095 4170 y FN(\025y)s(:)28 b FL(add)g FO(\()p FL(square)h FN(y)s FO(\))f FN(y)330 4371 y FO(b)r(ecause)g(the)g(substition)g(\()p FN(\025y)s(:)h FL(add)g FN(x)f(y)s FO(\))p FJ([)p FO(\()p FL(square)h FN(y)s FO(\))p FN(=x)p FJ(])f FO(is)g(not)g(v)-5 b(alid,)28 b(since)g FN(y)j FO(is)d(free)g(in)330 4471 y(\()p FL(square)h FN(y)s FO(\))e(but)h(b)r(ecomes)g(b)r(ound)g(after)f (substitution)h(for)f FN(x)h FO(in)g(\()p FN(\025y)s(:)g FL(add)g FN(x)h(y)s FO(\).)36 b Fy(2)330 4587 y FO(It)31 b(tak)n(es)f(some)g(practice)h(to)f(parse)g FN(\025)p FO(-expressions)f(according)g(to)i(the)g(con)n(v)n(en)n(tions)f(of)g (Sec-)330 4687 y(tion)e(1.2)e(so)h(as)g(to)h(iden)n(tify)g(the)g FN(\014)t FO(-redexes.)36 b(F)-7 b(or)27 b(example,)g(consider)f(the)i (application:)1421 4843 y(\()p FN(\025x:)h(\025y)s(:)e FL(add)33 b FN(x)28 b(y)s FO(\))g(3)p 2106 4856 V 27 w(4)p 2175 4856 V -1 w FN(:)330 4999 y FO(Putting)g(in)f(brac)n(k)n (ets)f(according)g(to)i(the)g(con)n(v)n(en)n(tions)d(expands)i(this)h (to:)1271 5156 y(\(\(\()p FN(\025x:)h FO(\()p FN(\025y)s(:)f FO(\(\()p FL(add)33 b FN(x)p FO(\))c FN(y)s FO(\)\)\))f(3)p 2214 5169 V -1 w(\))g(4)p 2315 5169 V(\))330 5312 y(whic)n(h)g(has)f (the)h(form:)1590 5411 y(\(\()p FN(\025x:)h(E)5 b FO(\))28 b(3)p 1927 5424 V(\))g(4)p 2029 5424 V 330 5545 a(where)1473 5645 y FN(E)g FO(=)50 b(\()p FN(\025y)s(:)28 b FL(add)k FN(x)d(y)s FO(\))330 5778 y(\()p FN(\025x:)g(E)5 b FO(\))28 b(3)p 635 5791 V 27 w(is)g(a)f FN(\014)t FO(-redex)g(and)g(could)h(b)r (e)g(reduced)f(to)g FN(E)5 b FJ([)p FO(3)p 2176 5791 V -1 w FN(=x)p FJ(])p FO(.)p eop %%Page: 6 11 6 10 bop 450 92 a FO(6)1417 b(Chapter)27 b(1.)64 b(In)n(tro)r(duction) 27 b(to)g(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a FS(1.4.3)112 b Ft(\021)t FS(-con)m(v)m(ersion)450 669 y FO(A)29 b FN(\025)p FO(-expression)f(\(necessarily)f(an)i (abstraction\))f(to)g(whic)n(h)h FN(\021)s FO(-reduction)g(can)f(b)r(e) h(applied)g(is)450 768 y(called)19 b(an)g FN(\021)s FE(-r)l(e)l(dex)10 b FO(.)34 b(The)19 b(rule)g(of)g FN(\021)s FO(-con)n(v)n(ersion)e (expresses)h(the)i(prop)r(ert)n(y)e(that)h(t)n(w)n(o)g(functions)450 868 y(are)29 b(equal)g(if)h(they)g(giv)n(e)f(the)i(same)e(results)g (when)h(applied)g(to)f(the)i(same)e(argumen)n(ts.)42 b(This)450 968 y(prop)r(ert)n(y)18 b(is)h(called)g FE(extensionality)27 b FO(and)19 b(is)g(discussed)f(further)h(in)h(Section)f(1.7.)33 b(F)-7 b(or)18 b(example,)450 1067 y FN(\021)s FO(-con)n(v)n(ersion)36 b(ensures)i(that)g FN(\025x:)i FO(\()p FL(sin)e FN(x)p FO(\))h(and)f FL(sin)g FO(denote)g(the)h(same)f(function.)70 b(More)450 1167 y(generally)-7 b(,)29 b FN(\025V)5 b(:)31 b FO(\()p FN(E)36 b(V)19 b FO(\))30 b(denotes)g(the)h(function)g(whic)n (h)f(when)g(applied)g(to)h(an)e(argumen)n(t)h FN(E)3427 1137 y FC(0)450 1267 y FO(returns)25 b(\()p FN(E)31 b(V)19 b FO(\))p FJ([)p FN(E)1068 1236 y FC(0)1091 1267 y FN(=V)g FJ(])o FO(.)37 b(If)26 b FN(V)45 b FO(do)r(es)25 b(not)h(o)r(ccur)f (free)h(in)g FN(E)31 b FO(then)26 b(\()p FN(E)31 b(V)19 b FO(\))p FJ([)p FN(E)2895 1236 y FC(0)2918 1267 y FN(=V)g FJ(])j FO(=)h(\()p FN(E)31 b(E)3371 1236 y FC(0)3395 1267 y FO(\).)450 1366 y(Th)n(us)24 b FN(\025V)5 b(:)25 b(E)k(V)44 b FO(and)24 b FN(E)29 b FO(b)r(oth)c(yield)g(the)f(same)g (result,)h(namely)f FN(E)29 b(E)2664 1336 y FC(0)2688 1366 y FO(,)c(when)f(applied)g(to)h(the)450 1466 y(same)i(argumen)n(ts) f(and)i(hence)f(they)h(denote)g(the)g(same)f(function.)450 1686 y FL(Examples)1597 1905 y FN(\025x:)h FL(add)g FN(x)c FK(\000)-14 b(!)2043 1954 y Fu(\021)2151 1905 y FL(add)1525 2176 y FN(\025y)s(:)28 b FL(add)g FN(x)g(y)e FK(\000)-14 b(!)2039 2226 y Fu(\021)2147 2176 y FL(add)28 b FN(x)450 2381 y FO(It)g(is)f FE(not)36 b FO(the)28 b(case)e(that)1522 2484 y FN(\025x:)i FL(add)g FN(x)g(x)c FK(\000)-14 b(!)2043 2533 y Fu(\021)2151 2484 y FL(add)28 b FN(x)450 2672 y FO(b)r(ecause)f FN(x)h FO(is)g(free)f(in)h FL(add)g FN(x)p FO(.)38 b Fy(2)450 2925 y FS(1.4.4)112 b(Generalized)37 b(con)m(v)m(ersions)450 3096 y FO(The)28 b(de\014nitions)f(of)h FK(\000)-14 b(!)1162 3145 y Fu(\013)1251 3096 y FO(,)27 b FK(\000)-14 b(!)1348 3150 y Fu(\014)1463 3096 y FO(and)27 b FK(\000)-14 b(!)1673 3145 y Fu(\021)1786 3096 y FO(can)27 b(b)r(e)h(generalized)e(as)h(follo)n(ws:)575 3338 y FK(\017)41 b FN(E)719 3350 y FD(1)779 3338 y FK(\000)-14 b(!)824 3388 y Fu(\013)936 3338 y FN(E)997 3350 y FD(2)1062 3338 y FO(if)28 b FN(E)1199 3350 y FD(2)1264 3338 y FO(can)g(b)r(e)g(got)f (from)g FN(E)1930 3350 y FD(1)1995 3338 y FO(b)n(y)g FN(\013)p FO(-con)n(v)n(erting)f(an)n(y)h(subterm.)575 3532 y FK(\017)41 b FN(E)719 3544 y FD(1)779 3532 y FK(\000)-14 b(!)826 3587 y Fu(\014)936 3532 y FN(E)997 3544 y FD(2)1062 3532 y FO(if)28 b FN(E)1199 3544 y FD(2)1264 3532 y FO(can)g(b)r(e)g (got)f(from)g FN(E)1930 3544 y FD(1)1995 3532 y FO(b)n(y)g FN(\014)t FO(-con)n(v)n(erting)f(an)n(y)h(subterm.)575 3743 y FK(\017)41 b FN(E)719 3755 y FD(1)779 3743 y FK(\000)-14 b(!)828 3792 y Fu(\021)936 3743 y FN(E)997 3755 y FD(2)1062 3743 y FO(if)28 b FN(E)1199 3755 y FD(2)1264 3743 y FO(can)g(b)r(e)g (got)f(from)g FN(E)1930 3755 y FD(1)1995 3743 y FO(b)n(y)g FN(\021)s FO(-con)n(v)n(erting)f(an)n(y)h(subterm.)450 4084 y FL(Examples)1143 4187 y FO(\(\()p FN(\025x:)i(\025y)s(:)f FL(add)k FN(x)d(y)s FO(\))e(3)p 1860 4200 42 4 v(\))h(4)p 1962 4200 V 22 w FK(\000)-14 b(!)2073 4241 y Fu(\014)2183 4187 y FO(\()p FN(\025y)s(:)28 b FL(add)33 b FO(3)p 2543 4200 V 27 w FN(y)s FO(\))27 b(4)p 2715 4200 V 1426 4458 a(\()p FN(\025y)s(:)h FL(add)k FO(3)p 1785 4471 V 27 w FN(y)s FO(\))c(4)p 1958 4471 V 23 w FK(\000)-15 b(!)2069 4513 y Fu(\014)2179 4458 y FL(add)33 b FO(3)p 2364 4471 V 27 w(4)p 2433 4471 V 450 4630 a Fy(2)450 4798 y FO(The)26 b(\014rst)g(of)g(these)g(is)g(a)g FN(\014)t FO(-con)n(v)n(ersion)e(in)i (the)h(generalized)d(sense)i(b)r(ecause)g(\()p FN(\025y)s(:)g FL(add)33 b FO(3)p 3265 4811 V 26 w FN(y)s FO(\)4)p 3409 4811 V 450 4898 a(is)c(obtained)f(from)g(\(\()p FN(\025x:)j(\025y)s(:)e FL(add)j FN(x)d(y)s FO(\)3)p 1767 4911 V(\)4)p 1841 4911 V 28 w(\(whic)n(h)g(is)g(not)f(itself)i(a)e FN(\014)t FO(-redex\))g(b)n(y)h(reducing)450 4998 y(the)40 b(sub)r(expression)e (\()p FN(\025x:)j(\025y)s(:)f FL(add)h FN(x)f(y)s FO(\)3)p 1846 5011 V -1 w(.)73 b(W)-7 b(e)40 b(will)g(sometimes)f(write)h(a)f (sequence)g(of)450 5097 y(con)n(v)n(ersions)25 b(lik)n(e)i(the)h(t)n(w) n(o)f(ab)r(o)n(v)n(e)f(as:)906 5316 y(\(\()p FN(\025x:)j(\025y)s(:)f FL(add)k FN(x)c(y)s FO(\))g(3)p 1623 5329 V -1 w(\))g(4)p 1724 5329 V 23 w FK(\000)-14 b(!)1835 5370 y Fu(\014)1946 5316 y FO(\()p FN(\025y)s(:)28 b FL(add)k FO(3)p 2305 5329 V 27 w FN(y)s FO(\))c(4)p 2478 5329 V 23 w FK(\000)-15 b(!)2589 5370 y Fu(\014)2699 5316 y FL(add)33 b FO(3)p 2884 5329 V 27 w(4)p 2953 5329 V 450 5558 a FL(Exercise)e(2)450 5658 y FO(Whic)n(h)e(of)g(the)h(three)e FN(\014)t FO(-reductions)h(b)r (elo)n(w)f(are)g(generalized)g(con)n(v)n(ersions)e(\(i.e.)42 b(reductions)450 5758 y(of)28 b(sub)r(expressions\))e(and)h(whic)n(h)h (are)f(con)n(v)n(ersions)e(in)i(the)h(sense)g(de\014ned)f(on)h(page)f (4?)36 b Fy(2)p eop %%Page: 7 12 7 11 bop 330 92 a FO(1.5.)64 b(Equalit)n(y)26 b(of)i FN(\025)p FO(-expressions)1851 b(7)p 330 249 3000 9 v 408 498 a(\(i\))43 b(\()p FN(\025x:)28 b(x)p FO(\))h(1)p 824 511 42 4 v 22 w FK(\000)-14 b(!)935 552 y Fu(\014)1045 498 y FO(1)p 1045 511 V 385 702 a(\(ii\))43 b(\()p FN(\025y)s(:)28 b(y)s FO(\))f(\(\()p FN(\025x:)j(x)p FO(\))e(1)p 1135 715 V -1 w(\))c FK(\000)-14 b(!)1278 756 y Fu(\014)1389 702 y FO(\()p FN(\025y)s(:)28 b(y)s FO(\)1)p 1640 715 V 22 w FK(\000)-14 b(!)1751 756 y Fu(\014)1861 702 y FO(1)p 1861 715 V 362 905 a(\(iii\))43 b(\()p FN(\025y)s(:)28 b(y)s FO(\))f(\(\()p FN(\025x:)j(x)p FO(\))e(1)p 1135 918 V -1 w(\))c FK(\000)-14 b(!)1278 959 y Fu(\014)1389 905 y FO(\()p FN(\025x:)29 b(x)p FO(\))f(1)p 1675 918 V 22 w FK(\000)-14 b(!)1786 959 y Fu(\014)1896 905 y FO(1)p 1896 918 V 330 1131 a(In)46 b(reductions)f(\(ii\))h(and)f (\(iii\))h(in)g(the)g(exercise)e(ab)r(o)n(v)n(e)g(one)h(starts)g(with)h (the)g(same)f FN(\025)p FO(-)330 1230 y(expression,)26 b(but)i(reduce)g(redexes)e(in)i(di\013eren)n(t)g(orders.)330 1347 y(An)j(imp)r(ortan)n(t)g(prop)r(ert)n(y)f(of)g FN(\014)t FO(-reductions)h(is)f(that)h(no)g(matter)g(in)g(whic)n(h)f(order)g(one) g(do)r(es)330 1446 y(them,)44 b(one)c(alw)n(a)n(ys)f(ends)h(up)h(with)g (equiv)-5 b(alen)n(t)40 b(results.)75 b(If)41 b(there)f(are)f(sev)n (eral)g(disjoin)n(t)330 1546 y(redexes)22 b(in)g(an)h(expression,)f (one)g(can)g(reduce)g(them)i(in)e(parallel.)35 b(Note,)23 b(ho)n(w)n(ev)n(er,)f(that)h(some)330 1645 y(reduction)31 b(sequences)f(ma)n(y)h(nev)n(er)f(terminate.)48 b(This)31 b(is)g(discussed)g(further)g(in)h(connection)330 1745 y(with)25 b(the)g(normalization)e(theorem)h(of)g(Chapter)g(2.9.)35 b(It)25 b(is)f(a)g(curren)n(t)g(hot)g(researc)n(h)e(topic)j(in)330 1845 y(`\014fth-generation)30 b(computing')i(to)f(design)g(pro)r (cessors)d(whic)n(h)k(exploit)f(parallel)f(ev)-5 b(aluation)330 1944 y(to)27 b(sp)r(eed)h(up)g(the)g(execution)f(of)h(functional)g (programs.)330 2232 y FG(1.5)135 b(Equalit)l(y)47 b(of)e FF(\025)p FG(-expressions)330 2431 y FO(The)36 b(three)g(con)n(v)n (ersion)d(rules)j(preserv)n(e)e(the)i(meaning)f(of)h FN(\025)p FO(-expressions,)h(i.e.)62 b(if)36 b FN(E)3132 2443 y FD(1)3205 2431 y FO(can)330 2530 y(b)r(e)f(con)n(v)n(erted)e(to) h FN(E)1002 2542 y FD(2)1074 2530 y FO(then)h FN(E)1331 2542 y FD(1)1403 2530 y FO(and)f FN(E)1632 2542 y FD(2)1704 2530 y FO(denote)g(the)h(same)f(function.)58 b(This)34 b(prop)r(ert)n(y)f(of)330 2630 y(con)n(v)n(ersion)17 b(should)h(b)r(e)i(in)n(tuitiv)n(ely)f(clear.)33 b(It)19 b(is)g(p)r(ossible)g(to)f(giv)n(e)h(a)f(mathematical)h(de\014nition)330 2730 y(of)32 b(the)h(function)f(denoted)h(b)n(y)f(a)f FN(\025)p FO(-expression)g(and)h(then)h(to)f(pro)n(v)n(e)e(that)j(this) f(function)h(is)330 2829 y(unc)n(hanged)27 b(b)n(y)h FN(\013)p FO(-,)g FN(\014)t FO(-)g(or)f FN(\021)s FO(-con)n(v)n (ersion.)35 b(Doing)28 b(this)g(is)g(surprisingly)f(di\016cult)h([33)o (])g(and)g(is)330 2929 y(b)r(ey)n(ond)f(the)h(scop)r(e)f(of)h(this)g(b) r(o)r(ok.)330 3045 y(W)-7 b(e)25 b(will)f(simply)h FE(de\014ne)31 b FO(t)n(w)n(o)24 b FN(\025)p FO(-expressions)e(to)j(b)r(e)g(equal)f (if)g(they)h(can)f(b)r(e)h(transformed)e(in)n(to)330 3145 y(eac)n(h)i(other)h(b)n(y)f(a)h(sequence)f(of)h(\(forw)n(ards)e (or)h(bac)n(kw)n(ards\))f FN(\025)p FO(-con)n(v)n(ersions.)34 b(It)27 b(is)e(imp)r(ortan)n(t)330 3244 y(to)30 b(b)r(e)h(clear)e(ab)r (out)h(the)h(di\013erence)f(b)r(et)n(w)n(een)h FE(e)l(quality)38 b FO(and)30 b FE(identity)7 b FO(.)46 b(Tw)n(o)30 b FN(\025)p FO(-expressions)330 3344 y(are)35 b(iden)n(tical)g(if)h(they)g(consist) f(of)h FE(exactly)44 b FO(the)36 b(same)f(sequence)g(of)h(c)n (haracters;)h(they)f(are)330 3444 y(equal)31 b(if)i(one)f(can)f(b)r(e)i (con)n(v)n(erted)d(to)i(the)g(other.)50 b(F)-7 b(or)31 b(example,)i FN(\025x:)g(x)g FO(is)f(equal)f(to)h FN(\025y)s(:)g(y)s FO(,)330 3543 y(but)c(not)g(iden)n(tical)f(to)h(it.)37 b(The)28 b(follo)n(wing)e(notation)h(is)h(used:)455 3711 y FK(\017)41 b FN(E)599 3723 y FD(1)659 3711 y FK(\021)23 b FN(E)808 3723 y FD(2)873 3711 y FO(means)k FN(E)1188 3723 y FD(1)1253 3711 y FO(and)h FN(E)1476 3723 y FD(2)1541 3711 y FO(are)f(iden)n(tical.)455 3870 y FK(\017)41 b FN(E)599 3882 y FD(1)659 3870 y FO(=)23 b FN(E)808 3882 y FD(2)873 3870 y FO(means)k FN(E)1188 3882 y FD(1)1253 3870 y FO(and)h FN(E)1476 3882 y FD(2)1541 3870 y FO(are)f(equal.)330 4038 y(Equalit)n(y)e(\(=\))i(is)f(de\014ned)g(in)h(terms)f(of)g(iden)n (tit)n(y)g(\()p FK(\021)p FO(\))g(and)g(con)n(v)n(ersion)e(\()p FK(\000)-14 b(!)2706 4088 y Fu(\013)2794 4038 y FO(,)27 b FK(\000)-14 b(!)2890 4092 y Fu(\014)3004 4038 y FO(and)26 b FK(\000)-14 b(!)3213 4088 y Fu(\021)3298 4038 y FO(\))330 4178 y(as)27 b(follo)n(ws.)p 330 4270 2976 4 v 328 5808 4 1538 v 1297 4428 a FL(Equalit)m(y)32 b(of)g FN(\025)p FL(-expressions)380 4627 y FO(If)c FN(E)33 b FO(and)28 b FN(E)785 4597 y FC(0)836 4627 y FO(are)f FN(\025)p FO(-expressions)f(then)i FN(E)h FO(=)23 b FN(E)1917 4597 y FC(0)1968 4627 y FO(if)28 b FN(E)h FK(\021)23 b FN(E)2288 4597 y FC(0)2339 4627 y FO(or)k(there)g(exist)h(expressions)380 4727 y FN(E)441 4739 y FD(1)478 4727 y FO(,)g FN(E)590 4739 y FD(2)628 4727 y FO(,)f(.)14 b(.)g(.)g(,)28 b FN(E)901 4739 y Fu(n)974 4727 y FO(suc)n(h)f(that:)481 4893 y(1.)41 b FN(E)29 b FK(\021)22 b FN(E)825 4905 y FD(1)481 5059 y FO(2.)41 b FN(E)653 5029 y FC(0)700 5059 y FK(\021)22 b FN(E)848 5071 y Fu(n)481 5225 y FO(3.)41 b(F)-7 b(or)27 b(eac)n(h)g FN(i)g FO(either)622 5391 y(\(a\))42 b FN(E)831 5403 y Fu(i)882 5391 y FK(\000)-14 b(!)927 5441 y Fu(\013)1039 5391 y FN(E)1100 5403 y Fu(i)p FD(+1)1239 5391 y FO(or)27 b FN(E)1402 5403 y Fu(i)1453 5391 y FK(\000)-14 b(!)1500 5445 y Fu(\014)1610 5391 y FN(E)1671 5403 y Fu(i)p FD(+1)1811 5391 y FO(or)26 b FN(E)1973 5403 y Fu(i)2024 5391 y FK(\000)-14 b(!)2073 5441 y Fu(\021)2181 5391 y FN(E)2242 5403 y Fu(i)p FD(+1)2382 5391 y FO(or)618 5568 y(\(b\))42 b FN(E)831 5580 y Fu(i)p FD(+1)966 5568 y FK(\000)-14 b(!)1011 5618 y Fu(\013)1123 5568 y FN(E)1184 5580 y Fu(i)1239 5568 y FO(or)27 b FN(E)1402 5580 y Fu(i)p FD(+1)1537 5568 y FK(\000)-14 b(!)1584 5623 y Fu(\014)1694 5568 y FN(E)1755 5580 y Fu(i)1811 5568 y FO(or)26 b FN(E)1973 5580 y Fu(i)p FD(+1)2108 5568 y FK(\000)-14 b(!)2157 5618 y Fu(\021)2265 5568 y FN(E)2326 5580 y Fu(i)2354 5568 y FO(.)p 3303 5808 V 330 5812 2976 4 v eop %%Page: 8 13 8 12 bop 450 92 a FO(8)1417 b(Chapter)27 b(1.)64 b(In)n(tro)r(duction) 27 b(to)g(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a FL(Examples)1682 714 y FO(\()p FN(\025x:)h(x)p FO(\))g(1)p 1969 727 42 4 v 50 w(=)50 b(1)p 2176 727 V 1511 852 a(\()p FN(\025x:)29 b(x)p FO(\))f(\(\()p FN(\025y)s(:)g(y)s FO(\))g(1)p 2108 865 V(\))51 b(=)f(1)p 2348 865 V 1322 990 a(\()p FN(\025x:)29 b(\025y)s(:)e FL(add)33 b FN(x)28 b(y)s FO(\))g(3)p 2007 1003 V 27 w(4)p 2076 1003 V 50 w(=)50 b FL(add)33 b FO(3)p 2468 1003 V 27 w(4)p 2537 1003 V 450 1129 a Fy(2)450 1287 y FO(F)-7 b(rom)27 b(the)h (de\014nition)g(of)g(=)f(it)h(follo)n(ws)f(that:)528 1455 y(\(i\))43 b(F)-7 b(or)27 b(an)n(y)f FN(E)33 b FO(it)28 b(is)g(the)g(case)e(that)i FN(E)g FO(=)23 b FN(E)33 b FO(\(equalit)n(y)27 b(is)g FE(r)l(e\015exive)6 b FO(\).)505 1613 y(\(ii\))43 b(If)28 b FN(E)g FO(=)22 b FN(E)983 1583 y FC(0)1007 1613 y FO(,)27 b(then)i FN(E)1313 1583 y FC(0)1359 1613 y FO(=)23 b FN(E)32 b FO(\(equalit)n(y)c(is)f FE(symmetric)5 b FO(\).)482 1772 y(\(iii\))43 b(If)28 b FN(E)g FO(=)22 b FN(E)983 1742 y FC(0)1034 1772 y FO(and)28 b FN(E)1262 1742 y FC(0)1308 1772 y FO(=)23 b FN(E)1462 1742 y FC(00)1504 1772 y FO(,)28 b(then)g FN(E)g FO(=)23 b FN(E)1987 1742 y FC(00)2057 1772 y FO(\(equalit)n(y)k(is)h FE(tr)l(ansitive)6 b FO(\).)450 1940 y(If)33 b(a)g(relation)e(is)i (re\015exiv)n(e,)g(symmetric)f(and)h(transitiv)n(e)f(then)h(it)g(is)g (called)g(an)f FE(e)l(quivalenc)l(e)450 2039 y(r)l(elation)6 b FO(.)38 b(Th)n(us)27 b(=)h(is)f(an)g(equiv)-5 b(alence)28 b(relation.)450 2155 y(Another)36 b(imp)r(ortan)n(t)g(prop)r(ert)n(y)g (of)g(=)g(is)g(that)h(if)g FN(E)2165 2167 y FD(1)2240 2155 y FO(=)h FN(E)2404 2167 y FD(2)2478 2155 y FO(and)e(if)h FN(E)2799 2125 y FC(0)2794 2176 y FD(1)2868 2155 y FO(and)f FN(E)3104 2125 y FC(0)3099 2176 y FD(2)3173 2155 y FO(are)g(t)n(w)n(o) 450 2255 y FN(\025)p FO(-expressions)25 b(that)i(only)f(di\013er)g(in)h (that)g(where)f(one)g(con)n(tains)g FN(E)2582 2267 y FD(1)2646 2255 y FO(the)h(other)f(con)n(tains)f FN(E)3389 2267 y FD(2)3427 2255 y FO(,)450 2355 y(then)33 b FN(E)710 2325 y FC(0)705 2375 y FD(1)774 2355 y FO(=)e FN(E)936 2325 y FC(0)931 2375 y FD(2)969 2355 y FO(.)52 b(This)33 b(prop)r(ert)n(y)e(is)i(called)f FE(L)l(eibnitz's)j(law)9 b FO(.)53 b(It)33 b(holds)f(b)r(ecause)h(the)g(same)450 2454 y(sequence)25 b(of)h(reduction)g(for)f(getting)h(from)g FN(E)1914 2466 y FD(1)1977 2454 y FO(to)g FN(E)2138 2466 y FD(2)2202 2454 y FO(can)f(b)r(e)i(used)f(for)f(getting)h(from)g FN(E)3318 2424 y FC(0)3313 2475 y FD(1)3376 2454 y FO(to)450 2554 y FN(E)516 2524 y FC(0)511 2575 y FD(2)549 2554 y FO(.)36 b(F)-7 b(or)27 b(example,)h(if)g FN(E)1243 2566 y FD(1)1303 2554 y FO(=)23 b FN(E)1452 2566 y FD(2)1490 2554 y FO(,)k(then)h(b)n(y)g(Leibnitz's)g(la)n(w)e FN(\025V)5 b(:)29 b(E)2588 2566 y FD(1)2676 2554 y FO(=)50 b FN(\025V)5 b(:)28 b(E)3004 2566 y FD(2)3042 2554 y FO(.)450 2670 y(It)h(is)f(essen)n(tial)g(for)f(the)i(substitutions)g(in)f(the)h FN(\013)p FO(-)g(and)f FN(\014)t FO(-reductions)g(to)g(b)r(e)h(v)-5 b(alid.)39 b(The)29 b(v)-5 b(a-)450 2770 y(lidit)n(y)23 b(requiremen)n(t)e(disallo)n(ws,)h(for)g(example,)h FN(\025x:)h FO(\()p FN(\025y)s(:)f(x)p FO(\))g(b)r(eing)g FN(\013)p FO(-reduced)f(to)g FN(\025y)s(:)h FO(\()p FN(\025y)s(:)g(y)s FO(\))450 2869 y(\(since)f FN(y)i FO(b)r(ecomes)d(b)r(ound)h(after)f (substitution)i(for)e FN(x)h FO(in)g FN(\025y)s(:)f(x)p FO(\).)36 b(If)22 b(this)g(in)n(v)-5 b(alid)22 b(substitution)450 2969 y(w)n(ere)27 b(p)r(ermitted,)h(then)g(it)g(w)n(ould)f(follo)n(w)g (b)n(y)g(the)h(de\014nition)g(of)g(=)f(that:)1534 3133 y FN(\025x:)h(\025y)s(:)g(x)51 b FO(=)g FN(\025y)s(:)28 b(\025y)s(:)f(y)450 3297 y FO(But)h(then)g(since:)1288 3397 y(\()p FN(\025x:)h FO(\()p FN(\025y)s(:)f(x)p FO(\)\))h(1)p 1782 3410 V 27 w(2)p 1851 3410 V 23 w FK(\000)-15 b(!)1962 3451 y Fu(\014)2072 3397 y FO(\()p FN(\025y)s(:)29 b FO(1)p 2248 3410 V -1 w(\))f(2)p 2349 3410 V 23 w FK(\000)-15 b(!)2460 3451 y Fu(\014)2570 3397 y FO(1)p 2570 3410 V 450 3575 a(and)1291 3675 y(\()p FN(\025y)s(:)28 b FO(\()p FN(\025y)s(:)g(y)s FO(\)\))g(1)p 1777 3688 V 27 w(2)p 1846 3688 V 23 w FK(\000)-15 b(!)1957 3729 y Fu(\014)2068 3675 y FO(\()p FN(\025y)s(:)28 b(y)s FO(\))f(2)p 2346 3688 V 23 w FK(\000)-14 b(!)2457 3729 y Fu(\014)2568 3675 y FO(2)p 2568 3688 V 450 3853 a(one)30 b(w)n(ould)g(b)r(e)h (forced)f(to)h(conclude)f(that)h(1)p 1848 3866 V 28 w(=)d(2)p 2011 3866 V -1 w(.)46 b(More)30 b(generally)f(b)n(y)h(replacing)g(1)p 3172 3866 V 30 w(and)g(2)p 3408 3866 V 450 3952 a(b)n(y)d(an)n(y)g(t)n (w)n(o)g(expressions,)f(it)i(could)f(b)r(e)h(sho)n(wn)f(that)h(an)n(y)f (t)n(w)n(o)g(expressions)f(are)g(equal!)450 4133 y FL(Exercise)31 b(3)450 4233 y FO(Find)h(an)g(example)f(whic)n(h)h(sho)n(ws)e(that)j (if)f(substitutions)g(in)g FN(\014)t FO(-reductions)f(are)g(allo)n(w)n (ed)f(to)450 4332 y(b)r(e)e(in)n(v)-5 b(alid,)28 b(then)g(it)g(follo)n (ws)e(that)i(an)n(y)f(t)n(w)n(o)g FN(\025)p FO(-expressions)f(are)g (equal.)37 b Fy(2)450 4513 y FL(Example:)i FO(If)29 b FN(V)1012 4525 y FD(1)1050 4513 y FO(,)f FN(V)1149 4525 y FD(2)1186 4513 y FO(,)h(.)14 b(.)f(.)h(,)29 b FN(V)1448 4525 y Fu(n)1521 4513 y FO(are)e(all)h(distinct)h(and)e(none)h(of)g (them)h(o)r(ccur)e(free)h(in)g(an)n(y)f(of)450 4612 y FN(E)511 4624 y FD(1)549 4612 y FO(,)g FN(E)660 4624 y FD(2)698 4612 y FO(,.)14 b(.)g(.)g(,)27 b FN(E)943 4624 y Fu(n)989 4612 y FO(,)h(then)1148 4776 y(\()p FN(\025V)1276 4788 y FD(1)1342 4776 y FN(V)1390 4788 y FD(2)1442 4776 y FK(\001)14 b(\001)g(\001)g FN(V)1601 4788 y Fu(n)1646 4776 y FN(:)28 b(E)5 b FO(\))28 b FN(E)1884 4788 y FD(1)1949 4776 y FN(E)2010 4788 y FD(2)2062 4776 y FK(\001)14 b(\001)g(\001)f FN(E)2233 4788 y Fu(n)1266 4901 y FO(=)117 b(\(\()p FN(\025V)1608 4913 y FD(1)1647 4901 y FN(:)28 b FO(\()p FN(\025V)1826 4913 y FD(2)1878 4901 y FK(\001)14 b(\001)g(\001)g FN(V)2037 4913 y Fu(n)2082 4901 y FN(:)28 b(E)5 b FO(\)\))p FN(E)2324 4913 y FD(1)2362 4901 y FO(\))28 b FN(E)2483 4913 y FD(2)2534 4901 y FK(\001)14 b(\001)g(\001)g FN(E)2706 4913 y Fu(n)1231 5025 y FK(\000)-14 b(!)1278 5080 y Fu(\014)1448 5025 y FO(\(\()p FN(\025V)1608 5037 y FD(2)1661 5025 y FK(\001)14 b(\001)g(\001)f FN(V)1819 5037 y Fu(n)1865 5025 y FN(:)28 b(E)5 b FO(\))p FJ([)p FN(E)2119 5037 y FD(1)2156 5025 y FN(=V)2246 5037 y FD(1)2283 5025 y FJ(])p FO(\))28 b FN(E)2448 5037 y FD(2)2499 5025 y FK(\001)14 b(\001)g(\001)g FN(E)2671 5037 y Fu(n)1266 5195 y FO(=)117 b(\()p FN(\025V)1576 5207 y FD(2)1628 5195 y FN(:)14 b(:)g(:)g(V)1787 5207 y Fu(n)1833 5195 y FN(:)27 b(E)5 b FJ([)p FN(E)2054 5207 y FD(1)2092 5195 y FN(=V)2182 5207 y FD(1)2219 5195 y FJ(])o FO(\))p FN(E)2355 5207 y FD(2)2407 5195 y FK(\001)14 b(\001)g(\001)g FN(E)2579 5207 y Fu(n)1780 5307 y FO(.)1780 5340 y(.)1780 5374 y(.)1266 5498 y(=)117 b FN(E)5 b FJ([)p FN(E)1619 5510 y FD(1)1656 5498 y FN(=V)1746 5510 y FD(1)1784 5498 y FJ(])o([)p FN(E)1932 5510 y FD(2)1969 5498 y FN(=V)2059 5510 y FD(2)2096 5498 y FJ(])14 b FK(\001)g(\001)g(\001)g FJ([)o FN(E)2369 5510 y Fu(n)2415 5498 y FN(=V)2505 5510 y Fu(n)2550 5498 y FJ(])450 5778 y Fy(2)p eop %%Page: 9 14 9 13 bop 330 108 a FO(1.6.)64 b(The)27 b FK(\000)-14 b(!)28 b FO(relation)2154 b(9)p 330 249 3000 9 v 330 498 a FL(Exercise)31 b(4)330 598 y FO(In)37 b(the)h(last)f(example,)i (where)e(w)n(as)f(the)i(assumption)f(used)g(that)g FN(V)2580 610 y FD(1)2618 598 y FO(,)j FN(V)2729 610 y FD(2)2767 598 y FO(,.)14 b(.)f(.)h(,)40 b FN(V)3011 610 y Fu(n)3094 598 y FO(are)c(all)330 697 y(distinct)28 b(and)g(that)g(none)f(of)g (them)i(o)r(ccur)e(free)g(in)h(an)n(y)f(of)g FN(E)2269 709 y FD(1)2307 697 y FO(,)g FN(E)2418 709 y FD(2)2456 697 y FO(,.)14 b(.)g(.)g(,)27 b FN(E)2701 709 y Fu(n)2747 697 y FO(?)37 b Fy(2)330 912 y FL(Exercise)31 b(5)330 1012 y FO(Find)c(an)f(example)g(to)g(sho)n(w)f(that)i(if)g FN(V)1570 1024 y FD(1)1630 1012 y FO(=)c FN(V)1766 1024 y FD(2)1804 1012 y FO(,)j(then)h(ev)n(en)f(if)h FN(V)2352 1024 y FD(2)2416 1012 y FO(is)f(not)g(free)g(in)h FN(E)2959 1024 y FD(1)2996 1012 y FO(,)g(it)g(is)f(not)330 1112 y(necessarily)g(the)i(case)f(that:)1116 1305 y(\()p FN(\025V)1244 1317 y FD(1)1282 1305 y FN(V)1330 1317 y FD(2)1368 1305 y FN(:E)5 b FO(\))28 b FN(E)1578 1317 y FD(1)1643 1305 y FN(E)1704 1317 y FD(2)1765 1305 y FO(=)22 b FN(E)5 b FJ([)p FN(E)2023 1317 y FD(1)2061 1305 y FN(=V)2151 1317 y FD(1)2188 1305 y FJ(])o([)p FN(E)2336 1317 y FD(2)2373 1305 y FN(=V)2463 1317 y FD(2)2501 1305 y FJ(])330 1498 y Fy(2)330 1713 y FL(Exercise)31 b(6)330 1812 y FO(Find)g(an)g(example) f(to)g(sho)n(w)g(that)h(if)g FN(V)1600 1824 y FD(1)1666 1812 y FK(6)p FO(=)d FN(V)1807 1824 y FD(2)1844 1812 y FO(,)k(but)f FN(V)2102 1824 y FD(2)2170 1812 y FO(o)r(ccurs)f(free)g (in)h FN(E)2753 1824 y FD(1)2791 1812 y FO(,)g(then)h(it)f(is)f(not)330 1912 y(necessarily)c(the)i(case)f(that:)1102 2105 y(\()p FN(\025V)1230 2117 y FD(1)1268 2105 y FN(V)1316 2117 y FD(2)1354 2105 y FN(:)h(E)5 b FO(\))28 b FN(E)1592 2117 y FD(1)1657 2105 y FN(E)1718 2117 y FD(2)1779 2105 y FO(=)22 b FN(E)5 b FJ([)p FN(E)2037 2117 y FD(1)2074 2105 y FN(=V)2164 2117 y FD(1)2202 2105 y FJ(])o([)p FN(E)2350 2117 y FD(2)2387 2105 y FN(=V)2477 2117 y FD(2)2514 2105 y FJ(])330 2298 y Fy(2)330 2711 y FG(1.6)135 b(The)45 b Fs(\000)-20 b(!)44 b FG(relation)330 2914 y FO(In)33 b(the)g(previous)f(section)h FN(E)1267 2926 y FD(1)1336 2914 y FO(=)f FN(E)1494 2926 y FD(2)1565 2914 y FO(w)n(as)g(de\014ned)h (to)g(mean)f(that)i FN(E)2601 2926 y FD(2)2671 2914 y FO(could)f(b)r(e)g(obtained)330 3013 y(from)k FN(E)597 3025 y FD(1)672 3013 y FO(b)n(y)g(a)g(sequence)g(of)g(forw)n(ards)e FE(or)40 b(b)l(ackwar)l(ds)45 b FO(con)n(v)n(ersions.)64 b(A)38 b(sp)r(ecial)f(case)f(of)330 3113 y(this)f(is)g(when)h FN(E)876 3125 y FD(2)948 3113 y FO(is)f(got)g(from)g FN(E)1455 3125 y FD(1)1527 3113 y FO(using)g(only)g(forw)n(ards)e(con)n (v)n(ersions.)57 b(This)35 b(is)g(written)330 3213 y FN(E)391 3225 y FD(1)452 3213 y FK(\000)-15 b(!)23 b FN(E)669 3225 y FD(2)707 3213 y FO(.)p 330 3352 2976 4 v 328 4546 4 1195 v 1473 3509 a FL(De\014nition)31 b(of)h FK(\000)-14 b(!)380 3709 y FO(If)21 b FN(E)26 b FO(and)20 b FN(E)763 3678 y FC(0)807 3709 y FO(are)g FN(\025)p FO(-expressions,)h(then)g FN(E)28 b FK(\000)-14 b(!)23 b FN(E)1960 3678 y FC(0)2004 3709 y FO(if)e FN(E)28 b FK(\021)23 b FN(E)2316 3678 y FC(0)2360 3709 y FO(or)d(there)g(exist) h(expressions)380 3808 y FN(E)441 3820 y FD(1)478 3808 y FO(,)28 b FN(E)590 3820 y FD(2)628 3808 y FO(,)f(.)14 b(.)g(.)g(,)p FN(E)873 3820 y Fu(n)946 3808 y FO(suc)n(h)28 b(that:)481 3974 y(1.)41 b FN(E)29 b FK(\021)22 b FN(E)825 3986 y FD(1)481 4140 y FO(2.)41 b FN(E)653 4110 y FC(0)700 4140 y FK(\021)22 b FN(E)848 4152 y Fu(n)481 4306 y FO(3.)41 b(F)-7 b(or)27 b(eac)n(h)g FN(i)g FO(either)h FN(E)1276 4318 y Fu(i)1327 4306 y FK(\000)-14 b(!)1372 4356 y Fu(\013)1484 4306 y FN(E)1545 4318 y Fu(i)p FD(+1)1684 4306 y FO(or)27 b FN(E)1847 4318 y Fu(i)1898 4306 y FK(\000)-14 b(!)1945 4361 y Fu(\014)2055 4306 y FN(E)2116 4318 y Fu(i)p FD(+1)2256 4306 y FO(or)26 b FN(E)2418 4318 y Fu(i)2469 4306 y FK(\000)-14 b(!)2518 4356 y Fu(\021)2626 4306 y FN(E)2687 4318 y Fu(i)p FD(+1)2799 4306 y FO(.)p 3303 4546 V 330 4549 2976 4 v 330 4731 a(Notice)33 b(that)g(the)g(de\014nition)g(of)g FK(\000)-15 b(!)33 b FO(is)g(just)g(lik)n(e)f(the)h(de\014nition)h(of)e (=)h(on)f(page)g(7)g(except)330 4830 y(that)c(part)f(\(b\))h(of)g(3)f (is)h(missing.)330 5045 y FL(Exercise)j(7)330 5145 y FO(Find)d FN(E)5 b FO(,)28 b FN(E)710 5115 y FC(0)761 5145 y FO(suc)n(h)f(that)h FN(E)g FO(=)23 b FN(E)1371 5115 y FC(0)1422 5145 y FO(but)28 b(it)g(is)g(not)f(the)h(case)f(that)h FN(E)g FK(\000)-14 b(!)23 b FN(E)2699 5115 y FC(0)2722 5145 y FO(.)37 b Fy(2)330 5360 y FL(Exercise)31 b(8)330 5460 y FO([v)n(ery)40 b(hard!])75 b(Sho)n(w)41 b(that)g(if)g FN(E)1413 5472 y FD(1)1496 5460 y FO(=)j FN(E)1666 5472 y FD(2)1704 5460 y FO(,)g(then)d(there)g(exists)f FN(E)46 b FO(suc)n(h)41 b(that)g FN(E)3003 5472 y FD(1)3085 5460 y FK(\000)-14 b(!)45 b FN(E)330 5559 y FO(and)33 b FN(E)558 5571 y FD(2)627 5559 y FK(\000)-14 b(!)31 b FN(E)5 b FO(.)53 b(\(This)33 b(prop)r(ert)n(y)f(is)h(called)f(the)h(Ch)n(urc)n (h-Rosser)d(theorem.)53 b(Some)32 b(of)h(its)330 5659 y(consequences)26 b(are)h(discussed)g(in)h(Chapter)f(2.9.\))36 b Fy(2)p eop %%Page: 10 15 10 14 bop 450 92 a FO(10)1375 b(Chapter)27 b(1.)64 b(In)n(tro)r (duction)27 b(to)g(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a FG(1.7)135 b(Extensionalit)l(y)450 717 y FO(Supp)r(ose)28 b FN(V)46 b FO(do)r(es)27 b(not)h(o)r(ccur)f (free)g(in)h FN(E)1746 729 y FD(1)1811 717 y FO(or)f FN(E)1974 729 y FD(2)2039 717 y FO(and)1702 946 y FN(E)1763 958 y FD(1)1828 946 y FN(V)42 b FO(=)22 b FN(E)2066 958 y FD(2)2132 946 y FN(V)450 1176 y FO(Then)28 b(b)n(y)f(Leibnitz's)h(la) n(w)f(\(see)g(page)g(8\))1549 1405 y FN(\025V)5 b(:)29 b(E)1763 1417 y FD(1)1828 1405 y FN(V)42 b FO(=)22 b FN(\025V)5 b(:)29 b(E)2219 1417 y FD(2)2284 1405 y FN(V)450 1635 y FO(so)e(b)n(y)g FN(\021)s FO(-reduction)g(applied)h(to)f(b)r (oth)h(sides)1796 1864 y FN(E)1857 1876 y FD(1)1918 1864 y FO(=)22 b FN(E)2066 1876 y FD(2)450 2110 y FO(It)k(is)f(often)g(con)n (v)n(enien)n(t)g(to)g(pro)n(v)n(e)f(that)h(t)n(w)n(o)g FN(\025)p FO(-expressions)e(are)i(equal)f(using)h(this)h(prop)r(ert)n (y)-7 b(,)450 2210 y(i.e.)28 b(to)f(pro)n(v)n(e)f FN(E)970 2222 y FD(1)1031 2210 y FO(=)c FN(E)1179 2222 y FD(2)1244 2210 y FO(b)n(y)28 b(pro)n(ving)e FN(E)1721 2222 y FD(1)1786 2210 y FN(V)42 b FO(=)22 b FN(E)2024 2222 y FD(2)2089 2210 y FN(V)47 b FO(for)27 b(some)g FN(V)46 b FO(not)28 b(o)r(ccuring)e(free)i(in)f FN(E)3412 2222 y FD(1)450 2310 y FO(or)g FN(E)613 2322 y FD(2)650 2310 y FO(.)37 b(W)-7 b(e)28 b(will)g(refer)f(to)g(suc)n(h)h(pro)r(ofs)e(as)h(b)r (eing)h FE(by)i(extensionality)p FO(.)450 2579 y FL(Exercise)h(9)450 2679 y FO(Sho)n(w)c(that)1066 2849 y(\()p FN(\025f)37 b(g)30 b(x:)e(f)36 b(x)28 b FO(\()p FN(g)j(x)p FO(\)\))e(\()p FN(\025x)f(y)s(:)g(x)p FO(\))g(\()p FN(\025x)h(y)s(:)f(x)p FO(\))51 b(=)f FN(\025x:)29 b(x)450 3068 y Fy(2)450 3614 y FG(1.8)135 b(Substitution)450 3832 y FO(A)n(t)27 b(the)f(b)r (eginning)g(of)h(Section)f(1.4)f FN(E)5 b FJ([)p FN(E)1780 3802 y FC(0)1803 3832 y FN(=V)19 b FJ(])25 b FO(w)n(as)h(de\014ned)g (to)g(mean)g(the)h(result)f(of)g(substi-)450 3932 y(tuting)h FN(E)764 3902 y FC(0)814 3932 y FO(for)f(eac)n(h)f FE(fr)l(e)l(e)33 b FO(o)r(ccurrence)25 b(of)i FN(V)45 b FO(in)27 b FN(E)5 b FO(.)36 b(The)27 b(substitution)g(w)n(as)e(said)h(to)g(b)r(e)h(v)-5 b(alid)450 4031 y(if)33 b(no)e(free)h(v)-5 b(ariable)31 b(in)i FN(E)1298 4001 y FC(0)1353 4031 y FO(b)r(ecame)f(b)r(ound)h(in)f FN(E)5 b FJ([)p FN(E)2193 4001 y FC(0)2216 4031 y FN(=V)19 b FJ(])o FO(.)51 b(In)32 b(the)h(de\014nitions)f(of)g FN(\013)p FO(-)g(and)450 4131 y FN(\014)t FO(-con)n(v)n(ersion,)22 b(it)j(w)n(as)e(stipulated)h(that)g(the)g(substitutions)h(in)n(v)n(olv) n(ed)d(m)n(ust)i(b)r(e)h(v)-5 b(alid.)35 b(Th)n(us,)450 4231 y(for)27 b(example,)g(it)h(w)n(as)f(only)g(the)h(case)f(that)1443 4460 y(\()p FN(\025V)5 b(:)28 b(E)1688 4472 y FD(1)1726 4460 y FO(\))g FN(E)1847 4472 y FD(2)1908 4460 y FK(\000)-15 b(!)1954 4514 y Fu(\014)2064 4460 y FN(E)2125 4472 y FD(1)2163 4460 y FJ([)p FN(E)2268 4472 y FD(2)2305 4460 y FN(=V)18 b FJ(])450 4734 y FO(as)27 b(long)g(as)g(the)h(substitution) g FN(E)1500 4746 y FD(1)1537 4734 y FJ([)p FN(E)1642 4746 y FD(2)1680 4734 y FN(=V)18 b FJ(])27 b FO(w)n(as)g(v)-5 b(alid.)450 4851 y(It)37 b(is)g(v)n(ery)f(con)n(v)n(enien)n(t)f(to)i (extend)g(the)g(meaning)g(of)g FN(E)5 b FJ([)o FN(E)2416 4820 y FC(0)2440 4851 y FN(=V)18 b FJ(])36 b FO(so)h(that)g(w)n(e)f (don't)h(ha)n(v)n(e)450 4950 y(to)f(w)n(orry)f(ab)r(out)h(v)-5 b(alidit)n(y)e(.)63 b(This)37 b(is)f(ac)n(hiev)n(ed)f(b)n(y)h(the)h (de\014nition)g(b)r(elo)n(w)f(whic)n(h)g(has)g(the)450 5050 y(prop)r(ert)n(y)26 b(that)i(for)f FE(al)t(l)i FO(expressions)d FN(E)5 b FO(,)28 b FN(E)1824 5062 y FD(1)1889 5050 y FO(and)g FN(E)2112 5062 y FD(2)2177 5050 y FO(and)f FE(al)t(l)38 b FO(v)-5 b(ariables)26 b FN(V)46 b FO(and)28 b FN(V)3131 5020 y FC(0)3154 5050 y FO(:)796 5279 y(\()p FN(\025V)5 b(:)28 b(E)1041 5291 y FD(1)1079 5279 y FO(\))g FN(E)1200 5291 y FD(2)1260 5279 y FK(\000)-14 b(!)23 b FN(E)1478 5291 y FD(1)1516 5279 y FJ([)o FN(E)1620 5291 y FD(2)1658 5279 y FN(=V)18 b FJ(])110 b FO(and)h FN(\025V)5 b(:)28 b(E)g FK(\000)-14 b(!)23 b FN(\025V)2678 5245 y FC(0)2702 5279 y FN(:)k(E)5 b FJ([)p FN(V)2929 5245 y FC(0)2952 5279 y FN(=V)19 b FJ(])450 5525 y FO(T)-7 b(o)30 b(ensure)g(this)g (prop)r(ert)n(y)g(holds,)g FN(E)5 b FJ([)p FN(E)1763 5495 y FC(0)1786 5525 y FN(=V)19 b FJ(])30 b FO(is)g(de\014ned)h (recursiv)n(ely)d(on)j(the)f(structure)g(of)450 5625 y FN(E)j FO(as)27 b(follo)n(ws:)p eop %%Page: 11 16 11 15 bop 330 108 a FO(1.8.)64 b(Substitution)2276 b(11)p 330 249 3000 9 v 733 418 2194 4 v 731 518 4 100 v 1906 518 V 2925 518 V 731 618 V 783 588 a FN(E)p 1906 618 V 1113 w(E)5 b FJ([)p FN(E)2133 558 y FC(0)2156 588 y FN(=V)18 b FJ(])p 2925 618 V 731 717 V 1906 717 V 2925 717 V 733 721 2194 4 v 731 820 4 100 v 1906 820 V 2925 820 V 731 920 V 783 890 a FN(V)p 1906 920 V 1126 w(E)2023 860 y FC(0)p 2925 920 V 731 1020 V 1906 1020 V 2925 1020 V 731 1119 V 783 1089 a FN(V)850 1059 y FC(0)1098 1089 y FO(\(where)28 b FN(V)42 b FK(6)p FO(=)22 b FN(V)1615 1059 y FC(0)1638 1089 y FO(\))p 1906 1119 V 287 w FN(V)2024 1059 y FC(0)p 2925 1119 V 731 1219 V 1906 1219 V 2925 1219 V 731 1318 V 783 1289 a FN(E)844 1301 y FD(1)909 1289 y FN(E)970 1301 y FD(2)p 1906 1318 V 1957 1289 a FN(E)2018 1301 y FD(1)2056 1289 y FJ([)o FN(E)2165 1258 y FC(0)2189 1289 y FN(=V)c FJ(])27 b FN(E)2429 1301 y FD(2)2467 1289 y FJ([)o FN(E)2576 1258 y FC(0)2600 1289 y FN(=V)18 b FJ(])p 2925 1318 V 731 1418 V 1906 1418 V 2925 1418 V 731 1518 V 783 1488 a FN(\025V)5 b(:)28 b(E)996 1500 y FD(1)p 1906 1518 V 1957 1488 a FN(\025V)5 b(:)28 b(E)2170 1500 y FD(1)p 2925 1518 V 731 1617 V 1906 1617 V 2925 1617 V 731 1717 V 783 1687 a FN(\025V)898 1657 y FC(0)921 1687 y FN(:)g(E)1033 1699 y FD(1)1098 1687 y FO(\(where)g FN(V)42 b FK(6)p FO(=)22 b FN(V)1615 1657 y FC(0)1666 1687 y FO(and)p 1906 1717 V 157 w FN(\025V)2072 1657 y FC(0)2096 1687 y FN(:)27 b(E)2207 1699 y FD(1)2245 1687 y FJ([)p FN(E)2355 1657 y FC(0)2378 1687 y FN(=V)18 b FJ(])p 2925 1717 V 731 1817 V 1131 1787 a FN(V)1198 1757 y FC(0)1249 1787 y FO(is)27 b(not)h(free)f(in)h FN(E)1802 1757 y FC(0)1825 1787 y FO(\))p 1906 1817 V 2925 1817 V 731 1916 V 1906 1916 V 2925 1916 V 731 2016 V 783 1986 a FN(\025V)898 1956 y FC(0)921 1986 y FN(:)g(E)1033 1998 y FD(1)1098 1986 y FO(\(where)g FN(V)42 b FK(6)p FO(=)22 b FN(V)1615 1956 y FC(0)1666 1986 y FO(and)p 1906 2016 V 157 w FN(\025V)2072 1956 y FC(00)2115 1986 y FN(:)28 b(E)2227 1998 y FD(1)2264 1986 y FJ([)p FN(V)2375 1956 y FC(00)2417 1986 y FN(=V)2525 1956 y FC(0)2549 1986 y FJ(])o([)p FN(E)2702 1956 y FC(0)2725 1986 y FN(=V)19 b FJ(])p 2925 2016 V 731 2115 V 1131 2086 a FN(V)1198 2055 y FC(0)1249 2086 y FO(is)27 b(free)g(in)h FN(E)1654 2055 y FC(0)1678 2086 y FO(\))p 1906 2115 V 247 w(where)f FN(V)2264 2055 y FC(00)2334 2086 y FO(is)h(a)f(v)-5 b(ariable)p 2925 2115 V 731 2215 V 1906 2215 V 1957 2185 a(not)28 b(free)f(in)h FN(E)2427 2155 y FC(0)2478 2185 y FO(or)f FN(E)2641 2197 y FD(1)p 2925 2215 V 731 2315 V 1906 2315 V 2925 2315 V 733 2318 2194 4 v 330 2485 a FO(This)g(particular)e (de\014nition)j(of)f FN(E)5 b FJ([)o FN(E)1539 2455 y FC(0)1563 2485 y FN(=V)18 b FJ(])27 b FO(is)f(based)h(on)f(\(but)i(not) f(iden)n(tical)g(to\))g(the)g(one)g(in)330 2585 y(App)r(endix)i(C)e(of) h([2)o(].)330 2701 y(T)-7 b(o)29 b(illustrate)g(ho)n(w)g(this)g(w)n (orks)f(consider)g(\()p FN(\025y)s(:)i(y)i(x)p FO(\))p FJ([)p FN(y)s(=x)p FJ(])p FO(.)42 b(Since)29 b FN(y)j FO(is)d(free)h(in)f FN(y)s FO(,)h(the)f(last)330 2800 y(case)e(of)g(the)h(table)g(ab)r(o)n(v)n(e)e(applies.)37 b(Since)27 b FN(z)k FO(do)r(es)d(not)f(o)r(ccur)g(in)h FN(y)i(x)e FO(or)f FN(y)s FO(,)612 2980 y(\()p FN(\025y)s(:)h(y)j(x)p FO(\))p FJ([)p FN(y)s(=x)p FJ(])22 b FK(\021)h FN(\025z)t(:)k FO(\()p FN(y)k(x)p FO(\))p FJ([)p FN(z)t(=y)s FJ(])n([)p FN(y)s(=x)p FJ(])22 b FK(\021)h FN(\025z)t(:)k FO(\()p FN(z)32 b(x)p FO(\))p FJ([)p FN(y)s(=x)p FJ(])22 b FK(\021)h FN(\025z)t(:)k(z)k(y)330 3175 y FO(In)c(the)g(last)f(line)g(of)h(the)g (table)f(ab)r(o)n(v)n(e,)g(the)g(particular)g(c)n(hoice)f(of)i FN(V)2516 3145 y FC(00)2584 3175 y FO(is)g(not)f(sp)r(eci\014ed.)37 b(An)n(y)330 3275 y(v)-5 b(ariable)27 b(not)g(o)r(ccurring)f(in)i FN(E)1319 3245 y FC(0)1370 3275 y FO(or)f FN(E)1533 3287 y FD(1)1598 3275 y FO(will)h(do.)330 3391 y(A)h(go)r(o)r(d)e (discussion)h(of)g(substitution)h(can)f(b)r(e)h(found)g(in)g(the)f(b)r (o)r(ok)g(b)n(y)h(Hindley)f(and)h(Seldin)330 3491 y([19)o(])21 b(where)f(v)-5 b(arious)19 b(tec)n(hnical)h(prop)r(erties)g(are)f (stated)i(and)f(pro)n(v)n(ed.)33 b(The)21 b(follo)n(wing)e(exercise)330 3591 y(is)27 b(tak)n(en)g(from)h(that)g(b)r(o)r(ok.)330 3786 y FL(Exercise)j(10)330 3886 y FO(Use)d(the)g(table)f(ab)r(o)n(v)n (e)f(to)i(w)n(ork)e(out)408 4066 y(\(i\))43 b(\()p FN(\025y)s(:)28 b(x)g FO(\()p FN(\025x:)h(x)p FO(\)\))p FJ([)p FO(\()p FN(\025y)s(:)f(y)j(x)p FO(\))p FN(=x)p FJ(])p FO(.)385 4231 y(\(ii\))43 b(\()p FN(y)30 b FO(\()p FN(\025z)t(:)e(x)g(z)t FO(\)\))p FJ([)o FO(\()p FN(\025y)s(:)h(z)i(y)s FO(\))p FN(=x)p FJ(])o FO(.)330 4410 y Fy(2)330 4606 y FO(It)f(is)g(straigh)n (tforw)n(ard,)e(but)i(rather)f(tedious,)h(to)g(pro)n(v)n(e)e(from)i (the)g(de\014nition)g(of)g FN(E)5 b FJ([)p FN(E)3155 4576 y FC(0)3178 4606 y FN(=V)18 b FJ(])330 4706 y FO(just)28 b(giv)n(en)f(that)h(indeed)676 4885 y(\()p FN(\025V)5 b(:)28 b(E)921 4897 y FD(1)959 4885 y FO(\))g FN(E)1080 4897 y FD(2)1140 4885 y FK(\000)-14 b(!)23 b FN(E)1358 4897 y FD(1)1396 4885 y FJ([)o FN(E)1500 4897 y FD(2)1538 4885 y FN(=V)18 b FJ(])110 b FO(and)h FN(\025V)5 b(:)28 b(E)g FK(\000)-14 b(!)23 b FN(\025V)2558 4851 y FC(0)2582 4885 y FN(:)k(E)5 b FJ([)p FN(V)2809 4851 y FC(0)2832 4885 y FN(=V)19 b FJ(])330 5064 y FO(for)27 b(all)g(expressions)f FN(E)5 b FO(,)28 b FN(E)1183 5076 y FD(1)1248 5064 y FO(and)g FN(E)1471 5076 y FD(2)1536 5064 y FO(and)f(all)h(v)-5 b(ariables)26 b FN(V)47 b FO(and)27 b FN(V)2480 5034 y FC(0)2503 5064 y FO(.)330 5181 y(In)d(Chapter)g(3)g(it)g(will)h(b)r (e)f(sho)n(wn)f(ho)n(w)h(the)g(theory)g(of)g(com)n(binators)e(can)i(b)r (e)h(used)f(to)g(decom-)330 5280 y(p)r(ose)18 b(the)h(complexities)f (of)g(substitution)h(in)n(to)g(simpler)f(op)r(erations.)32 b(Instead)18 b(of)h(com)n(binators)330 5380 y(it)27 b(is)g(p)r(ossible) f(to)g(use)h(the)g(so-called)e FE(nameless)k(terms)k FO(of)27 b(De)g(Bruijn)g([6)o(].)37 b(De)27 b(Bruijn's)f(idea)330 5479 y(is)d(that)g(v)-5 b(ariables)21 b(can)i(b)r(e)g(though)n(t)g(of)g (as)f(`p)r(oin)n(ters')g(to)h(the)g FN(\025)p FO(s)g(that)g(bind)h (them.)36 b(Instead)22 b(of)330 5579 y(`lab)r(elling')h FN(\025)p FO(s)h(with)g(names)e(\(i.e.)36 b(b)r(ound)24 b(v)-5 b(ariables\))22 b(and)h(then)h(p)r(oin)n(ting)f(to)g(them)h(via) f(these)330 5679 y(names,)i(one)g(can)f(p)r(oin)n(t)h(to)g(the)g (appropriate)e FN(\025)j FO(b)n(y)e(giving)g(the)i(n)n(um)n(b)r(er)e (of)h(lev)n(els)f(`up)n(w)n(ards')330 5778 y(needed)k(to)g(reac)n(h)f (it.)39 b(F)-7 b(or)27 b(example,)h FN(\025x:)h(\025y)s(:)g(x)f(y)j FO(w)n(ould)d(b)r(e)g(represen)n(ted)f(b)n(y)h FN(\025\025)p FO(2)g(1.)38 b(As)28 b(a)p eop %%Page: 12 17 12 16 bop 450 92 a FO(12)1375 b(Chapter)27 b(1.)64 b(In)n(tro)r (duction)27 b(to)g(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a(more)e(complicated)h(example,)g(consider)f(the)i (expression)d(b)r(elo)n(w)i(in)h(whic)n(h)f(w)n(e)f(indicate)i(the)450 598 y(n)n(um)n(b)r(er)f(of)h(lev)n(els)f(separating)f(a)h(v)-5 b(ariable)26 b(from)i(the)g FN(\025)g FO(that)g(binds)g(it.)1846 751 y FD(3)1575 802 y Fz(z)p 1612 802 214 10 v 214 w(}|)p 1900 802 V 214 w({)1679 873 y FD(2)1575 925 y Fz(z)p 1612 925 46 10 v 46 w(}|)p 1732 925 V 46 w({)1512 1107 y FN(\025x:)h(\025y)s(:)f(x)g(y)i FO(\()p FN(\025y)s(:)f(x)f(y)i(y)s FO(\))1694 1257 y Fz(|)p 1731 1257 32 10 v 32 w({z)p 1837 1257 V 32 w(})1784 1334 y FD(1)2043 1257 y Fz(|)p 2080 1257 V 32 w({z)p 2186 1257 V 32 w(})2133 1334 y FD(1)450 1491 y FO(In)e(De)g(Bruijn's)f(notation)g(this)h(is)g FN(\025\025)p FO(2)g(1)f FN(\025)p FO(3)h(1)f(1.)450 1607 y(A)c(free)g(v)-5 b(ariable)21 b(in)i(an)g(expression)e(is)i (represen)n(ted)e(b)n(y)i(a)f(n)n(um)n(b)r(er)g(bigger)g(than)h(the)g (depth)g(of)450 1707 y FN(\025)p FO(s)28 b(ab)r(o)n(v)n(e)e(it;)i (di\013eren)n(t)g(free)f(v)-5 b(ariables)27 b(b)r(eing)g(assigned)g (di\013eren)n(t)g(n)n(um)n(b)r(ers.)37 b(F)-7 b(or)27 b(example,)1561 1889 y FN(\025x:)h FO(\()p FN(\025y)s(:)g(y)j(x)d(z)t FO(\))f FN(x)h(y)j(w)450 2072 y FO(w)n(ould)c(b)r(e)h(represen)n(ted)f (b)n(y)1676 2172 y FN(\025)p FO(\()p FN(\025)p FO(1)h(2)f(3\))h(1)f(2)g (4)450 2321 y(Since)j(there)f(are)f(only)h(t)n(w)n(o)g FN(\025)p FO(s)g(ab)r(o)n(v)n(e)f(the)i(o)r(ccurrence)e(of)h(3,)h(this) g(n)n(um)n(b)r(er)f(m)n(ust)g(denote)g(a)450 2421 y(free)c(v)-5 b(ariable;)24 b(similarly)g(there)h(is)g(only)f(one)h FN(\025)g FO(ab)r(o)n(v)n(e)f(the)h(second)f(o)r(ccurrence)g(of)h(2)f (and)h(the)450 2520 y(o)r(ccurrence)h(of)h(4,)g(so)f(these)h(to)r(o)g (m)n(ust)g(b)r(e)g(free)g(v)-5 b(ariables.)36 b(Note)27 b(that)g(2)g(could)g(not)g(b)r(e)g(used)450 2620 y(to)35 b(represen)n(t)e FN(w)38 b FO(since)c(this)h(had)g(already)e(b)r(een)j (used)e(to)h(represen)n(t)f(the)h(free)f FN(y)s FO(;)39 b(w)n(e)34 b(th)n(us)450 2720 y(c)n(hose)23 b(the)h(\014rst)g(a)n(v)-5 b(ailable)23 b(n)n(um)n(b)r(er)g(bigger)g(than)h(2)g(\(3)f(w)n(as)g (already)g(in)h(use)g(represen)n(ting)e FN(z)t FO(\).)450 2836 y(Care)29 b(m)n(ust)i(b)r(e)g(tak)n(en)f(to)g(assign)g(big)g (enough)g(n)n(um)n(b)r(ers)g(to)g(free)g(v)-5 b(ariables.)45 b(F)-7 b(or)29 b(example,)450 2935 y(the)f(\014rst)f(o)r(ccurrence)f (of)i FN(z)j FO(in)c FN(\025x:)i(z)i FO(\()p FN(\025y)s(:)d(z)t FO(\))f(could)g(b)r(e)h(represen)n(ted)e(b)n(y)i(2,)f(but)h(the)g (second)450 3035 y(o)r(ccurrence)e(requires)h(3;)g(since)g(they)h(are)f (the)h(same)f(v)-5 b(ariable)26 b(w)n(e)h(m)n(ust)h(use)g(3.)450 3234 y FL(Example:)39 b FO(With)d(De)g(Bruijn's)f(sc)n(heme)f FN(\025x:)i(x)g FO(\()p FN(\025y)s(:)f(x)h(y)i(y)s FO(\))d(w)n(ould)f (b)r(e)i(represen)n(ted)d(b)n(y)450 3334 y FN(\025)p FO(1\()p FN(\025)p FO(2)28 b(1)f(1\).)37 b Fy(2)450 3533 y FL(Exercise)31 b(11)450 3633 y FO(What)d FN(\025)p FO(-expression)e(is)i(represen)n(ted)e(b)n(y)h FN(\025)p FO(2\()p FN(\025)p FO(2\)?)38 b Fy(2)450 3832 y FL(Exercise)31 b(12)450 3932 y FO(Describ)r(e)c(an)f(algorithm)f(for)h(computating)g (the)h(De)g(Bruijn)g(represen)n(tation)e(of)h(the)h(expres-)450 4031 y(sion)g FN(E)5 b FJ([)p FN(E)797 4001 y FC(0)820 4031 y FN(=V)19 b FJ(])27 b FO(from)g(the)h(represen)n(tations)e(of)h FN(E)33 b FO(and)27 b FN(E)2330 4001 y FC(0)2354 4031 y FO(.)37 b Fy(2)p eop %%Page: 13 18 13 17 bop 2836 498 a FS(Chapter)38 b(2)p 330 609 3000 9 v 330 861 a FP(Represen)-5 b(ting)66 b(Things)f(in)g(the)330 1069 y FI(\025)p FP(-calculus)p 330 1193 V 330 1683 a FO(The)37 b FN(\025)p FO(-calculus)f(app)r(ears)g(at)g(\014rst)h(sigh)n (t)f(to)h(b)r(e)g(a)f(v)n(ery)g(primitiv)n(e)g(language.)63 b(Ho)n(w)n(ev)n(er,)330 1782 y(it)31 b(can)g(b)r(e)h(used)f(to)g (represen)n(t)e(most)i(of)g(the)h(ob)5 b(jects)30 b(and)h(structures)g (needed)g(for)f(mo)r(dern)330 1882 y(programming.)37 b(The)28 b(idea)g(is)h(to)f(co)r(de)g(these)g(ob)5 b(jects)28 b(and)h(structures)e(in)i(suc)n(h)f(a)g(w)n(a)n(y)f(that)330 1982 y(they)i(ha)n(v)n(e)f(the)i(required)e(prop)r(erties.)40 b(F)-7 b(or)28 b(example,)h(to)g(represen)n(t)f(the)i(truth)f(v)-5 b(alues)29 b FE(true)330 2081 y FO(and)23 b FE(false)31 b FO(and)24 b(the)f(Bo)r(olean)g(function)h FK(:)g FO(\(`not'\),)h FN(\025)p FO(-expressions)d FL(true)p FO(,)i FL(false)f FO(and)h FL(not)f FO(are)330 2181 y(devised)k(with)h(the)g(prop)r (erties)f(that:)1511 2370 y FL(not)32 b(true)23 b FO(=)g FL(false)1511 2470 y(not)32 b(false)23 b FO(=)f FL(true)330 2681 y FO(T)-7 b(o)37 b(represen)n(t)f(the)h(Bo)r(olean)f(function)i FK(^)g FO(\(`and'\))f(a)g FN(\025)p FO(-expression)f FL(and)h FO(is)h(devised)e(suc)n(h)330 2781 y(that:)1391 2877 y FL(and)d(true)f(true)23 b FO(=)g FL(true)1391 2977 y(and)33 b(true)f(false)22 b FO(=)h FL(false)1391 3076 y(and)33 b(false)e(true)23 b FO(=)g FL(false)1391 3176 y(and)33 b(false)e(false)23 b FO(=)f FL(false)330 3344 y FO(and)27 b(to)h(represen)n(t)e FK(_)i FO(\(`or'\))g(an)f (expression)f FL(or)i FO(suc)n(h)f(that:)1424 3537 y FL(or)32 b(true)g(true)23 b FO(=)g FL(true)1424 3637 y(or)32 b(true)g(false)23 b FO(=)f FL(true)1424 3737 y(or)32 b(false)f(true)24 b FO(=)e FL(true)1424 3836 y(or)32 b(false)f(false)23 b FO(=)f FL(false)330 4044 y FO(The)27 b FN(\025)p FO(-expressions)e(used)i(to)g(represen)n(t)f (things)h(ma)n(y)f(app)r(ear)g(completely)h(unmotiv)-5 b(ated)27 b(at)330 4143 y(\014rst.)37 b(Ho)n(w)n(ev)n(er,)25 b(the)j(de\014nitions)g(are)f(c)n(hosen)f(so)h(that)h(they)g(w)n(ork)e (together)h(in)h(unison.)330 4260 y(W)-7 b(e)28 b(will)g(write)1439 4377 y FJ(LET)e FK(\030)d FO(=)g FN(\025)p FM(-expression)330 4544 y FO(to)36 b(in)n(tro)r(duce)g FK(\030)f FO(as)h(a)f(new)h (notation.)62 b(Usually)35 b FK(\030)h FO(will)g(just)h(b)r(e)f(a)g (name)g(suc)n(h)f(as)h FL(true)330 4644 y FO(or)31 b FL(and)p FO(.)49 b(Suc)n(h)31 b(names)g(are)g(written)h(in)f FL(b)s(old)g FO(face,)h(or)f(underlined,)i(to)e(distinguish)h(them)330 4743 y(from)e(v)-5 b(ariables.)45 b(Th)n(us,)31 b(for)f(example,)h FE(true)36 b FO(is)31 b(a)f(v)-5 b(ariable)30 b(but)h FL(true)g FO(is)f(the)h FN(\025)p FO(-expression)330 4843 y FN(\025x:)41 b(\025y)s(:)f(x)g FO(\(see)g(Section)g(2.1)f(b)r (elo)n(w\))g(and)h(2)f(is)h(a)f(n)n(um)n(b)r(er)h(but)g(2)p 2549 4856 42 4 v 40 w(is)f(the)h FN(\025)p FO(-expression)330 4943 y FN(\025f)d(x:)28 b(f)9 b FO(\()p FN(f)36 b(x)p FO(\))28 b(\(see)g(Section)f(2.3\).)330 5059 y(Sometimes)j FK(\030)f FO(will)h(b)r(e)g(a)f(more)g(complicated)g(form)g(lik)n(e)g (the)h(conditional)f(notation)g(\()p FN(E)j FK(!)330 5158 y FN(E)391 5170 y FD(1)452 5158 y FK(j)23 b FN(E)559 5170 y FD(2)596 5158 y FO(\).)330 5475 y FG(2.1)135 b(T)-11 b(ruth-v)k(alues)44 b(and)h(the)g(conditional)330 5679 y FO(This)34 b(section)f(de\014nes)h FN(\025)p FO(-expressions)f FL(true)p FO(,)i FL(false)p FO(,)h FL(not)d FO(and)h(\()p FN(E)39 b FK(!)34 b FN(E)2727 5691 y FD(1)2798 5679 y FK(j)f FN(E)2915 5691 y FD(2)2953 5679 y FO(\))h(with)h(the)330 5778 y(follo)n(wing)27 b(prop)r(erties:)1788 5988 y(13)p eop %%Page: 14 19 14 18 bop 450 92 a FO(14)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 1524 610 a FL(not)j(true)24 b FO(=)e FL(false)1524 710 y(not)31 b(false)23 b FO(=)g FL(true)1524 909 y FO(\()p FL(true)g FK(!)g FN(E)1919 921 y FD(1)1980 909 y FK(j)g FN(E)2087 921 y FD(2)2125 909 y FO(\))g(=)g FN(E)2329 921 y FD(1)1524 1008 y FO(\()p FL(false)g FK(!)g FN(E)1930 1020 y FD(1)1990 1008 y FK(j)g FN(E)2097 1020 y FD(2)2135 1008 y FO(\))g(=)g FN(E)2339 1020 y FD(2)450 1205 y FO(The)35 b FN(\025)p FO(-expressions)f FL(true)h FO(and)g FL(false)g FO(represen)n(t)f(the)h(truth-v)-5 b(alues)35 b FE(true)41 b FO(and)34 b FE(false)6 b FO(,)39 b FL(not)450 1304 y FO(represen)n(ts)23 b(the)i(negation)f(function)i FK(:)f FO(and)f(\()p FN(E)29 b FK(!)23 b FN(E)2162 1316 y FD(1)2222 1304 y FK(j)g FN(E)2329 1316 y FD(2)2367 1304 y FO(\))i(represen)n(ts)e (the)i(conditional)g(`if)450 1404 y FN(E)33 b FO(then)28 b FN(E)794 1416 y FD(1)859 1404 y FO(else)f FN(E)1077 1416 y FD(2)1115 1404 y FO('.)450 1520 y(There)f(are)g(in\014nitely)i (man)n(y)e(di\013eren)n(t)h(w)n(a)n(ys)f(of)g(represen)n(ting)g(the)h (truth-v)-5 b(alues)27 b(and)f(nega-)450 1620 y(tion)e(that)g(w)n(ork;) g(the)g(ones)f(used)h(here)g(are)e(traditional)h(and)h(ha)n(v)n(e)f(b)r (een)h(dev)n(elop)r(ed)g(o)n(v)n(er)e(the)450 1719 y(y)n(ears)k(b)n(y)h (logicians.)p 450 1880 2976 4 v 448 2545 4 665 v 1446 2008 a FJ(LET)g FL(true)c FO(=)g FN(\025x:)28 b(\025y)s(:)g(x)1446 2208 y FJ(LET)f FL(false)22 b FO(=)h FN(\025x:)29 b(\025y)s(:)e(y)1446 2407 y FJ(LET)g FL(not)c FO(=)f FN(\025t:)29 b(t)e FL(false)32 b(true)p 3423 2545 V 450 2548 2976 4 v 450 2747 a FO(It)h(is)f(easy)g (to)g(use)h(the)g(rules)e(of)i FN(\025)p FO(-con)n(v)n(ersion)d(to)j (sho)n(w)e(that)i(these)g(de\014nitions)f(ha)n(v)n(e)g(the)450 2847 y(desired)27 b(prop)r(erties.)36 b(F)-7 b(or)27 b(example:)1303 3052 y FL(not)k(true)24 b FO(=)e(\()p FN(\025t:)29 b(t)e FL(false)32 b(true)p FO(\))c FL(true)187 b FO(\(de\014nition)28 b(of)g FL(not)p FO(\))1669 3177 y(=)22 b FL(true)32 b(false)g(true)580 b FO(\()p FN(\014)t FO(-con)n(v)n(ersion\))1669 3301 y(=)22 b(\()p FN(\025x:)29 b(\025y)s(:)f(x)p FO(\))h FL(false)i(true)175 b FO(\(de\014nition)28 b(of)f FL(true)q FO(\))1669 3426 y(=)22 b(\()p FN(\025y)s(:)29 b FL(false)o FO(\))f FL(true)582 b FO(\()p FN(\014)t FO(-con)n(v)n(ersion\))1669 3550 y(=)22 b FL(false)990 b FO(\()p FN(\014)t FO(-con)n(v)n(ersion\))450 3755 y(Similarly)27 b FL(not)32 b(false)22 b FO(=)h FL(true)p FO(.)450 3872 y(Conditional)k(expressions)f(\()p FN(E)i FK(!)23 b FN(E)1623 3884 y FD(1)1684 3872 y FK(j)g FN(E)1791 3884 y FD(2)1829 3872 y FO(\))28 b(can)f(b)r(e)h(de\014ned)g(as)f(follo)n(ws:)p 450 4010 V 448 4358 4 349 v 1348 4158 a FJ(LET)g FO(\()p FN(E)h FK(!)23 b FN(E)1795 4170 y FD(1)1856 4158 y FK(j)g FN(E)1963 4170 y FD(2)2001 4158 y FO(\))g(=)g(\()p FN(E)33 b(E)2331 4170 y FD(1)2396 4158 y FN(E)2457 4170 y FD(2)2494 4158 y FO(\))p 3423 4358 V 450 4362 2976 4 v 450 4538 a(This)h(means)f(that)h(for)f(an)n(y)g FN(\025)p FO(-expressions)f FN(E)5 b FO(,)36 b FN(E)2089 4550 y FD(1)2160 4538 y FO(and)e FN(E)2389 4550 y FD(2)2426 4538 y FO(,)i(\()p FN(E)i FK(!)33 b FN(E)2793 4550 y FD(1)2864 4538 y FK(j)h FN(E)2982 4550 y FD(2)3019 4538 y FO(\))g(stands)g(for)450 4637 y(\()p FN(E)f(E)637 4649 y FD(1)702 4637 y FN(E)763 4649 y FD(2)801 4637 y FO(\).)450 4754 y(The)28 b(conditional)f (notation)g(b)r(eha)n(v)n(es)f(as)h(it)h(should:)1287 4937 y(\()p FL(true)23 b FK(!)h FN(E)1683 4949 y FD(1)1743 4937 y FK(j)f FN(E)1850 4949 y FD(2)1888 4937 y FO(\))g(=)g FL(true)32 b FN(E)2297 4949 y FD(1)2362 4937 y FN(E)2423 4949 y FD(2)1943 5062 y FO(=)23 b(\()p FN(\025x)29 b(y)s(:)e(x)p FO(\))h FN(E)2449 5074 y FD(1)2515 5062 y FN(E)2576 5074 y FD(2)1943 5186 y FO(=)23 b FN(E)2092 5198 y FD(1)450 5388 y FO(and)1284 5499 y(\()p FL(false)f FK(!)i FN(E)1690 5511 y FD(1)1750 5499 y FK(j)f FN(E)1857 5511 y FD(2)1895 5499 y FO(\))g(=)g FL(false)31 b FN(E)2314 5511 y FD(1)2379 5499 y FN(E)2440 5511 y FD(2)1950 5624 y FO(=)23 b(\()p FN(\025x)29 b(y)s(:)e(y)s FO(\))h FN(E)2453 5636 y FD(1)2518 5624 y FN(E)2579 5636 y FD(2)1950 5748 y FO(=)23 b FN(E)2099 5760 y FD(2)p eop %%Page: 15 20 15 19 bop 330 92 a FO(2.2.)64 b(P)n(airs)25 b(and)j(tuples)2133 b(15)p 330 249 3000 9 v 330 498 a FL(Exercise)31 b(13)330 598 y FO(Let)d FL(and)g FO(b)r(e)g(the)g FN(\025)p FO(-expression)e FN(\025x)j(y)s(:)e FO(\()p FN(x)d FK(!)f FN(y)j FK(j)d FL(false)o FO(\).)38 b(Sho)n(w)27 b(that:)1391 775 y FL(and)33 b(true)f(true)23 b FO(=)g FL(true)1391 874 y(and)33 b(true)f(false)22 b FO(=)h FL(false)1391 974 y(and)33 b(false)e(true)23 b FO(=)g FL(false)1391 1074 y(and)33 b(false)e(false)23 b FO(=)f FL(false)330 1227 y Fy(2)330 1421 y FL(Exercise)31 b(14)330 1521 y FO(Devise)d(a)f FN(\025)p FO(-expression)f FL(or)i FO(suc)n(h)f(that:)1424 1693 y FL(or)32 b(true)g(true)23 b FO(=)g FL(true)1424 1793 y(or)32 b(true)g(false)23 b FO(=)f FL(true)1424 1892 y(or)32 b(false)f(true)24 b FO(=)e FL(true)1424 1992 y(or)32 b(false)f(false)23 b FO(=)f FL(false)330 2145 y Fy(2)330 2436 y FG(2.2)135 b(P)l(airs)46 b(and)f(tuples)330 2634 y FO(The)28 b(follo)n(wing)e(abbreviations)g(represen)n(t)h(pairs) f(and)i FN(n)p FO(-tuples)f(in)h(the)g FN(\025)p FO(-calculus.)p 330 2741 2976 4 v 328 3405 4 665 v 1311 2869 a FJ(LET)e FL(fst)d FO(=)g FN(\025p:)28 b(p)f FL(true)1311 3068 y FJ(LET)f FL(snd)d FO(=)g FN(\025p:)k(p)h FL(false)1311 3267 y FJ(LET)e FO(\()p FN(E)1562 3279 y FD(1)1600 3267 y FN(;)14 b(E)1698 3279 y FD(2)1735 3267 y FO(\))24 b(=)e FN(\025f)t(:)28 b(f)37 b(E)2161 3279 y FD(1)2226 3267 y FN(E)2287 3279 y FD(2)p 3303 3405 V 330 3409 2976 4 v 330 3558 a FO(\()p FN(E)423 3570 y FD(1)461 3558 y FN(;)14 b(E)559 3570 y FD(2)596 3558 y FO(\))46 b(is)f(a)g FN(\025)p FO(-expression)f(represen)n(ting)f(an)i(ordered)f(pair)h (whose)f(\014rst)h(comp)r(onen)n(t)330 3658 y(\(i.e.)34 b FN(E)563 3670 y FD(1)601 3658 y FO(\))g(is)f(accessed)g(with)h(the)g (function)g FL(fst)g FO(and)g(whose)f(second)g(comp)r(onen)n(t)g (\(i.e.)h FN(E)3260 3670 y FD(2)3298 3658 y FO(\))330 3757 y(is)d(accessed)e(with)j FL(snd)o FO(.)47 b(The)31 b(follo)n(wing)e(calculation)h(sho)n(ws)g(ho)n(w)g(the)h(v)-5 b(arious)30 b(de\014nitions)330 3857 y(co-op)r(erate)c(together)h(to)g (giv)n(e)g(the)h(righ)n(t)e(results.)1172 4029 y FL(fst)i FO(\()p FN(E)1397 4041 y FD(1)1435 4029 y FN(;)14 b(E)1533 4041 y FD(2)1570 4029 y FO(\))24 b(=)e(\()p FN(\025p:)28 b(p)g FL(true)p FO(\))g(\()p FN(E)2282 4041 y FD(1)2320 4029 y FN(;)14 b(E)2418 4041 y FD(2)2455 4029 y FO(\))1626 4154 y(=)22 b(\()p FN(E)1806 4166 y FD(1)1844 4154 y FN(;)14 b(E)1942 4166 y FD(2)1979 4154 y FO(\))28 b FL(true)1626 4279 y FO(=)22 b(\()p FN(\025f)t(:)29 b(f)36 b(E)2028 4291 y FD(1)2093 4279 y FN(E)2154 4291 y FD(2)2192 4279 y FO(\))28 b FL(true)1626 4403 y FO(=)22 b FL(true)32 b FN(E)1979 4415 y FD(1)2045 4403 y FN(E)2106 4415 y FD(2)1626 4528 y FO(=)22 b(\()p FN(\025x)29 b(y)s(:)e(x)p FO(\))i FN(E)2132 4540 y FD(1)2197 4528 y FN(E)2258 4540 y FD(2)1626 4652 y FO(=)22 b FN(E)1774 4664 y FD(1)330 4843 y FL(Exercise)31 b(15)330 4942 y FO(Sho)n(w)c(that)h FL(snd)p FO(\()p FN(E)966 4954 y FD(1)1004 4942 y FN(;)14 b(E)1102 4954 y FD(2)1139 4942 y FO(\))23 b(=)g FN(E)1343 4954 y FD(2)1380 4942 y FO(.)330 5059 y Fy(2)330 5253 y FO(A)c(pair)f(is)g(a)g(data-structure)f(with)i(t)n(w)n(o)f(comp)r (onen)n(ts.)33 b(The)18 b(generalization)f(to)h FN(n)h FO(comp)r(onen)n(ts)330 5353 y(is)27 b(called)h(an)f FN(n)p FE(-tuple)33 b FO(and)28 b(is)f(easily)g(de\014ned)h(in)g(terms) f(of)h(pairs.)p 330 5460 V 328 5808 4 349 v 846 5608 a FJ(LET)e FO(\()p FN(E)1097 5620 y FD(1)1135 5608 y FN(;)14 b(E)1233 5620 y FD(2)1270 5608 y FN(;)g(:)g(:)g(:)g(;)g(E)1516 5620 y Fu(n)1561 5608 y FO(\))24 b(=)e(\()p FN(E)1797 5620 y FD(1)1835 5608 y FN(;)14 b FO(\()p FN(E)1965 5620 y FD(2)2003 5608 y FN(;)g FO(\()p FK(\001)g(\001)g(\001)g FO(\()p FN(E)2276 5620 y Fu(n)p FC(\000)p FD(1)2406 5608 y FN(;)g(E)2504 5620 y Fu(n)2550 5608 y FO(\))g FK(\001)g(\001)g(\001)p FO(\)\)\))p 3303 5808 V 330 5812 2976 4 v eop %%Page: 16 21 16 20 bop 450 92 a FO(16)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a(\()p FN(E)543 510 y FD(1)581 498 y FN(;)14 b(:)g(:)g(:)f(;)h(E)826 510 y Fu(n)872 498 y FO(\))28 b(is)f(an)g FN(n)p FO(-)p FE(tuple)34 b FO(with)28 b FE(c)l(omp)l(onents)57 b FN(E)2141 510 y FD(1)2179 498 y FO(,)27 b FN(:)14 b(:)g(:)p FO(,)28 b FN(E)2438 510 y Fu(n)2511 498 y FO(and)f FE(length)35 b FN(n)p FO(.)i(P)n(airs)25 b(are)i(2-)450 598 y(tuples.)36 b(The)25 b(abbreviations)e(de\014ned)i(next)g(pro)n(vide)e(a)i(w)n(a)n(y)e(of)i (extracting)f(the)h(comp)r(onen)n(ts)450 697 y(of)j FN(n)p FO(-tuples.)p 450 844 2976 4 v 448 2221 4 1377 v 917 1010 a FJ(LET)e FN(E)1164 935 y Fu(n)1164 1010 y FK(#)d FO(1)f(=)h FL(fst)32 b FN(E)917 1247 y FJ(LET)26 b FN(E)1164 1172 y Fu(n)1164 1247 y FK(#)d FO(2)f(=)h FL(fst)p FO(\()p FL(snd)32 b FN(E)5 b FO(\))1000 1335 y(.)1000 1368 y(.)1000 1402 y(.)917 1539 y FJ(LET)26 b FN(E)1164 1465 y Fu(n)1164 1539 y FK(#)d FN(i)f FO(=)h FL(fst)p FO(\()p FL(snd)p FO(\()p FL(snd)p FO(\()p FK(\001)14 b(\001)g(\001)g FO(\()p FL(snd)1504 1595 y Fz(|)p 1541 1595 245 10 v 245 w({z)p 1860 1595 V 245 w(})1689 1679 y Fu(i)p FC(\000)p FD(1)28 b FB(snd)q FD(s)2184 1539 y FN(E)5 b FO(\))14 b FK(\001)g(\001)g(\001)q FO(\)\)\))139 b(\(if)28 b FN(i)23 b(<)f(n)p FO(\))1000 1753 y(.)1000 1786 y(.)1000 1820 y(.)917 1957 y FJ(LET)k FN(E)1164 1883 y Fu(n)1164 1957 y FK(#)d FN(n)g FO(=)f FL(snd)p FO(\()p FL(snd)p FO(\()p FN(:)14 b(:)g(:)g FO(\()p FL(snd)1389 2013 y Fz(|)p 1426 2013 V 245 w({z)p 1745 2013 V 245 w(})1565 2098 y Fu(n)p FC(\000)p FD(1)28 b FB(snd)p FD(s)2069 1957 y FN(E)5 b FO(\))14 b FN(:)g(:)g(:)q FO(\)\)\))p 3423 2221 4 1377 v 450 2224 2976 4 v 450 2409 a(It)28 b(is)f(easy)g(to)h(see)f(that)h(these)f(de\014nitions)h(w) n(ork,)e(for)h(example:)1071 2694 y(\()p FN(E)1164 2706 y FD(1)1202 2694 y FN(;)14 b(E)1300 2706 y FD(2)1337 2694 y FN(;)g(:)g(:)g(:)g(;)g(E)1583 2706 y Fu(n)1628 2694 y FO(\))1684 2620 y Fu(n)1683 2694 y FK(#)23 b FO(1)g(=)f(\()p FN(E)1993 2706 y FD(1)2031 2694 y FN(;)14 b FO(\()p FN(E)2161 2706 y FD(2)2199 2694 y FN(;)g FO(\()p FN(:)g(:)g(:)p FO(\)\)\))2485 2620 y Fu(n)2485 2694 y FK(#)22 b FO(1)1813 2819 y(=)g FL(fst)28 b FO(\()p FN(E)2125 2831 y FD(1)2163 2819 y FN(;)14 b FO(\()p FN(E)2293 2831 y FD(2)2330 2819 y FN(;)g FO(\()p FN(:)g(:)g(:)p FO(\)\)\))1813 2943 y(=)22 b FN(E)1961 2955 y FD(1)1071 3239 y FO(\()p FN(E)1164 3251 y FD(1)1202 3239 y FN(;)14 b(E)1300 3251 y FD(2)1337 3239 y FN(;)g(:)g(:)g(:)g(;)g(E)1583 3251 y Fu(n)1628 3239 y FO(\))1684 3164 y Fu(n)1683 3239 y FK(#)23 b FO(2)g(=)f(\()p FN(E)1993 3251 y FD(1)2031 3239 y FN(;)14 b FO(\()p FN(E)2161 3251 y FD(2)2199 3239 y FN(;)g FO(\()p FN(:)g(:)g(:)p FO(\)\)\))2485 3164 y Fu(n)2485 3239 y FK(#)22 b FO(2)1813 3363 y(=)g FL(fst)28 b FO(\()p FL(snd)f FO(\()p FN(E)2328 3375 y FD(1)2366 3363 y FN(;)14 b FO(\()p FN(E)2496 3375 y FD(2)2534 3363 y FN(;)g FO(\()p FN(:)g(:)g(:)p FO(\)\)\)\))1813 3488 y(=)22 b FL(fst)28 b FO(\()p FN(E)2125 3500 y FD(2)2163 3488 y FN(;)14 b FO(\()p FN(:)g(:)g(:)p FO(\)\))1813 3612 y(=)22 b FN(E)1961 3624 y FD(2)450 3861 y FO(In)28 b(general)e(\()p FN(E)933 3873 y FD(1)971 3861 y FN(;)14 b(E)1069 3873 y FD(2)1106 3861 y FN(;)g(:)g(:)g(:)g(;)g(E)1352 3873 y Fu(n)1397 3861 y FO(\))1453 3787 y Fu(n)1453 3861 y FK(#)22 b FN(i)h FO(=)f FN(E)1717 3873 y Fu(i)1773 3861 y FO(for)27 b(all)g FN(i)h FO(suc)n(h)f(that)h(1)22 b FK(\024)h FN(i)g FK(\024)f FN(n)p FO(.)450 4148 y FL(Con)m(v)m(en)m (tion)450 4281 y FO(W)-7 b(e)30 b(will)g(usually)g(just)g(write)g FN(E)i FK(#)26 b FN(i)k FO(instead)g(of)g FN(E)2121 4207 y Fu(n)2121 4281 y FK(#)c FN(i)k FO(when)g(it)g(is)g(clear)f(from)g (the)h(con)n(text)450 4381 y(what)e FN(n)f FO(should)g(b)r(e.)38 b(F)-7 b(or)27 b(example,)1173 4599 y(\()p FN(E)1266 4611 y FD(1)1304 4599 y FN(;)14 b(:)g(:)g(:)f(;)h(E)1549 4611 y Fu(n)1595 4599 y FO(\))23 b FK(#)g FN(i)50 b FO(=)g FN(E)1970 4611 y Fu(i)2081 4599 y FO(\(where)28 b(1)22 b FK(\024)h FN(i)f FK(\024)h FN(n)p FO(\))450 4967 y FG(2.3)135 b(Num)l(b)t(ers)450 5181 y FO(There)30 b(are)f(man)n(y)h(w)n (a)n(ys)e(to)i(represen)n(t)f(n)n(um)n(b)r(ers)h(b)n(y)g FN(\025)p FO(-expressions,)f(eac)n(h)h(with)h(their)f(o)n(wn)450 5280 y(adv)-5 b(an)n(tages)23 b(and)h(disadv)-5 b(an)n(tages)22 b([38,)i(22)o(].)36 b(The)25 b(goal)e(is)h(to)g(de\014ne)h(for)f(eac)n (h)f(n)n(um)n(b)r(er)i FN(n)f FO(a)g FN(\025)p FO(-)450 5380 y(expression)18 b FN(n)p 842 5393 50 4 v 19 w FO(that)i(represen)n (ts)e(it.)34 b(W)-7 b(e)20 b(also)e(w)n(an)n(t)h(to)g(de\014ne)h FN(\025)p FO(-expressions)d(to)j(represen)n(t)e(the)450 5479 y(primitiv)n(e)g(arithmetical)h(op)r(erations.)32 b(F)-7 b(or)18 b(example,)i(w)n(e)e(will)h(need)g FN(\025)p FO(-expressions)e FL(suc)p FO(,)k FL(pre)p FO(,)450 5579 y FL(add)32 b FO(and)g FL(iszero)f FO(represen)n(ting)f(the)i (successor)e(function)j(\()p FN(n)d FK(7!)g FN(n)21 b FO(+)f(1\),)33 b(the)f(predecessor)450 5679 y(function)26 b(\()p FN(n)d FK(7!)g FN(n)p FK(\000)p FO(1\),)i(addition)g(and)g(a)g (test)h(for)f(zero,)f(resp)r(ectiv)n(ely)-7 b(.)36 b(These)25 b FN(\025)p FO(-expressions)450 5778 y(will)j(represen)n(t)e(the)i(n)n (um)n(b)r(ers)f(correctly)f(if)i(they)g(ha)n(v)n(e)f(the)h(follo)n (wing)e(prop)r(erties:)p eop %%Page: 17 22 17 21 bop 330 108 a FO(2.3.)64 b(Num)n(b)r(ers)2397 b(17)p 330 249 3000 9 v 983 576 a FL(suc)28 b FN(n)p 1144 589 50 4 v 23 w FO(=)23 b FN(n)p FO(+)o(1)p 1305 596 156 4 v 110 w(\(for)28 b(all)f(n)n(um)n(b)r(ers)g FN(n)p FO(\))983 775 y FL(pre)h FN(n)p 1147 788 50 4 v 23 w FO(=)23 b FN(n)p FK(\000)o FO(1)p 1308 796 156 4 v 110 w(\(for)28 b(all)f(n)n(um)n(b)r(ers)g FN(n)p FO(\))983 975 y FL(add)i FN(m)p 1164 988 73 4 v 27 w(n)p 1264 988 50 4 v 23 w FO(=)23 b FN(m)p FO(+)o FN(n)p 1425 995 188 4 v 111 w FO(\(for)k(all)g(n)n(um)n(b)r(ers)g FN(m)h FO(and)f FN(n)p FO(\))983 1174 y FL(iszero)h FO(0)p 1249 1187 42 4 v 22 w(=)23 b FL(true)983 1373 y(iszero)28 b FO(\()p FL(suc)g FN(n)p 1442 1386 50 4 v -1 w FO(\))c(=)e FL(false)330 1529 y FO(The)j(represen)n(tation)f(of)i(n)n(um)n(b)r(ers) e(describ)r(ed)i(here)f(is)g(the)h(original)e(one)h(due)g(to)h(Ch)n (urc)n(h.)35 b(In)330 1629 y(order)27 b(to)h(explain)f(this)i(it)f(is)g (con)n(v)n(enien)n(t)f(to)h(de\014ne)g FN(f)2071 1598 y Fu(n)2144 1629 y FN(x)h FO(to)f(mean)f FN(n)h FO(applications)g(of)g FN(f)36 b FO(to)330 1728 y FN(x)p FO(.)h(F)-7 b(or)27 b(example,)1375 1828 y FN(f)1425 1794 y FD(5)1490 1828 y FN(x)51 b FO(=)f FN(f)9 b FO(\()p FN(f)g FO(\()p FN(f)g FO(\()p FN(f)g FO(\()p FN(f)36 b(x)p FO(\)\)\)\))330 1971 y(By)27 b(con)n(v)n(en)n(tion)f FN(f)925 1941 y FD(0)990 1971 y FN(x)i FO(is)g(de\014ned)f(to)h(mean)f FN(x)p FO(.)38 b(More)26 b(generally:)p 330 2073 2976 4 v 328 2650 4 578 v 1169 2201 a FJ(LET)g FN(E)1393 2171 y FD(0)1458 2201 y FN(E)1524 2171 y FC(0)1599 2201 y FO(=)50 b FN(E)1780 2171 y FC(0)1169 2400 y FJ(LET)26 b FN(E)1393 2370 y Fu(n)1466 2400 y FN(E)1532 2370 y FC(0)1607 2400 y FO(=)50 b FN(E)5 b FO(\()p FN(E)g FO(\()p FK(\001)14 b(\001)g(\001)g FO(\()p FN(E)1722 2456 y Fz(|)p 1759 2456 129 10 v 129 w({z)p 1962 2456 V 129 w(})1851 2534 y Fu(n)28 b Fr(E)7 b FD(s)2169 2400 y FN(E)2235 2370 y FC(0)2258 2400 y FO(\))14 b FK(\001)g(\001)g(\001)p FO(\)\))p 3303 2650 4 578 v 330 2653 2976 4 v 330 2804 a(Note)28 b(that)g FN(E)777 2774 y Fu(n)822 2804 y FO(\()p FN(E)5 b(E)986 2774 y FC(0)1010 2804 y FO(\))51 b(=)f FN(E)1274 2774 y Fu(n)p FD(+1)1431 2804 y FN(E)1497 2774 y FC(0)1571 2804 y FO(=)23 b FN(E)5 b FO(\()p FN(E)1823 2774 y Fu(n)1896 2804 y FN(E)1962 2774 y FC(0)1985 2804 y FO(\);)28 b(w)n(e)f(will)h(use)g(the)g(fact)f(later.)330 2992 y FL(Example:)1018 3092 y FN(f)1068 3057 y FD(4)1105 3092 y FN(x)51 b FO(=)f FN(f)9 b FO(\()p FN(f)g FO(\()p FN(f)g FO(\()p FN(f)36 b(x)p FO(\)\)\))52 b(=)e FN(f)9 b FO(\()p FN(f)2083 3057 y FD(3)2120 3092 y FN(x)p FO(\))52 b(=)e FN(f)2416 3057 y FD(3)2453 3092 y FO(\()p FN(f)36 b(x)p FO(\))330 3235 y Fy(2)330 3423 y FO(Using)c(the)h(notation)e (just)i(in)n(tro)r(duced)f(w)n(e)g(can)f(no)n(w)h(de\014ne)g(Ch)n(urc)n (h's)g(n)n(umerals.)49 b(Notice)330 3523 y(ho)n(w)24 b(the)h(de\014nition)h(of)e(the)i FN(\025)p FO(-expression)d FN(n)p 1712 3536 50 4 v 25 w FO(b)r(elo)n(w)h(enco)r(des)h(a)f(unary)g (represen)n(tation)f(of)i FN(n)p FO(.)p 330 3625 2976 4 v 328 4699 4 1074 v 1431 3753 a FJ(LET)h FO(0)p 1589 3766 42 4 v 23 w(=)d FN(\025f)36 b(x:)28 b(x)1431 3953 y FJ(LET)e FO(1)p 1589 3966 V 23 w(=)d FN(\025f)36 b(x:)28 b(f)37 b(x)1431 4152 y FJ(LET)26 b FO(2)p 1589 4165 V 23 w(=)d FN(\025f)36 b(x:)28 b(f)9 b FO(\()p FN(f)36 b(x)p FO(\))1514 4240 y(.)1514 4273 y(.)1514 4307 y(.)1431 4406 y FJ(LET)26 b FN(n)p 1589 4419 50 4 v 23 w FO(=)d FN(\025f)37 b(x:)28 b(f)2024 4376 y Fu(n)2096 4406 y FN(x)1514 4495 y FO(.)1514 4528 y(.)1514 4561 y(.)p 3303 4699 4 1074 v 330 4702 2976 4 v 330 4843 a(The)e(represen)n(tations)f (of)h FL(suc)p FO(,)h FL(add)g FO(and)f FL(iszero)g FO(are)f(no)n(w)h (magically)f(pulled)i(out)f(of)g(a)g(hat.)330 4942 y(The)39 b(b)r(est)g(w)n(a)n(y)e(to)h(see)g(ho)n(w)g(they)h(w)n(ork)e(is)h(to)h (think)g(of)f(them)h(as)f(op)r(erating)g(on)g(unary)330 5042 y(represen)n(tations)26 b(of)h(n)n(um)n(b)r(ers.)37 b(The)27 b(exercises)f(that)i(follo)n(w)f(should)g(help.)p 330 5144 V 328 5808 4 665 v 1153 5272 a FJ(LET)g FL(suc)c FO(=)f FN(\025n)28 b(f)37 b(x:)28 b(n)f(f)9 b FO(\()p FN(f)36 b(x)p FO(\))1153 5471 y FJ(LET)27 b FL(add)c FO(=)g FN(\025m)28 b(n)f(f)37 b(x:)28 b(m)f(f)37 b FO(\()p FN(n)27 b(f)37 b(x)p FO(\))1153 5670 y FJ(LET)27 b FL(iszero)22 b FO(=)h FN(\025n:)28 b(n)f FO(\()p FN(\025x:)i FL(false)p FO(\))f FL(true)p 3303 5808 V 330 5812 2976 4 v eop %%Page: 18 23 18 22 bop 450 92 a FO(18)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a FL(Exercise)j(16)450 598 y FO(Sho)n(w:)528 782 y(\(i\))43 b FL(suc)32 b FO(0)p 823 795 42 4 v 22 w(=)23 b(1)p 975 795 V 505 951 a(\(ii\))43 b FL(suc)32 b FO(5)p 823 964 V 22 w(=)23 b(6)p 975 964 V 482 1120 a(\(iii\))43 b FL(iszero)31 b FO(0)p 927 1133 V 22 w(=)23 b FL(true)485 1289 y FO(\(iv\))42 b FL(iszero)31 b FO(5)p 927 1302 V 22 w(=)23 b FL(false)508 1458 y FO(\(v\))42 b FL(add)28 b FO(0)p 838 1471 V 27 w(1)p 907 1471 V 22 w(=)23 b(1)p 1059 1471 V 485 1627 a(\(vi\))42 b FL(add)28 b FO(2)p 838 1640 V 27 w(3)p 907 1640 V 22 w(=)23 b(5)p 1059 1640 V 450 1811 a Fy(2)450 2012 y FL(Exercise)31 b(17)450 2112 y FO(Sho)n(w)c(for)g(all)g(n)n(um)n(b)r(ers)h FN(m)f FO(and)h FN(n)p FO(:)528 2296 y(\(i\))43 b FL(suc)32 b FN(n)p 823 2309 50 4 v 22 w FO(=)23 b FN(n)p FO(+)o(1)p 983 2316 156 4 v 505 2465 a(\(ii\))43 b FL(iszero)27 b FO(\()p FL(suc)32 b FN(n)p 1120 2478 50 4 v FO(\))23 b(=)g FL(false)482 2634 y FO(\(iii\))43 b FL(add)32 b FO(0)p 842 2647 42 4 v 27 w FN(n)p 911 2647 50 4 v 23 w FO(=)23 b FN(n)p 1072 2647 V 485 2803 a FO(\(iv\))42 b FL(add)32 b FN(m)p 842 2816 73 4 v 27 w FO(0)p 942 2816 42 4 v 23 w(=)23 b FN(m)p 1095 2816 73 4 v 508 2972 a FO(\(v\))42 b FL(add)32 b FN(m)p 842 2985 V 27 w(n)p 942 2985 50 4 v 23 w FO(=)23 b FN(m)18 b FO(+)g FN(n)p 1103 2992 225 4 v 450 3156 a Fy(2)450 3357 y FO(The)41 b(predecesor)e(function)j(is)f(harder)e(to)i(de\014ne)g(than)g(the)h (other)e(primitiv)n(e)h(functions.)450 3457 y(The)35 b(idea)g(is)g(that)h(the)g(predecessor)d(of)i FN(n)p 1790 3470 50 4 v 35 w FO(is)h(de\014ned)f(b)n(y)g(using)g FN(\025f)45 b(x:)35 b(f)2897 3427 y Fu(n)2978 3457 y FN(x)g FO(\(i.e.)61 b FN(n)p 3259 3470 V FO(\))35 b(to)450 3557 y(obtain)29 b(a)h(function)g(that)g(applies)g FN(f)38 b FO(only)29 b FN(n)p FK(\000)p FO(1)g(times.)44 b(The)30 b(tric)n(k)f(is)g(to)h(`thro)n(w)f(a)n(w)n(a)n(y')f(the)450 3656 y(\014rst)j(application)f(of)g FN(f)40 b FO(in)31 b FN(f)1385 3626 y Fu(n)1430 3656 y FO(.)46 b(T)-7 b(o)31 b(ac)n(hiev)n(e)e(this,)j(w)n(e)e(\014rst)h(de\014ne)g(a)f(function)i FL(prefn)f FO(that)450 3756 y(op)r(erates)26 b(on)i(pairs)e(and)i(has)f (the)h(prop)r(ert)n(y)e(that:)528 3940 y(\(i\))43 b FL(prefn)32 b FN(f)k FO(\()p FL(true)q FN(;)14 b(x)p FO(\))23 b(=)g(\()p FL(false)p FN(;)14 b(x)p FO(\))505 4109 y(\(ii\))43 b FL(prefn)32 b FN(f)k FO(\()p FL(false)p FN(;)14 b(x)p FO(\))23 b(=)g(\()p FL(false)p FN(;)14 b(f)36 b(x)p FO(\))450 4293 y(F)-7 b(rom)27 b(this)h(it)g(follo)n(ws)f(that:)482 4477 y(\(iii\))43 b(\()p FL(prefn)32 b FN(f)9 b FO(\))1022 4447 y Fu(n)1095 4477 y FO(\()p FL(false)p FN(;)14 b(x)p FO(\))23 b(=)g(\()p FL(false)p FN(;)14 b(f)1841 4447 y Fu(n)1913 4477 y FN(x)p FO(\))485 4646 y(\(iv\))42 b(\()p FL(prefn)32 b FN(f)9 b FO(\))1022 4616 y Fu(n)1095 4646 y FO(\()p FL(true)p FN(;)14 b(x)p FO(\))24 b(=)f(\()p FL(false)o FN(;)14 b(f)1830 4616 y Fu(n)p FC(\000)p FD(1)1988 4646 y FN(x)p FO(\))111 b(\(if)29 b FN(n)22 b(>)h FO(0\))450 4830 y(Th)n(us)f FN(n)f FO(applications)g(of)h FL(prefn)g FO(to)g(\()p FL(true)q FN(;)14 b(x)p FO(\))22 b(result)g(in)g FN(n)p FK(\000)o FO(1)g(applications)f(of)g FN(f)31 b FO(to)22 b FN(x)p FO(.)35 b(With)450 4930 y(this)30 b(idea,)g(the)g (de\014nition)h(of)e(the)i(predecessor)c(function)k FL(pre)f FO(is)f(straigh)n(tforw)n(ard.)41 b(Before)450 5029 y(giving)27 b(it,)h(here)f(is)g(the)h(de\014nition)g(of)g FL(prefn)p FO(:)p 450 5159 2976 4 v 448 5508 4 349 v 901 5307 a FJ(LET)f FL(prefn)c FO(=)g FN(\025f)37 b(p:)27 b FO(\()p FL(false)p FN(;)41 b FO(\()p FL(fst)33 b FN(p)22 b FK(!)h FL(snd)32 b FN(p)23 b FK(j)g FO(\()p FN(f)9 b FO(\()p FL(snd)32 b FN(p)p FO(\)\)\)\))p 3423 5508 V 450 5511 2976 4 v 450 5679 a FL(Exercise)f(18)450 5778 y FO(Sho)n(w)c FL(prefn)32 b FN(f)37 b FO(\()p FN(b;)14 b(x)p FO(\))23 b(=)g(\()p FL(false)p FN(;)14 b FO(\()p FN(b)22 b FK(!)i FN(x)f FK(j)g FN(f)36 b(x)p FO(\)\))29 b(and)f(hence:)p eop %%Page: 19 24 19 23 bop 330 108 a FO(2.3.)64 b(Num)n(b)r(ers)2397 b(19)p 330 249 3000 9 v 408 498 a(\(i\))43 b FL(prefn)32 b FN(f)k FO(\()p FL(true)q FN(;)14 b(x)p FO(\))23 b(=)g(\()p FL(false)p FN(;)14 b(x)p FO(\))385 668 y(\(ii\))43 b FL(prefn)32 b FN(f)k FO(\()p FL(false)p FN(;)14 b(x)p FO(\))23 b(=)g(\()p FL(false)p FN(;)14 b(f)36 b(x)p FO(\))362 837 y(\(iii\))43 b(\()p FL(prefn)32 b FN(f)9 b FO(\))902 807 y Fu(n)975 837 y FO(\()p FL(false)p FN(;)14 b(x)p FO(\))23 b(=)g(\()p FL(false)p FN(;)14 b(f)1721 807 y Fu(n)1793 837 y FN(x)p FO(\))365 1007 y(\(iv\))42 b(\()p FL(prefn)32 b FN(f)9 b FO(\))902 976 y Fu(n)975 1007 y FO(\()p FL(true)p FN(;)14 b(x)p FO(\))24 b(=)f(\()p FL(false)o FN(;)14 b(f)1710 976 y Fu(n)p FC(\000)p FD(1)1868 1007 y FN(x)p FO(\))111 b(\(if)29 b FN(n)22 b(>)h FO(0\))330 1191 y Fy(2)330 1393 y FO(The)28 b(predecessor)d(function)j FL(pre)g FO(can)f(no)n(w)g(b)r(e)h(de\014ned.)p 330 1505 2976 4 v 328 1854 4 349 v 934 1654 a FJ(LET)f FL(pre)55 b FO(=)23 b FN(\025n)28 b(f)36 b(x:)28 b FL(snd)f FO(\()p FN(n)h FO(\()p FL(prefn)33 b FN(f)9 b FO(\))27 b(\()p FL(true)q FN(;)14 b(x)p FO(\)\))p 3303 1854 V 330 1857 2976 4 v 330 2008 a(It)28 b(follo)n(ws)f(that)g(if)i FN(n)22 b(>)h FO(0)646 2174 y FL(pre)28 b FN(n)p 810 2187 50 4 v 28 w(f)36 b(x)83 b FO(=)g FL(snd)27 b FO(\()p FN(n)p 1446 2187 V 28 w FO(\()p FL(prefn)h FN(f)9 b FO(\))28 b(\()p FL(true)q FN(;)14 b(x)p FO(\)\))83 b(\(de\014nition)29 b(of)e FL(pre)p FO(\))1095 2274 y(=)83 b FL(snd)27 b FO(\(\()p FL(prefn)i FN(f)9 b FO(\))1807 2244 y Fu(n)1880 2274 y FO(\()p FL(true)p FN(;)14 b(x)p FO(\)\))203 b(\(de\014nition)28 b(of)g FN(n)p 2932 2287 V -1 w FO(\))1095 2373 y(=)83 b FL(snd)p FO(\()p FL(false)o FN(;)14 b(f)1689 2343 y Fu(n)p FC(\000)p FD(1)1847 2373 y FN(x)p FO(\))564 b(\(b)n(y)28 b(\(v\))g(ab)r(o)n(v)n(e\))1095 2473 y(=)83 b FN(f)1293 2443 y Fu(n)p FC(\000)o FD(1)1450 2473 y FN(x)330 2658 y FO(hence)28 b(b)n(y)f(extensionalit)n(y)g(\(Section)g(1.7)g(on)g (page)g(10\))985 2842 y FL(pre)h FN(n)p 1149 2855 V 83 w FO(=)82 b FN(\025f)37 b(x:)28 b(f)1703 2812 y Fu(n)p FC(\000)p FD(1)1861 2842 y FN(x)1282 2941 y FO(=)82 b FN(n)p FK(\000)p FO(1)p 1429 2962 156 4 v 405 w(\(de\014nition)28 b(of)g FN(n)p FK(\000)o FO(1)p 2487 2962 V(\))330 3139 y FL(Exercise)j(19)330 3239 y FO(Using)c(the)h(results)f(of)h(the)g (previous)e(exercise)h(\(or)g(otherwise\))g(sho)n(w)g(that)408 3423 y(\(i\))43 b FL(pre)27 b FO(\()p FL(suc)33 b FN(n)p 899 3436 50 4 v -1 w FO(\))24 b(=)e FN(n)p 1091 3436 V 385 3593 a FO(\(ii\))43 b FL(pre)32 b FO(0)p 706 3606 42 4 v 22 w(=)23 b(0)p 858 3606 V 330 3777 a Fy(2)330 3979 y FO(The)i(n)n(umeral)f(system)h(in)g(the)h(next)f(exercise)f(is)h (the)g(one)g(used)g(in)g([2])g(and)g(has)f(some)h(adv)-5 b(an-)330 4079 y(tages)27 b(o)n(v)n(er)e(Ch)n(urc)n(h's)i(\(e.g.)37 b(the)28 b(predecessor)d(function)j(is)g(easier)e(to)i(de\014ne\).)330 4281 y FL(Exercise)j(20)1450 4585 y FJ(LET)1606 4567 y Fz(b)1608 4585 y FO(0)p 1608 4598 V 23 w(=)23 b FN(\025x:x)1450 4792 y FJ(LET)1606 4775 y Fz(b)1608 4792 y FO(1)p 1608 4805 V 23 w(=)g(\()p FL(false)p FN(;)2012 4775 y Fz(b)2014 4792 y FO(0)p 2014 4805 V -1 w(\))1450 5000 y FJ(LET)1606 4982 y Fz(b)1608 5000 y FO(2)p 1608 5013 V 23 w(=)g(\()p FL(false)p FN(;)2012 4982 y Fz(b)2014 5000 y FO(1)p 2014 5013 V -1 w(\))1450 5088 y(.)1450 5121 y(.)1450 5154 y(.)1450 5264 y FJ(LET)1626 5247 y Fz(d)1608 5264 y FN(n)p FO(+1)p 1608 5285 156 4 v 22 w(=)g(\()p FL(false)p FN(;)16 b Fz(b)-48 b FN(n)p 2128 5277 50 4 v FO(\))1450 5353 y(.)1450 5386 y(.)1450 5419 y(.)330 5594 y(Devise)28 b FN(\025)p FO(-expressions)1110 5593 y Fz(d)1103 5594 y FL(suc)q FO(,)1346 5572 y Fz(d)1287 5594 y FL(iszero)p FO(,)1584 5593 y Fz(d)1576 5594 y FL(pre)f FO(suc)n(h)h(that)f(for)h (all)f FN(n)p FO(:)408 5778 y(\(i\))544 5777 y Fz(d)538 5778 y FL(suc)i Fz(b)-48 b FN(n)p 698 5791 V 23 w FO(=)877 5761 y Fz(d)859 5778 y FN(n)p FO(+)o(1)p 859 5799 156 4 v eop %%Page: 20 25 20 24 bop 450 92 a FO(20)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 505 499 a(\(ii\))716 477 y Fz(d)658 499 y FL(iszero)920 482 y Fz(b)923 499 y FO(0)p 923 512 42 4 v 22 w(=)23 b FL(true)482 666 y FO(\(iii\))716 644 y Fz(d)658 666 y FL(iszero)k FO(\()962 665 y Fz(d)955 666 y FL(suc)j Fz(b)-48 b FN(n)p 1116 679 50 4 v FO(\))23 b(=)g FL(false)485 819 y FO(\(iv\))666 818 y Fz(d)658 819 y FL(pre)k FO(\()860 818 y Fz(d)853 819 y FL(suc)j Fz(b)-48 b FN(n)p 1014 832 V FO(\))24 b(=)g Fz(b)-48 b FN(n)p 1207 832 V 450 975 a Fy(2)450 1261 y FG(2.4)135 b(De\014nition)46 b(b)l(y)f(recursion) 450 1459 y FO(T)-7 b(o)26 b(represen)n(t)g(the)h(m)n(ultiplication)g (function)g(in)g(the)g FN(\025)p FO(-calculus)g(w)n(e)f(w)n(ould)g(lik) n(e)h(to)f(de\014ne)h(a)450 1559 y FN(\025)p FO(-expression,)f FL(m)m(ult)h FO(sa)n(y)-7 b(,)26 b(suc)n(h)h(that:)1039 1709 y FL(m)m(ult)f FN(m)h(n)c FO(=)g FL(add)28 b FN(n)g FO(\()p FL(add)g FN(n)g FO(\()g FK(\001)14 b(\001)g(\001)41 b FO(\()p FL(add)28 b FN(n)g FO(0)p 2557 1722 42 4 v -1 w(\))42 b FK(\001)14 b(\001)g(\001)28 b FO(\)\))1521 1764 y Fz(|)p 1558 1764 596 10 v 596 w({z)p 2228 1764 V 596 w(})2056 1861 y Fu(m)g FL(add)p Fu(s)450 1985 y FO(This)g(w)n(ould)f(b)r(e)h(ac)n(hiev)n(ed)e(if)i FL(m)m(ult)e FO(could)i(b)r(e)g(de\014ned)g(to)f(satisfy)h(the)g(equation:)918 2135 y FL(m)m(ult)j FN(m)c(n)c FO(=)g(\()p FL(iszero)31 b FN(m)23 b FK(!)g FO(0)p 1908 2148 42 4 v 23 w FK(j)g FL(add)32 b FN(n)c FO(\()p FL(m)m(ult)e FO(\()p FL(pre)33 b FN(m)p FO(\))27 b FN(n)p FO(\)\))450 2285 y(If)h(this)g(held)g(then,) g(for)f(example,)704 2435 y FL(m)m(ult)g FO(2)p 926 2448 V 27 w(3)p 995 2448 V 22 w(=)c(\()p FL(iszero)k FO(2)p 1444 2448 V 23 w FK(!)c FO(0)p 1615 2448 V 23 w FK(j)g FL(add)28 b FO(3)p 1906 2448 V 27 w(\()p FL(m)m(ult)f FO(\()p FL(pre)h FO(2)p 2425 2448 V -1 w(\))g(3)p 2526 2448 V(\)\))2816 2560 y(\(b)n(y)f(the)h(equation\))1059 2684 y(=)23 b FL(add)28 b FO(3)p 1327 2697 V 27 w(\()p FL(m)m(ult)f FO(1)p 1650 2697 V 27 w(3)p 1719 2697 V(\))1627 2809 y(\(b)n(y)h(prop)r(erties)f(of)g FL(iszero)o FO(,)h(the)g (conditional)f(and)h FL(pre)p FO(\))1059 2933 y(=)23 b FL(add)28 b FO(3)p 1327 2946 V 27 w(\()p FL(iszero)g FO(1)p 1694 2946 V 22 w FK(!)23 b FO(0)p 1864 2946 V 23 w FK(j)g FL(add)28 b FO(3)p 2155 2946 V 27 w(\()p FL(m)m(ult)f FO(\()p FL(pre)h FO(1)p 2674 2946 V(\))g(3)p 2776 2946 V -1 w(\)\))2816 3058 y(\(b)n(y)f(the)h(equation\))1059 3183 y(=)23 b FL(add)28 b FO(3)p 1327 3196 V 27 w(\()p FL(add)h FO(3)p 1609 3196 V 27 w(\()p FL(m)m(ult)e FO(0)p 1932 3196 V 27 w(3)p 2001 3196 V -1 w(\)\))1627 3307 y(\(b)n(y)h(prop)r(erties)f(of)g FL(iszero)o FO(,)h(the)g(conditional)f (and)h FL(pre)p FO(\))1059 3432 y(=)23 b FL(add)28 b FO(3)p 1327 3445 V 27 w(\()p FL(add)h FO(3)p 1609 3445 V 27 w(\()p FL(iszero)e FO(0)p 1975 3445 V 23 w FK(!)c FO(0)p 2146 3445 V 23 w FK(j)g FL(add)28 b FO(3)p 2437 3445 V 27 w(\()p FL(m)m(ult)f FO(\()p FL(pre)h FO(0)p 2956 3445 V -1 w(\))g(3)p 3057 3445 V(\)\)\))2816 3556 y(\(b)n(y)f(the)h(equation\))1059 3681 y(=)23 b FL(add)28 b FO(3)p 1327 3694 V 27 w(\()p FL(add)h FO(3)p 1609 3694 V 27 w(0)p 1678 3694 V(\))1814 3805 y(\(b)n(y)f(prop)r(erties)e(of)i FL(iszero)f FO(and)g(the)h(conditional\))450 3972 y(The)g(equation)f (ab)r(o)n(v)n(e)f(suggests)g(that)i FL(m)m(ult)e FO(b)r(e)i(de\014ned)g (b)n(y:)884 4188 y FL(m)m(ult)22 b FO(=)h FN(\025m)28 b(n:)f FO(\()p FL(iszero)32 b FN(m)23 b FK(!)g FO(0)p 1942 4201 V 23 w FK(j)g FL(add)32 b FN(n)27 b FO(\()p FL(m)m(ult)2366 4415 y FH(N.B.)p 2442 4368 4 119 v 2444 4332 a FA(6)2568 4188 y FO(\()p FL(pre)32 b FN(m)p FO(\))c FN(n)p FO(\)\))450 4536 y(Unfortunately)-7 b(,)40 b(this)e(cannot)f(b)r (e)h(used)g(to)f(de\014ne)h FL(m)m(ult)e FO(b)r(ecause,)k(as)d (indicated)g(b)n(y)h(the)450 4636 y(arro)n(w,)24 b FL(m)m(ult)g FO(m)n(ust)i(already)e(b)r(e)i(de\014ned)f(for)g(the)h FN(\025)p FO(-expression)e(to)i(the)g(righ)n(t)e(of)i(the)g(equals)450 4735 y(to)h(mak)n(e)g(sense.)450 4851 y(F)-7 b(ortunately)g(,)20 b(there)f(is)g(a)g(tec)n(hnique)g(for)g(constructing)f FN(\025)p FO(-expressions)g(that)h(satisfy)g(arbitrary)450 4951 y(equations.)34 b(When)24 b(this)f(tec)n(hnique)g(is)g(applied)g (to)f(the)i(equation)e(ab)r(o)n(v)n(e)f(it)j(giv)n(es)d(the)j(desired) 450 5051 y(de\014nition)33 b(of)f FL(m)m(ult)n FO(.)51 b(First)32 b(de\014ne)h(a)e FN(\025)p FO(-expression)g FL(Y)i FO(that,)g(for)f(an)n(y)f(expression)g FN(E)5 b FO(,)34 b(has)450 5150 y(the)28 b(follo)n(wing)f(o)r(dd)g(prop)r(ert) n(y:)1650 5250 y FL(Y)g FN(E)i FO(=)22 b FN(E)33 b FO(\()p FL(Y)28 b FN(E)5 b FO(\))450 5380 y(This)28 b(sa)n(ys)f(that)h FL(Y)h FN(E)k FO(is)28 b(unc)n(hanged)f(when)i(the)f(function)h FN(E)k FO(is)28 b(applied)g(to)g(it.)39 b(In)28 b(general,)450 5479 y(if)35 b FN(E)41 b(E)701 5449 y FC(0)759 5479 y FO(=)35 b FN(E)925 5449 y FC(0)983 5479 y FO(then)h FN(E)1246 5449 y FC(0)1304 5479 y FO(is)f(called)g(a)f FE(\014xe)l(d)i(p)l(oint) 43 b FO(of)35 b FN(E)5 b FO(.)59 b(A)36 b FN(\025)p FO(-expression)d FL(Fix)i FO(with)h(the)450 5579 y(prop)r(ert)n(y)27 b(that)h FL(Fix)g FN(E)g FO(=)c FN(E)5 b FO(\()p FL(Fix)28 b FN(E)5 b FO(\))28 b(for)f(an)n(y)h FN(E)33 b FO(is)27 b(called)h(a)f FE(\014xe)l(d-p)l(oint)j(op)l(er)l(ator)9 b FO(.)39 b(There)450 5679 y(are)28 b(kno)n(wn)g(to)g(b)r(e)h(in\014nitely)h(man)n(y)e (di\013eren)n(t)h(\014xed-p)r(oin)n(t)f(op)r(erators)f([28)o(];)j FL(Y)f FO(is)f(the)h(most)450 5778 y(famous)e(one,)g(and)h(its)g (de\014nition)g(is:)p eop %%Page: 21 26 21 25 bop 330 92 a FO(2.4.)64 b(De\014nition)28 b(b)n(y)f(recursion) 1892 b(21)p 330 249 3000 9 v 330 418 2976 4 v 328 767 4 349 v 1113 567 a FJ(LET)27 b FL(Y)c FO(=)f FN(\025f)t(:)29 b FO(\()p FN(\025x:)f(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))h(\()p FN(\025x:)g(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))p 3303 767 V 330 770 2976 4 v 330 895 a(It)g(is)f(straigh)n(tforw)n(ard)e(to)j (sho)n(w)e(that)i FL(Y)g FO(is)f(indeed)h(a)g(\014xed-p)r(oin)n(t)f(op) r(erator:)779 1046 y FL(Y)g FN(E)i FO(=)22 b(\()p FN(\025f)t(:)29 b FO(\()p FN(\025x:)g(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))g(\()p FN(\025x:)h(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\)\))h FN(E)454 b FO(\(de\014nition)28 b(of)g FL(Y)p FO(\))968 1171 y(=)22 b(\()p FN(\025x:)29 b(E)5 b FO(\()p FN(x)29 b(x)p FO(\)\))f(\()p FN(\025x:)h(E)5 b FO(\()p FN(x)29 b(x)p FO(\)\))799 b(\()p FN(\014)t FO(-con)n(v)n(ersion\))968 1295 y(=)22 b FN(E)33 b FO(\(\()p FN(\025x:)c(E)5 b FO(\()p FN(x)29 b(x)p FO(\)\))f(\()p FN(\025x:)h(E)5 b FO(\()p FN(x)29 b(x)p FO(\)\)\))641 b(\()p FN(\014)t FO(-con)n(v)n(ersion\))968 1420 y(=)22 b FN(E)33 b FO(\()p FL(Y)28 b FN(E)5 b FO(\))1208 b(\(the)28 b(line)g(b)r(efore)f(last\))330 1588 y(This)h(calculation)e(sho)n(ws)h (that)h(ev)n(ery)e FN(\025)p FO(-expression)g FN(E)33 b FO(has)27 b(a)g(\014xed)h(p)r(oin)n(t.)330 1704 y(Armed)c(with)g FL(Y)p FO(,)h(w)n(e)f(can)f(no)n(w)g(return)h(to)f(the)i(problem)e(of)h (solving)f(the)h(equation)f(for)g FL(m)m(ult)o FO(.)330 1804 y(Supp)r(ose)28 b FL(m)m(ultfn)e FO(is)i(de\014ned)g(b)n(y)678 1955 y FJ(LET)e FL(m)m(ultfn)c FO(=)g FN(\025f)p 1290 2151 4 119 v 1291 2116 a FA(6)1348 1955 y FN(m)28 b(n:)f FO(\()p FL(iszero)32 b FN(m)23 b FK(!)g FO(0)p 2053 1968 42 4 v 22 w FK(j)h FL(add)32 b FN(n)27 b FO(\()p FN(f)p 2476 2151 4 119 v 2478 2116 a FA(6)2535 1955 y FO(\()p FL(pre)32 b FN(m)p FO(\))c FN(n)p FO(\)\))330 2325 y(and)f(then)i (de\014ne)e FL(m)m(ult)g FO(b)n(y:)1409 2477 y FJ(LET)f FL(m)m(ult)c FO(=)g FL(Y)32 b(m)m(ultfn)330 2628 y FO(Then:)473 2780 y FL(m)m(ult)e FN(m)e(n)23 b FO(=)f(\()p FL(Y)33 b(m)m(ultfn)n FO(\))28 b FN(m)g(n)1026 b FO(\(de\014nition)29 b(of)e FL(m)m(ult)o FO(\))872 2904 y(=)22 b FL(m)m(ultfn)27 b FO(\()p FL(Y)32 b(m)m(ultfn)o FO(\))c FN(m)f(n)457 b FO(\(\014xed-p)r(oin)n(t)28 b(prop)r(ert)n(y)e(of)i FL(Y)p FO(\))872 3029 y(=)22 b FL(m)m(ultfn)27 b(m)m(ult)f FN(m)i(n)973 b FO(\(de\014nition)29 b(of)e FL(m)m(ult)o FO(\))872 3154 y(=)22 b(\()p FN(\025f)37 b(m)28 b(n:)f FO(\()p FL(iszero)32 b FN(m)23 b FK(!)g FO(0)p 1822 3167 42 4 v 23 w FK(j)g FL(add)32 b FN(n)27 b FO(\()p FN(f)37 b FO(\()p FL(pre)32 b FN(m)p FO(\))c FN(n)p FO(\)\)\))g FL(m)m(ult)j FN(m)c(n)2526 3278 y FO(\(de\014nition)h(of)g FL(m)m(ultfn)o FO(\))872 3403 y(=)22 b(\()p FL(iszero)32 b FN(m)23 b FK(!)g FO(0)p 1463 3416 V 22 w FK(j)h FL(add)32 b FN(n)27 b FO(\()p FL(m)m(ult)g FO(\()p FL(pre)32 b FN(m)p FO(\))c FN(n)p FO(\)\))274 b(\()p FN(\014)t FO(-con)n(v)n (ersion\))330 3571 y(An)29 b(equation)g(of)f(the)i(form)e FN(f)38 b(x)1371 3583 y FD(1)1451 3571 y FK(\001)14 b(\001)g(\001)43 b FN(x)1638 3583 y Fu(n)1709 3571 y FO(=)25 b FN(E)34 b FO(is)28 b(called)h FE(r)l(e)l(cursive)35 b FO(if)30 b FN(f)37 b FO(o)r(ccurs)28 b(free)h(in)g FN(E)5 b FO(.)330 3670 y FL(Y)29 b FO(pro)n(vides)e(a)h(general)g(w)n(a)n(y)f(of)i (solving)e(suc)n(h)i(equations.)39 b(Start)28 b(with)i(an)e(equation)g (of)h(the)330 3770 y(form:)1433 3870 y FL(f)f FN(x)1537 3882 y FD(1)1588 3870 y FN(:)14 b(:)g(:)g(x)1746 3882 y Fu(n)1815 3870 y FO(=)1916 3909 y Fz(g)2050 3870 y FL(f)2093 3909 y Fz(g)330 4000 y FO(where)596 4039 y Fz(g)730 4000 y FL(f)773 4039 y Fz(g)946 4000 y FO(is)39 b(some)g FN(\025)p FO(-expression)f(con)n(taining)h FL(f)p FO(.)73 b(T)-7 b(o)39 b(obtain)g(an)g FL(f)h FO(so)f(that)h(this)330 4100 y(equation)27 b(holds)g(de\014ne:)1201 4252 y FJ(LET)f FL(f)e FO(=)e FL(Y)28 b FO(\()p FN(\025f)37 b(x)1804 4264 y FD(1)1856 4252 y FN(:)14 b(:)g(:)f(x)2013 4264 y Fu(n)2059 4252 y FN(:)2096 4291 y Fz(g)2230 4252 y FN(f)2293 4291 y Fz(g)2427 4252 y FO(\))330 4403 y(The)28 b(fact)f(that)h(the)g(equation)f(is)h(satis\014ed)f(can)g(b)r(e)h(sho)n (wn)f(as)g(follo)n(ws:)475 4555 y FL(f)g FN(x)578 4567 y FD(1)630 4555 y FN(:)14 b(:)g(:)g(x)788 4567 y Fu(n)856 4555 y FO(=)23 b FL(Y)28 b FO(\()p FN(\025f)37 b(x)1249 4567 y FD(1)1300 4555 y FN(:)14 b(:)g(:)g(x)1458 4567 y Fu(n)1504 4555 y FN(:)1541 4594 y Fz(g)1674 4555 y FN(f)1738 4594 y Fz(g)1871 4555 y FO(\))28 b FN(x)1978 4567 y FD(1)2030 4555 y FN(:)14 b(:)g(:)g(x)2188 4567 y Fu(n)2773 4555 y FO(\(de\014nition)28 b(of)g FL(f)p FO(\))856 4689 y(=)23 b(\()p FN(\025f)37 b(x)1149 4701 y FD(1)1200 4689 y FN(:)14 b(:)g(:)g(x)1358 4701 y Fu(n)1404 4689 y FN(:)1441 4728 y Fz(g)1574 4689 y FN(f)1638 4728 y Fz(g)1772 4689 y FO(\))28 b(\()p FL(Y)g FO(\()p FN(\025f)37 b(x)2169 4701 y FD(1)2220 4689 y FN(:)14 b(:)g(:)g(x)2378 4701 y Fu(n)2424 4689 y FN(:)2461 4728 y Fz(g)2594 4689 y FN(f)2658 4728 y Fz(g)2791 4689 y FO(\)\))29 b FN(x)2931 4701 y FD(1)2982 4689 y FN(:)14 b(:)g(:)g(x)3140 4701 y Fu(n)2536 4824 y FO(\(\014xed-p)r(oin)n(t)28 b(prop)r(ert)n(y\))856 4948 y(=)23 b(\()p FN(\025f)37 b(x)1149 4960 y FD(1)1200 4948 y FN(:)14 b(:)g(:)g(x)1358 4960 y Fu(n)1404 4948 y FN(:)1441 4987 y Fz(g)1574 4948 y FN(f)1638 4987 y Fz(g)1772 4948 y FO(\))28 b FL(f)f FN(x)1935 4960 y FD(1)1987 4948 y FN(:)14 b(:)g(:)g(x)2145 4960 y Fu(n)2773 4948 y FO(\(de\014nition)28 b(of)g FL(f)p FO(\))856 5083 y(=)958 5122 y Fz(g)1092 5083 y FL(f)1135 5122 y Fz(g)2810 5083 y FO(\()p FN(\014)t FO(-con)n(v)n(ersion\))330 5251 y FL(Exercise)j(21)330 5351 y FO(Construct)c(a)g FN(\025)p FO(-expression)g FL(eq)g FO(suc)n(h)h(that)841 5502 y FL(eq)k FN(m)c(n)23 b FO(=)f(\()p FL(iszero)32 b FN(m)23 b FK(!)g FL(iszero)31 b FN(n)23 b FK(j)1284 5627 y FO(\()p FL(iszero)31 b FN(n)23 b FK(!)g FL(false)g FK(j)g FL(eq)28 b FO(\()p FL(pre)k FN(m)p FO(\))c(\()p FL(pre)k FN(n)p FO(\)\)\))330 5778 y Fy(2)p eop %%Page: 22 27 22 26 bop 450 92 a FO(22)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a FL(Exercise)j(22)450 598 y FO(Sho)n(w)c(that)h(if)g FL(Y)997 610 y FD(1)1062 598 y FO(is)g(de\014ned)g(b)n(y:)1453 791 y FJ(LET)f FL(Y)1684 803 y FD(1)1744 791 y FO(=)c FL(Y)28 b FO(\()p FN(\025y)j(f)t(:)c(f)9 b FO(\()p FN(y)31 b(f)9 b FO(\)\))450 984 y(then)28 b FL(Y)711 996 y FD(1)776 984 y FO(is)g(a)f(\014xed-p)r(oin)n(t)g(op)r(erator,)f(i.e.)37 b(for)27 b(an)n(y)g FN(E)5 b FO(:)1612 1177 y FL(Y)1685 1189 y FD(1)1749 1177 y FN(E)29 b FO(=)22 b FN(E)33 b FO(\()p FL(Y)2124 1189 y FD(1)2189 1177 y FN(E)5 b FO(\))450 1370 y Fy(2)450 1584 y FO(The)25 b(\014xed-p)r(oin)n(t)f(op)r(erator)f (in)i(the)g(next)g(exercise)e(is)h(due)h(to)g(T)-7 b(uring)24 b(\(Barendregt)f([2],)i(page)450 1684 y(132\).)450 1899 y FL(Exercise)31 b(23)450 1998 y FO(Sho)n(w)c(that)h(\()p FN(\025x)h(y)s(:)e(y)k FO(\()p FN(x)d(x)g(y)s FO(\)\))g(\()p FN(\025x)h(y)s(:)e(y)k FO(\()p FN(x)d(x)g(y)s FO(\)\))g(is)g(a)f (\014xed-p)r(oin)n(t)g(op)r(erator.)35 b Fy(2)450 2213 y FO(The)20 b(next)h(exercise)e(also)g(comes)h(from)g(Barendregt's)e(b) r(o)r(ok,)k(where)e(it)h(is)f(attributed)g(to)h(Klop.)450 2428 y FL(Exercise)31 b(24)450 2527 y FO(Sho)n(w)c(that)h FL(Y)921 2539 y FD(2)986 2527 y FO(is)g(a)f(\014xed-p)r(oin)n(t)g(op)r (erator,)f(where:)1011 2720 y FJ(LET)h Fq($)22 b FO(=)h FN(\025abcdef)9 b(g)s(hij)c(k)s(l)r(mnopq)s(stuv)s(w)r(xy)s(z)t(r)n(:) 1391 2845 y(r)r FO(\()p FN(thisisaf)k(ixedpointcombinator)r FO(\))1011 2969 y FJ(LET)27 b FL(Y)1242 2981 y FD(2)1302 2969 y FO(=)c Fq($)o($$$)o($$$)o($$$)o($$$)o($$$)o($$$)o($$$)o($$)o($$) 450 3179 y Fy(2)450 3394 y FL(Exercise)31 b(25)450 3493 y FO(Is)h(it)h(the)f(case)f(that)i FL(Y)f FN(f)40 b FK(\000)-15 b(!)31 b FN(f)41 b FO(\()p FL(Y)33 b FN(f)9 b FO(\)?)50 b(If)33 b(so)e(pro)n(v)n(e)g(it;)k(if)d(not)h(\014nd)f(a)g FN(\025)p FO(-expression)3391 3472 y Fz(b)3378 3493 y FL(Y)450 3603 y FO(suc)n(h)27 b(that)830 3582 y Fz(b)817 3603 y FL(Y)h FN(f)k FK(\000)-15 b(!)23 b FN(f)37 b FO(\()1269 3582 y Fz(b)1256 3603 y FL(Y)28 b FN(f)9 b FO(\).)37 b Fy(2)450 3818 y FO(In)27 b(the)h(pure)f FN(\025)p FO(-calculus)g(as)f (de\014ned)i(on)f(page)f(1,)h FN(\025)p FO(-expressions)f(could)h(only) f(b)r(e)i(applied)f(to)450 3918 y(a)d(single)f(argumen)n(t;)h(ho)n(w)n (ev)n(er,)f(this)h(argumen)n(t)f(could)h(b)r(e)h(a)e FE(tuple)h FO(\(see)g(page)g(16\).)35 b(Th)n(us)23 b(one)450 4017 y(can)k(write:)1690 4132 y FN(E)5 b FO(\()p FN(E)1849 4144 y FD(1)1887 4132 y FN(;)14 b(:)g(:)g(:)f(;)h(E)2132 4144 y Fu(n)2178 4132 y FO(\))450 4297 y(whic)n(h)28 b(actually)e(abbreviates:)1374 4490 y FN(E)5 b FO(\()p FN(E)1533 4502 y FD(1)1571 4490 y FN(;)14 b FO(\()p FN(E)1701 4502 y FD(2)1739 4490 y FN(;)g FO(\()p FK(\001)g(\001)g(\001)g FO(\()p FN(E)2012 4502 y Fu(n)p FC(\000)p FD(1)2143 4490 y FN(;)g(E)2241 4502 y Fu(n)2286 4490 y FO(\))g FK(\001)g(\001)g(\001)p FO(\)\)\))450 4683 y(F)-7 b(or)27 b(example,)g FN(E)5 b FO(\()p FN(E)1106 4695 y FD(1)1144 4683 y FN(;)14 b(E)1242 4695 y FD(2)1280 4683 y FO(\))27 b(abbreviates)g FN(E)5 b FO(\()p FN(\025f)t(:)28 b(f)36 b(E)2161 4695 y FD(1)2227 4683 y FN(E)2288 4695 y FD(2)2325 4683 y FO(\).)450 4997 y FG(2.5)135 b(F)-11 b(unctions)44 b(with)i(sev)l(eral)g(argumen)l(ts) 450 5199 y FO(In)32 b(con)n(v)n(en)n(tional)d(mathematical)i(usage,)h (the)g(application)f(of)g(an)g FN(n)p FO(-argumen)n(t)f(function)i FN(f)450 5299 y FO(to)26 b(argumen)n(ts)e FN(x)999 5311 y FD(1)1037 5299 y FO(,)i FN(:)14 b(:)g(:)26 b FO(,)g FN(x)1305 5311 y Fu(n)1377 5299 y FO(w)n(ould)g(b)r(e)g(written)g(as)f FN(f)9 b FO(\()p FN(x)2247 5311 y FD(1)2285 5299 y FN(;)14 b(:)g(:)g(:)f(;)h(x)2516 5311 y Fu(n)2562 5299 y FO(\).)36 b(There)26 b(are)f(t)n(w)n(o)g(w)n(a)n(ys)f(of)450 5399 y(represen)n(ting)i(suc)n(h)h(applications)g(in)h(the)g FN(\025)p FO(-calculus:)528 5592 y(\(i\))43 b(as)26 b(\()p FN(f)37 b(x)916 5604 y FD(1)995 5592 y FN(:)14 b(:)g(:)42 b(x)1181 5604 y Fu(n)1226 5592 y FO(\),)28 b(or)505 5778 y(\(ii\))43 b(as)26 b(the)i(application)f(of)h FN(f)36 b FO(to)28 b(an)f FN(n)p FO(-tuple)h(\()p FN(x)2089 5790 y FD(1)2127 5778 y FN(;)14 b(:)g(:)g(:)f(;)h(x)2358 5790 y Fu(n)2404 5778 y FO(\).)p eop %%Page: 23 28 23 27 bop 330 92 a FO(2.5.)64 b(F)-7 b(unctions)28 b(with)g(sev)n(eral) d(argumen)n(ts)1504 b(23)p 330 249 3000 9 v 330 498 a(In)26 b(case)f(\(i\),)i FN(f)35 b FO(exp)r(ects)26 b(its)g(argumen)n(ts)f (`one)h(at)g(a)f(time')i(and)f(is)g(said)f(to)h(b)r(e)h FE(currie)l(d)35 b FO(after)25 b(a)330 598 y(logician)18 b(called)h(Curry)f(\(the)i(idea)f(of)g(currying)f(w)n(as)g(actually)g (in)n(v)n(en)n(ted)h(b)n(y)g(Sc)n(h\177)-42 b(on\014nk)n(el)19 b([31)o(]\).)330 697 y(The)29 b(functions)g FL(and)p FO(,)g FL(or)g FO(and)g FL(add)g FO(de\014ned)g(earlier)e(w)n(ere)h (all)g(curried.)40 b(One)28 b(adv)-5 b(an)n(tage)27 b(of)330 797 y(curried)i(functions)g(is)h(that)f(they)h(can)f(b)r(e)h (`partially)e(applied';)j(for)e(example,)g FL(add)h FO(1)p 3058 810 42 4 v 29 w(is)g(the)330 897 y(result)d(of)h(partially)e (applying)h FL(add)i FO(to)e(1)p 1611 910 V 27 w(and)h(denotes)f(the)h (function)g FN(n)23 b FK(7!)g FN(n)p FO(+1.)330 1013 y(Although)30 b(it)h(is)g(often)f(con)n(v)n(enien)n(t)f(to)i(represen)n (t)e FN(n)p FO(-argumen)n(t)g(functions)h(as)g(curried,)g(it)h(is)330 1112 y(also)36 b(useful)i(to)g(b)r(e)f(able)h(to)f(represen)n(t)f (them,)41 b(as)36 b(in)i(case)f(\(ii\))h(ab)r(o)n(v)n(e,)h(b)n(y)e FN(\025)p FO(-expressions)330 1212 y(exp)r(ecting)25 b(a)f(single)g FN(n)p FO(-tuple)h(argumen)n(t.)35 b(F)-7 b(or)24 b(example,)g(instead)h(of)g(represen)n(ting)e(+)h(and)g FK(\002)330 1312 y FO(b)n(y)j FN(\025)p FO(-expressions)f FL(add)i FO(and)g FL(m)m(ult)e FO(suc)n(h)h(that)1536 1498 y FL(add)h FN(m)p 1716 1511 73 4 v 28 w(n)p 1817 1511 50 4 v 23 w FO(=)23 b FN(m)p FO(+)o FN(n)p 1978 1518 188 4 v 1495 1622 a FL(m)m(ult)j FN(m)p 1716 1635 73 4 v 28 w(n)p 1817 1635 50 4 v 23 w FO(=)d FN(m)p FK(\002)o FN(n)p 1978 1643 188 4 v 330 1810 a FO(it)33 b(migh)n(t)f(b)r(e)h(more) f(con)n(v)n(enien)n(t)f(to)i(represen)n(t)e(them)i(b)n(y)f(functions,)j FL(sum)30 b FO(and)j FL(pro)s(d)f FO(sa)n(y)-7 b(,)330 1910 y(suc)n(h)27 b(that)1483 2001 y FL(sum)f FO(\()p FN(m)p 1713 2014 73 4 v(;)14 b(n)p 1823 2014 50 4 v FO(\))23 b(=)g FN(m)p FO(+)o FN(n)p 2016 2022 188 4 v 1457 2126 a FL(pro)s(d)28 b FO(\()p FN(m)p 1713 2139 73 4 v(;)14 b(n)p 1823 2139 50 4 v FO(\))23 b(=)g FN(m)p FK(\002)o FN(n)p 2016 2146 188 4 v 330 2285 a FO(This)33 b(is)h(nearer)e(to)h (con)n(v)n(en)n(tional)e(mathematical)i(usage)g(and)g(has)g (applications)f(that)i(will)330 2385 y(b)r(e)26 b(encoun)n(tered)f (later.)35 b(One)26 b(migh)n(t)f(sa)n(y)g(that)h FL(sum)e FO(and)h FL(pro)s(d)h FO(are)e FE(uncurrie)l(d)34 b FO(v)n(ersions)24 b(of)330 2484 y FL(add)k FO(and)g FL(m)m(ult)e FO(resp)r(ectiv)n(ely)-7 b(.)330 2600 y(De\014ne:)p 330 2725 2976 4 v 328 3290 4 565 v 1098 2903 a FJ(LET)27 b FL(curry)d FO(=)f FN(\025f)37 b(x)1765 2915 y FD(1)1830 2903 y FN(x)1877 2915 y FD(2)1915 2903 y FN(:)27 b(f)37 b FO(\()p FN(x)2122 2915 y FD(1)2160 2903 y FN(;)14 b(x)2244 2915 y FD(2)2281 2903 y FO(\))1098 3102 y FJ(LET)27 b FL(uncurry)d FO(=)f FN(\025f)37 b(p:)27 b(f)36 b FO(\()p FL(fst)28 b FN(p)p FO(\))g(\()p FL(snd)g FN(p)p FO(\))p 3303 3290 V 330 3293 2976 4 v 330 3472 a(then)g(de\014ning)1371 3580 y FL(sum)21 b FO(=)108 b FL(uncurry)30 b(add)1371 3679 y(pro)s(d)23 b FO(=)82 b FL(uncurry)30 b(m)m(ult)330 3838 y FO(results)d(in)h FL(sum)e FO(and)h FL(pro)s(d)h FO(ha)n(ving)e(the)i(desired)f(prop)r (erties;)g(for)g(example:)880 4046 y FL(sum)f FO(\()p FN(m)p 1110 4059 73 4 v(;)14 b(n)p 1220 4059 50 4 v FO(\))83 b(=)22 b FL(uncurry)30 b(add)e FO(\()p FN(m)p 2043 4059 73 4 v(;)14 b(n)p 2153 4059 50 4 v FO(\))1385 4146 y(=)22 b(\()p FN(\025f)37 b(p:)28 b(f)36 b FO(\()p FL(fst)28 b FN(p)p FO(\))g(\()p FL(snd)g FN(p)p FO(\)\))p FL(add)g FO(\()p FN(m)p 2588 4159 73 4 v(;)14 b(n)p 2698 4159 50 4 v FO(\))1385 4245 y(=)22 b FL(add)29 b FO(\()p FL(fst)f FO(\()p FN(m)p 1849 4258 73 4 v(;)14 b(n)p 1959 4258 50 4 v -1 w FO(\)\))29 b(\()p FL(snd)e FO(\()p FN(m)p 2336 4258 73 4 v 1 w(;)14 b(n)p 2447 4258 50 4 v -1 w FO(\)\))1385 4345 y(=)22 b FL(add)29 b FN(m)p 1653 4358 73 4 v 27 w(n)p 1753 4358 50 4 v 1385 4445 a FO(=)22 b FN(m)p FO(+)p FN(n)p 1472 4465 188 4 v 330 4654 a FL(Exercise)31 b(26)330 4753 y FO(Sho)n(w)c(that)h(for)f(an)n(y)g FN(E)5 b FO(:)1371 4961 y FL(curry)29 b FO(\()p FL(uncurry)h FN(E)5 b FO(\))23 b(=)g FN(E)1371 5060 y FL(uncurry)29 b FO(\()p FL(curry)h FN(E)5 b FO(\))23 b(=)g FN(E)330 5236 y FO(hence)28 b(sho)n(w)e(that:)1454 5328 y FL(add)d FO(=)g FL(curry)29 b(sum)1454 5427 y(m)m(ult)22 b FO(=)g FL(curry)29 b(pro)s(d)330 5566 y Fy(2)330 5778 y FO(W)-7 b(e)28 b(can)f(de\014ne)h FN(n)p FO(-ary)e(functions)i(for)f(currying)f (and)i(uncurrying.)36 b(F)-7 b(or)26 b FN(n)d(>)g FO(0)k(de\014ne:)p eop %%Page: 24 29 24 28 bop 450 92 a FO(24)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 418 2976 4 v 448 1021 4 603 v 1138 596 a FJ(LET)e FL(curry)1521 616 y Fu(n)1589 596 y FO(=)d FN(\025f)36 b(x)1849 608 y FD(1)1901 596 y FK(\001)14 b(\001)g(\001)g FN(x)2059 608 y Fu(n)2104 596 y FN(:)28 b(f)36 b FO(\()p FN(x)2311 608 y FD(1)2349 596 y FN(;)14 b(:)g(:)g(:)g(;)g(x)2581 608 y Fu(n)2626 596 y FO(\))1138 833 y FJ(LET)26 b FL(uncurry)1627 853 y Fu(n)1695 833 y FO(=)d FN(\025f)36 b(p:)28 b(f)36 b FO(\()p FN(p)2175 759 y Fu(n)2175 833 y FK(#)23 b FO(1\))41 b FK(\001)14 b(\001)g(\001)42 b FO(\()p FN(p)2591 759 y Fu(n)2591 833 y FK(#)22 b FN(n)p FO(\))p 3423 1021 V 450 1024 2976 4 v 450 1199 a(If)f FN(E)26 b FO(represen)n(ts)20 b(a)g(function)i(exp)r(ecting)f(an)f FN(n)p FO(-tuple)h(argumen)n(t,)g (then)h FL(curry)2933 1219 y Fu(n)3000 1199 y FN(E)k FO(represen)n(ts)450 1299 y(the)36 b(curried)f(function)h(whic)n(h)f (tak)n(es)g(its)g(argumen)n(ts)f(one)h(at)h(a)f(time.)61 b(If)36 b FN(E)k FO(represen)n(ts)34 b(a)450 1398 y(curried)22 b(function)h(of)f FN(n)h FO(argumen)n(ts,)f(then)h FL(uncurry)2146 1419 y Fu(n)2214 1398 y FN(E)28 b FO(represen)n(ts)21 b(the)i(uncurried)f(v)n(ersion)450 1498 y(whic)n(h)28 b(exp)r(ects)f(a)g(single)g FN(n)p FO(-tuple)h(as)f(argumen)n(t.)450 1707 y FL(Exercise)k(27)450 1806 y FO(Sho)n(w)c(that:)528 1995 y(\(i\))43 b FL(curry)882 2016 y Fu(n)955 1995 y FO(\()p FL(uncurry)1318 2016 y Fu(n)1391 1995 y FN(E)5 b FO(\))23 b(=)g FN(E)505 2174 y FO(\(ii\))43 b FL(uncurry)988 2194 y Fu(n)1061 2174 y FO(\()p FL(curry)1318 2194 y Fu(n)1391 2174 y FN(E)5 b FO(\))23 b(=)g FN(E)450 2363 y Fy(2)450 2572 y FL(Exercise)31 b(28)450 2671 y FO(Devise)47 b FN(\025)p FO(-expressions)f FN(E)1329 2641 y Fu(n)1324 2692 y FD(1)1421 2671 y FO(and)h FN(E)1668 2641 y Fu(n)1663 2692 y FD(2)1761 2671 y FO(built)h(out)f(of)g FL(curry)i FO(and)e FL(uncurry)i FO(suc)n(h)e(that)450 2771 y FL(curry)675 2791 y Fu(n)743 2771 y FO(=)22 b FN(E)896 2741 y Fu(n)891 2792 y FD(1)969 2771 y FO(and)28 b FL(uncurry)1461 2791 y Fu(n)1530 2771 y FO(=)22 b FN(E)1683 2741 y Fu(n)1678 2792 y FD(2)1728 2771 y FO(.)37 b Fy(2)450 2980 y FO(The)k(follo)n (wing)g(notation)g(pro)n(vides)f(a)h(con)n(v)n(enien)n(t)f(w)n(a)n(y)g (to)h(write)g FN(\025)p FO(-expressions)f(whic)n(h)450 3079 y(exp)r(ect)28 b(tuples)g(as)f(argumen)n(ts.)p 450 3216 V 448 3735 4 519 v 1382 3373 a FL(Generalized)32 b FN(\025)p FL(-abstractions)1010 3555 y FJ(LET)26 b FN(\025)p FO(\()p FN(V)1296 3567 y FD(1)1335 3555 y FN(;)14 b(:)g(:)g(:)f(;)h(V)1567 3567 y Fu(n)1613 3555 y FO(\))p FN(:)28 b(E)g FO(=)23 b FL(uncurry)2203 3576 y Fu(n)2276 3555 y FO(\()p FN(\025V)2404 3567 y FD(1)2484 3555 y FN(:)14 b(:)g(:)41 b(V)2670 3567 y Fu(n)2716 3555 y FN(:)28 b(E)5 b FO(\))p 3423 3735 V 450 3738 2976 4 v 450 3918 a FL(Example:)39 b FN(\025)p FO(\()p FN(x;)14 b(y)s FO(\))p FN(:)29 b FL(m)m(ult)i FN(x)d(y)i FO(abbreviates:)605 4156 y FL(uncurry)935 4176 y FD(2)1000 4156 y FO(\()p FN(\025x)f(y)s(:)e FL(m)m(ult)k FN(x)d(y)s FO(\))23 b(=)g(\()p FN(\025f)37 b(p:)27 b(f)36 b FO(\()p FN(p)2167 4082 y FD(2)2162 4156 y FK(#)23 b FO(1\))k(\()p FN(p)2430 4082 y FD(2)2426 4156 y FK(#)22 b FO(2\)\))28 b(\()p FN(\025x)h(y)s(:)e FL(m)m(ult)k FN(x)d(y)s FO(\))1650 4281 y(=)23 b(\()p FN(\025f)37 b(p:)27 b(f)36 b FO(\()p FL(fst)28 b FN(p)p FO(\))g(\()p FL(snd)g FN(p)p FO(\)\))g(\()p FN(\025x)g(y)s(:)g FL(m)m(ult)i FN(x)e(y)s FO(\))1650 4405 y(=)23 b FN(\025p:)k FL(m)m(ult)g FO(\()p FL(fst)32 b FN(p)p FO(\)\()p FL(snd)g FN(p)p FO(\))450 4590 y(Th)n(us:)729 4758 y(\()p FN(\025)p FO(\()p FN(x;)14 b(y)s FO(\))p FN(:)29 b FL(m)m(ult)h FN(x)f(y)s FO(\))e(\()p FN(E)1550 4770 y FD(1)1588 4758 y FN(;)14 b(E)1686 4770 y FD(2)1723 4758 y FO(\))24 b(=)e(\()p FN(\025p:)29 b FL(m)m(ult)d FO(\()p FL(fst)32 b FN(p)p FO(\))c(\()p FL(snd)k FN(p)p FO(\)\))c(\()p FN(E)2966 4770 y FD(1)3003 4758 y FN(;)14 b(E)3101 4770 y FD(2)3139 4758 y FO(\))1779 4882 y(=)22 b FL(m)m(ult)27 b FO(\()p FL(fst)p FO(\()p FN(E)2317 4894 y FD(1)2355 4882 y FN(;)14 b(E)2453 4894 y FD(2)2490 4882 y FO(\)\))28 b(\()p FL(snd)p FO(\()p FN(E)2851 4894 y FD(1)2889 4882 y FN(;)14 b(E)2987 4894 y FD(2)3025 4882 y FO(\)\))1779 5007 y(=)22 b FL(m)m(ult)31 b FN(E)2153 5019 y FD(1)2218 5007 y FN(E)2279 5019 y FD(2)450 5171 y Fy(2)450 5380 y FO(This)23 b(example)g(illustrates)f (the)i(rule)f(of)g FE(gener)l(alize)l(d)k FN(\014)t FE(-c)l(onversion)j FO(in)24 b(the)f(b)r(o)n(x)g(b)r(elo)n(w.)35 b(This)450 5479 y(rule)f(can)g(b)r(e)h(deriv)n(ed)f(from)h(ordinary)d FN(\014)t FO(-con)n(v)n(ersion)h(and)h(the)h(de\014nitions)g(of)f (tuples)h(and)450 5579 y(generalized)26 b FN(\025)p FO(-abstractions.) 35 b(The)28 b(idea)f(is)g(that)h(a)f(tuple)h(of)f(argumen)n(ts)g(is)g (passed)g(to)g(eac)n(h)450 5679 y(argumen)n(t)g(p)r(osition)g(in)h(the) g(b)r(o)r(dy)g(of)f(the)h(generalized)f(abstraction;)f(then)i(eac)n(h)f (individual)450 5778 y(argumen)n(t)g(can)g(b)r(e)h(extracted)f(from)g (the)h(tuple)g(without)g(a\013ecting)f(the)h(others.)p eop %%Page: 25 30 25 29 bop 330 108 a FO(2.6.)64 b(Mutual)28 b(recursion)2100 b(25)p 330 249 3000 9 v 330 418 2976 4 v 328 1339 4 921 v 1295 576 a FL(Generalized)32 b FN(\014)t FL(-con)m(v)m(ersion)718 875 y FO(\()p FN(\025)p FO(\()p FN(V)878 887 y FD(1)917 875 y FN(;)14 b(:)g(:)g(:)f(;)h(V)1149 887 y Fu(n)1195 875 y FO(\))p FN(:)28 b(E)5 b FO(\))28 b(\()p FN(E)1497 887 y FD(1)1535 875 y FN(;)14 b(:)g(:)g(:)f(;)h(E)1780 887 y Fu(n)1826 875 y FO(\))23 b(=)g FN(E)5 b FJ([)o FN(E)2139 887 y FD(1)2177 875 y FN(;)14 b(:)g(:)g(:)g(;)g(E)2423 887 y Fu(n)2468 875 y FN(=V)2558 887 y FD(1)2595 875 y FN(;)g(:)g(:)g(:)g(;)g(V)2828 887 y Fu(n)2873 875 y FJ(])380 1024 y FO(where)27 b FN(E)5 b FJ([)p FN(E)791 1036 y FD(1)828 1024 y FN(;)14 b(:)g(:)g(:)g(;)g(E)1074 1036 y Fu(n)1119 1024 y FN(=V)1209 1036 y FD(1)1247 1024 y FN(;)g(:)g(:)g(:)f(;)h(V)1479 1036 y Fu(n)1525 1024 y FJ(])27 b FO(is)h(the)h FE(simultane)l(ous)g(substitution)34 b FO(of)28 b FN(E)2927 1036 y FD(1)2964 1024 y FN(;)14 b(:)g(:)g(:)g(;)g(E)3210 1036 y Fu(n)380 1124 y FO(for)43 b FN(V)571 1136 y FD(1)608 1124 y FN(;)14 b(:)g(:)g(:)g(;)g(V)841 1136 y Fu(n)930 1124 y FO(resp)r(ectiv)n(ely)42 b(and)i(none)f(of)g (these)g(v)-5 b(ariables)42 b(o)r(ccur)h(free)g(in)h(an)n(y)e(of)380 1223 y FN(E)441 1235 y FD(1)478 1223 y FN(;)14 b(:)g(:)g(:)g(;)g(E)724 1235 y Fu(n)769 1223 y FO(.)p 3303 1339 V 330 1342 2976 4 v 330 1468 a(It)38 b(is)f(con)n(v)n(enien)n(t)g(to)g(extend)h(the)g (notation)f FN(\025V)1926 1480 y FD(1)2002 1468 y FN(V)2050 1480 y FD(2)2101 1468 y FN(:)14 b(:)g(:)g(V)2260 1480 y Fu(n)2306 1468 y FN(:)37 b(E)43 b FO(describ)r(ed)38 b(on)f(page)g(3)g(so)330 1567 y(that)d(eac)n(h)f FN(V)757 1579 y Fu(i)819 1567 y FO(can)g(either)h(b)r(e)g(an)f(iden)n(ti\014er)h (or)f(a)g(tuple)h(of)g(iden)n(ti\014ers.)55 b(The)34 b(meaning)f(of)330 1667 y FN(\025V)426 1679 y FD(1)504 1667 y FN(V)552 1679 y FD(2)603 1667 y FN(:)14 b(:)g(:)g(V)762 1679 y Fu(n)807 1667 y FN(:)40 b(E)45 b FO(is)39 b(still)h FN(\025V)1341 1679 y FD(1)1379 1667 y FN(:)p FO(\()p FN(\025V)1530 1679 y FD(2)1568 1667 y FN(:)p FO(\()p FK(\001)14 b(\001)g(\001)g FO(\()p FN(\025V)1862 1679 y Fu(n)1909 1667 y FN(:)39 b(E)5 b FO(\))14 b FK(\001)g(\001)g(\001)p FO(\)\),)43 b(but)d(no)n(w)f(if)h FN(V)2795 1679 y Fu(i)2863 1667 y FO(is)f(a)g(tuple)h(of)330 1766 y(iden)n(ti\014ers)27 b(then)h(the)g(expression)e(is)i(a)f(generalized)f(abstraction.)330 1925 y FL(Example:)39 b FN(\025f)55 b FO(\()p FN(x;)14 b(y)s FO(\))p FN(:)47 b(f)54 b(x)46 b(y)j FO(means)c FN(\025f)t(:)h FO(\()p FN(\025)p FO(\()p FN(x;)14 b(y)s FO(\))p FN(:)47 b(f)54 b(x)47 b(y)s FO(\))e(whic)n(h)h(in)g(turn)g (means)330 2025 y FN(\025f)t(:)28 b FL(uncurry)h FO(\()p FN(\025x)g(y)s(:)f(f)36 b(x)28 b(y)s FO(\))g(whic)n(h)f(equals)g FN(\025f)t(:)h FO(\()p FN(\025p:)g(f)37 b FO(\()p FL(fst)32 b FN(p)p FO(\))27 b(\()p FL(snd)h FN(p)p FO(\)\).)37 b Fy(2)330 2184 y FL(Exercise)31 b(29)330 2284 y FO(Sho)n(w)c(that)h (if)g(the)g(only)f(free)h(v)-5 b(ariables)26 b(in)i FN(E)33 b FO(are)26 b FN(x)2010 2296 y FD(1)2048 2284 y FO(,)i FN(:)14 b(:)g(:)27 b FO(,)h FN(x)2321 2296 y Fu(n)2394 2284 y FO(and)g FN(f)9 b FO(,)27 b(then)h(if:)1316 2426 y FL(f)51 b FO(=)f FL(Y)28 b FO(\()p FN(\025f)37 b FO(\()p FN(x)1848 2438 y FD(1)1886 2426 y FN(;)14 b(:)g(:)g(:)f(;)h(x)2117 2438 y Fu(n)2163 2426 y FO(\))p FN(:)28 b(E)5 b FO(\))330 2568 y(then)1369 2668 y FL(f)27 b FO(\()p FN(x)1504 2680 y FD(1)1542 2668 y FN(;)14 b(:)g(:)g(:)g(;)g(x)1774 2680 y Fu(n)1820 2668 y FO(\))51 b(=)f FN(E)5 b FJ([)p FL(f)p FN(=f)k FJ(])330 2793 y Fy(2)330 2952 y FL(Exercise)31 b(30)330 3052 y FO(De\014ne)d(a)f FN(\025)p FO(-expression)g FL(div)g FO(with)h(the)g(prop)r(ert)n(y)f(that:)1493 3194 y FL(div)h FO(\()p FN(m)p 1683 3207 73 4 v(;)14 b(n)p 1793 3207 50 4 v FO(\))23 b(=)g(\()p FN(q)p 2018 3223 41 4 v 3 w(;)14 b(r)p 2095 3207 40 4 v 3 w FO(\))330 3336 y(where)27 b FN(q)k FO(and)c FN(r)k FO(are)26 b(the)i(quotien)n(t) g(and)f(remainder)g(of)g(dividing)h FN(n)f FO(in)n(to)h FN(m)p FO(.)36 b Fy(2)330 3620 y FG(2.6)135 b(Mutual)45 b(recursion)330 3819 y FO(T)-7 b(o)27 b(solv)n(e)g(a)g(set)g(of)h(m)n (utually)g(recursiv)n(e)d(equations)i(lik)n(e:)1550 3956 y FL(f)1579 3968 y FD(1)1639 3956 y FO(=)c FN(F)1780 3968 y FD(1)1845 3956 y FL(f)1874 3968 y FD(1)1925 3956 y FK(\001)14 b(\001)g(\001)g FL(f)2065 3968 y Fu(n)1550 4080 y FL(f)1579 4092 y FD(2)1639 4080 y FO(=)23 b FN(F)1780 4092 y FD(2)1845 4080 y FL(f)1874 4092 y FD(1)1925 4080 y FK(\001)14 b(\001)g(\001)g FL(f)2065 4092 y Fu(n)1616 4202 y FO(.)1616 4235 y(.)1616 4268 y(.)1542 4393 y FL(f)1571 4405 y Fu(n)1639 4393 y FO(=)23 b FN(F)1780 4405 y Fu(n)1853 4393 y FL(f)1882 4405 y FD(1)1933 4393 y FK(\001)14 b(\001)g(\001)g FL(f)2073 4405 y Fu(n)330 4531 y FO(w)n(e)27 b(simply)h(de\014ne)g(for) f(1)22 b FK(\024)h FN(i)g FK(\024)f FN(n)806 4674 y FL(f)835 4686 y Fu(i)886 4674 y FO(=)g FL(Y)28 b FO(\()p FN(\025)p FO(\()p FN(f)1226 4686 y FD(1)1264 4674 y FN(;)14 b(:)g(:)g(:)f(f)1452 4686 y Fu(n)1497 4674 y FO(\))p FN(:)28 b FO(\()p FN(F)1665 4686 y FD(1)1731 4674 y FN(f)1772 4686 y FD(1)1823 4674 y FK(\001)14 b(\001)g(\001)f FN(f)1974 4686 y Fu(n)2019 4674 y FN(;)42 b(:)14 b(:)g(:)41 b(;)14 b(F)2312 4686 y Fu(n)2385 4674 y FN(f)2426 4686 y FD(1)2477 4674 y FK(\001)g(\001)g(\001)g FN(f)2629 4686 y Fu(n)2674 4674 y FO(\)\))23 b FK(#)g FN(i)330 4816 y FO(This)28 b(w)n(orks)d(b)r (ecause)j(if)865 4936 y FN(~)878 4958 y FL(f)23 b FO(=)f FL(Y)28 b FO(\()p FN(\025)p FO(\()p FN(f)1270 4970 y FD(1)1308 4958 y FN(;)14 b(:)g(:)g(:)g(f)1497 4970 y Fu(n)1542 4958 y FO(\))p FN(:)28 b FO(\()p FN(F)1710 4970 y FD(1)1775 4958 y FN(f)1816 4970 y FD(1)1867 4958 y FK(\001)14 b(\001)g(\001)g FN(f)2019 4970 y Fu(n)2064 4958 y FN(;)41 b(:)14 b(:)g(:)41 b(;)14 b(F)2356 4970 y Fu(n)2430 4958 y FN(f)2471 4970 y FD(1)2521 4958 y FK(\001)g(\001)g(\001)g FN(f)2673 4970 y Fu(n)2718 4958 y FO(\)\))330 5111 y(then)28 b FL(f)548 5123 y Fu(i)599 5111 y FO(=)675 5089 y FN(~)687 5111 y FL(f)23 b FK(#)f FN(i)28 b FO(and)f(hence:)882 5232 y FN(~)894 5254 y FL(f)d FO(=)e(\()p FN(\025)p FO(\()p FN(f)1187 5266 y FD(1)1225 5254 y FN(;)14 b(:)g(:)g(:)g(;)g(f)1451 5266 y Fu(n)1496 5254 y FO(\))p FN(:)28 b FO(\()p FN(F)1664 5266 y FD(1)1729 5254 y FN(f)1770 5266 y FD(1)1821 5254 y FK(\001)14 b(\001)g(\001)g FN(f)1973 5266 y Fu(n)2017 5254 y FN(;)42 b(:)14 b(:)g(:)41 b(;)14 b(F)2310 5266 y Fu(n)2384 5254 y FN(f)2425 5266 y FD(1)2475 5254 y FK(\001)g(\001)g(\001)g FN(f)2627 5266 y Fu(n)2672 5254 y FO(\)\))2723 5232 y FN(~)2736 5254 y FL(f)947 5389 y FO(=)22 b(\()p FN(F)1119 5401 y FD(1)1157 5389 y FO(\()1176 5367 y FN(~)1189 5389 y FL(f)i FK(#)e FO(1\))14 b FK(\001)g(\001)g (\001)g FO(\()1524 5367 y FN(~)1537 5389 y FL(f)23 b FK(#)g FN(n)p FO(\))p FN(;)41 b(:)14 b(:)g(:)42 b(;)14 b(F)2029 5401 y Fu(n)2074 5389 y FO(\()2093 5367 y FN(~)2106 5389 y FL(f)24 b FK(#)e FO(1\))14 b FK(\001)g(\001)g(\001)g FO(\()2441 5367 y FN(~)2454 5389 y FL(f)23 b FK(#)g FN(n)p FO(\)\))947 5524 y(=)f(\()p FN(F)1119 5536 y FD(1)1185 5524 y FL(f)1214 5536 y FD(1)1265 5524 y FK(\001)14 b(\001)g(\001)g FL(f)1405 5536 y Fu(n)1450 5524 y FN(;)42 b(:)14 b(:)g(:)41 b(;)14 b(F)1743 5536 y Fu(n)1816 5524 y FL(f)1846 5536 y FD(1)1897 5524 y FK(\001)g(\001)g(\001)f FL(f)2036 5536 y Fu(n)2082 5524 y FO(\))612 b(\(since)2949 5502 y FN(~)2962 5524 y FL(f)23 b FK(#)g FN(i)f FO(=)h FL(f)3247 5536 y Fu(i)3275 5524 y FO(\).)330 5666 y(Hence:)1559 5766 y FL(f)1588 5778 y Fu(i)1639 5766 y FO(=)g FN(F)1780 5778 y Fu(i)1835 5766 y FL(f)1865 5778 y FD(1)1916 5766 y FK(\001)14 b(\001)g(\001)f FL(f)2056 5778 y Fu(n)p eop %%Page: 26 31 26 30 bop 450 92 a FO(26)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a FG(2.7)135 b(Represen)l(ting)47 b(the)e(recursiv)l (e)h(functions)450 697 y FO(The)35 b FE(r)l(e)l(cursive)i(functions)k FO(form)35 b(an)f(imp)r(ortan)n(t)h(class)f(of)h(n)n(umerical)f (functions.)59 b(Shortly)450 796 y(after)31 b(Ch)n(urc)n(h)g(in)n(v)n (en)n(ted)g(the)g FN(\025)p FO(-calculus,)h(Kleene)f(pro)n(v)n(ed)f (that)i(ev)n(ery)e(recursiv)n(e)g(function)450 896 y(could)23 b(b)r(e)g(represen)n(ted)f(in)i(it.)35 b(This)23 b(pro)n(vided)f (evidence)h(for)g FE(Chur)l(ch's)k(thesis)7 b FO(,)24 b(the)f(h)n(yp)r(othe-)450 995 y(sis)i(that)h(an)n(y)f(in)n(tuitiv)n (ely)g(computable)g(function)h(could)g(b)r(e)g(represen)n(ted)e(in)i (the)f FN(\025)p FO(-calculus.)450 1095 y(It)32 b(has)f(b)r(een)h(sho)n (wn)e(that)i(man)n(y)f(other)g(mo)r(dels)g(of)h(compution)f(de\014ne)h (the)g(same)f(class)f(of)450 1195 y(functions)e(that)g(can)f(b)r(e)h (de\014ned)g(in)g(the)g FN(\025)p FO(-calculus.)450 1311 y(In)f(this)f(section)g(it)h(is)g(describ)r(ed)f(what)g(it)h(means)f (for)g(an)g(arithmetic)g(function)h(to)g(b)r(e)f(repre-)450 1411 y(sen)n(ted)f(in)g(the)g FN(\025)p FO(-calculus.)36 b(Tw)n(o)24 b(classes)g(of)h(functions,)h(the)f FE(primitive)k(r)l(e)l (cursive)j FO(functions)450 1510 y(and)i(the)g FE(r)l(e)l(cursive)41 b FO(functions,)36 b(are)d(de\014ned)i(and)f(it)g(is)g(sho)n(wn)g(that) g(all)g(the)g(functions)h(in)450 1610 y(these)28 b(classes)e(can)h(b)r (e)h(represen)n(ted)f(in)g(the)h FN(\025)p FO(-calculus.)450 1726 y(In)g(Section)g(2.3)f(it)h(w)n(as)f(explained)h(ho)n(w)f(a)h(n)n (um)n(b)r(er)f FN(n)h FO(is)g(represen)n(ted)f(b)n(y)g(the)h FN(\025)p FO(-expression)450 1826 y FN(n)p 450 1839 50 4 v FO(.)35 b(A)22 b FN(\025)p FO(-expression)e FN(f)p 1112 1855 V 30 w FO(is)i(said)f(to)g(represen)n(t)f(a)i(mathematical)f (function)h FN(f)30 b FO(if)22 b(for)f(all)h(n)n(um)n(b)r(ers)450 1925 y FN(x)497 1937 y FD(1)535 1925 y FO(,)27 b FN(:)14 b(:)g(:)p FO(,)28 b FN(x)780 1937 y Fu(n)826 1925 y FO(:)1212 2025 y FN(f)p 1212 2054 V 9 w FO(\()p FN(x)1341 2037 y FD(1)p 1294 2051 85 4 v 1379 2025 a FN(;)14 b(:)g(:)g(:)g(;)g(x)1611 2037 y Fu(n)p 1563 2051 93 4 v 1656 2025 a FO(\))23 b(=)g FN(y)p 1799 2054 44 4 v 86 w FO(if)83 b FN(f)9 b FO(\()p FN(x)2186 2037 y FD(1)2224 2025 y FN(;)14 b(:)g(:)g(:)f(;)h(x)2455 2037 y Fu(n)2501 2025 y FO(\))23 b(=)g FN(y)450 2273 y FS(2.7.1)112 b(The)38 b(primitiv)m(e)c(recursiv)m(e)j(functions)450 2443 y FO(A)h(function)h(is)f(called)f FE(primitive)k(r)l(e)l(cursive)k FO(if)38 b(it)g(can)g(b)r(e)g(constructed)g(from)f(0)h(and)g(the)450 2542 y(functions)j FN(S)46 b FO(and)41 b FN(U)1159 2512 y Fu(i)1150 2563 y(n)1236 2542 y FO(\(de\014ned)h(b)r(elo)n(w\))f(b)n (y)g(a)f(\014nite)i(sequence)e(of)i(applications)e(of)h(the)450 2642 y(op)r(erations)26 b(of)i(substitution)g(and)f(primitiv)n(e)h (recursion)e(\(also)h(de\014ned)h(b)r(elo)n(w\).)450 2758 y(The)e(successor)e(function)i FN(S)k FO(and)c(pro)5 b(jection)24 b(functions)i FN(U)2352 2728 y Fu(i)2343 2779 y(n)2414 2758 y FO(\(where)f FN(n)h FO(and)f FN(i)h FO(are)e(n)n(um)n(b)r(ers\))450 2858 y(are)j(de\014ned)h(b)n(y:)528 3035 y(\(i\))43 b FN(S)5 b FO(\()p FN(x)p FO(\))23 b(=)g FN(x)c FO(+)f(1)505 3198 y(\(ii\))43 b FN(U)724 3168 y Fu(i)715 3218 y(n)759 3198 y FO(\()p FN(x)838 3210 y FD(1)876 3198 y FN(;)14 b(x)960 3210 y FD(2)998 3198 y FN(;)g(:)g(:)g(:)g(;)g(x)1230 3210 y Fu(n)1275 3198 y FO(\))23 b(=)g FN(x)1465 3210 y Fu(i)450 3429 y FL(Substitution)450 3599 y FO(Supp)r(ose)32 b FN(g)j FO(is)c(a)h(function)g(of)g FN(r)j FO(argumen)n(ts)c(and)g FN(h)2138 3611 y FD(1)2175 3599 y FO(,)j FN(:)14 b(:)g(:)31 b FO(,)j FN(h)2465 3611 y Fu(r)2533 3599 y FO(are)d FN(r)k FO(functions)d(eac)n(h)f(of)h FN(n)450 3699 y FO(argumen)n(ts.)k(W)-7 b(e)28 b(sa)n(y)e FN(f)36 b FO(is)28 b(de\014ned)g(from)f FN(g)j FO(and)e FN(h)2096 3711 y FD(1)2133 3699 y FO(,)f FN(:)14 b(:)g(:)28 b FO(,)g FN(h)2407 3711 y Fu(r)2471 3699 y FO(b)n(y)f(substitution)h (if:)1000 3874 y FN(f)9 b FO(\()p FN(x)1129 3886 y FD(1)1166 3874 y FN(;)14 b(:)g(:)g(:)g(;)g(x)1398 3886 y Fu(n)1443 3874 y FO(\))24 b(=)e FN(g)s FO(\()p FN(h)1709 3886 y FD(1)1746 3874 y FO(\()p FN(x)1825 3886 y FD(1)1863 3874 y FN(;)14 b(:)g(:)g(:)g(;)g(x)2095 3886 y Fu(n)2140 3874 y FO(\))p FN(;)g(:)g(:)g(:)g(;)g(h)2405 3886 y Fu(r)2442 3874 y FO(\()p FN(x)2521 3886 y FD(1)2559 3874 y FN(;)g(:)g(:)g(:)f(;)h (x)2790 3886 y Fu(n)2836 3874 y FO(\)\))450 4105 y FL(Primitiv)m(e)30 b(recursion)450 4275 y FO(Supp)r(ose)h FN(g)j FO(is)d(a)f(function)i (of)f FN(n)p FK(\000)o FO(1)g(argumen)n(ts)e(and)i FN(h)g FO(is)g(a)g(function)g(of)g FN(n)p FO(+1)f(argumen)n(ts.)450 4375 y(W)-7 b(e)28 b(sa)n(y)e FN(f)37 b FO(is)27 b(de\014ned)h(from)f FN(g)k FO(and)c FN(h)h FO(b)n(y)f(primitiv)n(e)g(recursion)f(if:)1084 4545 y FN(f)9 b FO(\(0)p FN(;)14 b(x)1292 4557 y FD(2)1329 4545 y FN(;)g(:)g(:)g(:)g(;)g(x)1561 4557 y Fu(n)1606 4545 y FO(\))23 b(=)g FN(g)s FO(\()p FN(x)1871 4557 y FD(2)1909 4545 y FN(;)14 b(:)g(:)g(:)f(;)h(x)2140 4557 y Fu(n)2186 4545 y FO(\))921 4670 y FN(f)9 b FO(\()p FN(S)c FO(\()p FN(x)1138 4682 y FD(1)1175 4670 y FO(\))p FN(;)14 b(x)1291 4682 y FD(2)1329 4670 y FN(;)g(:)g(:)g(:)g(;)g(x)1561 4682 y Fu(n)1606 4670 y FO(\))23 b(=)g FN(h)p FO(\()p FN(f)9 b FO(\()p FN(x)1958 4682 y FD(1)1996 4670 y FN(;)14 b(x)2080 4682 y FD(2)2117 4670 y FN(;)g(:)g(:)g(:)g(;)g(x)2349 4682 y Fu(n)2395 4670 y FO(\))p FN(;)g(x)2511 4682 y FD(1)2548 4670 y FN(;)g(x)2632 4682 y FD(2)2670 4670 y FN(;)g(:)g(:)g(:)g(;)g(x)2902 4682 y Fu(n)2947 4670 y FO(\))450 4841 y FN(g)34 b FO(is)d(called)f(the)i FE(b)l(ase)h (function)k FO(and)31 b FN(h)g FO(is)g(called)g(the)g FE(step)i(function)6 b FO(.)47 b(It)32 b(can)e(pro)n(v)n(ed)g(that)450 4941 y(for)g(an)n(y)g(base)h(and)f(step)h(function)h(there)f(alw)n(a)n (ys)e(exists)h(a)h(unique)g(function)g(de\014ned)g(from)450 5041 y(them)e(b)n(y)g(primitiv)n(e)g(recursion.)39 b(This)29 b(result)f(is)h(called)f(the)i(primitiv)n(e)e(recursion)g(theorem;)450 5140 y(pro)r(ofs)f(of)g(it)h(can)g(b)r(e)g(found)f(in)h(textb)r(o)r (oks)g(on)f(mathematical)g(logic.)450 5333 y FL(Example:)39 b FO(The)28 b(addition)g(function)g FE(sum)33 b FO(is)28 b(primitiv)n(e)f(recursiv)n(e)f(b)r(ecause:)1514 5503 y FE(sum)6 b FO(\(0)p FN(;)14 b(x)1825 5515 y FD(2)1862 5503 y FO(\))24 b(=)e FN(x)2052 5515 y FD(2)1351 5627 y FE(sum)6 b FO(\()p FN(S)f FO(\()p FN(x)1671 5639 y FD(1)1708 5627 y FO(\))p FN(;)14 b(x)1824 5639 y FD(2)1862 5627 y FO(\))24 b(=)e FN(S)5 b FO(\()p FE(sum)h FO(\()p FN(x)2325 5639 y FD(1)2363 5627 y FN(;)14 b(x)2447 5639 y FD(2)2485 5627 y FO(\)\))450 5778 y Fy(2)p eop %%Page: 27 32 27 31 bop 330 92 a FO(2.7.)64 b(Represen)n(ting)26 b(the)i(recursiv)n (e)e(functions)1406 b(27)p 330 249 3000 9 v 330 498 a(It)34 b(is)f(no)n(w)g(sho)n(wn)g(that)h(ev)n(ery)e(primitiv)n(e)h(recursiv)n (e)f(function)i(can)f(b)r(e)h(represen)n(ted)f(b)n(y)g FN(\025)p FO(-)330 598 y(expressions.)330 746 y(It)c(is)g(ob)n(vious)e (that)i(the)h FN(\025)p FO(-expressions)d(0)p 1643 759 42 4 v -1 w(,)j FL(suc)p FO(,)f FN(\025p:)g(p)2131 672 y Fu(n)2131 746 y FK(#)24 b FN(i)29 b FO(represen)n(t)f(the)h(initial)g (functions)330 846 y(0,)e FN(S)33 b FO(and)27 b FN(U)733 816 y Fu(i)724 867 y(n)797 846 y FO(resp)r(ectiv)n(ely)-7 b(.)330 962 y(Supp)r(ose)30 b(function)g FN(g)i FO(of)d FN(r)k FO(v)-5 b(ariables)28 b(is)i(represen)n(ted)e(b)n(y)h FL(g)h FO(and)f(functions)h FN(h)2864 974 y Fu(i)2921 962 y FO(\(1)c FK(\024)g FN(i)g FK(\024)g FN(r)r FO(\))330 1062 y(of)j FN(n)g FO(v)-5 b(ariables)28 b(are)g(represen)n(ted)f(b)n (y)i FL(h)1603 1074 y Fu(i)1631 1062 y FO(.)41 b(Then)29 b(if)h(a)e(function)i FN(f)37 b FO(of)29 b FN(n)g FO(v)-5 b(ariables)28 b(is)h(de\014ned)330 1162 y(b)n(y)e(substitution)h(b)n (y:)880 1319 y FN(f)9 b FO(\()p FN(x)1009 1331 y FD(1)1046 1319 y FN(;)14 b(:)g(:)g(:)g(;)g(x)1278 1331 y Fu(n)1323 1319 y FO(\))24 b(=)e FN(g)s FO(\()p FN(h)1589 1331 y FD(1)1626 1319 y FO(\()p FN(x)1705 1331 y FD(1)1743 1319 y FN(;)14 b(:)g(:)g(:)g(;)g(x)1975 1331 y Fu(n)2020 1319 y FO(\))p FN(;)g(:)g(:)g(:)g(;)g(h)2285 1331 y Fu(r)2322 1319 y FO(\()p FN(x)2401 1331 y FD(1)2439 1319 y FN(;)g(:)g(:)g(:)f(;)h (x)2670 1331 y Fu(n)2716 1319 y FO(\)\))330 1477 y(then)28 b FN(f)36 b FO(is)28 b(represen)n(ted)e(b)n(y)i FL(f)f FO(where:)832 1635 y FL(f)d FO(=)e FN(\025)p FO(\()p FN(x)1099 1647 y FD(1)1138 1635 y FN(;)14 b(:)g(:)g(:)f(;)h(x)1369 1647 y Fu(n)1415 1635 y FO(\))p FN(:)28 b FL(g)p FO(\()p FL(h)1631 1647 y FD(1)1668 1635 y FO(\()p FN(x)1747 1647 y FD(1)1785 1635 y FN(;)14 b(:)g(:)g(:)g(;)g(x)2017 1647 y Fu(n)2062 1635 y FO(\))p FN(;)g(:)g(:)g(:)g(;)g FL(h)2332 1647 y Fu(r)2369 1635 y FO(\()p FN(x)2448 1647 y FD(1)2486 1635 y FN(;)g(:)g(:)g(:)f(;)h(x)2717 1647 y Fu(n)2763 1635 y FO(\)\))330 1810 y(Supp)r(ose)31 b(function)g FN(f)40 b FO(of)31 b FN(n)g FO(v)-5 b(ariables)29 b(is)i(de\014ned)h (inductiv)n(ely)f(from)f(a)h(base)f(function)i FN(g)h FO(of)330 1909 y FN(n)p FK(\000)o FO(1)28 b(v)-5 b(ariables)26 b(and)h(an)h(inductiv)n(e)f(step)h(function)g FN(h)g FO(of)f FN(n)p FO(+1)g(v)-5 b(ariables.)36 b(Then)964 2062 y FN(f)9 b FO(\(0)p FN(;)14 b(x)1172 2074 y FD(2)1209 2062 y FN(;)g(:)g(:)g(:)g(;)g(x)1441 2074 y Fu(n)1486 2062 y FO(\))23 b(=)g FN(g)s FO(\()p FN(x)1751 2074 y FD(2)1789 2062 y FN(;)14 b(:)g(:)g(:)f(;)h(x)2020 2074 y Fu(n)2066 2062 y FO(\))801 2186 y FN(f)9 b FO(\()p FN(S)c FO(\()p FN(x)1018 2198 y FD(1)1055 2186 y FO(\))p FN(;)14 b(x)1171 2198 y FD(2)1209 2186 y FN(;)g(:)g(:)g(:)g(;)g(x)1441 2198 y Fu(n)1486 2186 y FO(\))23 b(=)g FN(h)p FO(\()p FN(f)9 b FO(\()p FN(x)1838 2198 y FD(1)1876 2186 y FN(;)14 b(x)1960 2198 y FD(2)1997 2186 y FN(;)g(:)g(:)g(:)g(;)g(x)2229 2198 y Fu(n)2275 2186 y FO(\))p FN(;)g(x)2391 2198 y FD(1)2428 2186 y FN(;)g(x)2512 2198 y FD(2)2550 2186 y FN(;)g(:)g(:)g(:)g(;)g(x)2782 2198 y Fu(n)2827 2186 y FO(\))330 2340 y(Th)n(us)27 b(if)h FL(g)g FO(represen)n(ts)e FN(g)k FO(and)e FL(h)f FO(represen)n(ts)f FN(h)i FO(then)g FL(f)g FO(will)g(represen)n(t)e FN(f)36 b FO(if)751 2493 y FL(f)28 b FO(\()p FN(x)887 2505 y FD(1)925 2493 y FN(;)14 b(x)1009 2505 y FD(2)1046 2493 y FN(;)g(:)g(:)g(:)g(;)g(x)1278 2505 y Fu(n)1323 2493 y FO(\))24 b(=)806 2592 y(\()p FL(iszero)32 b FN(x)1155 2604 y FD(1)1215 2592 y FK(!)23 b FL(g)p FO(\()p FN(x)1448 2604 y FD(2)1486 2592 y FN(;)14 b(:)g(:)g(:)g(;)g(x)1718 2604 y Fu(n)1763 2592 y FO(\))24 b FK(j)1298 2692 y FL(h)p FO(\()p FL(f)29 b FO(\()p FL(pre)j FN(x)1688 2704 y FD(1)1725 2692 y FN(;)14 b(x)1809 2704 y FD(2)1847 2692 y FN(;)g(:)g(:)g(:)g(;)g(x)2079 2704 y Fu(n)2124 2692 y FO(\))p FN(;)g FL(pre)32 b FN(x)2408 2704 y FD(1)2446 2692 y FN(;)14 b(x)2530 2704 y FD(2)2568 2692 y FN(;)g(:)g(:)g(:)f(;)h(x)2799 2704 y Fu(n)2845 2692 y FO(\)\))330 2846 y(Using)39 b(the)h(\014xed-p)r(oin)n(t)f(tric)n (k,)i(an)e FL(f)h FO(can)f(b)r(e)g(constructed)g(to)g(satisfy)g(this)h (equation)e(b)n(y)330 2946 y(de\014ning)28 b FL(f)f FO(to)h(b)r(e:)617 3098 y FL(Y)q FO(\()p FN(\025f)t(:)g(\025)p FO(\()p FN(x)993 3110 y FD(1)1031 3098 y FN(;)14 b(x)1115 3110 y FD(2)1153 3098 y FN(;)g(:)g(:)g(:)g(;)g(x)1385 3110 y Fu(n)1430 3098 y FO(\))p FN(:)896 3198 y FO(\()p FL(iszero)31 b FN(x)1244 3210 y FD(1)1305 3198 y FK(!)23 b FL(g)p FO(\()p FN(x)1538 3210 y FD(2)1576 3198 y FN(;)14 b(:)g(:)g(:)g(;)g(x)1808 3210 y Fu(n)1853 3198 y FO(\))24 b FK(j)1407 3297 y FL(h)p FO(\()p FN(f)9 b FO(\()p FL(pre)32 b FN(x)1789 3309 y FD(1)1827 3297 y FN(;)14 b(x)1911 3309 y FD(2)1948 3297 y FN(;)g(:)g(:)g(:)g(;)g(x)2180 3309 y Fu(n)2225 3297 y FO(\))p FN(;)g FL(pre)32 b FN(x)2509 3309 y FD(1)2547 3297 y FN(;)14 b(x)2631 3309 y FD(2)2669 3297 y FN(;)g(:)g(:)g(:)f(;)h (x)2900 3309 y Fu(n)2946 3297 y FO(\)\)\))330 3452 y(Th)n(us)27 b(an)n(y)g(primitiv)n(e)h(recursiv)n(e)d(function)k(can)e(b)r(e)h (represen)n(ted)e(b)n(y)h(a)h FN(\025)p FO(-expression.)330 3696 y FS(2.7.2)112 b(The)38 b(recursiv)m(e)f(functions)330 3866 y FO(A)25 b(function)g(is)f(called)g FE(r)l(e)l(cursive)31 b FO(if)25 b(it)g(can)f(b)r(e)h(constructed)e(from)h(0,)h(the)g (successor)e(function)330 3966 y(and)i(the)h(pro)5 b(jection)24 b(functions)h(\(see)g(page)f(26\))h(b)n(y)g(a)g(sequence)f(of)h (substitutions,)h(primitiv)n(e)330 4065 y(recursions)g(and)h FE(minimizations)7 b FO(.)330 4294 y FL(Minimization)330 4463 y FO(Supp)r(ose)23 b FN(g)i FO(is)e(a)g(function)g(of)g FN(n)g FO(argumen)n(ts.)34 b(W)-7 b(e)23 b(sa)n(y)f FN(f)31 b FO(is)23 b(de\014ned)g(from)g FN(g)i FO(b)n(y)e(minimization)330 4563 y(if:)598 4663 y FN(f)9 b FO(\()p FN(x)727 4675 y FD(1)764 4663 y FN(;)14 b(x)848 4675 y FD(2)886 4663 y FN(;)g(:)g(:)g(:)f(;)h(x)1117 4675 y Fu(n)1163 4663 y FO(\))79 b(=)f(`the)28 b(smallest)f FN(y)j FO(suc)n(h)e(that)f FN(g)s FO(\()p FN(y)s(;)14 b(x)2543 4675 y FD(2)2581 4663 y FN(;)g(:)g(:)g(:)f(;)h(x)2812 4675 y Fu(n)2858 4663 y FO(\)=)p FN(x)3002 4675 y FD(1)3039 4663 y FO(')330 4797 y(The)32 b(notation)f(MIN\()p FN(f)9 b FO(\))32 b(is)g(used)f(to)h(denote)g(the)g(minimization)f(of)h FN(f)9 b FO(.)49 b(F)-7 b(unctions)32 b(de\014ned)330 4897 y(b)n(y)c(minimization)g(ma)n(y)f(b)r(e)h(unde\014ned)h(for)f (some)f(argumen)n(ts.)37 b(F)-7 b(or)27 b(example,)h(if)g FE(one)35 b FO(is)28 b(the)330 4996 y(function)h(that)g(alw)n(a)n(ys)e (returns)h(1,)h(i.e.)40 b FN(one)p FO(\()p FN(x)p FO(\))26 b(=)e(1)k(for)g(ev)n(ery)g FN(x)p FO(,)h(then)h(MIN\()p FE(one)6 b FO(\))30 b(is)e(only)330 5096 y(de\014ned)23 b(for)f(argumen)n(ts)f(with)i(v)-5 b(alue)22 b(1.)35 b(This)23 b(is)f(ob)n(vious)f(b)r(ecause)h(if)h FN(f)9 b FO(\()p FN(x)p FO(\))24 b(=)e(MIN)q(\()p FE(one)7 b FO(\)\()p FN(x)p FO(\),)330 5196 y(then:)988 5295 y FN(f)i FO(\()p FN(x)p FO(\))79 b(=)f(`the)28 b(smallest)f FN(y)k FO(suc)n(h)c(that)h FE(one)6 b FO(\()p FN(y)s FO(\)=)p FN(x)p FO(')330 5430 y(and)27 b(clearly)g(this)h(is)f(only)g(de\014ned) h(if)h FN(x)23 b FO(=)g(1.)36 b(Th)n(us)1064 5683 y(MIN)q(\()p FE(one)6 b FO(\)\()p FN(x)p FO(\))25 b(=)1653 5513 y Fz(8)1653 5587 y(<)1653 5737 y(:)1769 5582 y FO(0)p 1769 5595 V 391 w(if)j FN(x)c FO(=)f(1)1769 5782 y(unde\014ned)83 b(otherwise)p eop %%Page: 28 33 28 32 bop 450 92 a FO(28)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a(T)-7 b(o)23 b(sho)n(w)g(that)h(an)n(y)e(recursiv)n (e)g(function)i(can)f(b)r(e)h(represen)n(ted)f(in)g(the)h FN(\025)p FO(-calculus)f(it)h(is)g(neces-)450 598 y(sary)j(to)i(sho)n (w)f(ho)n(w)g(to)h(represen)n(t)f(the)h(minimization)g(of)g(an)f (arbitrary)f(function.)41 b(Supp)r(ose)450 697 y FL(g)27 b FO(represen)n(ts)g(a)g(function)h FN(g)i FO(of)e FN(n)f FO(v)-5 b(ariables)27 b(and)g FN(f)36 b FO(is)28 b(de\014ned)g(b)n(y:) 1732 892 y FN(f)k FO(=)22 b(MIN\()q FN(g)s FO(\))450 1087 y(Then)f(if)g(a)f FN(\025)p FO(-expression)f FL(min)g FO(can)h(b)r(e)h(devised)g(suc)n(h)f(that)h FL(min)30 b FN(x)p 2522 1100 48 4 v 21 w FL(f)20 b FO(\()p FN(x)p 2671 1100 V 2719 1107 a FD(1)2756 1087 y FN(;)14 b(:)g(:)g(:)g(;)g(x)p 2941 1100 V 20 x Fu(n)3034 1087 y FO(\))21 b(represen)n(ts)450 1186 y(the)28 b(least)f(n)n(um)n(b)r(er)h FN(y)i FO(greater)c(than)h FN(x)i FO(suc)n(h)e(that)1574 1381 y FN(f)9 b FO(\()p FN(y)s(;)14 b(x)1784 1393 y FD(2)1821 1381 y FN(;)g(:)g(:)g(:)g(;)g(x) 2053 1393 y Fu(n)2098 1381 y FO(\))24 b(=)e FN(x)2288 1393 y FD(1)450 1576 y FO(then)28 b FL(g)g FO(will)f(represen)n(t)g FN(g)j FO(where:)1087 1770 y FL(g)51 b FO(=)f FN(\025)p FO(\()p FN(x)1428 1782 y FD(1)1466 1770 y FN(;)14 b(x)1550 1782 y FD(2)1588 1770 y FN(;)g(:)g(:)g(:)f(;)h(x)1819 1782 y Fu(n)1865 1770 y FO(\))p FN(:)28 b FL(min)i FO(0)p 2139 1783 42 4 v 27 w FL(f)e FO(\()p FN(x)2344 1782 y FD(1)2382 1770 y FN(;)14 b(x)2466 1782 y FD(2)2504 1770 y FN(;)g(:)g(:)g(:)f(;)h(x)2735 1782 y Fu(n)2781 1770 y FO(\))450 1965 y FL(min)26 b FO(will)i(clearly)e(ha)n(v)n(e)g(the)i (desired)f(prop)r(ert)n(y)g(if:)765 2154 y FL(min)j FN(x)e(f)37 b FO(\()p FN(x)1188 2166 y FD(1)1225 2154 y FN(;)14 b(x)1309 2166 y FD(2)1347 2154 y FN(;)g(:)g(:)g(:)g(;)g(x)1579 2166 y Fu(n)1624 2154 y FO(\))24 b(=)821 2254 y(\()p FL(eq)k FO(\()p FN(f)9 b FO(\()p FN(x;)14 b(x)1220 2266 y FD(2)1258 2254 y FN(;)g(:)g(:)g(:)f(;)h(x)1489 2266 y Fu(n)1535 2254 y FO(\)\))28 b FN(x)1674 2266 y FD(1)1712 2254 y FO(\))23 b FK(!)g FN(x)h FK(j)f FL(min)j FO(\()p FL(suc)i FN(x)p FO(\))g FN(f)37 b FO(\()p FN(x)2634 2266 y FD(1)2672 2254 y FN(;)14 b(x)2756 2266 y FD(2)2793 2254 y FN(;)g(:)g(:)g(:)g(;)g(x)3025 2266 y Fu(n)3070 2254 y FO(\)\))450 2449 y(where)28 b FL(eq)h FN(m)p 814 2462 73 4 v 29 w(n)p 916 2462 50 4 v 29 w FO(is)g(equal)f(to)h FL(true)g FO(if)g FN(m)d FO(=)e FN(n)29 b FO(and)g FL(false)f FO(otherwise)g(\(a)h(suitable)g(de\014nition)450 2549 y(of)f FL(eq)f FO(o)r(ccurs)g(on)g(page)g(21\).)36 b(Th)n(us)28 b FL(min)d FO(can)j(simply)f(b)r(e)h(de\014ned)g(to)g(b)r(e:)719 2743 y FL(Y)q FO(\()p FN(\025m:)872 2842 y(\025x)h(f)36 b FO(\()p FN(x)1152 2854 y FD(1)1190 2842 y FN(;)14 b(x)1274 2854 y FD(2)1312 2842 y FN(;)g(:)g(:)g(:)f(;)h(x)1543 2854 y Fu(n)1589 2842 y FO(\))p FN(:)921 2942 y FO(\()p FL(eq)28 b FO(\()p FN(f)9 b FO(\()p FN(x;)14 b(x)1320 2954 y FD(2)1358 2942 y FN(;)g(:)g(:)g(:)g(;)g(x)1590 2954 y Fu(n)1635 2942 y FO(\)\))28 b FN(x)1774 2954 y FD(1)1863 2942 y FK(!)23 b FN(x)g FK(j)h FN(m)j FO(\()p FL(suc)32 b FN(x)p FO(\))d FN(f)36 b FO(\()p FN(x)2647 2954 y FD(1)2685 2942 y FN(;)14 b(x)2769 2954 y FD(2)2807 2942 y FN(;)g(:)g(:)g(:)f(;)h(x)3038 2954 y Fu(n)3084 2942 y FO(\)\)\))450 3133 y(Th)n(us)27 b(an)n(y)g(recursiv)n(e)f (function)i(can)f(b)r(e)h(represen)n(ted)f(b)n(y)g(a)g FN(\025)p FO(-expression.)450 3391 y FL(Higher-order)k(primitiv)m(e)f (recursion)450 3566 y FO(There)19 b(are)g(functions)h(whic)n(h)g(are)e (recursiv)n(e)g(but)j(not)e(primitiv)n(e)h(recursiv)n(e.)32 b(Here)20 b(is)f(a)h(v)n(ersion)450 3666 y(of)28 b(Ac)n(k)n(ermann's)e (function,)i FN( )s FO(,)g(de\014ned)g(b)n(y:)1311 3855 y FN( )s FO(\(0)p FN(;)14 b(n)p FO(\))50 b(=)h FN(n)p FO(+)o(1)1311 3954 y FN( )s FO(\()p FN(m)p FO(+1)p FN(;)14 b FO(0\))50 b(=)g FN( )s FO(\()p FN(m;)14 b FO(1\))1311 4054 y FN( )s FO(\()p FN(m)p FO(+1)p FN(;)g(n)p FO(+)o(1\))50 b(=)g FN( )s FO(\()p FN(m;)14 b( )s FO(\()p FN(m)p FO(+1)p FN(;)g(n)p FO(\)\))450 4262 y(Ho)n(w)n(ev)n(er,)24 b(if)i(one)g(allo)n (ws)e(functions)i(as)f(argumen)n(ts,)g(then)h(man)n(y)f(more)g (recursiv)n(e)f(functions)450 4361 y(can)30 b(b)r(e)g(de\014ned)h(b)n (y)e(a)h(primitiv)n(e)g(recursion.)43 b(F)-7 b(or)29 b(example,)i(if)f(the)h(higher-order)d(function)450 4461 y FE(r)l(e)l(c)g FO(is)f(de\014ned)h(b)n(y)f(primitiv)n(e)h(recursion)e (as)h(follo)n(ws:)1232 4650 y FE(r)l(e)l(c)5 b FO(\(0)p FN(;)14 b(x)1498 4662 y FD(2)1535 4650 y FN(;)g(x)1619 4662 y FD(3)1657 4650 y FO(\))51 b(=)f FN(x)1902 4662 y FD(2)1232 4750 y FE(r)l(e)l(c)5 b FO(\()p FN(S)g FO(\()p FN(x)1507 4762 y FD(1)1545 4750 y FO(\))p FN(;)14 b(x)1661 4762 y FD(2)1699 4750 y FN(;)g(x)1783 4762 y FD(3)1820 4750 y FO(\))51 b(=)g FN(x)2066 4762 y FD(3)2103 4750 y FO(\()p FE(r)l(e)l(c)5 b FO(\()p FN(x)2322 4762 y FD(1)2360 4750 y FN(;)14 b(x)2444 4762 y FD(2)2482 4750 y FN(;)g(x)2566 4762 y FD(3)2603 4750 y FO(\)\))450 4941 y(then)28 b FN( )j FO(can)c(b)r(e)h(de\014ned)g(b)n(y:)970 5135 y FN( )s FO(\()p FN(m;)14 b(n)p FO(\))51 b(=)f FE(r)l(e)l(c)32 b FO(\()p FN(m;)42 b(S;)g(f)31 b FK(7!)23 b FO(\()p FN(x)h FK(7!)f FE(r)l(e)l(c)5 b FO(\()p FN(x;)14 b(f)9 b FO(\(1\))p FN(;)14 b(f)9 b FO(\)\)\))28 b(\()p FN(n)p FO(\))450 5330 y(where)i FN(x)d FK(7!)h FN(\022)r FO(\()p FN(x)p FO(\))j(denotes)f(the)g(function)1806 5300 y FD(1)1874 5330 y FO(that)h(maps)e FN(x)i FO(to)f FN(\022)r FO(\()p FN(x)p FO(\).)46 b(Notice)30 b(that)g(the)h(third)450 5429 y(argumen)n(t)e(of)i FE(r)l(e)l(c)h FO(,)f(viz.)46 b FN(x)1331 5441 y FD(3)1368 5429 y FO(,)32 b(m)n(ust)e(b)r(e)h(a)f (function.)46 b(In)31 b(the)f(de\014nition)h(of)g FN( )i FO(w)n(e)d(also)g(to)r(ok)450 5529 y FN(x)497 5541 y FD(2)562 5529 y FO(to)e(b)r(e)g(a)f(function,)h(viz.)37 b FN(S)5 b FO(.)p 450 5622 1200 4 v 542 5676 a Fx(1)577 5699 y FB(Note)19 b(that)g Fv(\025x:)f(\022)r FB(\()p Fv(x)p FB(\))g(is)g(an)g(expression)h(of)e(the)i Fv(\025)p FB(-calculus)f(whereas)h Fv(x)g Fp(7!)g Fv(\022)r FB(\()p Fv(x)p FB(\))g(is)e(a)i(notation)g(of)f(informal)450 5778 y(mathematics.)p eop %%Page: 29 34 29 33 bop 330 92 a FO(2.8.)64 b(Extending)27 b(the)h FN(\025)p FO(-calculus)1817 b(29)p 330 249 3000 9 v 330 498 a FL(Exercise)31 b(31)330 598 y FO(Sho)n(w)k(that)g(the)g (de\014nition)h(of)f FN( )j FO(in)d(terms)g(of)g FE(r)l(e)l(c)40 b FO(w)n(orks,)35 b(i.e.)59 b(that)36 b(with)f FN( )j FO(de\014ned)e(as)330 697 y(ab)r(o)n(v)n(e:)1191 775 y FN( )s FO(\(0)p FN(;)14 b(n)p FO(\))50 b(=)h FN(n)p FO(+)o(1)1191 875 y FN( )s FO(\()p FN(m)p FO(+1)p FN(;)14 b FO(0\))50 b(=)g FN( )s FO(\()p FN(m;)14 b FO(1\))1191 975 y FN( )s FO(\()p FN(m)p FO(+1)p FN(;)g(n)p FO(+)o(1\))50 b(=)g FN( )s FO(\()p FN(m;)14 b( )s FO(\()p FN(m)p FO(+1)p FN(;)g(n)p FO(\)\))330 1095 y Fy(2)330 1287 y FO(A)20 b(function)g(whic)n(h)f(tak)n(es)f(another)h(function)g(as)g(an)g (argumen)n(t,)h(or)f(returns)f(another)h(function)330 1386 y(as)j(a)h(result,)h(is)f(called)f FE(higher-or)l(der)9 b FO(.)38 b(The)23 b(example)f FN( )27 b FO(sho)n(ws)21 b(that)j(higher-order)c(primitiv)n(e)330 1486 y(recursion)i(is)h(more)g (p)r(o)n(w)n(erful)g(than)g(ordinary)f(primitiv)n(e)h(recursion)2499 1456 y FD(2)2535 1486 y FO(.)36 b(The)23 b(use)h(of)f(op)r(erators)330 1586 y(lik)n(e)k FE(r)l(e)l(c)32 b FO(is)c(one)f(of)h(the)g(things)f (that)h(mak)n(es)f(functional)g(programming)f(v)n(ery)g(p)r(o)n(w)n (erful.)330 1833 y FS(2.7.3)112 b(The)38 b(partial)e(recursiv)m(e)h (functions)330 2003 y FO(A)d(partial)e(function)i(is)f(one)g(that)h(is) f(not)g(de\014ned)h(for)f(all)g(argumen)n(ts.)53 b(F)-7 b(or)32 b(example,)j(the)330 2103 y(function)40 b(MIN\()p FE(one)6 b FO(\))40 b(describ)r(ed)f(ab)r(o)n(v)n(e)f(is)h(partial.)70 b(Another)39 b(example)g(is)g(the)g(division)330 2202 y(function,)45 b(since)c(division)g(b)n(y)g(0)g(is)g(not)g(de\014ned.) 79 b(F)-7 b(unctions)41 b(that)h(are)e(de\014ned)i(for)e(all)330 2302 y(argumen)n(ts)26 b(are)h(called)g FE(total)9 b FO(.)330 2418 y(A)24 b(partial)e(function)i(is)f(called)g FE(p)l(artial)k(r)l(e)l(cursive)j FO(if)24 b(it)g(can)f(b)r(e)g (constructed)g(from)g(0,)h(the)g(suc-)330 2518 y(cessor)17 b(function)j(and)f(the)h(pro)5 b(jection)18 b(functions)h(b)n(y)g(a)g (sequence)f(of)h(substitutions,)i(primitiv)n(e)330 2618 y(recursions)27 b(and)h(minimizations.)40 b(Th)n(us)28 b(the)h(recursiv)n(e)e(functions)i(are)f(just)h(the)g(partial)f(re-)330 2717 y(cursiv)n(e)36 b(functions)h(whic)n(h)g(happ)r(en)h(to)f(b)r(e)g (total.)66 b(It)37 b(can)g(b)r(e)g(sho)n(wn)g(that)g(ev)n(ery)f (partial)330 2817 y(recursiv)n(e)26 b(function)i FN(f)36 b FO(can)27 b(b)r(e)h(represen)n(ted)f(b)n(y)g(a)g FN(\025)p FO(-expression)g FN(f)p 2447 2846 50 4 v 36 w FO(in)h(the)g(sense)f (that)408 2993 y(\(i\))43 b FN(f)p 538 3023 V 8 w FO(\()p FN(x)666 3005 y FD(1)p 619 3019 85 4 v 704 2993 a FN(;)14 b(:)g(:)g(:)g(;)g(x)936 3005 y Fu(n)p 889 3019 93 4 v 981 2993 a FO(\))24 b(=)e FN(y)p 1124 3023 44 4 v 86 w FO(if)83 b FN(f)9 b FO(\()p FN(x)1511 3005 y FD(1)1549 2993 y FN(;)14 b(:)g(:)g(:)g(;)g(x)1781 3005 y Fu(n)1826 2993 y FO(\))23 b(=)g FN(y)385 3157 y FO(\(ii\))43 b(If)28 b FN(f)9 b FO(\()p FN(x)750 3169 y FD(1)787 3157 y FN(;)14 b(:)g(:)g(:)g(;)g(x)1019 3169 y Fu(n)1064 3157 y FO(\))28 b(is)g(unde\014ned)g(then)g FN(f)p 1775 3186 50 4 v 9 w FO(\()p FN(x)1904 3169 y FD(1)p 1857 3182 85 4 v 1942 3157 a FN(;)14 b(:)g(:)g(:)f(;)h(x)2173 3169 y Fu(n)p 2126 3182 93 4 v 2219 3157 a FO(\))28 b(has)f(no)g(normal)g(form.)330 3333 y(Note)h(that)h(despite)g(\(ii\))g(ab)r(o)n(v)n(e,)e(it)i(is)g (not)f(in)h(general)e(correct)g(to)h(regard)f(expressions)g(with)330 3433 y(no)g(normal)g(form)g(as)g(b)r(eing)h(`unde\014ned'.)330 3625 y FL(Exercise)j(32)330 3724 y FO(W)-7 b(rite)28 b(do)n(wn)f(the)h FN(\025)p FO(-expression)e(that)i(represen)n(ts)e (MIN\()p FN(f)9 b FO(\),)28 b(where)f FN(f)9 b FO(\()p FN(x)p FO(\))24 b(=)f(0)k(for)g(all)g FN(x)p FO(.)38 b Fy(2)330 4090 y FG(2.8)135 b(Extending)46 b(the)f FF(\025)p FG(-calculus)330 4288 y FO(Although)k(it)h(is)f(p)r(ossible)g(to)g (represen)n(t)f(data-ob)5 b(jects)48 b(and)h(data-structures)f(with)i FN(\025)p FO(-)330 4388 y(expressions,)41 b(it)f(is)g(often)f (ine\016cien)n(t)h(to)g(do)f(so.)73 b(F)-7 b(or)39 b(example,)j(most)d (computers)g(ha)n(v)n(e)330 4487 y(hardw)n(are)28 b(for)h(arithmetic)g (and)h(it)g(is)g(reasonable)d(to)j(use)f(this,)i(rather)d(than)i FN(\025)p FO(-con)n(v)n(ersion,)330 4587 y(to)21 b(compute)g(with)h(n)n (um)n(b)r(ers.)34 b(A)21 b(mathematically)g(clean)f(w)n(a)n(y)g(of)h (`in)n(terfacing')f(computation)330 4686 y(rules)27 b(to)g(the)h FN(\025)p FO(-calculus)g(is)f(via)g(so)g(called)g FN(\016)s FE(-rules)7 b FO(.)330 4803 y(The)25 b(idea)g(is)g(to)g(add)h(a)e(set)i (of)f(new)g(constan)n(ts)f(and)i(then)f(to)g(sp)r(ecify)h(rules,)f (called)g(a)g FN(\016)s FO(-rules,)330 4902 y(for)34 b(reducing)g(applications)g(in)n(v)n(olving)f(these)i(constan)n(ts.)56 b(F)-7 b(or)34 b(example,)i(one)f(migh)n(t)f(add)330 5002 y(n)n(umerals)27 b(and)g(+)g(as)g(new)h(constan)n(ts,)e(together)h (with)h(the)g FN(\016)s FO(-rule:)1525 5177 y(+)f FN(m)h(n)23 b FK(\000)-14 b(!)1842 5231 y Fu(\016)1948 5177 y FN(m)p FO(+)o FN(n)330 5386 y FO(\()p FN(E)423 5398 y FD(1)484 5386 y FK(\000)g(!)535 5440 y Fu(\016)641 5386 y FN(E)702 5398 y FD(2)767 5386 y FO(means)27 b FN(E)1082 5398 y FD(2)1147 5386 y FO(results)g(b)n(y)h(applying)f(a)g FN(\016)s FO(-rule)g(to)g(some)g(sub)r(expression)g(of)g FN(E)3161 5398 y FD(1)3199 5386 y FO(\).)330 5531 y(When)f(adding)f (suc)n(h)h(constan)n(ts)f(and)g(rules)g(to)h(the)g FN(\025)p FO(-calculus)f(one)g(m)n(ust)h(b)r(e)g(careful)g(not)f(to)330 5630 y(destro)n(y)h(its)i(nice)g(prop)r(erties,)e(e.g.)37 b(the)28 b(Ch)n(urc)n(h-Rosser)d(theorem)i(\(see)g(page)g(31\).)p 330 5701 1200 4 v 422 5755 a Fx(2)457 5778 y FB(The)d(kind)g(of)f (primitiv)n(e)f(recursion)i(de\014ned)h(in)e(Section)i(2.7.1)f(is)f Fo(\014rst-or)l(der)31 b FB(primitiv)n(e)22 b(recursion.)p eop %%Page: 30 35 30 34 bop 450 92 a FO(30)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a(It)g(can)f(b)r(e)h(sho)n(wn)f(that)h FN(\016)s FO(-rules)f(are)f(safe)h(if)i(they)e(ha)n(v)n(e)g(the)h (form:)1623 691 y FN(c)1659 703 y FD(1)1724 691 y FN(c)1760 703 y FD(2)1839 691 y FK(\001)14 b(\001)g(\001)41 b FN(c)2013 703 y Fu(n)2081 691 y FK(\000)-14 b(!)2132 745 y Fu(\016)2238 691 y FN(e)450 913 y FO(where)34 b FN(c)733 925 y FD(1)770 913 y FO(,)i FN(:)14 b(:)g(:)o FO(,)36 b FN(c)1020 925 y Fu(n)1099 913 y FO(are)e(constan)n(ts)f(and)h FN(e)f FO(is)h(either)g(a)g(constan)n(t)f(or)g(a)h(closed)f(abstraction)450 1013 y(\(suc)n(h)28 b FN(\025)p FO(-expressions)e(are)g(sometimes)h (called)h FE(values)7 b FO(\).)450 1129 y(F)-7 b(or)28 b(example,)g(one)g(migh)n(t)g(add)h(as)e(constan)n(ts)h FL(Suc)p FO(,)h FL(Pre)p FO(,)g FL(IsZero)p FO(,)g(\001)2758 1141 y FD(0)2795 1129 y FO(,)g(\001)2916 1141 y FD(1)2953 1129 y FO(,)g(\001)3074 1141 y FD(2)3112 1129 y FO(,)f FK(\001)14 b(\001)g(\001)29 b FO(with)450 1229 y(the)f FN(\016)s FO(-rules:)1524 1439 y FL(Suc)g FO(\001)1769 1451 y Fu(n)1837 1439 y FK(\000)-14 b(!)1888 1493 y Fu(\016)1994 1439 y FO(\001)2063 1451 y Fu(n)p FD(+1)1524 1571 y FL(Pre)28 b FO(\001)1769 1583 y Fu(n)p FD(+1)1921 1571 y FK(\000)-14 b(!)1972 1625 y Fu(\016)2078 1571 y FO(\001)2147 1583 y Fu(n)1524 1703 y FL(IsZero)27 b FO(\001)1883 1715 y FD(0)1944 1703 y FK(\000)-14 b(!)1995 1757 y Fu(\016)2101 1703 y FL(true)1524 1835 y(IsZero)27 b FO(\001)1883 1847 y Fu(n)p FD(+)q(1)2036 1835 y FK(\000)-14 b(!)2087 1889 y Fu(\016)2193 1835 y FL(false)450 2050 y FO(Here)21 b(\001)709 2062 y Fu(n)776 2050 y FO(represen)n(ts)e(the)j(n)n(um)n(b)r (er)f FN(n)p FO(,)h FL(Suc)q FO(,)g FL(Pre)q FO(,)g FL(IsZero)g FO(are)e(new)h(constan)n(ts)f(\(not)i(de\014ned)450 2150 y FN(\025)p FO(-expressions)i(lik)n(e)h FL(suc)p FO(,)h FL(pre)p FO(,)g FL(iszero)p FO(\),)g(and)f FL(true)h FO(and)f FL(false)g FO(are)g(the)h(previously)e(de\014ned)450 2250 y(expressions)i(\(whic)n(h)i(are)e(b)r(oth)i(closed)f (abstractions\).)450 2563 y FG(2.9)135 b(Theorems)45 b(ab)t(out)g(the)h FF(\025)p FG(-calculus)450 2766 y FO(If)24 b FN(E)590 2778 y FD(1)651 2766 y FK(\000)-15 b(!)23 b FN(E)868 2778 y FD(2)930 2766 y FO(then)h FN(E)1176 2778 y FD(2)1237 2766 y FO(can)f(b)r(e)h(though)n(t)f(of)h(as)f(ha)n (ving)f(b)r(een)i(got)f(from)g FN(E)2837 2778 y FD(1)2898 2766 y FO(b)n(y)h(`ev)-5 b(aluation'.)450 2866 y(If)23 b(there)g(are)f(no)g(\()p FN(\014)t FO(-)i(or)d FN(\021)s FO(-\))j(redexes)d(in)j FN(E)1781 2878 y FD(2)1841 2866 y FO(then)f(it)h(can)e(b)r(e)h(though)n(t)g(of)g(as)f(`fully)h(ev)-5 b(aluated'.)450 2982 y(A)27 b FN(\025)p FO(-expression)e(is)i(said)f (to)h(b)r(e)g FE(in)i(normal)g(form)34 b FO(if)27 b(it)g(con)n(tains)f (no)g FN(\014)t FO(-)h(or)f FN(\021)s FO(-redexes)f(\(i.e.)j(if)450 3082 y(the)g(only)g(con)n(v)n(ersion)e(rule)i(that)g(can)g(b)r(e)g (applied)g(is)g FN(\013)p FO(-con)n(v)n(ersion\).)37 b(Th)n(us)28 b(a)f FN(\025)p FO(-expression)450 3181 y(in)h(normal)e(form)i(is)f(`fully)h(ev)-5 b(aluated'.)450 3418 y FL(Examples)528 3633 y FO(\(i\))43 b(The)27 b(represen)n (tations)f(of)h(n)n(um)n(b)r(ers)g(are)g(all)g(in)h(normal)f(form.)505 3820 y(\(ii\))43 b(\()p FN(\025x:)28 b(x)p FO(\))h(0)p 944 3833 42 4 v 27 w(is)f(not)f(in)h(normal)f(form.)450 4035 y Fy(2)450 4151 y FO(Supp)r(ose)d(an)g(expression)f FN(E)29 b FO(is)24 b(`ev)-5 b(aluated')24 b(in)h(t)n(w)n(o)e (di\013eren)n(t)i(w)n(a)n(ys)d(b)n(y)i(applying)g(t)n(w)n(o)f (di\013er-)450 4251 y(en)n(t)31 b(sequences)g(of)g(reductions)f(un)n (til)i(t)n(w)n(o)e(normal)g(forms)h FN(E)2417 4263 y FD(1)2486 4251 y FO(and)g FN(E)2712 4263 y FD(2)2781 4251 y FO(are)f(obtained.)47 b(The)450 4350 y(Ch)n(urc)n(h-Rosser)21 b(theorem)i(stated)h(b)r(elo)n(w)g(sho)n(ws)e(that)i FN(E)2270 4362 y FD(1)2332 4350 y FO(and)f FN(E)2550 4362 y FD(2)2612 4350 y FO(will)h(b)r(e)g(the)g(same)f(except)450 4450 y(for)k(ha)n(ving)g(p)r(ossibly)g(di\013eren)n(t)g(names)h(of)f(b) r(ound)h(v)-5 b(ariables.)450 4566 y(Because)20 b(the)h(results)f(of)h (reductions)f(do)h(not)g(dep)r(end)g(on)g(the)g(order)f(in)h(whic)n(h)f (they)h(are)f(done,)450 4666 y(separate)e(redexes)g(can)g(b)r(e)i(ev)-5 b(aluated)19 b(in)g(parallel.)33 b(V)-7 b(arious)18 b(researc)n(h)f (pro)5 b(jects)18 b(are)g(curren)n(tly)450 4765 y(trying)30 b(to)g(exploit)g(this)g(fact)h(b)n(y)e(designing)h(m)n(ultipro)r (cessor)e(arc)n(hitectures)h(for)h(ev)-5 b(aluating)450 4865 y FN(\025)p FO(-expressions.)65 b(It)37 b(is)h(to)r(o)f(early)f (to)h(tell)h(ho)n(w)f(successful)g(this)h(w)n(ork)e(will)i(b)r(e.)66 b(There)37 b(is)450 4965 y(a)31 b(p)r(ossibilit)n(y)h(that)g(the)h (comm)n(unication)e(o)n(v)n(erhead)e(of)j(distributing)g(redexes)f(to)h (di\013eren)n(t)450 5064 y(pro)r(cessors)g(and)h(then)i(collecting)e (together)g(the)i(results)e(will)h(cancel)g(out)g(the)g(theoretical)450 5164 y(adv)-5 b(an)n(tages)22 b(of)h(the)h(approac)n(h.)34 b(Let)23 b(us)h(hop)r(e)f(this)h(p)r(essimistic)f(p)r(ossibilit)n(y)h (can)f(b)r(e)h(a)n(v)n(oided.)450 5264 y(It)31 b(is)f(a)g(remark)-5 b(able)29 b(fact)i(that)f(the)h(Ch)n(urc)n(h-Rosser)d(theorem,)j(an)f (obscure)f(mathematical)450 5363 y(result)c(dating)h(from)f(b)r(efore)h (computers)f(w)n(ere)g(in)n(v)n(en)n(ted,)g(ma)n(y)h(underpin)f(the)i (design)e(of)h(the)450 5463 y(next)i(generation)e(of)h(computing)h (systems.)450 5579 y(Here)c(is)h(the)g(statemen)n(t)g(of)g(the)g(Ch)n (urc)n(h-Rosser)d(theorem.)35 b(It)25 b(is)g(an)g(example)f(of)h (something)450 5679 y(that)20 b(is)g(in)n(tuitiv)n(ely)g(ob)n(vious,)g (but)h(v)n(ery)d(hard)i(to)f(pro)n(v)n(e.)33 b(Man)n(y)19 b(prop)r(erties)g(of)h(the)g FN(\025)p FO(-calculus)450 5778 y(share)26 b(this)i(prop)r(ert)n(y)-7 b(.)p eop %%Page: 31 36 31 35 bop 330 108 a FO(2.9.)64 b(Theorems)26 b(ab)r(out)i(the)g FN(\025)p FO(-calculus)1596 b(31)p 330 249 3000 9 v 330 418 2976 4 v 328 887 4 469 v 1225 576 a FL(The)32 b(Ch)m(urc)m (h-Rosser)g(theorem)380 775 y FO(If)c FN(E)524 787 y FD(1)584 775 y FO(=)23 b FN(E)733 787 y FD(2)798 775 y FO(then)28 b(there)g(exists)f(an)g FN(E)33 b FO(suc)n(h)27 b(that)h FN(E)2066 787 y FD(1)2127 775 y FK(\000)-14 b(!)23 b FN(E)32 b FO(and)c FN(E)2600 787 y FD(2)2660 775 y FK(\000)-14 b(!)23 b FN(E)5 b FO(.)p 3303 887 V 330 890 2976 4 v 330 1061 a(It)31 b(is)g(no)n(w)g(p)r(ossible)f(to)h (see)g(wh)n(y)g(the)g(Ch)n(uc)n(h-Rosser)e(theorem)i(sho)n(ws)e(that)j FN(\025)p FO(-expressions)330 1161 y(can)40 b(b)r(e)i(ev)-5 b(aluated)40 b(in)h(an)n(y)f(order.)76 b(Supp)r(ose)40 b(an)h(expression)e FN(E)46 b FO(is)41 b(`ev)-5 b(aluated')41 b(in)g(t)n(w)n(o)330 1261 y(di\013eren)n(t)32 b(w)n(a)n(ys)f(b)n(y)h (applying)g(t)n(w)n(o)g(di\013eren)n(t)g(sequences)g(of)g(reductions)g (un)n(til)h(t)n(w)n(o)e(normal)330 1360 y(forms)26 b FN(E)619 1372 y FD(1)682 1360 y FO(and)g FN(E)903 1372 y FD(2)967 1360 y FO(are)f(obtained.)37 b(Since)26 b FN(E)1754 1372 y FD(1)1818 1360 y FO(and)g FN(E)2039 1372 y FD(2)2103 1360 y FO(are)f(obtained)h(from)g FN(E)31 b FO(b)n(y)26 b(sequences)330 1460 y(of)f(con)n(v)n(ersions,)e(it)i (follo)n(ws)f(b)n(y)h(the)g(de\014nition)h(of)f(=)f(that)i FN(E)i FO(=)22 b FN(E)2446 1472 y FD(1)2509 1460 y FO(and)j FN(E)j FO(=)23 b FN(E)2906 1472 y FD(2)2968 1460 y FO(and)i(hence)330 1559 y FN(E)391 1571 y FD(1)458 1559 y FO(=)k FN(E)613 1571 y FD(2)650 1559 y FO(.)49 b(By)31 b(the)g(Ch)n(urc)n(h-Rosser)e (theorem)i(there)g(exists)g(an)g(expression,)g FN(E)2951 1529 y FC(0)3006 1559 y FO(sa)n(y)-7 b(,)31 b(suc)n(h)330 1659 y(that)i FN(E)576 1671 y FD(1)645 1659 y FK(\000)-14 b(!)31 b FN(E)876 1629 y FC(0)932 1659 y FO(and)i FN(E)1160 1671 y FD(2)1229 1659 y FK(\000)-15 b(!)32 b FN(E)1460 1629 y FC(0)1483 1659 y FO(.)52 b(No)n(w)33 b(if)g FN(E)1895 1671 y FD(1)1965 1659 y FO(and)f FN(E)2192 1671 y FD(2)2263 1659 y FO(are)f(in)i(normal)f(form,)i(then)f(the)330 1759 y(only)e(redexes)f(they)i(can)f(con)n(tain)f(are)h FN(\013)p FO(-redexes)f(and)h(so)g(the)h(only)f(w)n(a)n(y)f(that)h FN(E)2997 1771 y FD(1)3066 1759 y FO(and)g FN(E)3292 1771 y FD(2)330 1858 y FO(can)g(b)r(e)h(reduced)f(to)g FN(E)1087 1828 y FC(0)1142 1858 y FO(is)h(b)n(y)f(c)n(hanging)f(the)i (names)f(of)g(b)r(ound)h(v)-5 b(ariables.)47 b(Th)n(us)31 b FN(E)3127 1870 y FD(1)3196 1858 y FO(and)330 1958 y FN(E)391 1970 y FD(2)456 1958 y FO(m)n(ust)d(b)r(e)g(the)g(same)f(up)h (to)f(renaming)g(of)g(b)r(ound)h(v)-5 b(ariables)27 b(\(i.e.)37 b FN(\013)p FO(-con)n(v)n(ersion\).)330 2074 y(Another)31 b(application)g(of)h(the)f(Ch)n(urc)n(h-Rosser)e(theorem)i(is)h(to)f (sho)n(w)g(that)h(if)g FN(m)d FK(6)p FO(=)g FN(n)j FO(then)330 2174 y(the)d FN(\025)p FO(-expressions)d(represen)n(ting)h FN(m)h FO(and)g FN(n)h FO(are)e(not)h(equal,)g(i.e.)39 b FN(m)p 2470 2187 73 4 v 24 w FK(6)p FO(=)24 b FN(n)p 2656 2187 50 4 v FO(.)39 b(Supp)r(ose)28 b FN(m)c FK(6)p FO(=)g FN(n)330 2273 y FO(but)k FN(m)p 482 2286 73 4 v 23 w FO(=)22 b FN(n)p 665 2286 50 4 v FO(;)28 b(b)n(y)f(the)g(Ch)n (urc)n(h-Rosser)e(theorem)i FN(m)p 1902 2286 73 4 v 23 w FK(\000)-14 b(!)23 b FN(E)32 b FO(and)27 b FN(n)p 2409 2286 50 4 v 23 w FK(\000)-14 b(!)23 b FN(E)32 b FO(for)27 b(some)g FN(E)5 b FO(.)37 b(But)330 2373 y(it)28 b(is)g(ob)n(vious)e (from)h(the)h(de\014nitions)g(of)f FN(m)p 1632 2386 73 4 v 28 w FO(and)g FN(n)p 1894 2386 50 4 v FO(,)h(namely)1532 2554 y FN(m)p 1532 2567 73 4 v 23 w FO(=)23 b FN(\025f)37 b(x:)28 b(f)1990 2520 y Fu(m)2080 2554 y FN(x)1555 2679 y(n)p 1555 2692 50 4 v 23 w FO(=)23 b FN(\025f)37 b(x:)28 b(f)1990 2645 y Fu(n)2062 2679 y FN(x)330 2861 y FO(that)g(no)f(suc)n (h)g FN(E)33 b FO(can)27 b(exist.)36 b(The)28 b(only)f(con)n(v)n (ersions)e(that)j(are)e(applicable)h(to)g(m)p 2887 2874 70 4 v 28 w(and)g(n)p 3145 2874 47 4 v 28 w(are)330 2961 y FN(\013)p FO(-con)n(v)n(ersions)j(and)i(these)g(cannot)f(c)n(hange)g (the)i(n)n(um)n(b)r(er)f(of)g(function)h(applications)e(in)h(an)330 3060 y(expression)26 b(\()p FN(m)p 762 3073 73 4 v 28 w FO(con)n(tains)h FN(m)g FO(applications)g(and)g FN(n)p 1912 3073 50 4 v 28 w FO(con)n(tains)f FN(n)i FO(applications\).)330 3177 y(A)j FN(\025)p FO(-expression)e FN(E)35 b FE(has)f(a)e(normal)h (form)38 b FO(if)31 b FN(E)i FO(=)27 b FN(E)2051 3147 y FC(0)2105 3177 y FO(for)j(some)g FN(E)2512 3147 y FC(0)2566 3177 y FO(in)g(normal)g(form.)45 b(The)330 3276 y(follo)n(wing)27 b(corollary)f(relates)h(expressions)g FE(in)35 b FO(normal)27 b(form)h(to)g(those)g(that)g FE(have)36 b FO(a)28 b(normal)330 3376 y(form;)f(it)h(summarizes)f(some)g(of)g(the)h(statemen)n(ts)g (made)f(ab)r(o)n(v)n(e.)p 330 3509 2976 4 v 328 4529 4 1021 v 969 3666 a FL(Corollary)32 b(to)f(the)h(Ch)m(urc)m(h-Rosser)g (theorem)458 3898 y FO(\(i\))42 b(If)28 b FN(E)33 b FO(has)27 b(a)g(normal)g(form)g(then)h FN(E)g FK(\000)-14 b(!)23 b FN(E)1960 3868 y FC(0)2011 3898 y FO(for)k(some)g FN(E)2412 3868 y FC(0)2463 3898 y FO(in)h(normal)f(form.)435 4064 y(\(ii\))42 b(If)28 b FN(E)33 b FO(has)27 b(a)g(normal)g(form)g(and)h FN(E)g FO(=)22 b FN(E)1863 4034 y FC(0)1914 4064 y FO(then)29 b FN(E)2170 4034 y FC(0)2221 4064 y FO(has)e(a)g(normal)f(form.)412 4231 y(\(iii\))42 b(If)37 b FN(E)k FO(=)c FN(E)949 4200 y FC(0)1008 4231 y FO(and)f FN(E)41 b FO(and)35 b FN(E)1515 4200 y FC(0)1575 4231 y FO(are)f(b)r(oth)j(in)f(normal)f(form,)i(then)f FN(E)41 b FO(and)36 b FN(E)3085 4200 y FC(0)3144 4231 y FO(are)587 4330 y(iden)n(tical)28 b(up)g(to)f FN(\013)p FO(-con)n(v)n(ersion.)p 3303 4529 V 330 4532 2976 4 v 330 4703 a FE(Pr)l(o)l(of)408 4908 y FO(\(i\))43 b(If)34 b FN(E)39 b FO(has)34 b(a)g(normal)f(form)h(then)g FN(E)39 b FO(=)34 b FN(E)1909 4878 y FC(0)1966 4908 y FO(for)g(some)g FN(E)2381 4878 y FC(0)2438 4908 y FO(in)h(normal)e(form.)56 b(By)34 b(the)538 5007 y(Ch)n(urc)n(h-Rosser)26 b(theorem)j(there)g (exists)f FN(E)1930 4977 y FC(00)2002 5007 y FO(suc)n(h)h(that)g FN(E)i FK(\000)-14 b(!)25 b FN(E)2689 4977 y FC(00)2761 5007 y FO(and)k FN(E)2990 4977 y FC(0)3039 5007 y FK(\000)-14 b(!)25 b FN(E)3264 4977 y FC(00)3307 5007 y FO(.)538 5107 y(As)34 b FN(E)733 5077 y FC(0)790 5107 y FO(is)g(in)g(normal)f (form)g(the)h(only)g(redexes)f(it)h(can)f(ha)n(v)n(e)g(are)g FN(\013)p FO(-redexes,)h(so)g(the)538 5207 y(reduction)d FN(E)977 5177 y FC(0)1031 5207 y FK(\000)-14 b(!)30 b FN(E)1261 5177 y FC(00)1336 5207 y FO(m)n(ust)i(consist)f(of)h(a)g (sequence)f(of)h FN(\013)p FO(-con)n(v)n(ersions.)48 b(Th)n(us)31 b FN(E)3287 5177 y FC(00)538 5306 y FO(m)n(ust)26 b(b)r(e)g(iden)n(tical)g(to)g FN(E)1352 5276 y FC(0)1402 5306 y FO(except)g(for)g(some)f(renaming)g(of)h(b)r(ound)h(v)-5 b(ariables;)25 b(it)i(m)n(ust)538 5406 y(th)n(us)g(b)r(e)h(in)g(normal) f(form)g(as)g FN(E)1576 5376 y FC(0)1627 5406 y FO(is.)385 5579 y(\(ii\))43 b(Supp)r(ose)25 b FN(E)30 b FO(has)25 b(a)g(normal)g(form)g(and)g FN(E)j FO(=)23 b FN(E)2041 5549 y FC(0)2064 5579 y FO(.)36 b(As)26 b FN(E)k FO(has)25 b(a)g(normal)f(form,)i FN(E)i FO(=)22 b FN(E)3287 5549 y FC(00)538 5679 y FO(where)34 b FN(E)851 5649 y FC(00)928 5679 y FO(is)g(in)h(normal)e(form.)58 b(Hence)34 b FN(E)1979 5649 y FC(0)2037 5679 y FO(=)g FN(E)2202 5649 y FC(00)2280 5679 y FO(b)n(y)g(the)h(transitivit)n(y)f(of)g(=)g(\(see)538 5778 y(page)26 b(8\))i(and)f(so)g FN(E)1162 5748 y FC(0)1213 5778 y FO(has)g(a)g(normal)g(form.)p eop %%Page: 32 37 32 36 bop 450 92 a FO(32)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 482 498 a(\(iii\))43 b(This)27 b(w)n(as)g(pro)n(v)n(ed)f(ab)r (o)n(v)n(e.)450 679 y Fy(2)450 946 y FL(Exercise)31 b(33)450 1046 y FO(F)-7 b(or)28 b(eac)n(h)f(of)h(the)h(follo)n(wing)e FN(\025)p FO(-expressions)g FE(either)38 b FO(\014nd)29 b(its)f(normal)f(form)h FE(or)38 b FO(sho)n(w)27 b(that)i(it)450 1145 y(has)e(no)g(normal)g(form:)528 1314 y(\(i\))43 b FL(add)32 b FO(3)p 842 1327 42 4 v 505 1472 a(\(ii\))43 b FL(add)32 b FO(3)p 842 1485 V 27 w(5)p 911 1485 V 482 1631 a(\(iii\))43 b(\()p FN(\025x:)28 b(x)h(x)p FO(\))f(\()p FN(\025x:)h(x)p FO(\))485 1790 y(\(iv\))42 b(\()p FN(\025x:)28 b(x)h(x)p FO(\))f(\()p FN(\025x:)h(x)f(x)p FO(\))508 1949 y(\(v\))42 b FL(Y)485 2108 y FO(\(vi\))g FL(Y)27 b FO(\()p FN(\025y)s(:)i(y)s FO(\))462 2267 y(\(vii\))42 b FL(Y)27 b FO(\()p FN(\025f)37 b(x:)29 b FO(\()p FL(iszero)i FN(x)24 b FK(!)f FO(0)p 1492 2280 V 22 w FK(j)51 b FN(f)36 b FO(\()p FL(pre)d FN(x)p FO(\)\)\))c(7)p 2080 2280 V 450 2435 a Fy(2)450 2616 y FO(Notice)38 b(that)h(a)f FN(\025)p FO(-expression)f FN(E)43 b FO(migh)n(t)38 b(ha)n(v)n(e)g(a)f (normal)h(form)g(ev)n(en)g(if)g(there)g(exists)g(an)450 2716 y(in\014nite)31 b(sequence)f FN(E)i FK(\000)-14 b(!)28 b FN(E)1397 2728 y FD(1)1462 2716 y FK(\000)-14 b(!)27 b FN(E)1684 2728 y FD(2)1766 2716 y FK(\001)14 b(\001)g(\001)30 b FO(.)45 b(F)-7 b(or)30 b(example)g(\()p FN(\025x:)h FO(1)p 2622 2729 V(\))f(\()p FL(Y)h FN(f)9 b FO(\))30 b(has)g(a)g(normal)450 2815 y(form)d(1)p 646 2828 V 27 w(ev)n(en)h(though:)670 2980 y(\()p FN(\025x:)h FO(1)p 849 2993 V(\))f(\()p FL(Y)g FN(f)9 b FO(\))23 b FK(\000)-14 b(!)23 b FO(\()p FN(\025x:)29 b FO(1)p 1524 2993 V -1 w(\))f(\()p FN(f)37 b FO(\()p FL(Y)28 b FN(f)9 b FO(\)\))23 b FK(\000)-14 b(!)23 b(\001)14 b(\001)g(\001)f FO(\()p FN(\025x:)29 b FO(1)p 2450 2993 V(\))f(\()p FN(f)2634 2946 y Fu(n)2707 2980 y FO(\()p FL(Y)g FN(f)9 b FO(\)\))23 b FK(\000)-14 b(!)23 b(\001)14 b(\001)g(\001)450 3161 y FO(The)29 b(normalization)e(theorem)i(stated)f (b)r(elo)n(w)h(tells)g(us)g(that)g(suc)n(h)f(blind)i(alleys)e(can)g (alw)n(a)n(ys)450 3261 y(b)r(e)e(a)n(v)n(oided)e(b)n(y)h(reducing)g (the)g FE(leftmost)34 b FN(\014)t FO(-)26 b(or)e FN(\021)s FO(-redex,)h(where)g(b)n(y)g(`leftmost')h(is)g(mean)n(t)f(the)450 3361 y(redex)i(whose)g(b)r(eginning)g FN(\025)h FO(is)g(as)f(far)g(to)g (the)h(left)h(as)e(p)r(ossible.)450 3477 y(Another)19 b(imp)r(ortan)n(t)h(p)r(oin)n(t)g(to)f(note)h(is)f(that)h FN(E)1939 3489 y FD(1)1997 3477 y FO(ma)n(y)f(not)g(ha)n(v)n(e)g(a)g (normal)g(form)g(ev)n(en)g(though)450 3577 y FN(E)511 3589 y FD(1)574 3577 y FN(E)635 3589 y FD(2)699 3577 y FO(do)r(es)25 b(ha)n(v)n(e)g(one.)36 b(F)-7 b(or)25 b(example,)h FL(Y)g FO(has)f(no)h(normal)f(form,)h(but)g FL(Y)g FO(\()p FN(\025x:)h FO(1)p 3033 3590 V(\))c FK(\000)-14 b(!)23 b FO(1)p 3287 3590 V -1 w(.)37 b(It)450 3676 y(is)29 b(a)f(common)g(mistak)n(e)g(to)h(think)g(of)g FN(\025)p FO(-expressions)e(without)i(a)f(normal)g(form)g(as)g(denoting)450 3776 y(`unde\014ned')f(functions;)f FL(Y)h FO(has)e(no)h(normal)e(form) i(but)h(it)f(denotes)f(a)h(p)r(erfectly)g(w)n(ell)g(de\014ned)450 3875 y(function)747 3845 y FD(3)785 3875 y FO(.)60 b(Analysis)35 b(b)r(ey)n(ond)g(the)h(scop)r(e)f(of)g(this)h(b)r(o)r(ok)f(\(see)g(W)-7 b(adsw)n(orth's)35 b(pap)r(er)g([37)o(]\))450 3975 y(sho)n(ws)25 b(that)h(a)g FN(\025)p FO(-expression)e(denotes)i(an)g(unde\014ned)g (function)h(if)g(and)e(only)h(if)h(it)f FE(c)l(annot)34 b FO(b)r(e)450 4075 y(con)n(v)n(erted)24 b(to)i(an)f(expression)g(in)h FE(he)l(ad)j(normal)g(form)p FO(,)e(where)e FN(E)31 b FO(is)26 b(in)g(head)f(normal)g(form)h(if)450 4174 y(it)i(has)f(the)h (form)1472 4274 y FN(\025V)1568 4286 y FD(1)1648 4274 y FK(\001)14 b(\001)g(\001)41 b FN(V)1834 4286 y Fu(m)1898 4274 y FN(:)27 b(V)47 b(E)2104 4286 y FD(1)2183 4274 y FK(\001)14 b(\001)g(\001)41 b FN(E)2382 4286 y Fu(n)450 4413 y FO(where)30 b FN(V)741 4425 y FD(1)779 4413 y FO(,)h FN(:)14 b(:)g(:)30 b FO(,)i FN(V)1063 4425 y Fu(m)1157 4413 y FO(and)e FN(V)49 b FO(are)30 b(v)-5 b(ariables)29 b(and)h FN(E)2132 4425 y FD(1)2170 4413 y FO(,)h FN(:)14 b(:)g(:)30 b FO(,)i FN(E)2467 4425 y Fu(n)2543 4413 y FO(are)d FN(\025)p FO(-expressions)g(\()p FN(V)49 b FO(can)450 4512 y(either)29 b(b)r(e)g(equal)f(to)g FN(V)1171 4524 y Fu(i)1199 4512 y FO(,)h(for)g(some)f FN(i)p FO(,)g(or)g(it)h(can)f(b) r(e)i(distinct)f(from)f(all)h(of)f(them\).)41 b(It)29 b(follo)n(ws)450 4612 y(that)f(the)g(\014xed-p)r(oin)n(t)f(op)r(erator) f FL(Y)i FO(is)f(not)h(unde\014ned)g(b)r(ecause)f(it)h(can)g(b)r(e)g (con)n(v)n(erted)e(to)1345 4777 y FN(\025f)t(:)i(f)37 b FO(\(\()p FN(\025x:)29 b(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))h(\()p FN(\025x:)f(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\)\))450 4941 y(whic)n(h)g(is)f(in)h(head)f(normal)g(form.)450 5057 y(It)j(can)f(b)r(e)g(sho)n(wn)g(that)h(an)f(expression)f FN(E)34 b FO(has)29 b(a)g(head)g(normal)f(form)h(if)h(and)f(only)g(if)h (there)450 5157 y(exist)36 b(expressions)d FN(E)1156 5169 y FD(1)1194 5157 y FO(,)38 b FN(:)14 b(:)g(:)35 b FO(,)j FN(E)1509 5169 y Fu(n)1590 5157 y FO(suc)n(h)e(that)g FN(E)41 b(E)2137 5169 y FD(1)2224 5157 y FN(:)14 b(:)g(:)49 b(E)2431 5169 y Fu(n)2512 5157 y FO(has)35 b(a)h(normal)e(form.)61 b(This)450 5257 y(supp)r(orts)30 b(the)h(in)n(terpretation)e(of)h (expressions)f(without)i(head)f(normal)f(forms)h(as)f(denoting)450 5356 y(unde\014ned)e(functions:)37 b FN(E)32 b FO(b)r(eing)27 b(unde\014ned)g(means)g(that)g FN(E)32 b(E)2497 5368 y FD(1)2575 5356 y FN(:)14 b(:)g(:)40 b(E)2773 5368 y Fu(n)2846 5356 y FO(nev)n(er)25 b(terminates)450 5456 y(for)40 b FE(any)i FN(E)822 5468 y FD(1)859 5456 y FO(,)i FN(:)14 b(:)g(:)41 b FO(,)k FN(E)1193 5468 y Fu(n)1238 5456 y FO(.)77 b(F)-7 b(ull)41 b(details)g(on)f(head)h(normal)f(forms)g (and)h(their)f(relation)g(to)450 5556 y(de\014nedness)27 b(can)h(b)r(e)g(found)g(in)f(Barendregt's)f(b)r(o)r(ok)h([2].)p 450 5622 1200 4 v 542 5676 a Fx(3)577 5699 y FB(The)22 b(mathematical)g(c)n(haracterization)i(of)d(the)i(function)g(denoted)h (b)n(y)e Fw(Y)g FB(can)h(b)r(e)g(found)f(in)g(Sto)n(y's)g(b)r(o)r(ok) 450 5778 y([33].)p eop %%Page: 33 38 33 37 bop 330 92 a FO(2.10.)63 b(Call-b)n(y-v)-5 b(alue)26 b(and)i FL(Y)1943 b FO(33)p 330 249 3000 9 v 330 418 2976 4 v 328 1090 4 672 v 1246 576 a FL(The)32 b(normalization)e (theorem)380 775 y FO(If)36 b FN(E)41 b FO(has)35 b(a)g(normal)g(form,) j(then)e(rep)r(eatedly)f(reducing)g(the)h(leftmost)g FN(\014)t FO(-)g(or)f FN(\021)s FO(-redex)380 875 y(\(p)r(ossibly)k (after)g(an)g FN(\013)p FO(-con)n(v)n(ersion)e(to)i(a)n(v)n(oid)e(in)n (v)-5 b(alid)39 b(substitutions\))h(will)g(terminate)380 974 y(with)28 b(an)f(expression)f(in)i(normal)f(form.)p 3303 1090 V 330 1093 2976 4 v 330 1268 a(The)32 b(remark)e(ab)r(out)i FN(\013)p FO(-con)n(v)n(ersion)e(in)i(the)g(statemen)n(t)g(of)g(the)g (theorem)g(is)f(to)h(co)n(v)n(er)e(cases)330 1368 y(lik)n(e:)1283 1477 y(\()p FN(\025x:)f FO(\()p FN(\025y)s(:)f(x)h(y)s FO(\)\))f FN(y)d FK(\000)-14 b(!)23 b FN(\025y)2164 1443 y FC(0)2187 1477 y FN(:)28 b(y)j(y)2354 1443 y FC(0)330 1636 y FO(where)c FN(\025y)s(:)i(x)f(y)e FK(\000)-14 b(!)24 b FN(\025y)1106 1605 y FC(0)1129 1636 y FN(:)k(x)g(y)1299 1605 y FC(0)1350 1636 y FO(has)g(b)r(een)g FN(\013)p FO(-con)n(v)n(erted)f(so)g(as)g(to)h(a)n(v)n(oid)e(the)i(in)n(v)-5 b(alid)28 b(substi-)330 1735 y(tution)g(\()p FN(\025y)s(:)g(x)g(y)s FO(\))p FJ([)p FN(y)s(=x)p FJ(])22 b FO(=)h FN(\025y)s(:)28 b(y)i(y)s FO(.)330 1851 y(A)g(sequence)f(of)h(reductions)f(in)h(whic)n (h)f(the)h(leftmost)g(redex)f(is)h(alw)n(a)n(ys)d(reduced)j(is)f (called)g(a)330 1951 y FE(normal)h(or)l(der)h(r)l(e)l(duction)f(se)l (quenc)l(e)p FO(.)330 2067 y(The)40 b(normalization)e(theorem)h(sa)n (ys)f(that)i(if)g FN(E)45 b FO(has)39 b(a)g(normal)g(form)g(\(i.e.)h (for)g(some)f FN(E)3307 2037 y FC(0)330 2167 y FO(in)c(normal)e(form)i FN(E)40 b FO(=)34 b FN(E)1192 2137 y FC(0)1215 2167 y FO(\))h(then)g(it)g(can)f(b)r(e)h(found)g(b)n(y)g(normal)e(order)h (reduction.)57 b(This,)330 2267 y(ho)n(w)n(ev)n(er,)37 b(is)g(not)f(usually)h(the)g(`most)f(e\016cien)n(t')h(w)n(a)n(y)f(to)g (\014nd)i(it.)64 b(F)-7 b(or)36 b(example,)j(normal)330 2366 y(order)26 b(reduction)h(requires)1423 2475 y(\()p FN(\025x:)1587 2514 y Fz(g)1721 2475 y FN(x)1782 2514 y Fz(g)1916 2475 y FN(x)1977 2514 y Fz(g)2111 2475 y FO(\))h FN(E)330 2634 y FO(to)f(b)r(e)h(reduced)g(to)1556 2782 y Fz(g)1690 2743 y FN(E)1770 2782 y Fz(g)1904 2743 y FN(E)1984 2782 y Fz(g)330 2912 y FO(If)j FN(E)36 b FO(is)30 b(not)h(in)g(normal)f(form)g(then)h(it)g(w)n(ould)f(b)r(e)i (more)d(e\016cien)n(t)i(to)g(\014rst)f(reduce)g FN(E)36 b FO(to)31 b FN(E)3307 2882 y FC(0)330 3011 y FO(sa)n(y)26 b(\(where)i FN(E)812 2981 y FC(0)863 3011 y FO(is)f(in)h(normal)f (form\))g(and)h(then)g(to)f(reduce)1411 3200 y(\()p FN(\025x:)1575 3239 y Fz(g)1710 3200 y FN(x)1771 3239 y Fz(g)1905 3200 y FN(x)1966 3239 y Fz(g)2100 3200 y FO(\))h FN(E)2226 3166 y FC(0)330 3389 y FO(to)1533 3537 y Fz(g)1667 3498 y FN(E)1733 3464 y FC(0)1770 3537 y Fz(g)1904 3498 y FN(E)1970 3464 y FC(0)2007 3537 y Fz(g)330 3657 y FO(thereb)n(y)f(a)n (v)n(oiding)f(ha)n(ving)g(to)i(reduce)f FN(E)33 b FO(t)n(wice.)330 3773 y(Note,)28 b(ho)n(w)n(ev)n(er,)d(that)j(this)g(`call-b)n(y-v)-5 b(alue')26 b(sc)n(heme)h(is)h(disastrous)e(in)i(cases)e(lik)n(e)1324 3962 y(\()p FN(\025x:)p FO(1)p 1474 3975 42 4 v 1 w(\))h(\(\()p FN(\025x:)j(x)e(x)p FO(\))g(\()p FN(\025x:)h(x)f(x)p FO(\)\))330 4151 y(It)e(is)g(a)f(di\016cult)i(problem)e(to)h(\014nd)g (an)f(optimal)h(algorithm)e(for)i(c)n(ho)r(osing)e(the)i(next)g(redex)f (to)330 4250 y(reduce.)36 b(F)-7 b(or)27 b(recen)n(t)g(w)n(ork)g(in)g (this)h(area)e(see)i(Levy's)f(pap)r(er)g([25)o(].)330 4367 y(Because)19 b(normal)g(order)g(reduction)h(app)r(ears)f(so)g (ine\016cien)n(t,)j(some)e(programming)e(languages)330 4466 y(based)29 b(on)h(the)g FN(\025)p FO(-calculus,)g(e.g.)44 b FH(LISP)p FO(,)29 b(ha)n(v)n(e)g(used)h(call)f(b)n(y)h(v)-5 b(alue)30 b(ev)n(en)f(though)h(it)g(do)r(esn't)330 4566 y(alw)n(a)n(ys)h(terminate.)54 b(Actually)-7 b(,)35 b(call)d(b)n(y)h(v) -5 b(alue)33 b(has)g(other)g(adv)-5 b(an)n(tages)31 b(b)r(esides)i (e\016ciency)-7 b(,)330 4666 y(esp)r(ecially)20 b(when)h(the)g (language)e(is)i(`impure',)h(i.e.)f(has)f(constructs)g(with)i(side)e (e\013ects)h(\(e.g.)g(as-)330 4765 y(signmen)n(ts\).)39 b(On)28 b(the)h(other)f(hand,)h(recen)n(t)f(researc)n(h)e(suggests)h (that)i(ma)n(yb)r(e)f(normal)f(order)330 4865 y(ev)-5 b(aluation)36 b(is)g(not)g(as)g(ine\016cien)n(t)h(as)f(w)n(as)f (originally)g(though)n(t)h(if)h(one)f(uses)g(cunning)g(im-)330 4964 y(plemen)n(tation)g(tric)n(ks)f(lik)n(e)g(graph)g(reduction)g (\(see)h(page)f(40\).)61 b(Whether)36 b(functional)g(pro-)330 5064 y(gramming)24 b(languages)f(should)i(use)g(normal)f(order)g(or)g (call)h(b)n(y)f(v)-5 b(alue)25 b(is)g(still)h(a)e(con)n(tro)n(v)n (ersial)330 5164 y(issue.)330 5468 y FG(2.10)136 b(Call-b)l(y-v)-7 b(alue)46 b(and)e(Y)330 5669 y FO(Recall)27 b FL(Y)p FO(:)1126 5778 y FJ(LET)f FL(Y)d FO(=)g FN(\025f)t(:)28 b FO(\()p FN(\025x:)h(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))h(\()p FN(\025x:)f(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))p eop %%Page: 34 39 34 38 bop 450 92 a FO(34)1087 b(Chapter)27 b(2.)64 b(Represen)n(ting)26 b(Things)i(in)f(the)h FN(\025)p FO(-calculus)p 450 249 3000 9 v 450 498 a(Unfortunately)g FL(Y)h FO(do)r(esn't)f(w)n(ork)f (with)h(call-b)n(y-v)-5 b(alue,)27 b(b)r(ecause)h(applicativ)n(e)f (order)g(causes)450 598 y(it)h(to)f(go)g(in)n(to)h(a)f(lo)r(op.)1509 792 y FL(Y)h FN(f)92 b FK(\000)-14 b(!)23 b FN(f)9 b FO(\()p FL(Y)27 b FN(f)9 b FO(\))1742 892 y FK(\000)-14 b(!)23 b FN(f)9 b FO(\()p FN(f)g FO(\()p FL(Y)27 b FN(f)9 b FO(\)\))1742 991 y FK(\000)-14 b(!)23 b FN(f)9 b FO(\()p FN(f)g FO(\()p FN(f)g FO(\()p FL(Y)27 b FN(f)9 b FO(\)\)\))1770 1080 y(.)1770 1113 y(.)1770 1146 y(.)450 1308 y(T)-7 b(o)27 b(get)h(around)e(this,)i(de\014ne:)1031 1524 y FJ(LET)1205 1503 y FO(^)1190 1524 y FL(Y)23 b FO(=)g FN(\025f)t(:)28 b FO(\()p FN(\025x:)h(f)9 b FO(\()p FN(\025y)s(:)27 b(x)i(x)f(y)s FO(\)\))g(\()p FN(\025x:)g(f)9 b FO(\()p FN(\025y)s(:)28 b(x)g(x)g(y)s FO(\)\))450 1699 y(Note)33 b(that)856 1677 y(^)841 1699 y FL(Y)g FO(is)g FL(Y)g FO(with)g(\\)p FN(x)g(x)p FO(")g FN(\021)s FO(-con)n(v)n(erted)e(to)h (\\)p FN(\025y)s(:)h(x)g(x)g(y)s FO(".)2664 1677 y(^)2648 1699 y FL(Y)g FO(do)r(esn't)g(go)r(es)f(in)n(to)g(a)450 1798 y(lo)r(op)27 b(with)h(call-b)n(y-v)-5 b(alue:)1532 1880 y(^)1516 1902 y FL(Y)28 b FN(f)92 b FK(\000)-14 b(!)23 b FN(f)9 b FO(\()p FN(\025y)s(:)2146 1880 y FO(^)2130 1902 y FL(Y)28 b FN(f)37 b(y)s FO(\))450 2064 y(Call-b)n(y-v)-5 b(alue)26 b(do)r(esn't)i(ev)-5 b(aluate)27 b FN(\025)p FO(s,)h(hence)f(the)h(lo)r(oping)f(is)h(a)n(v)n(oided.)p eop %%Page: 35 40 35 39 bop 2836 498 a FS(Chapter)38 b(3)p 330 609 3000 9 v 330 861 a FP(Com)-5 b(binators)p 330 986 V 330 1475 a FO(Com)n(binators)35 b(pro)n(vide)h(an)h(alternativ)n(e)f(theory)h (of)g(functions)g(to)g(the)h FN(\025)p FO(-calculus.)65 b(They)330 1575 y(w)n(ere)23 b(originally)f(in)n(tro)r(duced)i(b)n(y)g (logicians)f(as)g(a)h(w)n(a)n(y)f(of)h(studying)f(the)i(pro)r(cess)e (of)h(substitu-)330 1674 y(tion.)42 b(More)28 b(recen)n(tly)-7 b(,)29 b(T)-7 b(urner)28 b(has)h(argued)f(that)h(com)n(binators)e(pro)n (vide)h(a)h(go)r(o)r(d)f(`mac)n(hine)330 1774 y(co)r(de')33 b(in)n(to)g(whic)n(h)g(functional)g(programs)e(can)h(b)r(e)i(compiled)f ([34)o(].)53 b(Sev)n(eral)32 b(exp)r(erimen)n(tal)330 1874 y(computers)i(ha)n(v)n(e)g(b)r(een)i(built)f(based)g(on)f(T)-7 b(urner's)35 b(ideas)f(\(see)h(e.g.)58 b([8]\))35 b(and)g(the)h (results)330 1973 y(are)27 b(promising.)38 b(Ho)n(w)28 b(these)g(mac)n(hines)g(w)n(ork)f(is)h(explained)g(in)g(Section)h(3.3.) 38 b(Com)n(binators)330 2073 y(also)22 b(pro)n(vide)f(a)i(go)r(o)r(d)f (in)n(termediate)g(co)r(de)h(for)f(con)n(v)n(en)n(tional)f(mac)n (hines;)j(sev)n(eral)d(of)h(the)i(b)r(est)330 2173 y(compilers)j(for)g (functional)g(languages)f(are)h(based)g(on)g(them)h(\(e.g.)37 b([11)o(,)28 b(1)o(]\).)330 2289 y(There)f(are)g(t)n(w)n(o)f(equiv)-5 b(alen)n(t)28 b(w)n(a)n(ys)e(of)i(form)n(ulating)e(the)i(theory)f(of)g (com)n(binators:)408 2480 y(\(i\))43 b(within)28 b(the)g FN(\025)p FO(-calculus,)f(or)385 2662 y(\(ii\))43 b(as)26 b(a)i(completely)f(separate)f(theory)-7 b(.)330 2853 y(The)30 b(approac)n(h)e(here)i(is)g(to)g(adopt)g(\(i\))h(as)e(it)i(is) f(sligh)n(tly)g(simpler,)g(but)h(\(ii\))g(w)n(as)e(ho)n(w)h(it)g(w)n (as)330 2953 y(done)g(originally)872 2923 y FD(1)908 2953 y FO(.)45 b(It)30 b(will)h(b)r(e)g(sho)n(wn)e(that)i FE(any)38 b FN(\025)p FO(-expression)29 b(is)h(equal)g(to)g(an)h (expression)330 3053 y(built)g(from)g(v)-5 b(ariables)29 b(and)i(t)n(w)n(o)f(particular)f(expressions,)h FL(K)h FO(and)f FL(S)p FO(,)i(using)e(only)h(function)330 3152 y(application.)k(This)23 b(is)g(done)g(b)n(y)g(mimic)n(king)g FN(\025)p FO(-abstractions)e(using)i(com)n(binations)f(of)h FL(K)g FO(and)330 3252 y FL(S)p FO(.)53 b(It)33 b(will)g(b)r(e)h (demonstrated)e(ho)n(w)g FN(\014)t FO(-reductions)h(can)f(b)r(e)i(sim)n (ulated)e(b)n(y)h(simpler)f(op)r(era-)330 3351 y(tions)e(in)n(v)n (olving)f FL(K)h FO(and)g FL(S)p FO(.)45 b(It)30 b(is)h(these)f (simpler)g(op)r(erations)f(that)h(com)n(binator)f(mac)n(hines)330 3451 y(implemen)n(t)f(directly)g(in)f(hardw)n(are.)35 b(The)28 b(de\014nitions)g(of)f FL(K)h FO(and)f FL(S)h FO(are)p 330 3591 2976 4 v 328 4056 4 465 v 1310 3719 a FJ(LET)e FL(K)d FO(=)g FN(\025x)28 b(y)s(:)g(x)1310 3918 y FJ(LET)e FL(S)d FO(=)g FN(\025f)37 b(g)30 b(x:)e FO(\()p FN(f)37 b(x)p FO(\))28 b(\()p FN(g)j(x)p FO(\))p 3303 4056 V 330 4059 2976 4 v 330 4237 a(F)-7 b(rom)27 b(these)h(de\014nitions)g(it)g(is)f(clear)g(b)n(y)g FN(\014)t FO(-reduction)g(that)h(for)f(all)g FN(E)2574 4249 y FD(1)2612 4237 y FO(,)h FN(E)2724 4249 y FD(2)2789 4237 y FO(and)f FN(E)3011 4249 y FD(3)3049 4237 y FO(:)1256 4444 y FL(K)g FN(E)1419 4456 y FD(1)1484 4444 y FN(E)1545 4456 y FD(2)1606 4444 y FO(=)c FN(E)1755 4456 y FD(1)1256 4643 y FL(S)k FN(E)1397 4655 y FD(1)1463 4643 y FN(E)1524 4655 y FD(2)1589 4643 y FN(E)1650 4655 y FD(3)1710 4643 y FO(=)c(\()p FN(E)1891 4655 y FD(1)1957 4643 y FN(E)2018 4655 y FD(3)2055 4643 y FO(\))28 b(\()p FN(E)2208 4655 y FD(2)2274 4643 y FN(E)2335 4655 y FD(3)2372 4643 y FO(\))330 4822 y(An)n(y)34 b(expression)f(built)i(b)n(y)f(application)f(\(i.e.)57 b(com)n(bination\))34 b(from)f FL(K)h FO(and)g FL(S)h FO(is)f(called)f(a)330 4922 y FE(c)l(ombinator)p FO(;)c FL(K)e FO(and)h FL(S)f FO(are)g(the)h FE(primitive)j(c)l(ombinators)7 b FO(.)330 5038 y(In)28 b FH(BNF)p FO(,)g(com)n(binators)d(ha)n(v)n(e)i (the)h(follo)n(wing)e(syn)n(tax:)683 5229 y FN(<)p FM(com)n(binator)p FN(>)48 b FO(::=)j FL(K)f FK(j)h FL(S)g FK(j)g FO(\()p FN(<)p FM(com)n(binator)p FN(>)25 b(<)p FM(com)n(binator)p FN(>)n FO(\))330 5437 y(A)30 b FE(c)l(ombinatory)i(expr)l(ession)k FO(is)30 b(an)e(expression)g(built)i(from)f FL(K)p FO(,)h FL(S)f FO(and)g(zero)f(or)h(more)f(v)-5 b(ari-)330 5536 y(ables.)38 b(Th)n(us)28 b(a)f(com)n(binator)g(is)h(a)g(com)n(binatory) e(expression)h(not)h(con)n(taining)f(v)-5 b(ariables.)37 b(In)p 330 5622 1200 4 v 422 5676 a Fx(1)457 5699 y FB(The)28 b(t)n(w)n(o-v)n(olume)g(treatise)g Fo(Combinatory)i(L)l(o)l(gic)i FB([9,)27 b(10)q(])g(is)g(the)i(de\014nitiv)n(e)g(reference,)g(but)f (the)h(more)330 5778 y(recen)n(t)c(textb)r(o)r(oks)h([19,)d(2])g(are)h (b)r(etter)h(places)f(to)g(start.)1788 5988 y FO(35)p eop %%Page: 36 41 36 40 bop 450 92 a FO(36)2000 b(Chapter)27 b(3.)64 b(Com)n(binators)p 450 249 3000 9 v 450 498 a FH(BNF)p FO(,)28 b(the)g(syn)n(tax)e(of)i (com)n(binatory)e(expressions)g(is:)802 664 y FN(<)p FM(com)n(binatory)g(expression)p FN(>)885 764 y FO(::=)51 b FL(K)f FK(j)h FL(S)941 864 y FK(j)g FN(<)p FM(v)-5 b(ariable)p FN(>)941 963 y FK(j)51 b FO(\()p FN(<)p FM(com)n(binatory) 25 b(expression)p FN(>)54 b(<)p FM(com)n(binatory)25 b(expression)p FN(>)n FO(\))450 1148 y FL(Exercise)31 b(34)450 1247 y FO(De\014ne)d FL(I)g FO(b)n(y:)1659 1346 y FJ(LET)54 b FL(I)d FO(=)f FN(\025x:)29 b(x)450 1490 y FO(Sho)n(w)e(that)h FL(I)23 b FO(=)g FL(S)28 b(K)f(K)p FO(.)37 b Fy(2)450 1678 y FO(The)g(iden)n(tit)n(y)f(function)h FL(I)g FO(de\014ned)g(in)g(the)g(last)f(exercise)f(is)i(often)f(tak)n (en)g(as)g(a)g(primitiv)n(e)450 1777 y(com)n(binator,)23 b(but)g(as)f(the)i(exercise)e(sho)n(ws)g(this)h(is)g(not)g(necessary)e (as)i(it)g(can)g(b)r(e)g(de\014ned)g(from)450 1877 y FL(K)28 b FO(and)f FL(S)p FO(.)450 2166 y FG(3.1)135 b(Com)l(binator)47 b(reduction)450 2365 y FO(If)37 b FN(E)k FO(and)c FN(E)881 2335 y FC(0)941 2365 y FO(are)e(com)n (binatory)g(expressions)g(then)i(the)f(notation)g FN(E)43 b FK(\000)-14 b(!)2865 2415 y FB(c)2985 2365 y FN(E)3051 2335 y FC(0)3111 2365 y FO(is)36 b(used)h(if)450 2494 y FN(E)28 b FK(\021)23 b FN(E)693 2463 y FC(0)744 2494 y FO(or)k(if)h FN(E)988 2463 y FC(0)1039 2494 y FO(can)f(b)r(e)h(got)f (from)g FN(E)33 b FO(b)n(y)27 b(a)g(sequence)g(of)h(rewritings)e(of)i (the)g(form:)528 2667 y(\(i\))43 b FL(K)27 b FN(E)821 2679 y FD(1)886 2667 y FN(E)947 2679 y FD(2)1008 2667 y FK(\000)-14 b(!)1059 2717 y FB(c)1165 2667 y FN(E)1226 2679 y FD(1)505 2858 y FO(\(ii\))43 b FL(S)27 b FN(E)799 2870 y FD(1)864 2858 y FN(E)925 2870 y FD(2)991 2858 y FN(E)1052 2870 y FD(3)1112 2858 y FK(\000)-14 b(!)1163 2908 y FB(c)1269 2858 y FO(\()p FN(E)1362 2870 y FD(1)1428 2858 y FN(E)1489 2870 y FD(3)1526 2858 y FO(\))28 b(\()p FN(E)1679 2870 y FD(2)1745 2858 y FN(E)1806 2870 y FD(3)1843 2858 y FO(\))482 3049 y(\(iii\))43 b FL(I)27 b FN(E)i FK(\000)-15 b(!)862 3099 y FB(c)967 3049 y FN(E)450 3252 y FO(Note)28 b(that)g(the)g(reduction)f FL(I)h FN(E)g FK(\000)-15 b(!)1547 3301 y FB(c)1653 3252 y FN(E)32 b FO(is)c(deriv)-5 b(able)27 b(from)g(\(i\))h(and)g(\(ii\).)450 3483 y FL(Example)1497 3771 y(S)g(K)g(K)f FN(x)d FK(\000)-15 b(!)1905 3821 y FB(c)2010 3771 y FL(K)28 b FN(x)g FO(\()p FL(K)g FN(x)p FO(\))822 b(b)n(y)27 b(\(ii\))1854 3924 y FK(\000)-15 b(!)1905 3974 y FB(c)2010 3924 y FN(x)1190 b FO(b)n(y)27 b(\(i\))450 4096 y Fy(2)450 4212 y FO(This)h(example)f (sho)n(ws)f(that)i(for)f(an)n(y)g FN(E)5 b FO(:)37 b FL(I)28 b FN(E)g FK(\000)-14 b(!)1997 4262 y FB(c)2103 4212 y FN(E)5 b FO(.)450 4353 y(An)n(y)28 b(sequence)f(of)h(com)n (binatory)e(reductions,)i(i.e.)38 b(reductions)27 b(via)h FK(\000)-15 b(!)2707 4403 y FB(c)2789 4353 y FO(,)29 b(can)e(b)r(e)h(expanded)450 4477 y(in)n(to)i(a)g(sequence)g(of)g FN(\014)t FO(-con)n(v)n(ersions.)42 b(This)31 b(is)f(clear)f(b)r (ecause)h FL(K)g FN(E)2649 4489 y FD(1)2717 4477 y FN(E)2778 4489 y FD(2)2846 4477 y FO(and)g FL(S)h FN(E)3155 4489 y FD(1)3223 4477 y FN(E)3284 4489 y FD(2)3351 4477 y FN(E)3412 4489 y FD(3)450 4577 y FO(reduce)c(to)h FN(E)876 4589 y FD(1)941 4577 y FO(and)f(\()p FN(E)1195 4589 y FD(1)1261 4577 y FN(E)1322 4589 y FD(3)1359 4577 y FO(\))h(\()p FN(E)1512 4589 y FD(2)1578 4577 y FN(E)1639 4589 y FD(3)1676 4577 y FO(\),)g(resp)r(ectiv)n(ely)-7 b(,)27 b(b)n(y)g(sequences)g(of)h FN(\014)t FO(-con)n(v)n(ersions.)450 4866 y FG(3.2)135 b(F)-11 b(unctional)45 b(completeness)450 5064 y FO(A)24 b(surprising)f(fact)h(is)g(that)h(an)n(y)e FN(\025)p FO(-expression)g(can)g(b)r(e)i(translated)e(to)h(an)g(equiv)-5 b(alen)n(t)24 b(com)n(bi-)450 5164 y(natory)i(expression.)35 b(This)27 b(result)g(is)g(called)g(the)g(functional)g(completeness)g (of)g(com)n(binators)450 5264 y(and)f(is)h(the)g(basis)f(for)g (compilers)f(for)h(functional)h(languages)d(to)j(the)g(mac)n(hine)f(co) r(de)g(of)h(com-)450 5363 y(binator)g(mac)n(hines.)450 5479 y(The)i(\014rst)g(step)g(is)g(to)g(de\014ne,)g(for)g(an)g (arbitrary)d(v)-5 b(ariable)28 b FN(V)48 b FO(and)29 b(com)n(binatory)f(expression)450 5579 y FN(E)5 b FO(,)30 b(another)e(com)n(binatory)g(expression)g FN(\025)1807 5549 y FC(\003)1845 5579 y FN(V)5 b(:)28 b(E)34 b FO(that)c(sim)n (ulates)f FN(\025V)5 b(:)29 b(E)35 b FO(in)29 b(the)h(sense)f(that)450 5679 y FN(\025)498 5649 y FC(\003)537 5679 y FN(V)5 b(:)27 b(E)i FO(=)22 b FN(\025V)5 b(:)27 b(E)5 b FO(.)36 b(This)26 b(pro)n(vides)f(a)g(w)n(a)n(y)g(of)h(using)f FL(K)h FO(and)g FL(S)g FO(to)g(sim)n(ulate)f(adding)h(`)p FN(\025V)19 b FO(')26 b(to)450 5778 y(an)h(expression.)p eop %%Page: 37 42 37 41 bop 330 92 a FO(3.2.)64 b(F)-7 b(unctional)27 b(completeness)1840 b(37)p 330 249 3000 9 v 330 498 a(If)26 b FN(V)45 b FO(is)26 b(a)g(v)-5 b(ariable)25 b(and)h FN(E)31 b FO(is)26 b(a)g(com)n (binatory)e(expression,)h(then)i(the)f(com)n(binatory)e(expres-)330 598 y(sion)j FN(\025)549 568 y FC(\003)588 598 y FN(V)5 b(:)27 b(E)33 b FO(is)28 b(de\014ned)g(inductiv)n(ely)f(on)h(the)g (structure)f(of)g FN(E)33 b FO(as)27 b(follo)n(ws:)408 766 y(\(i\))43 b FN(\025)586 736 y FC(\003)624 766 y FN(V)5 b(:)28 b(V)42 b FO(=)23 b FL(I)385 925 y FO(\(ii\))43 b FN(\025)586 895 y FC(\003)624 925 y FN(V)5 b(:)28 b(V)795 895 y FC(0)841 925 y FO(=)23 b FL(K)k FN(V)1098 895 y FC(0)1232 925 y FO(\(if)i FN(V)42 b FK(6)p FO(=)22 b FN(V)1585 895 y FC(0)1608 925 y FO(\))362 1084 y(\(iii\))43 b FN(\025)586 1053 y FC(\003)624 1084 y FN(V)5 b(:)28 b(C)h FO(=)23 b FL(K)k FN(C)117 b FO(\(if)29 b FN(C)34 b FO(is)27 b(a)g(com)n(binator\))365 1242 y(\(iv\))42 b FN(\025)586 1212 y FC(\003)624 1242 y FN(V)5 b(:)28 b FO(\()p FN(E)821 1254 y FD(1)886 1242 y FN(E)947 1254 y FD(2)985 1242 y FO(\))23 b(=)g FL(S)28 b FO(\()p FN(\025)1289 1212 y FC(\003)1328 1242 y FN(V)5 b(:)27 b(E)1492 1254 y FD(1)1530 1242 y FO(\))h(\()p FN(\025)1670 1212 y FC(\003)1709 1242 y FN(V)5 b(:)27 b(E)1873 1254 y FD(2)1911 1242 y FO(\))330 1411 y(Note)h(that)g FN(\025)759 1381 y FC(\003)797 1411 y FN(V)5 b(:)28 b(E)33 b FO(is)27 b(a)g(com)n(binatory)f (expression)g(not)i(con)n(taining)f FN(V)18 b FO(.)330 1612 y FL(Example:)35 b FO(If)28 b FN(f)36 b FO(and)28 b FN(x)g FO(are)e(v)-5 b(ariables)27 b(and)g FN(f)32 b FK(6)p FO(=)22 b FN(x)p FO(,)28 b(then:)1254 1893 y FN(\025)1302 1863 y FC(\003)1341 1893 y FN(x:)55 b(f)37 b(x)23 b FO(=)g FL(S)28 b FO(\()p FN(\025)1863 1863 y FC(\003)1901 1893 y FN(x:)h(f)9 b FO(\))27 b(\()p FN(\025)2189 1863 y FC(\003)2228 1893 y FN(x:)h(x)p FO(\))1614 2017 y(=)23 b FL(S)28 b FO(\()p FL(K)f FN(f)9 b FO(\))28 b FL(I)330 2182 y Fy(2)330 2298 y FO(The)g(follo)n(wing)e(theorem)h(sho)n (ws)g(that)h FN(\025)1641 2268 y FC(\003)1679 2298 y FN(V)5 b(:)28 b(E)33 b FO(sim)n(ulates)27 b FN(\025)p FO(-abstraction.)330 2500 y FL(Theorem)109 b FO(\()p FN(\025)894 2470 y FC(\003)933 2500 y FN(V)5 b(:)28 b(E)5 b FO(\))23 b(=)g FN(\025V)5 b(:)28 b(E)330 2701 y FE(Pr)l(o)l(of)330 2817 y FO(W)-7 b(e)24 b(sho)n(w)g(that)g(\()p FN(\025)928 2787 y FC(\003)967 2817 y FN(V)5 b(:)27 b(E)5 b FO(\))25 b FN(V)42 b FO(=)23 b FN(E)5 b FO(.)35 b(It)25 b(then)f(follo)n(ws)f (immediately)h(that)h FN(\025V)5 b(:)24 b FO(\()p FN(\025)2910 2787 y FC(\003)2949 2817 y FN(V)5 b(:)28 b(E)5 b FO(\))24 b FN(V)42 b FO(=)330 2917 y FN(\025V)5 b(:E)33 b FO(and)28 b(hence)f(b)n(y)h FN(\021)s FO(-reduction)f(that)h FN(\025)1725 2887 y FC(\003)1763 2917 y FN(V)5 b(:)28 b(E)g FO(=)23 b FN(\025V)5 b(:)28 b(E)5 b FO(.)330 3033 y(The)29 b(pro)r(of)f(that)h (\()p FN(\025)981 3003 y FC(\003)1020 3033 y FN(V)5 b(:)28 b(E)5 b FO(\))29 b FN(V)73 b FO(=)54 b FN(E)34 b FO(is)28 b(b)n(y)h(mathematical)f(induction)i(on)e(the)h(`size')g(of)g FN(E)5 b FO(.)330 3133 y(The)28 b(argumen)n(t)e(go)r(es)h(as)g(follo)n (ws:)408 3301 y(\(i\))43 b(If)28 b FN(E)g FO(=)22 b FN(V)47 b FO(then:)1085 3466 y(\()p FN(\025)1165 3435 y FC(\003)1204 3466 y FN(V)5 b(:)28 b(E)5 b FO(\))28 b FN(V)70 b FO(=)50 b FL(I)28 b FN(V)70 b FO(=)50 b(\()p FN(\025x:)29 b(x)p FO(\))f FN(V)70 b FO(=)50 b FN(V)70 b FO(=)50 b FN(E)385 3660 y FO(\(ii\))43 b(If)28 b FN(E)g FO(=)22 b FN(V)864 3630 y FC(0)915 3660 y FO(where)27 b FN(V)1222 3630 y FC(0)1268 3660 y FK(6)p FO(=)c FN(V)47 b FO(then:)901 3824 y(\()p FN(\025)981 3794 y FC(\003)1020 3824 y FN(V)5 b(:)28 b(E)5 b FO(\))28 b FN(V)69 b FO(=)51 b FL(K)27 b FN(V)1652 3790 y FC(0)1703 3824 y FN(V)70 b FO(=)50 b(\()p FN(\025x)29 b(y)s(:)e(x)p FO(\))i FN(V)2360 3790 y FC(0)2411 3824 y FN(V)70 b FO(=)50 b FN(V)2711 3790 y FC(0)2785 3824 y FO(=)h FN(E)362 4019 y FO(\(iii\))43 b(If)28 b FN(E)g FO(=)22 b FN(C)34 b FO(where)27 b FN(C)34 b FO(is)28 b(a)f(com)n(binator,)f(then:)986 4183 y(\()p FN(\025)1066 4153 y FC(\003)1104 4183 y FN(V)5 b(:)28 b(E)5 b FO(\))28 b FN(V)70 b FO(=)50 b FL(K)28 b FN(C)57 b FO(=)50 b(\()p FN(\025x)29 b(y)s(:)e(x)p FO(\))i FN(C)34 b(V)69 b FO(=)51 b FN(C)57 b FO(=)50 b FN(E)365 4377 y FO(\(iv\))42 b(If)28 b FN(E)g FO(=)22 b(\()p FN(E)890 4389 y FD(1)956 4377 y FN(E)1017 4389 y FD(2)1054 4377 y FO(\))28 b(then)g(w)n(e)g(can)f(assume)g(b)n(y)g(induction)h(that:) 1605 4541 y(\()p FN(\025)1685 4511 y FC(\003)1724 4541 y FN(V)5 b(:)28 b(E)1889 4553 y FD(1)1926 4541 y FO(\))g FN(V)42 b FO(=)23 b FN(E)2225 4553 y FD(1)1605 4666 y FO(\()p FN(\025)1685 4636 y FC(\003)1724 4666 y FN(V)5 b(:)28 b(E)1889 4678 y FD(2)1926 4666 y FO(\))g FN(V)42 b FO(=)23 b FN(E)2225 4678 y FD(2)538 4826 y FO(and)k(hence)896 4991 y(\()p FN(\025)976 4961 y FC(\003)1014 4991 y FN(V)5 b(:)28 b(E)5 b FO(\))28 b FN(V)42 b FO(=)23 b(\()p FN(\025)1502 4961 y FC(\003)1541 4991 y FN(V)5 b(:)27 b FO(\()p FN(E)1737 5003 y FD(1)1803 4991 y FN(E)1864 5003 y FD(2)1901 4991 y FO(\)\))i FN(V)1334 5116 y FO(=)23 b(\()p FL(S)28 b FO(\()p FN(\025)1615 5085 y FC(\003)1654 5116 y FN(V)5 b(:)27 b(E)1818 5128 y FD(1)1856 5116 y FO(\))h(\()p FN(\025)1996 5085 y FC(\003)2035 5116 y FN(V)5 b(:)28 b(E)2200 5128 y FD(2)2237 5116 y FO(\)\))g FN(V)1334 5240 y FO(=)23 b(\()p FN(\025f)37 b(g)30 b(x:)e(f)36 b(x)29 b FO(\()p FN(g)h(x)p FO(\)\))f(\()p FN(\025)2223 5210 y FC(\003)2262 5240 y FN(V)5 b(:)27 b(E)2426 5252 y FD(1)2464 5240 y FO(\))h(\()p FN(\025)2604 5210 y FC(\003)2643 5240 y FN(V)5 b(:)28 b(E)2808 5252 y FD(2)2845 5240 y FO(\))g FN(V)1334 5365 y FO(=)23 b(\()p FN(\025)1502 5335 y FC(\003)1541 5365 y FN(V)5 b(:)27 b(E)1705 5377 y FD(1)1743 5365 y FO(\))h FN(V)47 b FO(\(\()p FN(\025)2010 5335 y FC(\003)2049 5365 y FN(V)5 b(:)27 b(E)2213 5377 y FD(2)2251 5365 y FO(\))h FN(V)19 b FO(\))1334 5489 y(=)k FN(E)1483 5501 y FD(1)1548 5489 y FN(E)1609 5501 y FD(2)2370 5489 y FO(\(b)n(y)k(induction)h(assumption\))1334 5614 y(=)23 b FN(E)328 5778 y Fy(2)p eop %%Page: 38 43 38 42 bop 450 92 a FO(38)2000 b(Chapter)27 b(3.)64 b(Com)n(binators)p 450 249 3000 9 v 450 498 a(The)28 b(notation)1612 606 y FN(\025)1660 576 y FC(\003)1699 606 y FN(V)1747 618 y FD(1)1812 606 y FN(V)1860 618 y FD(2)1939 606 y FK(\001)14 b(\001)g(\001)42 b FN(V)2126 618 y Fu(n)2171 606 y FN(:)28 b(E)450 765 y FO(is)f(used)h(to)g(mean)1489 873 y FN(\025)1537 843 y FC(\003)1575 873 y FN(V)1623 885 y FD(1)1661 873 y FN(:)g(\025)1760 843 y FC(\003)1798 873 y FN(V)1846 885 y FD(2)1884 873 y FN(:)69 b FK(\001)14 b(\001)g(\001)41 b FN(\025)2162 843 y FC(\003)2201 873 y FN(V)2249 885 y Fu(n)2295 873 y FN(:)27 b(E)450 1048 y FO(No)n(w)d(de\014ne)h(the)h (translation)d(of)i(an)g(arbitrary)e FN(\025)p FO(-expression)g FN(E)30 b FO(to)25 b(a)f(com)n(binatory)f(expres-)450 1147 y(sion)k(\()p FN(E)5 b FO(\))751 1159 y Fn(C)787 1147 y FO(:)528 1336 y(\(i\))43 b(\()p FN(V)19 b FO(\))789 1348 y Fn(C)847 1336 y FO(=)k FN(V)505 1513 y FO(\(ii\))43 b(\()p FN(E)751 1525 y FD(1)816 1513 y FN(E)877 1525 y FD(2)915 1513 y FO(\))947 1525 y Fn(C)1005 1513 y FO(=)23 b(\()p FN(E)1186 1525 y FD(1)1223 1513 y FO(\))1255 1525 y Fn(C)1318 1513 y FO(\()p FN(E)1411 1525 y FD(2)1449 1513 y FO(\))1481 1525 y Fn(C)482 1691 y FO(\(iii\))43 b(\()p FN(\025V)5 b(:)28 b(E)5 b FO(\))940 1703 y Fn(C)998 1691 y FO(=)23 b FN(\025)1134 1661 y FC(\003)1173 1691 y FN(V)5 b(:)28 b FO(\()p FN(E)5 b FO(\))1407 1703 y Fn(C)450 1991 y FL(Theorem)26 b FO(F)-7 b(or)27 b(ev)n(ery)g FN(\025)p FO(-expression)f FN(E)33 b FO(w)n(e)27 b(ha)n(v)n(e:)f FN(E)i FO(=)23 b(\()p FN(E)5 b FO(\))2433 2003 y Fn(C)450 2218 y FE(Pr)l(o)l(of)450 2334 y FO(The)28 b(pro)r(of)f(is)g(b)n(y)g (induction)h(on)g(the)g(size)f(of)h FN(E)5 b FO(.)528 2523 y(\(i\))43 b(If)28 b FN(E)g FO(=)22 b FN(V)47 b FO(then)28 b(\()p FN(E)5 b FO(\))1331 2535 y Fn(C)1390 2523 y FO(=)22 b(\()p FN(V)e FO(\))1609 2535 y Fn(C)1667 2523 y FO(=)j FN(V)505 2700 y FO(\(ii\))43 b(If)28 b FN(E)g FO(=)22 b(\()p FN(E)1010 2712 y FD(1)1076 2700 y FN(E)1137 2712 y FD(2)1174 2700 y FO(\))28 b(w)n(e)g(can)f(assume)g (b)n(y)g(induction)h(that)1850 2888 y FN(E)1911 2900 y FD(1)1972 2888 y FO(=)22 b(\()p FN(E)2152 2900 y FD(1)2190 2888 y FO(\))2222 2900 y Fn(C)1850 3012 y FN(E)1911 3024 y FD(2)1972 3012 y FO(=)g(\()p FN(E)2152 3024 y FD(2)2190 3012 y FO(\))2222 3024 y Fn(C)658 3197 y FO(hence)1119 3305 y(\()p FN(E)5 b FO(\))1249 3317 y Fn(C)1336 3305 y FO(=)50 b(\()p FN(E)1544 3317 y FD(1)1610 3305 y FN(E)1671 3317 y FD(2)1708 3305 y FO(\))1740 3317 y Fn(C)1826 3305 y FO(=)g(\()p FN(E)2034 3317 y FD(1)2072 3305 y FO(\))2104 3317 y Fn(C)2167 3305 y FO(\()p FN(E)2260 3317 y FD(2)2298 3305 y FO(\))2330 3317 y Fn(C)2416 3305 y FO(=)g FN(E)2592 3317 y FD(1)2658 3305 y FN(E)2719 3317 y FD(2)2807 3305 y FO(=)g FN(E)482 3503 y FO(\(iii\))43 b(If)28 b FN(E)g FO(=)22 b FN(\025V)5 b(:)29 b(E)1136 3472 y FC(0)1187 3503 y FO(then)f(w)n(e)f(can)g(assume)g(b)n(y)g(induction)h(that)1859 3691 y(\()p FN(E)1957 3657 y FC(0)1981 3691 y FO(\))2013 3703 y Fn(C)2071 3691 y FO(=)23 b FN(E)2225 3657 y FC(0)658 3879 y FO(hence)1174 3966 y(\()p FN(E)5 b FO(\))1304 3978 y Fn(C)1423 3966 y FO(=)23 b(\()p FN(\025V)5 b(:)28 b(E)1761 3936 y FC(0)1784 3966 y FO(\))1816 3978 y Fn(C)1423 4066 y FO(=)23 b FN(\025)1559 4036 y FC(\003)1597 4066 y FN(V)5 b(:)28 b FO(\()p FN(E)1799 4036 y FC(0)1823 4066 y FO(\))1855 4078 y Fn(C)2162 4066 y FO(\(b)n(y)f(translation)g (rules\))1423 4165 y(=)c FN(\025)1559 4135 y FC(\003)1597 4165 y FN(V)5 b(:)28 b(E)1767 4135 y FC(0)1973 4165 y FO(\(b)n(y)g(induction)g(assumption\))1423 4265 y(=)23 b FN(\025V)5 b(:)28 b(E)1729 4235 y FC(0)2127 4265 y FO(\(b)n(y)g(previous)f(theorem\))1423 4365 y(=)c FN(E)448 4498 y Fy(2)450 4798 y FO(This)28 b(theorem)f(sho)n(ws)f(that)i(an)n(y) f FN(\025)p FO(-expression)f(is)h(equal)g(to)h(a)f FN(\025)p FO(-expression)f(built)j(up)e(from)450 4898 y FL(K)i FO(and)h FL(S)f FO(and)h(v)-5 b(ariables)28 b(b)n(y)h(application,)g (i.e.)43 b(the)30 b(class)f(of)g FN(\025)p FO(-expressions)f FN(E)35 b FO(de\014ned)29 b(b)n(y)450 4997 y(the)f FH(BNF)p FO(:)1414 5105 y FN(E)56 b FO(::=)51 b FN(V)69 b FK(j)51 b FL(K)g FK(j)f FL(S)h FK(j)g FN(E)2322 5117 y FD(1)2387 5105 y FN(E)2448 5117 y FD(2)450 5264 y FO(is)27 b(equiv)-5 b(alen)n(t)28 b(to)f(the)h(full)h FN(\025)p FO(-calculus.)450 5380 y(A)e(collection)f(of)g FN(n)h FO(com)n(binators)d FN(C)1603 5392 y FD(1)1641 5380 y FO(,)j FN(:)14 b(:)g(:)26 b FO(,)h FN(C)1923 5392 y Fu(n)1995 5380 y FO(is)g(called)f(an)g FN(n)p FO(-elemen)n(t)g FE(b)l(asis)35 b FO(\(Barendregt)450 5479 y([2],)26 b(Chapter)g(8\))f(if)i(ev)n(ery)e FN(\025)p FO(-expression)f FN(E)32 b FO(is)25 b(equal)h(to)g(an)f(expression)g (built)i(from)e FN(C)3229 5491 y Fu(i)3257 5479 y FO(s)h(and)450 5579 y(v)-5 b(ariables)26 b(b)n(y)g(function)i(applications.)35 b(The)27 b(theorem)g(ab)r(o)n(v)n(e)e(sho)n(ws)h(that)h FL(K)g FO(and)g FL(S)g FO(form)f(a)450 5679 y(2-elemen)n(t)e(basis.)36 b(The)25 b(exercise)e(b)r(elo)n(w)i(\(from)g(Section)g(8.1.5.)35 b(of)24 b(Barendregt\))g(sho)n(ws)g(that)450 5778 y(there)j(exists)h(a) f(1-elemen)n(t)g(basis.)p eop %%Page: 39 44 39 43 bop 330 108 a FO(3.3.)64 b(Reduction)28 b(mac)n(hines)1994 b(39)p 330 249 3000 9 v 330 498 a FL(Exercise)31 b(35)330 598 y FO(Find)23 b(a)e(com)n(binator,)h FL(X)g FO(sa)n(y)-7 b(,)23 b(suc)n(h)e(that)i(an)n(y)e FN(\025)p FO(-expression)g(is)g (equal)h(to)g(an)g(expression)e(built)330 697 y(from)26 b FL(X)g FO(and)h(v)-5 b(ariables)24 b(b)n(y)i(application.)36 b FE(Hint)p FO(:)g(Let)26 b FK(h)p FN(E)2162 709 y FD(1)2200 697 y FN(;)14 b(E)2298 709 y FD(2)2336 697 y FN(;)g(E)2434 709 y FD(3)2471 697 y FK(i)23 b FO(=)g FN(\025p:)k(p)f(E)2883 709 y FD(1)2947 697 y FN(E)3008 709 y FD(2)3071 697 y FN(E)3132 709 y FD(3)3196 697 y FO(and)330 797 y(consider)h FK(h)p FL(K)p FN(;)14 b FL(S)p FN(;)g FL(K)o FK(i)28 b(h)p FL(K)p FN(;)14 b FL(S)p FN(;)g FL(K)p FK(i)28 b(h)p FL(K)p FN(;)14 b FL(S)p FN(;)g FL(K)p FK(i)28 b FO(and)f FK(h)p FL(K)p FN(;)14 b FL(S)p FN(;)g FL(K)p FK(i)28 b(hh)p FL(K)p FN(;)14 b FL(S)p FN(;)g FL(K)p FK(i)28 b(h)p FL(K)p FN(;)14 b FL(S)p FN(;)g FL(K)p FK(ii)28 b Fy(2)330 974 y FL(Examples:)593 1135 y FN(\025)641 1104 y FC(\003)679 1135 y FN(f)t(:)g(\025)823 1104 y FC(\003)861 1135 y FN(x:)h(f)36 b FO(\()p FN(x)28 b(x)p FO(\))c(=)f FN(\025)1383 1104 y FC(\003)1421 1135 y FN(f)t(:)28 b FO(\()p FN(\025)1597 1104 y FC(\003)1636 1135 y FN(x:)g(f)36 b FO(\()p FN(x)29 b(x)p FO(\)\))1247 1259 y(=)23 b FN(\025)1383 1229 y FC(\003)1421 1259 y FN(f)t(:)28 b FO(\()p FL(S)g FO(\()p FN(\025)1710 1229 y FC(\003)1749 1259 y FN(x:)g(f)9 b FO(\))28 b(\()p FN(\025)2037 1229 y FC(\003)2076 1259 y FN(x:)g(x)g(x)p FO(\)\))1247 1384 y(=)23 b FN(\025)1383 1354 y FC(\003)1421 1384 y FN(f)t(:)28 b FO(\()p FL(S)g FO(\()p FL(K)p FN(f)9 b FO(\))28 b(\()p FL(S)p FO(\()p FN(\025)2012 1354 y FC(\003)2051 1384 y FN(x:)g(x)p FO(\))g(\()p FN(\025)2336 1354 y FC(\003)2375 1384 y FN(x:)h(x)p FO(\)\)\))1247 1508 y(=)23 b FN(\025)1383 1478 y FC(\003)1421 1508 y FN(f)t(:)28 b FO(\()p FL(S)g FO(\()p FL(K)p FN(f)9 b FO(\))28 b(\()p FL(S)g(I)g(I)p FO(\)\))1247 1633 y(=)23 b FL(S)k FO(\()p FN(\025)1495 1603 y FC(\003)1534 1633 y FN(f)t(:)h FL(S)g FO(\()p FL(K)p FN(f)9 b FO(\)\))28 b(\()p FN(\025)2040 1603 y FC(\003)2079 1633 y FN(f)t(:)f FL(S)h(I)g(I)p FO(\))1247 1757 y(=)23 b FL(S)k FO(\()p FL(S)h FO(\()p FN(\025)1608 1727 y FC(\003)1647 1757 y FN(f)t(:)g FL(S)p FO(\))g(\()p FN(\025)1936 1727 y FC(\003)1975 1757 y FN(f)t(:)g FL(K)f FN(f)9 b FO(\)\))28 b(\()p FL(K)g FO(\()p FL(S)g(I)g(I)p FO(\)\))1247 1882 y(=)23 b FL(S)k FO(\()p FL(S)h FO(\()p FL(K)g(S)p FO(\))g(\()p FL(S)g FO(\()p FN(\025)1969 1852 y FC(\003)2008 1882 y FN(f)t(:)g FL(K)p FO(\))g(\()g FN(\025)2347 1852 y FC(\003)2385 1882 y FN(f)t(:)g(f)9 b FO(\)\)\))28 b(\()p FL(K)g FO(\()p FL(S)g(I)g(I)p FO(\)\))1247 2006 y(=)23 b FL(S)k FO(\()p FL(S)h FO(\()p FL(K)g(S)p FO(\))g(\()p FL(S)g FO(\()p FL(K)g(K)p FO(\))g FL(I)p FO(\)\))g(\()p FL(K)g FO(\()p FL(S)g(I)g(I)p FO(\)\))537 2327 y(\()p FL(Y)q FO(\))674 2339 y Fn(C)732 2327 y FO(=)23 b(\()p FN(\025f)t(:)28 b FO(\()p FN(\025x:)h(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))h(\()p FN(\025x:)f(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\)\))1950 2339 y Fn(C)732 2452 y FO(=)23 b FN(\025)868 2422 y FC(\003)906 2452 y FN(f)t(:)28 b FO(\(\()p FN(\025x:)h(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))h(\()p FN(\025x:)g(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\)\))1989 2464 y Fn(C)732 2576 y FO(=)23 b FN(\025)868 2546 y FC(\003)906 2576 y FN(f)t(:)28 b FO(\(\()p FN(\025x:)h(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))1481 2588 y Fn(C)1545 2576 y FO(\()p FN(\025x:)h(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))1992 2588 y Fn(C)2028 2576 y FO(\))732 2701 y(=)23 b FN(\025)868 2671 y FC(\003)906 2701 y FN(f)t(:)28 b FO(\()p FN(\025)1082 2671 y FC(\003)1121 2701 y FN(x:)g FO(\()p FN(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))1519 2713 y Fn(C)1555 2701 y FO(\))g(\()p FN(\025)1695 2671 y FC(\003)1734 2701 y FN(x:)g FO(\()p FN(f)9 b FO(\()p FN(x)29 b(x)p FO(\)\))2133 2713 y Fn(C)2169 2701 y FO(\))732 2825 y(=)23 b FN(\025)868 2795 y FC(\003)906 2825 y FN(f)t(:)28 b FO(\()p FN(\025)1082 2795 y FC(\003)1121 2825 y FN(x:)g(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))h(\()p FN(\025)1596 2795 y FC(\003)1634 2825 y FN(x:)g(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))732 2950 y(=)23 b FL(S)k FO(\()p FN(\025)980 2920 y FC(\003)1019 2950 y FN(f)t(:)h(\025)1163 2920 y FC(\003)1201 2950 y FN(x:)h(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))g(\()p FN(\025)1676 2920 y FC(\003)1715 2950 y FN(f)t(:)g(\025)1859 2920 y FC(\003)1898 2950 y FN(x:)g(f)9 b FO(\()p FN(x)28 b(x)p FO(\)\))732 3075 y(=)23 b FL(S)p FO(\()p FL(S)p FO(\()p FL(S)p FO(\()p FL(KS)p FO(\)\()p FL(S)q FO(\()p FL(KK)p FO(\))p FL(I)p FO(\)\)\()p FL(K)q FO(\()p FL(SI)q(I)p FO(\)\)\)\()p FL(S)q FO(\()p FL(S)p FO(\()p FL(K)q(S)p FO(\)\()p FL(S)p FO(\()p FL(KK)p FO(\))p FL(I)q FO(\)\)\()p FL(K)p FO(\()p FL(S)q(II)p FO(\)\)\))330 3252 y Fy(2)330 3539 y FG(3.3)135 b(Reduction)46 b(mac)l(hines)330 3737 y FO(Un)n(til)22 b(Da)n(vid)f(T)-7 b(urner)21 b(published)g(his)h(pap)r(er)e([34],)i (com)n(binators)e(w)n(ere)g(regarded)g(as)g(a)h(mathe-)330 3837 y(matical)i(curiosit)n(y)-7 b(.)35 b(In)24 b(his)g(pap)r(er)f(T)-7 b(urner)23 b(argued)f(that)i(translating)f(functional)h(languages,)330 3937 y(i.e.)g(languages)d(based)j(on)f(the)h FN(\025)p FO(-calculus,)g(to)f(com)n(binators)f(and)i(then)g(reducing)f(the)h (result-)330 4036 y(ing)g(expressions)f(using)g(the)i(rewrites)e(giv)n (en)h(on)g(page)f(36)g(is)h(a)g FE(pr)l(actic)l(al)35 b FO(w)n(a)n(y)23 b(of)h(implemen)n(t-)330 4136 y(ing)j(these)h (languages.)330 4252 y(T)-7 b(urner's)45 b(idea)h(is)g(to)g(represen)n (t)f(com)n(binatory)f(expressions)g(b)n(y)i(trees.)92 b(F)-7 b(or)45 b(example,)330 4352 y FL(S)28 b FO(\()p FN(f)36 b(x)p FO(\))29 b(\()p FL(K)e FN(y)s FO(\))h FN(z)j FO(w)n(ould)c(b)r(e)h(represen)n(ted)f(b)n(y:)1530 5658 y FA(\001)1572 5575 y(\001)1613 5492 y(\001)1638 5441 y(\001)1788 5658 y(A)1747 5575 y(A)1705 5492 y(A)1680 5441 y(A)1380 5358 y(\001)1422 5275 y(\001)1463 5192 y(\001)1488 5141 y(\001)1638 5358 y(A)1597 5275 y(A)1555 5192 y(A)1530 5141 y(A)1980 5358 y(\001)2022 5275 y(\001)2063 5192 y(\001)2088 5141 y(\001)2238 5358 y(A)2197 5275 y(A)2155 5192 y(A)2130 5141 y(A)1530 5058 y(\000)1613 4975 y(\000)1696 4892 y(\000)1747 4841 y(\000)2047 5058 y(@)1964 4975 y(@)1881 4892 y(@)1830 4841 y(@)1830 4758 y(\001)1872 4675 y(\001)1913 4592 y(\001)1938 4541 y(\001)2088 4758 y(A)2047 4675 y(A)2005 4592 y(A)1980 4541 y(A)1532 5718 y Fm(m)1507 5739 y FN(f)1832 5718 y Fm(m)1808 5736 y FN(x)1382 5418 y Fm(m)1355 5447 y FL(S)1982 5418 y Fm(m)1944 5447 y FL(K)2282 5418 y Fm(m)2260 5428 y FN(y)2132 4818 y Fm(m)2111 4836 y FN(z)1659 5377 y FK(\017)1509 5077 y(\017)558 b(\017)1809 4777 y(\017)1959 4477 y(\017)p eop %%Page: 40 45 40 44 bop 450 92 a FO(40)2000 b(Chapter)27 b(3.)64 b(Com)n(binators)p 450 249 3000 9 v 450 498 a(Suc)n(h)34 b(trees)f(are)g(represen)n(ted)f (as)h(p)r(oin)n(ter)h(structures)f(in)h(memory)-7 b(.)54 b(Sp)r(ecial)34 b(hardw)n(are)e(or)450 598 y(\014rm)n(w)n(are)e(can)i (then)h(b)r(e)f(implemen)n(ted)h(to)f(transform)f(suc)n(h)g(trees)h (according)e(to)i(the)h(rules)450 697 y(of)28 b(com)n(binator)e (reduction)h(de\014ning)h FK(\000)-15 b(!)1715 747 y FB(c)1797 697 y FO(.)450 838 y(F)-7 b(or)27 b(example,)g(the)h(tree)f (ab)r(o)n(v)n(e)g(could)g(b)r(e)h(transformed)f(to:)1425 1916 y FA(\001)1467 1833 y(\001)1508 1750 y(\001)1533 1699 y(\001)1683 1916 y(A)1642 1833 y(A)1600 1750 y(A)1575 1699 y(A)2025 1916 y(\001)2067 1833 y(\001)2108 1750 y(\001)2133 1699 y(\001)2283 1916 y(A)2242 1833 y(A)2200 1750 y(A)2175 1699 y(A)1575 1616 y(\001)1617 1533 y(\001)1658 1450 y(\001)1683 1399 y(\001)1833 1616 y(A)1792 1533 y(A)1750 1450 y(A)1725 1399 y(A)2175 1616 y(\001)2217 1533 y(\001)2258 1450 y(\001)2283 1399 y(\001)2433 1616 y(A)2392 1533 y(A)2350 1450 y(A)2325 1399 y(A)1725 1316 y(\000)1808 1233 y(\000)1891 1150 y(\000)1942 1099 y(\000)2242 1316 y(@)2159 1233 y(@)2076 1150 y(@)2025 1099 y(@)1427 1976 y Fm(m)1402 1997 y FN(f)1727 1976 y Fm(m)1703 1994 y FN(x)2027 1976 y Fm(m)1989 2005 y FL(K)2327 1976 y Fm(m)2305 1986 y FN(y)1877 1676 y Fm(m)1856 1694 y FN(z)2477 1676 y Fm(m)2456 1694 y FN(z)1554 1635 y FK(\017)558 b(\017)1704 1335 y(\017)g(\017)2004 1035 y(\017)450 2206 y FO(using)27 b(the)h(transformation)810 3201 y FA(\001)852 3118 y(\001)893 3035 y(\001)918 2984 y(\001)1068 3201 y(A)1027 3118 y(A)985 3035 y(A)960 2984 y(A)960 2901 y(\001)1002 2818 y(\001)1043 2735 y(\001)1068 2684 y(\001)1218 2901 y(A)1177 2818 y(A)1135 2735 y(A)1110 2684 y(A)1110 2601 y(\001)1152 2518 y(\001)1193 2435 y(\001)1218 2384 y(\001)1368 2601 y(A)1327 2518 y(A)1285 2435 y(A)1260 2384 y(A)2160 2901 y(\001)2202 2818 y(\001)2243 2735 y(\001)2268 2684 y(\001)2418 2901 y(A)2377 2818 y(A)2335 2735 y(A)2310 2684 y(A)2760 2901 y(\001)2802 2818 y(\001)2843 2735 y(\001)2868 2684 y(\001)3018 2901 y(A)2977 2818 y(A)2935 2735 y(A)2910 2684 y(A)2310 2601 y(\000)2393 2518 y(\000)2476 2435 y(\000)2527 2384 y(\000)2827 2601 y(@)2744 2518 y(@)2661 2435 y(@)2610 2384 y(@)812 3261 y Fm(m)785 3289 y FL(S)1022 3321 y Fl(\023)1050 3284 y(\023S)1140 3321 y(S)p 1022 3324 181 7 v 1091 3306 a FO(1)1172 3021 y Fl(\023)1200 2984 y(\023S)1290 3021 y(S)p 1172 3024 V 1241 3006 a FO(2)1322 2721 y Fl(\023)1350 2684 y(\023S)1440 2721 y(S)p 1322 2724 V 1391 2706 a FO(3)2072 3021 y Fl(\023)2100 2984 y(\023S)2190 3021 y(S)p 2072 3024 V 2141 3006 a FO(1)2372 3021 y Fl(\023)2400 2984 y(\023S)2490 3021 y(S)p 2372 3024 V 2441 3006 a FO(3)2672 3021 y Fl(\023)2700 2984 y(\023S)2790 3021 y(S)p 2672 3024 V 2741 3006 a FO(2)2972 3021 y Fl(\023)3000 2984 y(\023S)3090 3021 y(S)p 2972 3024 V 3041 3006 a FO(3)939 2919 y FK(\017)1089 2619 y(\017)1239 2319 y(\017)2289 2619 y(\017)558 b(\017)2589 2319 y(\017)p 1710 2752 300 4 v 1927 2750 a FA(-)450 3491 y FO(whic)n(h)28 b(corresp)r(onds)d(to)j (the)g(reduction)f FL(S)h FN(E)1899 3503 y FD(1)1964 3491 y FN(E)2025 3503 y FD(2)2090 3491 y FN(E)2151 3503 y FD(3)2212 3491 y FK(\000)-15 b(!)2263 3541 y FB(c)2368 3491 y FO(\()p FN(E)2461 3503 y FD(1)2527 3491 y FN(E)2588 3503 y FD(3)2625 3491 y FO(\))28 b(\()p FN(E)2778 3503 y FD(2)2844 3491 y FN(E)2905 3503 y FD(3)2942 3491 y FO(\).)450 3685 y FL(Exercise)j(36)450 3785 y FO(What)c(tree)f (transformation)f(corresp)r(onds)g(to)h FL(K)h FN(E)2130 3797 y FD(1)2194 3785 y FN(E)2255 3797 y FD(2)2316 3785 y FK(\000)-14 b(!)2367 3834 y FB(c)2473 3785 y FN(E)2534 3797 y FD(1)2571 3785 y FO(?)37 b(Ho)n(w)26 b(w)n(ould)g(this)h(trans-) 450 3909 y(formation)g(c)n(hange)f(the)i(tree)f(ab)r(o)n(v)n(e?)36 b Fy(2)450 4079 y FO(Notice)i(that)h(the)f(tree)g(transformation)f(for) g FL(S)i FO(just)f(giv)n(en)g(duplicates)g(a)g(subtree.)68 b(This)450 4178 y(w)n(astes)31 b(space;)k(a)d(b)r(etter)g (transformation)f(w)n(ould)h(b)r(e)h(to)g(generate)e(one)h(subtree)g (with)h(t)n(w)n(o)450 4278 y(p)r(oin)n(ters)27 b(to)g(it,)h(i.e.)810 5273 y FA(\001)852 5190 y(\001)893 5107 y(\001)918 5056 y(\001)1068 5273 y(A)1027 5190 y(A)985 5107 y(A)960 5056 y(A)960 4973 y(\001)1002 4890 y(\001)1043 4807 y(\001)1068 4756 y(\001)1218 4973 y(A)1177 4890 y(A)1135 4807 y(A)1110 4756 y(A)1110 4673 y(\001)1152 4590 y(\001)1193 4507 y(\001)1218 4456 y(\001)1368 4673 y(A)1327 4590 y(A)1285 4507 y(A)1260 4456 y(A)2160 4973 y(\001)2202 4890 y(\001)2243 4807 y(\001)2268 4756 y(\001)2760 4973 y(\001)2802 4890 y(\001)2843 4807 y(\001)2868 4756 y(\001)2310 4673 y(\000)2393 4590 y(\000)2476 4507 y(\000)2527 4456 y(\000)2827 4673 y(@)2744 4590 y(@)2661 4507 y(@)2610 4456 y(@)p 2308 4823 4 151 v 2308 4974 a Fk(")p 2459 4974 1 4 v 1 w( )p 2608 5273 4 151 v 2460 4974 1 4 v 3058 4674 a( )p 3058 5003 4 182 v 3058 5154 a(!)p 2910 5154 1 4 v 2910 4674 V -749 w(\033)p 2608 5273 4 4 v 2726 5154 184 4 v 812 5333 a Fm(m)785 5361 y FL(S)1022 5393 y Fl(\023)1050 5356 y(\023S)1140 5393 y(S)p 1022 5396 181 7 v 1091 5377 a FO(1)1172 5093 y Fl(\023)1200 5056 y(\023S)1290 5093 y(S)p 1172 5096 V 1241 5077 a FO(2)1322 4793 y Fl(\023)1350 4756 y(\023S)1440 4793 y(S)p 1322 4796 V 1391 4777 a FO(3)2522 5393 y Fl(\023)2550 5356 y(\023S)2640 5393 y(S)p 2522 5396 V 2591 5377 a FO(3)2072 5093 y Fl(\023)2100 5056 y(\023S)2190 5093 y(S)p 2072 5096 V 2141 5077 a FO(1)2672 5093 y Fl(\023)2700 5056 y(\023S)2790 5093 y(S)p 2672 5096 V 2741 5077 a FO(2)939 4991 y FK(\017)1089 4691 y(\017)1239 4391 y(\017)2289 4691 y(\017)558 b(\017)2589 4391 y(\017)p 1710 4824 300 4 v 1927 4822 a FA(-)450 5562 y FO(This)29 b(generates)e(a)h FE(gr)l(aph)36 b FO(rather)28 b(than)g(a)g(tree.)40 b(F)-7 b(or)28 b(further)g(details)h (of)f(suc)n(h)h FE(gr)l(aph)i(r)l(e)l(duc-)450 5662 y(tions)k FO(see)27 b(T)-7 b(urner's)27 b(pap)r(er)g([34)o(].)450 5778 y(It)h(is)f(clear)g(from)g(the)h(theorem)f(ab)r(o)n(v)n(e)g(that)g (a)h(v)-5 b(alid)27 b(w)n(a)n(y)g(of)g(reducing)g FN(\025)p FO(-expressions)f(is:)p eop %%Page: 41 46 41 45 bop 330 92 a FO(3.4.)64 b(Impro)n(v)n(ed)26 b(translation)g(to)i (com)n(binators)1389 b(41)p 330 249 3000 9 v 408 498 a(\(i\))43 b(T)-7 b(ranslating)26 b(to)h(com)n(binators)f(\(i.e.)37 b FN(E)28 b FK(7!)c FO(\()p FN(E)5 b FO(\))2050 510 y Fn(C)2085 498 y FO(\).)385 660 y(\(ii\))43 b(Applying)27 b(the)h(rewrites)1325 830 y FL(K)f FN(E)1488 842 y FD(1)1554 830 y FN(E)1615 842 y FD(2)1675 830 y FK(\000)-14 b(!)1726 879 y FB(c)1832 830 y FN(E)1893 842 y FD(1)1325 957 y FL(S)28 b FN(E)1467 969 y FD(1)1532 957 y FN(E)1593 969 y FD(2)1658 957 y FN(E)1719 969 y FD(3)1780 957 y FK(\000)-15 b(!)1831 1007 y FB(c)1936 957 y FO(\()p FN(E)2029 969 y FD(1)2095 957 y FN(E)2156 969 y FD(3)2193 957 y FO(\))28 b(\()p FN(E)2346 969 y FD(2)2412 957 y FN(E)2473 969 y FD(3)2510 957 y FO(\))538 1153 y(un)n(til)g(no)f(more)g(rewriting)f (is)i(p)r(ossible.)330 1326 y(An)j(in)n(teresting)e(question)h(is)g (whether)g(this)h(pro)r(cess)e(will)h(`fully)h(ev)-5 b(aluate')30 b(expressions.)43 b(If)330 1426 y(some)37 b(expression)g FN(E)43 b FO(is)38 b(translated)f(to)h(com)n(binators,)h (then)f(reduced)g(using)f FK(\000)-14 b(!)2975 1476 y FB(c)3057 1426 y FO(,)41 b(is)d(the)330 1550 y(resulting)27 b(expression)e(as)i(`fully)h(ev)-5 b(aluated')27 b(as)g(the)g(result)g (of)g FN(\025)p FO(-reducing)g FN(E)33 b FO(directly)-7 b(,)27 b(or)f(is)330 1650 y(it)k(only)e(partially)h(ev)-5 b(aluated?)41 b(Surprisingly)-7 b(,)29 b(there)g(do)r(esn't)g(seem)g (to)g(b)r(e)h(an)n(ything)e(in)i(the)330 1749 y(literature)i(on)g(this) h(imp)r(ortan)n(t)f(question)1687 1719 y FD(2)1723 1749 y FO(.)52 b(Ho)n(w)n(ev)n(er,)32 b(com)n(binator)f(mac)n(hines)g(ha)n (v)n(e)h(b)r(een)330 1849 y(built)c(and)g(they)g(app)r(ear)e(to)i(w)n (ork)e([8)o(]!)330 1965 y(It)k(is)g(w)n(ell)g(kno)n(wn)f(that)i(if)f FN(E)1266 1977 y FD(1)1331 1965 y FK(\000)-15 b(!)27 b FN(E)1552 1977 y FD(2)1620 1965 y FO(in)j(the)h FN(\025)p FO(-calculus,)f(then)g(it)h(is)f FE(not)37 b FO(necessarily)29 b(the)330 2065 y(case)e(that)h(\()p FN(E)779 2077 y FD(1)816 2065 y FO(\))848 2077 y Fn(C)907 2065 y FK(\000)-14 b(!)958 2114 y FB(c)1064 2065 y FO(\()p FN(E)1157 2077 y FD(2)1194 2065 y FO(\))1226 2077 y Fn(C)1262 2065 y FO(.)37 b(F)-7 b(or)27 b(example,)g(tak)n(e)1424 2272 y FN(E)1485 2284 y FD(1)1545 2272 y FO(=)c FN(\025y)s(:)28 b FO(\()p FN(\025z)t(:)f(y)s FO(\))h(\()p FN(x)g(y)s FO(\))1424 2372 y FN(E)1485 2384 y FD(2)1545 2372 y FO(=)23 b FN(\025y)s(:)28 b(y)330 2556 y FL(Exercise)j(37)330 2655 y FO(With)e FN(E)606 2667 y FD(1)672 2655 y FO(and)f FN(E)895 2667 y FD(2)960 2655 y FO(as)g(ab)r(o)n(v)n(e)e(sho)n(w)i(that)g FN(E)1746 2667 y FD(1)1807 2655 y FK(\000)-14 b(!)24 b FN(E)2026 2667 y FD(2)2092 2655 y FO(in)k(the)h FN(\025)p FO(-calculus,)e(but)i (it)g(is)f(not)g(the)330 2755 y(case)f(that)h(\()p FN(E)779 2767 y FD(1)816 2755 y FO(\))848 2767 y Fn(C)907 2755 y FK(\000)-14 b(!)958 2805 y FB(c)1064 2755 y FO(\()p FN(E)1157 2767 y FD(2)1194 2755 y FO(\))1226 2767 y Fn(C)1262 2755 y FO(.)37 b Fy(2)330 2967 y FO(A)22 b(com)n(binatory)f(expression) g(is)h(de\014ned)g(to)g(b)r(e)h(in)f FE(c)l(ombinatory)k(normal)f(form) 30 b FO(if)22 b(it)h(con)n(tains)330 3066 y(no)32 b(sub)r(expressions)f (of)i(the)g(form)f FL(K)h FN(E)1633 3078 y FD(1)1703 3066 y FN(E)1764 3078 y FD(2)1834 3066 y FO(or)f FL(S)g FN(E)2087 3078 y FD(1)2157 3066 y FN(E)2218 3078 y FD(2)2289 3066 y FN(E)2350 3078 y FD(3)2387 3066 y FO(.)52 b(Then)33 b(the)g(normalization)330 3166 y(theorem)28 b(holds)g(for)g(com)n (binatory)f(expressions,)g(i.e.)40 b(alw)n(a)n(ys)27 b(reducing)h(the)h(leftmost)g(com-)330 3266 y(binatory)e(redex)g(will)g (\014nd)h(a)g(com)n(binatory)e(normal)g(form)h(if)h(it)g(exists.)330 3382 y(Note)k(that)f(if)h FN(E)37 b FO(is)31 b(in)h(com)n(binatory)e (normal)g(form,)i(then)g(it)g(do)r(es)g(not)f(necessarily)f(follo)n(w) 330 3482 y(that)e(it)g(is)f(a)h FN(\025)p FO(-expression)e(in)i(normal) e(form.)330 3669 y FL(Example:)39 b(S)27 b(K)f FO(is)g(in)h(com)n (binatory)e(normal)g(form,)h(but)h(it)g(con)n(tains)e(a)h FN(\014)t FO(-redex,)g(namely:)1223 3840 y(\()p FN(\025f)t(:)i FO(\()p FN(\025g)j(x:)d FO(\()p FN(f)37 b(x)28 b FO(\()p FN(g)i(x)p FO(\)\)\))f(\()p FN(\025x)g(y)s(:)f(x)p FO(\))330 4011 y Fy(2)330 4199 y FL(Exercise)j(38)330 4298 y FO(Construct)g(a)g (com)n(binatory)f(expression)h FN(E)36 b FO(whic)n(h)c(is)g(in)f(com)n (binatory)f(normal)h(form,)h(but)330 4398 y(has)27 b(no)g(normal)g (form.)36 b Fy(2)330 4758 y FG(3.4)135 b(Impro)l(v)l(ed)46 b(translation)g(to)g(com)l(binators)330 4957 y FO(The)37 b(examples)g(on)g(page)f(39)h(sho)n(w)f(that)i(simple)f FN(\025)p FO(-expressions)f(can)g(translate)h(to)g(quite)330 5056 y(complex)27 b(com)n(binatory)f(expressions)g(via)h(the)h(rules)f (on)g(page)g(38.)330 5173 y(T)-7 b(o)34 b(mak)n(e)g(the)g(`co)r(de')h (executed)f(b)n(y)g(reduction)g(mac)n(hines)g(more)g(compact,)h(v)-5 b(arious)33 b(opti-)330 5272 y(mizations)27 b(ha)n(v)n(e)f(b)r(een)i (devised.)330 5479 y FL(Examples)p 330 5543 1200 4 v 422 5597 a Fx(2)457 5621 y FB(The)34 b(most)g(relev)l(an)n(t)g(pap)r (er)h(I)f(could)g(\014nd)h(is)e(one)i(b)n(y)f(Hindley)g([18].)61 b(This)34 b(compares)f Fv(\025)p FB(-reduction)330 5699 y(with)27 b(com)n(binatory)g(reduction,)h(but)g(not)g(in)e(a)h(w)n(a)n (y)h(that)g(is)e(prima)f(facie)i(relev)l(an)n(t)h(to)g(the)g (termination)e(of)330 5778 y(com)n(binator)e(mac)n(hines.)p eop %%Page: 42 47 42 46 bop 450 92 a FO(42)2000 b(Chapter)27 b(3.)64 b(Com)n(binators)p 450 249 3000 9 v 528 498 a(\(i\))43 b(Let)21 b FN(E)27 b FO(b)r(e)22 b(a)f(com)n(binatory)f(expression)h(and)g FN(x)h FO(a)f(v)-5 b(ariable)21 b(not)h(o)r(ccurring)e(in)i FN(E)5 b FO(.)35 b(Then:)1321 669 y FL(S)28 b FO(\()p FL(K)f FN(E)5 b FO(\))28 b FL(I)g FN(x)c FK(\000)-14 b(!)1848 718 y FB(c)1954 669 y FO(\()p FL(K)27 b FN(E)33 b(x)p FO(\))c(\()p FL(I)f FN(x)p FO(\))c FK(\000)-15 b(!)2540 718 y FB(c)2645 669 y FN(E)33 b(x)658 868 y FO(hence)j FL(S)g FO(\()p FL(K)p FN(E)5 b FO(\))37 b FL(I)f FN(x)i FO(=)f FN(E)k(x)c FO(\(b)r(ecause)f FN(E)2082 880 y FD(1)2157 868 y FK(\000)-15 b(!)2208 918 y FB(c)2328 868 y FN(E)2389 880 y FD(2)2462 868 y FO(implies)37 b FN(E)2814 880 y FD(1)2889 868 y FK(\000)-15 b(!)38 b FN(E)3121 880 y FD(2)3158 868 y FO(\),)h(so)c(b)n(y)658 997 y(extensionalit)n(y)26 b(\(Section)i(1.7,)f(see)g(on)g(page)g (10\):)1777 1167 y FL(S)g FO(\()p FL(K)h FN(E)5 b FO(\))28 b FL(I)23 b FO(=)g FN(E)505 1368 y FO(\(ii\))43 b(Let)20 b FN(E)860 1380 y FD(1)897 1368 y FO(,)i FN(E)1003 1380 y FD(2)1061 1368 y FO(b)r(e)f(com)n(binatory)d(expressions)h(and)h FN(x)h FO(a)f(v)-5 b(ariable)19 b(not)h(o)r(ccurring)f(in)h(either)658 1468 y(of)27 b(them.)38 b(Then:)1082 1638 y FL(S)28 b FO(\()p FL(K)f FN(E)1358 1650 y FD(1)1396 1638 y FO(\))h(\()p FL(K)g FN(E)1652 1650 y FD(2)1689 1638 y FO(\))g FN(x)c FK(\000)-15 b(!)1871 1688 y FB(c)1976 1638 y FL(K)28 b FN(E)2140 1650 y FD(1)2205 1638 y FN(x)g FO(\()p FL(K)g FN(E)2476 1650 y FD(2)2514 1638 y FO(\))g FN(x)23 b FK(\000)-14 b(!)2695 1688 y FB(c)2801 1638 y FN(E)2862 1650 y FD(1)2927 1638 y FN(E)2988 1650 y FD(2)658 1833 y FO(Th)n(us)1501 1933 y FL(S)28 b FO(\()p FL(K)g FN(E)1778 1945 y FD(1)1815 1933 y FO(\))g(\()p FL(K)g FN(E)2071 1945 y FD(2)2108 1933 y FO(\))g FN(x)51 b FO(=)g FN(E)2443 1945 y FD(1)2508 1933 y FN(E)2569 1945 y FD(2)658 2075 y FO(No)n(w)1590 2175 y FL(K)28 b FO(\()p FN(E)1786 2187 y FD(1)1851 2175 y FN(E)1912 2187 y FD(2)1950 2175 y FO(\))g FN(x)51 b FK(\000)-14 b(!)2159 2224 y FB(c)2292 2175 y FN(E)2353 2187 y FD(1)2419 2175 y FN(E)2480 2187 y FD(2)658 2346 y FO(hence)27 b FL(K)h FO(\()p FN(E)1084 2358 y FD(1)1149 2346 y FN(E)1210 2358 y FD(2)1248 2346 y FO(\))g FN(x)23 b FO(=)g FN(E)1527 2358 y FD(1)1592 2346 y FN(E)1653 2358 y FD(2)1691 2346 y FO(.)37 b(Th)n(us)1185 2516 y FL(S)27 b FO(\()p FL(K)h FN(E)1461 2528 y FD(1)1499 2516 y FO(\))g(\()p FL(K)f FN(E)1754 2528 y FD(2)1792 2516 y FO(\))h FN(x)51 b FO(=)f FN(E)2126 2528 y FD(1)2192 2516 y FN(E)2253 2528 y FD(2)2341 2516 y FO(=)g FL(K)28 b FO(\()p FN(E)2652 2528 y FD(1)2717 2516 y FN(E)2778 2528 y FD(2)2816 2516 y FO(\))g FN(x)658 2687 y FO(It)f(follo)n(ws)g(b) n(y)g(extensionalit)n(y)g(that:)1455 2857 y FL(S)h FO(\()p FL(K)g FN(E)1732 2869 y FD(1)1769 2857 y FO(\))g(\()p FL(K)g FN(E)2025 2869 y FD(2)2062 2857 y FO(\))51 b(=)g FL(K)27 b FO(\()p FN(E)2456 2869 y FD(1)2522 2857 y FN(E)2583 2869 y FD(2)2620 2857 y FO(\))450 3058 y Fy(2)450 3175 y FO(Since)32 b FL(S)h FO(\()p FL(K)f FN(E)5 b FO(\))33 b FL(I)d FO(=)h FN(E)37 b FO(for)32 b(an)n(y)f FN(E)5 b FO(,)34 b(whenev)n(er)d(a)h(com)n(binatory)e(expression)h(of)h(the)g (form)450 3274 y FL(S)20 b FO(\()p FL(K)g FN(E)5 b FO(\))20 b FL(I)g FO(is)g(generated,)g(it)g(can)g(b)r(e)g(`p)r(eephole)g (optimized')g(to)f(just)i FN(E)5 b FO(.)34 b(Similarly)-7 b(,)21 b(whenev)n(er)450 3374 y(an)33 b(expression)f(of)h(the)h(form)f FL(S)h FO(\()p FL(K)f FN(E)1716 3386 y FD(1)1754 3374 y FO(\))g(\()p FL(K)h FN(E)2021 3386 y FD(2)2058 3374 y FO(\))g(is)f(generated,)h(it)g(can)f(b)r(e)h(optimized)f(to)450 3473 y FL(K)28 b FO(\()p FN(E)646 3485 y FD(1)711 3473 y FN(E)772 3485 y FD(2)810 3473 y FO(\).)450 3660 y FL(Example:)39 b FO(On)28 b(page)f(39)f(it)i(w)n(as)f(sho)n(wn)g(that:)910 3831 y FN(\025)958 3801 y FC(\003)997 3831 y FN(f)t(:)h(\025)1141 3801 y FC(\003)1179 3831 y FN(x:)g(f)9 b FO(\()p FN(x)28 b(x)p FO(\))c(=)f FL(S)k FO(\()p FL(S)h FO(\()p FL(K)g(S)p FO(\))g(\()p FL(S)g FO(\()p FL(K)g(K)p FO(\))g FL(I)p FO(\)\))g(\()p FL(K)g FO(\()p FL(S)g(I)g(I)p FO(\)\))450 4001 y(Using)f(the)h(optimization)g FL(S)f FO(\()p FL(K)h FN(E)5 b FO(\))28 b FL(I)23 b FO(=)g FN(E)33 b FO(this)28 b(simpli\014es)f(to:)1098 4172 y FN(\025)1146 4142 y FC(\003)1185 4172 y FN(f)t(:)h(\025)1329 4142 y FC(\003)1367 4172 y FN(x:)g(f)9 b FO(\()p FN(x)28 b(x)p FO(\))c(=)f FL(S)28 b FO(\()p FL(S)g FO(\()p FL(K)f(S)p FO(\))h FL(K)p FO(\))g(\()p FL(K)g FO(\()p FL(S)g(I)g(I)p FO(\)\))450 4342 y Fy(2)450 4631 y FG(3.5)135 b(More)45 b(com)l(binators)450 4830 y FO(It)25 b(is)f(easier)g(to)g(recognize)f(the)i(applicabilit)n (y)f(of)g(the)h(optimization)g FL(S)f FO(\()p FL(K)h FN(E)5 b FO(\))25 b FL(I)e FO(=)g FN(E)30 b FO(if)25 b FL(I)g FO(has)450 4929 y(not)j(b)r(een)h(expanded)f(to)g FL(S)h(K)f(K)p FO(,)g(i.e.)40 b(if)28 b FL(I)h FO(is)f(tak)n(en)g(as)g (a)g(primitiv)n(e)g(com)n(binator.)37 b(V)-7 b(arious)450 5029 y(other)30 b(com)n(binators)f(are)h(also)f(useful)i(in)g(the)g (same)f(w)n(a)n(y;)h(for)f(example,)h FL(B)g FO(and)f FL(C)h FO(de\014ned)450 5128 y(b)n(y:)p 450 5244 2976 4 v 448 5808 4 565 v 1492 5421 a FJ(LET)c FL(B)c FO(=)f FN(\025f)37 b(g)30 b(x:)e(f)37 b FO(\()p FN(g)30 b(x)p FO(\))1492 5621 y FJ(LET)d FL(C)c FO(=)f FN(\025f)37 b(g)30 b(x:)e(f)37 b(x)28 b(g)p 3423 5808 V 450 5812 2976 4 v eop %%Page: 43 48 43 47 bop 330 92 a FO(3.6.)64 b(Curry's)26 b(algorithm)2073 b(43)p 330 249 3000 9 v 330 498 a(These)27 b(ha)n(v)n(e)g(the)h(follo)n (wing)e(reduction)h(rules:)1310 694 y FL(B)g FN(E)1466 706 y FD(1)1531 694 y FN(E)1592 706 y FD(2)1658 694 y FN(E)1719 706 y FD(3)1779 694 y FK(\000)-14 b(!)1830 744 y FB(c)1936 694 y FN(E)1997 706 y FD(1)2062 694 y FO(\()p FN(E)2155 706 y FD(2)2221 694 y FN(E)2282 706 y FD(3)2319 694 y FO(\))1309 855 y FL(C)27 b FN(E)1466 867 y FD(1)1531 855 y FN(E)1592 867 y FD(2)1658 855 y FN(E)1719 867 y FD(3)1779 855 y FK(\000)-14 b(!)1830 905 y FB(c)1936 855 y FN(E)1997 867 y FD(1)2062 855 y FN(E)2123 867 y FD(3)2188 855 y FN(E)2249 867 y FD(2)330 1107 y FL(Exercise)31 b(39)330 1207 y FO(Sho)n(w)c(that)h(with)g FL(B)p FO(,)g FL(C)f FO(de\014ned)h(as)f(ab)r(o)n(v)n(e:)1378 1403 y FL(S)g FO(\()p FL(K)h FN(E)1654 1415 y FD(1)1692 1403 y FO(\))g FN(E)1813 1415 y FD(2)1873 1403 y FO(=)23 b FL(B)28 b FN(E)2118 1415 y FD(1)2183 1403 y FN(E)2244 1415 y FD(2)1378 1527 y FL(S)f FN(E)1519 1539 y FD(1)1585 1527 y FO(\()p FL(K)g FN(E)1780 1539 y FD(2)1818 1527 y FO(\))c(=)g FL(C)28 b FN(E)2119 1539 y FD(1)2184 1527 y FN(E)2245 1539 y FD(2)330 1730 y FO(\(where)f FN(E)663 1742 y FD(1)701 1730 y FO(,)h FN(E)813 1742 y FD(2)878 1730 y FO(are)e(an)n(y)h(t)n(w)n(o)g(com)n(binatory)f(expressions\).)35 b Fy(2)330 1957 y FO(Using)29 b FL(B)h FO(and)f FL(C)p FO(,)h(one)f(can)h(further)f(optimize)h(the)g(translation)e(of)h FN(\025)p FO(-expressions)f(to)i(com-)330 2057 y(binators)i(b)n(y)h (replacing)f(expressions)g(of)h(the)g(form)g FL(S)g FO(\()p FL(K)h FN(E)2318 2069 y FD(1)2355 2057 y FO(\))g FN(E)2482 2069 y FD(2)2553 2057 y FO(and)f FL(S)g FN(E)2867 2069 y FD(1)2938 2057 y FO(\()p FL(K)g FN(E)3139 2069 y FD(2)3177 2057 y FO(\))g(b)n(y)330 2156 y FL(B)28 b FN(E)487 2168 y FD(1)552 2156 y FN(E)613 2168 y FD(2)678 2156 y FO(and)f FL(C)h FN(E)997 2168 y FD(1)1062 2156 y FN(E)1123 2168 y FD(2)1161 2156 y FO(.)330 2488 y FG(3.6)135 b(Curry's)45 b(algorithm)330 2695 y FO(Com)n(bining)c(the)g(v)-5 b(arious)40 b(optimizations)h(describ)r(ed)g(in)h(the)f(previous)g(section)f(leads) h(to)330 2794 y FE(Curry's)36 b(algorithm)41 b FO(for)32 b(translating)g FN(\025)p FO(-expressions)g(to)h(com)n(binatory)e (expressions.)52 b(This)330 2894 y(algorithm)29 b(consists)h(in)h (using)g(the)g(de\014nition)g(of)f(\()p FN(E)5 b FO(\))2086 2916 y FJ(C)2165 2894 y FO(giv)n(en)30 b(on)g(page)g(38,)h(but)g (whenev)n(er)330 2994 y(an)k(expression)g(of)h(the)g(form)f FL(S)h FN(E)1470 3006 y FD(1)1543 2994 y FN(E)1604 3006 y FD(2)1678 2994 y FO(is)f(generated)g(one)g(tries)h(to)f(apply)h(the)g (follo)n(wing)330 3093 y(rewrite)27 b(rules:)431 3295 y(1.)42 b FL(S)27 b FO(\()p FL(K)h FN(E)814 3307 y FD(1)852 3295 y FO(\))g(\()p FL(K)f FN(E)1107 3307 y FD(2)1145 3295 y FO(\))c FK(\000)-14 b(!)23 b FL(K)28 b FO(\()p FN(E)1553 3307 y FD(1)1618 3295 y FN(E)1679 3307 y FD(2)1717 3295 y FO(\))431 3498 y(2.)42 b FL(S)27 b FO(\()p FL(K)h FN(E)5 b FO(\))28 b FL(I)23 b FK(\000)-14 b(!)23 b FN(E)431 3702 y FO(3.)42 b FL(S)27 b FO(\()p FL(K)h FN(E)814 3714 y FD(1)852 3702 y FO(\))g FN(E)973 3714 y FD(2)1033 3702 y FK(\000)-14 b(!)23 b FL(B)28 b FN(E)1347 3714 y FD(1)1412 3702 y FN(E)1473 3714 y FD(2)431 3906 y FO(4.)42 b FL(S)27 b FN(E)679 3918 y FD(1)744 3906 y FO(\()p FL(K)h FN(E)940 3918 y FD(2)978 3906 y FO(\))23 b FK(\000)-14 b(!)23 b FL(C)28 b FN(E)1348 3918 y FD(1)1413 3906 y FN(E)1474 3918 y FD(2)330 4107 y FO(If)52 b(more)e(than)h(one)g(rule)g(is)g (applicable,)57 b(the)52 b FE(e)l(arlier)61 b FO(one)51 b(is)g(used.)108 b(F)-7 b(or)50 b(example,)330 4207 y FL(S)28 b FO(\()p FL(K)g FN(E)607 4219 y FD(1)644 4207 y FO(\))g(\()p FL(K)g FN(E)900 4219 y FD(2)937 4207 y FO(\))g(is)g(translated)f(to)g FL(K)g FO(\()p FN(E)1770 4219 y FD(1)1836 4207 y FN(E)1897 4219 y FD(2)1935 4207 y FO(\),)h(not)f(to)h FL(B)f FN(E)2423 4219 y FD(1)2488 4207 y FO(\()p FL(K)h FN(E)2684 4219 y FD(2)2722 4207 y FO(\).)330 4434 y FL(Exercise)j(40)330 4534 y FO(Sho)n(w)c(that)h (using)f(Curry's)g(algorithm,)f FL(Y)i FO(is)f(translated)g(to)h(the)g (com)n(binator:)1274 4735 y FL(S)f FO(\()p FL(C)h(B)g FO(\()p FL(S)g(I)g(I)p FO(\)\))g(\()p FL(C)g(B)g FO(\()p FL(S)g(I)g(I)p FO(\)\))330 4937 y Fy(2)330 5164 y FL(Exercise)j(41)330 5264 y FO(Sho)n(w)c(that:)873 5466 y FL(S)h FO(\()p FL(S)g FO(\()p FL(K)g(S)p FO(\))g(\()p FL(S)g FO(\()p FL(K)g(K)o FO(\))g FL(I)q FO(\)\))g(\()p FL(K)g FO(\()p FL(S)g(I)g(I)p FO(\)\))23 b(=)g FL(C)28 b(B)f FO(\()p FL(S)h(I)g(I)p FO(\))330 5667 y Fy(2)p eop %%Page: 44 49 44 48 bop 450 92 a FO(44)2000 b(Chapter)27 b(3.)64 b(Com)n(binators)p 450 249 3000 9 v 450 498 a FG(3.7)135 b(T)-11 b(urner's)45 b(algorithm)450 697 y FO(In)39 b(a)f(second)g(pap)r(er,)j(T)-7 b(urner)38 b(prop)r(osed)f(that)i(Curry's)f(algorithm)f(b)r(e)i (extended)g(to)f(use)450 796 y(another)27 b(new)g(primitiv)n(e)h(com)n (binator)e(called)h FL(S)2005 760 y FC(0)2056 796 y FO([35)o(].)37 b(This)28 b(is)f(de\014ned)h(b)n(y:)p 450 896 2976 4 v 448 1344 4 449 v 1355 1094 a FJ(LET)e FL(S)1566 1058 y FC(0)1612 1094 y FO(=)d FN(\025c)28 b(f)36 b(g)31 b(x:)d(c)f FO(\()p FN(f)37 b(x)p FO(\))28 b(\()p FN(g)j(x)p FO(\))p 3423 1344 V 450 1347 2976 4 v 450 1480 a(and)c(has)g(the)h(reduction)g (rule:)1236 1630 y FL(S)1290 1594 y FC(0)1340 1630 y FN(C)34 b(E)1494 1642 y FD(1)1560 1630 y FN(E)1621 1642 y FD(2)1686 1630 y FN(E)1747 1642 y FD(3)1807 1630 y FK(\000)-14 b(!)1859 1680 y FB(c)1964 1630 y FN(C)34 b FO(\()p FN(E)2150 1642 y FD(1)2216 1630 y FN(E)2277 1642 y FD(3)2314 1630 y FO(\))28 b(\()p FN(E)2467 1642 y FD(2)2533 1630 y FN(E)2594 1642 y FD(3)2631 1630 y FO(\))450 1805 y(where)e FN(C)6 b FO(,)26 b FN(E)864 1817 y FD(1)902 1805 y FO(,)g FN(E)1012 1817 y FD(2)1050 1805 y FO(,)g FN(E)1160 1817 y FD(3)1224 1805 y FO(are)f(arbitrary)f (com)n(binatory)h(expressions.)34 b(The)26 b(reason)f(wh)n(y)h(`)p FN(C)6 b FO(')26 b(is)450 1904 y(used)20 b(is)g(that)g FL(S)933 1868 y FC(0)976 1904 y FO(has)f(the)h(prop)r(ert)n(y)f(that)h FE(if)k FN(C)k FE(is)23 b(a)g(c)l(ombinator)30 b FO(\(i.e.)21 b(con)n(tains)d(no)i(v)-5 b(ariables\),)450 2004 y(then)28 b(for)f(an)n(y)g FN(E)984 2016 y FD(1)1049 2004 y FO(and)h FN(E)1272 2016 y FD(2)1309 2004 y FO(:)1183 2154 y FN(\025)1231 2124 y FC(\003)1270 2154 y FN(x:)g(C)34 b(E)1522 2166 y FD(1)1587 2154 y FN(E)1648 2166 y FD(2)1709 2154 y FO(=)22 b FL(S)1849 2118 y FC(0)1900 2154 y FN(C)34 b FO(\()p FN(\025)2073 2124 y FC(\003)2112 2154 y FN(x:)28 b(E)2271 2166 y FD(1)2309 2154 y FO(\))g(\()p FN(\025)2449 2124 y FC(\003)2488 2154 y FN(x:)g(E)2647 2166 y FD(2)2684 2154 y FO(\))450 2304 y(This)35 b(can)f(b)r(e)i(sho)n(wn)e(using)h (extensionalit)n(y)-7 b(.)58 b(Clearly)34 b FN(x)h FO(is)g(a)f(v)-5 b(ariable)34 b(not)h(o)r(ccurring)f(in)450 2404 y FN(\025)498 2374 y FC(\003)537 2404 y FN(x:)28 b(C)39 b(E)794 2416 y FD(1)865 2404 y FN(E)926 2416 y FD(2)997 2404 y FO(or)33 b FL(S)1158 2367 y FC(0)1214 2404 y FN(C)40 b FO(\()p FN(\025)1393 2374 y FC(\003)1432 2404 y FN(x:)28 b(E)1591 2416 y FD(1)1629 2404 y FO(\))33 b(\()p FN(\025)1774 2374 y FC(\003)1813 2404 y FN(x:)c(E)1973 2416 y FD(2)2010 2404 y FO(\))34 b(\(exercise:)47 b(wh)n(y?\),)35 b(so)e(it)h(is)f (su\016cien)n(t)g(to)450 2503 y(sho)n(w:)1044 2603 y(\()p FN(\025)1124 2573 y FC(\003)1162 2603 y FN(x:)c(C)34 b(E)1415 2615 y FD(1)1480 2603 y FN(E)1541 2615 y FD(2)1578 2603 y FO(\))28 b FN(x)c FO(=)e(\()p FL(S)1882 2567 y FC(0)1933 2603 y FN(C)34 b FO(\()p FN(\025)2106 2573 y FC(\003)2145 2603 y FN(x:)28 b(E)2304 2615 y FD(1)2341 2603 y FO(\))g(\()p FN(\025)2481 2573 y FC(\003)2520 2603 y FN(x:)g(E)2679 2615 y FD(2)2717 2603 y FO(\)\))g FN(x)450 2733 y FO(F)-7 b(rom)27 b(the)h(de\014nition)g(of)g FN(\025)1323 2703 y FC(\003)1361 2733 y FN(x)g FO(it)g(easily)f(follo)n (ws)g(that:)1039 2882 y FN(\025)1087 2852 y FC(\003)1125 2882 y FN(x:)h(C)34 b(E)1377 2894 y FD(1)1443 2882 y FN(E)1504 2894 y FD(2)1564 2882 y FO(=)23 b FL(S)28 b FO(\()p FL(S)g FO(\()p FL(K)f FN(C)6 b FO(\))29 b(\()p FN(\025)2186 2852 y FC(\003)2224 2882 y FN(x:)g(E)2384 2894 y FD(1)2421 2882 y FO(\)\))f(\()p FN(\025)2593 2852 y FC(\003)2632 2882 y FN(x:)h(E)2792 2894 y FD(2)2829 2882 y FO(\))450 3033 y(hence)915 3111 y(\()p FN(\025)995 3081 y FC(\003)1034 3111 y FN(x:)f(C)34 b(E)1286 3123 y FD(1)1351 3111 y FN(E)1412 3123 y FD(2)1450 3111 y FO(\))28 b FN(x)23 b FO(=)g(\()p FL(S)28 b FO(\()p FL(S)g FO(\()p FL(K)g FN(C)6 b FO(\))28 b(\()p FN(\025)2234 3081 y FC(\003)2273 3111 y FN(x:)g(E)2432 3123 y FD(1)2470 3111 y FO(\)\))g(\()p FN(\025)2642 3081 y FC(\003)2681 3111 y FN(x:)g(E)2840 3123 y FD(2)2877 3111 y FO(\))g FN(x)1580 3236 y FO(=)23 b FL(S)28 b FO(\()p FL(K)f FN(C)6 b FO(\))29 b(\()p FN(\025)2089 3205 y FC(\003)2128 3236 y FN(x:)f(E)2287 3248 y FD(1)2324 3236 y FO(\))g FN(x)g FO(\(\()p FN(\025)2571 3205 y FC(\003)2611 3236 y FN(x:)g(E)2770 3248 y FD(2)2807 3236 y FO(\)\))h FN(x)p FO(\))1580 3360 y(=)23 b FL(K)k FN(C)34 b(x)29 b FO(\(\()p FN(\025)2051 3330 y FC(\003)2090 3360 y FN(x:)f(E)2249 3372 y FD(1)2286 3360 y FO(\))g FN(x)p FO(\))h(\(\()p FN(\025)2566 3330 y FC(\003)2605 3360 y FN(x:)f(E)2764 3372 y FD(2)2802 3360 y FO(\))g FN(x)p FO(\))1580 3485 y(=)23 b FN(C)34 b FO(\(\()p FN(\025)1873 3454 y FC(\003)1912 3485 y FN(x:)28 b(E)2071 3497 y FD(1)2109 3485 y FO(\))g FN(x)p FO(\))g(\(\()p FN(\025)2388 3454 y FC(\003)2427 3485 y FN(x:)h(E)2587 3497 y FD(2)2624 3485 y FO(\)\))f FN(x)p FO(\))450 3622 y(But)g(\()p FL(S)700 3585 y FC(0)751 3622 y FN(C)34 b FO(\()p FN(\025)924 3592 y FC(\003)963 3622 y FN(x:)28 b(E)1122 3634 y FD(1)1160 3622 y FO(\))g(\()p FN(\025)1300 3592 y FC(\003)1339 3622 y FN(x:)g(E)1498 3634 y FD(2)1535 3622 y FO(\))g FN(x)c FO(=)e FN(C)34 b FO(\(\()p FN(\025)1958 3592 y FC(\003)1998 3622 y FN(x:)28 b(E)2157 3634 y FD(1)2194 3622 y FO(\))g FN(x)p FO(\))h(\(\()p FN(\025)2474 3592 y FC(\003)2513 3622 y FN(x:)f(E)2672 3634 y FD(2)2709 3622 y FO(\)\))h FN(x)p FO(\))f(also,)f(and)g(so:)1044 3772 y(\()p FN(\025)1124 3742 y FC(\003)1162 3772 y FN(x:)i(C)34 b(E)1415 3784 y FD(1)1480 3772 y FN(E)1541 3784 y FD(2)1578 3772 y FO(\))28 b FN(x)c FO(=)e(\()p FL(S)1882 3735 y FC(0)1933 3772 y FN(C)34 b FO(\()p FN(\025)2106 3742 y FC(\003)2145 3772 y FN(x:)28 b(E)2304 3784 y FD(1)2341 3772 y FO(\))g(\()p FN(\025)2481 3742 y FC(\003)2520 3772 y FN(x:)g(E)2679 3784 y FD(2)2717 3772 y FO(\)\))g FN(x)450 3938 y FL(Exercise)j(42)450 4038 y FO(Where)e(in)h(the)f (argumen)n(t)g(ab)r(o)n(v)n(e)f(did)h(w)n(e)g(use)g(the)h(assumption)f (that)h FN(C)35 b FO(is)29 b(a)g(com)n(binator?)450 4138 y Fy(2)450 4304 y FO(T)-7 b(urner's)52 b(com)n(binator)g FL(S)1321 4268 y FC(0)1397 4304 y FO(is)h(useful)h(when)f(translating)f FN(\025)p FO(-expressions)g(of)h(the)g(form)450 4404 y FN(\025V)546 4416 y Fu(n)637 4404 y FK(\001)14 b(\001)g(\001)45 b FN(V)827 4416 y FD(2)896 4404 y FN(V)944 4416 y FD(1)981 4404 y FN(:)32 b(E)1097 4416 y FD(1)1165 4404 y FN(E)1226 4416 y FD(2)1295 4404 y FO(\(it)g(will)f(b)r(e)h(seen)e(shortly)h(wh)n (y)f(it)i(is)f(con)n(v)n(enien)n(t)f(to)h(n)n(um)n(b)r(er)g(the)450 4504 y(b)r(ound)21 b(v)-5 b(ariables)19 b(in)i(descending)f(order\).)33 b(T)-7 b(o)20 b(see)h(this,)h(follo)n(wing)d(T)-7 b(urner)20 b([35)o(],)i(temp)r(orarily)450 4603 y(de\014ne)1157 4681 y FN(E)1223 4651 y FC(0)1473 4681 y FO(to)28 b(mean)110 b FN(\025)1927 4651 y FC(\003)1966 4681 y FN(V)2014 4693 y FD(1)2051 4681 y FN(:)28 b(E)1157 4781 y(E)1223 4751 y FC(00)1473 4781 y FO(to)g(mean)110 b FN(\025)1927 4751 y FC(\003)1966 4781 y FN(V)2014 4793 y FD(2)2051 4781 y FN(:)28 b FO(\()p FN(\025)2182 4751 y FC(\003)2221 4781 y FN(V)2269 4793 y FD(1)2307 4781 y FN(:)g(E)5 b FO(\))1157 4881 y FN(E)1223 4850 y FC(000)1473 4881 y FO(to)28 b(mean)110 b FN(\025)1927 4850 y FC(\003)1966 4881 y FN(V)2014 4893 y FD(3)2051 4881 y FN(:)28 b FO(\()p FN(\025)2182 4850 y FC(\003)2221 4881 y FN(V)2269 4893 y FD(2)2307 4881 y FN(:)g FO(\()p FN(\025)2438 4850 y FC(\003)2476 4881 y FN(V)2524 4893 y FD(1)2562 4881 y FN(:)g(E)5 b FO(\)\))1340 4969 y(.)1340 5002 y(.)1340 5035 y(.)450 5178 y(Recall)27 b(that:)661 5328 y(\()p FN(\025V)789 5340 y Fu(n)876 5328 y FK(\001)14 b(\001)g(\001)42 b FN(V)1063 5340 y FD(2)1128 5328 y FN(V)1176 5340 y FD(1)1214 5328 y FN(:)28 b(E)1326 5340 y FD(1)1391 5328 y FN(E)1452 5340 y FD(2)1489 5328 y FO(\))1521 5340 y Fn(C)1580 5328 y FO(=)22 b FN(\025)1715 5298 y FC(\003)1754 5328 y FN(V)1802 5340 y Fu(n)1848 5328 y FN(:)27 b FO(\()h FK(\001)14 b(\001)g(\001)42 b FO(\()p FN(\025)2177 5298 y FC(\003)2215 5328 y FN(V)2263 5340 y FD(2)2301 5328 y FN(:)28 b FO(\()p FN(\025)2432 5298 y FC(\003)2471 5328 y FN(V)2519 5340 y FD(1)2556 5328 y FN(:)g FO(\()p FN(E)2700 5340 y FD(1)2766 5328 y FN(E)2827 5340 y FD(2)2864 5328 y FO(\))2896 5350 y FJ(C)2944 5328 y FO(\)\)\))43 b FK(\001)14 b(\001)g(\001)27 b FO(\))450 5478 y(The)h(next)f(exercise) g(sho)n(ws)f(that:)1405 5628 y FN(\025)1453 5598 y FC(\003)1491 5628 y FN(V)1539 5640 y Fu(n)1585 5628 y FN(:)41 b(:)14 b(:)g(:)g(\025)1808 5598 y FC(\003)1847 5628 y FN(V)1895 5640 y FD(2)1932 5628 y FN(:)28 b(\025)2031 5598 y FC(\003)2070 5628 y FN(V)2118 5640 y FD(1)2155 5628 y FN(:)g FO(\()p FN(E)2299 5640 y FD(1)2365 5628 y FN(E)2426 5640 y FD(2)2463 5628 y FO(\))450 5778 y(gets)f(v)n(ery)g(complicated)g(as)g FN(n)g FO(increases.)p eop %%Page: 45 50 45 49 bop 330 92 a FO(3.7.)64 b(T)-7 b(urner's)26 b(algorithm)2041 b(45)p 330 249 3000 9 v 330 498 a FL(Exercise)31 b(43)330 598 y FO(Sho)n(w)c(that:)408 782 y(\(i\))43 b FN(\025)586 752 y FC(\003)624 782 y FN(x)671 794 y FD(1)709 782 y FN(:)28 b(E)821 794 y FD(1)886 782 y FN(E)947 794 y FD(2)1007 782 y FO(=)23 b FL(S)28 b FN(E)1242 752 y FC(0)1237 803 y FD(1)1302 782 y FN(E)1368 752 y FC(0)1363 803 y FD(2)385 952 y FO(\(ii\))43 b FN(\025)586 922 y FC(\003)624 952 y FN(x)671 964 y FD(2)709 952 y FN(:)28 b FO(\()p FN(\025)840 922 y FC(\003)878 952 y FN(x)925 964 y FD(1)963 952 y FN(:)g(E)1075 964 y FD(1)1140 952 y FN(E)1201 964 y FD(2)1239 952 y FO(\))23 b(=)g FL(S)k FO(\()p FL(B)h(S)g FN(E)1737 922 y FC(00)1732 972 y FD(1)1779 952 y FO(\))g FN(E)1905 922 y FC(00)1900 972 y FD(2)362 1121 y FO(\(iii\))43 b FN(\025)586 1091 y FC(\003)624 1121 y FN(x)671 1133 y FD(3)709 1121 y FN(:)28 b FO(\()p FN(\025)840 1091 y FC(\003)878 1121 y FN(x)925 1133 y FD(2)963 1121 y FN(:)g FO(\()p FN(\025)1094 1091 y FC(\003)1133 1121 y FN(x)1180 1133 y FD(1)1217 1121 y FN(:)g(E)1329 1133 y FD(1)1394 1121 y FN(E)1455 1133 y FD(2)1493 1121 y FO(\)\))c(=)e FL(S)28 b FO(\()p FL(B)g(S)g FO(\()p FL(B)f FO(\()p FL(B)h(S)p FO(\))g FN(E)2392 1091 y FC(000)2387 1142 y FD(1)2454 1121 y FO(\)\))g FN(E)2612 1091 y FC(000)2607 1142 y FD(2)365 1291 y FO(\(iv\))42 b FN(\025)586 1261 y FC(\003)624 1291 y FN(x)671 1303 y FD(4)709 1291 y FN(:)28 b FO(\()p FN(\025)840 1261 y FC(\003)878 1291 y FN(x)925 1303 y FD(3)963 1291 y FN(:)g FO(\()p FN(\025)1094 1261 y FC(\003)1133 1291 y FN(x)1180 1303 y FD(2)1217 1291 y FN(:)g FO(\()p FN(\025)1348 1261 y FC(\003)1387 1291 y FN(x)1434 1303 y FD(1)1472 1291 y FN(:)g(E)1584 1303 y FD(1)1649 1291 y FN(E)1710 1303 y FD(2)1747 1291 y FO(\)\)\))c(=)538 1391 y FL(S)j FO(\()p FL(B)h(S)g FO(\()p FL(B)g FO(\()p FL(B)g(S)p FO(\))g(\()p FL(B)f FO(\()p FL(B)h FO(\()p FL(B)g(S)p FO(\)\)\))h FN(E)1823 1361 y FC(0000)1818 1411 y FD(1)1904 1391 y FO(\)\))f FN(E)2062 1361 y FC(0000)2057 1411 y FD(2)330 1575 y Fy(2)330 1777 y FO(The)e(size)g(of)g FN(\025)796 1747 y FC(\003)834 1777 y FN(V)882 1789 y Fu(n)928 1777 y FN(:)41 b(:)14 b(:)g(:)g(\025)1151 1747 y FC(\003)1190 1777 y FN(V)1238 1789 y FD(2)1275 1777 y FN(:)28 b(\025)1374 1747 y FC(\003)1413 1777 y FN(V)1461 1789 y FD(1)1498 1777 y FN(:)g FO(\()p FN(E)1642 1789 y FD(1)1706 1777 y FN(E)1767 1789 y FD(2)1804 1777 y FO(\))f(is)f(prop)r(ortional)e(to)i (the)g FE(squar)l(e)32 b FO(of)26 b FN(n)p FO(.)36 b(Using)330 1877 y FL(S)383 1840 y FC(0)406 1877 y FO(,)28 b(the)g(size)f(can)h(b)r (e)g(made)f(to)g(gro)n(w)f FE(line)l(arly)37 b FO(with)28 b FN(n)p FO(:)976 2056 y FN(\025)1024 2025 y FC(\003)1062 2056 y FN(x)1109 2068 y FD(2)1147 2056 y FN(:)g FO(\()p FN(\025)1278 2025 y FC(\003)1316 2056 y FN(x)1363 2068 y FD(1)1401 2056 y FN(:)g(E)1513 2068 y FD(1)1578 2056 y FN(E)1639 2068 y FD(2)1677 2056 y FO(\))83 b(=)23 b FN(\025)1928 2025 y FC(\003)1966 2056 y FN(x)2013 2068 y FD(2)2051 2056 y FN(:)28 b FL(S)f FN(E)2248 2025 y FC(0)2243 2076 y FD(1)2309 2056 y FN(E)2375 2025 y FC(0)2370 2076 y FD(2)1792 2155 y FO(=)c FL(S)1933 2119 y FC(0)1984 2155 y FL(S)k FO(\()p FN(\025)2144 2125 y FC(\003)2183 2155 y FN(x)2230 2167 y FD(2)2268 2155 y FN(:)h(E)2385 2125 y FC(0)2380 2176 y FD(1)2417 2155 y FO(\))g(\()p FN(\025)2557 2125 y FC(\003)2596 2155 y FN(x)2643 2167 y FD(2)2681 2155 y FN(:)f(E)2797 2125 y FC(0)2792 2176 y FD(2)2830 2155 y FO(\))1792 2255 y(=)c FL(S)1933 2218 y FC(0)1984 2255 y FL(S)k FN(E)2130 2225 y FC(00)2125 2275 y FD(1)2200 2255 y FN(E)2266 2225 y FC(00)2261 2275 y FD(2)689 2454 y FN(\025)737 2424 y FC(\003)776 2454 y FN(x)823 2466 y FD(3)860 2454 y FN(:)h FO(\()p FN(\025)991 2424 y FC(\003)1030 2454 y FN(x)1077 2466 y FD(2)1115 2454 y FN(:)f FO(\()p FN(\025)1245 2424 y FC(\003)1284 2454 y FN(x)1331 2466 y FD(1)1369 2454 y FN(:)h(E)1481 2466 y FD(1)1546 2454 y FN(E)1607 2466 y FD(2)1644 2454 y FO(\)\))84 b(=)23 b FN(\025)1928 2424 y FC(\003)1966 2454 y FN(x)2013 2466 y FD(3)2051 2454 y FN(:)28 b FL(S)2155 2418 y FC(0)2206 2454 y FL(S)f FN(E)2352 2424 y FC(00)2347 2475 y FD(1)2423 2454 y FN(E)2489 2424 y FC(00)2484 2475 y FD(2)1792 2554 y FO(=)c FL(S)1933 2517 y FC(0)1984 2554 y FO(\()p FL(S)2069 2517 y FC(0)2120 2554 y FL(S)p FO(\))28 b(\()p FN(\025)2313 2524 y FC(\003)2352 2554 y FN(x)2399 2566 y FD(3)2436 2554 y FN(:)g(E)2553 2524 y FC(00)2548 2574 y FD(1)2596 2554 y FO(\))g(\()p FN(\025)2736 2524 y FC(\003)2775 2554 y FN(x)2822 2566 y FD(3)2859 2554 y FN(:)g(E)2976 2524 y FC(00)2971 2574 y FD(2)3018 2554 y FO(\))1792 2653 y(=)23 b FL(S)1933 2617 y FC(0)1984 2653 y FO(\()p FL(S)2069 2617 y FC(0)2120 2653 y FL(S)p FO(\))28 b FN(E)2299 2623 y FC(000)2294 2674 y FD(1)2388 2653 y FN(E)2454 2623 y FC(000)2449 2674 y FD(2)402 2853 y FN(\025)450 2822 y FC(\003)489 2853 y FN(x)536 2865 y FD(4)574 2853 y FN(:)f FO(\()p FN(\025)704 2822 y FC(\003)743 2853 y FN(x)790 2865 y FD(3)828 2853 y FN(:)h FO(\()p FN(\025)959 2822 y FC(\003)998 2853 y FN(x)1045 2865 y FD(2)1082 2853 y FN(:)g FO(\()p FN(\025)1213 2822 y FC(\003)1252 2853 y FN(x)1299 2865 y FD(1)1337 2853 y FN(:)f(E)1448 2865 y FD(1)1514 2853 y FN(E)1575 2865 y FD(2)1612 2853 y FO(\)\)\))84 b(=)23 b FN(\025)1928 2822 y FC(\003)1966 2853 y FN(x)2013 2865 y FD(4)2051 2853 y FN(:)28 b FL(S)2155 2816 y FC(0)2206 2853 y FO(\()p FL(S)2291 2816 y FC(0)2342 2853 y FL(S)p FO(\))g FN(E)2521 2822 y FC(000)2516 2873 y FD(1)2610 2853 y FN(E)2676 2822 y FC(000)2671 2873 y FD(2)1792 2952 y FO(=)23 b FL(S)1933 2916 y FC(0)1984 2952 y FO(\()p FL(S)2069 2916 y FC(0)2120 2952 y FO(\()p FL(S)2205 2916 y FC(0)2256 2952 y FL(S)p FO(\)\))28 b(\()p FN(\025)2481 2922 y FC(\003)2520 2952 y FN(x)2567 2964 y FD(4)2605 2952 y FN(:)g(E)2722 2922 y FC(000)2717 2973 y FD(1)2783 2952 y FO(\))g(\()p FN(\025)2923 2922 y FC(\003)2962 2952 y FN(x)3009 2964 y FD(4)3047 2952 y FN(:)g(E)3164 2922 y FC(000)3159 2973 y FD(2)3225 2952 y FO(\))1792 3052 y(=)23 b FL(S)1933 3015 y FC(0)1984 3052 y FO(\()p FL(S)2069 3015 y FC(0)2120 3052 y FO(\()p FL(S)2205 3015 y FC(0)2256 3052 y FL(S)p FO(\)\))28 b FN(E)2467 3022 y FC(0000)2462 3072 y FD(1)2576 3052 y FN(E)2642 3022 y FC(0000)2637 3072 y FD(2)330 3249 y FO(Just)h(as)g FL(B)g FO(and)g FL(C)g FO(w)n(ere)g(in)n(tro)r (duced)g(to)g(simplify)g(com)n(binatory)f(expressions)g(of)h(the)g (form)330 3349 y FL(S)c FO(\()p FL(K)g FN(E)601 3361 y FD(1)639 3349 y FO(\))g FN(E)757 3361 y FD(2)820 3349 y FO(and)g FL(S)g FN(E)1118 3361 y FD(1)1181 3349 y FO(\()p FL(K)g FN(E)1374 3361 y FD(2)1412 3349 y FO(\))g(resp)r(ectiv)n(ely)-7 b(,)25 b(T)-7 b(urner)24 b(also)g(devised)h FL(B)2731 3312 y FC(0)2779 3349 y FO(and)g FL(C)3007 3312 y FC(0)3056 3349 y FO(with)g(an)330 3448 y(analogous)g(role)i(for)g FL(S)1055 3412 y FC(0)1078 3448 y FO(.)37 b(The)28 b(prop)r(erties)f (required)f(are:)1261 3627 y FL(S)1315 3591 y FC(0)1365 3627 y FN(C)34 b FO(\()p FL(K)28 b FN(E)1654 3639 y FD(1)1692 3627 y FO(\))g FN(E)1813 3639 y FD(2)1873 3627 y FO(=)23 b FL(B)2029 3591 y FC(0)2080 3627 y FN(C)34 b(E)2234 3639 y FD(1)2299 3627 y FN(E)2360 3639 y FD(2)1261 3752 y FL(S)1315 3715 y FC(0)1365 3752 y FN(C)g(E)1519 3764 y FD(1)1585 3752 y FO(\()p FL(K)27 b FN(E)1780 3764 y FD(2)1818 3752 y FO(\))c(=)g FL(C)2030 3715 y FC(0)2081 3752 y FN(C)34 b(E)2235 3764 y FD(1)2300 3752 y FN(E)2361 3764 y FD(2)330 3937 y FO(\(where)f FN(C)40 b FO(is)33 b(an)n(y)f(com)n(binator,)i(and)f FN(E)1653 3949 y FD(1)1690 3937 y FO(,)i FN(E)1809 3949 y FD(2)1880 3937 y FO(are)e(arbitrary)e (com)n(binatory)g(expressions\).)330 4037 y(This)d(is)f(ac)n(hiev)n(ed) f(if)j FL(B)1081 4000 y FC(0)1132 4037 y FO(and)f FL(C)1363 4000 y FC(0)1414 4037 y FO(are)e(de\014ned)i(b)n(y:)p 330 4167 2976 4 v 328 4731 4 565 v 1296 4345 a FJ(LET)f FL(B)1523 4308 y FC(0)1569 4345 y FO(=)c FN(\025c)28 b(f)36 b(g)30 b(x:)e(c)g(f)36 b FO(\()p FN(g)31 b(x)p FO(\))1296 4544 y FJ(LET)c FL(C)1524 4507 y FC(0)1570 4544 y FO(=)c FN(\025c)28 b(f)36 b(g)30 b(x:)f(c)e FO(\()p FN(f)37 b(x)p FO(\))28 b FN(g)p 3303 4731 V 330 4735 2976 4 v 330 4914 a FO(Clearly)k FL(B)692 4878 y FC(0)748 4914 y FO(and)h FL(C)984 4878 y FC(0)1041 4914 y FO(will)g(ha)n(v)n(e)f (the)i(prop)r(ert)n(y)e(that)h(for)g(arbitrary)e FN(\025)p FO(-expressions)g FN(C)6 b FO(,)35 b FN(E)3269 4926 y FD(1)3307 4914 y FO(,)330 5014 y FN(E)391 5026 y FD(2)456 5014 y FO(and)28 b FN(E)679 5026 y FD(3)716 5014 y FO(:)1205 5107 y FL(B)1273 5070 y FC(0)1324 5107 y FN(C)34 b(E)1478 5119 y FD(1)1543 5107 y FN(E)1604 5119 y FD(2)1669 5107 y FN(E)1730 5119 y FD(3)1791 5107 y FK(\000)-14 b(!)1842 5157 y FB(c)1948 5107 y FN(C)34 b(E)2102 5119 y FD(1)2167 5107 y FO(\()p FN(E)2260 5119 y FD(2)2325 5107 y FN(E)2386 5119 y FD(3)2424 5107 y FO(\))1204 5268 y FL(C)1273 5231 y FC(0)1324 5268 y FN(C)g(E)1478 5280 y FD(1)1543 5268 y FN(E)1604 5280 y FD(2)1669 5268 y FN(E)1730 5280 y FD(3)1791 5268 y FK(\000)-14 b(!)1842 5318 y FB(c)1948 5268 y FN(C)34 b FO(\()p FN(E)2134 5280 y FD(1)2199 5268 y FN(E)2260 5280 y FD(3)2298 5268 y FO(\))28 b FN(E)2419 5280 y FD(2)330 5494 y FL(Exercise)j(44)330 5594 y FO(Sho)n(w)c(that)h (for)f(arbitrary)f FN(\025)p FO(-expressions)g FN(E)1780 5606 y FD(1)1817 5594 y FO(,)i FN(E)1929 5606 y FD(2)1994 5594 y FO(and)f FN(E)2216 5606 y FD(3)2254 5594 y FO(:)408 5778 y(\(i\))43 b FL(S)591 5742 y FC(0)642 5778 y FN(E)703 5790 y FD(1)768 5778 y FO(\()p FL(K)28 b FN(E)964 5790 y FD(2)1001 5778 y FO(\))g FN(E)1122 5790 y FD(3)1183 5778 y FO(=)22 b FL(B)1338 5742 y FC(0)1389 5778 y FN(E)1450 5790 y FD(1)1515 5778 y FN(E)1576 5790 y FD(2)1642 5778 y FN(E)1703 5790 y FD(3)p eop %%Page: 46 51 46 50 bop 450 92 a FO(46)2000 b(Chapter)27 b(3.)64 b(Com)n(binators)p 450 249 3000 9 v 505 498 a(\(ii\))43 b FL(S)711 462 y FC(0)762 498 y FN(E)823 510 y FD(1)888 498 y FN(E)949 510 y FD(2)1014 498 y FO(\()p FL(K)28 b FN(E)1210 510 y FD(3)1247 498 y FO(\))c(=)e FL(C)1459 462 y FC(0)1510 498 y FN(E)1571 510 y FD(1)1636 498 y FN(E)1697 510 y FD(2)1763 498 y FN(E)1824 510 y FD(3)482 664 y FO(\(iii\))43 b FL(S)27 b FO(\()p FL(B)h FN(E)927 676 y FD(1)992 664 y FN(E)1053 676 y FD(2)1091 664 y FO(\))g FN(E)1212 676 y FD(3)1272 664 y FO(=)23 b FL(S)1413 628 y FC(0)1464 664 y FN(E)1525 676 y FD(1)1590 664 y FN(E)1651 676 y FD(2)1716 664 y FN(E)1777 676 y FD(3)485 830 y FO(\(iv\))42 b FL(B)27 b FO(\()p FN(E)846 842 y FD(1)912 830 y FN(E)973 842 y FD(2)1010 830 y FO(\))h FN(E)1131 842 y FD(3)1192 830 y FO(=)22 b FL(B)1347 794 y FC(0)1398 830 y FN(E)1459 842 y FD(1)1524 830 y FN(E)1585 842 y FD(2)1651 830 y FN(E)1712 842 y FD(3)508 996 y FO(\(v\))42 b FL(C)27 b FO(\()p FL(B)h FN(E)943 1008 y FD(1)1008 996 y FN(E)1069 1008 y FD(2)1107 996 y FO(\))g FN(E)1228 1008 y FD(3)1288 996 y FO(=)23 b FL(C)1445 960 y FC(0)1496 996 y FN(E)1557 1008 y FD(1)1622 996 y FN(E)1683 1008 y FD(2)1748 996 y FN(E)1809 1008 y FD(3)450 1179 y Fy(2)450 1378 y FO(T)-7 b(urner's)30 b(algorithm)f(for)h(translating)f FN(\025)p FO(-expressions)g(to)h(com)n(binatory)f(expressions)g(is)h(de-)450 1478 y(scrib)r(ed)d(b)n(y)h(him)g([35)o(])g(as)e(follo)n(ws:)658 1660 y(Use)k(the)g(algorithm)f(of)h(Curry)f(but)h(whenev)n(er)f(a)h (term)g(b)r(eginning)f(in)i FL(S)p FO(,)f FL(B)g FO(or)658 1760 y FL(C)e FO(is)h(formed)f(use)h(one)f(of)h(the)g(follo)n(wing)f (transformations)e(if)k(it)f(is)f(p)r(ossible)h(to)658 1860 y(do)e(so)1403 1938 y FL(S)h FO(\()p FL(B)g FN(K)33 b(A)p FO(\))28 b FN(B)55 b FK(\000)-14 b(!)50 b FL(S)2193 1901 y FC(0)2244 1938 y FN(K)34 b(A)28 b(B)t(;)1469 2137 y FL(B)g FO(\()p FN(K)33 b(A)p FO(\))28 b FN(B)55 b FK(\000)-14 b(!)51 b FL(B)2193 2101 y FC(0)2244 2137 y FN(K)34 b(A)28 b(B)t(;)1371 2336 y FL(C)g FO(\()p FL(B)g FN(K)33 b(A)p FO(\))28 b FN(B)55 b FK(\000)-14 b(!)51 b FL(C)2193 2300 y FC(0)2244 2336 y FN(K)34 b(A)28 b(B)t(:)658 2482 y FO(Here)20 b FN(A)i FO(and)f FN(B)26 b FO(stand)21 b(for)g(arbitrary)e (terms)i(as)f(usual)h(and)g FN(K)27 b FO(is)21 b(an)n(y)g(term)g(com-) 658 2582 y(p)r(osed)31 b(en)n(tirely)g(of)h(constan)n(ts.)48 b(The)32 b(correctness)e(of)h(the)i(new)e(algorithm)g(can)658 2681 y(b)r(e)26 b(inferred)g(from)g(the)h(correctness)d(of)i(the)h (Curry)e(algorithm)h(b)n(y)g(demonstrat-)658 2781 y(ing)32 b(that)h(in)f(eac)n(h)g(of)g(the)h(ab)r(o)n(v)n(e)e(transformations)g (the)i(left-)f(and)h(righ)n(t-hand)658 2880 y(sides)25 b(are)g(extensionally)g(equal.)36 b(In)26 b(eac)n(h)f(case)g(this)h (follo)n(ws)f(directly)h(from)f(the)658 2980 y(de\014nitions)i(of)h (the)g(com)n(binators)e(in)n(v)n(olv)n(ed.)450 3163 y(Since)e(T)-7 b(urner's)23 b(pioneering)g(pap)r(ers)g(app)r(eared,)g(man)n(y)g(p)r (eople)h(ha)n(v)n(e)f(w)n(ork)n(ed)f(on)h(impro)n(ving)450 3262 y(the)34 b(basic)f(idea.)55 b(F)-7 b(or)33 b(example,)i(John)e (Hughes)h(has)f(devised)g(a)g(sc)n(heme)h(for)f(dynamically)450 3362 y(generating)c(an)h(`optimal')g(set)g(of)h(primitiv)n(e)f(com)n (binators)e(\(called)i FE(sup)l(er)l(c)l(ombinators)7 b FO(\))32 b(for)450 3462 y(eac)n(h)25 b(program)e([20)o(].)37 b(The)25 b(idea)g(is)h(that)g(the)g(compiler)e(will)i(generate)e(com)n (binatory)g(expres-)450 3561 y(sions)35 b(built)i(out)f(of)g(the)h(sup) r(ercom)n(binators)d(for)h(the)i(program)d(b)r(eing)i(compiled.)62 b(It)37 b(will)450 3661 y(also)d(dynamically)g(pro)r(duce)h(`micro)r (co)r(de')g(to)g(implemen)n(t)h(the)f(reduction)g(rules)f(for)h(these) 450 3760 y(sup)r(ercom)n(binators.)54 b(The)33 b(result)h(is)g(that)g (eac)n(h)f(program)f(runs)h(on)h(a)f(reduction)h(mac)n(hine)450 3860 y(tailored)e(sp)r(ecially)g(for)g(it.)52 b(Most)32 b(curren)n(t)g(high-p)r(erformance)f(implemen)n(tations)h(of)h(func-) 450 3960 y(tional)26 b(languages)e(use)h(sup)r(ercom)n(binators)f([1,)i (11)o(].)37 b(Another)25 b(a)n(v)n(en)n(ue)g(of)h(researc)n(h)e(is)h (to)h(use)450 4059 y(com)n(binators)33 b(based)i(on)f(the)i(De)f (Bruijn)g(notation)g(brie\015y)f(describ)r(ed)h(on)g(page)f(11.)58 b(The)450 4159 y(`Categorical)25 b(Abstract)j(Mac)n(hine')f([26)o(])h (uses)f(this)h(approac)n(h.)p eop %%Page: 47 52 47 51 bop 2836 498 a FS(Chapter)38 b(4)p 330 609 3000 9 v 330 861 a FP(A)65 b(Quic)-5 b(k)65 b(Ov)-5 b(erview)67 b(of)e(ML)p 330 1019 V 330 1519 a FO(There)24 b(are)f(t)n(w)n(o)h (widely)g(use)g(descenden)n(ts)g(of)h(the)f(original)f(ML:)i(Standard)e (ML)i(and)f(Caml)3270 1488 y FD(1)3307 1519 y FO(.)330 1618 y(These)30 b(notes)763 1588 y FD(2)830 1618 y FO(describ)r(e)f (the)i(former.)43 b(Sev)n(eral)29 b(implemen)n(tations)h(of)g(Standard) f(ML)h(exist.)330 1718 y(These)i(all)g(supp)r(ort)g(the)h(same)f(core)f (language,)h(but)h(di\013er)g(in)f(extensions,)h(error)e(message)330 1817 y(details)g(etc.)48 b(A)-7 b(T&T's)31 b(public)h(domain)e (\\Standard)h(ML)g(of)g(New)h(Jersey")d(\()p FH(SML/NJ)p FO(\))j(and)330 1917 y(the)20 b(commercial)f(system)h(P)n(olyML)1456 1887 y FD(3)1511 1917 y FO(are)f(used)h(for)f(researc)n(h)f (applications)h(in)h(the)g(Cam)n(bridge)330 2017 y(Computer)h(Lab)r (oratory)-7 b(.)32 b(The)22 b(ML)f(implemen)n(tation)h(on)f(Thor)f(for) h(teac)n(hing)f(is)i(\\Edin)n(burgh)330 2116 y(ML")j(from)g(the)h(Univ) n(ersit)n(y)f(of)g(Edin)n(burgh)f(\(with)j(enhancemen)n(ts)e(due)g(to)h (Arth)n(ur)f(Norman)330 2216 y(of)38 b(Cam)n(bridge\).)67 b(The)38 b(di\013eren)n(t)g(outputs)g(pro)r(duced)g(b)n(y)f FH(SML/NJ)i FO(and)f(Edin)n(burgh)f FH(ML)330 2316 y FO(will)26 b(b)r(e)h(sometimes)f(sho)n(wn,)g(but)g(the)h(examples)f (that)g(follo)n(w)f(are)h(presen)n(ted)f(in)i(the)f(system)330 2415 y(neutral)h(st)n(yle)g(of)h(P)n(aulson's)e(b)r(o)r(ok)h(\(whic)n (h)h(is)f(closer)g(to)g(Edin)n(burgh)g FH(ML)h FO(than)f FH(SML/NJ)p FO(\).)330 2723 y FG(4.1)135 b(In)l(teracting)47 b(with)e(ML)330 2924 y FH(ML)33 b FO(is)g(an)g(in)n(teractiv)n(e)e (language.)51 b(A)33 b(common)g(w)n(a)n(y)e(to)i(run)f(it)i(is)e (inside)h(a)g(shell)g(windo)n(w)330 3024 y(from)c(emacs.)43 b(The)30 b(programs)e(are)h(then)h(tested)g(b)n(y)g(`cutting)g(and)g (pasting')f(from)g(the)i(text)330 3124 y(windo)n(w)c(to)h(the)g(shell)f (windo)n(w.)330 3240 y(The)k(t)n(w)n(o)e(main)i(things)g(one)f(do)r(es) g(in)h(ML)g(are)e(ev)-5 b(aluate)30 b(expressions)f(and)i(p)r(erform)f (decla-)330 3339 y(rations.)330 3456 y(What)i(follo)n(ws)f(is)h(a)g (session)f(in)h(whic)n(h)g(simple)g(uses)g(of)g(v)-5 b(arious)31 b FH(ML)h FO(constructs)f(are)g(illus-)330 3555 y(trated.)58 b(T)-7 b(o)35 b(mak)n(e)f(the)h(session)f(easier)f (to)i(follo)n(w,)h(it)f(is)g(split)g(in)n(to)g(a)f(sequence)h(of)g(b)r (o)n(xed)330 3655 y(sub-sessions.)330 3962 y FG(4.2)135 b(Expressions)330 4164 y FO(The)30 b(top-lev)n(el)g FH(ML)h FO(prompt)f(is)g(\\)p Fj(-)p FO(".)45 b(As)31 b FH(ML)f FO(reads)g(a)g(phrase)f(it)i(prompts)f(with)h(\\)p Fj(=)p FO(")f(un)n(til)330 4264 y(a)d(complete)g(expression)f(or)g (declaration)g(is)h(found.)37 b(Neither)27 b(the)g(initial)h(prompt)f Fj(-)g FO(nor)g(the)330 4363 y(in)n(termediate)33 b(prompt)g Fj(=)h FO(will)f(normally)f(b)r(e)i(sho)n(wn)f(here,)h(except)f(in)h (sessions)e(whic)n(h)h(are)330 4463 y(included)23 b(to)f(illustrate)g (the)g(b)r(eha)n(viour)f(of)i(particular)e(ML)h(implemen)n(tations)g (\(e.g.)g(the)h(next)330 4563 y(t)n(w)n(o)k(b)r(o)n(xes\).)330 4679 y FH(SML/NJ)32 b FO(is)f(called)g(\\sml")f(on)h(Computer)g(Lab)g (mac)n(hines.)47 b(The)31 b(follo)n(wing)f(seesion)g(sho)n(ws)330 4778 y(it)e(b)r(eing)g(run)f(and)h(the)g(expression)e Fj(2+3)i FO(b)r(eing)g(ev)-5 b(aluated.)p 330 4863 1200 4 v 422 4916 a Fx(1)457 4940 y FB(Readers)26 b(in)n(terested)h(in)e (Caml)g(should)g(consult)i(the)f(W)-6 b(eb)27 b(page)g Fi(http://pauillac.inria.fr)q(/ca)q(ml/)p FB(.)330 5019 y(Caml)19 b(is)g(a)i(ligh)n(t)n(w)n(eigh)n(t)g(language)h(b)r(etter)f (suited)g(than)h(Standard)f(ML)f(for)g(use)g(on)h(small)d(mac)n(hines.) 30 b(All)19 b(the)330 5098 y(constructs)29 b(describ)r(ed)e(in)g(this)g (course)h(are)f(in)g(Caml,)f(though)j(the)f(syn)n(tactic)h(details)e (di\013er)g(sligh)n(tly)g(from)330 5177 y(Standard)e(ML)422 5232 y Fx(2)457 5256 y FB(This)e(o)n(v)n(erview)h(has)g(ev)n(olv)n(ed)h (from)d(the)i(description)g(of)g(the)g(original)f FH(ML)h FB(in)f(Section)i(2.1)f(of:)538 5384 y(M.J.C.)16 b(Gordon,)j(A.J.R.G)e (Milner)g(and)i(C.P)-6 b(.)17 b(W)-6 b(adsw)n(orth)19 b Fo(Edinbur)l(gh)j(LCF:)e(A)g(Me)l(chanize)l(d)538 5463 y(L)l(o)l(gic)i(of)g(Computation)p FB(,)g(Lecture)f(Notes)g(in)e (Computer)h(Science)h Fw(78)p FB(,)f(Springer-V)-6 b(erlag)19 b(1979.)422 5597 y Fx(3)457 5621 y FB(P)n(olyML)25 b(w)n(as)g (originally)g(dev)n(elop)r(ed)h(at)g(the)g(Cam)n(bridge)f(Computer)g (Lab)r(oratory)h(and)g(then)g(licenced)330 5699 y(\014rst)18 b(to)h(Imp)r(erial)d(Soft)n(w)n(are)j(T)-6 b(ec)n(hnology)20 b(and)f(then)g(to)g(Abstract)f(Hardw)n(are)g(Limited.)29 b(It)18 b(has)h(an)f(in)n(tegrated)330 5778 y(p)r(ersistan)n(t)j (storage)g(system)e(\(database\))k(and)d(is)g(less)f(memory)f(h)n (ungry)j(than)g(Standard)g(ML)f(of)g(New)g(Jersey)-6 b(.)1788 5988 y FO(47)p eop %%Page: 48 53 48 52 bop 450 92 a FO(48)1545 b(Chapter)27 b(4.)64 b(A)28 b(Quic)n(k)f(Ov)n(erview)e(of)j(ML)p 450 249 3000 9 v 450 418 2999 4 v 448 1177 4 759 v 3263 504 6 90 v 3269 504 181 6 v 3339 480 a Fh(1)500 483 y Fj(woodcock\045)41 b(sml)500 566 y(Standard)g(ML)f(of)f(New)h(Jersey,)h(Version)g(0.93,)f (February)h(15,)f(1993)500 649 y(val)g(it)f(=)h(\(\))g(:)f(unit)500 815 y(-2+3;)500 898 y(val)h(it)f(=)h(5)f(:)h(int)500 1064 y(-it;)500 1148 y(val)g(it)f(=)h(5)f(:)h(int)p 3445 1177 4 759 v 450 1181 2999 4 v 450 1384 a FO(After)31 b FH(SML/NJ)h FO(starts)e(up)h(it)h(prin)n(ts)f(a)f(message)g(follo)n (w)n(ed)g(b)n(y)g Fj(val)40 b(it)g(=)f(\(\))h(:)g(unit)p FO(,)32 b(\(this)450 1484 y(will)27 b(b)r(e)g(explained)g(later\).)36 b(It)27 b(then)g(prompts)f(for)h(user)f(input)h(with)h Fj(-)p FO(,)f(the)g(user)f(then)h(input)450 1584 y Fj(2+3;)35 b FO(follo)n(w)n(ed)f(b)n(y)g(a)g(carriage)e(return;)37 b FH(ML)e FO(then)g(resp)r(onded)f(with)h Fj(val)40 b(it)f(=)h(5)f(:)h (int)p FO(,)c(a)450 1683 y(new)c(line,)h(and)f(then)h(prompted)e (again.)49 b(This)32 b(output)h(sho)n(ws)e(that)h Fj(2+3)h FO(ev)-5 b(aluates)31 b(to)h(the)450 1783 y(v)-5 b(alue)27 b Fj(5)h FO(of)g(t)n(yp)r(e)g Fj(int)p FO(.)450 1899 y(The)k(user)f(then)h(input)g Fj(it;)h FO(follo)n(w)n(ed)d(b)n(y)i(a)f (carriage)e(return,)k(and)e(the)h(system)g(resp)r(onded)450 1999 y(with)k Fj(val)k(it)f(=)h(5)f(:)h(int)c FO(again.)59 b(In)35 b(general,)h(to)f(ev)-5 b(aluate)35 b(an)g(expression)f FN(e)h FO(one)g(inputs)450 2098 y FN(e)d FO(follo)n(w)n(ed)g(b)n(y)g(a) g(semi-colon)f(and)i(then)g(a)f(carriage)e(return;)k(the)f(system)f (then)h(prin)n(ts)g FN(e)p FO('s)450 2198 y(v)-5 b(alue)29 b(and)f(t)n(yp)r(e)h(in)g(the)g(format)f(sho)n(wn.)40 b(The)29 b(v)-5 b(alue)28 b(of)h(the)g(last)g(expression)e(ev)-5 b(aluated)28 b(at)450 2297 y(top)g(lev)n(el)g(is)h(remem)n(b)r(ered)e (in)i(the)g(iden)n(ti\014er)f Fj(it)p FO(.)40 b(This)28 b(is)h(sho)n(wn)e(explicitly)i(in)g(the)g(output)450 2397 y(from)k FH(SML/NJ)p FO(,)i(but)f(not)f(in)h(the)g(output)g(from)g (Edin)n(burgh)e FH(ML)i FO(sho)n(wn)f(in)h(the)g(follo)n(wing)450 2497 y(b)r(o)n(x)25 b(\(whic)n(h,)g(after)g(Edin)n(burgh)f FH(ML)i FO(has)e(b)r(een)h(run,)h(has)e(the)i(same)e(input)i(as)e(the)i (preceding)450 2596 y(one\).)p 450 2762 V 448 3936 4 1175 v 3263 2848 6 90 v 3269 2848 181 6 v 3339 2824 a Fh(2)500 2827 y Fj(hammer.thor.cam.ac.uk\045)44 b (/group/clteach/acn/ml/unix/cm)q(l)500 2910 y(FAM)c (/group/clteach/acn/ml/unix/fam)46 b(started)41 b(on)e(02-Jan-1996)j (16:03:07)617 2993 y(\(version)g(4.2.01)e(of)g(Jan)g(25)f(1995\))500 3076 y(Image)h(file)g(/group/clteach/acn/ml/unix/c)q(ml.e)q(xp)617 3159 y(\(written)i(on)d(25-Jan-1995)j(15:42:47)f(by)f(FAM)g(version)g (4.2.01\))500 3242 y([Loading)h(Generic)g(Heap...resexing...relocating) k(by)40 b(efff1ff8)h(\(bytes\)])500 3408 y(Edinburgh)g(ML)f(for)g (DOS/Win32s/Unix)82 b(\(C\))39 b(Edinburgh)j(University)f(&)f(A)f(C)h (Norman)500 3574 y(-)f(2+3;)500 3657 y(>)g(5)h(:)f(int)500 3823 y(-)g(it;)500 3906 y(>)g(5)h(:)f(int)p 3445 3936 4 1175 v 450 3939 2999 4 v 450 4138 a FO(Unless)29 b(explicit)n(y)f (indicated)h(otherwise,)f(the)h(b)r(o)n(xed)f(sessions)f(that)i(follo)n (w)f(use)h(the)g(format)450 4238 y(illustrated)e(b)n(y:)p 450 4398 V 448 4825 4 427 v 3263 4484 6 90 v 3269 4484 181 6 v 3339 4460 a Fh(3)500 4463 y Fj(2+3;)500 4546 y(>)39 b(val)h(it)g(=)f(5)h(:)f(int)500 4712 y(it;)500 4795 y(>)g(val)h(it)g(=)f(5)h(:)f(int)p 3445 4825 4 427 v 450 4829 2999 4 v 450 5032 a FO(Prompts)g(\()p Fj(-)q FO(\))h(are)f(not)h(sho)n(wn,)i(system)e(output)h(is)f(indicated)g(b)n (y)g Fj(>)g FO(and)g(the)g(v)-5 b(alues)40 b(of)450 5132 y(expressions)24 b(are)g(sho)n(wn)h(explicitly)g(b)r(ound)h(to)g Fj(it)p FO(.)36 b(Sometimes)26 b(part)f(of)g(the)h(output)g(will)g(b)r (e)450 5231 y(omitted)i(\(e.g.)37 b(the)28 b(t)n(yp)r(e\).)450 5570 y FG(4.3)135 b(Declarations)450 5778 y FO(The)28 b(declaration)e Fj(val)i FN(x)p Fj(=)p FN(e)g FO(ev)-5 b(aluates)27 b FN(e)g FO(and)h(binds)g(the)g(resulting)f(v)-5 b(alue)27 b(to)h FN(x)p FO(.)p eop %%Page: 49 54 49 53 bop 330 108 a FO(4.4.)64 b(Commen)n(ts)2337 b(49)p 330 249 3000 9 v 330 418 2999 4 v 328 845 4 427 v 3143 504 6 90 v 3149 504 181 6 v 3219 480 a Fh(4)380 483 y Fj(val)40 b(x=2*3;)380 566 y(>)f(val)h(x)g(=)f(6)h(:)f(int)380 732 y(it=x;)380 815 y(>)g(val)h(it)g(=)f(false)i(:)e(bool)p 3325 845 4 427 v 330 849 2999 4 v 330 1031 a FO(Notice)28 b(that)f(declarations)f(do)i(not)f(a\013ect)h Fj(it)p FO(.)330 1147 y(Inputting)21 b Fg(e)p Fj(;)f FO(at)g(top)g(lev)n(el)f (is)h(actually)g(treated)f(as)h(inputting)g(the)h(declaration)d Fj(let)40 b(it)g(=)f(e;)q FO(.)330 1247 y(The)31 b(ML)h(system)f(\(b)r (oth)h FH(SML/NJ)g FO(and)f(Edin)n(burgh)f FH(ML)p FO(\))i(initially)g (binds)f Fj(it)h FO(to)f(a)g(sp)r(ecial)330 1347 y(v)-5 b(alue)27 b Fj(\(\))q FO(,)h(whic)n(h)f(is)h(the)g(only)f(v)-5 b(alue)27 b(of)h(the)g(one-elemen)n(t)f(t)n(yp)r(e)h Fj(unit)q FO(.)330 1463 y(T)-7 b(o)38 b(bind)g(the)g(v)-5 b(ariables)37 b FN(x)1217 1475 y FD(1)1255 1463 y FN(;)14 b(:)g(:)g(:)f(;)h(x)1486 1475 y Fu(n)1570 1463 y FO(sim)n(ultaneously) 37 b(to)h(the)g(v)-5 b(alues)38 b(of)f(the)i(expressions)330 1562 y FN(e)369 1574 y FD(1)406 1562 y FN(;)14 b(:)g(:)g(:)f(;)h(e)629 1574 y Fu(n)702 1562 y FO(one)27 b(can)g(p)r(erform:)455 1756 y FK(\017)41 b FO(either)27 b(the)h(declaration)e Fj(val)40 b FN(x)1549 1768 y FD(1)1587 1756 y Fj(=)p FN(e)1665 1768 y FD(1)1769 1756 y Fj(and)g FN(x)1973 1768 y FD(2)2010 1756 y Fj(=)p FN(e)2088 1768 y FD(2)2139 1756 y FN(:)14 b(:)g(:)39 b Fj(and)68 b FN(x)2507 1768 y Fu(n)2553 1756 y Fj(=)p FN(e)2631 1768 y Fu(n)455 1945 y FK(\017)41 b FO(or)26 b Fj(val)40 b(\()p FN(x)882 1957 y FD(1)920 1945 y FN(;)14 b(x)1004 1957 y FD(2)1042 1945 y FN(;)g(:)g(:)g(:)f(;)h(x)1273 1957 y Fu(n)1319 1945 y Fj(\)=\()p FN(e)1475 1957 y FD(1)1512 1945 y FN(;)g(e)1588 1957 y FD(2)1625 1945 y FN(;)g(:)g(:)g(:)g(;)g(e)1849 1957 y Fu(n)1894 1945 y Fj(\))p FO(.)330 2139 y(These)27 b(t)n(w)n(o)g(declarations)f(are)h(equiv)-5 b(alen)n(t.)p 330 2283 V 328 2876 4 593 v 3143 2369 6 90 v 3149 2369 181 6 v 3219 2345 a Fh(5)380 2348 y Fj(val)40 b(y=10)g(and)g(z=x;)380 2431 y(>)f(val)h(y)g(=)f(10)h(:)f(int)380 2514 y(>)g(val)h(z)g(=)f(6)h (:)f(int)380 2680 y(val)h(\(x,y\))g(=)g(\(y,x\);)380 2763 y(>)f(val)h(x)g(=)f(10)h(:)f(int)380 2846 y(>)g(val)h(y)g(=)f(6)h (:)f(int)p 3325 2876 4 593 v 330 2879 2999 4 v 330 3062 a FO(A)23 b(declaration)e FN(d)h FO(can)g(b)r(e)h(made)f(lo)r(cal)g(to) g(the)h(ev)-5 b(aluation)21 b(of)i(an)f(expression)f FN(e)h FO(b)n(y)g(ev)-5 b(aluating)330 3161 y(the)28 b(expression)e Fj(let)40 b FN(d)f Fj(in)h FN(e)f Fj(end)p FO(.)p 330 3306 V 328 3733 4 427 v 3143 3391 6 90 v 3149 3391 181 6 v 3219 3367 a Fh(6)380 3371 y Fj(let)h(val)g(x=2)g(in)f(x*y) h(end;)380 3454 y(>)f(val)h(it)g(=)f(12)h(:)f(int)380 3620 y(x;)380 3703 y(>)g(val)h(it)g(=)f(10)h(:)f(int)p 3325 3733 4 427 v 330 3736 2999 4 v 330 3992 a FG(4.4)135 b(Commen)l(ts)330 4195 y FO(Commen)n(ts)30 b(start)g(with)g Fj(\(*)h FO(and)f(end)h(with)g Fj(*\))p FO(.)45 b(They)30 b(nest)g(lik)n(e)g(paren)n(theses,)g(can)g(extend)330 4295 y(o)n(v)n(er)c(man)n(y)h(lines)g(and)h(can)f(b)r(e)h(inserted)f (wherev)n(er)f(spaces)h(are)g(allo)n(w)n(ed.)p 330 4439 V 328 5115 4 676 v 3143 4525 6 90 v 3149 4525 181 6 v 3219 4501 a Fh(7)380 4504 y Fj(tr\(*)40 b(comments)h(can't)f(go)g(in)g (the)g(middle)g(of)g(names)g(*\)ue;)380 4587 y(>)f(Error:)i(unbound)g (variable)g(or)e(constructor:)j(tr)380 4670 y(>)d(Error:)i(unbound)g (variable)g(or)e(constructor:)j(ue)380 4836 y(1)d(\(*)h(this)g(comment) h(is)f(ignored)g(*\))g(<)g(2;)380 4919 y(>)f(val)h(it)g(=)f(true)h(:)g (bool)380 5085 y(\(*)f(Inside)i(this)f(comment)h(\(*)f(another)h(one)e (is)h(nested)h(*\))e(!)h(*\))p 3325 5115 4 676 v 330 5119 2999 4 v 330 5376 a FG(4.5)135 b(F)-11 b(unctions)330 5579 y FO(T)k(o)41 b(de\014ne)h(a)e(function)i FN(f)50 b FO(with)42 b(formal)f(parameter)f FN(x)h FO(and)h(b)r(o)r(dy)f FN(e)g FO(one)g(p)r(erforms)g(the)330 5679 y(declaration:)47 b Fj(fun)40 b FN(f)i(x)d Fj(=)h FN(e)p FO(.)53 b(T)-7 b(o)33 b(apply)g(the)h(function)g FN(f)42 b FO(to)33 b(an)g(actual)g(parameter)e FN(e)i FO(one)330 5778 y(ev)-5 b(aluates)27 b(the)h(expression:)35 b FN(f)i(e)p FO(.)p eop %%Page: 50 55 50 54 bop 450 92 a FO(50)1545 b(Chapter)27 b(4.)64 b(A)28 b(Quic)n(k)f(Ov)n(erview)e(of)j(ML)p 450 249 3000 9 v 450 418 2999 4 v 448 845 4 427 v 3263 504 6 90 v 3269 504 181 6 v 3339 480 a Fh(8)500 483 y Fj(fun)40 b(f)f(x)h(=)f(2*x;)500 566 y(>)g(val)h(f)g(=)f(fn)h(:)f(int)h(->)g(int)500 732 y(f)f(4;)500 815 y(>)g(val)h(it)g(=)f(8)h(:)f(int)p 3445 845 4 427 v 450 849 2999 4 v 450 1011 a FO(F)-7 b(unctions)31 b(are)g(prin)n(ted)g(as)f Fj(fn)i FO(in)g FH(SML/NJ)f FO(and)g Fj(Fn)h FO(in)g(Edin)n(burgh)e FH(ML)p FO(,)i(since)f(a)g (function)450 1110 y(as)f(suc)n(h)g(is)g(not)g(prin)n(table.)45 b(After)31 b Fj(fn)g FO(or)e Fj(Fn)i FO(is)f(prin)n(ted,)i(the)e(t)n (yp)r(e)h(of)f(the)h(function)g(is)f(also)450 1210 y(prin)n(ted.)37 b(F)-7 b(unctions)28 b(are)e(prin)n(ted)i(as)f Fj(fn)h FO(in)g(these)f(notes.)450 1326 y(Applying)35 b(a)e(function)i(to)g(an) f(argumen)n(t)f(of)h(the)h(wrong)e(t)n(yp)r(e)i(results)f(in)g(a)g(t)n (yp)r(ec)n(hec)n(king)450 1426 y(error.)h(The)28 b(particular)e(error)f (message)i(dep)r(ends)h(on)f(the)h(ML)g(system)f(used.)37 b(In)28 b FH(SML/NJ)p FO(:)p 450 1552 V 448 2062 4 510 v 3263 1638 6 90 v 3269 1638 181 6 v 3339 1614 a Fh(9)500 1617 y Fj(-)39 b(f)h(true;)500 1700 y(std_in:12.1-12.6)j(Error:)d (operator)h(and)f(operand)h(don't)f(agree)h(\(tycon)f(mismatch\))578 1783 y(operator)h(domain:)g(int)578 1866 y(operand:)355 b(bool)578 1949 y(in)40 b(expression:)657 2032 y(f)f(true)p 3445 2062 4 510 v 450 2065 2999 4 v 450 2227 a FO(In)28 b(Edin)n(burgh)e FH(ML)p FO(:)p 450 2351 V 448 2695 4 344 v 3263 2437 6 90 v 3269 2437 181 6 v 3321 2413 a Fh(10)500 2416 y Fj(-)39 b(f)h(true;)500 2499 y(Type)g(clash)80 b(in:)f(\(f)39 b(true\))500 2582 y(Looking)80 b(for)40 b(a:)79 b(int)500 2665 y(I)39 b(have)h(found)h(a:)79 b(bool)p 3445 2695 4 344 v 450 2698 2999 4 v 450 2860 a FO(Application)36 b(binds)g(more)f(tigh)n(tly)h(than)g(an)n(ything)f (else)h(in)g(the)h(language;)h(th)n(us,)g(for)e(ex-)450 2960 y(ample,)29 b FN(f)47 b Fj(3)40 b(+)f(4)29 b FO(means)f Fj(\()p FN(f)48 b Fj(3\)+4)29 b FO(not)g FN(f)9 b Fj(\(3+4\))p FO(.)40 b(F)-7 b(unctions)29 b(of)f(sev)n(eral)f(argumen)n(ts)g(can)h (b)r(e)450 3059 y(de\014ned:)p 450 3167 V 448 4092 4 926 v 3263 3253 6 90 v 3269 3253 181 6 v 3321 3229 a Fh(11)500 3232 y Fj(fun)40 b(add)g(\(x:int\))g(\(y:int\))h(=)f(x+y;)500 3315 y(>)f(val)h(add)g(=)g(fn)f(:)h(int)g(->)f(int)h(->)g(int)500 3481 y(add)g(3)f(4;)500 3564 y(>)g(val)h(it)g(=)f(7)h(:)f(int)500 3730 y(val)h(f)f(=)h(add)g(3;)500 3813 y(>)f(val)h(f)g(=)f(fn)h(:)f (int)h(->)g(int)500 3979 y(f)f(4;)500 4062 y(>)g(val)h(it)g(=)f(7)h(:)f (int)p 3445 4092 4 926 v 450 4095 2999 4 v 450 4257 a FO(Application)d(asso)r(ciates)d(to)j(the)g(left,)i(so)d Fj(add)k(3)h(4)c FO(means)f Fj(\(add)40 b(3\)4)p FO(.)61 b(In)36 b(the)g(expression)450 4357 y Fj(add)k(3)p FO(,)33 b(the)g(function)f Fj(add)h FO(is)f(applied)g(to)g Fj(3)p FO(;)i(the)f(resulting)e(v)-5 b(alue)32 b(is)g(the)g(function)h(of)f(t) n(yp)r(e)450 4456 y Fj(int)40 b(->)g(int)31 b FO(whic)n(h)g(adds)g Fj(3)g FO(to)g(its)g(argumen)n(t.)46 b(Th)n(us)31 b Fj(add)g FO(tak)n(es)f(its)h(argumen)n(ts)f(`one)h(at)f(a)450 4556 y(time'.)450 4672 y(Without)g(the)g(explicit)g(t)n(yping)g(of)f (the)h(formal)f(parameters,)g FH(ML)h FO(cannot)f(tell)h(whether)g(the) 450 4772 y Fj(+)35 b FO(is)g(addition)g(of)g(in)n(tegers)f(or)g(reals.) 58 b(The)35 b(sym)n(b)r(ol)g Fj(+)g FO(is)g(o)n(v)n(erloaded.)57 b(If)35 b(the)h(extra)e(t)n(yp)r(e)450 4871 y(information)27 b(is)g(omitted,)i(an)e(error)e(results.)37 b(In)28 b FH(SML/NJ)p FO(:)p 450 4998 V 448 5175 4 178 v 3263 5083 6 90 v 3269 5083 181 6 v 3321 5059 a Fh(12)500 5062 y Fj(-)39 b(fun)h(add)g(x)g(y)f(=)g(x+y;)500 5146 y(std_in:5.16)j(Error:) e(overloaded)i(variable)f("+")f(cannot)g(be)g(resolved)p 3445 5175 4 178 v 450 5179 2999 4 v 450 5341 a FO(In)28 b(Edin)n(burgh)e FH(ML)p FO(:)p 450 5464 V 448 5808 4 344 v 3263 5550 6 90 v 3269 5550 181 6 v 3321 5526 a Fh(13)500 5529 y Fj(-)39 b(fun)h(add)g(x)g(y)f(=)g(x+y;)500 5612 y(Type)h(checking)h(error)f(in:)g(\(syntactic)i(context)f (unknown\))500 5695 y(Unresolvable)h(overloaded)f(identifier:)81 b(+)500 5778 y(Definition)41 b(cannot)g(be)f(found)g(for)g(the)g(type:) 79 b(\('a)40 b(*)g('a\))g(->)f('a)p 3445 5808 4 344 v 450 5812 2999 4 v eop %%Page: 51 56 51 55 bop 330 92 a FO(4.6.)64 b(T)n(yp)r(e)27 b(abbreviations)2020 b(51)p 330 249 3000 9 v 330 498 a(This)32 b(kind)h(of)f(t)n(yp)r(ec)n (hec)n(king)f(error)f(is)i(relativ)n(ely)f(rare.)50 b(Muc)n(h)32 b(more)f(common)h(are)f(errors)330 598 y(resulting)c(from)g(applying)g (functions)h(to)g(argumen)n(ts)e(of)h(the)h(wrong)f(t)n(yp)r(e.)330 714 y(The)e(function)g Fj(add)g FO(could)g(alternativ)n(ely)e(ha)n(v)n (e)h(b)r(een)h(de\014ned)g(to)f(tak)n(e)g(a)g(single)h(argumen)n(t)e (of)330 814 y(the)28 b(pro)r(duct)g(t)n(yp)r(e)f Fj(int)40 b(*)g(int)p FO(:)p 330 994 2999 4 v 328 2251 4 1258 v 3143 1079 6 90 v 3149 1079 181 6 v 3201 1055 a Fh(14)380 1059 y Fj(fun)g(add\(x,y\):int)i(=)d(x+y;)380 1142 y(>)g(val)h(add)g(=) g(fn)f(:)h(int)g(*)f(int)h(->)g(int)380 1308 y(add\(3,4\);)380 1391 y(>)f(val)h(it)g(=)f(7)h(:)f(int)380 1557 y(let)h(val)g(z)f(=)h (\(3,4\))g(in)g(add)g(z)f(end;)380 1640 y(>)g(val)h(it)g(=)f(7)h(:)f (int)380 1806 y(add)h(3;)380 1889 y(>)f(std_in:2.1-2.5)k(Error:)d (operator)h(and)f(operand)h(don't)f(agree)h(\(tycon)f(mismatch\))380 1972 y(>)118 b(operator)41 b(domain:)g(int)f(*)f(int)380 2055 y(>)118 b(operand:)355 b(int)380 2138 y(>)118 b(in)39 b(expression:)380 2221 y(>)196 b(add)40 b(3)p 3325 2251 4 1258 v 330 2254 2999 4 v 330 2472 a FO(The)34 b(error)e(message)g (sho)n(wn)h(here)g(is)h(the)g(one)f(generated)g(b)n(y)h FH(SML/NJ)p FO(.)g(Notice)g(that)g(this)330 2572 y(time)40 b(the)g(result)f(of)g(the)h(function)g(has)f(had)g(its)g(t)n(yp)r(e)h (giv)n(en)f(explicitly)-7 b(.)72 b(In)40 b(general,)h(it)330 2671 y(is)33 b(su\016cien)n(t)g(to)g(explicitly)g(t)n(yp)r(e)g(an)n(y)f (sub)r(expression)g(as)g(long)g(as)h(this)g(disam)n(biguates)e(all)330 2771 y(o)n(v)n(erloaded)25 b(op)r(erators.)330 2887 y(As)d(w)n(ell)h (as)e(taking)h(structured)g(argumen)n(ts)f(\(e.g.)h Fj(\(3,4\))q FO(\))h(functions)g(ma)n(y)f(also)f(return)h(struc-)330 2987 y(tured)28 b(results.)p 330 3151 V 328 3578 4 427 v 3143 3237 6 90 v 3149 3237 181 6 v 3201 3213 a Fh(15)380 3216 y Fj(fun)40 b(sumdiff\(x:int,y:int\))k(=)39 b(\(x+y,x-y\);)380 3299 y(>)g(val)h(sumdiff)h(=)e(fn)h(:)g(int)g(*)f(int)h(->)g(int)f(*)h (int)380 3465 y(sumdiff\(3,4\);)380 3548 y(>)f(val)h(it)g(=)f(\(7,~1\)) i(:)e(int)h(*)g(int)p 3325 3578 4 427 v 330 3581 2999 4 v 330 3890 a FG(4.6)135 b(T)l(yp)t(e)45 b(abbreviations)330 4103 y FO(T)n(yp)r(es)27 b(can)g(b)r(e)h(giv)n(en)f(names:)p 330 4283 V 328 5457 4 1175 v 3143 4369 6 90 v 3149 4369 181 6 v 3201 4345 a Fh(16)380 4348 y Fj(type)40 b(intpair)h(=)e(int)h (*)g(int;)380 4431 y(>)f(type)h(intpair)h(defined)380 4597 y(fun)f(addpair)h(\(\(x,y\):intpair\))h(=)e(x+y;)380 4680 y(>)f(val)h(addpair)h(=)e(fn)h(:)g(intpair)g(->)g(int)380 4846 y(\(3,5\);)380 4929 y(>)f(val)h(it)g(=)f(\(3,5\))i(:)e(int)h(*)g (int)380 5095 y(\(3,5\):intpair;)380 5178 y(>)f(val)h(it)g(=)f(\(3,5\)) i(:)e(intpair)380 5344 y(addpair\(3,5\);)380 5427 y(>)g(val)h(it)g(=)f (8)h(:)f(int)p 3325 5457 4 1175 v 330 5461 2999 4 v 330 5679 a FO(The)21 b(new)g(name)g(is)g(simply)g(an)g(abbreviation;)h Fj(intpair)h FO(and)e Fj(int*int)i FO(are)d(completely)h(equiv-)330 5778 y(alen)n(t.)p eop %%Page: 52 57 52 56 bop 450 92 a FO(52)1545 b(Chapter)27 b(4.)64 b(A)28 b(Quic)n(k)f(Ov)n(erview)e(of)j(ML)p 450 249 3000 9 v 450 498 a FG(4.7)135 b(Op)t(erators)450 702 y Fj(+)33 b FO(\(addition\))g(and)f Fj(*)h FO(are)f(built-in)h(in\014x)g(op)r (erators.)50 b(Users)32 b(can)g(de\014ne)h(their)f(o)n(wn)g(in\014xes) 450 801 y(using)27 b Fj(infix)i FO(\(for)e(left)i(asso)r(ciativ)n(e)c (op)r(erators\))h(and)i Fj(infixr)h FO(for)e(righ)n(t)g(asso)r(ciativ)n (e)e(ones.)p 450 950 2999 4 v 448 1294 4 344 v 3263 1036 6 90 v 3269 1036 181 6 v 3321 1012 a Fh(17)500 1015 y Fj(infix)40 b(op1;)500 1098 y(infixr)g(op2;)500 1181 y(>)f(infix)i(op1)500 1264 y(>)e(infixr)i(op2)p 3445 1294 4 344 v 450 1298 2999 4 v 450 1480 a FO(This)i(merely)f(tells)h (the)g(parser)e(to)i(parse)f Fg(e)1940 1488 y Fx(1)2013 1480 y Fj(op1)e Fg(e)2206 1488 y Fx(2)2283 1480 y FO(as)j Fj(op1\()p Fg(e)2593 1488 y Fx(1)2628 1480 y Fj(,)p Fg(e)2703 1488 y Fx(2)2737 1480 y Fj(\))g FO(and)g Fg(e)3032 1488 y Fx(1)3106 1480 y Fj(op2)d Fg(e)3299 1488 y Fx(2)3376 1480 y FO(as)450 1580 y Fj(op2\()p Fg(e)642 1588 y Fx(1)677 1580 y Fj(,)p Fg(e)752 1588 y Fx(2)787 1580 y Fj(\))p FO(.)p 450 1725 V 448 2650 4 926 v 3263 1811 6 90 v 3269 1811 181 6 v 3321 1787 a Fh(18)500 1790 y Fj(fun)g(\(x:int\))h(op1)e (\(y:int\))i(=)f(x)f(+)h(y;)500 1873 y(>)f(val)h(op1)g(=)g(fn)f(:)h (int)g(*)f(int)h(->)g(int)500 2039 y(1)f(op1)h(2;)500 2122 y(>)f(val)h(it)g(=)f(3)h(:)f(int)500 2288 y(fun)h(\(x:int\))h(op2) e(\(y:int\))i(=)f(x)f(*)h(y;)500 2371 y(>)f(val)h(op2)g(=)g(fn)f(:)h (int)g(*)f(int)h(->)g(int)500 2537 y(2)f(op2)h(3;)500 2620 y(>)f(val)h(it)g(=)f(6)h(:)f(int)p 3445 2650 4 926 v 450 2653 2999 4 v 450 2841 a FO(An)25 b(in\014x)f(of)h(precedence)f FN(n)g FO(can)g(b)r(e)h(created)e(b)n(y)h(using)h Fj(infix)40 b Fg(n)25 b FO(instead)f(of)g(just)h Fj(infix)h FO(\(and)450 2940 y Fj(infixr)41 b Fg(n)33 b FO(instead)g(of)h(just)g Fj(infixr)q FO(\).)54 b(If)34 b(the)g FN(n)f FO(is)g(omitted)h(a)f (default)h(precedence)e(of)i Fj(0)f FO(is)450 3040 y(assumed.)450 3156 y(The)22 b(ML)g(parser)e(can)i(b)r(e)g(told)g(to)f(ignore)g(the)h (in\014x)g(status)g(of)g(an)f(o)r(ccurrence)g(of)h(an)f(iden)n (ti\014er)450 3256 y(b)n(y)27 b(preceding)g(the)h(o)r(ccurrence)e(with) i Fj(op)q FO(.)p 450 3401 V 448 3828 4 427 v 3263 3487 6 90 v 3269 3487 181 6 v 3321 3463 a Fh(19)500 3466 y Fj(op1;)500 3549 y(>)39 b(Error:)i(nonfix)f(identifier)i(required)500 3715 y(op)d(op1;)500 3798 y(>)g(val)h(it)g(=)f(fn)h(:)f(int)h(*)g(int)g (->)f(int)p 3445 3828 4 427 v 450 3831 2999 4 v 450 4014 a FO(The)d(in\014x)h(status)f(of)h(an)f(op)r(erator)e(can)i(b)r(e)h(p)r (ermanen)n(tly)f(remo)n(v)n(ed)f(using)h(the)h(directiv)n(e)450 4113 y Fj(nonfix)q FO(.)p 450 4242 V 448 5167 4 926 v 3263 4328 6 90 v 3269 4328 181 6 v 3321 4304 a Fh(20)500 4307 y Fj(1)i(+)h(2;)500 4390 y(>)f(val)h(it)g(=)f(3)h(:)f(int)500 4556 y(nonfix)h(+;)500 4639 y(>)f(nonfix)i(+)500 4805 y(1)e(+)h(2;)500 4888 y(>)f(Error:)i(operator)g(is)f(not)f(a)h (function)500 4971 y(>)118 b(operator:)41 b(int)500 5054 y(>)118 b(in)39 b(expression:)500 5137 y(>)196 b(1)40 b(+)f(:)h(overloaded)p 3445 5167 4 926 v 450 5170 2999 4 v 450 5353 a FO(Remo)n(ving)30 b(the)h(in\014x)g(status)f(of)h (built-in)g(op)r(erators)d(is)j(not)g(recommended.)45 b(Let's)31 b(restore)450 5453 y(it)d(b)r(efore)f(c)n(haos)f(results:)37 b Fj(+)28 b FO(is)f(left-asso)r(ciativ)n(e)f(with)i(precedence)f Fj(6)q FO(.)p 450 5597 V 448 5775 4 178 v 3263 5683 6 90 v 3269 5683 181 6 v 3321 5659 a Fh(21)500 5662 y Fj(infix)40 b(6)g(+;)500 5745 y(>)f(infix)i(6)e(+)p 3445 5775 4 178 v 450 5778 2999 4 v eop %%Page: 53 58 53 57 bop 330 108 a FO(4.8.)64 b(Lists)2550 b(53)p 330 249 3000 9 v 330 498 a FG(4.8)135 b(Lists)330 706 y FO(If)22 b FN(e)446 718 y FD(1)483 706 y FN(;)14 b(:)g(:)g(:)g(;)g(e)707 718 y Fu(n)773 706 y FO(all)22 b(ha)n(v)n(e)e(t)n(yp)r(e)i FN(ty)j FO(then)d(the)g FH(ML)h FO(expression)d Fj([)p FN(e)2278 718 y FD(1)2315 706 y Fj(,)p FN(:)14 b(:)g(:)p Fj(,)p FN(e)2529 718 y Fu(n)2574 706 y Fj(])22 b FO(has)g(t)n(yp)r(e)g Fj(\()p FN(ty)42 b Fj(list\))p FO(.)330 806 y(The)24 b(standard)g(functions)h(on)f(lists)g(are)g Fj(hd)h FO(\(head\),)g Fj(tl)g FO(\(tail\),)h Fj(null)f FO(\(whic)n(h)g(tests)f(whether)g(a) 330 905 y(list)f(is)f(empt)n(y|i.e.)g(is)h(equal)f(to)g Fj([])p FO(\),)i(and)e(the)h(in\014xed)g(op)r(erators)d Fj(::)j FO(\(cons\))g(and)f Fj(@)g FO(\(app)r(end,)330 1005 y(or)27 b(concatenation\).)p 330 1170 2999 4 v 328 2926 4 1756 v 3143 1256 6 90 v 3149 1256 181 6 v 3201 1232 a Fh(22)380 1235 y Fj(val)40 b(m)f(=)h([1,2,\(2+1\),4];)380 1318 y(>)f(val)h(m)g(=)f([1,2,3,4])i(:)f(int)g(list)380 1484 y(\(hd)g(m)f(,)h(tl)f(m\);)380 1567 y(>)g(val)h(it)g(=)f (\(1,[2,3,4]\))j(:)e(int)f(*)h(int)g(list)380 1733 y(\(null)g(m)g(,)f (null)h([]\);)380 1816 y(>)f(val)h(it)g(=)f(\(false,true\))j(:)e(bool)g (*)f(bool)380 1982 y(0::m;)380 2065 y(>)g(val)h(it)g(=)f([0,1,2,3,4])j (:)e(int)f(list)380 2231 y([1,)h(2])f(@)h([3,)g(4,)f(5,)h(6];)380 2314 y(>)f(val)h(it)g(=)f([1,2,3,4,5,6])k(:)c(int)h(list)380 2481 y([1,true,2];)380 2564 y(>)f(std_in:3.1-3.10)k(Error:)e(operator)g (and)e(operand)i(don't)g(agree)f(\(tycon)h(mismatch\))380 2647 y(>)118 b(operator)41 b(domain:)g(bool)f(*)f(bool)h(list)380 2730 y(>)118 b(operand:)355 b(bool)40 b(*)f(int)h(list)380 2813 y(>)118 b(in)39 b(expression:)380 2896 y(>)196 b(true)40 b(::)g(2)f(::)h(nil)p 3325 2926 4 1756 v 330 2929 2999 4 v 330 3132 a FO(All)24 b(the)f(mem)n(b)r(ers)g(of)g(a)g(list)h(m)n (ust)f(ha)n(v)n(e)f(the)i(same)e(t)n(yp)r(e)i(\(the)g(error)d(message)h (sho)n(wn)g(is)h(from)330 3232 y FH(SML/NJ)p FO(\).)330 3571 y FG(4.9)135 b(Strings)330 3779 y FO(A)28 b(sequence)f(of)h(c)n (haracters)d(enclosed)i(b)r(et)n(w)n(een)g(quotes)g(\()p Fj(")p FO(\))i(is)e(a)h(string.)p 330 3944 V 328 4371 4 427 v 3143 4030 6 90 v 3149 4030 181 6 v 3201 4006 a Fh(23)380 4009 y Fj("this)40 b(is)g(a)f(string";)380 4092 y(>)g(val)h(it)g(=)f("this)i(is)e(a)h(string")h(:)e(string)380 4258 y("";)380 4341 y(>)g(val)h(it)g(=)f("")h(:)f(string)p 3325 4371 4 427 v 330 4374 2999 4 v 330 4573 a FO(The)33 b(empt)n(y)h(string)f(is)g Fj("")p FO(.)55 b(A)34 b(string)e(can)i(b)r (e)f(`explo)r(ded')h(in)n(to)f(a)g(list)h(of)f(single-c)n(haracter)330 4673 y(strings)20 b(with)i(the)g(function)g Fj(explode)q FO(.)35 b(The)21 b(in)n(v)n(erse)f(of)h(this)h(is)f Fj(implode)q FO(,)i(whic)n(h)e(concatenates)330 4772 y(a)27 b(list)h(of)g(single-c)n (haracter)c(strings)j(in)n(to)g(a)g(single)g(string.)p 330 4933 V 328 5775 4 842 v 3143 5019 6 90 v 3149 5019 181 6 v 3201 4995 a Fh(24)380 4998 y Fj(explode;)380 5081 y(>)39 b(val)h(it)g(=)f(fn)h(:)f(string)i(->)f(string)g(list)380 5247 y(explode)h("this)f(is)g(a)f(string";)380 5330 y(>)g(val)h(it)g(=) 380 5413 y(>)118 b(["t","h","i","s",")43 b(","i","s",")f(","a",")f (","s","t","r","i","n","g"])380 5496 y(>)118 b(:)39 b(string)i(list)380 5662 y(implode)g(it;)380 5745 y(>)e(val)h(it)g(=)f("this)i(is)e(a)h (string")h(:)e(string)p 3325 5775 4 842 v 330 5778 2999 4 v eop %%Page: 54 59 54 58 bop 450 92 a FO(54)1545 b(Chapter)27 b(4.)64 b(A)28 b(Quic)n(k)f(Ov)n(erview)e(of)j(ML)p 450 249 3000 9 v 450 498 a FG(4.10)136 b(Records)450 705 y FO(Records)24 b(are)g(data-structures)f(with)j(named)f(comp)r(onen)n(ts.)36 b(They)25 b(can)f(b)r(e)i(con)n(trasted)e(with)450 804 y(tuples)k(whose)f(comp)r(onen)n(ts)g(are)g(determined)g(b)n(y)h(p)r (osition.)450 921 y(A)23 b(record)e(with)i(\014elds)g FN(x)1223 933 y FD(1)1261 921 y FO(,)h FN(:)14 b(:)g(:)22 b FO(,)i FN(x)1521 933 y Fu(n)1589 921 y FO(whose)e(v)-5 b(alues)22 b(are)g FN(v)2245 933 y FD(1)2283 921 y FO(,)h FN(:)14 b(:)g(:)23 b FO(,)h FN(v)2536 933 y Fu(n)2604 921 y FO(is)e(created)g(b)n(y)h(ev)-5 b(aluating)450 1020 y(the)28 b(expression:)35 b Fj({)p FN(x)1111 1032 y FD(1)1149 1020 y Fj(=)q FN(v)1229 1032 y FD(1)1266 1020 y FO(,)28 b FN(:)14 b(:)g(:)27 b FO(,)h FN(x)1539 1032 y Fu(n)1585 1020 y Fj(=)p FN(v)1664 1032 y Fu(n)1709 1020 y Fj(})p FO(.)p 450 1176 2999 4 v 448 1520 4 344 v 3263 1262 6 90 v 3269 1262 181 6 v 3321 1238 a Fh(25)500 1241 y Fj(val)40 b(MikeData)h(=)539 1324 y({userid)g(=)e("mjcg",)i(sex) f(=)f("male",)i(married)g(=)f(true,)g(children)h(=)e(2};)500 1407 y(>)g(val)h(MikeData)h(=)f({children=2,married=true,sex=")q(male") q(,use)q(rid=")q(mjcg)q("})500 1490 y(>)118 b(:)39 b({children:int,)k (married:bool,)f(sex:string,)g(userid:string})p 3445 1520 4 344 v 450 1523 2999 4 v 450 1717 a FO(The)27 b(t)n(yp)r(e)g(of)f Fj({)p FN(x)985 1729 y FD(1)1023 1717 y Fj(=)p FN(v)1102 1729 y FD(1)1140 1717 y FO(,)h FN(:)14 b(:)g(:)26 b FO(,)h FN(x)1410 1729 y Fu(n)1456 1717 y Fj(=)p FN(v)1535 1729 y Fu(n)1581 1717 y Fj(})g FO(is)f Fj({)p FN(x)1815 1729 y FD(1)1853 1717 y Fj(:)p FN(\033)1939 1729 y FD(1)1977 1717 y FO(,)h FN(:)14 b(:)g(:)26 b FO(,)h FN(x)2247 1729 y Fu(n)2293 1717 y Fj(:)p FN(\033)2379 1729 y Fu(n)2425 1717 y Fj(})p FO(,)g(where)f FN(\033)2800 1729 y Fu(i)2855 1717 y FO(is)h(the)g(t)n(yp)r(e)f(of)h FN(v)3399 1729 y Fu(i)3427 1717 y FO(.)450 1833 y(The)h(order)e(in)i(whic)n(h)f (record)f(comp)r(onen)n(ts)i(are)e(named)i(do)r(es)f(not)g(matter:)p 450 1988 V 448 2581 4 593 v 3263 2074 6 90 v 3269 2074 181 6 v 3321 2050 a Fh(26)500 2053 y Fj(val)40 b(MikeData')h(=)539 2136 y({sex)f(=)g("male",)g(userid)h(=)e("mjcg",)i(children)g(=)f(2,)g (married)g(=)g(true};)500 2219 y(>)f(val)h(MikeData')h(=)f ({children=2,married=true,sex=)q("male)q(",us)q(erid=)q("mjc)q(g"})500 2302 y(>)118 b(:)39 b({children:int,)k(married:bool,)f(sex:string,)g (userid:string})500 2468 y(MikeData)f(=)e(MikeData';)500 2551 y(>)g(val)h(it)g(=)f(true)h(:)g(bool)p 3445 2581 4 593 v 450 2585 2999 4 v 450 2778 a FO(The)33 b(comp)r(onen)n(t)g (named)h FN(x)g FO(of)f(a)g(record)f(can)h(b)r(e)g(extracted)g(using)g (the)h(sp)r(ecial)f(op)r(erator)450 2878 y Fj(#)p FN(x)p FO(.)p 450 3017 V 448 3195 4 178 v 3263 3103 6 90 v 3269 3103 181 6 v 3321 3079 a Fh(27)500 3082 y Fj(#children)41 b(MikeData;)500 3165 y(>)e(val)h(it)g(=)f(2)h(:)f(int)p 3445 3195 4 178 v 450 3198 2999 4 v 450 3392 a FO(F)-7 b(unctions)24 b(whic)n(h)f(access)g(record)f(comp)r(onen)n(ts)h(need)h (to)f(b)r(e)h(explicitly)g(told)f(the)h(t)n(yp)r(e)g(of)g(the)450 3492 y(record)j(they)i(are)f(accessing,)g(since)g(there)h(ma)n(y)f(b)r (e)h(sev)n(eral)e(t)n(yp)r(es)i(of)g(records)e(around)h(with)450 3591 y(the)g(same)f(\014eld)h(names.)p 450 3731 V 448 4407 4 676 v 3263 3817 6 90 v 3269 3817 181 6 v 3321 3793 a Fh(28)500 3796 y Fj(fun)40 b(Sex)g(p)f(=)h(#sex)g(p;)500 3879 y(>)f(Error:)i(unresolved)g(flex)f(record)h(in)f(let)g(pattern)500 4045 y(type)g(persondata)h(=)f({userid:string,)j(children:int,)f (married:bool,)g(sex:string};)500 4128 y(>)d(type)h(persondata)i(=)d ({children:int,)k(married:bool,)f(sex:string,)g(userid:string})500 4294 y(fun)e(Sex\(p:persondata\))j(=)c(#sex)h(p;)500 4377 y(>)f(val)h(Sex)g(=)g(fn)f(:)h(persondata)h(->)f(string)p 3445 4407 4 676 v 450 4410 2999 4 v 450 4608 a FO(A)30 b(tuple)h Fj(\()p Fg(v)833 4616 y Fx(1)868 4608 y Fj(,)40 b Fg(:)13 b(:)g(:)40 b Fj(,)f Fg(v)1191 4616 y Ff(n)1234 4608 y Fj(\))30 b FO(is)g(equiv)-5 b(alen)n(t)30 b(to)g(the)h(record)d Fj({)p FO(1)p Fj(=)p FN(v)2452 4620 y FD(1)2490 4608 y FO(,)j FN(:)14 b(:)g(:)30 b FO(,)h(n)p Fj(=)p FN(v)2850 4620 y Fu(n)2895 4608 y Fj(})g FO(\(i.e.)f(tuples)h(in)450 4708 y(ML)d(are)e(sp)r(ecial)i(cases)e(of)i(records\).)p 450 4868 V 448 5295 4 427 v 3263 4954 6 90 v 3269 4954 181 6 v 3321 4930 a Fh(29)500 4933 y Fj({1)39 b(=)h("Hello",)h(2)e(=)h (true,)g(3)g(=)f(0};)500 5016 y(>)g(val)h(it)g(=)f(\("Hello",true,0\))k (:)d(string)g(*)g(bool)g(*)f(int)500 5182 y(#2)g(it;)500 5265 y(>)g(val)h(it)g(=)f(true)h(:)g(bool)p 3445 5295 4 427 v 450 5298 2999 4 v 450 5572 a FG(4.11)136 b(P)l(olymorphism)450 5778 y FO(The)28 b(list)f(pro)r(cessing)g(functions)h Fj(hd)p FO(,)g Fj(tl)g FO(etc.)g(can)f(b)r(e)h(used)f(on)h(all)f(t)n (yp)r(es)h(of)f(lists.)p eop %%Page: 55 60 55 59 bop 330 92 a FO(4.12.)63 b FJ(fn)p FO(-expressions)2159 b(55)p 330 249 3000 9 v 330 418 2999 4 v 328 1094 4 676 v 3143 504 6 90 v 3149 504 181 6 v 3201 480 a Fh(30)380 483 y Fj(hd)39 b([1,2,3];)380 566 y(>)g(val)h(it)g(=)f(1)h(:)f(int)380 732 y(hd)g([true,false,true];)380 815 y(>)g(val)h(it)g(=)f(true)h(:)g (bool)380 981 y(hd)f([\(1,2\),\(3,4\)];)380 1064 y(>)g(val)h(it)g(=)f (\(1,2\))i(:)e(int)h(*)g(int)p 3325 1094 4 676 v 330 1098 2999 4 v 330 1249 a FO(Th)n(us)54 b Fj(hd)h FO(has)f(sev)n(eral)e (t)n(yp)r(es:)91 b(ab)r(o)n(v)n(e)53 b(it)h(is)h(used)f(with)h(t)n(yp)r (es)f Fj(\(int)40 b(list\))h(->)e(int)p FO(,)330 1349 y Fj(\(bool)h(list\))h(->)e(bool)j FO(and)f Fj(\(int)f(*)f(int\))i (list)f(->)f(\(int)i(*)e(int\))p FO(.)77 b(In)41 b(fact)g(if)h FN(ty)h FO(is)e(an)n(y)330 1449 y(t)n(yp)r(e)35 b(then)h Fj(hd)g FO(has)e(the)i(t)n(yp)r(e)f Fj(\()p FN(ty)43 b Fj(list\))d(->)g FN(ty)s FO(.)59 b(F)-7 b(unctions,)37 b(lik)n(e)e Fj(hd)p FO(,)j(with)e(man)n(y)e(t)n(yp)r(es)330 1548 y(are)25 b(called)g FE(p)l(olymorphic)p FO(,)k(and)c FH(ML)h FO(uses)f(t)n(yp)r(e)h(v)-5 b(ariables)24 b Fj('a)p FO(,)j Fj('b)p FO(,)f Fj('c)h FO(etc.)e(to)h(represen)n(t)e(their)330 1648 y(t)n(yp)r(es.)p 330 1761 V 328 1939 4 178 v 3143 1847 6 90 v 3149 1847 181 6 v 3201 1823 a Fh(31)380 1826 y Fj(hd;)380 1909 y(>)39 b(val)h(it)g(=)f(fn)h(:)f('a)h(list)g(->)g('a) p 3325 1939 4 178 v 330 1942 2999 4 v 330 2099 a FO(The)34 b FH(ML)h FO(function)f Fj(map)h FO(tak)n(es)e(a)h(function)h FN(f)42 b FO(\(with)35 b(argumen)n(t)e(t)n(yp)r(e)i Fj('a)f FO(and)g(result)g(t)n(yp)r(e)330 2198 y Fj('b)p FO(\),)29 b(and)f(a)g(list)g FN(l)h FO(\(of)g(elemen)n(ts)f(of)g(t)n(yp)r(e)g Fj('a)p FO(\),)h(and)f(returns)f(the)i(list)f(obtained)g(b)n(y)g (applying)330 2298 y FN(f)36 b FO(to)28 b(eac)n(h)f(elemen)n(t)g(of)h FN(l)h FO(\(whic)n(h)f(is)f(a)g(list)h(of)g(elemen)n(ts)f(of)h(t)n(yp)r (e)g Fj('b)p FO(\).)p 330 2416 V 328 3092 4 676 v 3143 2502 6 90 v 3149 2502 181 6 v 3201 2478 a Fh(32)380 2481 y Fj(map;)380 2564 y(>)39 b(val)h(map)g(=)g(fn)f(:)h(\('a)g(->)f('b\))h (->)g('a)g(list)g(->)f('b)h(list)380 2730 y(fun)g(add1)g(\(x:int\))h(=) e(x+1;)380 2813 y(>)g(val)h(add1)g(=)g(fn)f(:)h(int)g(->)g(int)380 2979 y(map)g(add1)g([1,2,3,4,5];)380 3062 y(>)f(val)h(it)g(=)f ([2,3,4,5,6])j(:)e(int)f(list)p 3325 3092 4 676 v 330 3095 2999 4 v 330 3247 a(map)24 b FO(can)f(b)r(e)h(used)g(at)f(an)n(y)g (instance)g(of)h(its)f(t)n(yp)r(e:)35 b(ab)r(o)n(v)n(e,)23 b(b)r(oth)h Fj('a)g FO(and)g Fj('b)g FO(w)n(ere)e(instan)n(tiated)330 3347 y(to)37 b Fj(int)p FO(;)43 b(b)r(elo)n(w,)c Fj('a)f FO(is)f(instan)n(tiated)g(to)g Fj(\(int)j(list\))e FO(and)f Fj('b)h FO(to)f Fj(bool)p FO(.)66 b(Notice)37 b(that)h(the)330 3446 y(instance)27 b(need)h(not)g(b)r(e)g(sp)r(eci\014ed;)g(it)g(is)f (determined)h(b)n(y)f(the)h(t)n(yp)r(e)g(c)n(hec)n(k)n(er.)p 330 3560 V 328 3737 4 178 v 3143 3645 6 90 v 3149 3645 181 6 v 3201 3621 a Fh(33)380 3624 y Fj(map)40 b(null)g([[1,2],)h([],)f ([3],)g([]];)380 3708 y(>)f(val)h(it)g(=)f([false,true,false,true])45 b(:)39 b(bool)h(list)p 3325 3737 4 178 v 330 3741 2999 4 v 330 3892 a FO(A)28 b(useful)g(built-in)g(op)r(erator)e(is)h (function)i(comp)r(osition)e Fj(o)p 330 4006 V 328 4848 4 842 v 3143 4092 6 90 v 3149 4092 181 6 v 3201 4068 a Fh(34)380 4071 y Fj(op)39 b(o;)380 4154 y(>)g(val)h(it)g(=)f(fn)h(:)f (\('a)h(->)g('b\))g(*)f(\('c)h(->)g('a\))g(->)g('c)f(->)h('b)380 4320 y(fun)g(add1)g(n)f(=)h(n+1)380 4403 y(and)g(add2)g(n)f(=)h(n+2;) 380 4486 y(>)f(val)h(add1)g(=)g(fn)f(:)h(int)g(->)g(int)380 4569 y(>)f(val)h(add2)g(=)g(fn)f(:)h(int)g(->)g(int)380 4735 y(\(add1)g(o)g(add2\))g(5;)380 4818 y(>)f(val)h(it)g(=)f(8)h(:)f (int)p 3325 4848 4 842 v 330 4851 2999 4 v 330 5082 a FG(4.12)136 b Fe(fn)p FG(-expressions)330 5280 y FO(The)40 b(expression)e Fj(fn)h FN(x)h Fj(=>)g FN(e)f FO(ev)-5 b(aluates)39 b(to)g(a)g(function)h(with)g(formal)f(parameter)f FN(x)i FO(and)330 5380 y(with)25 b(b)r(o)r(dy)g FN(e)p FO(.)35 b(Th)n(us)24 b(the)h(declaration)e Fj(fun)40 b FN(f)33 b(x)40 b Fj(=)f FN(e)24 b FO(is)h(equiv)-5 b(alen)n(t)24 b(to)g Fj(val)40 b FN(f)48 b Fj(=)39 b(fn)h FN(x)g Fj(=>)f FN(e)p FO(.)330 5479 y(Similarly)25 b Fj(fun)39 b FN(f)9 b Fj(\()p FN(x)p Fj(,)p FN(y)s Fj(\))p FN(z)43 b Fj(=)d FN(e)25 b FO(is)g(equiv)-5 b(alen)n(t)24 b(to)h Fj(val)40 b FN(f)48 b Fj(=)39 b(fn)h(\()p FN(x)p Fj(,)p FN(y)s Fj(\))g(=>)g(fn)g FN(z)i Fj(=>)e FN(e)p FO(.)35 b(In)26 b(the)330 5579 y(theory)19 b(of)g(functions,)j(the)e (sym)n(b)r(ol)f FN(\025)h FO(is)g(used)g(instead)f(of)h Fj(fn)p FO(;)i(expressions)c(lik)n(e)i Fj(fn)39 b FN(x)h Fj(=>)g FN(e)19 b FO(are)330 5679 y(sometimes)30 b(called)f FN(\025)p FO(-expressions,)g(b)r(ecause)h(they)g(corresp)r(ond)e(to)i FN(\025)p FO(-calulus)g(abstractions)330 5778 y FN(\025x:e)e FO(\(see)g(Chapter)f(1\).)p eop %%Page: 56 61 56 60 bop 450 92 a FO(56)1545 b(Chapter)27 b(4.)64 b(A)28 b(Quic)n(k)f(Ov)n(erview)e(of)j(ML)p 450 249 3000 9 v 450 418 2999 4 v 448 845 4 427 v 3263 504 6 90 v 3269 504 181 6 v 3321 480 a Fh(35)500 483 y Fj(fn)39 b(x)h(=>)g(x+1;)500 566 y(>)f(val)h(it)g(=)f(fn)h(:)f(int)h(->)g(int)500 732 y(it)f(3;)500 815 y(>)g(val)h(it)g(=)f(4)h(:)f(int)p 3445 845 4 427 v 450 849 2999 4 v 450 1022 a FO(The)32 b(higher)f(order)g(function)h Fj(map)h FO(applies)e(a)h(function)g(to)g (eac)n(h)f(elemen)n(t)h(of)g(a)g(list)g(in)g(turn)450 1122 y(and)27 b(returns)g(the)h(list)g(of)g(results.)p 450 1241 V 448 2166 4 926 v 3263 1327 6 90 v 3269 1327 181 6 v 3321 1303 a Fh(36)500 1306 y Fj(map)40 b(\(fn)g(x)f(=>)h(x*x\)) g([1,2,3,4];)500 1389 y(>)f(val)h(it)g(=)f([1,4,9,16])j(:)d(int)h(list) 500 1555 y(val)g(doubleup)h(=)e(map)h(\(fn)g(x)f(=>)h(x@x\);)500 1638 y(>)f(val)h(doubleup)h(=)f(fn)f(:)h('a)f(list)i(list)f(->)f('a)h (list)g(list)500 1804 y(doubleup)h([)e([1,2],)i([3,4,5])g(];)500 1887 y(>)e(val)h(it)g(=)f([[1,2,1,2],[3,4,5,3,4,5]])45 b(:)40 b(int)g(list)g(list)500 2053 y(doubleup)h([];)500 2137 y(>)e(val)h(it)g(=)f([])h(:)f('a)h(list)g(list)p 3445 2166 4 926 v 450 2170 2999 4 v 450 2414 a FG(4.13)136 b(Conditionals)450 2615 y FO(ML)26 b(has)f(conditionals)f(with)i(syn)n (tax)f Fj(if)40 b Fg(e)f Fj(then)h Fg(e)2085 2623 y Fx(1)2158 2615 y Fj(else)h Fg(e)2391 2623 y Fx(2)2451 2615 y FO(with)26 b(the)g(exp)r(ected)g(meaning.)450 2715 y(The)i(truth)n(v)-5 b(alues)27 b(are)g Fj(true)h FO(and)g Fj(false)q FO(,)f(b)r(oth)h(of)g (t)n(yp)r(e)g Fj(bool)q FO(.)p 450 2850 V 448 3277 4 427 v 3263 2936 6 90 v 3269 2936 181 6 v 3321 2912 a Fh(37)500 2915 y Fj(if)39 b(true)i(then)f(1)f(else)h(2;)500 2998 y(>)f(val)h(it)g(=)f(1)h(:)f(int)500 3164 y(if)g(2<1)h(then)h(1)e (else)h(2;)500 3247 y(>)f(val)h(it)g(=)f(2)h(:)f(int)p 3445 3277 4 427 v 450 3281 2999 4 v 450 3454 a Fg(e)486 3462 y Fx(1)560 3454 y Fj(orelse)h Fg(e)870 3462 y Fx(2)945 3454 y FO(abbreviates)g Fj(if)g Fg(e)1554 3462 y Fx(1)1627 3454 y Fj(then)g(true)h(else)f Fg(e)2252 3462 y Fx(2)2327 3454 y FO(and)h Fg(e)2538 3462 y Fx(1)2611 3454 y Fj(andalso)g Fg(e)2961 3462 y Fx(2)3037 3454 y FO(abbreviates)450 3554 y Fj(if)f Fg(e)604 3562 y Fx(1)677 3554 y Fj(then)g Fg(e)909 3562 y Fx(2)983 3554 y Fj(else)g(false)q FO(.)450 3857 y FG(4.14)136 b(Recursion)450 4058 y FO(The)28 b(follo)n(wing)e (de\014nes)i(the)g(factorial)e(function:)p 450 4193 V 448 4620 4 427 v 3263 4279 6 90 v 3269 4279 181 6 v 3321 4255 a Fh(38)500 4258 y Fj(fun)40 b(fact)g(n)f(=)h(if)f(n=0)h(then)g(1) g(else)g(n*fact\(n-1\);)500 4341 y(>)f(val)h(fact)g(=)g(fn)f(:)h(int)g (->)f(int)500 4507 y(fact)h(5;)500 4590 y(>)f(val)h(it)g(=)f(120)h(:)g (int)p 3445 4620 4 427 v 450 4623 2999 4 v 450 4797 a FO(Notice)25 b(that)g(the)g(compiler)f(automatically)g(detects)h (recursiv)n(e)e(calls.)35 b(In)25 b(earlier)e(v)n(ersions)g(of)450 4897 y FH(ML)p FO(,)28 b(recursion)e(had)i(to)f(b)r(e)h(explicitly)g (indicated.)450 5013 y(Consider:)p 450 5132 V 448 5808 4 676 v 3263 5218 6 90 v 3269 5218 181 6 v 3321 5194 a Fh(39)500 5197 y Fj(fun)40 b(f)f(n)h(:)f(int)h(=)f(n+1;)500 5280 y(>)g(val)h(f)g(=)f(fn)h(:)f(int)h(->)g(int)500 5446 y(fun)g(f)f(n)h(=)f(if)h(n=0)g(then)g(1)f(else)h(n*f\(n-1\);)500 5529 y(>)f(val)h(f)g(=)f(fn)h(:)f(int)h(->)g(int)500 5695 y(f)f(3;)500 5778 y(>)g(val)h(it)g(=)f(6)h(:)f(int)p 3445 5808 4 676 v 450 5812 2999 4 v eop %%Page: 57 62 57 61 bop 330 92 a FO(4.15.)63 b(Equalit)n(y)27 b(t)n(yp)r(es)2154 b(57)p 330 249 3000 9 v 330 498 a(Here)36 b Fj(f)k(3)c FO(results)g(in)h(the)g(ev)-5 b(aluation)36 b(of)g Fj(3*f\(2\))p FO(.)65 b(In)37 b(earlier)e(v)n(ersions)g(of)h FH(ML)p FO(,)h(the)g(\014rst)330 598 y Fj(f)g FO(w)n(ould)e(ha)n(v)n(e)g(b)r (een)i(used,)i(so)c(that)i Fj(f\(2\))g FO(w)n(ould)f(ha)n(v)n(e)f(ev)-5 b(aluated)36 b(to)g Fj(2+1=3)p FO(,)j(hence)e(the)330 697 y(expression)26 b Fj(f)40 b(3)27 b FO(w)n(ould)h(ha)n(v)n(e)e(ev)-5 b(aluated)27 b(to)h Fj(3*3=9)p FO(.)330 814 y(An)41 b(alternativ)n(e)e (st)n(yle)h(of)h(de\014ning)f(functions)h(in)g(Standard)f(ML)g(that)h (a)n(v)n(oids)e(enforced)330 913 y(recursion)26 b(uses)h Fj(val)i FO(and)e Fj(fn)q FO(.)p 330 1008 2999 4 v 328 1684 4 676 v 3143 1094 6 90 v 3149 1094 181 6 v 3201 1070 a Fh(40)380 1073 y Fj(fun)40 b(f)f(n)h(:)f(int)h(=)f(n+1;)380 1156 y(>)g(val)h(f)g(=)f(fn)h(:)f(int)h(->)g(int)380 1322 y(val)g(f)f(=)h(fn)f(n)h(=>)f(if)h(n=0)g(then)g(1)g(else)g (n*f\(n-1\);)380 1405 y(>)f(val)h(f)g(=)f(fn)h(:)f(int)h(->)g(int)380 1571 y(f)f(3;)380 1654 y(>)g(val)h(it)g(=)f(9)h(:)f(int)p 3325 1684 4 676 v 330 1687 2999 4 v 330 1836 a FO(Here,)27 b(the)h(o)r(ccurrence)f(of)g Fj(f)h FO(in)g Fj(n*f\(n-1\))h FO(is)f(in)n(terpreted)f(as)g(the)h(previous)e(v)n(ersion)g(of)i Fj(f)p FO(.)330 1952 y(The)g(k)n(eyw)n(ord)d Fj(rec)k FO(after)e Fj(val)h FO(can)g(b)r(e)g(used)f(to)h(force)e(a)i(recursiv)n (e)d(in)n(terpretation:)p 330 2063 V 328 2739 4 676 v 3143 2149 6 90 v 3149 2149 181 6 v 3201 2125 a Fh(41)380 2128 y Fj(fun)40 b(f)f(n)h(:)f(int)h(=)f(n)h(+)f(1;)380 2211 y(>)g(val)h(f)g(=)f(fn)h(:)f(int)h(->)g(int)380 2377 y(val)g(rec)g(f)f(=)h(fn)f(n)h(=>)f(if)h(n=0)g(then)g(1)g(else)g (n*f\(n-1\);)380 2460 y(>)f(val)h(f)g(=)f(fn)h(:)f(int)h(->)g(int)380 2626 y(f)f(3;)380 2709 y(>)g(val)h(it)g(=)f(6)h(:)f(int)p 3325 2739 4 676 v 330 2742 2999 4 v 330 2891 a FO(With)28 b Fj(val)40 b(rec)29 b FO(the)f(o)r(ccurrence)e(of)i Fj(f)f FO(in)h Fj(n*f\(n-1\))i FO(is)d(in)n(terpreted)g(recursiv)n(ely) -7 b(.)330 3180 y FG(4.15)136 b(Equalit)l(y)46 b(t)l(yp)t(es)330 3378 y FO(Simple)c(`concrete')e(v)-5 b(alues)41 b(lik)n(e)g(in)n (tegers,)j(b)r(o)r(oleans)c(and)i(strings)e(are)g(easy)h(to)g(test)h (for)330 3478 y(equalit)n(y)-7 b(.)69 b(V)-7 b(alues)38 b(of)h(simple)f(datat)n(yp)r(es,)j(lik)n(e)d(pairs)g(and)g(records,)i (whose)e(comp)r(onen)n(ts)330 3577 y(ha)n(v)n(e)25 b(concrete)g(t)n(yp) r(es)h(are)f(also)g(easy)h(to)g(test)g(for)g(equalit)n(y)-7 b(.)35 b(F)-7 b(or)26 b(example,)g Fj(\()p Fg(v)2845 3585 y Fx(1)2880 3577 y Fj(,)p Fg(v)2956 3585 y Fx(2)2991 3577 y Fj(\))h FO(is)f(equal)330 3677 y(to)k Fj(\()p Fg(v)513 3645 y Fd(0)510 3691 y Fx(1)546 3677 y Fj(,)p Fg(v)625 3645 y Fd(0)622 3691 y Fx(2)657 3677 y Fj(\))h FO(if)g(and)f(only)g(if)h FN(v)1274 3689 y FD(1)1340 3677 y FO(=)c FN(v)1475 3647 y FC(0)1472 3698 y FD(1)1541 3677 y FO(and)j FN(v)1745 3689 y FD(2)1811 3677 y FO(=)d FN(v)1946 3647 y FC(0)1943 3698 y FD(2)1981 3677 y FO(.)46 b(There)30 b(is)g(th)n(us)h(a)f(large)f(class)h(of)g(t)n(yp)r(es)330 3777 y(whoses)38 b(v)-5 b(alues)38 b(can)h(b)r(e)g(tested)g(for)g (equalit)n(y)-7 b(.)70 b(Ho)n(w)n(ev)n(er,)39 b(in)h(general)d(it)i(is) g(undecidable)330 3876 y(to)g(test)h(the)g(equalit)n(y)f(of)g (functions.)73 b(It)40 b(is)f(th)n(us)h(not)f(p)r(ossible)g(to)h(o)n(v) n(erload)c Fj(=)k FO(to)g(w)n(ork)330 3976 y(prop)r(erly)35 b(on)h(all)g(t)n(yp)r(es.)64 b(In)36 b(old)g(v)n(ersions)f(of)h(ML,)h Fj(=)f FO(w)n(as)g(in)n(terpreted)g(on)g(functions)g(b)n(y)330 4076 y(testing)30 b(the)g(equalit)n(y)f(of)h(the)g(addresses)e(in)i (memory)f(of)g(the)h(data-structure)f(represen)n(ting)330 4175 y(the)j(functions.)48 b(If)32 b(suc)n(h)f(a)g(test)h(yielded)g Fj(true)g FO(then)g(the)g(functions)f(w)n(ere)g(certainly)g(equal,)330 4275 y(but)h(man)n(y)f(mathematically)g(\(i.e.)48 b(extensionally\))31 b(equal)g(functions)h(w)n(ere)e(di\013eren)n(t)h(using)330 4374 y(this)d(in)n(terpretation)e(of)i Fj(=)p FO(.)330 4491 y(In)38 b(Standard)f(ML,)g(those)h(t)n(yp)r(es)f(whose)g(v)-5 b(alues)37 b(can)g(b)r(e)h(tested)g(for)f(equalit)n(y)g(are)f(called) 330 4590 y(\\equalit)n(y)i(t)n(yp)r(es")g(and)h(are)f(treated)g(sp)r (ecially)-7 b(.)71 b(Sp)r(ecial)39 b(t)n(yp)r(e)g(v)-5 b(ariables)38 b(that)h(are)f(con-)330 4690 y(strained)29 b(only)f(to)h(range)f(o)n(v)n(er)g(equalit)n(y)g(t)n(yp)r(es)h(are)f (pro)n(vided.)41 b(These)29 b(ha)n(v)n(e)f(the)h(form)g Fj('')p Fg(\013)q FO(,)330 4789 y(whereas)38 b(ordinary)f(t)n(yp)r(e)j (v)-5 b(ariables)38 b(ha)n(v)n(e)g(the)h(form)g Fj(')p Fg(\013)q FO(.)71 b(The)40 b(built-in)f(function)h Fj(=)g FO(has)330 4889 y(t)n(yp)r(e)c Fj(''a)k(*)f(''a)h(->)g(bool)q FO(.)61 b(Starting)35 b(from)g(this,)j(the)e(ML)f(t)n(yp)r(ec)n(hec)n (k)n(er)f(can)i(infer)f(t)n(yp)r(es)330 4989 y(con)n(taining)27 b(equalit)n(y)g(t)n(yp)r(e)g(v)-5 b(ariables.)p 330 5100 V 328 5526 4 427 v 3143 5185 6 90 v 3149 5185 181 6 v 3201 5161 a Fh(42)380 5164 y Fj(fun)40 b(Eq)f(x)h(y)f(=)h(\(x)f(=)h (y\);)380 5247 y(>)f(val)h(Eq)g(=)f(fn)h(:)f(''a)h(->)g(''a)g(->)g (bool)380 5414 y(fun)g(EqualHd)h(l1)e(l2)h(=)f(\(hd)h(l1)g(=)f(hd)h (l2\);)380 5497 y(>)f(val)h(EqualHd)h(=)e(fn)h(:)g(''a)g(list)g(->)f (''a)h(list)g(->)g(bool)p 3325 5526 4 427 v 330 5530 2999 4 v 330 5679 a FO(T)-7 b(rying)34 b(to)g(instan)n(tiate)h(an)f (equalit)n(y)g(t)n(yp)r(e)h(v)-5 b(ariable)34 b(to)g(a)h(functional)f (t)n(yp)r(e)h(results)f(in)h(an)330 5778 y(error.)g(In)28 b FH(SML/NJ)p FO(:)p eop %%Page: 58 63 58 62 bop 450 92 a FO(58)1545 b(Chapter)27 b(4.)64 b(A)28 b(Quic)n(k)f(Ov)n(erview)e(of)j(ML)p 450 249 3000 9 v 450 418 2999 4 v 448 1509 4 1092 v 3263 504 6 90 v 3269 504 181 6 v 3321 480 a Fh(43)500 483 y Fj(hd)39 b(=)h(hd;)500 566 y(>)f(Error:)i(operator)g(and)f(operand)h(don't)f(agree)g (\(equality)i(type)e(required\))500 649 y(>)118 b(operator)41 b(domain:)g(''Z)e(*)h(''Z)500 732 y(>)118 b(operand:)355 b(\('Y)39 b(list)i(->)e('Y\))h(*)g(\('X)g(list)g(->)f('X\))500 815 y(>)118 b(in)39 b(expression:)500 898 y(>)196 b(=)40 b(\(hd,hd\))500 1064 y(EqualHd)h([hd])f([hd];)500 1148 y(>)f(Error:)i(operator)g(and)f(operand)h(don't)f(agree)g(\(tycon)h (mismatch\))500 1231 y(>)118 b(operator)41 b(domain:)g('Z)e(*)h('Z)500 1314 y(>)118 b(operand:)355 b(''Y)39 b(list)i(->)e(''Y)h(list)g(->)g (bool)500 1397 y(>)118 b(in)39 b(expression:)500 1480 y(>)196 b(-)40 b(:)f(overloaded)j(EqualHd)p 3445 1509 4 1092 v 450 1513 2999 4 v 450 1684 a FO(The)27 b(use)g(of)g(equalit)n (y)g(t)n(yp)r(es)g(in)g(Standard)g(ML)g(is)g(considered)f(con)n(tro)n (v)n(ersial:)34 b(some)26 b(p)r(eople)450 1784 y(think)36 b(they)f(are)g(to)r(o)g(messy)f(for)h(the)h(b)r(ene\014t)g(they)f(pro)n (vide.)59 b(It)36 b(is)f(p)r(ossible)g(that)h(future)450 1884 y(v)n(ersions)26 b(of)h(ML)h(will)g(drop)f(equalit)n(y)g(t)n(yp)r (es.)450 2184 y FG(4.16)136 b(P)l(attern)46 b(matc)l(hing)450 2384 y FO(F)-7 b(unctions)27 b(can)g(b)r(e)h(de\014ned)f(b)n(y)g (pattern)g(matc)n(hing.)37 b(F)-7 b(or)26 b(example)h(here)g(is)g (another)f(de\014ni-)450 2483 y(tion)i(of)f(the)h(factorial)f (function.)p 450 2601 V 448 2861 4 261 v 3263 2686 6 90 v 3269 2686 181 6 v 3321 2663 a Fh(44)500 2666 y Fj(fun)40 b(fact)g(0)f(=)h(1)539 2749 y(|)79 b(fact)40 b(n)f(=)h(n)f(*)h (\(fact\(n-1\)\);)500 2832 y(>)f(val)h(fact)g(=)g(fn)f(:)h(int)g(->)f (int)p 3445 2861 4 261 v 450 2865 2999 4 v 450 3036 a FO(Here)27 b(is)h(the)g(Fib)r(onacci)f(function:)p 450 3154 V 448 3498 4 344 v 3263 3240 6 90 v 3269 3240 181 6 v 3321 3216 a Fh(45)500 3219 y Fj(fun)40 b(fib)g(0)f(=)h(0)539 3302 y(|)79 b(fib)40 b(1)f(=)h(1)539 3385 y(|)79 b(fib)40 b(n)f(=)h(fib\(n-1\))h(+)e(fib\(n-2\);)500 3468 y(>)g(val)h(fib)g(=)g (fn)f(:)h(int)g(->)f(int)p 3445 3498 4 344 v 450 3501 2999 4 v 450 3673 a FO(Supp)r(ose)28 b(function)g FN(f)36 b FO(is)28 b(de\014ned)g(b)n(y:)p 450 3806 V 448 4215 4 410 v 3263 3892 6 90 v 3269 3892 181 6 v 3321 3868 a Fh(46)500 3871 y Fj(fun)40 b Fg(f)47 b(p)780 3879 y Fx(1)875 3871 y FH(=)60 b Fg(e)1031 3879 y Fx(1)539 3954 y Fj(|)79 b Fg(f)47 b(p)780 3962 y Fx(2)875 3954 y FH(=)60 b Fg(e)1031 3962 y Fx(2)657 4036 y Fj(.)657 4069 y(.)657 4103 y(.)539 4186 y(|)79 b Fg(f)47 b(p)780 4194 y Ff(n)883 4186 y FH(=)60 b Fg(e)1039 4194 y Ff(n)p 3445 4215 4 410 v 450 4219 2999 4 v 450 4390 a FO(An)36 b(expression)f FN(f)44 b(e)35 b FO(is)h(ev)-5 b(aluated)36 b(b)n(y)f(successiv)n(ely)f (matc)n(hing)h(the)i(v)-5 b(alue)35 b(of)h FN(e)f FO(with)i(the)450 4490 y(patterns)23 b FN(p)816 4502 y FD(1)853 4490 y FO(,)i FN(p)943 4502 y FD(2)980 4490 y FO(,)g FN(:)14 b(:)g(:)p FO(,)24 b FN(p)1214 4502 y Fu(n)1283 4490 y FO(\(in)h(that)f(order\))f(un)n(til)h(a)f(matc)n(h)h(is)g(found,)h(sa)n (y)d(with)j FN(p)3036 4502 y Fu(i)3063 4490 y FO(.)36 b(Then)24 b(the)450 4590 y(v)-5 b(alue)29 b(of)h FN(f)38 b(e)29 b FO(is)g(the)h(v)-5 b(alue)29 b(of)g FN(e)1491 4602 y Fu(i)1518 4590 y FO(.)43 b(During)29 b(the)h(matc)n(h)f(v)-5 b(ariables)28 b(in)h(the)h(patterns)f(ma)n(y)g(b)r(e)450 4689 y(b)r(ound)h(to)g(comp)r(onen)n(ts)f(of)h FN(e)p FO('s)g(v)-5 b(alue)29 b(and)h(then)h(the)f(v)-5 b(ariables)28 b(ha)n(v)n(e)h(these)h(v)-5 b(alues)30 b(during)450 4789 y(the)f(ev)-5 b(aluation)28 b(of)h FN(e)1129 4801 y Fu(i)1156 4789 y FO(.)41 b(F)-7 b(or)28 b(example,)g(ev)-5 b(aluation)28 b Fj(fib)40 b(8)29 b FO(causes)f Fj(8)h FO(to)g(b)r(e)g(matc)n(hed)g (with)g Fj(0)450 4889 y FO(then)34 b Fj(1)p FO(,)h(b)r(oth)e(of)g(whic) n(h)g(fail,)i(and)e(then)h(with)f Fg(n)h FO(whic)n(h)f(succeeds,)h (binding)g Fg(n)f FO(to)g Fj(8)p FO(.)54 b(The)450 4988 y(result)31 b(is)g(then)g(the)h(v)-5 b(alue)30 b(of)h Fj(fib\(8-1\))41 b(+)f(fib\(8-2\))33 b FO(whic)n(h)e(\(after)g(some)f (recursiv)n(e)f(calls\),)450 5088 y(ev)-5 b(aluates)27 b(to)g Fj(21)q FO(.)p 450 5205 V 448 5383 4 178 v 3263 5291 6 90 v 3269 5291 181 6 v 3321 5267 a Fh(47)500 5270 y Fj(fib)40 b(8;)500 5353 y(>)f(val)h(it)g(=)f(21)h(:)f(int)p 3445 5383 4 178 v 450 5386 2999 4 v 450 5562 a FO(P)n(atterns)23 b(can)g(b)r(e)i(quite)f(elab)r(orate)f(and)g(are)g(t)n(ypically)h(comp) r(osed)f(with)i(`constructors')d(\(see)450 5662 y(Section)28 b(4.19)e(b)r(elo)n(w\).)450 5778 y(The)i(patterns)f(in)h(a)f(function)h (de\014nition)g(need)g(not)f(b)r(e)h(exhaustiv)n(e.)36 b(In)28 b FH(SML/NJ)p FO(;)p eop %%Page: 59 64 59 63 bop 330 92 a FO(4.16.)63 b(P)n(attern)27 b(matc)n(hing)2043 b(59)p 330 249 3000 9 v 330 418 2999 4 v 328 845 4 427 v 3143 504 6 90 v 3149 504 181 6 v 3201 480 a Fh(48)380 483 y Fj(-)39 b(fun)h(foo)g(0)g(=)f(0;)380 566 y(std_in:33.1-33.13)k (Warning:)e(match)f(nonexhaustive)772 649 y(0)g(=>)f(...)380 815 y(val)h(foo)g(=)f(fn)h(:)f(int)h(->)g(int)p 3325 845 4 427 v 330 849 2999 4 v 330 1046 a FO(In)28 b(Edin)n(burgh)e FH(ML)p FO(:)p 330 1205 V 328 1465 4 261 v 3143 1290 6 90 v 3149 1290 181 6 v 3201 1266 a Fh(49)380 1270 y Fj(-)39 b(fun)h(foo)g(0)g(=)f(0;)380 1353 y(***Warning:)81 b(Patterns)41 b(in)f(Match)g(not)g(exhaustive:)81 b(0=>0)380 1436 y(>)39 b(val)h(foo)g(=)g(Fn)f(:)h(int)g(->)f(int)p 3325 1465 4 261 v 330 1469 2999 4 v 330 1666 a FO(If)28 b(a)g(function)g(is)g(de\014ned)g(with)g(a)g(non-exhaustiv)n(e)e(matc)n (h,)i(and)f(then)i(applied)e(to)h(an)g(argu-)330 1765 y(men)n(t)d(whose)f(v)-5 b(alue)25 b(do)r(esn't)g(matc)n(h)g(an)n(y)f (pattern)h(a)f(sp)r(ecial)h(kind)g(of)g(run-time)g(error)d(called)330 1865 y(an)27 b(exception)h(results)f(\(see)g(Section)h(4.18\).)330 1981 y(In)g FH(SML/NJ)p FO(:)p 330 2143 V 328 2570 4 427 v 3143 2229 6 90 v 3149 2229 181 6 v 3201 2205 a Fh(50)380 2208 y Fj(-)39 b(foo)h(0;)380 2291 y(val)g(it)f(=)h(0)f(:)h (int)380 2374 y(-)f(foo)h(1;)380 2540 y(uncaught)h(Match)f(exception)i (std_in:33.1-33.13)p 3325 2570 4 427 v 330 2573 2999 4 v 330 2770 a FO(In)28 b(Edin)n(burgh)e FH(ML)p FO(:)p 330 2929 V 328 3356 4 427 v 3143 3015 6 90 v 3149 3015 181 6 v 3201 2991 a Fh(51)380 2994 y Fj(-)39 b(foo)h(1;)380 3077 y(Exception)h(raised)g(at)e(top)h(level)380 3160 y(Warning:)h(optimisations)h(enabled)f(-)733 3243 y(some)f(functions)h (may)f(be)g(missing)h(from)f(the)g(trace)380 3326 y(Exception:)h(Match) 80 b(raised)p 3325 3356 4 427 v 330 3359 2999 4 v 330 3556 a FO(Messages)28 b(w)n(arning)g(that)i(a)f(matc)n(h)g(is)h (non-exhaustiv)n(e)e(will)h(sometimes)h(b)r(e)f(omitted)h(from)330 3656 y(the)e(output)g(sho)n(wn)f(here.)330 3772 y(The)h(built-in)g (list-pro)r(cessing)e(functions)i Fj(hd)g FO(and)f Fj(tl)h FO(can)g(b)r(e)g(de\014ned)g(b)n(y:)p 330 3931 V 328 4524 4 593 v 3143 4017 6 90 v 3149 4017 181 6 v 3201 3993 a Fh(52)380 3996 y Fj(fun)40 b(hd\(x::l\))h(=)e(x;)380 4079 y(>)g(Warning:)i(match)g(nonexhaustive)380 4162 y(>)e(val)h(hd)g(=)f(fn)h(:)f('a)h(list)g(->)g('a)380 4328 y(fun)g(tl\(x::l\))h(=)e(l;)380 4411 y(>)g(Warning:)i(match)g (nonexhaustive)380 4494 y(>)e(val)h(tl)g(=)f(fn)h(:)f('a)h(list)g(->)g ('a)g(list)p 3325 4524 4 593 v 330 4527 2999 4 v 330 4724 a FO(These)19 b(de\014nitions)h(giv)n(e)f(exactly)g(the)h(same)f (results)g(as)g(the)h(built-in)h(functions)f(except)f(on)h(the)330 4824 y(empt)n(y)28 b(list)g Fj([])p FO(,)g(where)f(they)h(di\013er)g (in)g(the)g(exceptions)f(raised)f({)i(exceptions)f(are)f(describ)r(ed) 330 4924 y(in)i(Section)f(4.18.)330 5040 y(if)f FN(x)h FO(is)e(a)h(v)-5 b(ariable)25 b(and)g FN(p)h FO(a)f(pattern,)h(then)h (the)f(pattern)f FN(x)i Fj(as)f FN(p)g FO(is)g(a)f(pattern)h(that)g (matc)n(hes)330 5139 y(the)h(same)f(things)h(as)e FN(p)p FO(,)i(but)g(has)f(the)h(additional)f(e\013ect)h(that)g(when)g(a)f (matc)n(h)h(succeeds)f(the)330 5239 y(v)-5 b(alue)27 b(matc)n(hed)h(is)f(b)r(ound)h(to)g FN(x)p FO(.)37 b(Consider)27 b(the)h(function)g Fj(RemoveDuplicates)t FO(:)330 5355 y(The)g(wildcard)f(\\)p Fj(_)o FO(")h(matc)n(hes)f(an)n(ything:)p 330 5514 V 328 5775 4 261 v 3143 5600 6 90 v 3149 5600 181 6 v 3201 5576 a Fh(53)380 5579 y Fj(fun)40 b(null)g([])g(=)f(true) 419 5662 y(|)79 b(null)40 b(_)79 b(=)39 b(false;)380 5745 y(>)g(val)h(null)g(=)g(fn)f(:)h('a)g(list)g(->)f(bool)p 3325 5775 4 261 v 330 5778 2999 4 v eop %%Page: 60 65 60 64 bop 450 92 a FO(60)1545 b(Chapter)27 b(4.)64 b(A)28 b(Quic)n(k)f(Ov)n(erview)e(of)j(ML)p 450 249 3000 9 v 450 418 2999 4 v 448 1260 4 842 v 3263 504 6 90 v 3269 504 181 6 v 3321 480 a Fh(54)500 483 y Fj(fun)40 b(RemoveDuplicates[]) 396 b(=)40 b([])539 566 y(|)79 b(RemoveDuplicates[x])357 b(=)40 b([x])539 649 y(|)79 b(RemoveDuplicates\(x1::x2::l\))45 b(=)696 732 y(if)40 b(x1=x2)g(then)g(RemoveDuplicates\(x2::l\))1049 815 y(else)g(x1::RemoveDuplicates\(x2::l\);)500 981 y(>val)g (RemoveDuplicates)j(=)c(fn)h(:)f(''a)h(list)g(->)g(''a)g(list)500 1148 y(RemoveDuplicates[1,1,1,2,3,4,5)q(,5,5)q(,5,5,)q(6,7,)q(8,8,)q (8];)500 1231 y(>)f(val)h(it)g(=)f([1,2,3,4,5,6,7,8])k(:)d(int)g(list)p 3445 1260 4 842 v 450 1264 2999 4 v 450 1415 a FO(The)28 b(rep)r(etition)f(\(and)h(extra)f(list)h(conses\))f(of)g Fj(x2::l)i FO(can)e(b)r(e)h(a)n(v)n(oided)e(as)h(follo)n(ws:)p 450 1528 V 448 1872 4 344 v 3263 1614 6 90 v 3269 1614 181 6 v 3321 1590 a Fh(55)500 1593 y Fj(fun)40 b(RemoveDuplicates[])671 b(=)39 b([])539 1676 y(|)79 b(RemoveDuplicates\(l)43 b(as)d([x]\))354 b(=)39 b(l)539 1759 y(|)79 b (RemoveDuplicates\(x1::\(l)44 b(as)c(x2::_\)\))h(=)696 1842 y(if)f(x1=x2)g(then)g(RemoveDuplicates)j(l)c(else)i (x1::RemoveDuplicates)i(l;)p 3445 1872 4 344 v 450 1875 2999 4 v 450 2026 a FO(Inciden)n(tly)-7 b(,)28 b(note)f(that)h (\(alas\))f(duplicate)h(v)-5 b(ariables)26 b(are)h(not)h(allo)n(w)n(ed) e(in)i(patterns:)p 450 2139 V 448 2566 4 427 v 3263 2225 6 90 v 3269 2225 181 6 v 3321 2201 a Fh(56)500 2204 y Fj(fun)40 b(RemoveDuplicates[])592 b(=)40 b([])539 2287 y(|)79 b(RemoveDuplicates\(l)43 b(as)d([x]\))275 b(=)40 b(l)539 2370 y(|)79 b(RemoveDuplicates\(x::\(l)44 b(as)c(x::_\)\))g(=)g (RemoveDuplicates)j(l)539 2453 y(|)79 b(RemoveDuplicates\(x::l\))436 b(=)40 b(x::RemoveDuplicates)j(l;)500 2536 y(>)c(Error:)i(duplicate)g (variable)g(in)f(pattern\(s\):)i(x)p 3445 2566 4 427 v 450 2569 2999 4 v 450 2720 a FO(Anon)n(ymous)35 b(functions)g(\()p Fj(fn)q FO(-expressions\))f(can)h(b)r(e)g(de\014ned)h(b)n(y)f(pattern)h (matc)n(hing)e(using)450 2820 y(the)28 b(syn)n(tax:)36 b Fj(fn)k FN(p)1051 2832 y FD(1)1127 2820 y Fj(=>)g FN(e)1284 2832 y FD(1)1360 2820 y Fj(|)f FN(:)14 b(:)g(:)39 b Fj(|)h FN(p)1695 2832 y Fu(n)1779 2820 y Fj(=>)g FN(e)1936 2832 y Fu(n)p 450 2928 V 448 3355 4 427 v 3263 3014 6 90 v 3269 3014 181 6 v 3321 2990 a Fh(57)500 2993 y Fj(fn)f([])h(=>)g ("none")g(|)g([_])g(=>)f("one")i(|)e([_,_])i(=>)e("two")i(|)e(_)h(=>)f ("many";)500 3076 y(>)g(val)h(it)g(=)f(fn)h(:)f('a)h(list)g(->)g (string)500 3242 y(\(it)g([],)g(it[true],)h(it[1,2],)g(it[1,2,3]\);)500 3325 y(>)e(val)h(it)g(=)f(\("none","one","two","many"\))46 b(:)39 b(string)i(*)e(string)i(*)e(string)i(*)e(string)p 3445 3355 4 427 v 450 3358 2999 4 v 450 3505 a FO(P)n(atterns)26 b(can)h(b)r(e)h(constructed)g(out)f(of)h(records,)e(with)i(\\)p Fj(...)p FO(")f(as)g(a)g(wildcard.)p 450 3613 V 448 4123 4 510 v 3263 3699 6 90 v 3269 3699 181 6 v 3321 3675 a Fh(58)500 3678 y Fj(fun)40 b(IsMale\({sex="male",...}:person)q (data\))46 b(=)39 b(true)539 3761 y(|)79 b(IsMale)40 b(_)g(=)f(false;)500 3844 y(>)g(val)h(IsMale)h(=)e(fn)h(:)f(persondata) j(->)e(bool)500 4010 y(IsMale)g(MikeData;)500 4093 y(>)f(val)h(it)g(=)f (true)h(:)g(bool)p 3445 4123 4 510 v 450 4126 2999 4 v 450 4273 a FO(An)28 b(alternativ)n(e)e(de\014nition)i(is:)p 450 4382 V 448 4482 4 100 v 3263 4473 6 90 v 3269 4473 181 6 v 3321 4449 a Fh(59)500 4452 y Fj(fun)40 b (IsMale\({sex=x,...}:persondata\))46 b(=)39 b(\(x)h(=)f("male"\);)p 3445 4482 4 100 v 450 4485 2999 4 v 450 4633 a FO(A)28 b(more)f(compact)g(form)g(of)h(this)g(is)f(allo)n(w)n(ed.)p 450 4742 V 448 4842 4 100 v 3263 4833 6 90 v 3269 4833 181 6 v 3321 4809 a Fh(60)500 4812 y Fj(fun)40 b (IsMale\({sex,...}:persondata\))45 b(=)40 b(\(sex)g(=)f("male"\);)p 3445 4842 4 100 v 450 4845 2999 4 v 450 4993 a FO(The)29 b(\014eld)h(name)f Fj(sex)h FO(doubles)f(as)f(a)h(v)-5 b(ariable.)41 b(Think)29 b(of)g(a)g(pattern)g Fj({)p Fc(\001)13 b(\001)g(\001)q Fj(,v,)p Fc(\001)h(\001)f(\001)p Fj(})30 b FO(as)e(abbre-)450 5093 y(viating)f Fj({)p Fc(\001)13 b(\001)h(\001)p Fj(,v=v,)p Fc(\001)g(\001)f(\001)q Fj(})p FO(.)450 5381 y FG(4.17)136 b(The)44 b Fe(case)f FG(construct)450 5579 y FO(The)23 b(case)f(construct)g(p)r(ermits)h (one)g(to)f(compute)h(b)n(y)g(cases)f(on)g(an)h(expression)e(of)i(a)f (datat)n(yp)r(e.)450 5679 y(The)k(expression)d Fj(case)41 b FN(e)d Fj(of)i FN(p)1450 5691 y FD(1)1526 5679 y Fj(=>)g FN(e)1683 5691 y FD(1)1759 5679 y Fj(|)g FN(:)14 b(:)g(:)39 b Fj(|)g FN(p)2094 5691 y Fu(n)2178 5679 y Fj(=>)h FN(e)2335 5691 y Fu(n)2380 5679 y FO(,)26 b(is)f(an)g(equiv)-5 b(alen)n(t)26 b(form)f(for)g(the)450 5778 y(application)i Fj(\(fn)40 b FN(p)1078 5790 y FD(1)1154 5778 y Fj(=>)g FN(e)1311 5790 y FD(1)1387 5778 y Fj(|)f FN(:)14 b(:)g(:)39 b Fj(|)h FN(p)1722 5790 y Fu(n)1806 5778 y Fj(=>)g FN(e)1963 5790 y Fu(n)2008 5778 y Fj(\))f FN(e)p FO(.)p eop %%Page: 61 66 61 65 bop 330 92 a FO(4.18.)63 b(Exceptions)2285 b(61)p 330 249 3000 9 v 330 498 a FG(4.18)136 b(Exceptions)330 701 y FO(Some)26 b(standard)f(functions)h FE(r)l(aise)j(exc)l(eptions) 34 b FO(at)25 b(run-time)h(on)g(certain)f(argumen)n(ts.)36 b(When)330 801 y(this)20 b(happ)r(ens)h(a)e(sp)r(ecial)h(kind)h(of)f(v) -5 b(alue)20 b(\(called)g(an)g(exception)f(pac)n(k)n(et\))h(is)g (propagated)e(whic)n(h)330 900 y(iden)n(ti\014es)j(the)g(cause)f(of)h (the)g(exception.)34 b(These)21 b(pac)n(k)n(ets)e(ha)n(v)n(e)h(names)g (whic)n(h)h(usually)f(re\015ect)330 1000 y(the)28 b(function)g(that)g (raised)f(the)h(exception;)f(they)h(ma)n(y)f(also)f(con)n(tain)h(v)-5 b(alues.)p 330 1142 2999 4 v 328 1818 4 676 v 3143 1228 6 90 v 3149 1228 181 6 v 3201 1204 a Fh(61)380 1207 y Fj(hd\(tl[2]\);)380 1290 y(>)39 b(uncaught)i(exception)h(Hd)380 1456 y(1)d(div)h(0;)380 1539 y(>)f(uncaught)i(exception)h(Div)380 1705 y(\(1)d(div)h(0\)+1000;)380 1788 y(>)f(uncaught)i(exception)h(Div) p 3325 1818 4 676 v 330 1822 2999 4 v 330 2002 a FO(Exceptions)c(m)n (ust)h(b)r(e)h(declared)e(using)h(the)g(k)n(eyw)n(ord)f Fj(exception)p FO(;)47 b(they)39 b(ha)n(v)n(e)f(t)n(yp)r(e)h Fj(exn)p FO(.)330 2102 y(Exceptions)24 b(can)h(b)r(e)h(explicitly)g (raised)e(b)n(y)h(ev)-5 b(aluating)25 b(an)g(expression)f(of)h(the)h (form)f Fj(raise)40 b FN(e)330 2201 y FO(where)26 b FN(e)h FO(ev)-5 b(aluates)26 b(to)h(an)f(exception)h(v)-5 b(alue.)36 b(Exceptions)26 b(are)g(prin)n(ted)h(sligh)n(tly)f(di\013eren)n(tly)330 2301 y(in)i FH(SML/NJ)g FO(and)f(Edin)n(burgh)g FH(ML)p FO(.)h(In)g FH(SML/NJ)p FO(:)p 330 2446 V 328 3205 4 759 v 3143 2532 6 90 v 3149 2532 181 6 v 3201 2508 a Fh(62)380 2511 y Fj(-)39 b(exception)j(Ex1;exception)g(Ex2;)380 2594 y(exception)f(Ex1)380 2677 y(exception)g(Ex2)380 2843 y(-)e([Ex1,Ex2];)380 2926 y(val)h(it)f(=)h([Ex1\(-\),Ex2\(-\)])j (:)c(exn)h(list)380 3092 y(-)f(raise)i(hd)e(it;)380 3175 y(uncaught)i(exception)g(Ex1)p 3325 3205 4 759 v 330 3208 2999 4 v 330 3389 a FO(In)28 b(Edin)n(burgh)e FH(ML)p FO(:)p 330 3532 V 328 4706 4 1175 v 3143 3617 6 90 v 3149 3617 181 6 v 3201 3593 a Fh(63)380 3597 y Fj(exception)41 b(Ex1;exception)h(Ex2;)380 3680 y(>)d(type)h(exn)458 3763 y(con)g(Ex1)g(=)g(-)f(:)g(exn)380 3846 y(>)g(type)h(exn)458 3929 y(con)g(Ex2)g(=)g(-)f(:)g(exn)380 4095 y(-)g([Ex1,Ex2];)380 4178 y(>)g([-,-])i(:)e(exn)h(list)380 4344 y(-)f(raise)i(hd)e(it;)380 4427 y(Exception)i(raised)g(at)e(top)h(level)380 4510 y(Warning:)h(optimisations)h(enabled)f(-)733 4593 y(some)f(functions)h (may)f(be)g(missing)h(from)f(the)g(trace)380 4676 y(Exception:)h(Ex1)79 b(raised)p 3325 4706 4 1175 v 330 4709 2999 4 v 330 4890 a FO(An)36 b(exception)g(pac)n(k)n(et)f(constructor)f(called)i F