document DECIDE
[screamer.git] / screamer.ps
blobbf81ed8252b558e3ca0ce6ecdf065e6433b84209
1 %!PS-Adobe-2.0
2 %%Creator: dvipsk 5.521a Copyright 1986, 1993 Radical Eye Software
3 %%Title: screamer.dvi
4 %%Pages: 50
5 %%PageOrder: Ascend
6 %%BoundingBox: 0 0 612 792
7 %%EndComments
8 %DVIPSCommandLine: dvips screamer
9 %DVIPSSource:  TeX output 1994.03.10:2311
10 %%BeginProcSet: tex.pro
11 /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
12 /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
13 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
14 ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
15 isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
16 hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
17 TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
18 round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
19 statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
20 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
21 begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
22 array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
23 setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
24 FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
25 pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
26 B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
27 length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
28 /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
29 /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
30 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
31 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
32 ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
33 ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
34 ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
35 /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
36 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
37 }B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
38 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
39 .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
40 userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
41 known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
42 /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
43 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
44 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
45 {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
46 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
47 ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
48 false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
49 scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
50 transform round exch round exch itransform moveto rulex 0 rlineto 0
51 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
52 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
53 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{
54 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
55 -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{
56 3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
57 %%EndProcSet
58 %%BeginProcSet: spline.ps
59 /@ChaikinSplineSectionDict 20 dict def
60 /@ChaikinSplineSectionShow {
61 @ChaikinSplineSectionDict begin
62 /y4 exch def /x4 exch def
63 /y3 exch def /x3 exch def
64 /y2 exch def /x2 exch def
65 /y1 exch def /x1 exch def
66 /xm x2 x3 add 2 div def
67 /ym y2 y3 add 2 div def
68 x1 xm sub abs 3 lt
69 y1 ym sub abs 3 lt
70 and
71 { x1 y1 moveto xm ym lineto stroke }
73 xm ym x1 y1 x2 y2 x3 y3 x4 y4
74 x1 y1
75 x1 x2 add 2 div y1 y2 add 2 div
76 x2 3 mul x3 add 4 div y2 3 mul y3 add 4 div
77 xm ym
78 @ChaikinSplineSectionShow
79 /y4 exch def /x4 exch def
80 /y3 exch def /x3 exch def
81 /y2 exch def /x2 exch def
82 /y1 exch def /x1 exch def
83 /ym exch def /xm exch def
84 } ifelse
85 xm x4 sub abs 3 lt
86 ym y4 sub abs 3 lt
87 and
88 { xm ym moveto x4 y4 lineto stroke }
89 {   xm ym
90 x2 x3 3 mul add 4 div y2 y3 3 mul add 4 div
91 x3 x4 add 2 div y3 y4 add 2 div
92 x4 y4
93 @ChaikinSplineSectionShow
94 } ifelse
95 end
96 } def
97 /@ChaikinSplineDict 22 dict def
98 /@ChaikinSplineDraw {
99 @ChaikinSplineDict begin
100 /n exch def
101 n 2 mul -2 roll
102 /y1 exch def
103 /x1 exch def
104 /n n 1 sub def
105 n 2 mul -2 roll
106 /y2 exch def
107 /x2 exch def
108 /n n 1 sub def
109 /cx1 x1 x2 add 2 div def
110 /cy1 y1 y2 add 2 div def
111 /cx2 x1 3 x2 mul add 4 div def
112 /cy2 y1 3 y2 mul add 4 div def
113 newpath x1 y1 moveto cx1 cy1 lineto
115 n 0 eq {exit} if
116 /x1 x2 def /y1 y2 def
117 n 2 mul -2 roll
118 /y2 exch def
119 /x2 exch def
120 /n n 1 sub def
121 /cx3 3 x1 mul x2 add 4 div def
122 /cy3 3 y1 mul y2 add 4 div def
123 /cx4 x1 x2 add 2 div def
124 /cy4 y1 y2 add 2 div def
125 cx1 cy1 cx2 cy2 cx3 cy3 cx4 cy4 @ChaikinSplineSectionShow
126 /cx1 cx4 def
127 /cy1 cy4 def
128 /cx2 x1 3 x2 mul add 4 div def
129 /cy2 y1 3 y2 mul add 4 div def
130 } loop
131 cx1 cy1 moveto x2 y2 lineto stroke
133 } def
134 %%EndProcSet
135 %%BeginProcSet: ellipse.ps
136 /@ellipsedict 8 dict def
137 @ellipsedict /mtrx matrix put
138 /@ellipse
140 @ellipsedict begin
141 /endangle exch def      /startangle exch def
142 /yrad exch def  /xrad exch def
143 /y exch def             /x exch def
144 /savematrix mtrx currentmatrix def
145 x y translate
146 xrad yrad scale
147 0 0 1 startangle endangle arc
148 savematrix setmatrix
150 } def
151 %%EndProcSet
152 TeXDict begin 40258431 52099146 1000 300 300 (screamer.dvi)
153 @start /Fa 2 117 df<1E0006000C000C000C000C00180019E01E301830383030303030
154 30306060606460C460C8C0C8C0700E147D9312>104 D<04000C000C000C001800FF8018
155 001800300030003000300060006100610062006400380009127D910C>116
156 D E /Fb 13 120 df<00038000000380000007C0000007C0000007C000000FE000000FE0
157 00001FF000001BF000003BF8000031F8000031F8000060FC000060FC0000E0FE0000C07E
158 0000C07E0001803F0001FFFF0003FFFF8003001F8007001FC006000FC006000FC00C0007
159 E00C0007E0FF803FFEFF803FFE1F1C7E9B24>65 D<03FC000E0E001C1F003C1F00781F00
160 780E00F80000F80000F80000F80000F80000F800007800007801803C01801C03000E0E00
161 03F80011127E9115>99 D<000FF0000FF00001F00001F00001F00001F00001F00001F000
162 01F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F8
163 01F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<03FC00
164 0F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F80000780000
165 7800603C00601E00C00F038001FC0013127F9116>I<03F0F00E1F383C0F383807307807
166 807807807807807807803807003C0F001E1C0033F0003000003000003000003FFF003FFF
167 C01FFFE01FFFF07801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118
168 >103 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00
169 001F03FC1F03FC1F01C01F03001F0E001F1C001F38001F78001FFC001FBE001F1F001F0F
170 001F0F801F07C01F03E01F01E0FFE7FEFFE7FE171D7F9C19>107
171 D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
172 001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E>I<FF0FC07E00FF
173 31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C01F00F807C01F00
174 F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F8
175 07C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80F81F80F81F00
176 F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7
177 FF18127F911B>I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F8
178 00F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<1FD830
179 786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E
180 9113>115 D<0300030003000300070007000F000F003FFCFFFC1F001F001F001F001F00
181 1F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>I<FF8FF8FEFF8FF8
182 FE1F03E0301F03E0301F03E0300F87F0600F86F0600FC6F8E007CC78C007CC78C003FC7D
183 8003F83D8003F83F8001F01F0001F01F0000F01E0000E00E0000E00E001F127F9122>
184 119 D E /Fc 1 111 df<73809C40986030C030C030C03188619060E00D097D8812>110
185 D E /Fd 6 111 df<18F818181818181818181818FF080D7D8C0E>49
186 D<3E00418080C0C0C000C000C0018003000400084030407F80FF800A0D7E8C0E>I<3E00
187 41006180018003001E00018000C000C0C0C0C0C041803E000A0D7E8C0E>I<3E00630001
188 801F807180C180C1A0C3A03DC00B097E880E>97 D<1F0021804000C000C000C000400020
189 801F0009097E880D>99 D<F78038C030C030C030C030C030C030C0FDF00C097E8810>
190 110 D E /Fe 1 60 df<0000000080000000004007C00000400FF0000020183800001070
191 0C00000CE0060007FF4003001FFE000180380C0000E0E01000007FC02000001F00400000
192 0000400000000080280E81902A>59 D E /Ff 31 123 df<071C00071C00071C00071C00
193 071C007FFF00FFFF80FFFF800E38000E38000E38000E38000E38000E38000E3800FFFF80
194 FFFF807FFF001C70001C70001C70001C70001C700011177F9614>35
195 D<60F0F878181818303060C080050C789614>39 D<0180038006000C001C001800380070
196 0070007000E000E000E000E000E000E000E000E000E000700070007000380018001C000C
197 00060003800180091D799914>I<80C0603038181C0E0E0E0707070707070707070E0E0E
198 1C18383060C080081D7C9914>I<FFFEFFFEFFFE0F037E8C14>45
199 D<70F8F8F87000000000000070F8F8F8700510798F14>58 D<1FC0007FF0007078002018
200 00001C00001C0007FC001FFC003C1C00701C00E01C00E01C00E01C00707C003FFF800F8F
201 8011107E8F14>97 D<FC0000FC00001C00001C00001C00001C00001C00001CF8001DFE00
202 1F07001E03001C03801C01C01C01C01C01C01C01C01C01C01C01C01C03801E03001F0E00
203 1DFC000CF8001217809614>I<03F80FFE1C0E380470006000E000E000E000E000600070
204 00380E1C1E0FFC03F00F107E8F14>I<007E00007E00000E00000E00000E00000E00000E
205 0007CE000FFE001C3E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E
206 00301E00383E001FEFC007CFC012177F9614>I<07E00FF01C38301C700CE00EE00EFFFE
207 FFFEE00060007000380E1C1E0FFC03F00F107E8F14>I<00FC01FE038E07040700070007
208 007FFEFFFE070007000700070007000700070007000700070007000700FFF8FFF80F177F
209 9614>I<07CF001FFF80383B80301800701C00701C00701C003018003838003FF00037C0
210 007000007000003FF8001FFC003FFE00700F00E00380E00380E00380E003807007003C1E
211 001FFC0007F00011197F8F14>I<FC0000FC00001C00001C00001C00001C00001C00001C
212 78001DFE001F86001E07001C07001C07001C07001C07001C07001C07001C07001C07001C
213 07001C0700FF8FE0FF8FE01317809614>I<06000F000F0006000000000000000000FF00
214 FF00070007000700070007000700070007000700070007000700FFF8FFF80D187C9714>
215 I<FC0000FC00001C00001C00001C00001C00001C00001CFF801CFF801C1C001C38001C70
216 001CE0001DC0001FE0001FE0001E70001C38001C3C001C1C001C0E00FF1F80FF1F801117
217 809614>107 D<FF80FF8003800380038003800380038003800380038003800380038003
218 80038003800380038003800380FFFEFFFE0F177E9614>I<FB8E00FFDF003CF3803CF380
219 38E38038E38038E38038E38038E38038E38038E38038E38038E38038E380FEFBE0FE79E0
220 1310808F14>I<FC7800FDFE001F86001E07001C07001C07001C07001C07001C07001C07
221 001C07001C07001C07001C0700FF8FE0FF8FE01310808F14>I<07C01FF03C78701C701C
222 E00EE00EE00EE00EE00EE00E701C783C3C781FF007C00F107E8F14>I<FCF800FDFE001F
223 07001E03001C03801C01C01C01C01C01C01C01C01C01C01C01C01C03801E03001F0E001D
224 FC001CF8001C00001C00001C00001C00001C00001C0000FF8000FF80001218808F14>I<
225 03E7000FF7001C1F00300F00700F00E00700E00700E00700E00700E00700E00700700F00
226 300F001C3F000FF70007C700000700000700000700000700000700000700003FE0003FE0
227 13187F8F14>I<FE1F00FE7F800EE3800F81000F00000F00000E00000E00000E00000E00
228 000E00000E00000E00000E0000FFF000FFF00011107F8F14>I<0FD83FF86038C038C038
229 F0007F803FF007F8001C6006E006F006F81CFFF8CFE00F107E8F14>I<06000E000E000E
230 000E007FFCFFFC0E000E000E000E000E000E000E000E000E0E0E0E0E0E0E1C07F801F00F
231 157F9414>I<FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C0700
232 1C07001C07001C07001C1F000FFFE003E7E01310808F14>I<FE3F80FE3F803C1E001C1C
233 001C1C001C1C000E38000E38000E380006300007700007700007700003E00003E00003E0
234 0011107F8F14>I<FE3F80FE3F80700700380E00380E00380E0039CE0039CE0039CE001B
235 6C001A6C001A6C001A6C001E7C001E7C000E380011107F8F14>I<7E3F007E3F001E3C00
236 0E780007700007E00003E00001C00003C00003E0000770000E78000E38001C1C00FE3F80
237 FE3F8011107F8F14>I<FE3F80FE3F801C0E001C1C001C1C000E1C000E38000E38000738
238 0007300007300003700003700003E00001E00001E00001C00001C00001C0000380007380
239 007700007E00003C000011187F8F14>I<3FFF7FFF700E701C7038007000E001C0038007
240 000E001C0738077007FFFFFFFF10107F8F14>I E /Fg 1 79 df<03F001FE0078007000
241 780020005C0020009C0040008E0040008E0040008E004001070080010700800103808001
242 0380800201C1000201C1000201C1000200E1000400E200040072000400720004003A0008
243 003C0008003C0008001C0018001C0038000800FF0008001F1A7E991F>78
244 D E /Fh 9 119 df<1C0006000700030003000180018001C000C000C000E001E0037006
245 300C3018183018601CC00C800E0F147E9314>21 D<40E04003037D820A>58
246 D<03C00C20187030E0600060006000C000C0004010602030C01F000C0D7F8C0F>99
247 D<003C000C0018001800180018003007B00C7010703060606060606060C0C0C0C8C0C841
248 C862D03C700E147E9311>I<0780184030206040C040FF80C00080008000C020C0406180
249 3E000B0D7E8C10>I<06070600000000384C4C8C98181830323264643808147F930C>105
250 D<003000380030000000000000000001C002600430046008600060006000C000C000C000
251 C001800180018001806300E300C60078000D1A81930E>I<30F8590C4E0C9C0C980C180C
252 180C30183019303130316032601C100D7F8C15>110 D<38104C184C108C109810181018
253 10302030203040304018800F000D0D7F8C11>118 D E /Fi 2 4
254 df<FFFFC0FFFFC012027D871A>0 D<040004000400C460F5E03F800E003F80F5E0C46004
255 00040004000B0D7E8D11>3 D E /Fj 3 105 df<000E0013003700360030006000600060
256 006003FC00C000C000C000C000C001800180018001800180030003000300030002006600
257 E600CC007800101D7E9611>102 D<00E2031E060E0C0E0C0C180C180C180C1018101810
258 18183808F00730003000306060E060C1C07F000F14808D11>I<1F000600060006000600
259 0C000C000C000C0018F01B181C08180838183018301830186030603160616062C026C038
260 10177E9614>I E /Fk 8 115 df<07C00C6030E020E06000C000C000C00080008000C020
261 C04061803E000B0E7C8D10>99 D<003E000C000C000C000C001800180018001803B00C70
262 187030303060606060606060C0C0C0C840C841C862D01C700F177C9612>I<0780184030
263 2060206040FF80C000C000C000C000C020C04061803E000B0E7C8D10>I<001C0036003E
264 006C00600060006000C000C007F800C000C000C001800180018001800180030003000300
265 03000200060006006600E400C80070000F1D81960B>I<01C4063C0C1C181C1818301830
266 183018203020302030307011E00E600060006060C0E0C0C3807E000E147E8D10>I<0307
267 06000000000000182C4C4C8C18181830326264243808177D960B>105
268 D<3078498C4E044C049C0C180C180C180C30183019303130316012601C100E7D8D14>
269 110 D<30F04B184E384C3098001800180018003000300030003000600060000D0E7D8D0F
270 >114 D E /Fl 26 122 df<0180038006000C0018003800300070007000E000E000E000
271 E000E000E000E000700070003000380018000C0006000380018009197B9612>40
272 D<80C06030181C0C0E0E070707070707070E0E0C1C183060C08008197C9612>I<FFF8FF
273 F8FFF80D037E8B12>45 D<60F0F06000000000000060F0F060040E798D12>58
274 D<1FC0003FF000383800101C00001C0007FC003FFC00781C00E01C00E01C00E01C00703C
275 003FFF801FCF80110E7F8D12>97 D<F800F80038003800380038003BE03FF03C38381C38
276 0C380E380E380E380E380C381C3C383FF01BC00F147F9312>I<07F01FF8383870106000
277 E000E000E000E0006000703838381FF007E00D0E7E8D12>I<00F800F800380038003800
278 3807B81FF8387870386038E038E038E038E0386038707838781FFE0FBE0F147F9312>I<
279 07801FE0387070706038E038FFF8FFF8E0006000703838381FF007C00D0E7E8D12>I<00
280 7E00FF01C70382038003807FFEFFFE03800380038003800380038003800380038003803F
281 F83FF81014809312>I<0F9E1FFF38E7707070707070707038E03FC03F8070003FE03FF8
282 3FFC701EE00EE00EE00E600C783C1FF00FE010167F8D12>I<F800F80038003800380038
283 0039E03FF03E383C3838383838383838383838383838383838FE3EFE3E0F147F9312>I<
284 06000F000F0006000000000000007F007F00070007000700070007000700070007000700
285 0700FFF0FFF00C157D9412>I<FF00FF0007000700070007000700070007000700070007
286 00070007000700070007000700FFF8FFF80D147E9312>108 D<F71C00FFBE0079E70079
287 E70071C70071C70071C70071C70071C70071C70071C70071C700F9E780F8E380110E808D
288 12>I<F9E0FFF03E383C3838383838383838383838383838383838FE3EFE3E0F0E7F8D12>
289 I<0F803FE038E07070E038E038E038E038E038F078707038E03FE00F800D0E7E8D12>I<
290 FBE0FFF03C38381C380C380E380E380E380E380C381C3C383FF03BC03800380038003800
291 3800FE00FE000F157F8D12>I<079C1FFC387C703C601CE01CE01CE01CE01C601C703C38
292 7C1FFC079C001C001C001C001C001C007F007F10157F8D12>I<FC78FDFC1F9C1E081E00
293 1C001C001C001C001C001C001C00FFC0FFC00E0E7E8D12>I<1FF03FF06070C070E0007F
294 003FE00FF000786018E018F030FFE0DFC00D0E7E8D12>I<06000E000E000E007FF8FFF8
295 0E000E000E000E000E000E000E000E1C0E1C0E1C07F801E00E127F9112>I<F8F8F8F838
296 383838383838383838383838383838383838781FFE0FBE0F0E7F8D12>I<FEFEFEFE701C
297 701C701C30183BB83FF83FF83AB838B81CF01CF01CF00F0E7F8D12>119
298 D<7C7C7C7C1CF00EE00FC007C00380078007C00EE01EF01C70FC7EFC7E0F0E7F8D12>I<
299 FC7EFC7E38381C381C701C700E700E600EE006E006E007C003C003C00380038003807700
300 7F007E0038000F157F8D12>I E /Fm 16 116 df<00FC100383300E00B01C0070380030
301 300030700010600010E00010E00000E00000E00000E00000E00000E00010600010700010
302 3000203800201C00400E008003830000FC0014177E961A>67 D<FFC0001C00001C00001C
303 00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00201C
304 00201C00201C00601C00601C00401C00C01C03C0FFFFC013177F9617>76
305 D<FFFE001C03801C00C01C00601C00701C00701C00701C00701C00601C00C01C03801FFE
306 001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000FF80001417
307 7F9619>80 D<0F88305860384018C008C008C008E00070007F003FE01FF003F80038001C
308 000C800C800C800CC008E018D83087C00E177E9614>83 D<00800001C00001C00001C000
309 0260000260000260000430000430000818000818000FF800100C00100C00100C00300E00
310 F81F8011117F9014>97 D<03F0800E0D80180380300180600080600080C00000C00000C0
311 0000C00000C000006000806000803001001801000E060003F80011117F9014>99
312 D<FFF830183008300C30043044304030C03FC030C030423042300230043004301CFFFC0F
313 117E9013>101 D<03F1000C0B00180700300300600100400100C00000C00000C00000C0
314 1FC0C003004003006003003003001803000C070003F90012117F9015>103
315 D<FF181818181818181818181818181818FF08117F900A>105 D<FE0030003000300030
316 0030003000300030003000300430043004300C30083038FFF80E117F9011>108
317 D<F801F03801C03801C02C02C02C02C02604C02604C02604C02308C02308C02190C02190
318 C02190C020E0C020E0C070E0C0F843F014117E9019>I<F00F803807003802002C020026
319 020023020023020021820020C200206200206200203200201A00200E00200E00700600F8
320 020011117F9014>I<03F0000C0C00180600300300600180400080C000C0C000C0C000C0
321 C000C0C000C06001806001803003001806000C0C0003F00012117F9015>I<FFE0303830
322 08300C300C300C300830383FE03000300030003000300030003000FC000E117E9013>I<
323 FFE000301800300C00300600300600300600300C003018003FE000303800300C00300C00
324 300C00300C00300C40300440FC038012117F9014>114 D<1F2020E04060C020C020C000
325 70003F001FC001E00070003080308030C020E0409F800C117F900F>I
326 E /Fn 9 58 df<187898181818181818181818181818FF08107D8F0F>49
327 D<1F00618040C08060C0600060006000C00180030006000C00102020207FC0FFC00B107F
328 8F0F>I<1F00218060C060C000C0008001001F00008000400060C060C060804060801F00
329 0B107F8F0F>I<01800180038005800D801980118021804180C180FFE001800180018001
330 800FE00B107F8F0F>I<20C03F802E002000200020002F0030802040006000600060C060
331 80C061801F000B107F8F0F>I<0780184030C060C06000C000CF00F080E040C060C060C0
332 60406060C030801F000B107F8F0F>I<40007FF07FE08040804000800100020002000600
333 040004000C000C000C000C000C000C117F900F>I<1F00318060C060C060C031803F000E
334 00338061C0C060C060C060C04060C01F000B107F8F0F>I<1F00318060C0C040C060C060
335 C06040E021E01E600060004060C0608063001E000B107F8F0F>I
336 E /Fo 21 117 df<02040818103020604040C0C0C0C0C0C0C0C0C0C04040602030101808
337 0402071E7D950D>40 D<804020301018080C04040606060606060606060604040C081810
338 30204080071E7E950D>I<00600000600000600000600000600000600000600000600000
339 6000006000FFFFF0FFFFF000600000600000600000600000600000600000600000600000
340 600000600014167E9119>43 D<0C001C00EC000C000C000C000C000C000C000C000C000C
341 000C000C000C000C000C000C00FFC00A137D9211>49 D<1F0060C06060F070F030603000
342 700070006000C001C00180020004000810101020207FE0FFE00C137E9211>I<0FC03070
343 7038703870380038003000E00FC0007000380018001C601CF01CF018E03860701FC00E13
344 7F9211>I<006000E000E00160026006600C600860106020606060C060FFFC0060006000
345 600060006003FC0E137F9211>I<60607FC07F8044004000400040004F0070C040E00060
346 00700070E070E070E06040E021C01F000C137E9211>I<07C00C201070207060006000C0
347 00CF00D0C0E060C020C030C030C03040306020206010C00F000C137E9211>I<40007FFC
348 7FF8401080308020004000800100010003000200060006000E000E000E000E000E000400
349 0E147E9311>I<0FC0107020186018601870183C303F600F800FE031F06078C01CC00CC0
350 0CC00C601830300FC00E137F9211>I<0F00308060404060C020C030C030C03040306070
351 30B00F30003000200060E040E08041003E000C137E9211>I<FCFCC0C0C0C0C0C0C0C0C0
352 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FCFC061D7E9509>91 D<FCFC0C0C0C0C0C0C0C0C
353 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFCFC061D809509>93 D<7F00E1C0E040406000
354 6007E038606060C060C064C06461E43E380E0D7E8C11>97 D<0FE0187020706020C000C0
355 00C000C000C0006000201018200FC00C0D7F8C0F>99 D<00780018001800180018001800
356 180F98187820386018C018C018C018C018C0186018203818580F9E0F147F9312>I<0F80
357 104020206030C010FFF0C000C000C0006000201018200FC00C0D7F8C0F>I<03C00CE018
358 E01840180018001800FF00180018001800180018001800180018001800180018007F000B
359 1480930A>I<F00030003000300030003000300033E03430381830183018301830183018
360 3018301830183018FC7E0F147F9312>104 D<10001000100030007000FF803000300030
361 00300030003000300030803080308011000E0009127F910D>116
362 D E /Fp 23 123 df<0001F000061800080C00100C00200E00400E00800E00801C01001C
363 010018010038020FF00210C0020FE0020030040030040030040038040038080070080070
364 0800700800E01800E01801C0140180140300230E0020F800200000200000400000400000
365 40000040000080000080000017257F9C17>12 D<07800001C00001E00000E00000E00000
366 F000007000007000007800003800003800003C00001C00001C00001E00000E00001E0000
367 3F0000670000C7000187800303800603800E03C01C01C03801C07001E0E000E0C000F014
368 1D7E9C18>21 D<60F0F06004047C830C>58 D<60F0F0701010101020204080040C7C830C
369 >I<01FFC0003C0000380000380000380000380000700000700000700000700000E00000
370 E00000E00000E00001C00001C00001C00001C00003800003800003800003800007000007
371 00000700000700000F0000FFE000121C7E9B12>73 D<01FC00FF80001C001C00002E0018
372 00002E001000002E00100000270010000047002000004300200000438020000043802000
373 0081C040000081C040000081C040000080E040000100E080000100708000010070800001
374 0070800002003900000200390000020039000002001D000004001E000004000E00000400
375 0E00000C000E00001C00040000FF80040000211C7E9B21>78 D<01E3000717000C0F0018
376 0F00380E00300E00700E00700E00E01C00E01C00E01C00E01C00E03880E03880E0388060
377 78803199001E0E0011127E9116>97 D<3F00070007000E000E000E000E001C001C001C00
378 1C0039E03A303C1838187018701C701C701CE038E038E038E030E070E060E0C061C02300
379 1E000E1D7E9C12>I<01F0030C0C0C1C1E383C301870007000E000E000E000E000E000E0
380 046008601030601F800F127E9112>I<0007E00000E00000E00001C00001C00001C00001
381 C000038000038000038000038001E7000717000C0F00180F00380E00300E00700E00700E
382 00E01C00E01C00E01C00E01C00E03880E03880E038806078803199001E0E00131D7E9C16
383 >I<01F007080C0818043808300870307FC0E000E000E000E000E000E004600860103060
384 0F800E127E9113>I<0001E0000630000E78000EF0001C60001C00001C00001C00001C00
385 00380000380003FFC000380000380000700000700000700000700000700000E00000E000
386 00E00000E00000E00001C00001C00001C00001C00001C000018000038000038000630000
387 F30000F60000E4000078000015257E9C14>I<0038C000C5C00183C00303C00703800603
388 800E03800E03801C07001C07001C07001C07001C0E001C0E001C0E000C1E00047C00039C
389 00001C00001C00003800603800F03000F07000E0C0007F0000121A809114>I<0FC00001
390 C00001C0000380000380000380000380000700000700000700000700000E3E000EC3000F
391 03800E03801E03801C03801C03801C0380380700380700380700380E00700E20700E2070
392 1C20701C40E00C80600700131D7E9C18>I<01C003C003C0018000000000000000000000
393 00001C00270047004700870087000E000E001C001C001C00380038803880708071003200
394 1C000A1C7E9B0E>I<0FC00001C00001C000038000038000038000038000070000070000
395 0700000700000E07000E08800E11C00E23C01C47801C83001D00001E00003FC00038E000
396 387000387000707100707100707100707200E03200601C00121D7E9C16>107
397 D<3C1F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C07
398 00380710380710380E10380E2070064030038014127E9119>110
399 D<01C206260C1E181E381C301C701C701CE038E038E038E038E070E070E07060F023E01C
400 E000E000E001C001C001C001C003801FF00F1A7E9113>113 D<1C032707470747038701
401 87010E010E011C021C021C021C041804180818081C100C2007C010127E9114>118
402 D<1C00C0802701C1C04701C1C04701C0C087038040870380400E0380400E0380401C0700
403 801C0700801C0700801C07010018060100180601001C0E02001C0F04000E13080003E1F0
404 001A127E911E>I<07878008C84010F0C020F1E020E3C040E18000E00000E00001C00001
405 C00001C00001C000638080F38080F38100E5810084C60078780013127E9118>I<1C00C0
406 2701C04701C04701C08703808703800E03800E03801C07001C07001C07001C0700180E00
407 180E00180E001C1E000C3C0007DC00001C00001800603800F03000F06000E0C000418000
408 3E0000121A7E9114>I<038107C10FF6081C100800100020004000800100020004000804
409 10043C1867F843F081E010127E9113>I E /Fq 82 127 df<60F0F0F0F0F0F0F0F0F0F0
410 F0F0F0F0F0600000000060F0F0600419779816>33 D<E038F078F078F078F078F078F078
411 F078E038E03860300D0B7C9816>I<0387000387000387000387000387000387007FFFC0
412 FFFFE0FFFFE0070E00070E00070E000E1C000E1C000E1C000E1C00FFFFE0FFFFE07FFFC0
413 1C38001C38001C38001C38001C38001C380013197F9816>I<3801807C03807C0380EE07
414 00EE0700EE0E00EE0E00EE0E00EE1C007C1C007C380038380000700000700000700000E0
415 0000E00001C00001C00001C0000380000383800707C00707C00E0EE00E0EE00E0EE01C0E
416 E01C0EE03807C03807C018038013207F9C16>37 D<03800007E0000FE0001E70001C7000
417 1C70001C70001CF7E01CE7E01DC7E00FC7000F8E000F0E001F0E003F1C007B9C00739C00
418 E1F800E1F800E0F0E0E0F0E071F8E07FFFC03F9FC01E070013197F9816>I<30787C3C1C
419 1C1C1C3878F0E040060D789816>I<00E001E0038007000E001C001C0038003800700070
420 007000E000E000E000E000E000E000E000E000E000700070007000380038001C001C000E
421 000700038001E000E00B217A9C16>I<C000E000700038001C000E000E00070007000380
422 0380038001C001C001C001C001C001C001C001C001C0038003800380070007000E000E00
423 1C0038007000E000C0000A217B9C16>I<0380038003800380E38EF39EFFFE3FF80FE00F
424 E03FF8FFFEF39EE38E03800380038003800F127D9516>I<00E00000E00000E00000E000
425 00E00000E00000E00000E000FFFFE0FFFFE0FFFFE000E00000E00000E00000E00000E000
426 00E00000E00000E00013137F9516>I<387C7E7E3E0E1E1C78F060070B798416>I<FFFF80
427 FFFF80FFFF8011037E8D16>I<70F8F8F8700505788416>I<000180000380000380000700
428 000700000E00000E00001C00001C0000380000380000700000700000E00000E00001C000
429 01C0000380000380000700000700000E00000E00001C00001C0000380000380000700000
430 700000E00000E00000C0000011207E9C16>I<03E0000FF8001FFC001E3C00380E00780F
431 00700700700700E00380E00380E00380E00380E00380E00380E00380E00380F007807007
432 00700700780F003C1E001E3C001FFC000FF80003E00011197E9816>I<0300070007000F
433 001F00FF00FF00E700070007000700070007000700070007000700070007000700070007
434 00FFF8FFF8FFF80D197B9816>I<07E0001FF8003FFC00783E00E00700F00780F0038060
435 0380000380000380000700000700000E00001C0000380000700000E00001C0000380000F
436 00001E03803803807FFF80FFFF807FFF8011197E9816>I<07E0001FF8003FFC00781E00
437 780700300700000700000700000E00003E0007FC0007F00007FC00001E00000700000300
438 000380000380600380F00380E00700781E003FFC001FF80007E00011197E9816>I<007C
439 0000FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C
440 00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FFC001FF
441 C013197F9816>I<3FFE007FFE007FFE0070000070000070000070000070000070000070
442 000077F0007FFC007FFE00780F00300700000380000380600380F00380F00380E0070078
443 1E003FFC001FF80007E00011197E9816>I<00F80003FC0007FE000F07001C0F00380F00
444 780600700000700000E3F800EFFC00FFFE00F80F00F00700F00380E00380E00380700380
445 7003807007803807003C1E001FFC000FF80003E00011197E9816>I<E00000FFFF80FFFF
446 80FFFF80E00F00E01E00001C0000380000780000700000E00000E00001C00001C00001C0
447 00038000038000038000038000070000070000070000070000070000070000070000111A
448 7E9916>I<70F8F8F870000000000000000070F8F8F8700512789116>58
449 D<000180000780001F80003E0000F80001F00007C0000F80003E0000FC0000F00000FC00
450 003E00000F800007C00001F00000F800003E00001F8000078000018011157E9616>60
451 D<7FFFC0FFFFE0FFFFE0000000000000000000000000000000FFFFE0FFFFE07FFFC0130B
452 7F9116>I<C00000F00000FC00003E00000F800007C00001F00000F800003E00001F8000
453 0780001F80003E0000F80001F00007C0000F80003E0000FC0000F00000C0000011157E96
454 16>I<0FF0003FFE007FFF00F00F80F00380F00380600780001F00003E0000780000F000
455 01C00001C00001C00001C00001C00001800000000000000000000000000001800003C000
456 03C00001800011197E9816>I<00F80003FC0007FE000F07001C3B8038FF8079FF8073C7
457 C07383C0E701C0E701C0E701C0E701C0E701C0E701C0E701C073838073C78079FF0038FE
458 001C38000F03C007FFC003FF0000FC0012197E9816>I<00E00001F00001F00001B00001
459 B00003B80003B80003B800031800071C00071C00071C00071C00071C000E0E000E0E000F
460 FE000FFE001FFF001C07001C07001C07007E0FC0FF1FE07E0FC013197F9816>I<7FF800
461 FFFE007FFF001C07001C07801C03801C03801C03801C03801C07001FFF001FFE001FFE00
462 1C1F001C03801C03C01C01C01C01C01C01C01C01C01C03C01C07807FFF80FFFF007FFC00
463 12197F9816>I<01F18007FB800FFF801F0F803C0780380380700380700380F00000E000
464 00E00000E00000E00000E00000E00000E00000F000007003807003803803803C07001F0F
465 000FFE0007FC0001F00011197E9816>I<7FF800FFFE007FFF001C0F001C07801C03C01C
466 01C01C01C01C01E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C
467 01C01C03C01C07801C0F807FFF00FFFE007FF8001319809816>I<7FFFC0FFFFC07FFFC0
468 1C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C00
469 1C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE013197F9816>
470 I<7FFFE0FFFFE07FFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001FFC
471 001FFC001FFC001C1C001C1C001C00001C00001C00001C00001C00001C00007F8000FFC0
472 007F800013197F9816>I<01F18007FB800FFF801F0F803C0780380380700380700380F0
473 0000E00000E00000E00000E00000E01FC0E01FE0E01FC0F003807003807007803807803C
474 07801E0F800FFF8007FB8001F38013197F9816>I<7F07F0FF8FF87F07F01C01C01C01C0
475 1C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C0
476 1C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F01519809816>I<7FFCFFFE7F
477 FC0380038003800380038003800380038003800380038003800380038003800380038003
478 8003807FFCFFFE7FFC0F197D9816>I<FF8000FFC000FF80001C00001C00001C00001C00
479 001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00401C00
480 E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE013197F9816>76 D<FC07E0FE0FE0FE0FE0
481 3A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B38039B38039B38039B38039F380
482 38E38038E380380380380380380380380380380380FE0FE0FE0FE0FE0FE013197F9816>
483 I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CE1C01CE1C01C61C01C71
484 C01C71C01C71C01C31C01C39C01C39C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87
485 C07F03C01519809816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E0
486 0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780F0
487 0780780F007FFF003FFE001FFC0011197E9816>I<7FF800FFFE007FFF001C0F801C0380
488 1C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C0000
489 1C00001C00001C00001C00001C00007F0000FF80007F000012197F9816>I<1FFC003FFE
490 007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E00380E00380E003
491 80E00380E00380E00380E00380E0E380E1E380F0F780787F007FFF003FFE001FFC00001C
492 00001E00000E00000F00000700000700111F7E9816>I<7FF000FFFC007FFE001C0F001C
493 07801C03801C03801C03801C03801C07801C0F001FFE001FFC001FFE001C0E001C07001C
494 07001C07001C07001C07101C07381C07387F03F0FF83F07F01E01519809816>I<07E300
495 1FFF003FFF00781F00F00700E00700E00700E00000F000007800003F80001FF00007FC00
496 00FE00000F00000700000380000380600380E00380E00700F80F00FFFE00FFFC00C7F000
497 11197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E0
498 0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
499 0007FC000FFE0007FC0013197F9816>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C
500 01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C
501 01C00E03800E038007070007FF0003FE0000F8001519809816>I<FE0FE0FE0FE0FE0FE0
502 3803803C07801C07001C07001C07001E0F000E0E000E0E000E0E000E0E00071C00071C00
503 071C00071C0003180003B80003B80003B80001B00001F00001F00000E00013197F9816>
504 I<7E03F0FF07F87E03F03800E03800E03800E03800E01C01C01C01C01C01C01C71C01CF9
505 C01CF9C01CD9C01CD9C00CD9800CD9800CD9800DDD800D8D800D8D800D8D80078F00078F
506 000707001519809816>I<7F1F807F3FC07F1F800E1E000E1C00071C0007380003B80003
507 F00001F00001E00000E00001E00001F00003F00003B80007B800071C000F1C000E0E000E
508 0E001C07007E0FC0FF1FE07E0FC013197F9816>I<FE0FE0FF1FE0FE0FE01C07001C0700
509 0E0E000E0E00071C00071C00071C0003B80003B80001F00001F00000E00000E00000E000
510 00E00000E00000E00000E00000E00003F80007FC0003F80013197F9816>I<FFF0FFF0FF
511 F0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
512 00E000E000E000E000E000E000E000E000FFF0FFF0FFF00C20789C16>91
513 D<C00000E00000E000007000007000003800003800001C00001C00000E00000E00000700
514 0007000003800003800001C00001C00000E00000E000007000007000003800003800001C
515 00001C00000E00000E0000070000070000038000038000018011207E9C16>I<FFF0FFF0
516 FFF000700070007000700070007000700070007000700070007000700070007000700070
517 007000700070007000700070007000700070FFF0FFF0FFF00C207F9C16>I<1FE0003FF0
518 007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E00E00E00E00E
519 00783E007FFFE03FE7E00F83E013127E9116>97 D<FC0000FC0000FC00001C00001C0000
520 1C00001C00001C7C001DFE001FFF001F07801E03C01C01C01C00E01C00E01C00E01C00E0
521 1C00E01C00E01C01C01E03C01F07801FFF001DFE000C780013197F9816>I<03F80FFC1F
522 FE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF803F010127D9116
523 >I<003F00003F00003F0000070000070000070000070003C7000FF7001FFF003C1F0078
524 0F00700700E00700E00700E00700E00700E00700E00700700F00780F003C1F001FFFE00F
525 F7E007C7E013197F9816>I<03F0000FFC001FFE003C0F00780700700380E00380FFFF80
526 FFFF80FFFF80E00000E000007003807803803E07801FFF0007FE0001F80011127E9116>
527 I<001E00007F0001FF8001C7800383000380000380007FFF00FFFF00FFFF000380000380
528 000380000380000380000380000380000380000380000380000380000380007FFC00FFFE
529 007FFC0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E0038
530 0E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF807003C0E000E0E0
531 00E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<FC0000FC0000
532 FC00001C00001C00001C00001C00001C78001DFC001FFE001F0F001E07001C07001C0700
533 1C07001C07001C07001C07001C07001C07001C07001C0700FF8FE0FF9FE0FF8FE013197F
534 9816>I<03000780078003000000000000000000FF80FF80FF8003800380038003800380
535 0380038003800380038003800380FFFCFFFEFFFC0F1A7C9916>I<003000780078003000
536 000000000000000FF81FF80FF80038003800380038003800380038003800380038003800
537 3800380038003800380038003800386070F0F0FFE07FC03F800D237E9916>I<7E0000FE
538 00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E
539 78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F014
540 19809816>I<7FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001C000
541 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
542 7FFF00FFFF807FFF0011197E9816>I<F9C380FFEFC0FFFFE03C78E03C78E03870E03870
543 E03870E03870E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE7CF81512
544 809116>I<FC7800FDFC00FFFE001F0F001E07001C07001C07001C07001C07001C07001C
545 07001C07001C07001C07001C0700FF8FE0FF9FE0FF8FE013127F9116>I<03E0000FF800
546 1FFC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F00
547 3C1E001FFC000FF80003E00011127E9116>I<FC7C00FDFE00FFFF001F07801E03C01C01
548 C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01E03C01F07801FFF001DFE001C78
549 001C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000131B7F9116>I<03
550 E3800FF3801FFB803E0F80780780700780E00380E00380E00380E00380E00380E0038070
551 07807807803C1F801FFB800FF38003E38000038000038000038000038000038000038000
552 1FF0003FF8001FF0151B7F9116>I<7F0FC0FF3FE07F7FE007F04007C000078000078000
553 0700000700000700000700000700000700000700000700007FFC00FFFC007FFC0013127F
554 9116>I<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81EFFFC
555 FFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF0007
556 000007000007000007000007000007000007000007010007038007038007038007870003
557 FE0001FC0000F80011177F9616>I<FC3F00FC3F00FC3F001C07001C07001C07001C0700
558 1C07001C07001C07001C07001C07001C07001C07001C1F001FFFE00FF7E007C7E013127F
559 9116>I<7F1FC0FF9FE07F1FC01C07001C07000E0E000E0E000E0E00071C00071C00071C
560 00071C0003B80003B80003B80001F00001F00000E00013127F9116>I<FF1FE0FF1FE0FF
561 1FE038038038038038038038038039F38039F38019F30019B30019B30019B3001DB7001D
562 17001F1F000F1E000E0E0013127F9116>I<7F1FC07F3FC07F1FC00F1E00073C0003B800
563 03F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0FF3FE07F1FC0
564 13127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C
565 00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C0
566 0079C0007BC0007F80007F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC070078070
567 0F00701E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFFC0FF
568 FFC0FFFFC012127F9116>I<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
569 E0E0E0E0E0E0E0E00320779C16>124 D<1C303F78FFF8F7E061C00D057C9816>126
570 D E /Fr 4 104 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1F
571 F80FF003C010107E9115>15 D<000078001E03BC0023041C0041881E0080D00E0080F00F
572 0080600700C060038060700380307001C0187001C0087000E0047000C004700700047FF8
573 00047070008C707000887070008870700070707000007070000070700000707000007070
574 000060700060607000C0E0700040C0704020C0718011803A000F001C001B1F7E9D1E>60
575 D<003C00E001C00180038003800380038003800380038003800380038003800380038003
576 0007001C00F0001C00070003000380038003800380038003800380038003800380038003
577 800380018001C000E0003C0E297D9E15>102 D<F0001C00070003000380038003800380
578 038003800380038003800380038003800380018001C000E0003C00E001C0018003800380
579 03800380038003800380038003800380038003800380030007001C00F0000E297D9E15>
580 I E /Fs 47 123 df<00FCF807839C0E079C1C07081C07001C07001C07001C07001C0700
581 FFFFE01C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
582 1C07007F1FE01617809615>11 D<00FC000782000E07001C07001C02001C00001C00001C
583 00001C0000FFFF001C07001C07001C07001C07001C07001C07001C07001C07001C07001C
584 07001C07001C07007F1FC01217809614>I<00FF000707000E07001C07001C07001C0700
585 1C07001C07001C0700FFFF001C07001C07001C07001C07001C07001C07001C07001C0700
586 1C07001C07001C07001C07007F1FC01217809614>I<00FC7E000703C1000E0783801C07
587 03801C0701001C0700001C0700001C0700001C070000FFFFFF801C0703801C0703801C07
588 03801C0703801C0703801C0703801C0703801C0703801C0703801C0703801C0703801C07
589 03807F1FCFE01B1780961D>I<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060
590 606070303018180C04020108227D980E>40 D<8040203018180C0C0E0606060707070707
591 07070707070606060E0C0C18183020408008227E980E>I<60F0F070101020204040040A
592 7D830A>44 D<FF80FF80090280870C>I<60F0F06004047D830A>I<07C018303018701C60
593 0C600CE00EE00EE00EE00EE00EE00EE00EE00EE00E600C600C701C30181C7007C00F157F
594 9412>48 D<06000E00FE000E000E000E000E000E000E000E000E000E000E000E000E000E
595 000E000E000E000E00FFE00B157D9412>I<07C0183030186018E00CE00CE00EE00EE00E
596 601E301E186E0F8E000E000C001C70187018603020E01F800F157F9412>57
597 D<1F8060E08070E070E070407000E001C001800300020002000200020002000000000000
598 00000006000F000F0006000C177E9611>63 D<00FC100383300E00B01C00703800303000
599 30700010600010E00010E00000E00000E00000E00000E00000E000106000107000103000
600 203800201C00400E008003830000FC0014177E9619>67 D<FFFFE01C00E01C00601C0020
601 1C00101C00101C00101C04001C04001C04001C0C001FFC001C0C001C04001C04001C0400
602 1C00001C00001C00001C00001C00001C0000FFC00014177F9617>70
603 D<FF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701FFF
604 F01C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070FF83FE1717
605 7F961A>72 D<FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E00
606 0E000E000E000E000E000E000E00FFE00B177F960D>I<FFC0001C00001C00001C00001C
607 00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00201C00201C
608 00201C00601C00601C00401C00C01C03C0FFFFC013177F9616>76
609 D<FC00FE1E00381F001017001013801011C01011C01010E010107010103810103810101C
610 10100E10100F101007101003901001D01001D01000F0100070100030380030FE00101717
611 7F961A>78 D<00FC000303000E01C01C00E0380070300030700038600018E0001CE0001C
612 E0001CE0001CE0001CE0001CE0001C7000387000383000303800701C00E00E01C0030300
613 00FC0016177E961B>I<FFFE001C03801C00C01C00601C00701C00701C00701C00701C00
614 601C00C01C03801FFE001C00001C00001C00001C00001C00001C00001C00001C00001C00
615 001C0000FF800014177F9618>I<0FC4302C601C400CC004C004C004E00070007F003FE0
616 0FF801FC001C000E0006800680068006C004E008D81087E00F177E9614>83
617 D<7FFFF86038184038084038088038048038048038040038000038000038000038000038
618 0000380000380000380000380000380000380000380000380000380000380003FF801617
619 7F9619>I<3FC0706070302038003803F81E3830387038E039E039E07970FF1F1E100E7F
620 8D12>97 D<F8000038000038000038000038000038000038000038000038000039F0003E
621 0C00380600380700380300380380380380380380380380380300380700380600361C0021
622 F00011177F9614>I<07F01838303870106000E000E000E000E000600070083008183007
623 C00D0E7F8D10>I<003E00000E00000E00000E00000E00000E00000E00000E00000E0007
624 CE001C3E00300E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E0018
625 2E0007CF8011177F9614>I<0FC0186030307038E018FFF8E000E000E000600070083010
626 183007C00D0E7F8D10>I<03E006700E701C201C001C001C001C001C00FF801C001C001C
627 001C001C001C001C001C001C001C001C001C007F800C1780960B>I<0F9E18E330607070
628 70707070306018C02F80200060003FE03FF83FFC600EC006C006C006600C38380FE01015
629 7F8D12>I<F8000038000038000038000038000038000038000038000038000038F8003B
630 1C003C0E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00FE
631 3F8011177F9614>I<307878300000000000F8383838383838383838383838FE07177F96
632 0A>I<F80038003800380038003800380038003800383E383838303840388039803FC039
633 E038E038F03878383C383CFE7F10177F9613>107 D<F838383838383838383838383838
634 3838383838383838FE07177F960A>I<F8F83E003B1CC7003C0F0380380E0380380E0380
635 380E0380380E0380380E0380380E0380380E0380380E0380380E0380380E0380FE3F8FE0
636 1B0E7F8D1E>I<F8F8003B1C003C0E00380E00380E00380E00380E00380E00380E00380E
637 00380E00380E00380E00FE3F80110E7F8D14>I<07C018303018600C600CE00EE00EE00E
638 E00EE00E701C3018183007C00F0E7F8D12>I<F9F0003E1C003806003807003803003803
639 80380380380380380380380300380700380E003E1C0039F0003800003800003800003800
640 00380000FE000011147F8D14>I<F9E03A703C7038203800380038003800380038003800
641 38003800FF000C0E7F8D0E>114 D<1F4060C0C040C040E000FF007F801FC001E0806080
642 60C060E0C09F000B0E7F8D0E>I<080008000800180018003800FFC03800380038003800
643 38003800380038403840384038401C800F000A147F930E>I<F83E00380E00380E00380E
644 00380E00380E00380E00380E00380E00380E00380E00381E001C2E0007CF80110E7F8D14
645 >I<FE1F380E3C0C1C081C080E100E100720072007E003C003C001800180100E7F8D13>I<
646 FEFE7C383838383810383C101C3C201C4C201E4E600ECE400E8740078780070380070380
647 030300020100160E7F8D19>I<FE3F3C1C1C100E20074007C0038001C002E004F0087018
648 38383CFC7F100E7F8D13>I<FE1F380E3C0C1C081C080E100E100720072007E003C003C0
649 0180018001000100E200E200A400780010147F8D13>I<FFF0C0E080E081C08380878007
650 000E001E081C08381870107030FFF00D0E7F8D10>I E /Ft 1 4
651 df<0C000C00CCC0EDC07F800C007F80EDC0CCC00C000C000A0B7D8B10>3
652 D E /Fu 52 125 df<0000FE000003018000060180000C0380001C0180001C0000001800
653 000038000000380000003800000038000003FFFE0000700E0000700E0000700E0000701C
654 0000701C0000E01C0000E01C0000E0380000E0380000E0380001C0380001C0720001C072
655 0001C0720001C07200038034000380180003800000030000000300000007000000C60000
656 00E6000000CC000000780000001925819C17>12 D<FFC0FFC0FFC00A037D890F>45
657 D<3078F06005047C830D>I<09C0400FE0801FE1801C6100302600201A00600400400C00
658 80080080180000300000300000600000600000C00000C00001C000018000038000030000
659 0700000700000700000E00000E00000E00001C00001C0000180000121D799B15>55
660 D<001F000060C000C0600180600300300300300600600700600700C00780C003C10003E6
661 0001FC0000780001BC00061E000C0F00180700300380200380600180600180C00300C003
662 00C006006004006008003830000FC000141D7D9B15>I<060F0F06000000000000000000
663 003078F06008127C910D>58 D<0000180000001800000038000000380000007800000078
664 000000B800000138000001380000023C0000021C0000041C00000C1C0000081C0000101C
665 0000101C0000201C0000201C00007FFC0000C01C0000801C0001001C0001001E0002000E
666 0002000E0004000E000C000E001C001E00FF00FFC01A1D7E9C1F>65
667 D<01FFFF00003C0380003801C0003800E0003800E0003800E0007000E0007001E0007001
668 E0007003C000E0038000E00F0000E01E0000FFFC0001C00E0001C0070001C0078001C007
669 800380078003800780038007800380078007000F0007000E0007001E0007003C000E00F0
670 00FFFFC0001B1C7E9B1D>I<0003F020001E0C60003002E000E003C001C001C0038001C0
671 070000C00E0000801E0000801C0000803C0000803C000000780000007800000078000000
672 F0000000F0000000F0000000F0000000F0000400F0000400F0000400F000080070000800
673 7000100038002000180040000C0180000706000001F800001B1E7A9C1E>I<01FFFF0000
674 3C03C0003800E0003800E000380070003800700070007800700038007000380070007800
675 E0007800E0007800E0007800E0007801C000F001C000F001C000F001C000E0038001E003
676 8001C0038003C0038003800700070007000E0007001C00070038000E00E000FFFF80001D
677 1C7E9B1F>I<01FFFFF0003C00F000380030003800200038002000380020007000200070
678 0020007008200070080000E0100000E0100000E0300000FFF00001C0200001C0200001C0
679 200001C02000038040800380008003800080038001000700010007000300070002000700
680 06000E003C00FFFFFC001C1C7E9B1C>I<01FFFFF0003C00F00038003000380020003800
681 20003800200070002000700020007008200070080000E0100000E0100000E0300000FFF0
682 0001C0200001C0200001C0200001C0200003804000038000000380000003800000070000
683 000700000007000000070000000F000000FFF000001C1C7E9B1B>I<0003F020001E0C60
684 003002E000E003C001C001C0038001C0070000C00E0000801E0000801C0000803C000080
685 3C000000780000007800000078000000F0000000F0000000F001FF80F0001E00F0001C00
686 F0001C00F0001C00F0001C00700038007000380038003800180078000C00900007071000
687 01F800001B1E7A9C20>I<03FF0078007000700070007000E000E000E000E001C001C001
688 C001C0038003800380038007000700070007000E000E000E000E001E00FFC0101C7D9B10
689 >73 D<003FF80003C0000380000380000380000380000700000700000700000700000E00
690 000E00000E00000E00001C00001C00001C00001C00003800003800003800003800607000
691 E07000C0600080E00081C0004380003E0000151D7C9B16>I<01FFC0003C000038000038
692 0000380000380000700000700000700000700000E00000E00000E00000E00001C00001C0
693 0001C00001C00003800203800203800203800407000407000C0700180700380E00F0FFFF
694 F0171C7E9B1A>76 D<01FE0001FE003E0001E0002E0003C0002E0005C0002E0005C0002E
695 0009C0004E000B80004E001380004E002380004700238000870047000087004700008700
696 870000870107000107010E000107020E000107040E000107040E000207081C000203881C
697 000203901C000203A01C000403A038000403C038000403C038000C038038001C03007800
698 FF8307FF00271C7E9B25>I<01FC00FF80001C001C00002E001800002E001000002E0010
699 00002700100000470020000043002000004380200000438020000081C040000081C04000
700 0081C040000080E040000100E08000010070800001007080000100708000020039000002
701 00390000020039000002001D000004001E000004000E000004000E00000C000E00001C00
702 040000FF80040000211C7E9B1F>I<0007F000001C1C0000700E0000E0070001C0038003
703 800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C078
704 0003C0F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0003C0070
705 003800700070007800E0003801C0001C0380000E0E000003F800001A1E7A9C20>I<01FF
706 FE00003C0380003801C0003800E0003800E0003800E0007001E0007001E0007001E00070
707 01C000E003C000E0038000E0070000E01C0001FFF00001C0000001C0000001C000000380
708 0000038000000380000003800000070000000700000007000000070000000F000000FFE0
709 00001B1C7E9B1C>I<000F8400304C00403C008018010018030018030018060010060010
710 06000007000007000003E00003FC0001FF00007F800007C00001C00001C00000C00000C0
711 2000C02000C0600180600180600300600200F00400CC180083E000161E7D9C17>83
712 D<1FFFFFC01C0701C0300E00C0200E0080600E0080400E0080401C0080801C0080801C00
713 80001C000000380000003800000038000000380000007000000070000000700000007000
714 0000E0000000E0000000E0000000E0000001C0000001C0000001C0000001C0000003C000
715 007FFE00001A1C799B1E>I<FF801FC03C0007001C0004001C0004001C0008001C001000
716 1C0010001C0020001C0020001C0040001C0080001C0080000E0100000E0100000E020000
717 0E0400000E0400000E0800000E0800000E1000000E2000000F2000000740000007400000
718 07800000070000000700000006000000060000001A1D779B1F>86
719 D<FF83FF07F03C007001C038007001803800F001003800F0010038017002003801700400
720 380270040038027008003804700800380470100038087010003808702000381070200038
721 3070400038207040001C407080001C407080001C807100001C807100001D007200001D00
722 7200001E007400001E007400001C003800001C0038000018003000001800200000100020
723 0000241D779B29>I<01E307170C0F180F380E300E700E700EE01CE01CE01CE01CE039E0
724 39E0396079319A1E0C10127C9115>97 D<3F00070007000E000E000E000E001C001C001C
725 001C0039E03A183C0C380C700C700E700E700EE01CE01CE01CE018E038E030E06060C031
726 801E000F1D7C9C13>I<00F803040E041C0E181C300070007000E000E000E000E000E000
727 E0046008601030600F800F127C9113>I<0007E00000E00000E00001C00001C00001C000
728 01C000038000038000038000038001E7000717000C0F00180F00380E00300E00700E0070
729 0E00E01C00E01C00E01C00E01C00E03900E03900E03900607900319A001E0C00131D7C9C
730 15>I<00F807040C0418023804300470087FF0E000E000E000E000E00060046008301030
731 600F800F127C9113>I<0003C0000670000C70001C60001C00001C000038000038000038
732 0000380000380003FF8000700000700000700000700000700000E00000E00000E00000E0
733 0000E00001C00001C00001C00001C00001C0000380000380000380000300000300000700
734 00C60000E60000CC00007800001425819C0D>I<0078C001C5C00303C00603C00E03800C
735 03801C03801C0380380700380700380700380700380E00380E00380E00181E000C7C0007
736 9C00001C00001C00003800003800C03000E07000C1C0007F0000121A7E9113>I<0FC000
737 01C00001C0000380000380000380000380000700000700000700000700000E3E000EC300
738 0F03800E03801E03801C03801C03801C0380380700380700380700380E00700E40700E40
739 701C40701C80E00C80600700121D7E9C15>I<0180038001000000000000000000000000
740 0000001C002600470047008E008E000E001C001C001C0038003800710071007100720072
741 003C00091C7C9B0D>I<00030007000300000000000000000000000000000078008C010C
742 020C021C041C001C001C0038003800380038007000700070007000E000E000E000E001C0
743 01C0C180E300C60078001024819B0D>I<0FC00001C00001C00003800003800003800003
744 80000700000700000700000700000E07800E08800E11C00E21C01C41801C80001D00001E
745 00003FC00038E000387000387000707100707100707100707200E03200601C00121D7E9C
746 13>I<1F800380038007000700070007000E000E000E000E001C001C001C001C00380038
747 00380038007000700070007000E200E200E200E40064003800091D7D9C0B>I<1C1E0780
748 266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701C0
749 1C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C91
750 22>I<383E004CC3004D03804E03809E03809C03801C03801C0380380700380700380700
751 380E00700E40700E40701C40701C80E00C8060070012127C9117>I<00F800030C000E06
752 001C0300180300300300700380700380E00700E00700E00700E00E00E00E00E01C006018
753 0060300030E0000F800011127C9115>I<03878004C86004D03004E03009C03009C03801
754 C03801C0380380700380700380700380600700E00700C00701800783000E86000E78000E
755 00000E00001C00001C00001C00001C0000380000FF0000151A809115>I<01E107130C0F
756 180F380E300E700E700EE01CE01CE01CE01CE038E038E038607831F01E700070007000E0
757 00E000E000E001C00FF8101A7C9113>I<1C3C2642468747078E068E000E000E001C001C
758 001C001C0038003800380038007000300010127C9112>I<01F006080C080C1C18181C00
759 1F001FC00FF007F0007800386030E030C030806060C01F000E127D9111>I<0300070007
760 0007000E000E000E000E00FFE01C001C001C0038003800380038007000700070007000E0
761 80E080E100E100660038000B1A7C990E>I<1C01802E03804E03804E03808E07008E0700
762 1C07001C0700380E00380E00380E00380E00301C80301C80301C80383C80184D000F8600
763 11127C9116>I<1C062E0E4E064E068E028E021C021C0238043804380438083008300830
764 10382018400F800F127C9113>I<1E01832703874703874703838707018707010E07010E
765 07011C0E021C0E021C0E021C0E04180C04181C04181C081C1E080C263007C3C018127C91
766 1C>I<0387800CC8400870E01070E020E0C020E00000E00000E00001C00001C00001C000
767 01C000038100638100E38200C5820085840078780013127E9113>I<1C01802E03804E03
768 804E03808E07008E07001C07001C0700380E00380E00380E00380E00301C00301C00301C
769 00383C001878000FB800003800003000007000E06000E0C0008180004300003C0000111A
770 7C9114>I<01C107E10FF6081C10080010002000400080010002000400080410042C0C73
771 F841F080E010127E9111>I<FFFFC012017C8B15>I<FFFFFFFFF825017B8B2A>I
772 E /Fv 32 122 df<FFF0FFF00C027F8910>45 D<000FE0200070186001C00460030003E0
773 060001E00E0000E01C00006038000060380000207800002070000020F0000000F0000000
774 F0000000F0000000F0000000F0000000F0000000F0000000700000207800002038000020
775 380000201C0000400E000040060000800300010001C0060000701800000FE0001B1E7D9C
776 21>67 D<FFFFC0000F0078000F001C000F0007000F0007000F0003800F0001C00F0001C0
777 0F0001E00F0000E00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F0
778 0F0000F00F0000E00F0000E00F0001E00F0001C00F0003800F0003800F0007000F001E00
779 0F007800FFFFE0001C1C7D9B22>I<FFF0FFF00F000F000F000F000F000F000F000F000F
780 000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000FFFFF000F
781 000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
782 000F000F000F000F000F000F000F00FFF0FFF01C1C7D9B22>72 D<FFF00F000F000F000F
783 000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
784 000F000F000F000F00FFF00C1C7D9B11>I<FFF8000F00000F00000F00000F00000F0000
785 0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
786 0F00040F00040F00040F000C0F000C0F00080F00180F00380F00F8FFFFF8161C7D9B1C>
787 76 D<FF80003FE00F80003E000F80003E000BC0005E000BC0005E0009E0009E0009E000
788 9E0009E0009E0008F0011E0008F0011E000878021E000878021E000878021E00083C041E
789 00083C041E00081E081E00081E081E00081E081E00080F101E00080F101E000807A01E00
790 0807A01E000807A01E000803C01E000803C01E000801801E001C01801E00FF8181FFE023
791 1C7D9B29>I<001FC00000F0780001800C00070007000E0003801C0001C01C0001C03800
792 00E0780000F0780000F070000070F0000078F0000078F0000078F0000078F0000078F000
793 0078F0000078F0000078780000F0780000F0780000F03C0001E01C0001C01E0003C00E00
794 03800700070003C01E0000F07800001FC0001D1E7D9C23>79 D<FFFFC0000F0078000F00
795 1C000F000E000F0007000F0007800F0007800F0007800F0007800F0007800F0007000F00
796 0E000F001C000F0078000FFFC0000F0000000F0000000F0000000F0000000F0000000F00
797 00000F0000000F0000000F0000000F0000000F0000000F000000FFF00000191C7D9B1F>
798 I<FFFF80000F00F0000F0038000F001E000F000E000F000F000F000F000F000F000F000F
799 000F000E000F001E000F0038000F00F0000FFF80000F01E0000F0070000F0078000F003C
800 000F003C000F003C000F003C000F003C000F003C000F003C080F003C080F001C080F001E
801 10FFF00E10000003E01D1D7D9B21>82 D<03F0400C0CC01002C03001C06000C0E000C0E0
802 0040E00040E00040F00000F800007E00007FE0003FFC001FFF0007FF80007F800007C000
803 03E00001E00000E08000E08000E08000E0C000C0C000C0E00180D00300CE060081F80013
804 1E7D9C19>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F
805 0020800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
806 0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
807 0000001F800003FFFC001B1C7D9B21>I<00200000700000700000700000B80000B80000
808 B800011C00011C00031E00020E00020E0004070007FF000407000803800803801803C018
809 01C03801C0FC07F815157F9419>97 D<FFFC001C07001C03801C03C01C03C01C03C01C03
810 C01C03801C07801FFF001FFF001C03801C03C01C01E01C01E01C01E01C01E01C01C01C03
811 C01C0780FFFE0013157F9418>I<00FC200782600E01E01C00E0380060780020700020F0
812 0020F00000F00000F00000F00000F00000F000207000207800203800401C00400E008007
813 830000FC0013157E9419>I<FFFC001C07001C01C01C00E01C00E01C00701C00701C0078
814 1C00781C00781C00781C00781C00781C00781C00701C00701C00E01C00E01C01C01C0700
815 FFFC0015157F941A>I<FFFF801C03801C00801C00801C00401C00401C08401C08001C08
816 001C18001FF8001C18001C08001C08201C08201C00201C00601C00401C00C01C01C0FFFF
817 C013157F9417>I<00FC200782600E01E01C00E0380060780020700020F00020F00000F0
818 0000F00000F00FF8F000E0F000E07000E07800E03800E01C00E00E00E007836000FC2015
819 157E941B>103 D<FF8FF81C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C
820 01C01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0FF8FF815
821 157F9419>I<FF801C001C001C001C001C001C001C001C001C001C001C001C001C001C00
822 1C001C001C001C001C00FF8009157F940D>I<FF81F81C01E01C01801C01001C02001C04
823 001C08001C10001C30001C70001CB8001D1C001E1C001C0E001C07001C07801C03801C01
824 C01C01E01C01F0FF83FC16157F941A>107 D<FFC0001C00001C00001C00001C00001C00
825 001C00001C00001C00001C00001C00001C00001C00001C00801C00801C00801C01801C01
826 001C03001C0700FFFF0011157F9415>I<FE000FE01E000F001700170017001700170017
827 00138027001380270011C0470011C0470011C0470010E0870010E0870010710700107107
828 0010710700103A0700103A0700101C0700101C0700381C0700FE083FE01B157F941F>I<
829 FC03F81E00E01E004017004013804013C04011C04010E040107040107040103840101C40
830 101C40100E401007401007C01003C01001C01000C03800C0FE004015157F9419>I<01F8
831 00070E000C03001C03803801C07801E07000E0F000F0F000F0F000F0F000F0F000F0F000
832 F0F000F07000E07801E03801C01C03801E0780070E0001F80014157E941A>I<FFFC001C
833 0F001C03801C03C01C03C01C03C01C03C01C03C01C03801C0F001FFC001C00001C00001C
834 00001C00001C00001C00001C00001C00001C0000FF800012157F9417>I<FFF8001C0E00
835 1C07801C03801C03C01C03C01C03C01C03801C07801C0E001FF8001C1C001C0E001C0700
836 1C07001C07001C07801C07841C07C41C03CCFF80F816157F9419>114
837 D<1F1030F06030C030C010C010E000E0007E003FC01FE003F00078003800188018801880
838 10C030F0608F800D157E9413>I<7FFFF060703040701040701080700880700880700800
839 700000700000700000700000700000700000700000700000700000700000700000700000
840 700007FF0015157F9419>I<FF07F87E3C01E03C3801C0181C02E0101C02E0101C02E010
841 0E0470200E0470200E04702007083840070838400708384003901C8003901C8003901C80
842 01E00F0001E00F0001E00F0000C0060000C0060000C006001F157F9423>119
843 D<FF07F01E03C00E03000F020007060003840003C80001D00000F00000F0000070000078
844 0000BC00011C00030E00020F000407000C03800803C03C03E0FE07F815157F9419>I<FF
845 80FE1E00380E00200F006007004003808003C08001C10001E20000E200007400007C0000
846 380000380000380000380000380000380000380000380001FF001715809419>I
847 E /Fw 52 122 df<0001FF81FE00001FFFEFFF80007F80FF87C000FC00FE0FE001F801FE
848 0FE003F801FC0FE007F001FC0FE007F001FC07C007F001FC000007F001FC000007F001FC
849 000007F001FC000007F001FC000007F001FC000007F001FC0000FFFFFFFFF800FFFFFFFF
850 F800FFFFFFFFF80007F001FC000007F001FC000007F001FC000007F001FC000007F001FC
851 000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC
852 000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC
853 000007F001FC000007F001FC000007F001FC000007F001FC00007FFF1FFFE0007FFF1FFF
854 E0007FFF1FFFE0002B2A7FA928>11 D<1C007F007F00FF80FFC0FFC07FC07FC01CC000C0
855 00C00180018001800300030006000C001800300020000A157B8813>44
856 D<003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F803F001F807F001F
857 C07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
858 E0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
859 E07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E
860 0007E0FC0001FFF000003F80001B277DA622>48 D<000E00001E00007E0007FE00FFFE00
861 FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
862 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
863 00FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>
864 I<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF003FC0FF003F
865 E0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000007F
866 000000FE000000FC000001F8000003F0000003E00000078000000F0000001E0000003C00
867 E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFF
868 C0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFF8000F81FE00
869 1F00FE003F80FF003F807F803F807F803F807F801F807F800F007F800000FF000000FF00
870 0000FE000001FC000001F8000007F00000FFC00000FFF0000001FC000000FE0000007F00
871 00007F8000003FC000003FC000003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0
872 FF003FC0FF007FC07E007F807C007F003F01FE001FFFFC0007FFF00000FF80001B277DA6
873 22>I<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000
874 077E00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003
875 807E0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FF
876 FFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
877 00FE00003FFFF8003FFFF8003FFFF81D277EA622>I<080003001F803F001FFFFE001FFF
878 FC001FFFF8001FFFF0001FFFE0001FFF80001FFE00001C0000001C0000001C0000001C00
879 00001C0000001C0000001C7FC0001DFFF8001F80FC001E003E0008003F0000003F800000
880 1FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE00
881 1FC0FC001FC078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B27
882 7DA622>I<0007F800003FFE0000FFFF0001FC078003F00F8007E01FC00FC01FC01FC01F
883 C01F801FC03F800F803F8000007F0000007F0000007F000000FF000000FF0FC000FF3FF8
884 00FF707C00FFC03E00FFC03F00FF801F80FF801FC0FF001FC0FF001FE0FF001FE0FF001F
885 E07F001FE07F001FE07F001FE07F001FE03F001FE03F001FC01F801FC01F803F800FC03F
886 0007E07E0003FFFC0000FFF000003FC0001B277DA622>I<380000003E0000003FFFFFF0
887 3FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00
888 E0003800E0007000E000E0000001C0000001C000000380000007800000070000000F0000
889 001F0000001E0000003E0000003E0000007E0000007C0000007C000000FC000000FC0000
890 00FC000000FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0000
891 00F80000007000001C297CA822>I<003FC00001FFF00003FFFC0007C07E000F001F001E
892 001F001E000F803E000F803E000F803F000F803F800F803FC00F003FF01F001FFC1E001F
893 FE3C000FFFF80007FFE00003FFF00001FFFC0001FFFE0007FFFF000F0FFF801E03FFC03C
894 01FFC07C007FE07C001FE0F8000FE0F80007E0F80003E0F80003E0F80003E0F80003C07C
895 0003C07C0007803F000F001FC03E000FFFFC0003FFF800007FC0001B277DA622>I<007F
896 800001FFF00007FFF8000FE0FC001F807E003F803F007F003F007F001F80FF001F80FF00
897 1FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F001FE07F003FE03F00
898 3FE01F807FE00F807FE007C1DFE003FF9FE0007E1FE000001FE000001FC000001FC00000
899 1FC000001F803E003F807F003F807F003F007F007E007F007C003E00F8003E03F0001FFF
900 E0000FFF800001FE00001B277DA622>I<000003800000000007C00000000007C0000000
901 000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000003FF8000000
902 003FF8000000003FF80000000073FC0000000073FC00000000F3FE00000000E1FE000000
903 01E1FF00000001C0FF00000001C0FF00000003C0FF80000003807F80000007807FC00000
904 07003FC0000007003FC000000E001FE000000E001FE000001E001FF000001C000FF00000
905 1FFFFFF000003FFFFFF800003FFFFFF80000780007FC0000700003FC0000F00003FE0000
906 E00001FE0000E00001FE0001E00001FF0001C00000FF0003C00000FF80FFFE001FFFFEFF
907 FE001FFFFEFFFE001FFFFE2F297EA834>65 D<FFFFFFFC0000FFFFFFFF8000FFFFFFFFC0
908 0003F8001FF00003F8000FF80003F80007FC0003F80003FC0003F80003FC0003F80003FE
909 0003F80001FE0003F80001FE0003F80001FE0003F80003FE0003F80003FC0003F80003FC
910 0003F80007F80003F8000FF00003F8001FE00003F800FFC00003FFFFFE000003FFFFFFE0
911 0003F80007F00003F80003FC0003F80001FE0003F80001FE0003F80000FF0003F80000FF
912 0003F80000FF8003F80000FF8003F80000FF8003F80000FF8003F80000FF8003F80000FF
913 8003F80000FF0003F80001FF0003F80003FE0003F80007FC0003F8001FF800FFFFFFFFF0
914 00FFFFFFFFC000FFFFFFFE000029297DA831>I<00003FF001800003FFFE0380000FFFFF
915 8780003FF007DF8000FF8001FF8001FE00007F8003FC00003F8007F000001F800FF00000
916 0F801FE0000007801FE0000007803FC0000007803FC0000003807FC0000003807F800000
917 03807F8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
918 0000FF8000000000FF8000000000FF8000000000FF80000000007F80000000007F800000
919 00007FC0000003803FC0000003803FC0000003801FE0000003801FE0000007000FF00000
920 070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFFFF
921 C0000003FFFF000000003FF8000029297CA832>I<FFFFFFF80000FFFFFFFF8000FFFFFF
922 FFE00003FC001FF80003FC0007FC0003FC0001FE0003FC0000FF0003FC00007F8003FC00
923 003FC003FC00001FC003FC00001FE003FC00001FE003FC00000FF003FC00000FF003FC00
924 000FF003FC00000FF003FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00
925 000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00
926 000FF003FC00000FF003FC00000FF003FC00001FE003FC00001FE003FC00001FC003FC00
927 003FC003FC00007F8003FC00007F0003FC0001FE0003FC0003FC0003FC001FF800FFFFFF
928 FFE000FFFFFFFF8000FFFFFFFC00002D297DA835>I<FFFFFFFFF0FFFFFFFFF0FFFFFFFF
929 F003FC000FF003FC0003F803FC0001F803FC0000F803FC00007803FC00003803FC000038
930 03FC00003803FC00E03C03FC00E01C03FC00E01C03FC00E01C03FC01E00003FC01E00003
931 FC07E00003FFFFE00003FFFFE00003FFFFE00003FC07E00003FC01E00003FC01E00003FC
932 00E00703FC00E00703FC00E00703FC00E00E03FC00000E03FC00000E03FC00001E03FC00
933 001E03FC00001C03FC00003C03FC00007C03FC0000FC03FC0001FC03FC000FFCFFFFFFFF
934 F8FFFFFFFFF8FFFFFFFFF828297EA82D>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC00
935 1FE003FC0007F003FC0001F003FC0001F003FC0000F003FC00007003FC00007003FC0000
936 7003FC00007803FC00E03803FC00E03803FC00E03803FC00E00003FC01E00003FC01E000
937 03FC07E00003FFFFE00003FFFFE00003FFFFE00003FC07E00003FC01E00003FC01E00003
938 FC00E00003FC00E00003FC00E00003FC00E00003FC00000003FC00000003FC00000003FC
939 00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFFC0000FFFFFC
940 0000FFFFFC000025297EA82B>I<00003FF001800003FFFE0380000FFFFF8780003FF007
941 DF8000FF8001FF8001FE00007F8003FC00003F8007F000001F800FF000000F801FE00000
942 07801FE0000007803FC0000007803FC0000003807FC0000003807F80000003807F800000
943 0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
944 0000FF8000000000FF8000000000FF80007FFFFC7F80007FFFFC7F80007FFFFC7FC00000
945 7F803FC000007F803FC000007F801FE000007F801FE000007F800FF000007F8007F80000
946 7F8003FC00007F8001FE00007F8000FF8000FF80003FF003DF80000FFFFF8F800003FFFF
947 078000003FF801802E297CA836>I<FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE03FC00
948 007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00
949 007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00
950 007F8003FC00007F8003FC00007F8003FFFFFFFF8003FFFFFFFF8003FFFFFFFF8003FC00
951 007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00
952 007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00
953 007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F80FFFFF01FFFFEFFFFF0
954 1FFFFEFFFFF01FFFFE2F297DA836>I<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE
955 0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
956 0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
957 0001FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC16297EA81A
958 >I<FFFE0000001FFFC0FFFE0000001FFFC0FFFF0000003FFFC003FF0000003FF00003FF
959 0000003FF00003BF80000077F00003BF80000077F000039FC00000E7F000039FC00000E7
960 F000038FE00001C7F000038FE00001C7F0000387F0000387F0000387F0000387F0000387
961 F0000387F0000383F8000707F0000383F8000707F0000381FC000E07F0000381FC000E07
962 F0000380FE001C07F0000380FE001C07F0000380FF003807F00003807F003807F0000380
963 7F003807F00003803F807007F00003803F807007F00003801FC0E007F00003801FC0E007
964 F00003800FE1C007F00003800FE1C007F00003800FE1C007F000038007F38007F0000380
965 07F38007F000038003FF0007F000038003FF0007F000038001FE0007F000038001FE0007
966 F000038000FC0007F000038000FC0007F000FFFE00FC01FFFFC0FFFE007801FFFFC0FFFE
967 007801FFFFC03A297DA841>77 D<FFFC0000FFFEFFFE0000FFFEFFFF0000FFFE03FF8000
968 038003FF8000038003BFC0000380039FE0000380039FF0000380038FF80003800387F800
969 03800383FC0003800381FE0003800381FF0003800380FF80038003807FC0038003803FC0
970 038003801FE0038003800FF0038003800FF80380038007FC0380038003FC0380038001FE
971 0380038000FF0380038000FF83800380007FC3800380003FE3800380001FE3800380000F
972 F38003800007FB8003800007FF8003800003FF8003800001FF8003800000FF8003800000
973 7F80038000007F80038000003F80038000001F80038000000F80FFFE00000780FFFE0000
974 0380FFFE000003802F297DA836>I<0000FFE000000007FFFC0000003FC07F8000007F00
975 1FC00001FC0007F00003F80003F80007F00001FC000FF00001FE001FE00000FF001FE000
976 00FF003FC000007F803FC000007F807FC000007FC07F8000003FC07F8000003FC07F8000
977 003FC0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000
978 003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE07F8000003FC07FC000
979 007FC07FC000007FC03FC000007F803FC000007F801FE00000FF001FE00000FF000FF000
980 01FE0007F00001FC0003F80003F80001FC0007F00000FF001FE000003FC07F8000000FFF
981 FE00000000FFE000002B297CA834>I<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE0
982 03FC000FF003FC0007F803FC0007FC03FC0003FC03FC0003FE03FC0003FE03FC0003FE03
983 FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FC03FC0007FC03FC0007F803FC
984 000FF003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC00000003FC00000003FC00
985 000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
986 0003FC00000003FC00000003FC00000003FC00000003FC000000FFFFF00000FFFFF00000
987 FFFFF0000027297DA82F>I<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC007FE000
988 03FC000FF00003FC0007F80003FC0007FC0003FC0003FC0003FC0003FE0003FC0003FE00
989 03FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FC0003FC0007F800
990 03FC0007F80003FC001FE00003FC007FC00003FFFFFE000003FFFFF8000003FC00FC0000
991 03FC007F000003FC003F800003FC003F800003FC001FC00003FC001FE00003FC001FE000
992 03FC001FE00003FC001FE00003FC001FE00003FC001FF00003FC001FF00003FC001FF000
993 03FC001FF00703FC001FF80703FC000FF80703FC0007F80EFFFFF003FE1CFFFFF001FFF8
994 FFFFF0003FF030297DA834>82 D<007F806003FFF0E007FFF9E00F807FE01F001FE03E00
995 07E07C0003E07C0001E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC0
996 00007FFE00007FFFE0003FFFFC001FFFFE000FFFFF8007FFFFC003FFFFC0007FFFE00007
997 FFF000007FF000000FF8000007F8000003F8600001F8E00001F8E00001F8E00001F8F000
998 01F0F00001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF00E1FFFE00C01FF0001D29
999 7CA826>I<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078
1000 003FC003C078003FC003C070003FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0
1001 003FC000E0E0003FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC0000000
1002 003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000
1003 003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000
1004 003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000
1005 003FC0000000003FC00000007FFFFFE000007FFFFFE000007FFFFFE0002B287EA730>I<
1006 FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FC0000070003FC0000070003FC00000700
1007 03FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00000700
1008 03FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00000700
1009 03FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00000700
1010 03FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00000700
1011 03FC0000070001FC00000E0001FE00000E0000FE00001C00007E00001C00007F00003800
1012 003FC000F000000FF007E0000007FFFFC0000001FFFF000000001FF800002E297DA835>
1013 I<03FF80000FFFF0001F01F8003F807E003F807E003F803F001F003F800E003F8000003F
1014 8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F
1015 80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03
1016 FC1E1B7E9A21>97 D<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE0
1017 0000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000
1018 00000FE00000000FE00000000FE1FE00000FE7FF80000FFE07E0000FF801F0000FF000F8
1019 000FE000FC000FE000FE000FE0007F000FE0007F000FE0007F000FE0007F800FE0007F80
1020 0FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE0007F000F
1021 E0007F000FE000FE000FE000FC000FF001F8000FF803F0000F9E0FE0000F0FFF80000E01
1022 FC0000212A7EA926>I<003FF80000FFFE0003F01F0007E03F800FC03F801F803F803F80
1023 1F007F000E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF00
1024 0000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F0
1025 1E0000FFFC00003FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF800000003F8
1026 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
1027 000003F800000003F800000003F800000003F800001FE3F80000FFFBF80003F83FF80007
1028 E00FF8000FC007F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF00
1029 03F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003
1030 F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00FF80003F03FFF
1031 8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F07E0007C01F000F80
1032 1F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFF
1033 FFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC0
1034 01C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01F8
1035 7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFF
1036 C0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
1037 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF
1038 807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F00
1039 7E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80
1040 FC000FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFF
1041 FF001FFFFF800FFFFFC007FFFFE01FFFFFF03C0007F07C0001F8F80000F8F80000F8F800
1042 00F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>
1043 I<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0000000
1044 0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
1045 E00000000FE07F00000FE1FFC0000FE787E0000FEE03F0000FF803F0000FF803F8000FF0
1046 03F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
1047 F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
1048 000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80212A7DA926
1049 >I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0
1050 FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
1051 0FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I<000700000F80001FC0003FE000
1052 3FE0003FE0001FC0000F8000070000000000000000000000000000000000000000000000
1053 FFE000FFE000FFE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
1054 0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
1055 0FE0000FE0000FE0000FE0000FE0000FE0000FE07C0FE0FE0FE0FE0FC0FE1F80FE1F007C
1056 3E003FFC000FF000133784AA15>I<FFE00000FFE00000FFE000000FE000000FE000000F
1057 E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000F
1058 E000000FE01FFC0FE01FFC0FE01FFC0FE007800FE00F000FE01E000FE03C000FE078000F
1059 E0E0000FE3C0000FE7C0000FEFE0000FFFE0000FFFF0000FF3F8000FE3F8000FC1FC000F
1060 C0FE000FC07F000FC07F000FC03F800FC01FC00FC00FC00FC00FE0FFFC3FFEFFFC3FFEFF
1061 FC3FFE1F2A7EA924>I<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
1062 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
1063 0FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7DA914>I<FFC07F800FF000
1064 FFC1FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F000FD801FF003F800F
1065 F001FE003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC003F800FE0
1066 01FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001
1067 FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC
1068 003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3
1069 FFF8351B7D9A3A>I<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0000FD8
1070 03F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
1071 F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
1072 000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80
1073 211B7D9A26>I<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F
1074 0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF
1075 0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001
1076 FFFC00003FE0001D1B7E9A22>I<FFE1FE0000FFE7FF8000FFFE07E0000FF803F0000FF0
1077 01F8000FE000FC000FE000FE000FE000FF000FE0007F000FE0007F000FE0007F800FE000
1078 7F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE000FF
1079 000FE000FF000FE000FE000FE001FC000FF001F8000FF803F0000FFE0FE0000FEFFF8000
1080 0FE1FC00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
1081 E00000000FE00000000FE0000000FFFE000000FFFE000000FFFE00000021277E9A26>I<
1082 FFC1F0FFC7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0000FE0000FE000
1083 0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
1084 FFFF00FFFF00FFFF00181B7E9A1C>114 D<03FE300FFFF01E03F03800F0700070F00070
1085 F00070F80070FE0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80007FC6000FC
1086 E0007CE0003CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<0070
1087 0000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFF
1088 F0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
1089 0007F00007F00007F03807F03807F03807F03807F03807F03803F03803F87001F86000FF
1090 C0001F8015267FA51B>I<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003F800
1091 0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
1092 E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
1093 03F8000FE003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3
1094 FF80211B7D9A26>I<FFFC3FFC0FFEFFFC3FFC0FFEFFFC3FFC0FFE0FE007E000E007F003
1095 F001C007F003F001C007F807F803C003F807F8038003F807F8038001FC0EFC070001FC0E
1096 FC070001FC1EFE0F0000FE1C7E0E0000FE1C7E0E0000FF383F1E00007F383F1C00007F78
1097 3F1C00003FF01FB800003FF01FB800003FE00FF800001FE00FF000001FE00FF000000FC0
1098 07E000000FC007E000000FC007E00000078003C00000078003C0002F1B7F9A32>119
1099 D<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F803800001FC07800000FE0F0000
1100 00FF1E0000007F3C0000003FF80000001FF00000001FF00000000FF000000007F0000000
1101 07F80000000FFC0000001FFE0000001EFE0000003C7F000000783F800000F01FC00001E0
1102 1FE00003C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80211B7F9A24>I<FF
1103 FE03FF80FFFE03FF80FFFE03FF800FF000780007F000700007F800F00003F800E00003FC
1104 01E00001FC01C00001FC01C00000FE03800000FE03800000FF078000007F070000007F8F
1105 0000003F8E0000003FCE0000001FDC0000001FDC0000000FF80000000FF80000000FF800
1106 000007F000000007F000000003E000000003E000000001C000000001C000000003800000
1107 000380000038078000007C07000000FE0F000000FE0E000000FE1C000000FE3C0000007C
1108 780000003FE00000000F8000000021277F9A24>I E /Fx 24 121
1109 df<7FF0FFE00C027F890E>45 D<07FFFFC000F803C000F001C000F0008000F0008000F0
1110 008000F0008001E0008001E0208001E0200001E0200001E0600001E0E00003FFC00003C0
1111 C00003C0400003C0400003C0400003C04000078000000780000007800000078000000780
1112 0000078000000F0000000F800000FFF800001A1C7E9B1B>70 D<003F0400C0CC01803803
1113 00380600180E00180E00180E00181E00101E00001F00000F80000FF80007FF0003FF8001
1114 FFC0003FE00003E00001E00000E00000E04000E04000E04000E04000C06001C0E00180F0
1115 0300CC0E0083F800161E7E9C17>83 D<FFE007F81F8001C00F0001800F80010007800200
1116 07C0040003C00C0003C0080003E0100001E0200001F0600000F0400000F8800000F90000
1117 007B0000007E0000003C0000003C00000038000000780000007800000078000000780000
1118 007800000070000000F0000000F800000FFF00001D1C7B9B1F>89
1119 D<03FFFF8007C00F0007001E0006003C0006007C00040078000400F0000801E0000803E0
1120 000003C00000078000000F0000001F0000001E0000003C00000078000000F8000000F004
1121 0001E0080003C0080007800800078018000F0010001E0030003C0030003C00F0007803E0
1122 00FFFFE000191C7E9B19>I<07F0001C18001E0C001C0E00180E00000E00000E0001FE00
1123 0F0E001C1C00301C00701C00E01C40E01C40E03C40E05C80709D803F0E0012127D9115>
1124 97 D<3F00000F00000E00000E00000E00000E00000E00000E00001C00001C00001C0000
1125 1C7C001D87001E01803C01803801C03800C03800E03800E03800E07001C07001C07001C0
1126 700380700300700600F00C00CC380083E000131D7C9C17>I<00FE000307000E07801C07
1127 00380600380000700000700000700000E00000E00000E000006000007002007004003008
1128 001C300007C00011127E9112>I<01F8070C0C0618073803300370037FFF7000E000E000
1129 E00060006002700430081C3007C010127E9112>101 D<000F800039C00061C000E3C001
1130 C18001C00001C00001C0000380000380000380003FF80003800003800007000007000007
1131 00000700000700000700000E00000E00000E00000E00000E00000E00001C00001E0000FF
1132 C000121D7F9C0D>I<000038007CCC01871C0303080703800E03800E03800E03800E0380
1133 0E0700060600070C0009F0000800001800001800001FFE000FFF800FFFC03001C06000C0
1134 6000E0C000C0C000C0600180200300180E0007F000161C809215>I<07E00001E00001C0
1135 0001C00001C00001C00001C00001C000038000038000038000038F8003B0C003C0E00780
1136 E00780E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03
1137 801E03C0FF9FF0141D7F9C17>I<00C001C001C001800000000000000000000000000000
1138 1F80078003800700070007000700070007000E000E000E000E000E000E001C001E00FF80
1139 0A1D7F9C0C>I<07E00001E00001C00001C00001C00001C00001C00001C0000380000380
1140 000380000381FC0380E00380C007010007020007080007100007300007F8000F38000E3C
1141 000E1C000E1E000E0E000E0F001C07001C0F80FF9FE0161D7F9C16>107
1142 D<07E001E001C001C001C001C001C001C003800380038003800380038007000700070007
1143 00070007000E000E000E000E000E000E001C001E00FF800B1D7F9C0C>I<1F8FC0FC0007
1144 9061060003E0760700078078070007807807000700700700070070070007007007000700
1145 7007000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E001C01C0
1146 1C001E01E01E00FF8FF8FF8021127F9124>I<1F8F8007B0C003C0E00780E00780E00700
1147 E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF9F
1148 F014127F9117>I<00FC000307000E01801C01C03800C03000C07000E07000E07000E0E0
1149 01C0E001C0E001C0600180600380700700380E001C180007E00013127E9115>I<1F9C07
1150 EE03CF078E078C07000700070007000E000E000E000E000E000E001C001E00FFC010127F
1151 9110>114 D<03F20C0E18061004300438043E001FE00FF007F8003C401C400C400C6018
1152 E010D0608FC00F127F9110>I<020002000200060006000C001C003C00FFE01C001C0038
1153 0038003800380038003800700070407040704070407080708031001E000B1A7C9910>I<
1154 FC1F803C07801C0380380700380700380700380700380700380700700E00700E00700E00
1155 700E00701E00701E00703C00305E001F9F8011127C9117>I<FF3FC7E03C0F0380380E01
1156 00380E03003C1F02001C1706001C3704001C270C001C6308001C4318001EC390000E83B0
1157 000F83A0000F03E0000F01C0000E01C0000E018000040180001B127C911E>119
1158 D<1FE1FC0781E003808003C10001C20000E60000EC00007800007000003800007C00009C
1159 00011E00020E000407000C07003C0780FE1FF016127F9116>I E
1160 /Fy 87 128 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E
1161 01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E
1162 01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
1163 01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E
1164 03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E
1165 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F
1166 87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01C0
1167 0E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
1168 0E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<003F07E000
1169 01C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00E000000E
1170 00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E00
1171 E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E0
1172 1C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C
1173 23>I<0E0E1E3870E0800707779C15>19 D<3C42818181423C0807759D1F>23
1174 D<60F0F0F0F0F0F0F060606060606060606060606060000000000060F0F060041E7C9D0C
1175 >33 D<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>I<60F0
1176 F8680808081010204080050C7C9C0C>39 D<00800100020006000C000C00180018003000
1177 300030006000600060006000E000E000E000E000E000E000E000E000E000E000E000E000
1178 6000600060006000300030003000180018000C000C000600020001000080092A7C9E10>
1179 I<8000400020003000180018000C000C0006000600060003000300030003000380038003
1180 8003800380038003800380038003800380038003000300030003000600060006000C000C
1181 00180018003000200040008000092A7E9E10>I<60F0F0701010101020204080040C7C83
1182 0C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<03C00C301818300C300C70
1183 0E60066006E007E007E007E007E007E007E007E007E007E007E007E007E0076006600670
1184 0E300C300C18180C3007E0101D7E9B15>48 D<010007003F00C700070007000700070007
1185 000700070007000700070007000700070007000700070007000700070007000700070007
1186 00FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E
1187 001C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>
1188 I<07E01830201C201C781E780E781E381E001C001C00180030006007C00030001C001C00
1189 0E000F000F700FF80FF80FF80FF00E401C201C183007C0101D7E9B15>I<000C00000C00
1190 001C00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00
1191 101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00
1192 001C0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E02C
1193 303018301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C010
1194 1D7E9B15>I<00F0030C04040C0E181E301E300C700070006000E3E0E430E818F00CF00E
1195 E006E007E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<40
1196 00007FFF807FFF007FFF0040020080040080040080080000100000100000200000600000
1197 400000C00000C00001C00001800001800003800003800003800003800007800007800007
1198 8000078000078000078000030000111D7E9B15>I<03E00C301008200C20066006600670
1199 0670067C0C3E183FB01FE007F007F818FC307E601E600FC007C003C003C003C003600260
1200 04300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007
1201 E007E0076007700F300F18170C2707C700060006000E300C780C78187018203010C00F80
1202 101D7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F06000
1203 00000000000000000060F0F0701010101020204080041A7C910C>I<0FE03038401CE00E
1204 F00EF00EF00E000C001C0030006000C00080018001000100010001000100010000000000
1205 00000000000003000780078003000F1D7E9C14>63 D<003F800000C06000030018000400
1206 04000800020010000100201F00802070808040E0404040C0384041C03840818038208380
1207 3820838038208380382083803820838038208180382041C0382040C0384040E078402070
1208 9880201F0F00100000000800000004000000030001E000C01F80003FF0001B1D7E9C20>
1209 I<000600000006000000060000000F0000000F0000000F000000178000001780000037C0
1210 000023C0000023C0000043E0000041E0000041E0000080F0000080F0000080F000010078
1211 000100780001FFF80002003C0002003C0002003C0004001E0004001E000C001F000C000F
1212 001E001F00FF00FFF01C1D7F9C1F>I<FFFFC0000F0078000F003C000F001E000F000E00
1213 0F000F000F000F000F000F000F000F000F000E000F001E000F003C000F00F8000FFFF000
1214 0F003C000F001E000F000F000F0007000F0007800F0007800F0007800F0007800F000780
1215 0F000F000F000F000F001E000F007800FFFFE000191C7F9B1D>I<001F808000E0618001
1216 801980070007800E0003801C0003801C00018038000180780000807800008070000080F0
1217 000000F0000000F0000000F0000000F0000000F0000000F0000000F00000007000008078
1218 00008078000080380000801C0001001C0001000E000200070004000180080000E0300000
1219 1FC000191E7E9C1E>I<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F00
1220 03800F0003C00F0001C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F00
1221 01E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F00
1222 0E000F001C000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F0004
1223 0F00060F00020F00020F01020F01000F01000F01000F03000FFF000F03000F01000F0100
1224 0F01000F01010F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E
1225 9B1C>I<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F01040F01000F01
1226 000F01000F03000FFF000F03000F01000F01000F01000F01000F00000F00000F00000F00
1227 000F00000F00000F00000F0000FFF800161C7E9B1B>I<001F808000E061800180198007
1228 0007800E0003801C0003801C00018038000180780000807800008070000080F0000000F0
1229 000000F0000000F0000000F0000000F0000000F000FFF0F0000F80700007807800078078
1230 000780380007801C0007801C0007800E00078007000B800180118000E06080001F80001C
1231 1E7E9C21>I<FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F00
1232 0F000F000F000F000F000F000F000F000F000F000F000FFFFF000F000F000F000F000F00
1233 0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
1234 0F000F000F00FFF0FFF01C1C7F9B1F>I<FFF00F000F000F000F000F000F000F000F000F
1235 000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FF
1236 F00C1C7F9B0F>I<07FF80007C00003C00003C00003C00003C00003C00003C00003C0000
1237 3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0070
1238 3C00F83C00F83C00F8380070780040700030E0000F8000111D7F9B15>I<FFF01FE00F00
1239 07800F0006000F0004000F0008000F0010000F0020000F0040000F0080000F0100000F02
1240 00000F0600000F0F00000F1780000F2780000F43C0000F81E0000F01E0000F00F0000F00
1241 78000F0078000F003C000F003E000F001E000F000F000F000F800F000FC0FFF03FF01C1C
1242 7F9B20>I<FFF8000F80000F00000F00000F00000F00000F00000F00000F00000F00000F
1243 00000F00000F00000F00000F00000F00000F00000F00000F00080F00080F00080F00180F
1244 00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>I<FF8000FF800F8000F8000F80
1245 00F8000BC00178000BC00178000BC001780009E002780009E002780008F004780008F004
1246 780008F0047800087808780008780878000878087800083C107800083C107800083C1078
1247 00081E207800081E207800081E207800080F407800080F40780008078078000807807800
1248 080780780008030078001C03007800FF8307FF80211C7E9B26>I<FF001FF00F8003800F
1249 C001000BC0010009E0010008F0010008F0010008780100083C0100083E0100081E010008
1250 0F0100080F8100080781000803C1000801E1000801F1000800F1000800790008007D0008
1251 003D0008001F0008001F0008000F0008000700080003001C000300FF8001001C1C7F9B1F
1252 >I<003F800000E0E0000380380007001C000E000E001C0007003C000780380003807800
1253 03C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F000
1254 01E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E000700
1255 1C000380380000E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F003C0F001C
1256 0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F0000
1257 0F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000171C7E
1258 9B1C>I<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380
1259 780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0
1260 F00001E0F00001E0700001C0780003C0780003C0380003803C0E07801C1107000E208E00
1261 07205C0003A0780000F0E020003FE0200000602000003060000038E000003FC000003FC0
1262 00001F8000000F001B257E9C20>I<FFFF00000F01E0000F0078000F003C000F001C000F
1263 001E000F001E000F001E000F001E000F001C000F003C000F0078000F01E0000FFF00000F
1264 01E0000F0070000F0078000F003C000F003C000F003C000F003C000F003C000F003C000F
1265 003C100F003C100F001C100F001C10FFF00E20000003C01C1D7E9B1F>I<07E0801C1980
1266 300580300380600180E00180E00080E00080E00080F00000F800007C00007FC0003FF800
1267 1FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C00180
1268 E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F004040
1269 0F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F000000
1270 0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
1271 0F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>I<FFF01FF00F00
1272 03800F0001000F0001000F0001000F0001000F0001000F0001000F0001000F0001000F00
1273 01000F0001000F0001000F0001000F0001000F0001000F0001000F0001000F0001000F00
1274 01000F0001000F00010007000200078002000380040001C0040000E0180000706000000F
1275 80001C1D7F9B1F>I<FFE00FF01F0003C01F0001800F0001000F00010007800200078002
1276 0007C0020003C0040003C0040003E00C0001E0080001E0080000F0100000F0100000F810
1277 000078200000782000003C4000003C4000003C4000001E8000001E8000001F8000000F00
1278 00000F00000006000000060000000600001C1D7F9B1F>I<FFE1FFC0FF1F003E003C1E00
1279 3C00180F001E00100F001E00100F001E001007801F002007801F002007801F002003C027
1280 804003C027804003C027804001E043C08001E043C08001E043C08000F081E10000F081E1
1281 0000F081E10000F900F300007900F200007900F200007E007E00003E007C00003E007C00
1282 003C003C00001C003800001C00380000180018000008001000281D7F9B2B>I<FFF07FC0
1283 0FC01E0007800C0007C0080003C0100001E0200001F0200000F0400000788000007C8000
1284 003D0000003E0000001F0000000F0000000F8000000F80000013C0000023E0000021E000
1285 0040F0000080F8000080780001007C0002003E0002001E0006001F001F001F80FF807FF0
1286 1C1C7F9B1F>I<FFF003FC0F8001E0078000C007C0008003C0010003E0030001E0020000
1287 F0040000F8040000780800007C1800003C1000003E2000001F2000000F4000000FC00000
1288 078000000780000007800000078000000780000007800000078000000780000007800000
1289 07800000078000007FF8001E1C809B1F>I<7FFFF07C01F07001E06003C06003C0400780
1290 400F80400F00401E00001E00003C00007C0000780000F00000F00001E00003E00003C010
1291 0780100780100F00101F00301E00203C00203C00607800E0F803E0FFFFE0141C7E9B19>
1292 I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
1293 C0C0C0C0FEFE07297C9E0C>I<08081010202040404040808080808080B0B0F8F8787830
1294 300D0C7A9C15>I<FEFE0606060606060606060606060606060606060606060606060606
1295 0606060606060606060606FEFE0729809E0C>I<0810204040808080B0F87830050C7D9C
1296 0C>96 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C
1297 00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>I<FC00001C00001C
1298 00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001D87001E01801C
1299 00C01C00E01C00601C00701C00701C00701C00701C00701C00701C00601C00E01C00C01E
1300 018019070010FC00141D7F9C17>I<03F80C0C181E301E700C6000E000E000E000E000E0
1301 00E00060007002300218040C1803E00F127F9112>I<001F800003800003800003800003
1302 8000038000038000038000038000038000038003F3800E0B801807803003807003806003
1303 80E00380E00380E00380E00380E00380E003806003807003803003801807800E1B8003E3
1304 F0141D7F9C17>I<07E00C301818300C700E6006E006FFFEE000E000E000E00060007002
1305 300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E
1306 00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E007F
1307 E00F1D809C0D>I<00038007C4C01C78C0383880301800701C00701C00701C00701C0030
1308 18003838001C700027C0002000002000003000003FF8001FFF001FFF802003806001C0C0
1309 00C0C000C0C000C06001803003001C0E0007F800121C7F9215>I<FC00001C00001C0000
1310 1C00001C00001C00001C00001C00001C00001C00001C00001C7C001C87001D03001E0380
1311 1C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1312 1C0380FF9FF0141D7F9C17>I<18003C003C0018000000000000000000000000000000FC
1313 001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF8009
1314 1D7F9C0C>I<00C001E001E000C0000000000000000000000000000007E000E000E000E0
1315 00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0
1316 F0C0F1C061803E000B25839C0D>I<FC00001C00001C00001C00001C00001C00001C0000
1317 1C00001C00001C00001C00001C0FE01C07801C06001C0C001C10001C20001C40001CE000
1318 1DE0001E70001C78001C38001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>
1319 I<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
1320 001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC7E07E0001C
1321 838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C001C01C01C001C01
1322 C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
1323 1C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87001D03001E03801C03801C03
1324 801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9F
1325 F014127F9117>I<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E0
1326 01C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>I<FC7C00
1327 1D87001E01801C01C01C00E01C00E01C00701C00701C00701C00701C00701C00701C00E0
1328 1C00E01C01C01E01801D07001CFC001C00001C00001C00001C00001C00001C00001C0000
1329 FF8000141A7F9117>I<03E0800E1980180580380780700380700380E00380E00380E003
1330 80E00380E00380E003807003807003803807801807800E1B8003E3800003800003800003
1331 80000380000380000380000380001FF0141A7F9116>I<FCE01D381E781E781C301C001C
1332 001C001C001C001C001C001C001C001C001C001C00FFC00D127F9110>I<1F9020704030
1333 C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F9110>
1334 I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C
1335 001C101C101C101C101C100C100E2003C00C1A7F9910>I<FC1F801C03801C03801C0380
1336 1C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C0780
1337 0E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E02000E02000F06000704
1338 0007040003880003880003C80001D00001D00000E00000E00000E00000400013127F9116
1339 >I<FF3FC7E03C0703C01C0701801C0701001C0B01000E0B82000E0B82000E1182000711
1340 C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C07000018030000080
1341 20001B127F911E>I<FF0FE01E07001C06000E040007080003900003B00001E00000E000
1342 00F00001F000013800021C00041C000C0E001807003C0780FE1FF014127F9116>I<FF07
1343 E03C03801C01001C01000E02000E02000F060007040007040003880003880003C80001D0
1344 0001D00000E00000E00000E000004000004000008000008000F08000F10000F300006600
1345 00380000131A7F9116>I<7FFC70386038407040F040E041C003C0038007000F040E041C
1346 043C0C380870087038FFF80E127F9112>I<FFFFF01401808B15>I<FFFFFFFFFF80290180
1347 8B2A>I<6060F0F0F0F060600C047C9C15>127 D E /Fz 16 116
1348 df<003F0201C0C603002E0E001E1C000E1C0006380006780002700002700002F00000F0
1349 0000F00000F00000F00000F000007000027000027800023800041C00041C00080E000803
1350 003001C0C0003F00171A7D991D>67 D<FFF0000E00000E00000E00000E00000E00000E00
1351 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00100E00
1352 100E00100E00300E00200E00600E00600E01E0FFFFE0141A7D991A>76
1353 D<FFFF000E01E00E00700E00780E00380E003C0E003C0E003C0E003C0E00380E00780E00
1354 700E01E00FFF000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
1355 000E0000FFE000161A7D991C>80 D<07E100181B00200700600300C00300C00100C00100
1356 C00100E000007000007E00003FE0001FFC0003FE00003F00000700000380000380800180
1357 800180800180C00100C00300E00200DC0C0083F000111A7D9917>83
1358 D<00600000600000F00000F00000F000013800013800013800021C00021C00040E00040E
1359 0007FE000807000807001007801003803803C0FC0FF014137F9217>97
1360 D<01F080060D801C0380380180300180700080600080E00000E00000E00000E00000E000
1361 006000807000803000803801001C0200060C0001F00011137E9216>99
1362 D<FFFF001C03001C01001C01801C00801C00801C10001C10001C30001FF0001C30001C10
1363 001C10401C00401C00401C00801C00801C0380FFFF8012137F9215>101
1364 D<01F8400706C00C01C03800C03000C0700040600040E00000E00000E00000E01FF0E001
1365 C06001C07001C03001C03801C00C01C00702C001FC4014137E9218>103
1366 D<FF801C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
1367 00FF8009137F920B>105 D<FF80001C00001C00001C00001C00001C00001C00001C0000
1368 1C00001C00001C00001C00001C00801C00801C01801C01001C03001C0700FFFF00111380
1369 9213>108 D<FE003F801E003C001E003C0017005C0017005C0013809C0013809C001380
1370 9C0011C11C0011C11C0010E21C0010E21C0010E21C0010741C0010741C0010381C001038
1371 1C0038381C00FE10FF8019137F921C>I<FC07F01E01C01F008017008013808011C08011
1372 C08010E080107080107880103880101C80100E80100E80100780100380100180380180FE
1373 008014137F9217>I<03F8000E0E001C07003803807001C07001C06000C0E000E0E000E0
1374 E000E0E000E0E000E0E000E07001C07001C03803801C07000E0E0003F80013137E9218>
1375 I<FFF8001C0E001C07001C03801C03801C03801C03801C07001C0E001FF8001C00001C00
1376 001C00001C00001C00001C00001C00001C0000FF800011137F9215>I<FFF8001C0E001C
1377 07001C03801C03801C03801C03801C07001C0E001FF8001C0E001C07001C07001C07001C
1378 07001C07001C07081C0388FF81F01513809216>114 D<1F9020704030C010C010C000E0
1379 007C007F803FC007E000700070003080308030C020E0409F800C137E9211>I
1380 E /FA 49 123 df<00FE000381000601800E03801C01001C00001C00001C00001C00001C
1381 0000FFFF801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
1382 03801C03801C03801C0380FF8FF0141A809915>12 D<007E1F8001C170400703C0600603
1383 80E00E0380400E0380000E0380000E0380000E0380000E038000FFFFFFE00E0380E00E03
1384 80E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E03
1385 80E00E0380E00E0380E00E0380E07F8FE3FC1E1A809920>14 D<60F0F070101010202040
1386 40040B7D830B>44 D<FFC0FFC00A0280880D>I<60F0F06004047D830B>I<07E01C38381C
1387 300C700E60066006E007E007E007E007E007E007E007E007E007E00760066006700E300C
1388 381C1C3807E010187F9713>48 D<03000700FF0007000700070007000700070007000700
1389 0700070007000700070007000700070007000700070007007FF80D187D9713>I<0F8010
1390 6020304038803CC01CE01C401C003C003800380070006000C00180010002000404080410
1391 0430083FF87FF8FFF80E187E9713>I<07E01838201C601E700E201E001E001C001C0038
1392 007007E00038001C000E000F000FE00FE00FC00F400E601C183807E010187F9713>I<00
1393 1800180038007800F800B8013802380238043808381838103820384038C038FFFF003800
1394 38003800380038003803FF10187F9713>I<30183FF03FE03F8020002000200020002000
1395 2FC03060203000380018001C001C401CE01CE01C80184038403030E00F800E187E9713>
1396 I<01F807040C06180E300E300070006000E000E3E0E418E80CF00EE006E007E007E00760
1397 0760077006300E180C0C3807E010187F9713>I<40007FFF7FFE7FFE4004800880108010
1398 002000400040008001800100030003000700060006000E000E000E000E000E0004001019
1399 7E9813>I<07E01818300C2006600660067006780C3E181F3007C003E00CF8307C601E60
1400 0FC007C003C003C00360022004181807E010187F9713>I<07E01C303018700C600EE006
1401 E006E007E007E0076007700F3017182707C700070006000E000C700C7018603030600F80
1402 10187F9713>I<60F0F060000000000000000060F0F06004107D8F0B>I<000C0000000C00
1403 00000C0000001E0000001E0000002F000000270000002700000043800000438000004380
1404 000081C0000081C0000181E0000100E0000100E00003FFF0000200700002007000040038
1405 00040038000400380008001C0008001C003C001E00FF00FFC01A1A7F991D>65
1406 D<003F0201C0C603002E0E001E1C000E1C0006380006780002700002700002F00000F000
1407 00F00000F00000F00000F000007000027000027800023800041C00041C00080E00080300
1408 3001C0C0003F00171A7E991C>67 D<FFFFF80E00380E00180E00080E000C0E00040E0004
1409 0E00040E01000E01000E01000E03000FFF000E03000E01000E01000E01000E00000E0000
1410 0E00000E00000E00000E00000E00000E0000FFE000161A7F9919>70
1411 D<FF801C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
1412 001C001C001C001C001C001C001C00FF80091A7E990E>73 D<FE007FC00F000E000F0004
1413 000B80040009C0040009C0040008E00400087004000870040008380400081C0400081C04
1414 00080E04000807040008038400080384000801C4000800E4000800E4000800740008003C
1415 0008003C0008001C0008000C001C000C00FF8004001A1A7F991D>78
1416 D<FFFF800E01E00E00700E00780E00380E003C0E003C0E003C0E003C0E00380E00780E00
1417 700E01E00FFF800E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
1418 000E0000FFE000161A7F991A>80 D<007F000001C1C000070070000E0038001C001C003C
1419 001E0038000E0078000F0070000700F0000780F0000780F0000780F0000780F0000780F0
1420 000780F0000780F00007807000070078000F0038000E003C1C1E001C221C000E41380007
1421 41F00001E1C000007F80800000C0800000C0800000E18000007F0000007F0000003E0000
1422 001C0019217E991E>I<0FC21836200E6006C006C002C002C002E00070007E003FE01FF8
1423 03FC007E000E00070003800380038003C002C006E004D81887E0101A7E9915>83
1424 D<7FFFFF00701C0700401C0100401C0100C01C0180801C0080801C0080801C0080001C00
1425 00001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C00
1426 00001C0000001C0000001C0000001C0000001C0000001C0000001C000003FFE000191A7F
1427 991C>I<1FC000387000383800101C00001C00001C0003FC001E1C00381C00701C00E01C
1428 00E01C80E01C80E03C80705F801F8F0011107F8F13>97 D<FC00001C00001C00001C0000
1429 1C00001C00001C00001C00001C00001C00001CFC001D07001E03801C01C01C00C01C00E0
1430 1C00E01C00E01C00E01C00E01C00E01C01C01C01801E030019060010F800131A809915>
1431 I<07F81C1C381C70087000E000E000E000E000E000E0007000700438081C1807E00E107F
1432 8F11>I<003F0000070000070000070000070000070000070000070000070000070003E7
1433 000C1700180F00300700700700E00700E00700E00700E00700E00700E007006007007007
1434 00380F001C370007C7E0131A7F9915>I<07C01C3030187018600CE00CFFFCE000E000E0
1435 00E0006000700438081C1807E00E107F8F11>I<01F007180E381C101C001C001C001C00
1436 1C001C00FFC01C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80
1437 0D1A80990C>I<0FCF001871803030007038007038007038007038003030001860002FC0
1438 006000006000007000003FF0003FFC001FFE00600F00C00300C00300C00300C003006006
1439 00381C0007E00011187F8F13>I<FC00001C00001C00001C00001C00001C00001C00001C
1440 00001C00001C00001C7C001D87001E03801E03801C03801C03801C03801C03801C03801C
1441 03801C03801C03801C03801C03801C0380FF9FF0141A809915>I<183C3C180000000000
1442 00FC1C1C1C1C1C1C1C1C1C1C1C1C1C1CFF081A80990A>I<FC00001C00001C00001C0000
1443 1C00001C00001C00001C00001C00001C00001C1FC01C0F001C0C001C18001C20001C4000
1444 1CE0001DE0001E70001C78001C38001C1C001C1E001C0F001C0F80FF9FE0131A809914>
1445 107 D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
1446 001C001C001C001C001C001C001C001C00FF80091A80990A>I<FC7C1F001D8E63801E07
1447 81C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C07
1448 01C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>I<FC7C001D87001E03801E03
1449 801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9F
1450 F01410808F15>I<07E01C38300C700E6006E007E007E007E007E007E0076006700E381C
1451 1C3807E010107F8F13>I<FCFC001D07001E03801C01C01C01C01C00E01C00E01C00E01C
1452 00E01C00E01C00E01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C
1453 00001C0000FF80001317808F15>I<03E1000C1300180B00300F00700700E00700E00700
1454 E00700E00700E00700E00700700700700700380F001C370007C700000700000700000700
1455 000700000700000700003FE013177F8F14>I<FC781D9C1E1C1E081C001C001C001C001C
1456 001C001C001C001C001C001C00FF800E10808F0F>I<1F2060E04020C020C020F0007F00
1457 3FC01FE000F080708030C030C020F0408F800C107F8F0F>I<0800080008000800180018
1458 003800FFC038003800380038003800380038003800382038203820382018201C4007800B
1459 177F960F>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1460 1C03801C03801C07800C07800E0B8003F3F01410808F15>I<FF0F803C07001C06001C04
1461 001C04000E08000E080007100007100007100003A00003A00001C00001C00001C0000080
1462 0011107F8F14>I<FE7F1F80381C07003C1C06001C0C04001C0E04000E1608000E170800
1463 0E170800072310000723900007A3900003C1A00003C1E0000180C0000180C0000180C000
1464 19107F8F1C>I<FF0F803C07001C06001C04001C04000E08000E08000710000710000710
1465 0003A00003A00001C00001C00001C000008000008000010000010000E10000E20000E400
1466 0078000011177F8F14>121 D<FFF8E070C07080E081C081C00380070007000E041C041C
1467 04380870087038FFF80E107F8F11>I E /FB 7 117 df<00030000000780000007800000
1468 0FC000000FC000000FC000001BE000001BE000003BF0000031F0000031F0000060F80000
1469 60F80000E0FC0000C07C0000C07C0001803E0001FFFE0003FFFF0003001F0007001F8006
1470 000F8006000F800C0007C0FF803FFCFF803FFC1E1A7F9921>65 D<1FF000383C007C1E00
1471 7C0F007C0F00380F00000F0000FF000FCF003E0F007C0F00F80F00F80F00F80F00F81700
1472 7C27E01FC3E013117F9015>97 D<FC0000FC00003C00003C00003C00003C00003C00003C
1473 00003C00003CFE003F87803E01C03C01E03C00F03C00F03C00F83C00F83C00F83C00F83C
1474 00F83C00F03C00F03C01E03E01C03B078030FE00151A7E9919>I<03FC000F0E001C1F00
1475 3C1F00781F00780E00F80000F80000F80000F80000F800007800007800003C01801C0300
1476 0F060003FC0011117F9014>I<F8F0F9383A7C3A7C3C7C3C383C003C003C003C003C003C
1477 003C003C003C00FF80FF800E117E9012>114 D<1FD820784018C018C018F000FF807FE0
1478 3FF007F8003CC00CC00CE00CE008F830CFE00E117F9011>I<06000600060006000E000E
1479 001E003FF0FFF01E001E001E001E001E001E001E001E001E181E181E181E181E180F3003
1480 E00D187F9711>I E /FC 1 4 df<020002000200C218F2783AE00F800F803AE0F278C218
1481 0200020002000D0E7E8E12>3 D E /FD 54 124 df<001FC1F00070371800C03E3C0180
1482 7C3C0380783C070038000700380007003800070038000700380007003800070038000700
1483 380007003800FFFFFFC00700380007003800070038000700380007003800070038000700
1484 380007003800070038000700380007003800070038000700380007003800070038000700
1485 3800070038000700380007003C007FE1FFC01E2380A21C>11 D<001FC0000070200000C0
1486 100001803800038078000700780007003000070000000700000007000000070000000700
1487 00000700000007000000FFFFF80007007800070038000700380007003800070038000700
1488 380007003800070038000700380007003800070038000700380007003800070038000700
1489 3800070038000700380007003800070038007FE1FF80192380A21B>I<70F8FCFC740404
1490 0404080810102040060F7C840E>44 D<70F8F8F87005057C840E>46
1491 D<000080000180000180000300000300000300000600000600000600000C00000C00000C
1492 0000180000180000180000300000300000300000600000600000600000C00000C00000C0
1493 000180000180000180000180000300000300000300000600000600000600000C00000C00
1494 000C0000180000180000180000300000300000300000600000600000600000C00000C000
1495 00C0000011317DA418>I<01F000071C000C06001803003803803803807001C07001C070
1496 01C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0
1497 01E0F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07000C060007
1498 1C0001F00013227EA018>I<008003800F80F38003800380038003800380038003800380
1499 038003800380038003800380038003800380038003800380038003800380038003800380
1500 038007C0FFFE0F217CA018>I<03F0000C1C001007002007804003C04003C08003E0F003
1501 E0F801E0F801E0F801E02003E00003E00003C00003C0000780000700000E00001C000018
1502 0000300000600000C0000180000100000200200400200800201800603000403FFFC07FFF
1503 C0FFFFC013217EA018>I<03F8000C1E00100F002007804007C07807C07803C07807C038
1504 07C0000780000780000700000F00000C0000380003F000001C00000F0000078000078000
1505 03C00003C00003E02003E07003E0F803E0F803E0F003C04003C0400780200780100F000C
1506 1C0003F00013227EA018>I<000300000300000700000700000F00001700001700002700
1507 006700004700008700018700010700020700060700040700080700080700100700200700
1508 200700400700C00700FFFFF8000700000700000700000700000700000700000700000F80
1509 007FF015217FA018>I<1000801E07001FFF001FFE001FF80017E0001000001000001000
1510 0010000010000010000011F800120C001C07001803801003800001C00001C00001E00001
1511 E00001E00001E07001E0F001E0F001E0E001C08001C04003C04003802007001006000C1C
1512 0003F00013227EA018>I<007E0001C1000300800601C00C03C01C03C018018038000038
1513 0000780000700000700000F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F0
1514 01E0F001E0F001E0F001E07001E07001E07001E03801C03801C01803801C03000C060007
1515 0C0001F00013227EA018>I<4000006000007FFFE07FFFC07FFFC0400080C00100800100
1516 80020080020000040000080000080000100000200000200000600000400000C00000C000
1517 01C00001C000018000038000038000038000038000078000078000078000078000078000
1518 07800007800003000013237DA118>I<01F800060E000803001001802001806000C06000
1519 C06000C07000C07000C07801803E01003F02001FC4000FF80003F80001FC00067E00083F
1520 00100F803007C06003C06000E0C000E0C00060C00060C00060C000606000406000C03000
1521 801803000E0E0003F00013227EA018>I<01F000060C000C060018070038038070038070
1522 0380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E018
1523 05E00C05E00619E003E1E00001C00001C00001C000038000038030038078070078060070
1524 0C002018001030000FC00013227EA018>I<70F8F8F870000000000000000000000070F8
1525 F8F87005157C940E>I<000FE00000701C00008002000300018004000040080000200800
1526 00201007C01020183008203008084060040440C0078441C0038481C00382838003828380
1527 0382838003828380038283800382838003828380038281C0038241C0038240C007824060
1528 078420300B84201831881007C0F00800000008000000040000000300000E008000780070
1529 07C0000FFC001F237DA226>64 D<0001800000018000000180000003C0000003C0000003
1530 C0000005E0000005E0000009F0000008F0000008F0000010780000107800001078000020
1531 3C0000203C0000203C0000401E0000401E0000C01F0000800F0000800F0001FFFF800100
1532 078001000780020003C0020003C0020003C0040001E0040001E0040001E0080000F01C00
1533 00F03E0001F8FF800FFF20237EA225>I<0007E0100038183000E0063001C00170038000
1534 F0070000F00E0000701E0000701C0000303C0000303C0000307C00001078000010780000
1535 10F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000780000
1536 00780000107C0000103C0000103C0000101C0000201E0000200E00004007000040038000
1537 8001C0010000E0020000381C000007E0001C247DA223>67 D<FFFFF0000F801E00078007
1538 0007800380078001C0078000E0078000F007800078078000780780007C0780003C078000
1539 3C0780003C0780003E0780003E0780003E0780003E0780003E0780003E0780003E078000
1540 3E0780003E0780003C0780003C0780007C0780007807800078078000F0078000E0078001
1541 E0078003C0078007000F801E00FFFFF0001F227EA125>I<FFFFFFC00F8007C0078001C0
1542 078000C00780004007800040078000600780002007800020078000200780202007802000
1543 0780200007802000078060000780E00007FFE0000780E000078060000780200007802000
1544 078020000780200807800008078000080780001007800010078000100780003007800030
1545 07800070078000E00F8003E0FFFFFFE01D227EA121>I<FFFFFFC00F8007C0078001C007
1546 8000C0078000400780004007800060078000200780002007800020078020200780200007
1547 80200007802000078060000780E00007FFE0000780E00007806000078020000780200007
1548 802000078020000780000007800000078000000780000007800000078000000780000007
1549 800000078000000FC00000FFFE00001B227EA120>I<FFFC0FC007800780078007800780
1550 078007800780078007800780078007800780078007800780078007800780078007800780
1551 07800780078007800780078007800FC0FFFC0E227EA112>73 D<03FFE0001F00000F0000
1552 0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
1553 0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00700F00F8
1554 0F00F80F00F80E00F01E00401C0020380018700007C00013237EA119>I<FFFC001F8000
1555 0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
1556 0F00000F00000F00000F00000F00000F00000F00000F00000F00010F00010F00010F0001
1557 0F00030F00030F00020F00060F00060F001E1F007EFFFFFE18227DA11E>76
1558 D<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004F00009E004F00009E0
1559 04F00009E004780011E004780011E004780011E0043C0021E0043C0021E0043C0021E004
1560 1E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101E004078101E00407
1561 8101E00403C201E00403C201E00401E401E00401E401E00401E401E00400F801E00400F8
1562 01E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28227EA12D>I<FF80
1563 07FF07C000F807C0007005E0002004F0002004F0002004780020047C0020043C0020041E
1564 0020041F0020040F002004078020040780200403C0200401E0200401E0200400F0200400
1565 F8200400782004003C2004003E2004001E2004000F2004000F20040007A0040003E00400
1566 03E0040001E0040001E0040000E00E0000601F000060FFE0002020227EA125>I<000FE0
1567 0000783C0000E00E0003C00780078003C00F0001E00E0000E01E0000F03E0000F83C0000
1568 787C00007C7C00007C7800003C7800003CF800003EF800003EF800003EF800003EF80000
1569 3EF800003EF800003EF800003EF800003E7800003C7C00007C7C00007C3C0000783C0000
1570 781E0380F00E0420E00F0801E0078813C003C8178000E80E00007C3C02000FEC0200000C
1571 0200000C0200000E0600000F0E000007FC000007FC000007F8000003F8000001E01F2D7D
1572 A226>81 D<FFFFE000000F803C000007800E00000780078000078007C000078003C00007
1573 8003E000078003E000078003E000078003E000078003E000078003C000078007C0000780
1574 07800007800E000007803C000007FFE000000780700000078038000007801C000007801E
1575 000007800E000007800F000007800F000007800F000007800F000007800F800007800F80
1576 0007800F800007800F808007800FC080078007C0800FC003C100FFFC01E2000000007C00
1577 21237EA124>I<03F0200C0C601802603001E07000E0600060E00060E00060E00020E000
1578 20E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001
1579 E00000F00000F0000070800070800070800070800070C00060C00060E000C0F000C0C801
1580 80C6070081FC0014247DA21B>I<7FFFFFF8780780786007801840078008400780084007
1581 8008C007800C800780048007800480078004800780040007800000078000000780000007
1582 800000078000000780000007800000078000000780000007800000078000000780000007
1583 80000007800000078000000780000007800000078000000780000007800000078000000F
1584 C00001FFFE001E227EA123>I<FFFC07FF0FC000F8078000700780002007800020078000
1585 200780002007800020078000200780002007800020078000200780002007800020078000
1586 200780002007800020078000200780002007800020078000200780002007800020078000
1587 2007800020078000200380004003C0004003C0004001C0008000E0008000600100003006
1588 00001C08000003F00020237EA125>I<1FE000303800780C00780E003007000007000007
1589 0000070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817
1590 083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E0000
1591 0E00000E00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E0038
1592 0E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E0038
1593 0F00700C80600C41C0083F0017237FA21B>I<01FE000703000C07801C07803803007800
1594 00700000F00000F00000F00000F00000F00000F00000F000007000007800403800401C00
1595 800C010007060001F80012157E9416>I<0000E0000FE00001E00000E00000E00000E000
1596 00E00000E00000E00000E00000E00000E00000E00000E001F8E00704E00C02E01C01E038
1597 00E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E038
1598 00E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C0
1599 7801E07000E0F000E0FFFFE0F00000F00000F00000F00000F00000700000780020380020
1600 1C00400E008007030000FC0013157F9416>I<003E0000E30001C7800387800307800700
1601 00070000070000070000070000070000070000070000070000FFF8000700000700000700
1602 000700000700000700000700000700000700000700000700000700000700000700000700
1603 000700000700000700000780007FF000112380A20F>I<00007003F1980E1E181C0E1838
1604 07003807007807807807807807807807803807003807001C0E001E1C0033F00020000020
1605 00003000003800003FFE001FFFC00FFFE03000F0600030C00018C00018C00018C0001860
1606 00306000303800E00E038003FE0015217F9518>I<0E0000FE00001E00000E00000E0000
1607 0E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E0
1608 0F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
1609 0E00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C003E003E003E001C0000
1610 0000000000000000000000000000000E007E001E000E000E000E000E000E000E000E000E
1611 000E000E000E000E000E000E000E000E000E00FFC00A227FA10E>I<0E0000FE00001E00
1612 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03
1613 FC0E01F00E01C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E
1614 000E07000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>107
1615 D<0E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
1616 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B
1617 237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E0
1618 0E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E
1619 003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3
1620 FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00
1621 700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7
1622 FF18157F941B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F0
1623 0078F00078F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015
1624 157F9418>I<0E1F00FE61C00E80600F00700E00380E003C0E003C0E001E0E001E0E001E
1625 0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E0000
1626 0E00000E00000E00000E00000E00000E00000E00000E0000FFE000171F7F941B>I<01F8
1627 200704600E02601C01603801E07800E07800E0F000E0F000E0F000E0F000E0F000E0F000
1628 E0F000E07800E07800E03801E01C01E00C02E0070CE001F0E00000E00000E00000E00000
1629 E00000E00000E00000E00000E00000E0000FFE171F7E941A>I<0E3CFE461E8F0F0F0F06
1630 0F000E000E000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F94
1631 13>I<0F8830786018C018C008C008E008F0007F003FE00FF001F8003C801C800C800CC0
1632 0CC008E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00
1633 FFFC0E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E04
1634 0708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E00
1635 700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F00601700382
1636 7800FC7F18157F941B>I<FF80FE1E00781E00300E00200E00200700400700400780C003
1637 808003808001C10001C10000E20000E20000E20000740000740000380000380000380000
1638 1000001000002000002000002000004000F04000F08000F180004300003C0000171F7F94
1639 1A>121 D<FFFFFE1701808C18>123 D E /FE 16 120 df<007F802001FFE02007C07860
1640 0F001C601E0006E03C0003E0380001E0780000E0700000E070000060F0000060F0000060
1641 F0000020F0000020F0000020F8000020F80000007C0000007E0000003F0000003FC00000
1642 1FF800000FFF800007FFF00003FFFC0000FFFF00000FFF800000FFC000001FE0000007E0
1643 000003F0000001F0000000F0000000F8000000F880000078800000788000007880000078
1644 80000078C0000078C0000070E00000F0E00000E0F00000E0F80001C0EC000380C7000700
1645 C1F01E00807FFC00800FF0001D337CB125>83 D<FFFE000007FFFFFE000007FF0FF00000
1646 01F803F0000000E003F0000000C001F80000008000F80000018000FC00000100007E0000
1647 0200007E00000200003F00000400001F00000C00001F80000800000FC00010000007C000
1648 10000007E00020000003F00060000003F00040000001F80080000000FC0080000000FC01
1649 000000007E03000000003E02000000003F04000000001F84000000000F88000000000FD8
1650 0000000007F00000000007E00000000003E00000000003E00000000003E00000000003E0
1651 0000000003E00000000003E00000000003E00000000003E00000000003E00000000003E0
1652 0000000003E00000000003E00000000003E00000000003E00000000003E00000000003E0
1653 0000000003E00000000007F000000000FFFF80000000FFFF800030317FB032>89
1654 D<3FFFFFFF003FFFFFFF003FE0003E003F00003E003C00007C00380000FC00300000F800
1655 300001F000600001F000600003E000600003E000600007C00040000FC00040000F800040
1656 001F000040001F000000003E000000007E000000007C00000000F800000000F800000001
1657 F000000001F000000003E000000007E000000007C00000000F800000000F800000001F00
1658 0000001F000000003E000080007E000080007C00008000F800008000F800008001F00000
1659 8003F000018003E000018007C000018007C00001000F800003000F800003001F00000700
1660 3F00000F003E00001F007C00003F007C0001FF00FFFFFFFF00FFFFFFFF0021317CB028>
1661 I<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E
1662 0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E
1663 003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E
1664 047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<001FC00000F0300001C00C
1665 00078002000F0002000E000F001E001F003C001F003C001F007C00040078000000F80000
1666 00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000780000
1667 007C0000003C0000003C0000801E0000800E0001000F0001000780020001C00C0000F030
1668 00001FC000191F7E9E1D>99 D<003F800000E0E0000380380007003C000E001E001E001E
1669 001C000F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F80000
1670 00F8000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000
1671 801E0000800E0001000F0002000700020001C00C0000F03000001FC000191F7E9E1D>
1672 101 D<000000F0007F030801C1C41C0380E81C070070080F0078001E003C001E003C003E
1673 003E003E003E003E003E003E003E003E003E003E003E001E003C001E003C000F00780007
1674 0070000780E00009C1C000087F000018000000180000001800000018000000180000001C
1675 0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E0300000F070000070E0
1676 000038E0000038E0000038E0000038E00000387000007070000070380000E01C0001C007
1677 00070001C01C00003FE0001E2F7E9F21>103 D<0F001F801F801F801F800F0000000000
1678 00000000000000000000000000000000000007807F807F800F8007800780078007800780
1679 078007800780078007800780078007800780078007800780078007800780078007800780
1680 07800FC0FFF8FFF80D307EAF12>105 D<07800000FF800000FF8000000F800000078000
1681 000780000007800000078000000780000007800000078000000780000007800000078000
1682 00078000000780000007800000078000000780000007800FFE07800FFE078003F0078003
1683 800780030007800600078008000780100007802000078040000780800007818000078380
1684 00078FC0000793C00007A1E00007C1F0000780F0000780780007807C0007803C0007803E
1685 0007801F0007800F0007800F80078007C0078003C0078003E00FC007F8FFFC0FFFFFFC0F
1686 FF20327EB123>107 D<0780FF80FF800F80078007800780078007800780078007800780
1687 078007800780078007800780078007800780078007800780078007800780078007800780
1688 07800780078007800780078007800780078007800780078007800780078007800FC0FFFC
1689 FFFC0E327EB112>I<0780FE001FC000FF83078060F000FF8C03C18078000F9001E2003C
1690 0007A001E4003C0007A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00
1691 078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
1692 8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
1693 00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
1694 F0001E00078000F0001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF
1695 83FFF0FFFC1FFF83FFF0341F7E9E38>I<0780FE0000FF83078000FF8C03C0000F9001E0
1696 0007A001E00007A000F00007C000F00007C000F000078000F000078000F000078000F000
1697 078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
1698 8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
1699 00F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<00
1700 1FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C0001E03C0001E078
1701 0000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F8
1702 0000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007
1703 800F0001C01C0000F07800001FC0001D1F7E9E21>I<0783E0FF8418FF887C0F907C07A0
1704 7C07A03807C00007C00007C0000780000780000780000780000780000780000780000780
1705 000780000780000780000780000780000780000780000780000780000780000780000FC0
1706 00FFFE00FFFE00161F7E9E19>114 D<01FC100E03301800F0300070600030E00030E000
1707 10E00010E00010F00010F800007E00003FF0001FFF000FFFC003FFE0003FF00001F80000
1708 F880003C80003C80001CC0001CC0001CE0001CE00018F00038F00030CC0060C301C080FE
1709 00161F7E9E1A>I<FFF03FF80FFCFFF03FF80FFC0F8007E003F00F8003C001C0078003C0
1710 0080078003C0008007C003E0018003C003E0010003C004E0010003E004F0030001E004F0
1711 020001E00870020001F00878060000F00878040000F0103804000078103C08000078103C
1712 08000078201C0800003C201E1000003C201E1000003C400E1000001E400F2000001E400F
1713 2000001E80072000000F8007C000000F8007C000000F0003C00000070003800000070003
1714 80000006000180000002000100002E1F7F9E30>119 D E end
1715 %%EndProlog
1716 %%BeginSetup
1717 %%Feature: *Resolution 300dpi
1718 TeXDict begin
1720 %%EndSetup
1721 %%Page: 1 1
1722 1 0 bop 637 369 a FE(Screaming)21 b(Y)-6 b(ello)n(w)22
1723 b(Zonk)n(ers)792 490 y FD(Je\013rey)16 b(Mark)g(Siskind)1234
1724 472 y FC(\003)568 548 y FD(M.)g(I.)f(T.)h(Arti\014cial)f(In)o
1725 (telligence)e(Lab)q(oratory)559 606 y(545)18 b(T)l(ec)o(hnology)e
1726 (Square,)g(Ro)q(om)g(NE43{800b)779 664 y(Cam)o(bridge)f(MA)g(02139)866
1727 722 y(617/253{5)q(659)698 780 y(in)o(ternet:)20 b(Qobi@AI.MIT.EDU)431
1728 878 y(DRAFT)c(of)h(Sunda)o(y)l(,)e(29{Septem)o(b)q(er{1991)j(11:32:08)f
1729 (EDT)928 1069 y FB(Abstract)236 1134 y FA(Nondeterministi)q(c)d
1730 Fz(Lisp)d FA(is)i(a)e(v)n(arian)o(t)i(of)f Fz(Lisp)f
1731 FA(with)h(a)g(nondeterministic)j(c)o(hoice)e(op)q(erator.)k(This)c(man)
1732 o(ual)179 1180 y(describ)q(es)20 b(an)g(e\016cien)o(t)f(implemen)o
1733 (tation)j(of)d(nondeterministi)q(c)i Fz(Lisp)e FA(called)i
1734 Fz(Screamer)p FA(.)34 b Fz(Screamer)19 b FA(is)179 1225
1735 y(implemen)o(ted)14 b(as)e(a)g(fully)h(p)q(ortable)g(macro)g(pac)o(k)n
1736 (age)f(built)i(on)e(top)g(of)g Fz(Common)h(Lisp)p FA(.)j
1737 Fz(Screamer)c FA(functions)179 1271 y(in)o(ter-op)q(erate)f(in)f(the)f
1738 (same)h(en)o(vironmen)o(t)h(as)f(ordinary)h Fz(Lisp)e
1739 FA(functions)i(and)f(a)f(large)i(subset)f(of)f Fz(Common)k(Lisp)179
1740 1317 y FA(is)g(a)o(v)n(ailable)i(when)d(writing)i Fz(Screamer)e
1741 FA(functions.)18 b(In)12 b(addition)j(to)d(the)g(nondeterminis)q(tic)j
1742 (c)o(hoice)f(op)q(erator,)179 1362 y Fz(Screamer)f FA(pro)o(vides)h(a)f
1743 (forw)o(ard)g(c)o(hec)o(king)h(constrain)o(t)g(propagation)h(facilit)o
1744 (y)g(as)e(w)o(ell.)18 b(T)m(ogether)13 b(they)g(mak)o(e)179
1745 1408 y Fz(Screamer)g FA(an)g(e\016cien)o(t)h(mec)o(hanism)h(for)d
1746 (buildin)q(g)k(searc)o(h)d(programs.)75 1499 y Fy(TOPIC)h(AREAS:)g
1747 (nondeterministic)f(searc)o(h,)i(AI)f(programmi)o(ng)d(languages)1106
1748 1591 y(Caution!)18 b(This)13 b(pro)q(duct)i(ma)o(y)d(driv)o(e)i(y)o(ou)
1749 f(zonk)o(ers!)1168 1641 y Fx(F)m(rom)f(the)j(b)q(o)o(x)e(of)h
1750 (Screaming)e(Y)m(ello)o(w)h(Zonk)o(ers)75 1778 y Fw(1)69
1751 b(In)n(tro)r(duction)75 1894 y(2)g(Nondeterministi)o(c)20
1752 b(Expressions,)j(F)-6 b(unctions)23 b(and)h(Con)n(texts)75
1753 1985 y Fy(In)18 b(order)h(to)g(pro)o(vide)f(the)h(abilit)o(y)d(for)i
1754 (bac)o(ktrac)o(king,)h Fv(Screamer)g Fy(compiles)e(nondeterministic)g
1755 (functions)i(dif-)75 2034 y(feren)o(tly)d(than)g(deterministic)f
1756 (functions.)24 b(Accordingly)m(,)15 b(it)h(also)f(compiles)g(calls)g
1757 (to)h(nondeterministic)f(functions)75 2084 y(di\013eren)o(tly)h(than)g
1758 (calls)f(to)h(deterministic)f(functions.)24 b(F)m(or)16
1759 b(the)g(most)f(part)h(the)g(user)h(need)g(not)f(b)q(e)g(a)o(w)o(are)g
1760 (of)f(this)75 2134 y(di\013erence)h(as)f Fv(Screamer)g
1761 Fy(automatically)d(determines)j(whether)h(or)e(not)h(a)f(function)g(is)
1762 h(deterministic)f(and)g(com-)75 2184 y(piles)j(co)q(de)g(appropriately)
1763 m(.)26 b(There)18 b(are)f(certain)h(restriction)f(ho)o(w)o(ev)o(er.)27
1764 b(In)17 b(order)h(to)e(explain)g(these)j(restrictions)75
1765 2234 y(some)13 b(terminology)f(m)o(ust)g(b)q(e)j(de\014ned.)137
1766 2283 y(A)j Fu(deterministic)f(expr)n(ession)g Fy(is)g(an)g(expression)i
1767 (whic)o(h)e Fv(Screamer)h Fy(can)f(determine)h(to)f(yield)f(at)i(most)e
1768 (one)75 2333 y(v)n(alue.)30 b(A)18 b Fu(nondeterministic)g(expr)n
1769 (ession)h Fy(is)f(an)f(expression)i(whic)o(h)f Fv(Screamer)h
1770 Fy(cannot)f(determine)g(to)g(b)q(e)h(de-)75 2383 y(terministic.)29
1771 b(An)18 b(expression)g(migh)o(t)e(yield)h(no)h(more)f(than)g(one)h(v)n
1772 (alue)f(when)i(actually)d(ev)n(aluated)i(and)g(still)e(b)q(e)75
1773 2433 y(classi\014ed)h(as)f(nondeterministic)g(if)g Fv(Screamer)h
1774 Fy(cannot)f(determine)g(at)h(compile)d(time)h(that)i(it)f(is)g
1775 (deterministic.)75 2483 y Fv(Screamer)f Fy(classi\014es)f(the)h(follo)o
1776 (wing)c(expressions)k(as)f(deterministic:)p 75 2517 750
1777 2 v 121 2544 a Ft(\003)139 2556 y Fs(Need)d(thanks.)1002
1778 2723 y Fy(1)p eop
1779 %%Page: 2 2
1780 2 1 bop 137 195 a Fr(\017)21 b Fy(A)14 b(call)f(to)h(the)g
1781 Fq(map-values)e Fy(primitiv)o(e.)137 278 y Fr(\017)21
1782 b Fy(A)13 b(call)g(to)g(the)h Fq(one-value)d Fy(primitiv)o(e)g(pro)o
1783 (vided)j(that)f(the)h Fu(default-expr)n(ession)f Fy(is)g(either)i
1784 (absen)o(t)e(or)h(a)f(deter-)179 328 y(ministic)f(expression.)137
1785 411 y Fr(\017)21 b Fy(A)14 b(call)f(to)h(the)g Fq(all-values)e
1786 Fy(primitiv)o(e.)137 494 y Fr(\017)21 b Fy(A)13 b(call)f(to)g(the)i
1787 Fq(ith-value)d Fy(primitiv)o(e)f(pro)o(vided)j(b)q(oth)g(that)g(the)g
1788 (argumen)o(t)f Fp(i)h Fy(is)g(a)f(deterministic)h(expression)179
1789 544 y(and)g(that)h(the)h(the)f(argumen)o(t)f Fu(default-expr)n(ession)h
1790 Fy(is)g(either)h(absen)o(t)f(or)g(a)g(deterministic)f(expression.)137
1791 627 y Fr(\017)21 b Fy(A)14 b(call)f(to)h(the)g Fq(print-values)d
1792 Fy(primitiv)o(e.)137 710 y Fr(\017)21 b Fy(A)15 b Fq(function)e
1793 Fy(sp)q(ecial)i(form.)k(The)d(expression)g Fq(#'\(lambda)j(\()p
1794 Fp(:)7 b(:)g(:)o Fq(\))21 b Fp(:)7 b(:)g(:)o Fq(\))14
1795 b Fy(alw)o(a)o(ys)g(yields)h(a)f(single)h(v)n(alue)f(and)179
1796 760 y(is)e(th)o(us)g(deterministic)f(ev)o(en)i(though)e(that)h(v)n
1797 (alue)g(ma)o(y)d(itself)j(b)q(e)g(a)g(nondeterministic)f(function)h(ob)
1798 r(ject.)18 b(This)179 809 y(will)c(b)q(e)i(the)f(case)i(if)d(one)i(of)f
1799 (the)g(expressions)i(in)e(the)h(b)q(o)q(dy)f(of)g(the)h(lam)o(b)q(da)d
1800 (expression)k(is)e(nondeterminis-)179 859 y(tic.)23 b(Lik)o(ewise,)15
1801 b(the)i(expression)f Fq(#')p Fu(function-name)g Fy(alw)o(a)o(ys)f(is)g
1802 (deterministic.)23 b(It)15 b(will)g(ev)n(aluate)g(to)g(yield)g(a)179
1803 909 y(nondeterministic)e(function)h(ob)r(ject)g(if)f
1804 Fu(function-name)i Fy(names)e(a)h(nondeterministic)f(function.)137
1805 992 y Fr(\017)21 b Fy(An)14 b Fq(either)e Fy(sp)q(ecial)j(form)d(with)h
1806 (no)h(argumen)o(ts.)137 1075 y Fr(\017)21 b Fy(An)14
1807 b Fq(either)e Fy(sp)q(ecial)j(form)d(with)h(a)h(single)f(deterministic)
1808 h(argumen)o(t.)137 1158 y Fr(\017)21 b Fy(A)13 b(sp)q(ecial)g(form)e
1809 (or)i(a)g(call)f(to)h(a)g(deterministic)f(function)h(pro)o(vided)g
1810 (that)g(ev)o(ery)h(ev)n(aluated)e(sub)q(expression)j(is)179
1811 1208 y(deterministic.)137 1291 y(A)10 b Fu(deterministic)g(function)f
1812 Fy(is)h(a)f(function)g(whic)o(h)g Fv(Screamer)h Fy(can)g(determine)f
1813 (to)h(yield)f(at)g(most)f(one)i(v)n(alue)e(when)75 1341
1814 y(called.)17 b(A)10 b Fu(nondeterministic)i(function)e
1815 Fy(is)h(a)f(function)g(whic)o(h)g Fv(Screamer)h Fy(cannot)f(determine)h
1816 (to)f(b)q(e)h(deterministic.)75 1391 y(Lik)o(e)20 b(expressions,)k(a)c
1817 (function)g(migh)o(t)f(yield)h(no)h(more)e(than)i(one)g(v)n(alue)f
1818 (when)h(actually)f(called)g(and)h(still)e(b)q(e)75 1440
1819 y(classi\014ed)e(as)f(nondeterministic)g(if)g Fv(Screamer)h
1820 Fy(cannot)f(determine)g(at)h(compile)d(time)h(that)i(it)f(is)g
1821 (deterministic.)75 1490 y(Nondeterministic)f(functions,)g(lik)o(e)g
1822 (deterministic)g(functions,)h(are)f(de\014ned)i(with)e(the)h
1823 Fv(Common)h(Lisp)e Fy(primitiv)o(e)75 1540 y Fq(defun)p
1824 Fy(.)22 b(A)16 b(function)f(de\014ned)i(with)e Fq(defun)g
1825 Fy(is)g(deterministic)g(if)g(ev)o(ery)h(expression)h(in)e(its)h(b)q(o)q
1826 (dy)f(is)h(deterministic;)75 1590 y(otherwise)21 b(the)f(function)g(is)
1827 g(nondeterministic.)36 b(F)m(urthermore,)21 b(all)d(primitiv)o(e)g
1828 Fv(Common)f(Lisp)j Fy(functions)g(are)75 1640 y(deterministic.)137
1829 1689 y Fv(Common)d(Lisp)10 b Fy(allo)o(ws)f(one)i(to)f(access)i
1830 (function)e(ob)r(jects)i(using)e(the)h Fq(function)e
1831 Fy(sp)q(ecial)h(form.)15 b Fv(Common)i(Lisp)75 1739 y
1832 Fy(function)22 b(ob)r(jects)i(alw)o(a)o(ys)d(refer)j(to)e
1833 (deterministic)g(functions)h(and)f(are)h(termed)g Fu(deterministic)f
1834 (function)h(ob-)75 1789 y(je)n(cts)p Fy(.)f Fv(Screamer)15
1835 b Fy(supp)q(orts)i(a)e(new)g(t)o(yp)q(e)h(of)f(ob)r(ject,)h(the)g
1836 Fu(nondeterministic)g(function)g(obje)n(ct)p Fy(.)22
1837 b(The)16 b(expression)75 1839 y Fq(#'\(lambda)k(\()p
1838 Fp(:)7 b(:)g(:)n Fq(\))22 b Fp(:)7 b(:)g(:)n Fq(\))18
1839 b Fy(will)e(\(deterministically\))g(ev)n(aluate)h(to)h(yield)f(an)g
1840 (ordinary)g Fv(Common)g(Lisp)h Fy(determin-)75 1889 y(istic)e(function)
1841 g(ob)r(ject)h(if)f(ev)o(ery)h(expression)g(in)f(the)h(b)q(o)q(dy)f(of)g
1842 (the)h(lam)o(b)q(da)d(expression)j(is)f(deterministic.)25
1843 b(It)16 b(will)75 1939 y(\(deterministically\))11 b(ev)n(aluate)g(to)h
1844 (yield)g(a)g(nondeterministic)f(function)h(ob)r(ject)h(if)e(some)g
1845 (expression)i(in)f(the)g(b)q(o)q(dy)h(of)75 1988 y(the)g(lam)o(b)q(da)d
1846 (expression)k(is)f(nondeterministic.)k(Lik)o(ewise,)12
1847 b(the)h(expression)h Fq(#')p Fu(function-name)f Fy(will)e
1848 (\(deterministi-)75 2038 y(cally\))g(ev)n(aluate)g(to)h(yield)f(an)g
1849 (ordinary)g Fv(Common)17 b(Lisp)12 b Fy(deterministic)f(function)g(ob)r
1850 (ject)h(if)f Fu(function-name)i Fy(names)75 2088 y(a)h(deterministic)f
1851 (function.)19 b(It)14 b(will)e(\(deterministically\))h(ev)n(aluate)h
1852 (to)g(yield)f(a)h(nondeterministic)f(function)h(ob)r(ject)75
1853 2138 y(if)i Fu(function-name)h Fy(names)f(a)g(nondeterministic)g
1854 (function)g(\(de\014ned)h(using)g Fq(defun)p Fy(\).)24
1855 b(The)17 b Fv(Screamer)g Fy(primitiv)o(e)75 2188 y Fq
1856 (nondeterministic-)o(funct)o(ion?)c Fy(can)k(b)q(e)h(used)f(to)g
1857 (determine)f(whether)i(or)f(not)g(an)f(ob)r(ject)i(is)e(a)h
1858 (nondetermin-)75 2237 y(istic)g(function.)25 b(While)16
1859 b(deterministic)g(function)g(ob)r(jects)i(can)f(b)q(e)g(called)f(using)
1860 h(the)g Fv(Common)f(Lisp)h Fy(primitiv)o(es)75 2287 y
1861 Fq(funcall)d Fy(and)i Fq(apply)p Fy(,)e(nondeterministic)h(function)g
1862 (ob)r(jects)i(m)o(ust)e(b)q(e)h(called)f(using)h(the)g(analogous)e
1863 Fv(Screamer)75 2337 y Fy(primitiv)o(es)d Fq(funcall-nondetermini)o
1864 (stic)f Fy(and)j Fq(apply-nondetermin)o(istic)o Fy(.)i(A)o(ttempting)d
1865 (to)h(call)g(a)g(nondeter-)75 2387 y(ministic)i(function)i(ob)r(ject)h
1866 (with)f Fq(funcall)f Fy(or)h Fq(apply)f Fy(will)g(signal)g(a)h(run)g
1867 (time)f(error.)29 b(The)18 b Fv(Screamer)f Fy(calling)75
1868 2437 y(primitiv)o(es)c(accept)i(either)h(deterministic)e(or)g
1869 (nondeterministic)g(function)h(ob)r(jects.)21 b(Irresp)q(ectiv)o(e)c
1870 (of)c(whether)j(the)75 2487 y Fu(function)i Fy(argumen)o(t)e(to)i
1871 Fq(funcall-nondeter)o(minis)o(tic)c Fy(or)k Fq(apply-nondeterm)o(inist)
1872 o(ic)c Fy(is)k(a)f(deterministic)g(or)75 2536 y(nondeterministic)g
1873 (function)g(ob)r(ject,)i(a)e(call)g(to)g Fq(funcall-nondetermini)o
1874 (stic)d Fy(or)k Fq(apply-nondeterm)o(inist)o(ic)1002
1875 2723 y Fy(2)p eop
1876 %%Page: 3 3
1877 3 2 bop 75 195 a Fy(is)16 b(alw)o(a)o(ys)f(a)g(nondeterministic)h
1878 (expression)h(since)f(it)g(is)g(imp)q(ossible,)e(in)h(general,)i(to)e
1879 (determine)h(the)h(t)o(yp)q(e)f(of)f(the)75 245 y Fu(function)f
1880 Fy(argumen)o(t)f(at)h(compile)e(time.)137 295 y Fv(Screamer)j
1881 Fy(includes)f(sev)o(eral)h(nondeterministic)e(functions)h(as)g
1882 (primitiv)o(es.)i(These)f(include:)137 378 y Fr(\017)21
1883 b Fq(funcall-nondeter)o(minis)o(tic)p Fy(,)137 461 y
1884 Fr(\017)g Fq(apply-nondetermi)o(nisti)o(c)p Fy(,)137
1885 544 y Fr(\017)g Fq(member-of)p Fy(,)137 627 y Fr(\017)g
1886 Fq(integer-between)p Fy(,)137 710 y Fr(\017)g Fq(decide)p
1887 Fy(,)137 793 y Fr(\017)g Fq(linear-force)p Fy(,)137 876
1888 y Fr(\017)g Fq(divide-and-conqu)o(er-fo)o(rce)p Fy(,)137
1889 959 y Fr(\017)g Fq(solution)12 b Fy(and)137 1042 y Fr(\017)21
1890 b Fq(best-value)p Fy(.)75 1125 y(\(Actually)m(,)10 b
1891 Fq(decide)f Fy(and)h Fq(best-value)f Fy(are)h(macros.\))17
1892 b(The)10 b(man)o(ual)e(en)o(tries)k(in)e(this)g(do)q(cumen)o(t)g
1893 (explicitly)g(annotate)75 1175 y(when)19 b(a)f(primitiv)o(e)e(is)i
1894 (nondeterministic)g(in)f(the)i(\014rst)g(line)f(of)g(the)g(en)o(try)h
1895 (for)f(that)h(primitiv)o(e.)28 b(Primitiv)o(es)17 b(not)75
1896 1225 y(annotated)d(as)g(nondeterministic)f(are)i(deterministic.)137
1897 1274 y(A)j(men)o(tioned)f(previously)m(,)h Fv(Screamer)g
1898 Fy(m)o(ust)f(compile)f(nondeterministic)i(expressions)h(sp)q(ecially)m
1899 (.)29 b(It)18 b(do)q(es)75 1324 y(so)h(b)o(y)g(w)o(alking)e(the)j(co)q
1900 (de)f(and)g(p)q(erforming)e(an)i(op)q(eration)g(kno)o(wn)f(as)h(CPS)h
1901 (con)o(v)o(ersion)f(on)g(nondeterministic)75 1374 y(expressions)i
1902 (\(see)g(section)g(14\).)34 b Fv(Screamer)21 b Fy(only)d(w)o(alks)h(co)
1903 q(de)i(app)q(earing)e(in)g(certain)i(con)o(texts.)36
1904 b(The)20 b(main)75 1424 y(implication)13 b(of)j(this)g(is)g(that)g
1905 (nondeterministic)g(expression)h(ma)o(y)d(app)q(ear)j(only)e(in)h(con)o
1906 (texts)h(whic)o(h)f Fv(Screamer)75 1474 y Fy(w)o(alks.)h(These)c(con)o
1907 (texts)g(are)g(termed)f Fu(nondeterministic)h(c)n(ontexts)p
1908 Fy(.)18 b(A)12 b(con)o(text)h(whic)o(h)f Fv(Screamer)h
1909 Fy(do)q(es)g(not)f(w)o(alk)75 1523 y(is)i(termed)g(a)f
1910 Fu(deterministic)h(c)n(ontext)p Fy(.)k(The)d(follo)o(wing)c(is)j(a)f
1911 (list)h(of)f(all)g(nondeterministic)g(con)o(texts:)137
1912 1606 y Fr(\017)21 b Fy(The)14 b(b)q(o)q(dy)f(of)g Fq(defun)p
1913 Fy(.)j(This)e(is)f(accomplished)f(b)o(y)h(ha)o(ving)g
1914 Fv(Screamer)h Fy(shado)o(w)f(the)h(ordinary)f(de\014nition)g(of)179
1915 1656 y Fq(defun)p Fy(.)137 1739 y Fr(\017)21 b Fy(The)14
1916 b Fu(expr)n(ession)g Fy(argumen)o(t)f(of)g(a)h(call)f(to)h(the)g
1917 Fq(map-values)e Fy(primitiv)o(e.)137 1822 y Fr(\017)21
1918 b Fy(The)14 b Fu(expr)n(ession)g Fy(argumen)o(t)f(of)g(a)h(call)f(to)h
1919 (the)g Fq(one-value)e Fy(primitiv)o(e.)137 1905 y Fr(\017)21
1920 b Fy(The)14 b(b)q(o)q(dy)g(of)f(a)h(call)f(to)h(the)g
1921 Fq(all-values)e Fy(primitiv)o(e.)137 1988 y Fr(\017)21
1922 b Fy(The)14 b Fu(expr)n(ession)g Fy(argumen)o(t)f(of)g(a)h(call)f(to)h
1923 (the)g Fq(ith-value)e Fy(primitiv)o(e.)137 2071 y Fr(\017)21
1924 b Fy(The)14 b(b)q(o)q(dy)g(of)f(a)h(call)f(to)h(the)g
1925 Fq(print-values)e Fy(primitiv)o(e.)75 2154 y(Curren)o(tly)m(,)k(the)g
1926 (only)f(top-lev)o(el)h(de\014ning)f(expression)i(whic)o(h)f(allo)o(ws)f
1927 (a)g(nondeterministic)h(b)q(o)q(dy)g(is)f Fq(defun)p
1928 Fy(.)23 b(This)75 2204 y(excludes)12 b(other)f(de\014ning)f
1929 (expressions)i(suc)o(h)f(as)g Fq(defvar)p Fy(,)e Fq(defconstant)p
1930 Fy(,)f Fq(defparameter)p Fy(,)g Fq(defmacro)p Fy(,)h
1931 Fq(defstruct)p Fy(,)75 2254 y Fq(defclass)p Fy(,)j(and)j(particularly)e
1932 Fq(defmethod)p Fy(.)18 b(F)m(uture)d(implemen)o(tatio)o(ns)d(of)i
1933 Fv(Screamer)h Fy(ma)o(y)e(supp)q(ort)i(additional)75
1934 2304 y(de\014ning)f(expressions)h(b)q(ey)o(ond)f Fq(defun)p
1935 Fy(.)j(The)e(general)f(rule)g(is)g(simply:)p 179 2351
1936 1333 2 v 179 2413 2 62 v 193 2392 a Fu(Nondeterministic)g(expr)n
1937 (essions)h(must)g(app)n(e)n(ar)g(in)g(nondeterministic)g(c)n(ontexts.)p
1938 1510 2413 V 179 2415 1333 2 v 1002 2723 a Fy(3)p eop
1939 %%Page: 4 4
1940 4 3 bop 75 195 a Fy(A)14 b(run)g(time)f(or)h(compile)e(time)g(error)j
1941 (should)f(b)q(e)g(signalled)f(if)g(this)h(rule)g(is)g(violated.)137
1942 245 y(Since,)j(the)f Fv(Common)h(Lisp)f Fy(primitiv)o(e)d
1943 Fq(eval)i Fy(is)h(a)f(deterministic)h(function,)f(it)h(can)g(only)f(ev)
1944 n(aluate)h(lists)f(rep-)75 295 y(resen)o(ting)k(deterministic)f
1945 (expressions.)33 b(Lik)o(e)18 b(an)o(y)g(call)f(to)h(a)g(deterministic)
1946 g(function,)h(the)g(argumen)o(t)e(to)h Fq(eval)75 345
1947 y Fy(can)g(b)q(e)g(a)g(nondeterministic)f(expression,)i(but)f(the)g
1948 (argumen)o(t)f(cannot)h(ev)n(aluate)f(to)h(a)f(list)g(whic)o(h)h
1949 (represen)o(ts)i(a)75 394 y(nondeterministic)13 b(expression.)19
1950 b(This)13 b(implies)e(that)i(y)o(ou)g(ma)o(y)f(not)h(t)o(yp)q(e)h(a)f
1951 (nondeterministic)f(expression)j(directly)75 444 y(to)d(a)g
1952 Fv(Lisp)h Fy(listener.)18 b(T)m(o)11 b(ev)n(aluate)h(a)h
1953 (nondeterministic)e(expression,)j(con)o(v)o(ert)f(it)f(to)g(a)g
1954 (deterministic)g(expression)h(b)o(y)75 494 y(enclosing)f(it)f(in)h(one)
1955 g(of)f(the)h(primitiv)o(es)e Fq(map-values)p Fy(,)g Fq(one-value)p
1956 Fy(,)g Fq(all-values)p Fy(,)f Fq(ith-value)h Fy(or)i
1957 Fq(print-values)p Fy(.)137 544 y(The)i(curren)o(t)h(implem)o(en)o
1958 (tation)10 b(imp)q(oses)j(one)g(further)i(restriction.)j(The)c
1959 (initialization)d(expressions)j(for)f Fq(&aux)p Fy(,)75
1960 594 y Fq(&optional)8 b Fy(and)i Fq(&key)f Fy(v)n(ariables)h(app)q
1961 (earing)g(in)g(a)f(lam)o(b)q(da)f(list)i(for)g(a)g Fq(defun)f
1962 Fy(or)h(lam)o(b)q(da)e(expression)j(are)g(considered)75
1963 643 y(deterministic)19 b(con)o(texts.)35 b(Th)o(us)20
1964 b(suc)o(h)g(initialization)c(expressions)21 b(ma)o(y)c(not)j(b)q(e)f
1965 (nondeterministic.)34 b(A)19 b(future)75 693 y(v)o(ersion)14
1966 b(of)f Fv(Screamer)i Fy(ma)o(y)d(remo)o(v)o(e)h(this)h(restriction.)75
1967 828 y Fw(3)69 b(Side)22 b(E\013ects)75 919 y Fy(Adding)12
1968 b(nondeterminism)f(to)h(an)h(imp)q(erativ)o(e)e(language)h(lik)o(e)g
1969 Fv(Common)k(Lisp)d Fy(o\013ers)g(t)o(w)o(o)g(design)f(alternativ)o(es)h
1970 (for)75 968 y(side)j(e\013ects.)26 b(Should)16 b(side)g(e\013ects)i(b)q
1971 (e)e(undone)h(up)q(on)e(bac)o(ktrac)o(king?)24 b Fv(Screamer)17
1972 b Fy(supp)q(orts)g(b)q(oth)f(alternativ)o(es)75 1018
1973 y(since)k(b)q(oth)f(turn)h(out)f(to)g(b)q(e)h(useful.)34
1974 b Fu(L)n(o)n(c)n(al)19 b Fy(side)h(e\013ects)h(are)f(undone)g(up)q(on)f
1975 (bac)o(ktrac)o(king)g(while)g Fu(glob)n(al)g Fy(side)75
1976 1068 y(e\013ects)e(are)f(not.)21 b Fv(Screamer)16 b Fy(pro)o(vides)g(t)
1977 o(w)o(o)e(new)i(sp)q(ecial)f(forms,)f Fq(local)g Fy(and)h
1978 Fq(global)p Fy(,)f(whic)o(h)h(con)o(trol)g(whether)75
1979 1118 y(side)k(e\013ects)h(are)f(lo)q(cal)f(or)h(global.)30
1980 b(The)19 b(expression)h Fq(\(local)g(\(setf)h(x)h(0\)\))17
1981 b Fy(causes)j(a)f(lo)q(cal)e(side)i(e\013ect)h(to)f Fp(x)p
1982 Fy(,)75 1168 y(while)13 b Fq(\(global)21 b(\(setf)f(x)i(0\)\))13
1983 b Fy(causes)j(a)d(global)f(side)j(e\013ect.)137 1218
1984 y(The)f(co)q(de)f(generated)i(for)d(global)g(side)h(e\013ects)i
1985 (consists)f(of)e(ordinary)h Fv(Common)j(Lisp)d Fy(side)g(e\013ects.)20
1986 b(Lo)q(cal)13 b(side)75 1267 y(e\013ects)20 b(generate)f(co)q(de)g
1987 (whic)o(h)f(\014rst)g(stores)i(the)e(prior)g(v)n(alue)f(of)g(the)i(v)n
1988 (ariable)e(on)g(a)h Fx(trail)f Fy(b)q(efore)i(up)q(dating)e(the)75
1989 1317 y(v)n(ariable,)e(and)h(then)g(restoring)h(the)f(prior)g(v)n(alue)f
1990 (when)i(bac)o(ktrac)o(king.)24 b(This)15 b(has)h(t)o(w)o(o)g
1991 (implications.)21 b(First,)c(one)75 1367 y(can)d(only)e(p)q(erform)g(a)
1992 i(lo)q(cal)e(side)i(e\013ect)h(on)e(a)g(v)n(ariable)f(that)h(is)g(b)q
1993 (ound.)18 b Fv(Screamer)c Fy(cannot)g(p)q(erform)e(a)h(lo)q(cal)g(side)
1994 75 1417 y(e\013ect)h(on)f(an)f(un)o(b)q(ound)g(v)n(ariable)g(since)h
1995 (it)f(will)g(not)g(b)q(e)h(able)f(to)h(access)h(and)f(store)g(the)g
1996 (prior)g(v)n(alue)e(of)h(the)i(v)n(ariable.)75 1467 y(Second,)j(lo)q
1997 (cal)e(side)i(e\013ects)h(can)f(b)q(e)g(p)q(erformed)e(only)h(when)h
1998 (there)g(is)f(at)g(least)h(one)f(c)o(hoice)h(p)q(oin)o(t)f(on)g(the)g
1999 (c)o(hoice)75 1516 y(p)q(oin)o(t)e(stac)o(k,)i(since)f(the)h(p)q
2000 (ortion)e(of)h(the)g(trail)f(to)h(b)q(e)g(un)o(w)o(ound)g(up)q(on)g
2001 (bac)o(ktrac)o(king)g(is)f(k)o(ept)i(as)f(part)g(of)f(a)g(c)o(hoice)75
2002 1566 y(p)q(oin)o(t.)j(Dep)q(ending)c(on)f(the)h Fv(Common)k(Lisp)12
2003 b Fy(implemen)o(tatio)o(n,)e(an)i(error)h(ma)o(y)e(or)h(ma)o(y)f(not)h
2004 (b)q(e)h(generated)h(if)e(these)75 1616 y(restrictions)j(are)f
2005 (violated.)137 1666 y Fq(Local)f Fy(and)h Fq(global)f
2006 Fy(sp)q(ecial)h(forms)f(b)q(eha)o(v)o(e)i(lik)o(e)e Fq(progn)p
2007 Fy(.)18 b(They)c(allo)o(w)f(a)g(b)q(o)q(dy)h(consisting)h(of)e(sev)o
2008 (eral)i(expres-)75 1716 y(sions,)f(returning)h(the)f(v)n(alue)g(of)f
2009 (the)i(last)f(expression.)20 b(All)13 b Fq(setf)h Fy(and)g
2010 Fq(setq)f Fy(op)q(erations)h(that)h(are)f Fu(lexic)n(al)r(ly)h(neste)n
2011 (d)75 1765 y Fy(in)f(a)g Fq(local)f Fy(or)h Fq(global)e
2012 Fy(expression)k(generate)f(side)g(e\013ects)h(of)d(the)i(appropriate)f
2013 (t)o(yp)q(e.)19 b(F)m(urthermore,)14 b Fq(local)f Fy(and)75
2014 1815 y Fq(global)i Fy(expressions)j(ma)o(y)d(b)q(e)i(nested)h(inside)f
2015 (one)f(another.)27 b(In)16 b(this)h(case,)h(the)f(most)e(closely)i
2016 (nested)h Fq(local)d Fy(or)75 1865 y Fq(global)i Fy(expressions)j
2017 (determines)f(whether)h(a)e Fq(setf)g Fy(or)h Fq(setq)e
2018 Fy(causes)j(a)f(lo)q(cal)e(or)i(global)e(side)i(e\013ect.)34
2019 b(Finally)m(,)75 1915 y Fq(setf)12 b Fy(and)g Fq(setq)g
2020 Fy(expression)i(whic)o(h)e(are)i(not)e(nested)i(in)f(either)g(a)f
2021 Fq(local)g Fy(or)h Fq(global)e Fy(expression)j(cause)g(global)d(side)75
2022 1965 y(e\013ects.)22 b(Th)o(us)15 b(the)h(side)f(e\013ects)h(to)f
2023 Fp(y)h Fy(and)f Fp(w)g Fy(in)f(the)i(follo)o(wing)c(will)h(b)q(e)i(lo)q
2024 (cal,)f(while)g(the)h(side)g(e\013ects)i(to)d Fp(v)i
2025 Fy(and)f Fp(z)75 2015 y Fy(will)d(b)q(e)j(global.)204
2026 2082 y Fq(\(defun)20 b(f)i(\(x)f(u\))h(\(setf)e(v)i(u\)\))204
2027 2182 y(\(local)e(\(if)h(\(p)h(x\))443 2231 y(\(setf)f(y)h(\(f)f(x)h
2028 (1\)\))443 2281 y(\(global)f(\(setf)g(z)g(\(f)g(x)h(2\)\)\)\))356
2029 2331 y(\(setq)f(w)h(\(f)f(x)h(3\)\)\))75 2399 y Fy(Note)10
2030 b(that)g(a)f Fq(local)g Fy(or)h Fq(global)e Fy(expression)j(a\013ects)g
2031 (only)e(side)h(e\013ects)i(that)d(are)h(lexically)f(nested)i(in)e(that)
2032 h(expression)75 2449 y(and)j(not)h(side)g(e\013ects)i(in)d(functions)g
2033 (called)h(b)o(y)f(those)h(expressions.)20 b(Th)o(us)14
2034 b(the)g(side)g(e\013ect)h(to)f Fp(v)h Fy(inside)e Fp(f)19
2035 b Fy(is)13 b(alw)o(a)o(ys)75 2499 y(a)h(global)e(side)i(e\013ect,)h(ev)
2036 o(en)g(when)f Fp(f)19 b Fy(is)13 b(called)h(from)e(inside)i(a)g
2037 Fq(local)e Fy(expression.)137 2549 y Fq(Local)g Fy(and)h
2038 Fq(global)e Fy(expression)j(a\013ect)g(an)o(y)e(side)i(e\013ect)g
2039 (caused)g(b)o(y)f(a)f(lexically)g(nested)i Fq(setq)e
2040 Fy(or)h Fq(setf)f Fy(expres-)75 2599 y(sion.)k(Side)9
2041 b(e\013ects)j(caused)e(b)o(y)f(other)h Fv(Common)17 b(Lisp)9
2042 b Fy(primitiv)o(es)e(are)j(alw)o(a)o(ys)e(global.)15
2043 b(Th)o(us)10 b Fq(\(local)20 b(\(delete)h(x)g(y\)\))1002
2044 2723 y Fy(4)p eop
2045 %%Page: 5 5
2046 5 4 bop 75 195 a Fy(will)9 b(cause)j(a)e(global)f(side)h(e\013ect)j
2047 Fu(not)d Fy(a)h(lo)q(cal)e(one.)862 180 y Fo(1)898 195
2048 y Fq(Local)g Fy(and)i Fq(global)e Fy(do)h(ho)o(w)o(ev)o(er,)h(a\013ect)
2049 h(macros)d(whic)o(h)i(expand)75 245 y(in)o(to)j Fq(setq)f
2050 Fy(or)h Fq(setf)g Fy(expressions.)20 b Fv(Common)d(Lisp)d
2051 Fy(con)o(tains)g(a)g(n)o(um)o(b)q(er)g(of)f(side)i(e\013ect)h(primitiv)
2052 o(es)c(implemen)o(ted)75 295 y(as)17 b(macros.)26 b(These)18
2053 b(include)f Fq(psetq)p Fy(,)f Fq(psetf)p Fy(,)g Fq(shiftf)p
2054 Fy(,)f Fq(rotatef)p Fy(,)h Fq(incf)p Fy(,)g Fq(decf)p
2055 Fy(,)g Fq(push)p Fy(,)h Fq(pushnew)e Fy(and)h Fq(pop)p
2056 Fy(.)27 b(Ac-)75 345 y(cording)14 b(to)g(the)h Fv(Common)i(Lisp)d
2057 Fy(sp)q(ec,)i(the)f(expansion)f(of)g(primitiv)o(e)e(macros)i(is)g(allo)
2058 o(w)o(ed)f(to)h(b)q(e)h(implemen)o(tation)75 394 y(dep)q(enden)o(t.)272
2059 379 y Fo(2)322 394 y Fy(Th)o(us)j(some)f(implemen)o(tati)o(ons)e(ma)o
2060 (y)h(expand)i(primitiv)o(e)e(side)i(e\013ect)h(macros,)e(either)i
2061 (directly)f(or)75 444 y(indirectly)i(in)o(to)f(expressions)j(con)o
2062 (taining)d Fq(setf)g Fy(or)h Fq(setq)f Fy(expressions.)38
2063 b(In)20 b(those)h(implem)o(en)o(tations,)e(calls)g(to)75
2064 494 y Fv(Common)e(Lisp)e Fy(primitiv)o(e)f(side)i(e\013ect)h(macros)e
2065 (will)g(b)q(e)h(a\013ected)h(b)o(y)f(surrounding)g Fq(local)f
2066 Fy(and)g Fq(global)g Fy(expres-)75 544 y(sions.)28 b(In)18
2067 b(other)f(implemen)o(tations,)e(calls)i(to)g(primitiv)o(e)e(side)j
2068 (e\013ect)h(macros)d(do)h(not)g(expand)h(in)o(to)e(expressions)75
2069 594 y(con)o(taining)d Fq(setf)g Fy(and)h Fq(setq)f Fy(and)g(th)o(us)i
2070 (cause)f(global)f(side)h(e\013ects)i(irresp)q(ectiv)o(e)g(of)d(their)h
2071 (con)o(text.)1686 579 y Fo(3)137 643 y Fv(Screamer)19
2072 b Fy(supp)q(orts)h(lo)q(cal)e(side)h(e\013ects)h(to)f(generalized)g(v)n
2073 (ariables)f(using)g Fq(setf)p Fy(.)31 b(Th)o(us)19 b(it)f(is)g(p)q
2074 (ossible)h(to)75 693 y(write)i(expressions)h(lik)o(e)d
2075 Fq(\(local)i(\(setf)g(\(car)f(x\)\))i(y\))e Fy(and)g
2076 Fq(\(local)g(\(setf)h(\(aref)g(x)g(n\)\))h(y\))d Fy(and)i(ac)o(hiev)o
2077 (e)75 743 y(the)e(exp)q(ected)h(results.)31 b(When)18
2078 b(ev)n(aluating)e(an)i(expression)h(lik)o(e)e Fq(\(local)k(\(setf)g
2079 Fp(v)i(e)p Fq(\)\))p Fy(,)18 b Fv(Screamer)h Fy(ma)o(y)d(ac-)75
2080 793 y(cess)23 b Fp(v)g Fy(sev)o(eral)e(times,)h(once)g(to)f(trail)g
2081 (its)g(v)n(alue)f(prior)h(to)h(the)f(lo)q(cal)g(side)g(e\013ect)i(and)e
2082 (t)o(wice)h(p)q(er)g(bac)o(ktrac)o(k,)75 843 y(once)d(to)g(up)q(date)g
2083 (its)g(v)n(alue)f(and)g(once)i(to)e(restore)j(its)d(prior)h(v)n(alue.)
2084 32 b Fv(Screamer)19 b Fy(tak)o(es)g(care)h(to)e(ev)n(aluate)g(an)o(y)75
2085 892 y(sub)q(expressions)i(in)e Fp(v)h Fy(only)f(once)g(and)g(use)h(the)
2086 g(result)g(of)e(that)h(ev)n(aluation)f(for)g(all)g(suc)o(h)i(accesses.)
2087 33 b(Lo)q(cal)18 b(side)75 942 y(e\013ects)c(are)f(supp)q(orted)g(for)f
2088 (an)o(y)g Fq(setf)f Fy(metho)q(d)h(including)f(slot)h(accessors)i
2089 (created)g(b)o(y)e Fq(defstruct)e Fy(and)i Fq(defclass)p
2090 Fy(.)75 992 y(There)21 b(is)e(one)h(minor)e(exception)i(ho)o(w)o(ev)o
2091 (er.)35 b(While)19 b(it)g(is)g(p)q(ossible)h(to)g(do)f(lo)q(cal)g(side)
2092 h(e\013ects)h(on)e(hash)h(tables,)75 1042 y(i.e.)14 b
2093 Fq(\(local)21 b(\(setf)g(\(gethash)f(key)h(table\))f(value\)\))p
2094 Fy(,)14 b Fv(Screamer)i Fy(is)f(not)g(able)g(to)g(distinguish)g(b)q(et)
2095 o(w)o(een)h(the)75 1092 y(situation)e(where)h Fq(table)e
2096 Fy(lac)o(k)o(ed)h(an)g(en)o(try)h(for)f Fq(key)g Fy(prior)g(to)g(the)h
2097 (lo)q(cal)e(side)i(e\013ect)g(and)g(the)f(situation)g(where)h(the)75
2098 1142 y(en)o(try)e(for)g Fq(key)f Fy(w)o(as)h Fq(nil)p
2099 Fy(.)k(In)c(either)g(case,)h Fq(table)e Fy(will)f(ha)o(v)o(e)i(an)g(en)
2100 o(try)g(pairing)f Fq(key)g Fy(with)g Fq(nil)h Fy(after)g(bac)o(ktrac)o
2101 (king.)75 1191 y(The)j(reason)h(for)e(this)h(is)f(that)h(when)g
2102 Fv(Screamer)h Fy(ev)n(aluates)e Fq(\(gethash)21 b(key)g(table\))14
2103 b Fy(to)i(access)h(its)f(v)n(alue)f(prior)75 1241 y(to)g(the)h(lo)q
2104 (cal)f(side)h(e\013ect,)h(it)e(utilizes)g(only)g(the)h(\014rst)g(v)n
2105 (alue)f(returned)i(b)o(y)f Fq(gethash)p Fy(.)21 b(In)15
2106 b(b)q(oth)h(cases)h(this)e(v)n(alue)g(is)75 1291 y Fq(nil)p
2107 Fy(.)21 b Fv(Screamer)16 b Fy(is)f(not)g(able)g(to)g(utilize)g(the)h
2108 (second)g(v)n(alue)f(returned)i(b)o(y)e Fq(gethash)f
2109 Fy(whic)o(h)h(w)o(ould)f(di\013eren)o(tiate)75 1341 y(these)h
2110 (situations.)137 1391 y(One)j(m)o(ust)d(b)q(e)i(careful)g(using)g
2111 (iteration)f(constructs)i(con)o(taining)e(nondeterministic)g
2112 (expressions.)28 b(These)18 b(in-)75 1440 y(clude)10
2113 b(the)g Fv(Common)17 b(Lisp)9 b Fy(primitiv)o(es)f Fq(do)p
2114 Fy(,)i Fq(do*)p Fy(,)f Fq(dolist)p Fy(,)g Fq(dotimes)p
2115 Fy(,)f Fq(do-all-symbols)p Fy(,)f Fq(do-external-symbols)o
2116 Fy(,)75 1490 y Fq(do-symbols)j Fy(and)i Fq(loop)f Fy(as)i(w)o(ell)e(as)
2117 i(the)f Fq(iterate)f Fy(macro.)16 b(Suc)o(h)d(macros)e(usually)h(p)q
2118 (erform)f(side)i(e\013ect)g(during)f(the)75 1540 y(iteration.)21
2119 b(The)15 b(desired)h(iteration)f(b)q(eha)o(vior)g(o)o(v)o(er)g(a)f
2120 (nondeterministic)h(b)q(o)q(dy)g(usually)f(requires)i(the)g(side)f
2121 (e\013ects)75 1590 y(to)h(b)q(e)h(lo)q(cal.)24 b(It)16
2122 b(ma)o(y)f(b)q(e)i(p)q(ossible)f(to)g(get)h(the)f(correct)i(b)q(eha)o
2123 (vior)e(b)o(y)g(wrapping)g(the)h(lo)q(oping)e(expression)i(inside)75
2124 1640 y(a)g Fq(local)f Fy(expression)i(though)f(for)g(reasons)i(describ)
2125 q(ed)g(ab)q(o)o(v)o(e,)e(whether)h(this)g(w)o(orks)f(or)g(not)g(is)g
2126 (implemen)o(tation)75 1689 y(dep)q(enden)o(t.)137 1739
2127 y(Lo)q(cal)11 b(side)h(e\013ects)h(in)o(teract)f(with)f
2128 Fv(Screamer)h Fy(primitiv)o(es)d(lik)o(e)i Fq(all-values)e
2129 Fy(in)i(predictable)h(w)o(a)o(ys)f(whic)o(h)g(ma)o(y)75
2130 1789 y(app)q(ear)17 b(coun)o(terin)o(tuitiv)o(e)f(at)g(\014rst)h
2131 (glance.)25 b(Lo)q(cal)16 b(side)g(e\013ect)i(p)q(erformed)e(inside)g
2132 (the)h(b)q(o)q(dy)f(of)g(an)g Fq(all-values)75 1839 y
2133 Fy(expression)h(are)g(undone)f(up)q(on)g(exit)g(from)e(the)j
2134 Fq(all-values)d Fy(expression.)25 b(One)17 b(ma)o(y)d(try)i
2135 (unsuccessfully)h(to)f(use)75 1889 y(the)e(follo)o(wing)e(co)q(de)i(to)
2136 g(pro)q(duce)h(a)f(list)f(of)h(all)e(bit)i(strings)g(of)f(length)h
2137 Fp(n)p Fy(.)204 1958 y Fq(\(all-values)19 b(\(local)i(\(loop)g(for)g(i)
2138 g(from)g(0)h(below)f(n)g(collect)g(\(either)f(0)h(1\)\)\)\))75
2139 2028 y Fy(The)16 b(ab)q(o)o(v)o(e)f(co)q(de)i(do)q(es)f(not)g(pro)q
2140 (duce)h(the)f(desired)h(result,)f(ev)o(en)g(for)g(an)f(implemen)o
2141 (tatio)o(n)e(whic)o(h)j(mak)o(es)e(all)h(side)75 2077
2142 y(e\013ects)h(caused)g(b)o(y)e Fq(loop)f Fy(to)h(b)q(e)h(lo)q(cal,)e
2143 (since)i Fq(collect)d Fy(adds)j(eac)o(h)g(new)f(elemen)o(t)g(to)g(the)h
2144 (list)e(b)q(eing)i(generated)g(b)o(y)75 2127 y(side)d(e\013ecting)h
2145 (the)f(tail)f(of)g(that)h(list.)17 b(If)11 b(suc)o(h)i(side)f
2146 (e\013ects)i(w)o(ere)e(lo)q(cal,)f(the)i(constructed)g(list)f(w)o(ould)
2147 f(b)q(e)h(una)o(v)n(ailable)75 2177 y(for)i(use)g(up)q(on)g(exiting)f
2148 (the)i Fq(all-values)d Fy(expression.)p 75 2205 750 2
2149 v 121 2232 a Fn(1)139 2243 y Fs(T)m(ec)o(hnically)m(,)i(the)g
2150 Fm(Common)f(Lisp)i Fs(de\014nition)e(allo)o(ws)i(an)g(implemen)o(tat)o
2151 (ion)d(to)j(in-line)f(expand)f(a)j(call)e(to)i(a)f(primitiv)o(e)e(suc)o
2152 (h)h(as)75 2283 y Fl(delete)p Fs(.)28 b(F)m(urthermore)o(,)15
2153 b(in)h(some)f(implemen)o(ta)o(tio)o(ns,)f(the)i(function)e
2154 Fl(macroexpan)o(d)f Fs(p)q(erforms)h(in-line)h(substitution,)f(ev)o(en)
2155 h(though)75 2322 y(this)f(is)h(not)f(allo)o(w)o(ed)g(b)o(y)h(the)f
2156 Fm(Common)f(Lisp)h Fs(sp)q(ec.)25 b(On)15 b(an)g(implemen)o(ta)o(tio)o
2157 (n)d(whic)o(h)j(exhibited)d(b)q(oth)i(of)g(these)g(\015a)o(ws,)i
2158 Fl(local)d Fs(and)75 2362 y Fl(global)c Fs(expressions)f(could)i
2159 (a\013ect)g(in-line)f(expanded)f(calls)i(to)h Fm(Common)i(Lisp)d
2160 Fs(side)h(e\013ect)e(primitiv)o(es)g(suc)o(h)h(as)g Fl(delete)p
2161 Fs(.)k(I)c(kno)o(w)h(of)g(no)75 2401 y(implemen)o(ta)o(tion)d(whic)o(h)
2162 j(su\013ers)f(from)g(this)h(problem.)121 2429 y Fn(2)139
2163 2441 y Fs(In)g(m)o(y)f(opinion)g(this)h(is)g(a)h(\015a)o(w)f(in)g(the)g
2164 (design)f(of)h Fm(Common)i(Lisp)e Fs(for)g(reasons)f(made)g(apparen)o
2165 (t)f(in)i(this)g(paragraph.)121 2469 y Fn(3)139 2480
2166 y Fs(The)k(Sym)o(b)q(olics)f(implemen)o(t)o(ati)o(on)f(b)q(eha)o(v)o
2167 (es)h(lik)o(e)h(the)g(former)f(while)h(the)h(Lucid)e(implemen)o(tat)o
2168 (ion)f(b)q(eha)o(v)o(es)g(partially)h(lik)o(e)h(the)75
2169 2520 y(former)g(and)h(partially)f(lik)o(e)h(the)g(later.)30
2170 b(In)17 b(Lucid,)g(side)f(e\013ect)f(macros)g(expand)g(in)o(to)h
2171 Fl(setq)g Fs(when)h(called)e(on)h(v)n(ariables)f(but)h(not)75
2172 2559 y(when)e(called)e(on)i(generalized)d(v)n(ariables.)21
2173 b(Th)o(us)14 b(expressions)e(lik)o(e)h Fl(\(local)i(\(push)h(a)i(x\)\))
2174 13 b Fs(cause)g(lo)q(cal)g(side)g(e\013ects)g(while)h(ones)f(lik)o(e)75
2175 2599 y Fl(\(local)i(\(push)h(a)i(\(aref)d(x)j(n\)\)\))10
2176 b Fs(cause)g(global)g(side)h(e\013ects.)j(This)d(is)h(an)f(unfortunate)
2177 d(screw.)1002 2723 y Fy(5)p eop
2178 %%Page: 6 6
2179 6 5 bop 75 195 a Fw(4)69 b(Gotc)n(has)75 311 y(5)g(The)23
2180 b(Constrain)n(t)f(P)n(ac)n(k)l(age)75 402 y Fy(It)14
2181 b(is)g(often)h(said)e(that)i Fv(Pr)o(olog)f Fy(added)h(t)o(w)o(o)f
2182 (inno)o(v)n(ations)e(to)i(programming)d(language)i(design:)19
2183 b(nondeterminism)75 452 y(and)g(logic)f(v)n(ariables)h
2184 (\(uni\014cation\).)677 437 y Fo(4)729 452 y Fy(The)g(basic)h
2185 Fv(Screamer)f Fy(mec)o(hanisms)e(of)i Fq(either)f Fy(and)h
2186 Fq(fail)f Fy(describ)q(ed)75 501 y(in)f(the)h(previous)f(sections)i
2187 (add)e(nondeterminism)e(to)i Fv(Common)f(Lisp)p Fy(.)28
2188 b(This)18 b(section)f(describ)q(es)j(an)d(additional)75
2189 551 y(set)g(of)f(mec)o(hanisms)e(pro)o(vided)i(with)g
2190 Fv(Screamer)h Fy(whic)o(h)f(add)g(logic)f(v)n(ariables)h(to)g
2191 Fv(Common)g(Lisp)p Fy(.)25 b(This)16 b(set)i(of)75 601
2192 y(mec)o(hanisms)c(is)h(collectiv)o(ely)g(called)g(the)h
2193 Fu(c)n(onstr)n(aint)h(p)n(ackage)p Fy(.)23 b(These)17
2194 b(mec)o(hanisms)d(go)h(a)g(lot)g(further)i(than)e(pro-)75
2195 651 y(viding)d(simple)g(logic)g(v)n(ariables)h(and)g(uni\014cation;)f
2196 (they)i(pro)o(vide)f(m)o(uc)o(h)f(of)h(the)h(capabilit)o(y)d(t)o
2197 (ypically)h(incorp)q(orated)75 701 y(in)j(constrain)o(t-based)h(logic)e
2198 (programmi)o(ng)e(languages)j(suc)o(h)h(as)f Fv(clp)p
2199 Fy(\()p Fr(<)p Fy(\))g(\(Ja\013ar)h(and)f(Mic)o(ha)o(ylo)o(v,)e(1987;)h
2200 (Hein)o(tze)75 751 y(et)k(al.)f(1987\))g(and)h Fv(CHiP)e
2201 Fy(\(V)m(an)i(Hen)o(tenryc)o(k,)h(1989\).)29 b(In)18
2202 b(con)o(trast,)h Fv(Screamer)f Fy(uses)h(constrain)o(t)f(satisfaction)
2203 75 800 y(metho)q(ds)e(based)i(on)f(range)g(propagation)e(rather)j(than)
2204 f(the)h(linear)e(programmi)o(ng)e(tec)o(hniques)k(used)g(b)o(y)f
2205 Fv(clp)p Fy(\()p Fr(<)p Fy(\))75 850 y(and)d Fv(CHiP)n
2206 Fy(.)k(Hence)e(the)e(name)f(constrain)o(t)h(pac)o(k)n(age.)137
2207 900 y(The)21 b(constrain)o(t)f(pac)o(k)n(age)f(adds)i(a)e(single)h(new)
2208 g(data)g(t)o(yp)q(e)g(to)g Fv(Common)c(Lisp)p Fy(:)30
2209 b(the)21 b Fu(variable)p Fy(.)36 b(V)m(ariables)75 950
2210 y(pro)o(vide)19 b(a)g(sup)q(erset)i(of)d(the)i(functionalit)o(y)d(of)i
2211 (logic)f(v)n(ariables.)32 b(In)19 b(addition)f(to)h(b)q(eing)g(able)g
2212 (to)f(b)q(e)i(b)q(ound)f(to)75 1000 y(arbitrary)e(v)n(alues,)f(they)i
2213 (ma)o(y)d(also)h(b)q(e)h(dynamically)d(annotated)j(at)g(run)g(time)e
2214 (with)i(constrain)o(ts)g(on)g(the)g(v)n(alues)75 1049
2215 y(to)f(whic)o(h)h(they)g(ma)o(y)e(b)q(e)i(b)q(ound.)26
2216 b(V)m(ariables)16 b(are)h(created)h(with)e(the)h(function)g
2217 Fq(make-variable)p Fy(.)23 b(Initially)14 b(they)75 1099
2218 y(are)19 b Fu(unb)n(ound)h Fy(but)f(ma)o(y)d(b)q(ecome)j
2219 Fu(b)n(ound)g Fy(as)g(a)f(result)h(of)f(constrain)o(ts)i(whic)o(h)e
2220 (are)h(asserted)h(b)q(et)o(w)o(een)g(v)n(ariables.)75
2221 1149 y(V)m(ariables)14 b(are)h(b)q(ound)g(if)e Fv(Screamer)j
2222 Fy(can)e(determine)h(that)g(only)e(a)i(single)f(v)n(alue)g(can)h
2223 (satisfy)f(the)h(constrain)o(ts)g(in)75 1199 y(whic)o(h)d(the)h(v)n
2224 (ariable)f(participates.)18 b(Otherwise,)13 b(v)n(ariables)f(remain)f
2225 (un)o(b)q(ound.)18 b(All)11 b(of)h(the)h(primitiv)o(es)e(pro)o(vided)h
2226 (b)o(y)75 1249 y Fv(Screamer)g Fy(accept)g(either)g(b)q(ound)f(v)n
2227 (ariables,)f(un)o(b)q(ound)h(v)n(ariables)g(or)g(non-v)n(ariables)f(as)
2228 h(argumen)o(ts.)16 b(Collectiv)o(ely)75 1298 y(w)o(e)f(will)f(refer)i
2229 (to)e(an)o(y)h(suc)o(h)h(en)o(tit)o(y)f(as)g(a)f Fu(value)p
2230 Fy(.)22 b(Unlik)o(e)14 b Fv(Pr)o(olog)i Fy(and)e(its)h(deriv)n(ativ)o
2231 (es,)g(whic)o(h)g(usually)f(allo)o(w)f(all)75 1348 y(primitiv)o(es)f
2232 (to)i(tak)o(e)g(v)n(ariables)f(as)h(argumen)o(ts,)f(the)i(primitiv)o
2233 (es)d(pro)o(vided)i(b)o(y)f Fv(Common)k(Lisp)d Fy(ho)o(w)o(ev)o(er,)g
2234 (can)g(tak)o(e)75 1398 y(only)h(non-v)n(ariable)g(v)n(alues)g(as)h
2235 (argumen)o(ts.)24 b(Dep)q(ending)16 b(on)g(the)g(implemen)o(tation)c
2236 (and)k(the)h(setting)f(of)f(compiler)75 1448 y(optimization)d(switc)o
2237 (hes,)j(most)e Fv(Common)j(Lisp)e Fy(primitiv)o(es)f(will)g(signal)g
2238 (an)h(error)h(message)f(when)h(passed)g(a)f(v)n(ari-)75
2239 1498 y(able)i(as)h(an)g(argumen)o(t.)25 b(The)17 b Fv(Screamer)g
2240 Fy(primitiv)o(es)e Fq(value-of)g Fy(and)h Fq(apply-substitution)d
2241 Fy(can)k(b)q(e)h(used)f(to)75 1548 y(access)f(the)e(v)n(alue)g(of)f(a)h
2242 (b)q(ound)g(v)n(ariable)f(b)q(efore)i(calling)d(a)i Fv(Common)j(Lisp)d
2243 Fy(primitiv)o(e.)1498 1532 y Fo(5)1533 1548 y Fy(In)g(most)e(cases)k
2244 (un)o(b)q(ound)75 1597 y(v)n(ariables)c(can)h(b)q(e)g(forced)h(to)e
2245 (tak)o(e)h(on)f(a)h(unique)f(v)n(alue)h(b)o(y)f(using)g(the)i
2246 Fv(Screamer)f Fy(primitiv)o(es)e Fq(linear-force)f Fy(and)75
2247 1647 y Fq(divide-and-conque)o(r-for)o(ce)p Fy(.)k(These)g(are)e
2248 (nondeterministic)g(functions)g(whic)o(h)g(pro)o(vide)f(the)i(in)o
2249 (terface)g(b)q(et)o(w)o(een)75 1697 y(constrain)o(t)g(propagation)e
2250 (and)h(bac)o(ktrac)o(king)g(searc)o(h.)19 b(Bound)13
2251 b(v)n(ariables)e(are)i(alw)o(a)o(ys)f(dereferenced)j(when)e(prin)o
2252 (ted.)75 1747 y(Un)o(b)q(ound)i(v)n(ariables)g(prin)o(t)f(in)h(some)f
2253 (form)f(whic)o(h)i(is)g(not)g(parsable)h(b)o(y)e(the)i
2254 Fv(Lisp)f Fy(reader,)h(designed)g(to)f(mak)o(e)e(the)75
2255 1797 y(iden)o(tit)o(y)h(and)g(simple)f(prop)q(erties)j(of)d(the)i(v)n
2256 (ariable)e(readily)h(apparen)o(t.)20 b(The)15 b Fv(Screamer)g
2257 Fy(primitiv)o(es)d Fq(bound?)h Fy(and)75 1846 y Fq(ground?)k
2258 Fy(can)j(b)q(e)f(used)h(to)f(determine)f(whether)j(a)d(v)n(alue)h(is)f
2259 (b)q(ound)h(or)g(un)o(b)q(ound.)33 b(The)20 b(primitiv)o(e)c
2260 Fq(bound?)i Fy(is)75 1896 y(analogous)11 b(to)g(the)i(extra-logic)e
2261 (predicates)i Fq(var)f Fy(and)f Fq(nonvar)g Fy(t)o(ypically)g(included)
2262 h(in)f(a)h Fv(Pr)o(olog)g Fy(implemen)o(tatio)o(n.)137
2263 1946 y(V)m(ariables)k(can)h(participate)g(in)f(constrain)o(ts.)27
2264 b Fv(Screamer)18 b Fy(pro)o(vides)f(a)f(ric)o(h)h(set)g(of)f(primitiv)o
2265 (es)f(for)i(m)o(utually)75 1996 y(constraining)e(v)n(ariables.)22
2266 b(Constrain)o(t)15 b(satisfaction)g(is)h(implem)o(en)o(ted)e(in)h
2267 Fv(Screamer)h Fy(b)o(y)f(a)g(com)o(bination)e(of)i(con-)75
2268 2046 y(strain)o(t)c(propagation)f(and)i(bac)o(ktrac)o(king)e(searc)o
2269 (h.)19 b(The)11 b(constrain)o(t)h(primitiv)o(es)d(attac)o(h)j(pro)q
2270 (cedures)h(called)e Fu(notic)n(ers)75 2095 y Fy(on)o(to)16
2271 b(v)n(ariables.)27 b(Whenev)o(er)18 b(the)f(domain,)e(range)i(or)g(t)o
2272 (yp)q(e)g(of)g(a)f(v)n(ariable)g(is)h(restricted,)i(the)e(noticers)h
2273 (attac)o(hed)75 2145 y(on)o(to)13 b(that)g(v)n(ariable)f(are)i(run)g
2274 (to)f(propagate)g(the)h(e\013ect)h(of)e(that)g(restriction)h(to)f
2275 (other)h(m)o(utually)d(constrained)j(v)n(ari-)75 2195
2276 y(ables.)k(Noticers)c(implemen)o(t)c(constrain)o(t)k(propagation.)i
2277 (Since)e(constrain)o(t)f(propagation)f(alone)h(is)g(not)g(a)g(complete)
2278 75 2245 y(constrain)o(t)j(satisfaction)f(tec)o(hnique,)h(it)f(is)g
2279 (augmen)o(ted)g(b)o(y)g(bac)o(ktrac)o(king)g(searc)o(h.)24
2280 b(Constrain)o(t)15 b(propagation)f(and)p 75 2280 750
2281 2 v 121 2306 a Fn(4)139 2318 y Fs(Some)6 b(p)q(eople)g(add)h(a)h(third)
2282 f(inno)o(v)n(ation)o(,)f(pattern)g(directed)f(in)o(v)o(o)q(cation.)12
2283 b(In)7 b(m)o(y)g(opinion,)g(pattern)e(directed)h(in)o(v)o(o)q(cation)f
2284 (is)j(primarily)75 2358 y(a)j(syn)o(tactic)f(con)o(v)o(enienc)o(e)f
2285 (while)i(the)g(other)f(t)o(w)o(o)h(inno)o(v)n(ations)e(add)h
2286 (signi\014can)o(t)f(expressiv)o(eness)f(to)k(an)o(y)e(programmin)o(g)f
2287 (language.)121 2385 y Fn(5)139 2397 y Fs(This)15 b(op)q(eration)d(is)j
2288 (sometimes)d(called)i Fk(der)n(efer)n(encing)p Fs(.)29
2289 b Fm(Pr)o(olog)16 b Fs(and)e(its)g(deriv)n(ativ)o(es)f(pro)o(vide)f
2290 (automatic)h(dereferenci)o(ng.)23 b(It)75 2437 y(w)o(ould)12
2291 b(b)q(e)g(nice)g(if)g Fm(Common)h(Lisp)g Fs(pro)o(vided)d(a)i(ho)q(ok)g
2292 (to)g(allo)o(w)g(an)g(arbitrary)f(dereferenc)o(ing)e(function)i(to)h(b)
2293 q(e)g(de\014ned)f(on)h(a)g(p)q(er)g(t)o(yp)q(e)75 2476
2294 y(basis)f(and)h(sp)q(ecify)e(that)h(an)o(y)h(primitiv)o(e)d(op)q
2295 (eration)h(that)h(w)o(as)i(unde\014ned)c(giv)o(en)i(the)g(t)o(yp)q(es)g
2296 (of)h(argumen)o(ts)e(it)i(w)o(as)g(called)f(with)h(w)o(ould)75
2297 2515 y(\014rst)h(call)g(the)g(appropriat)o(e)e(dereferencin)o(g)g
2298 (functions)g(on)i(it)h(argumen)o(ts.)19 b(Suc)o(h)12
2299 b(an)h(extension)e(w)o(ould)i(b)q(e)h(useful)e(not)h(only)f(for)h
2300 (logic)75 2555 y(v)n(ariables)c(but)i(for)g(lazy)f(ev)n(aluation)f(and)
2301 i(futures)e(\(Halstead,)h(19??\))k(as)d(w)o(ell.)1002
2302 2723 y Fy(6)p eop
2303 %%Page: 7 7
2304 7 6 bop 75 195 a Fy(bac)o(ktrac)o(king)15 b(searc)o(h)h(run)f
2305 (automatically)d(in)j(an)f(in)o(terlea)o(v)o(ed)h(opp)q(ortunistic)h
2306 (fashion.)k(The)c(user)g(nev)o(er)g(directly)75 245 y(deals)f(with)g
2307 (the)h(attac)o(hing)e(and)h(running)g(noticers;)h(that)f(is)g
2308 (automatically)d(handled)j(b)o(y)g Fv(Screamer)q Fy(.)21
2309 b(The)16 b(user)75 295 y(simply)c(creates)k(v)n(ariables,)d(asserts)j
2310 (constrain)o(ts)e(b)q(et)o(w)o(een)i(them)d(and)h(asks)h
2311 Fv(Screamer)f Fy(for)g(solutions.)k(Nonethe-)75 345 y(less,)g(it)f(is)g
2312 (helpful)g(to)g(kno)o(w)g(a)g(little)f(bit)h(ab)q(out)g(the)h(implemen)
2313 o(tatio)o(n)d(details)i(since)h(at)f(one)g(lev)o(el,)h(the)f(precise)75
2314 394 y(seman)o(tics)c(of)h(the)g Fv(Screamer)h Fy(primitiv)o(es)d(dep)q
2315 (ends)j(on)f(the)g(implemen)o(tation.)137 444 y(Sev)o(eral)h(general)g
2316 (principles)g(p)q(ertaining)g(to)g(noticers)g(hold)f(throughout)h(the)h
2317 (implem)o(en)o(tation.)i(First,)d(all)e(no-)75 494 y(ticers)i(are)g
2318 (deterministic.)j(Constrain)o(t)c(propagation)f(th)o(us)i(is)f(a)f
2319 (deterministic)h(pro)q(cess.)21 b(Noticers)15 b(ma)o(y)d(fail)h(ho)o
2320 (w-)75 544 y(ev)o(er.)18 b(Lik)o(e)10 b(all)g(failures,)h(this)g
2321 (causes)h(bac)o(ktrac)o(king)f(to)f(the)i(most)e(recen)o(t)i(c)o(hoice)
2322 g(p)q(oin)o(t.)k(Choice)11 b(p)q(oin)o(ts)g(are)g(created)75
2323 594 y(b)o(y)j(the)g(primitiv)o(e)e Fv(Screamer)i Fy(solution)f(forcing)
2324 g(functions)h Fq(linear-force)d Fy(and)j Fq(divide-and-conque)o(r-for)o
2325 (ce)75 643 y Fy(in)e(addition)f(to)i(an)o(y)f(other)h(c)o(hoice)g(p)q
2326 (oin)o(ts)f(explicitly)g(created)i(b)o(y)e(the)h(user.)19
2327 b(Second,)13 b(all)f(noticers)h(are)g(attac)o(hed)g(to)75
2328 693 y(v)n(ariables)g(b)o(y)g(lo)q(cal)f(side)i(e\013ect.)19
2329 b(Th)o(us)14 b(constrain)o(ts)g(asserted)h(b)q(et)o(w)o(een)g(v)n
2330 (ariables)e(disapp)q(ear)g(up)q(on)h(bac)o(ktrac)o(king.)137
2331 743 y(Constrain)o(t)c(propagation)e(ma)o(y)g(restrict)j(the)f(v)n(alue)
2332 f(that)h(a)g(v)n(ariable)e(ma)o(y)g(tak)o(e)h(on.)17
2333 b(Sev)o(eral)10 b(forms)e(of)h(restriction)75 793 y(are)19
2334 b(curren)o(tly)h(implemen)o(ted)d(in)i Fv(Screamer)q
2335 Fy(.)33 b(These)20 b(include)g(domain)c(restrictions,)21
2336 b(range)f(restrictions)g(and)75 843 y(t)o(yp)q(e)d(restrictions.)26
2337 b(The)17 b(kinds)f(of)g(restriction)h(will)e(b)q(e)i(discussed)h(in)e
2338 (greater)h(detail)f(in)g(the)h(follo)o(wing)c(sections.)75
2339 892 y(Sev)o(eral)k(general)g(principles)g(p)q(ertaining)f(to)h
2340 (restrictions)h(hold)e(throughout)h(the)g(implemen)o(tation.)23
2341 b(First,)18 b(there)75 942 y(is)e(only)g(one)h(kind)f(of)g(v)n
2342 (ariable.)25 b(An)o(y)16 b(v)n(ariable)g(ma)o(y)e(ha)o(v)o(e)j(an)o(y)f
2343 (com)o(bination)e(of)i(restrictions)i(placed)f(on)f(it)g(and)75
2344 992 y(ma)o(y)e(participate)i(in)f(an)o(y)h(form)e(of)h(constrain)o(t.)
2345 24 b(Second,)17 b(v)n(ariables)e(are)h(alw)o(a)o(ys)f(restricted)j(b)o
2346 (y)e(lo)q(cal)f(side)h(e\013ect.)75 1042 y(Th)o(us)g(an)o(y)e
2347 (restrictions)j(placed)f(on)f(the)h(v)n(alues)f(of)f(v)n(ariables)h
2348 (disapp)q(ear)h(up)q(on)f(bac)o(ktrac)o(king.)22 b(See)16
2349 b(section)g(3)f(for)75 1092 y(a)j(discussion)h(of)g(the)g(implications)
2350 d(of)i(this)g(for)h(the)g(in)o(teraction)f(b)q(et)o(w)o(een)i(lo)q(cal)
2351 e(side)h(e\013ects)i(and)d Fv(Screamer)75 1142 y Fy(primitiv)o(es)12
2352 b(lik)o(e)h Fq(one-value)p Fy(.)75 1279 y Fw(6)69 b(Domain,)22
2353 b(Range)h(and)h(T)n(yp)r(e)f(Restricti)o(ons)75 1370
2354 y Fy(The)14 b Fv(Screamer)h Fy(constrain)o(t)f(pac)o(k)n(age)f(incorp)q
2355 (orates)i(the)f(follo)o(wing)d(simple)i(t)o(yp)q(e)h(system.)k(All)12
2356 b(v)n(alues)i(are)g(either)75 1420 y Fx(n)o(umeric)f
2357 Fy(or)g Fx(non-n)o(umeric)p Fy(.)k(Numeric)c(v)n(alues)g(are)g(in)g
2358 (turn)h(either)g Fx(real)g Fy(or)f Fx(non-real)p Fy(.)18
2359 b(Real)12 b(n)o(um)o(b)q(ers)h(include)h(b)q(oth)75 1469
2360 y(\015oating)g(p)q(oin)o(t)g(n)o(um)o(b)q(ers)h(as)g(w)o(ell)f(as)h
2361 (rational)f(n)o(um)o(b)q(ers.)20 b(Non-real)15 b(n)o(um)o(b)q(ers)f
2362 (include)h(complex)f(n)o(um)o(b)q(ers.)21 b(Real)75 1519
2363 y(v)n(alues)15 b(are)h(in)f(turn)h(either)h Fx(in)o(teger)f
2364 Fy(or)f Fx(non-in)o(teger)p Fy(.)23 b(The)16 b(ab)q(o)o(v)o(e)g
2365 (classes)g(are)g(not)g(disjoin)o(t.)22 b(In)15 b(the)h
2366 Fv(Screamer)75 1569 y Fy(t)o(yp)q(e)e(system,)f(all)g(in)o(tegers)i
2367 (are)f(reals)g(and)g(all)e(real)i(are)g(n)o(um)o(b)q(ers.)k(An)o(y)c(v)
2368 n(alue)f(ho)o(w)o(ev)o(er,)h(can)g(b)q(e)g(classi\014ed)g(in)g(one)75
2369 1619 y(of)f(the)i(follo)o(wing)c(four)j(disjoin)o(t)e(classes:)20
2370 b(in)o(teger,)14 b(non-in)o(teger)g(real,)f(non-real)h(n)o(um)o(b)q
2371 (er,)e(non-n)o(um)o(b)q(er.)137 1669 y(One)21 b(m)o(ust)f(b)q(ear)h(in)
2372 f(mind)e(that)j(the)g Fv(Screamer)g Fy(notion)f(of)g(t)o(yp)q(e)g(is)h
2373 (deriv)o(ed)g(from)d(the)j Fv(Common)c(Lisp)75 1718 y
2374 Fy(represen)o(tation)i(of)e(an)g(ob)r(ject)h(and)f(not)g(its)g
2375 (abstract)i(mathematical)14 b(prop)q(erties.)29 b(Th)o(us)18
2376 b Fv(Screamer)g Fy(do)q(es)g(not)75 1768 y(consider)13
2377 b(the)g(n)o(um)o(b)q(er)e Fq(1.0)h Fy(to)g(b)q(e)g(an)g(in)o(teger)h
2378 (since)g(its)f(underlying)g Fv(Common)k(Lisp)c Fy(represen)o(tation)i
2379 (is)e(a)g(\015oating)75 1818 y(p)q(oin)o(t)e(n)o(um)o(b)q(er)f(and)i
2380 Fv(Common)16 b(Lisp)10 b Fy(nev)o(er)i(automatically)7
2381 b(con)o(v)o(erts)k(a)f(\015oating)g(p)q(oin)o(t)f(n)o(um)o(b)q(er)h(to)
2382 g(an)g(in)o(teger.)18 b(On)75 1868 y(the)d(other)h(hand,)e
2383 Fv(Screamer)i Fy(do)q(es)f(consider)h Fq(4/1)e Fy(to)h(b)q(e)g(an)g(in)
2384 o(teger)g(since)g Fv(Common)i(Lisp)e Fy(will)e(automatically)75
2385 1918 y(con)o(v)o(ert)i(a)g(rational)e(n)o(um)o(b)q(er)h(with)g(one)h
2386 (as)g(its)f(denominator)f(in)o(to)h(an)h(in)o(teger.)20
2387 b(Lik)o(ewise,)14 b Fv(Screamer)i Fy(considers)75 1968
2388 y Fq(#C\(4)21 b(0\))16 b Fy(to)h(b)q(e)g(an)g(in)o(teger)g(since)g
2389 Fv(Common)g(Lisp)f Fy(will)g(con)o(v)o(ert)h(a)g(complex)e(n)o(um)o(b)q
2390 (er)h(whose)h(comp)q(onen)o(ts)g(are)75 2017 y(in)o(tegers)k(and)f
2391 (whose)h(imaginary)d(part)i(is)h(zero)g(in)o(to)f(an)g(in)o(teger.)38
2392 b Fv(Screamer)21 b Fy(ho)o(w)o(ev)o(er,)h(do)q(es)f(not)f(consider)75
2393 2067 y Fq(#C\(4.0)h(0.0\))12 b Fy(to)h(b)q(e)h(real)g(since)g
2394 Fv(Common)i(Lisp)e Fy(will)e(not)h(con)o(v)o(ert)h(a)f(complex)f(n)o
2395 (um)o(b)q(er)h(whose)h(comp)q(onen)o(ts)f(are)75 2117
2396 y(reals)i(in)o(to)f(a)h(real,)f(ev)o(en)h(though)g(its)g(imaginary)c
2397 (part)k(is)g(zero.)21 b(Since)16 b Fv(Common)g(Lisp)f
2398 Fy(represen)o(ts)i(b)q(oth)e(parts)h(of)75 2167 y(a)d(complex)e(n)o(um)
2399 o(b)q(er)i(as)g(the)h(same)e(data)g(t)o(yp)q(e,)i(b)q(oth)f
2400 Fq(#C\(4.0)20 b(0\))13 b Fy(and)g Fq(#C\(4)21 b(0.0\))12
2401 b Fy(are)h(treated)i(as)e Fq(#C\(4.0)20 b(0.0\))p Fy(.)137
2402 2217 y Fv(Screamer)14 b Fy(can)g(optionally)d(restrict)k(a)d(v)n
2403 (ariable)h(to)g(tak)o(e)g(on)g(v)n(alues)g(only)f(of)h(a)g(giv)o(en)f
2404 (t)o(yp)q(e.)19 b(V)m(ariables)12 b(whose)75 2266 y(v)n(alues)j(are)g
2405 (restricted)j(to)d(b)q(e)h(n)o(umeric)e(are)h(termed)h(n)o(umeric)e(v)n
2406 (ariables.)21 b(Similar)12 b(terminology)h(is)i(used)h(for)f(non-)75
2407 2316 y(n)o(umeric,)9 b(real,)h(non-real,)g(in)o(teger)g(and)f(non-in)o
2408 (teger)h(v)n(ariables.)16 b(V)m(ariables)9 b(created)i(with)f
2409 Fq(make-variable)c Fy(initially)75 2366 y(carry)17 b(no)g(t)o(yp)q(e)g
2410 (restrictions.)28 b(Subsequen)o(t)18 b(t)o(yp)q(e)f(restrictions)h(can)
2411 f(b)q(e)g(added)g(using)g(the)g(primitiv)o(es)e Fq(integerv)p
2412 Fy(,)75 2416 y Fq(realv)c Fy(and)h Fq(numberv)p Fy(,)e(p)q(oten)o
2413 (tially)h(com)o(bined)g(with)h Fq(notv)p Fy(,)f(along)g(with)g
2414 Fq(assertv!)p Fy(.)16 b(F)m(or)c(example,)e(a)i(real)g(v)n(ariable)75
2415 2466 y(can)i(b)q(e)h(created)g(using:)1002 2723 y(7)p
2417 %%Page: 8 8
2418 8 7 bop 204 188 a Fq(\(let)21 b(\(\(x)g(\(make-variable\)\)\))225
2419 238 y(\(assert!)g(\(realv)f(x\)\))225 288 y Fp(:)7 b(:)g(:)o
2420 Fq(\))75 369 y Fy(a)14 b(non-n)o(umeric)e(v)n(ariable)h(using:)204
2421 450 y Fq(\(let)21 b(\(\(x)g(\(make-variable\)\)\))225
2422 499 y(\(assert!)g(\(notv)f(\(numberv)h(x\)\)\))225 549
2423 y Fp(:)7 b(:)g(:)o Fq(\))75 630 y Fy(and)14 b(a)f(non-in)o(teger)h
2424 (real)g(using:)204 711 y Fq(\(let)21 b(\(\(x)g(\(make-variable\)\)\))
2425 225 760 y(\(assert!)g(\(notv)f(\(integerv)g(x\)\)\))225
2426 810 y(\(assert!)h(\(realv)f(x\)\))225 860 y Fp(:)7 b(:)g(:)o
2427 Fq(\).)75 941 y Fy(As)15 b(the)g(last)f(example)f(sho)o(ws,)h(sev)o
2428 (eral)h(t)o(yp)q(e)g(restrictions)g(can)g(b)q(e)g(placed)f(sim)o
2429 (ultaneously)f(on)h(the)h(same)e(v)n(ariable)75 991 y(sub)r(ject)e(to)f
2430 (the)h(pro)o(vision)d(that)i(the)h(in)o(tersection)g(of)e(the)h(t)o(yp)
2431 q(es)h(in)f(nonempt)o(y)m(.)15 b(An)10 b(attempt,)f(suc)o(h)i(as)f(the)
2432 g(follo)o(wing,)75 1041 y(to)i(restrict)i(a)e(v)n(ariable)g(to)g(an)g
2433 (empt)o(y)f(set)j(of)e(p)q(ossible)g(v)n(alues)g(fails)g(and)g(bac)o
2434 (ktrac)o(ks)h(to)f(the)h(previous)g(c)o(hoice)g(p)q(oin)o(t.)204
2435 1121 y Fq(\(let)21 b(\(\(x)g(\(make-variable\)\)\))225
2436 1171 y(\(assert!)g(\(notv)f(\(numberv)h(x\)\)\))225 1221
2437 y(\(assert!)g(\(integerv)f(x\)\))225 1271 y Fp(:)7 b(:)g(:)o
2438 Fq(\).)75 1352 y Fy(This)15 b(do)q(es)g(not)g(cause)h(an)f(error)h
2439 (unless)f(the)h(assertion)f(is)g(p)q(erformed)g(outside)g(the)g(con)o
2440 (text)h(of)e(an)o(y)h(c)o(hoice)g(p)q(oin)o(t.)75 1401
2441 y(Remem)o(b)q(er)g(that)h(in)f Fv(Screamer)q Fy(,)h(restricting)h(a)f
2442 (v)n(ariable)f(to)h(b)q(e)h(an)f(in)o(teger)h(inheren)o(tly)f
2443 (restricts)i(it)e(to)g(b)q(e)h(real)75 1451 y(and)c(restricting)g(a)g
2444 (v)n(ariable)f(to)g(b)q(e)i(real)f(inheren)o(tly)g(restricts)i(it)d(to)
2445 h(b)q(e)g(n)o(umeric.)k(Lik)o(ewise,)c(restricting)g(a)g(v)n(ariable)75
2446 1501 y(to)i(b)q(e)h(non-n)o(umeric)e(restricts)k(it)c(to)i(b)q(e)g
2447 (non-real)e(and)i(restricting)g(a)f(v)n(ariable)f(to)h(b)q(e)h
2448 (non-real)f(restricts)i(it)e(to)g(b)q(e)75 1551 y(non-in)o(teger.)j(In)
2449 12 b(the)h(ab)q(o)o(v)o(e)f(example,)f Fq(\(assert!)20
2450 b(\(integerv)g(x\)\))12 b Fy(will)f(fail)f(since)j Fq(x)g
2451 Fy(is)f(already)g(restricted)i(to)e(b)q(e)75 1601 y(non-n)o(umeric)h
2452 (and)h(th)o(us)g(non-in)o(teger.)137 1651 y(All)19 b
2453 Fv(Screamer)i Fy(constrain)o(t)f(primitiv)o(es)e(accept)j(b)q(oth)f(b)q
2454 (ound)g(and)g(un)o(b)q(ound)g(v)n(ariables,)g(as)g(w)o(ell)f(as)h(non-)
2455 75 1700 y(v)n(ariable)15 b(v)n(alues,)h(as)g(their)h(argumen)o(ts.)24
2456 b(This)16 b(includes)h(the)f(t)o(yp)q(e)h(primitiv)o(es)d
2457 Fq(integerv)p Fy(,)h Fq(realv)g Fy(and)h Fq(numberv)p
2458 Fy(.)75 1750 y(Th)o(us)10 b Fq(\(assert!)20 b(\(integerv)g(4.0\)\))8
2459 b Fy(is)h(acceptable)h(and)f(will)f(fail)g(immedia)o(tely)m(.)13
2460 b(Lik)o(ewise)d Fq(\(assert!)20 b(\(integerv)g(x\)\))75
2461 1800 y Fy(will)12 b(also)i(fail)e(immediately)e(if)j
2462 Fq(x)h Fy(ev)n(aluates)g(to)g Fq(4.0)f Fy(or)h(if)f Fq(x)h
2463 Fy(ev)n(aluates)f(to)h(a)g(v)n(ariable)f(whic)o(h)g(is)h(b)q(ound)g(to)
2464 g Fq(4.0)p Fy(.)137 1850 y(In)19 b(the)f(ab)q(o)o(v)o(e)g(examples,)g
2465 (the)h(t)o(yp)q(es)g(of)f(v)n(ariables)g(w)o(ere)h(explicitly)e
2466 (restricted)k(using)d(the)g Fq(assert!)f Fy(primi-)75
2467 1900 y(tiv)o(e.)22 b Fv(Screamer)16 b Fy(ma)o(y)d(restrict)k(the)f(t)o
2468 (yp)q(es)g(of)e(v)n(ariables)h(in)g(t)o(w)o(o)f(other)i(w)o(a)o(ys.)22
2469 b(First,)15 b(a)g(n)o(um)o(b)q(er)g(of)f Fv(Screamer)75
2470 1949 y Fy(primitiv)o(es)f(create)k(and)e(return)h(v)n(ariables)f(whic)o
2471 (h)g(are)g(already)g(t)o(yp)q(ed.)22 b(In)15 b(particular)g(the)h
2472 (primitiv)o(es)d(fo)q(o)i(return)75 1999 y(in)o(teger)i(v)n(ariables,)g
2473 (the)h(primitiv)o(es)d(bar)i(return)h(real)f(v)n(ariables)g(and)f(the)i
2474 (primitiv)o(es)d(baz)j(return)g(n)o(umeric)e(v)n(ari-)75
2475 2049 y(ables.)25 b(Second,)17 b(a)e(n)o(um)o(b)q(er)h(of)f
2476 Fv(Screamer)i Fy(primitiv)o(es)d(restrict)k(the)e(t)o(yp)q(es)h(of)f
2477 (their)g(argumen)o(ts.)24 b(In)16 b(particular)75 2099
2478 y(...)23 b(Remem)o(b)q(er)14 b(that)i(all)f Fv(Screamer)h
2479 Fy(constrain)o(t)h(primitiv)o(es)d(accept)j(b)q(oth)f(b)q(ound)g(and)g
2480 (un)o(b)q(ound)g(v)n(ariables,)f(as)75 2149 y(w)o(ell)f(as)h(non-v)n
2481 (ariable)e(v)n(alues)h(as)h(argumen)o(ts.)20 b(A)15 b(primitiv)o(e)d
2482 (whic)o(h)j(restricts)h(an)f(argumen)o(t)e(to)i(a)f(giv)o(en)g(t)o(yp)q
2483 (e)h(will)75 2198 y(fail)d(immediately)e(if)j(called)g(with)h(a)f
2484 (non-v)n(ariable)f(v)n(alue)h(not)g(meeting)g(the)h(t)o(yp)q(e)g
2485 (restriction.)19 b(Similarly)l(,)11 b(a)i(b)q(ound)75
2486 2248 y(v)n(ariable)k(whose)i(v)n(alue)e(do)q(es)i(not)f(meet)g(the)h(t)
2487 o(yp)q(e)f(restriction)h(will)e(also)g(cause)j(imm)o(ediate)c(failure.)
2488 30 b(When)18 b(an)75 2298 y(un)o(b)q(ound)e(v)n(ariable)f(is)h(passed)h
2489 (to)f(a)f(restricted)j(argumen)o(t,)d(the)i(primitiv)o(e)d(imm)o
2490 (ediately)f(restricts)18 b(that)e(v)n(ariable)75 2348
2491 y(to)e(b)q(e)h(of)f(the)h(requisite)g(t)o(yp)q(e)g(b)q(efore)g(an)o(y)f
2492 (further)h(pro)q(cessing.)21 b(That)14 b(restriction)h(ma)o(y)e(cause)i
2493 (immediate)d(failure)75 2398 y(if)h(the)i(restriction)f(w)o(ould)f
2494 (cause)i(the)g(v)n(ariable's)e(t)o(yp)q(e)h(to)g(b)q(ecome)f(empt)o(y)m
2495 (.)137 2448 y(The)h(t)o(yp)q(e)h(hierarc)o(h)o(y)f(implies)d(that)j(at)
2496 g(an)o(y)f(p)q(oin)o(t)g(in)h(time)e(a)h(v)n(ariable)g(can)h(b)q(e)g
2497 (in)f(one)h(of)f(ten)i(t)o(yp)q(e)f(restriction)75 2497
2498 y(states:)19 b(in)o(teger,)12 b(non-in)o(teger,)h(non-in)o(teger)g(n)o
2499 (um)o(b)q(er,)e(non-in)o(teger)i(real,)f(real,)h(non-real,)f(non-real)g
2500 (n)o(um)o(b)q(er,)g(n)o(um-)75 2547 y(b)q(er,)j(non-n)o(um)o(b)q(er)e
2501 (and)i(unkno)o(wn.)k(In)14 b(all)g(but)g(the)h(last,)f(some)g
2502 (information)d(is)k(kno)o(wn)e(ab)q(out)i(the)g(t)o(yp)q(e)g(of)f(v)n
2503 (alue)75 2597 y(whic)o(h)g(the)g(v)n(ariable)f(ma)o(y)f(tak)o(e)i(on.)k
2504 (Th)o(us)c(a)f(v)n(ariable)g(whic)o(h)h(is)1002 2723
2505 y(8)p eop
2506 %%Page: 9 9
2507 9 8 bop 75 195 a Fw(7)69 b(Binding,)22 b(Dereferencing)f(and)j(Sharing)
2508 75 311 y(8)69 b(Argumen)n(t)23 b(Restricti)o(ons)75 427
2509 y(9)69 b(Aggregate)24 b(Ob)t(jects)75 518 y Fy(A)11 b(n)o(um)o(b)q(er)e
2510 (of)h Fv(Screamer)h Fy(primitiv)o(es)e(deal)h(with)g(aggregate)h(ob)r
2511 (jects,)h(tra)o(v)o(ersing)e(the)h(slots)g(of)f(suc)o(h)h(ob)r(jects)h
2512 (recur-)75 567 y(siv)o(ely)d(to)h(access)h(all)d(of)h(their)h(sub-ob)r
2513 (jects.)19 b(These)10 b(primitiv)o(es)e(include)i Fq(equalv)p
2514 Fy(,)f Fq(ground?)p Fy(,)f Fq(apply-substitution)o Fy(,)75
2515 617 y Fq(domain-size)p Fy(,)k Fq(solution)h Fy(and)h
2516 Fq(template)p Fy(.)k(The)d(only)e(aggregate)i(ob)r(jects)g(whic)o(h)g
2517 Fv(Screamer)g Fy(curren)o(tly)g(kno)o(ws)75 667 y(ho)o(w)i(to)h(tra)o
2518 (v)o(erse)h(are)f(cons)h(cells.)30 b(All)17 b(other)h(aggregate)g(ob)r
2519 (jects)h(are)f(treated)h(as)f(atomic.)28 b(F)m(urthermore,)18
2520 b(an)o(y)75 717 y(primitiv)o(e)12 b(whic)o(h)h(tra)o(v)o(erses)j
2521 (aggregate)e(data)f(ma)o(y)f(lo)q(op)h(if)h(the)g(aggregate)g(ob)r
2522 (ject)h(con)o(tains)e(circular)i(p)q(oin)o(ters.)75 854
2523 y Fw(10)69 b(Un)n(w)n(edging)23 b(Screamer)75 945 y Fy(T)m(o)17
2524 b(compile)f(e\016cien)o(t)i(co)q(de,)h Fv(Screamer)f
2525 Fy(m)o(ust)e(kno)o(w)h(whether)i(or)f(not)f(an)h(expression)h(is)e
2526 (deterministic)g(since)75 995 y Fv(Screamer)d Fy(can)g(generate)h(more)
2527 d(e\016cien)o(t)i(co)q(de)h(for)e(deterministic)g(expressions,)i(sub)q
2528 (expressions)g(and)f(functions)75 1045 y(than)e(for)f(nondeterministic)
2529 g(ones.)18 b(Whether)13 b(or)f(not)g(an)f(expression)i(is)f
2530 (deterministic)f(can)h(dep)q(end)h(on)f(whether)h(or)75
2531 1095 y(not)e(the)h(functions)g(it)e(calls)h(are)h(deterministic.)17
2532 b(Th)o(us)11 b Fv(Screamer)h Fy(main)o(tains)d(a)i(database)h(of)e(the)
2533 i(function)f(calling)75 1144 y(structure)19 b(of)e(an)o(y)f(functions)i
2534 (whic)o(h)f(ha)o(v)o(e)g(b)q(een)h(compiled)d(or)i(loaded)g(in)o(to)g
2535 (the)g Fv(Lisp)g Fy(w)o(orld.)28 b(This)17 b(`who-calls')75
2536 1194 y(database)h(is)g(implemen)o(ted)e(in)i(p)q(ortable)g
2537 Fv(Common)f(Lisp)h Fy(and)g(is)g(part)g(of)g Fv(Screamer)p
2538 Fy(.)31 b(It)18 b(is)g(indep)q(enden)o(t)i(of)75 1244
2539 y(an)o(y)12 b(other)h(nativ)o(e)f(who-calls)g(database)g(that)h(ma)o(y)
2540 d(b)q(e)j(built)f(in)o(to)g(the)h Fv(Common)j(Lisp)c
2541 Fy(implemen)o(tation)d(for)j(other)75 1294 y(purp)q(oses.)137
2542 1344 y(F)m(or)f(the)h(most)f(part,)g(the)i Fv(Screamer)f
2543 Fy(who-calls)e(database)i(is)g(completely)e(transparen)o(t)j(from)c
2544 (the)j(user.)19 b(There)75 1393 y(are)12 b(ho)o(w)o(ev)o(er,)g(a)f(n)o
2545 (um)o(b)q(er)g(of)g(quirky)g(situations)h(where)g(it)g(is)f(helpful)g
2546 (to)g(understand)i(its)f(op)q(eration.)17 b(Some)11 b(of)g(these)75
2547 1443 y(situations)j(are)g(una)o(v)o(oidable.)i(Others)g(are)e(simply)e
2548 (bugs)i(in)g(the)g(curren)o(t)h(implemen)o(tation.)137
2549 1493 y(When)d(compiling)c(an)j(expression)i Fp(e)e Fy(whic)o(h)g(calls)
2550 g(a)g(function)g Fp(f)t Fy(,)h Fv(Screamer)g Fy(needs)g(to)g(kno)o(w)e
2551 (whether)j(or)e(not)g Fp(f)75 1543 y Fy(is)f(deterministic)g(to)h(kno)o
2552 (w)f(ho)o(w)g(to)g(compile)f Fp(e)p Fy(.)17 b(There)12
2553 b(will)d(b)q(e)i(no)f(problem)f(if)h(the)h(de\014nition)f(of)g
2554 Fp(f)15 b Fy(app)q(ears)c(b)q(efore)h Fp(e)75 1593 y
2555 Fy(in)j(the)i(program,)d(i.e.)g(if)h(the)h(call)f(to)h
2556 Fp(f)k Fy(is)c(a)f(bac)o(kw)o(ard)h(reference.)26 b Fv(Screamer)16
2557 b Fy(will)e(already)i(kno)o(w)f(whether)i(or)75 1643
2558 y(not)c Fp(f)18 b Fy(is)13 b(deterministic)g(and)g(th)o(us)h(ho)o(w)f
2559 (to)g(compile)e Fp(e)p Fy(.)18 b(The)c(situation)f(is)g(more)f(complex)
2560 g(for)h(forw)o(ard)g(references.)75 1692 y Fv(Screamer)19
2561 b Fy(assumes)f(b)o(y)g(default)g(that)g Fp(f)24 b Fy(is)18
2562 b(deterministic)g(and)g(compiles)f Fp(e)h Fy(accordingly)m(.)30
2563 b(It)19 b(also)f(sa)o(v)o(es)g(the)75 1742 y(complete)12
2564 b(source)i(co)q(de)g(de\014nition)f(for)f(the)i(function)e
2565 Fp(g)i Fy(whic)o(h)f(con)o(tains)g Fp(e)p Fy(.)18 b(If)12
2566 b Fv(Screamer)i Fy(later)f(disco)o(v)o(ers)g(that)g Fp(f)75
2567 1792 y Fy(is)h(actually)g(nondeterministic,)g(then)h
2568 Fv(Screamer)g Fy(recompiles)f Fp(g)q Fy(.)20 b(This)14
2569 b(recompilation)f(happ)q(ens)i(automatically)l(.)75 1842
2570 y(The)f(user)h(normally)d(need)i(not)g(b)q(e)h(a)o(w)o(are)e(that)h
2571 (this)g(is)g(happ)q(ening.)137 1892 y(When)h(using)e(the)i
2572 Fv(Common)h(Lisp)f Fq(compile-file)c Fy(function,)i(this)h
2573 (recompilation)e(causes)k(the)e(binary)g(\014le)g(to)75
2574 1941 y(con)o(tain)i(t)o(w)o(o)h(de\014nitions)f(for)h(the)g(function)f
2575 Fp(g)q Fy(|one)h(where)h(the)f(original)e(de\014nition)i(app)q(eared)g
2576 (and)g(one)g(at)f(the)75 1991 y(place)c(of)g(recompilation)e(just)i
2577 (prior)g(to)g(the)h(de\014nition)f(of)f Fp(f)t Fy(.)1047
2578 1976 y Fo(6)1084 1991 y Fy(Some)g Fv(Common)16 b(Lisp)d
2579 Fy(implem)o(en)o(tations)d(will)g(issue)75 2041 y(a)15
2580 b(w)o(arning)g(that)h(the)g(binary)f(\014le)h(con)o(tains)f(m)o
2581 (ultiple)f(de\014nitions)h(for)h(functions.)23 b(Suc)o(h)16
2582 b(w)o(arnings)f(can)h(safely)f(b)q(e)75 2091 y(ignored.)221
2583 2076 y Fo(7)257 2091 y Fy(Note)f(that)g(there)g(is)g(no)f(run)g(time)g
2584 (p)q(erformance)g(p)q(enalt)o(y)g(for)g(forw)o(ard)g(references)j(and)e
2585 (recompilation.)75 2141 y(The)f(compiled)e(co)q(de)j(resulting)f(at)f
2586 (the)h(end)h(is)e(the)h(same)f(as)h(for)f(bac)o(kw)o(ard)h(references.)
2587 20 b(Th)o(us)13 b(there)h(should)f(b)q(e)g(no)75 2190
2588 y(temptation)d(to)i(restructure)i(program)d(\014les)h(to)f(minimi)o(ze)
2589 f(forw)o(ard)h(references.)20 b(The)12 b(only)f(p)q(enalties)h(are)h
2590 (increased)75 2240 y(compilation)j(time)i(due)i(to)e(recompilation,)g
2591 (sligh)o(tly)g(increased)i(binary)f(\014le)g(size)h(and)f(sligh)o(tly)e
2592 (increased)k(load)75 2290 y(time.)j(Recompiling)14 b(a)i(\014le)g(a)g
2593 (second)h(time)e(in)h(the)h(same)e Fv(Lisp)i Fy(w)o(orld)e(will)g
2594 (eliminate)g(all)g(duplicate)h(de\014nitions)p 75 2325
2595 750 2 v 121 2352 a Fn(6)139 2363 y Fs(It)d(is)g(actually)e(p)q(ossible)
2596 h(for)g(a)i(function)d(to)i(ha)o(v)o(e)f(sev)o(eral)f(recompilation)o
2597 (s.)18 b(If)13 b Fj(f)k Fs(has)c(forw)o(ard)f(references)f(to)i
2598 Fj(g)i Fs(and)d Fj(h)p Fs(,)i(b)q(oth)f(of)75 2403 y(whic)o(h)e(are)g
2599 (later)g(found)f(to)h(b)q(e)g(nondetermin)o(istic)o(,)e
2600 Fj(f)15 b Fs(will)d(b)q(e)f(recompiled)e(t)o(wice,)i(once)g(prior)f(to)
2601 h(the)g(de\014nition)e(of)j Fj(g)g Fs(and)f(again)f(prior)75
2602 2442 y(to)h(the)f(de\014nition)f(of)i Fj(h)p Fs(.)16
2603 b(It)11 b(is)g(also)g(p)q(ossible)e(for)i(recompilati)o(ons)d(to)j
2604 (cascade.)i(If)e Fj(f)k Fs(has)c(a)g(forw)o(ard)g(reference)d(to)j
2605 Fj(g)i Fs(whic)o(h)e(in)g(turn)f(has)75 2482 y(a)h(forw)o(ard)e
2606 (reference)f(to)j Fj(h)g Fs(then)e(disco)o(v)o(ering)f(that)h
2607 Fj(h)j Fs(is)e(nondetermin)o(istic)d(will)k(cause)e(b)q(oth)h
2608 Fj(g)i Fs(and)d(then)h Fj(f)k Fs(to)d(b)q(e)f(recompiled)d(when)k
2609 Fj(h)75 2521 y Fs(is)g(compiled.)i(It)e(is)h(our)f(exp)q(erience)d
2610 (that)j(suc)o(h)f(m)o(ultiple)f(recompilation)o(s)g(are)i(v)o(ery)f
2611 (rare.)121 2549 y Fn(7)139 2561 y Fs(It)h(w)o(ould)g(b)q(e)g(nice)f(if)
2612 i Fm(Common)g(Lisp)g Fs(pro)o(vided)d(a)i(declaration)d(to)k(disable)d
2613 (suc)o(h)i(w)o(arnings.)1002 2723 y Fy(9)p eop
2614 %%Page: 10 10
2615 10 9 bop 75 195 a Fy(and)12 b(alleviate)f(the)i(increased)h(binary)e
2616 (\014le)g(size)h(and)f(load)f(time)g(p)q(enalties)i(since)g
2617 Fv(Screamer)g Fy(will)e(ha)o(v)o(e)h(a)g(complete)75
2618 245 y(and)i(up-to-date)g(who-calls)f(database)h(for)f(the)i(second)g
2619 (compilation.)137 295 y(This)i(same)f(who-calls)f(database)i(allo)o(ws)
2620 f(users)i(to)e(safely)h(rede\014ne)h(functions,)f(c)o(hanging)f(them)g
2621 (from)f(deter-)75 345 y(ministic)e(to)h(nondeterministic)g(and)g(vica)g
2622 (v)o(ersa.)20 b Fv(Screamer)15 b Fy(will)e(trac)o(k)i(all)e(suc)o(h)i
2623 (c)o(hanges)h(using)e(the)h(who-calls)75 394 y(database)i(and)f
2624 (recompile)g(the)h(necessary)i(functions)e(to)f(k)o(eep)h(the)h(co)q
2625 (de)f(optimal)d(and)i(correct)j(at)d(all)g(times.)25
2626 b(It)75 444 y(is)14 b(p)q(ossible)h(ho)o(w)o(ev)o(er,)g(for)f(there)i
2627 (to)f(b)q(e)g(bugs)g(in)f(the)h(who-calls)f(database)h(co)q(de)h(whic)o
2628 (h)e(migh)o(t)f(cause)i Fv(Screamer)75 494 y Fy(to)h(incorrectly)i
2629 (determine)e(whether)i(or)f(not)f(a)h(function)f(is)h(deterministic)f
2630 (and)g(th)o(us)h(generate)h(incorrect)g(or)f(in-)75 544
2631 y(e\016cien)o(t)h(co)q(de.)29 b(W)m(e)16 b(request)j(that)e(y)o(ou)g
2632 (inform)e(us)j(if)e(y)o(ou)h(disco)o(v)o(er)h(suc)o(h)f(a)g(bug)g(b)o
2633 (y)g(sending)h(a)f(bug)g(rep)q(ort)h(to)75 594 y Fq(Bug-Screamer@AI.M)o
2634 (IT.ED)o(U)13 b Fy(including)i(as)h(m)o(uc)o(h)f(information)e(as)j(p)q
2635 (ossible)h(to)f(allo)o(w)e(us)i(to)g(rep)q(eat)i(that)e(bug.)75
2636 643 y(Nonetheless,)h(ev)o(en)f(if)e(y)o(ou)h(are)h(bitten)g(b)o(y)f(a)g
2637 (bug)g(in)g(the)h(who-calls)e(database)i(managemen)o(t)d(co)q(de,)j(it)
2638 f(is)g(usually)75 693 y(p)q(ossible)g(for)f(y)o(ou)h(to)f(reco)o(v)o
2639 (er)i(and)e(still)g(compile)f(and)i(run)g(y)o(our)f(program.)19
2640 b(W)m(e)c(pro)o(vide)f(t)o(w)o(o)g(functions)h(to)g(allo)o(w)75
2641 743 y(y)o(ou)d(to)g(man)o(ually)e(remo)o(v)o(e)h(en)o(tries)j(from)c
2642 (the)j Fv(Screamer)g Fy(who-calls)f(database.)18 b(The)13
2643 b(\014rst,)g Fq(purge)p Fy(,)e(allo)o(ws)g(y)o(ou)h(to)75
2644 793 y(remo)o(v)o(e)h(individual)e(en)o(tries.)19 b(This)14
2645 b(function)f(w)o(ould)f(t)o(ypically)h(b)q(e)h(used)g(if)f(y)o(ou)g
2646 (encoun)o(ter)i(problems)d(compiling)f(a)75 843 y(function)h
2647 Fp(f)t Fy(.)18 b(In)12 b(this)g(case,)g(y)o(ou)g(should)f(purge)i
2648 Fp(f)j Fy(along)11 b(with)h(all)e(functions)i(called)g(b)o(y)g
2649 Fp(f)k Fy(and)c(then)h(recompile)d(eac)o(h)75 892 y(of)h(the)i
2650 (functions)f(just)g(purged.)18 b(The)12 b(second,)h Fq
2651 (unwedge-screamer)p Fy(,)c(is)i(for)h(more)f(catastrophic)h
2652 (situations.)17 b(It)12 b(will)75 942 y(purge)i(all)f(user)i(de\014ned)
2653 g(functions.)j(Y)m(ou)13 b(will)g(then)h(need)h(to)f(recompile)f(and)h
2654 (reload)f(all)g(user)i(de\014ned)g(functions.)137 992
2655 y(There)d(is)e(one)h(curren)o(tly)g(kno)o(wn)g(bug)f(in)g(the)h
2656 (who-calls)f(database)h(co)q(de.)17 b(It)11 b(arises)g(when)g(a)f
2657 (function)h(calls)f(itself,)75 1042 y(either)k(directly)f(or)g
2658 (indirectly)m(,)f(through)h(a)f(c)o(hain)h(of)f(other)i(functions)f
2659 (\(i.e.)f Fp(f)18 b Fy(calls)12 b Fp(g)i Fy(whic)o(h)f(in)f(turn)i
2660 (calls)e Fp(h)h Fy(whic)o(h)75 1092 y(in)h(turn)i(calls)e
2661 Fp(f)t Fy(\).)21 b(If)15 b(an)o(y)f(function)g(in)h(the)g(call)f(cycle)
2662 h(is)g(nondeterministic)f(than)h(the)g(all)f(functions)h(in)f(the)h
2663 (cycle)75 1142 y(will)f(b)q(e)j(nondeterministic.)23
2664 b Fv(Screamer)17 b Fy(has)f(no)f(problem)g(detecting)i(that)f(this)g
2665 (is)f(the)i(case.)25 b(If)15 b(ho)o(w)o(ev)o(er,)h(eac)o(h)75
2666 1191 y(of)f(the)g(functions)h(in)e(the)i(cycle)g(are)f(rede\014ned)i
2667 (so)f(that)f(they)g(are)h(deterministic,)f(the)g(en)o(tire)h(cycle)g
2668 (can)f(b)q(e)h(made)75 1241 y(deterministic.)g Fv(Screamer)11
2669 b Fy(will)e(not)h(detect)i(this)f(and)f(will)f(still)g(think)h(that)h
2670 (the)g(en)o(tire)g(cycle)g(is)f(nondeterministic.)75
2671 1291 y(Un)o(til)15 b(this)h(bug)g(is)f(\014xed,)i(y)o(ou)e(can)h(man)o
2672 (ually)d(reco)o(v)o(er)k(from)d(suc)o(h)j(a)f(situation)f(b)o(y)h
2673 (simply)d(purging)j(eac)o(h)g(of)f(the)75 1341 y(functions)c(in)f(the)i
2674 (call)e(cycle)h(and)g(then)g(recompiling)e(them.)16 b(Remem)o(b)q(er)9
2675 b(to)i(\014rst)g(purge)h Fu(al)r(l)e Fy(of)g(the)h(functions)g(b)q
2676 (efore)75 1391 y(recompiling)h Fu(any)i Fy(of)g(them)f(or)h
2677 Fv(Screamer)g Fy(will)e(still)h(insist)h(that)g(the)h(en)o(tire)f(call)
2678 f(cycle)i(is)f(nondeterministic.)75 1527 y Fw(11)69 b(Man)n(ual)24
2679 b(En)n(tries)75 1768 y Fq(nondeterministic-)o(funct)o(ion?)18
2680 b Fu(x)824 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p
2681 Fy(])75 1915 y(Returns)d Fq(t)f Fy(if)f Fp(x)h Fy(is)g(a)f
2682 (nondeterministic)h(function)g(ob)r(ject)g(and)g Fq(nil)g
2683 Fy(otherwise.)17 b(Nondeterministic)10 b(function)g(ob)r(jects)75
2684 1965 y(can)g(b)q(e)f(pro)q(duced)i(in)e(t)o(w)o(o)g(w)o(a)o(ys.)16
2685 b(First,)10 b(the)g(sp)q(ecial)f(form)f Fq(\(function)20
2686 b(foo\))8 b Fy(\(i.e.)16 b Fq(#'foo)p Fy(\))9 b(will)e
2687 (\(deterministically\))75 2015 y(ev)n(aluate)20 b(to)f(a)h
2688 (nondeterministic)f(function)h(ob)r(ject)g(if)f Fq(foo)h
2689 Fy(names)f(a)g(nondeterministic)h(function)f(de\014ned)i(b)o(y)75
2690 2065 y Fq(defun)p Fy(.)37 b(Second,)23 b(the)e(sp)q(ecial)g(form)e
2691 Fq(\(function)h(\(lambda)g(\()p Fp(:)7 b(:)g(:)o Fq(\))21
2692 b Fp(:)7 b(:)g(:)o Fq(\)\))20 b Fy(\(i.e.)38 b Fq(#'\(lambda)20
2693 b(\()p Fp(:)7 b(:)g(:)n Fq(\))21 b Fp(:)7 b(:)g(:)o Fq(\))p
2694 Fy(\))20 b(will)75 2115 y(\(deterministically\))13 b(ev)n(aluate)h(to)h
2695 (a)f(nondeterministic)g(function)g(ob)r(ject)h(if)f(the)h(b)q(o)q(dy)g
2696 (of)e(the)j(lam)o(b)q(da)c(expression)75 2164 y(con)o(tains)i(a)f
2697 (nondeterministic)h(expression.)75 2402 y Fq(either)21
2698 b Fr(f)p Fu(expr)n(ession)p Fr(g)455 2387 y Fi(\003)1366
2699 2402 y Fy([)p Fu(Nondeterministic)14 b(Sp)n(e)n(cial)h(F)m(orm)p
2700 Fy(])75 2549 y(Nondeterministically)d(ev)n(aluates)i(and)g(returns)i
2701 (the)f(v)n(alue)e(of)h(one)g(of)f(its)i Fu(expr)n(essions)p
2702 Fy(.)j(It)d(sets)g(up)f(a)g(c)o(hoice)g(p)q(oin)o(t)75
2703 2599 y(and)i(ev)n(aluates)h(the)f(\014rst)i Fu(expr)n(ession)e
2704 Fy(returning)h(its)f(result.)26 b(Whenev)o(er)18 b(bac)o(ktrac)o(king)e
2705 (pro)q(ceeds)i(to)e(this)g(c)o(hoice)992 2723 y(10)p
2707 %%Page: 11 11
2708 11 10 bop 75 195 a Fy(p)q(oin)o(t,)14 b(the)i(next)f
2709 Fu(expr)n(ession)g Fy(is)g(ev)n(aluated)g(and)g(its)g(result)g
2710 (returned.)23 b(When)15 b(no)g(more)f Fu(expr)n(essions)h
2711 Fy(remain,)e(the)75 245 y(curren)o(t)i(c)o(hoice)f(p)q(oin)o(t)e(is)h
2712 (remo)o(v)o(ed)g(and)g(bac)o(ktrac)o(king)g(con)o(tin)o(ues)h(to)f(the)
2713 h(next)f(most)f(recen)o(t)j(c)o(hoice)f(p)q(oin)o(t.)j(As)d(an)75
2714 295 y(optimization,)g(the)j(c)o(hoice)h(p)q(oin)o(t)e(created)i(for)e
2715 (this)h(expression)h(is)e(remo)o(v)o(ed)g(b)q(efore)h(the)h(ev)n
2716 (aluation)d(of)h(the)h(last)75 345 y Fu(expr)n(ession)12
2717 b Fy(so)f(that)h(a)f(failure)f(during)i(the)g(ev)n(aluation)e(of)g(the)
2718 i(last)g Fu(expr)n(ession)f Fy(will)f(bac)o(ktrac)o(k)i(directly)g(to)f
2719 (the)h(par-)75 394 y(en)o(t)h(c)o(hoice)g(p)q(oin)o(t)f(of)g(the)h
2720 Fq(either)f Fy(expression.)19 b Fq(Either)11 b Fy(tak)o(es)i(an)o(y)f
2721 (n)o(um)o(b)q(er)g(of)g(argumen)o(ts.)17 b(With)12 b(no)g(argumen)o
2722 (ts,)75 444 y Fq(\(either\))e Fy(is)h(equiv)n(alen)o(t)g(to)g
2723 Fq(\(fail\))f Fy(and)h(is)g(th)o(us)h(deterministic.)17
2724 b(With)10 b(one)i(argumen)o(t,)e Fq(\(either)21 b Fu(expr)n(ession)p
2725 Fq(\))11 b Fy(is)75 494 y(equiv)n(alen)o(t)h(to)h Fu(expr)n(ession)g
2726 Fy(itself)f(and)h(is)g(th)o(us)g(deterministic)f(only)g(when)i
2727 Fu(expr)n(ession)f Fy(is)f(deterministic.)18 b Fq(Either)11
2728 b Fy(is)75 544 y(a)i(sp)q(ecial)h(form,)d(not)j(a)f(function.)18
2729 b(It)13 b(is)h(an)f(error)i(for)e(the)h(expression)h
2730 Fq(#'either)d Fy(to)h(app)q(ear)h(in)f(a)g(program.)k(Th)o(us)75
2731 594 y Fq(\(funcall)j(#'either)g Fp(:)7 b(:)g(:)o Fq(\))18
2732 b Fy(or)g Fq(\(apply)j(#'either)f Fp(:)7 b(:)g(:)n Fq(\))19
2733 b Fy(are)f(in)g(error)i(and)e(will)f(yield)h(unpredictable)h(results.)
2734 75 643 y(With)c(t)o(w)o(o)f(or)h(more)g(argumen)o(t)f(it)g(is)h
2735 (nondeterministic)g(and)g(can)g(only)g(app)q(ear)h(in)e(a)h
2736 (nondeterministic)g(con)o(text.)75 693 y(See)g(section)f(2)g(for)g(a)f
2737 (discussion)i(of)e(the)h(con)o(texts)h(in)f(whic)o(h)f
2738 Fq(either)g Fy(ma)o(y)f(app)q(ear.)75 931 y Fq(fail)1343
2739 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
2740 1079 y(Bac)o(ktrac)o(ks)22 b(to)f(the)g(most)f(recen)o(t)i(c)o(hoice)f
2741 (p)q(oin)o(t.)39 b(Equiv)n(alen)o(t)20 b(to)g Fq(\(either\))p
2742 Fy(.)37 b(Note)22 b(that)f Fq(fail)f Fy(is)g(a)h(deter-)75
2743 1129 y(ministic)f(function)h(and)g(th)o(us)h(it)f(is)g(p)q(ermissible)g
2744 (to)g(reference)j Fq(#'fail)c Fy(and)h(write)h Fq(\(funcall)e(#'fail\))
2745 g Fy(and)75 1179 y Fq(\(apply)h(#'fail)f(nil\))p Fy(.)31
2746 b(In)19 b(nondeterministic)f(con)o(texts,)i(the)f(expression)h
2747 Fq(\(fail\))d Fy(is)h(optimized)f(to)i(generate)75 1229
2748 y(inline)13 b(bac)o(ktrac)o(king)h(co)q(de.)75 1467 y
2749 Fq(local)21 b Fr(f)p Fu(expr)n(ession)p Fr(g)433 1452
2750 y Fi(\003)1813 1467 y Fy([)p Fu(Macr)n(o)p Fy(])75 1615
2751 y(Ev)n(aluates)14 b Fu(expr)n(essions)h Fy(in)f(the)h(same)f(fashion)g
2752 (as)g Fq(progn)g Fy(except)i(that)e(all)g Fq(setf)f Fy(and)i
2753 Fq(setq)f Fy(expressions)i Fu(lexic)n(al)r(ly)75 1665
2754 y(neste)n(d)e Fy(in)e(its)h(b)q(o)q(dy)h(result)g(in)e
2755 Fu(lo)n(c)n(al)h Fy(side)g(e\013ects)j(whic)o(h)d(are)g(undone)h(up)q
2756 (on)f(bac)o(ktrac)o(king.)18 b(Note)13 b(that)g(this)h(a\013ects)75
2757 1714 y(only)c(side)h(e\013ects)h(in)o(tro)q(duced)f(explicitly)f(via)f
2758 Fq(setf)h Fy(and)g Fq(setq)p Fy(.)16 b(Side)11 b(e\013ects)h(in)o(tro)q
2759 (duced)g(b)o(y)e Fv(Common)16 b(Lisp)11 b Fy(built-)75
2760 1764 y(in)g(functions)h(suc)o(h)g(as)g Fq(rplaca)e Fy(are)i(alw)o(a)o
2761 (ys)f(global.)k(F)m(urthermore,)d(it)f(a\013ects)i(only)e(o)q
2762 (ccurrences)k(of)c Fq(setf)f Fy(and)i Fq(setq)75 1814
2763 y Fy(whic)o(h)k(app)q(ear)h(textually)e(nested)j(in)d(the)i(b)q(o)q(dy)
2764 f(of)g(the)h Fq(local)e Fy(expression|not)h(those)h(app)q(earing)f(in)g
2765 (functions)75 1864 y(called)g(from)f(the)j(b)q(o)q(dy)m(.)25
2766 b Fq(Local)16 b Fy(and)g Fq(global)g Fy(expressions)i(ma)o(y)d(b)q(e)i
2767 (nested)h(inside)f(one)g(another.)26 b(The)18 b(nearest)75
2768 1914 y(surrounding)g(declaration)g(determines)g(whether)i(or)e(not)g(a)
2769 g(giv)o(en)f Fq(setf)g Fy(or)i Fq(setq)e Fy(results)i(in)f(a)f(lo)q
2770 (cal)h(or)g(global)75 1963 y(side)d(e\013ect.)23 b(Side)15
2771 b(e\013ects)j(default)c(to)h(b)q(e)h(global)d(when)i(there)i(is)e(no)f
2772 (surrounding)i Fq(local)e Fy(or)h Fq(global)e Fy(expression.)75
2773 2013 y(Lo)q(cal)g(side)g(e\013ects)i(can)e(app)q(ear)g(b)q(oth)g(in)g
2774 (deterministic)f(as)i(w)o(ell)e(as)h(nondeterministic)f(con)o(texts)i
2775 (though)f(di\013eren)o(t)75 2063 y(tec)o(hniques)19 b(are)f(used)h(to)f
2776 (implemen)o(t)d(the)k(trailing)d(of)h(prior)h(v)n(alues)g(for)f
2777 (restoration)h(up)q(on)g(bac)o(ktrac)o(king.)30 b(See)75
2778 2113 y(sections)20 b(14,)d(3)h(and)h(4)f(for)g(details.)32
2779 b(In)18 b(nondeterministic)g(con)o(texts,)i Fq(local)e
2780 Fy(as)g(w)o(ell)g(as)h Fq(setf)e Fy(are)i(treated)h(as)75
2781 2163 y(sp)q(ecial)14 b(forms)f(rather)h(than)g(macros.)j(This)d(should)
2782 g(b)q(e)g(completely)f(transparen)o(t)i(to)f(the)g(user.)75
2783 2401 y Fq(global)21 b Fr(f)p Fu(expr)n(ession)p Fr(g)455
2784 2386 y Fi(\003)1813 2401 y Fy([)p Fu(Macr)n(o)p Fy(])75
2785 2549 y(Ev)n(aluates)14 b Fu(expr)n(essions)h Fy(in)f(the)h(same)f
2786 (fashion)g(as)g Fq(progn)g Fy(except)i(that)e(all)g Fq(setf)f
2787 Fy(and)i Fq(setq)f Fy(expressions)i Fu(lexic)n(al)r(ly)75
2788 2599 y(neste)n(d)f Fy(in)g(its)g(b)q(o)q(dy)g(result)h(in)f
2789 Fu(glob)n(al)g Fy(side)g(e\013ects)i(whic)o(h)e(are)h
2790 Fu(not)f Fy(undone)h(up)q(on)f(bac)o(ktrac)o(king.)21
2791 b(Note)16 b(that)f(this)992 2723 y(11)p eop
2792 %%Page: 12 12
2793 12 11 bop 75 195 a Fy(a\013ects)11 b(only)d(side)i(e\013ects)h(in)o
2794 (tro)q(duced)f(explicitly)f(via)f Fq(setf)h Fy(and)g
2795 Fq(setq)p Fy(.)15 b(Side)10 b(e\013ects)h(in)o(tro)q(duced)f(b)o(y)f
2796 Fv(Common)17 b(Lisp)75 245 y Fy(built-in)c(functions)h(suc)o(h)h(as)f
2797 Fq(rplaca)f Fy(are)h(alw)o(a)o(ys)g(global)e(an)o(yw)o(a)o(y)m(.)17
2798 b(F)m(urthermore,)d(it)g(a\013ects)h(only)e(o)q(ccurrences)18
2799 b(of)75 295 y Fq(setf)10 b Fy(and)h Fq(setq)f Fy(whic)o(h)g(app)q(ear)i
2800 (textually)e(nested)i(in)f(the)g(b)q(o)q(dy)g(of)f(the)i
2801 Fq(global)d Fy(expression|not)j(those)f(app)q(earing)75
2802 345 y(in)17 b(functions)g(called)g(from)f(the)i(b)q(o)q(dy)m(.)28
2803 b Fq(Local)16 b Fy(and)h Fq(global)f Fy(expressions)j(ma)o(y)c(b)q(e)j
2804 (nested)h(inside)e(one)h(another.)75 394 y(The)d(nearest)h(surrounding)
2805 f(declaration)f(determines)h(whether)h(or)f(not)f(a)g(giv)o(en)h
2806 Fq(setf)e Fy(or)i Fq(setq)f Fy(results)h(in)g(a)f(lo)q(cal)75
2807 444 y(or)j(global)e(side)j(e\013ect.)29 b(Side)17 b(e\013ects)i
2808 (default)d(to)h(b)q(e)h(global)d(when)i(there)i(is)e(no)f(surrounding)h
2809 Fq(local)f Fy(or)h Fq(global)75 494 y Fy(expression.)28
2810 b(Global)15 b(side)i(e\013ects)h(can)f(app)q(ear)g(b)q(oth)g(in)f
2811 (deterministic)h(as)f(w)o(ell)g(as)h(nondeterministic)f(con)o(texts.)75
2812 544 y(See)d(sections)g(3)f(and)g(4)g(for)g(further)g(details.)18
2813 b(In)12 b(nondeterministic)f(con)o(texts,)i Fq(global)e
2814 Fy(as)h(w)o(ell)g(as)g Fq(setf)f Fy(are)i(treated)75
2815 594 y(as)h(sp)q(ecial)g(forms)f(rather)h(than)g(macros.)j(This)d
2816 (should)g(b)q(e)g(completely)f(transparen)o(t)i(to)f(the)g(user.)75
2817 831 y Fq(map-values)20 b Fu(function)i(expr)n(ession)882
2818 b Fy([)p Fu(Deterministic)13 b(Macr)n(o)p Fy(])75 979
2819 y Fu(F)m(unction)i Fy(m)o(ust)e(b)q(e)i(a)f(deterministic)g(function)g
2820 (ob)r(ject)h(whic)o(h)f(tak)o(es)h(one)f(argumen)o(t.)k(This)c
2821 (function)g(is)g(called)g(on)75 1029 y(eac)o(h)d(v)n(alue)e(returned)j
2822 (b)o(y)e(ev)n(aluating)f Fu(expr)n(ession)p Fy(,)h(bac)o(ktrac)o(king)g
2823 (after)g(calling)f Fu(function)i Fy(on)f(eac)o(h)g(v)n(alue)g(to)g(pro)
2824 q(duce)75 1079 y(another)k(v)n(alue)e(of)h Fu(expr)n(ession)g
2825 Fy(un)o(til)f(ev)n(aluating)g Fu(expr)n(ession)h Fy(fails)f(and)h(pro)q
2826 (duces)i(no)e(further)h(v)n(alues.)j(The)d(results)75
2827 1129 y(returned)h(b)o(y)e(calling)f Fu(function)i Fy(on)g(eac)o(h)g(v)n
2828 (alue)e(are)i(discarded.)19 b(Lo)q(cal)13 b(side)h(e\013ects)h(p)q
2829 (erformed)f(b)o(y)f Fu(expr)n(ession)h Fy(are)75 1178
2830 y(a)o(v)n(ailable)9 b(during)h(the)i(corresp)q(onding)g(call)e(to)h
2831 Fu(function)g Fy(but)g(are)g(undone)h(when)f(that)g(call)f(returns.)19
2832 b(Lik)o(ewise,)11 b(lo)q(cal)75 1228 y(side)h(e\013ects)h(p)q(erformed)
2833 f(b)o(y)f Fu(function)h Fy(are)g(undone)g(when)g(it)f(returns.)18
2834 b(Th)o(us)12 b(b)o(y)f(the)i(time)d Fq(map-values)f Fy(returns,)k(all)
2835 75 1278 y(lo)q(cal)f(side)h(e\013ects)i(p)q(erformed)e(either)h(b)o(y)e
2836 Fu(expr)n(ession)i Fy(or)e Fu(function)i Fy(are)f(undone.)18
2837 b(A)13 b Fq(map-values)e Fy(expression)j(itself)75 1328
2838 y(is)g(alw)o(a)o(ys)f(deterministic)g(and)h(alw)o(a)o(ys)f(returns)i
2839 Fq(nil)p Fy(.)j(In)c(nondeterministic)f(con)o(texts,)i
2840 Fq(map-values)d Fy(is)i(treated)h(as)75 1378 y(a)f(sp)q(ecial)g(form)e
2841 (rather)j(than)e(a)h(macro.)j(This)d(should)f(b)q(e)i(completely)e
2842 (transparen)o(t)i(to)e(the)i(user.)75 1615 y Fq(one-value)20
2843 b Fu(expr)n(ession)i Fy([)p Fu(default-expr)n(ession)p
2844 Fy(])968 b([)p Fu(Macr)n(o)p Fy(])75 1763 y(Returns)17
2845 b(the)f(\014rst)h(v)n(alue)e(of)g(a)h(nondeterministic)f(expression.)25
2846 b Fu(Expr)n(ession)16 b Fy(is)g(ev)n(aluated,)f(deterministically)f
2847 (re-)75 1813 y(turning)d(only)g(its)g(\014rst)h(nondeterministic)f(v)n
2848 (alue,)g(if)f(an)o(y)m(.)17 b(No)11 b(further)h(execution)g(of)f
2849 Fu(expr)n(ession)g Fy(is)h(attempted)f(after)75 1863
2850 y(it)i(successfully)i(returns)g(one)f(v)n(alue.)k(If)13
2851 b Fu(expr)n(ession)h Fy(do)q(es)g(not)g(return)h(an)o(y)e
2852 (nondeterministic)g(v)n(alues)g(\(i.e.)18 b(it)13 b(fails\))75
2853 1913 y(then)e Fu(default-expr)n(ession)g Fy(is)f(ev)n(aluated)g(and)h
2854 (its)f(v)n(alue)g(returned)i(instead.)18 b Fu(Default-expr)n(ession)10
2855 b Fy(defaults)h(to)f Fq(\(fail\))75 1962 y Fy(if)j(not)i(presen)o(t.)20
2856 b(Lo)q(cal)14 b(side)g(e\013ects)j(p)q(erformed)d(b)o(y)g
2857 Fu(expr)n(ession)g Fy(are)h(undone)f(when)h Fq(one-value)d
2858 Fy(returns.)21 b(On)14 b(the)75 2012 y(other)h(hand,)f(lo)q(cal)f(side)
2859 i(e\013ects)h(p)q(erformed)e(b)o(y)g Fu(default-expr)n(ession)g
2860 Fy(are)h(not)f(undone)h(when)g Fq(one-value)d Fy(returns.)75
2861 2062 y(A)k Fq(one-value)e Fy(expression)i(can)g(app)q(ear)g(in)g(b)q
2862 (oth)f(deterministic)h(and)f(nondeterministic)g(con)o(texts.)25
2863 b(Irresp)q(ectiv)o(e)75 2112 y(of)16 b(what)g(con)o(text)g(the)h
2864 Fq(one-value)d Fy(expression)k(app)q(ears)f(in,)e Fu(expr)n(ession)i
2865 Fy(is)f(alw)o(a)o(ys)f(in)h(a)f(nondeterministic)h(con-)75
2866 2162 y(text,)g(while)f Fu(default-expr)n(ession)h Fy(is)g(in)f(whatev)o
2867 (er)h(con)o(text)h(the)f Fq(one-value)e Fy(expression)j(app)q(ears.)24
2868 b(A)16 b Fq(one-value)75 2211 y Fy(expression)j(is)f(nondeterministic)g
2869 (if)g Fu(default-expr)n(ession)g Fy(is)g(presen)o(t)i(and)e(is)g
2870 (nondeterministic,)g(otherwise)h(it)f(is)75 2261 y(deterministic.)29
2871 b(If)17 b Fu(default-expr)n(ession)h Fy(is)f(presen)o(t)i(and)f
2872 (nondeterministic,)f(and)h(if)f Fu(expr)n(ession)h Fy(fails,)f(then)h
2873 (it)f(is)75 2311 y(p)q(ossible)e(to)g(bac)o(ktrac)o(k)h(in)o(to)e(the)i
2874 Fu(default-expr)n(ession)f Fy(and)g(for)f(the)i Fq(one-value)d
2875 Fy(expression)j(to)f(nondeterministi-)75 2361 y(cally)e(return)i(m)o
2876 (ultiple)d(times.)17 b Fq(One-value)12 b Fy(is)h(analogous)g(to)h(the)g
2877 (cut)h(primitiv)o(e)d(\()p Fq(!)p Fy(\))18 b(in)13 b
2878 Fv(Pr)o(olog)q Fy(.)75 2599 y Fq(all-values)20 b Fr(f)p
2879 Fu(expr)n(ession)p Fr(g)542 2584 y Fi(\003)1552 2599
2880 y Fy([)p Fu(Deterministic)13 b(Macr)n(o)p Fy(])992 2723
2881 y(12)p eop
2882 %%Page: 13 13
2883 13 12 bop 75 195 a Fy(Ev)n(aluates)16 b Fu(expr)n(essions)g
2884 Fy(\(wrapp)q(ed)h(in)f(an)g(implicit)d Fq(progn)p Fy(\))i(and)h
2885 (returns)i(a)d(list)h(of)g(all)e(of)i(the)h(nondeterministic)75
2886 245 y(v)n(alues)f(returned)j(b)o(y)d(the)h(last)f Fu(expr)n(ession)p
2887 Fy(.)27 b(These)17 b(v)n(alues)g(are)g(pro)q(duced)h(b)o(y)e(rep)q
2888 (eatedly)i(ev)n(aluating)d(the)i(b)q(o)q(dy)75 295 y(and)e(bac)o(ktrac)
2889 o(king)f(to)h(pro)q(duce)h(the)g(next)f(v)n(alue,)g(un)o(til)f(the)h(b)
2890 q(o)q(dy)g(fails)f(and)h(yields)g(no)f(further)i(v)n(alues.)21
2891 b(Accord-)75 345 y(ingly)m(,)11 b(lo)q(cal)g(side)i(e\013ects)i(p)q
2892 (erformed)d(b)o(y)g(the)i(b)q(o)q(dy)e(while)g(pro)q(ducing)h(eac)o(h)g
2893 (v)n(alue)f(are)h(undone)g(b)q(efore)g(attempting)75
2894 394 y(to)k(pro)q(duce)h(subsequen)o(t)h(v)n(alues,)e(and)g(all)f(lo)q
2895 (cal)g(side)i(e\013ects)h(p)q(erformed)e(b)o(y)g(the)h(b)q(o)q(dy)f
2896 (are)g(undone)h(up)q(on)f(exit)75 444 y(from)g Fq(all-values)p
2897 Fy(.)31 b(Returns)20 b(the)g(list)e(con)o(taining)g Fq(nil)h
2898 Fy(if)f(there)i(are)f(no)g Fu(expr)n(essions)p Fy(.)34
2899 b(An)19 b Fq(all-values)e Fy(ex-)75 494 y(pression)f(can)g(app)q(ear)f
2900 (in)g(b)q(oth)h(deterministic)f(and)g(nondeterministic)f(con)o(texts.)
2901 24 b(Irresp)q(ectiv)o(e)17 b(of)e(what)g(con)o(text)75
2902 544 y(the)j Fq(all-values)d Fy(expression)j(app)q(ears)g(in,)g(the)f
2903 Fu(expr)n(essions)h Fy(are)f(alw)o(a)o(ys)g(in)f(a)h(nondeterministic)g
2904 (con)o(text.)29 b(An)75 594 y Fq(all-values)14 b Fy(expression)j
2905 (itself)e(is)h(alw)o(a)o(ys)f(deterministic.)24 b Fq(All-values)14
2906 b Fy(is)h(analogous)g(to)h(the)g Fq(bagof)f Fy(primitiv)o(e)75
2907 643 y(in)e Fv(Pr)o(olog)q Fy(.)75 885 y Fq(ith-value)20
2908 b Fp(i)i Fu(expr)n(ession)g Fy([)p Fu(default-expr)n(ession)p
2909 Fy(])932 b([)p Fu(Macr)n(o)p Fy(])75 1041 y(Returns)12
2910 b(the)g Fp(i)313 1026 y Fo(th)359 1041 y Fy(v)n(alue)e(of)h(a)g
2911 (nondeterministic)g(expression.)19 b Fu(Expr)n(ession)12
2912 b Fy(is)f(ev)n(aluated,)g(deterministically)f(return-)75
2913 1090 y(ing)15 b(only)h(its)g Fp(i)314 1075 y Fo(th)363
2914 1090 y Fy(nondeterministic)g(v)n(alue,)g(if)f(an)o(y)m(.)23
2915 b Fp(I)d Fy(m)o(ust)15 b(b)q(e)i(an)f(in)o(teger.)25
2916 b(The)16 b(\014rst)h(nondeterministic)f(v)n(alue)75 1140
2917 y(returned)g(b)o(y)f Fu(expr)n(ession)g Fy(is)g(n)o(um)o(b)q(ered)f
2918 Fu(zer)n(o)p Fy(,)g(the)h(second)h Fu(one)p Fy(,)f(etc.)22
2919 b(The)15 b Fp(i)1321 1125 y Fo(th)1370 1140 y Fy(v)n(alue)f(is)g(pro)q
2920 (duced)i(b)o(y)f(rep)q(eatedly)75 1190 y(ev)n(aluating)g
2921 Fu(expr)n(ession)p Fy(,)i(bac)o(ktrac)o(king)f(through)g(and)g
2922 (discarding)h(the)g(\014rst)g Fp(i)f Fy(v)n(alues)h(and)f
2923 (deterministically)e(re-)75 1240 y(turning)i(the)g(next)g(v)n(alue)f
2924 (pro)q(duced.)25 b(No)16 b(further)h(execution)f(of)f
2925 Fu(expr)n(ession)h Fy(is)g(attempted)f(after)h(it)g(successfully)75
2926 1290 y(returns)g(the)g(desired)f(v)n(alue.)20 b(If)14
2927 b Fu(expr)n(ession)h Fy(fails)f(b)q(efore)h(returning)g(b)q(oth)g(the)g
2928 Fp(i)g Fy(v)n(alues)g(to)f(b)q(e)i(discarded,)f(as)g(w)o(ell)75
2929 1339 y(as)i(the)h(desired)h Fp(i)363 1324 y Fo(th)413
2930 1339 y Fy(v)n(alue,)e(then)h Fu(default-expr)n(ession)g
2931 Fy(is)f(ev)n(aluated)g(and)g(its)g(v)n(alue)g(returned)i(instead.)28
2932 b Fu(Default-)75 1389 y(expr)n(ession)19 b Fy(defaults)f(to)h
2933 Fq(\(fail\))e Fy(if)h(not)g(presen)o(t.)34 b(Lo)q(cal)18
2934 b(side)h(e\013ects)h(p)q(erformed)f(b)o(y)f Fu(expr)n(ession)h
2935 Fy(are)g(undone)75 1439 y(when)13 b Fq(ith-value)e Fy(returns.)19
2936 b(On)13 b(the)g(other)g(hand,)f(lo)q(cal)g(side)h(e\013ects)i(p)q
2937 (erformed)d(b)o(y)g Fu(default-expr)n(ession)h Fy(and)f(b)o(y)h
2938 Fp(i)75 1489 y Fy(are)k(not)f(undone)g(when)h Fq(ith-value)d
2939 Fy(returns.)27 b(An)16 b Fq(ith-value)f Fy(expression)i(can)g(app)q
2940 (ear)f(in)g(b)q(oth)g(deterministic)75 1539 y(and)g(nondeterministic)f
2941 (con)o(texts.)24 b(Irresp)q(ectiv)o(e)19 b(of)c(what)g(con)o(text)i
2942 (the)f Fq(ith-value)e Fy(expression)j(app)q(ears)f(in,)g
2943 Fu(ex-)75 1589 y(pr)n(ession)e Fy(is)f(alw)o(a)o(ys)g(in)h(a)f
2944 (nondeterministic)h(con)o(text,)g(while)f Fu(default-expr)n(ession)h
2945 Fy(and)g Fp(i)g Fy(are)g(in)g(whatev)o(er)g(con)o(text)75
2946 1638 y(the)j Fq(ith-value)d Fy(expression)k(app)q(ears.)26
2947 b(An)16 b Fq(ith-value)e Fy(expression)k(is)e(nondeterministic)g(if)f
2948 Fu(default-expr)n(ession)75 1688 y Fy(is)g(presen)o(t)i(and)e(is)g
2949 (nondeterministic,)f(or)h(if)g Fp(i)g Fy(is)g(nondeterministic.)22
2950 b(Otherwise)16 b(it)f(is)g(deterministic.)21 b(If)15
2951 b Fu(default-)75 1738 y(expr)n(ession)c Fy(is)f(presen)o(t)j(and)d
2952 (nondeterministic,)g(and)h(if)f Fu(expr)n(ession)g Fy(fails,)g(then)h
2953 (it)g(is)f(p)q(ossible)h(to)f(bac)o(ktrac)o(k)h(in)o(to)f(the)75
2954 1788 y Fq(default-expressio)o(n)i Fy(and)j(for)g(the)h
2955 Fq(ith-value)d Fy(expression)j(to)f(nondeterministically)e(return)k(m)o
2956 (ultiple)12 b(times.)75 1838 y(If)h Fp(i)h Fy(is)f(nondeterministic)g
2957 (then)h(the)g Fq(ith-value)d Fy(expression)k(op)q(erates)f
2958 (nondeterministically)e(on)h(eac)o(h)h(v)n(alue)e(of)h
2959 Fp(i)p Fy(.)75 1887 y(In)h(this)g(case,)g(bac)o(ktrac)o(king)f(for)h
2960 (eac)o(h)g(v)n(alue)f(of)g Fu(expr)n(ession)h Fy(and)g
2961 Fu(default-expr)n(ession)g Fy(is)f(nested)j(in,)d(and)g(restarted)75
2962 1937 y(for,)g(eac)o(h)h(bac)o(ktrac)o(k)h(of)e Fp(i)p
2963 Fy(.)75 2179 y Fq(print-values)19 b Fr(f)p Fu(expr)n(ession)p
2964 Fr(g)585 2163 y Fi(\003)1552 2179 y Fy([)p Fu(Deterministic)13
2965 b(Macr)n(o)p Fy(])75 2330 y(Ev)n(aluates)18 b Fu(expr)n(essions)f
2966 Fy(\(wrapp)q(ed)i(in)e(an)h(implicit)d Fq(progn)p Fy(\))h(and)i(prin)o
2967 (ts)g(eac)o(h)g(of)f(the)h(nondeterministic)f(v)n(alues)75
2968 2380 y(returned)11 b(b)o(y)f(the)g(last)g Fu(expr)n(ession)g
2969 Fy(in)f(succession)j(\(using)e Fq(print)p Fy(\).)15 b(After)c(eac)o(h)f
2970 (v)n(alue)f(is)h(prin)o(ted,)g(the)h(user)g(is)e(queried)75
2971 2430 y(as)k(to)g(whether)i(or)e(not)g(further)g(v)n(alues)g(are)h
2972 (desired.)19 b(These)14 b(v)n(alues)f(are)g(pro)q(duced)i(b)o(y)d(rep)q
2973 (eatedly)j(ev)n(aluating)c(the)75 2479 y(b)q(o)q(dy)j(and)g(bac)o
2974 (ktrac)o(king)g(to)h(pro)q(duce)g(the)g(next)g(v)n(alue,)e(un)o(til)h
2975 (either)h(the)g(user)g(indicates)g(that)f(no)g(further)h(v)n(alues)75
2976 2529 y(are)e(desired)i(or)e(un)o(til)f(the)i(b)q(o)q(dy)f(fails)e(and)i
2977 (yields)g(no)g(further)h(v)n(alues.)j(Accordingly)m(,)c(lo)q(cal)f
2978 (side)h(e\013ects)i(p)q(erformed)75 2579 y(b)o(y)k(the)g(b)q(o)q(dy)g
2979 (while)g(pro)q(ducing)g(eac)o(h)h(v)n(alue)e(are)h(undone)h(after)f
2980 (prin)o(ting)f(eac)o(h)i(v)n(alue,)f(b)q(efore)h(attempting)d(to)992
2981 2723 y(13)p eop
2982 %%Page: 14 14
2983 14 13 bop 75 195 a Fy(pro)q(duce)22 b(subsequen)o(t)g(v)n(alues,)g(and)
2984 e(all)g(lo)q(cal)g(side)h(e\013ects)h(p)q(erformed)f(b)o(y)f(the)h(b)q
2985 (o)q(dy)g(are)g(undone)g(up)q(on)g(exit)75 245 y(from)13
2986 b Fq(print-values)p Fy(,)e(either)16 b(b)q(ecause)g(there)f(are)g(no)g
2987 (further)g(v)n(alues)f(or)g(b)q(ecause)j(the)e(user)g(declines)g(to)g
2988 (pro)q(duce)75 295 y(further)21 b(v)n(alues.)37 b(A)20
2989 b Fq(print-values)e Fy(expression)j(can)g(app)q(ear)g(in)e(b)q(oth)i
2990 (deterministic)e(and)i(nondeterministic)75 345 y(con)o(texts.)34
2991 b(Irresp)q(ectiv)o(e)20 b(of)f(what)f(con)o(text)i(the)f
2992 Fq(print-values)d Fy(expression)k(app)q(ears)f(in,)g(the)h
2993 Fu(expr)n(essions)f Fy(are)75 394 y(alw)o(a)o(ys)f(in)g(a)g
2994 (nondeterministic)g(con)o(text.)34 b(A)18 b Fq(print-values)e
2995 Fy(expression)k(itself)f(is)f(alw)o(a)o(ys)g(deterministic)g(and)75
2996 444 y(alw)o(a)o(ys)13 b(returns)i Fq(nil)p Fy(.)j Fq(Print-values)11
2997 b Fy(is)j(analogous)e(to)i(the)h(standard)f(top-lev)o(el)f(user)i(in)o
2998 (terface)g(in)e Fv(Pr)o(olog)q Fy(.)75 681 y Fq(funcall-nondeterm)o
2999 (inist)o(ic)19 b Fu(function)j Fr(f)p Fu(ar)n(gument)p
3000 Fr(g)1000 666 y Fi(\003)1441 681 y Fy([)p Fu(Nondeterministic)14
3001 b(F)m(unction)p Fy(])75 827 y(Analogous)8 b(to)i(the)f
3002 Fv(Common)17 b(Lisp)9 b Fy(built-in)f(function)h Fq(funcall)f
3003 Fy(except)j(that)e(it)g(accepts)i(b)q(oth)e(ordinary)g
3004 Fv(Common)17 b(Lisp)75 877 y Fy(\(deterministic\))h(function)h(ob)r
3005 (jects)g(as)g(w)o(ell)f(as)g(nondeterministic)g(function)h(ob)r(jects)g
3006 (for)g Fu(function)p Fy(.)32 b(Y)m(ou)18 b(m)o(ust)75
3007 927 y(use)h Fq(funcall-nondetermi)o(nisti)o(c)d Fy(to)i(funcall)f(a)h
3008 (nondeterministic)g(function)g(ob)r(ject.)32 b(A)19 b(run)o(time)e
3009 (error)i(will)75 977 y(b)q(e)e(signalled)f(if)g(y)o(ou)h(attempt)f(to)h
3010 (funcall)f(a)g(nondeterministic)g(function)h(ob)r(ject)h(with)e
3011 Fq(funcall)p Fy(.)26 b(Y)m(ou)16 b(can)h(use)75 1027
3012 y Fq(funcall-nondeterm)o(inist)o(ic)8 b Fy(to)i(funcall)g(either)i(a)e
3013 (deterministic)g(or)h(nondeterministic)f(function)h(ob)r(ject)g(though)
3014 75 1076 y(ev)o(en)h(if)e(all)g(of)h(the)h(argumen)o(ts)e(to)h
3015 Fq(funcall-nondetermin)o(istic)c Fy(are)12 b(deterministic)f(and)g
3016 Fu(function)h Fy(is)f(a)g(determin-)75 1126 y(istic)j(function)g(ob)r
3017 (ject,)g(the)h(call)e(expression)j(will)c(still)h(b)q(e)i
3018 (nondeterministic)e(\(with)h(presumably)f(a)h(single)g(v)n(alue\),)75
3019 1176 y(since)g(it)e(is)h(imp)q(ossible)e(to)i(determine)g(at)f(compile)
3020 f(time)h(that)h(a)f(giv)o(en)h(call)f(to)h Fq(funcall-nondete)o(rmini)o
3021 (stic)c Fy(will)75 1226 y(b)q(e)15 b(passed)f(only)g(deterministic)f
3022 (function)h(ob)r(jects)h(for)e Fu(function)p Fy(.)75
3023 1462 y Fq(apply-nondetermin)o(istic)18 b Fu(function)23
3024 b Fr(f)p Fu(ar)n(gument)o Fr(g)956 1447 y Fo(+)1441 1462
3025 y Fy([)p Fu(Nondeterministic)14 b(F)m(unction)p Fy(])75
3026 1609 y(Analogous)8 b(to)i(the)f Fv(Common)17 b(Lisp)9
3027 b Fy(built-in)f(function)h Fq(apply)f Fy(except)j(that)e(it)g(accepts)i
3028 (b)q(oth)f(ordinary)e Fv(Common)17 b(Lisp)75 1659 y Fy
3029 (\(deterministic\))c(function)g(ob)r(jects)i(as)e(w)o(ell)g(as)g
3030 (nondeterministic)g(function)g(ob)r(jects)i(for)e Fu(function)p
3031 Fy(.)18 b(Y)m(ou)13 b(m)o(ust)f(use)75 1709 y Fq(apply-nondetermin)o
3032 (istic)7 b Fy(to)k(apply)f(a)h(nondeterministic)g(function)f(ob)r
3033 (ject.)18 b(A)11 b(run)o(time)f(error)i(will)d(b)q(e)j(signalled)75
3034 1758 y(if)c(y)o(ou)h(attempt)g(to)g(apply)f(a)h(nondeterministic)g
3035 (function)g(ob)r(ject)h(with)f Fq(apply)p Fy(.)15 b(Y)m(ou)9
3036 b(can)h(use)g Fq(apply-nondetermi)o(nisti)o(c)75 1808
3037 y Fy(to)15 b(apply)f(either)i(a)e(deterministic)h(or)f
3038 (nondeterministic)h(function)f(ob)r(ject)i(though)f(ev)o(en)g(if)f(all)
3039 g(of)g(the)i(argumen)o(ts)75 1858 y(to)f Fq(apply-nondeterm)o(inist)o
3040 (ic)d Fy(are)j(deterministic)f(and)g Fu(function)i Fy(is)e(a)h
3041 (deterministic)f(function)g(ob)r(ject,)h(the)h(call)75
3042 1908 y(expression)e(will)d(still)g(b)q(e)j(nondeterministic)d(\(with)i
3043 (presumably)e(a)i(single)f(v)n(alue\),)g(since)h(it)f(is)h(imp)q
3044 (ossible)d(to)j(deter-)75 1958 y(mine)i(at)g(compile)g(time)f(that)i(a)
3045 g(giv)o(en)g(call)f(to)h Fq(apply-nondetermi)o(nisti)o(c)d
3046 Fy(will)i(b)q(e)h(passed)h(only)e(deterministic)75 2008
3047 y(function)f(ob)r(jects)h(for)e Fu(function)p Fy(.)75
3048 2244 y Fq(purge)21 b Fu(function-name)1040 b Fy([)p Fu(Deterministic)14
3049 b(F)m(unction)p Fy(])75 2391 y(Remo)o(v)o(es)i(an)o(y)g(information)e
3050 (ab)q(out)j Fu(function-name)h Fy(from)d Fv(Screamer)q
3051 Fy('s)h(who-calls)h(database.)27 b(See)18 b(section)f(10)75
3052 2441 y(for)d(an)f(explanation)g(of)g(when)i(this)f(w)o(ould)f(b)q(e)h
3053 (used.)992 2723 y(14)p eop
3054 %%Page: 15 15
3055 15 14 bop 75 195 a Fq(unwedge-screamer)1079 b Fy([)p
3056 Fu(Deterministic)14 b(F)m(unction)p Fy(])75 333 y(Remo)o(v)o(es)i(an)o
3057 (y)g(information)e(ab)q(out)i(all)g(user)i(de\014ned)g(functions)f
3058 (from)e Fv(Screamer)p Fy('s)i(who-calls)f(database.)27
3059 b(See)75 382 y(section)15 b(10)e(for)g(an)h(explanation)f(of)g(when)i
3060 (this)f(w)o(ould)f(b)q(e)h(used.)75 610 y Fq(member-of)20
3061 b Fu(se)n(quenc)n(e)995 b Fy([)p Fu(Nondeterministic)14
3062 b(F)m(unction)p Fy(])75 748 y(Nondeterministically)f(returns)j(an)e
3063 (elemen)o(t)g(of)f Fu(se)n(quenc)n(e)p Fy(.)21 b(The)15
3064 b(elemen)o(ts)f(are)h(returned)h(in)e(the)h(order)g(that)f(they)75
3065 797 y(app)q(ear)g(in)g Fu(se)n(quenc)n(e)p Fy(.)19 b
3066 Fu(Se)n(quenc)n(e)c Fy(m)o(ust)d(b)q(e)j(either)g(a)e(list)h(or)g(a)f
3067 (v)o(ector.)75 1025 y Fq(integer-between)19 b Fu(low)i(high)862
3068 b Fy([)p Fu(Nondeterministic)14 b(F)m(unction)p Fy(])75
3069 1162 y(Nondeterministically)i(returns)j(an)f(in)o(teger)g(in)g(the)g
3070 (closed)g(in)o(terv)n(al)f([)p Fu(low)o Fp(;)7 b Fu(high)p
3071 Fy(].)29 b(The)19 b(results)g(are)f(returned)h(in)75
3072 1212 y(ascending)14 b(order.)19 b Fu(L)n(ow)14 b Fy(and)f
3073 Fu(high)h Fy(m)o(ust)f(b)q(e)i(in)o(tegers.)k(F)m(ails)12
3074 b(if)h(the)i(in)o(terv)n(al)e(do)q(es)i(not)e(con)o(tain)h(an)o(y)f(in)
3075 o(tegers.)75 1440 y Fq(make-variable)19 b Fy([)p Fu(name)p
3076 Fy(])1005 b([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
3077 1577 y(Creates)k(and)e(returns)h(a)f(new)h(v)n(ariable.)24
3078 b(V)m(ariables)15 b(are)i(assigned)f(a)g(name)f(whic)o(h)h(is)g(only)g
3079 (used)h(to)f(iden)o(tify)f(the)75 1627 y(v)n(ariable)10
3080 b(when)i(it)e(is)h(prin)o(ted.)18 b(If)11 b(the)g(parameter)g
3081 Fu(name)h Fy(is)f(giv)o(en)f(then)i(it)f(is)g(assigned)g(as)h(the)f
3082 (name)f(of)h(the)h(v)n(ariable.)75 1677 y(Otherwise,)j(a)e(unique)h
3083 (name)f(is)h(assigned.)k(The)d(parameter)e Fu(name)i
3084 Fy(can)f(b)q(e)g(an)o(y)g Fv(Lisp)f Fy(ob)r(ject.)75
3085 1904 y Fq(numberv)20 b Fp(x)1233 b Fy([)p Fu(Deterministic)14
3086 b(F)m(unction)p Fy(])75 2042 y(If)j(when)g Fq(numberv)f
3087 Fy(is)h(called,)g Fp(x)g Fy(is)g(kno)o(wn)g(to)g(b)q(e)h(n)o(umeric)e
3088 (then)i Fq(numberv)d Fy(returns)k Fq(t)p Fy(.)28 b(Alternativ)o(ely)m
3089 (,)16 b(if)g(when)75 2092 y Fq(numberv)10 b Fy(is)h(called,)g
3090 Fp(x)g Fy(is)h(kno)o(wn)f(to)g(b)q(e)h(non-n)o(umeric)e(then)i
3091 Fq(numberv)e Fy(returns)j Fq(nil)p Fy(.)k(If)11 b(it)g(is)g(not)g(kno)o
3092 (wn)g(whether)i(or)75 2142 y(not)e Fp(x)g Fy(is)g(n)o(umeric)f(when)i
3093 Fq(numberv)e Fy(is)h(called)f(then)i Fq(numberv)e Fy(creates)j(and)e
3094 (returns)i(a)d(new)i(b)q(o)q(olean)f(v)n(ariable)f Fp(v)q
3095 Fy(.)18 b(The)75 2191 y(v)n(alues)12 b(of)f Fp(x)g Fy(and)h
3096 Fp(v)i Fy(are)e(m)o(utually)d(constrained)k(via)e(noticers)i(so)f(that)
3097 g Fp(v)h Fy(is)f(equal)f(to)h Fq(t)g Fy(if)f(and)g(only)g(if)g
3098 Fp(x)h Fy(is)g(kno)o(wn)f(to)75 2241 y(b)q(e)j(n)o(umeric)e(and)h
3099 Fp(v)i Fy(is)e(equal)f(to)h Fq(nil)g Fy(if)f(and)h(only)f(if)h
3100 Fp(x)f Fy(is)h(kno)o(wn)g(to)g(b)q(e)h(non-n)o(umeric.)i(If)d
3101 Fp(x)g Fy(later)g(b)q(ecomes)g(kno)o(wn)75 2291 y(to)i(b)q(e)g(n)o
3102 (umeric,)f(a)g(noticer)h(attac)o(hed)h(to)e Fp(x)h Fy(restricts)h
3103 Fp(v)h Fy(to)d(equal)h Fq(t)p Fy(.)20 b(Lik)o(ewise,)14
3104 b(if)g Fp(x)h Fy(later)f(b)q(ecomes)h(kno)o(wn)g(to)f(b)q(e)75
3105 2341 y(non-n)o(umeric,)e(a)h(noticer)i(attac)o(hed)f(to)f
3106 Fp(x)h Fy(restricts)h Fp(v)g Fy(to)f(equal)f Fq(nil)p
3107 Fy(.)k(F)m(urthermore,)d(if)e Fp(v)k Fy(ev)o(er)e(b)q(ecomes)g(kno)o
3108 (wn)f(to)75 2391 y(equal)j Fq(t)g Fy(then)h(a)g(noticer)g(attac)o(hed)g
3109 (to)f Fp(v)i Fy(restricts)g Fp(x)f Fy(to)f(b)q(e)h(n)o(umeric.)25
3110 b(Lik)o(ewise,)16 b(if)g Fp(v)i Fy(ev)o(er)f(b)q(ecomes)g(kno)o(wn)f
3111 (to)75 2441 y(equal)e Fq(nil)f Fy(then)h(a)g(noticer)g(attac)o(hed)h
3112 (to)f Fp(v)h Fy(restricts)h Fp(x)d Fy(to)h(b)q(e)h(non-n)o(umeric.)992
3113 2723 y(15)p eop
3114 %%Page: 16 16
3115 16 15 bop 75 195 a Fq(realv)21 b Fp(x)1276 b Fy([)p Fu(Deterministic)14
3116 b(F)m(unction)p Fy(])75 346 y(If)i(when)i Fq(realv)e
3117 Fy(is)g(called,)h Fp(x)g Fy(is)f(kno)o(wn)h(to)f(b)q(e)i(real)f(then)g
3118 Fq(realv)f Fy(returns)i Fq(t)p Fy(.)27 b(Alternativ)o(ely)m(,)16
3119 b(if)g(when)h Fq(realv)f Fy(is)75 396 y(called,)g Fp(x)g
3120 Fy(is)f(kno)o(wn)h(to)g(b)q(e)h(non-real)e(then)i Fq(realv)e
3121 Fy(returns)j Fq(nil)p Fy(.)23 b(If)16 b(it)g(is)g(not)f(kno)o(wn)h
3122 (whether)h(or)f(not)g Fp(x)g Fy(is)g(real)75 446 y(when)g
3123 Fq(realv)e Fy(is)h(called)g(then)g Fq(realv)f Fy(creates)j(and)e
3124 (returns)i(a)e(new)g(b)q(o)q(olean)g(v)n(ariable)f Fp(v)q
3125 Fy(.)23 b(The)15 b(v)n(alues)g(of)g Fp(x)f Fy(and)h Fp(v)75
3126 496 y Fy(are)g(m)o(utually)e(constrained)i(via)f(noticers)i(so)f(that)g
3127 Fp(v)h Fy(is)f(equal)g(to)f Fq(t)h Fy(if)f(and)h(only)f(if)g
3128 Fp(x)g Fy(is)h(kno)o(wn)g(to)f(b)q(e)i(real)f(and)f Fp(v)75
3129 546 y Fy(is)g(equal)f(to)h Fq(nil)g Fy(if)f(and)h(only)f(if)g
3130 Fp(x)h Fy(is)f(kno)o(wn)h(to)g(b)q(e)g(non-real.)k(If)c
3131 Fp(x)g Fy(later)g(b)q(ecomes)g(kno)o(wn)f(to)h(b)q(e)h(real,)e(a)h
3132 (noticers)75 595 y(attac)o(hed)e(to)f Fp(x)g Fy(restricts)i
3133 Fp(v)g Fy(to)e(equal)g Fq(t)p Fy(.)17 b(Lik)o(ewise,)11
3134 b(if)g Fp(x)g Fy(later)g(b)q(ecomes)h(kno)o(wn)e(to)i(b)q(e)f
3135 (non-real,)g(a)g(noticer)h(attac)o(hed)75 645 y(to)i
3136 Fp(x)g Fy(restricts)i Fp(v)g Fy(to)e(equal)g Fq(nil)p
3137 Fy(.)k(F)m(urthermore,)c(if)f Fp(v)j Fy(ev)o(er)f(b)q(ecomes)f(kno)o
3138 (wn)g(to)g(equal)g Fq(t)g Fy(then)h(a)f(noticer)g(attac)o(hed)75
3139 695 y(to)g Fp(v)h Fy(restricts)h Fp(x)e Fy(to)g(b)q(e)g(real.)19
3140 b(Lik)o(ewise,)13 b(if)g Fp(v)j Fy(ev)o(er)f(b)q(ecomes)f(kno)o(wn)f
3141 (to)h(equal)g Fq(nil)f Fy(then)i(a)e(noticer)i(attac)o(hed)g(to)e
3142 Fp(v)75 745 y Fy(restricts)j Fp(x)d Fy(to)h(b)q(e)h(non-real.)75
3143 986 y Fq(integerv)20 b Fp(x)1211 b Fy([)p Fu(Deterministic)14
3144 b(F)m(unction)p Fy(])75 1138 y(If)g(when)i Fq(integerv)d
3145 Fy(is)i(called,)f Fp(x)h Fy(is)f(kno)o(wn)h(to)f(b)q(e)i(in)o(teger)f
3146 (v)n(alued)f(then)i Fq(integerv)d Fy(returns)j Fq(t)p
3147 Fy(.)21 b(Alternativ)o(ely)m(,)14 b(if)75 1187 y(when)i
3148 Fq(integerv)e Fy(is)h(called,)h Fp(x)f Fy(is)h(kno)o(wn)f(to)g(b)q(e)h
3149 (non-in)o(teger)g(v)n(alued)f(then)h Fq(integerv)e Fy(returns)k
3150 Fq(nil)p Fy(.)k(If)15 b(it)h(is)f(not)75 1237 y(kno)o(wn)e(whether)i
3151 (or)e(not)g Fp(x)g Fy(is)g(in)o(teger)h(v)n(alued)f(when)h
3152 Fq(integerv)d Fy(is)i(called)g(then)h Fq(integerv)e Fy(creates)j(and)e
3153 (returns)i(a)75 1287 y(new)g(b)q(o)q(olean)f(v)n(ariable)g
3154 Fp(v)q Fy(.)20 b(The)15 b(v)n(alues)g(of)f Fp(x)g Fy(and)g
3155 Fp(v)j Fy(are)e(m)o(utually)d(constrained)j(via)f(noticers)h(so)g(that)
3156 g Fp(v)h Fy(is)e(equal)75 1337 y(to)g Fq(t)g Fy(if)f(and)h(only)f(if)h
3157 Fp(x)f Fy(is)h(kno)o(wn)g(to)g(b)q(e)h(in)o(teger)f(v)n(alued)g(and)g
3158 Fp(v)h Fy(is)f(equal)g(to)g Fq(nil)f Fy(if)h(and)f(only)h(if)f
3159 Fp(x)h Fy(is)g(kno)o(wn)f(to)h(b)q(e)75 1387 y(non-in)o(teger)f(v)n
3160 (alued.)18 b(If)12 b Fp(x)h Fy(later)h(b)q(ecomes)f(kno)o(wn)g(to)g(b)q
3161 (e)h(in)o(teger)f(v)n(alued,)g(a)g(noticer)g(attac)o(hed)h(to)f
3162 Fp(x)g Fy(restricts)i Fp(v)g Fy(to)75 1436 y(equal)e
3163 Fq(t)p Fy(.)k(Lik)o(ewise,)c(if)f Fp(x)h Fy(later)g(b)q(ecomes)h(kno)o
3164 (wn)e(to)h(b)q(e)h(non-in)o(teger)f(v)n(alued,)f(a)h(noticer)h(attac)o
3165 (hed)g(to)f Fp(x)f Fy(restricts)j Fp(v)75 1486 y Fy(to)c(equal)h
3166 Fq(nil)p Fy(.)k(F)m(urthermore,)c(if)e Fp(v)k Fy(ev)o(er)e(b)q(ecomes)g
3167 (kno)o(wn)f(to)g(equal)h Fq(t)f Fy(then)h(a)f(noticer)i(attac)o(hed)f
3168 (to)f Fp(v)i Fy(restricts)h Fp(x)d Fy(to)75 1536 y(b)q(e)h(in)o(teger)g
3169 (v)n(alued.)k(Lik)o(ewise,)11 b(if)g Fp(v)i Fy(ev)o(er)f(b)q(ecomes)f
3170 (kno)o(wn)g(to)g(equal)g Fq(nil)g Fy(then)h(a)e(noticer)i(attac)o(hed)g
3171 (to)f Fp(v)i Fy(restricts)g Fp(x)75 1586 y Fy(to)h(b)q(e)g(non-in)o
3172 (teger)g(v)n(alued.)75 1827 y Fq(memberv)20 b Fp(x)i(y)1191
3173 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
3174 1979 y(The)g(curren)o(t)h(implem)o(en)o(tation)c(imp)q(oses)h(t)o(w)o
3175 (o)h(constrain)o(ts)h(on)f(the)h(parameter)f Fp(y)q Fy(.)19
3176 b(First,)13 b Fp(y)j Fy(m)o(ust)c(b)q(e)i(b)q(ound)f(when)75
3177 2028 y Fq(memberv)d Fy(is)i(called.)17 b(Second,)c Fp(y)g
3178 Fy(m)o(ust)e(not)h(con)o(tain)f(an)o(y)g(un)o(b)q(ound)h(v)n(ariables)f
3179 (when)h Fq(memberv)f Fy(is)g(called.)17 b(The)c(v)n(alue)75
3180 2078 y(of)h(parameter)g Fp(y)j Fy(m)o(ust)c(b)q(e)i(a)g(sequence,)h
3181 (i.e.)e(either)h(a)g(list)f(or)g(a)h(v)o(ector.)21 b(If)14
3182 b(when)h Fq(memberv)e Fy(is)i(called,)f Fp(x)g Fy(is)g(kno)o(wn)75
3183 2128 y(to)f(b)q(e)h(a)e(mem)o(b)q(er)g(of)g Fp(y)j Fy(\(using)e(the)g
3184 Fv(Common)k(Lisp)c Fy(function)g Fq(eql)f Fy(as)h(a)g(test)h
3185 (function\))f(then)h Fq(memberv)d Fy(returns)k Fq(t)p
3186 Fy(.)75 2178 y(Alternativ)o(ely)m(,)d(if)g(when)h Fq(memberv)f
3187 Fy(is)g(called,)h Fp(x)f Fy(is)h(kno)o(wn)g(not)f(to)h(b)q(e)h(a)e(mem)
3188 o(b)q(er)g(of)g Fp(y)j Fy(then)e Fq(memberv)f Fy(returns)i
3189 Fq(nil)p Fy(.)75 2228 y(If)g(it)f(is)h(not)g(kno)o(wn)g(whether)h(or)g
3190 (not)f Fp(x)f Fy(is)h(a)g(mem)o(b)q(er)f(of)g Fp(y)j
3191 Fy(when)e Fq(memberv)f Fy(is)h(called)g(then)h Fq(memberv)d
3192 Fy(creates)k(and)75 2277 y(returns)f(a)e(new)g(b)q(o)q(olean)g(v)n
3193 (ariable)f Fp(v)q Fy(.)19 b(The)13 b(v)n(alues)g(of)g
3194 Fp(x)g Fy(and)g Fp(v)i Fy(are)e(m)o(utually)e(constrained)j(via)f
3195 (noticers)h(so)f(that)g Fp(v)75 2327 y Fy(is)k(equal)f(to)h
3196 Fq(t)g Fy(if)f(and)g(only)g(if)h Fp(x)f Fy(is)h(kno)o(wn)f(to)h(b)q(e)g
3197 (a)g(mem)o(b)q(er)e(of)i Fp(y)h Fy(and)f Fp(v)h Fy(is)f(equal)g(to)f
3198 Fq(nil)h Fy(if)f(and)g(only)g(if)h Fp(x)f Fy(is)75 2377
3199 y(kno)o(wn)d(not)g(to)g(b)q(e)h(a)f(mem)o(b)q(er)e(of)i
3200 Fp(y)q Fy(.)18 b(If)13 b Fp(x)g Fy(later)g(b)q(ecomes)h(kno)o(wn)e(to)h
3201 (b)q(e)h(a)f(mem)o(b)q(er)f(of)g Fp(y)q Fy(,)i(a)f(noticer)g(attac)o
3202 (hed)h(to)f Fp(x)75 2427 y Fy(restricts)k Fp(v)f Fy(to)f(equal)f
3203 Fq(t)p Fy(.)21 b(Lik)o(ewise,)15 b(if)f Fp(x)g Fy(later)h(b)q(ecomes)g
3204 (kno)o(wn)g(not)g(to)f(b)q(e)i(a)e(mem)o(b)q(er)g(of)g
3205 Fp(y)q Fy(,)h(a)g(noticer)g(attac)o(hed)75 2477 y(to)f
3206 Fp(x)g Fy(restricts)i Fp(v)g Fy(to)e(equal)g Fq(nil)p
3207 Fy(.)k(F)m(urthermore,)c(if)f Fp(v)j Fy(ev)o(er)f(b)q(ecomes)f(kno)o
3208 (wn)g(to)g(equal)g Fq(t)g Fy(then)h(a)f(noticer)g(attac)o(hed)75
3209 2526 y(to)i Fp(v)i Fy(restricts)h Fp(x)d Fy(to)h(b)q(e)g(a)f(mem)o(b)q
3210 (er)f(of)h Fp(y)q Fy(.)27 b(Lik)o(ewise,)16 b(if)g Fp(v)i
3211 Fy(ev)o(er)g(b)q(ecomes)e(kno)o(wn)g(to)h(equal)f Fq(nil)g
3212 Fy(then)h(a)f(noticer)75 2576 y(attac)o(hed)f(to)e Fp(v)j
3213 Fy(restricts)g Fp(x)d Fy(not)h(to)g(b)q(e)g(a)g(mem)o(b)q(er)e(of)h
3214 Fp(y)q Fy(.)992 2723 y(16)p eop
3215 %%Page: 17 17
3216 17 16 bop 75 195 a Fq(booleanv)20 b Fp(x)1211 b Fy([)p
3217 Fu(Deterministic)14 b(F)m(unction)p Fy(])75 343 y(The)g(expression)h
3218 Fq(\(booleanv)20 b Fp(x)p Fq(\))14 b Fy(is)f(an)h(abbreviation)f(for)h
3219 Fq(\(memberv)20 b Fp(x)h Fq('\(t)h(nil\)\))p Fy(.)75
3220 581 y Fq(assert!)e Fp(x)1279 b Fy([)p Fu(Deterministic)13
3221 b(Macr)n(o)p Fy(])75 729 y(The)i(argumen)o(t)e Fp(x)i
3222 Fy(can)g(b)q(e)g(either)g(a)f(v)n(ariable)g(or)g(a)h(non-v)n(ariable.)j
3223 (The)d(expression)h Fq(\(assert!)k Fp(x)p Fq(\))14 b
3224 Fy(restricts)j Fp(x)d Fy(to)75 779 y(equal)g Fq(t)p Fy(.)19
3225 b(This)c(assertion)g(ma)o(y)d(cause)k(other)f(assertions)g(to)g(b)q(e)g
3226 (made)e(due)i(to)f(noticers)h(attac)o(hed)g(to)g Fp(x)p
3227 Fy(.)k(A)14 b(call)g(to)75 829 y Fq(assert!)h Fy(fails)g(if)g
3228 Fp(x)h Fy(is)g(kno)o(wn)f(not)i(to)f(equal)f Fq(t)h Fy(prior)g(to)g
3229 (the)h(assertion)g(or)f(if)f(an)o(y)h(of)f(the)i(assertions)g(p)q
3230 (erformed)75 879 y(b)o(y)d(the)i(noticers)f(result)h(in)e(failure.)20
3231 b(No)14 b(meaningful)e(result)k(is)e(returned.)22 b(Except)16
3232 b(for)e(the)i(fact)e(that)h(one)g(cannot)75 928 y(write)k
3233 Fq(#'assert!)p Fy(,)e Fq(assert!)g Fy(b)q(eha)o(v)o(es)i(lik)o(e)f(a)g
3234 (function,)h(ev)o(en)g(though)f(it)g(is)g(implemen)o(ted)e(as)j(a)f
3235 (macro.)31 b(The)75 978 y(reason)12 b(it)g(is)f(implemen)o(ted)e(as)j
3236 (a)g(macro)e(is)i(to)f(allo)o(w)f(a)h(n)o(um)o(b)q(er)g(of)g(compile)f
3237 (time)h(optimizations.)k(Expressions)e(lik)o(e)75 1028
3238 y Fq(\(assert!)20 b(\(notv)h Fp(x)p Fq(\)\))p Fy(,)11
3239 b Fq(\(assert!)20 b(\(numberv)g Fp(x)p Fq(\)\))10 b Fy(and)h
3240 Fq(\(assert!)21 b(\(notv)f(\(numberv)h Fp(x)p Fq(\)\)\))10
3241 b Fy(are)i(transformed)75 1078 y(in)o(to)h(calls)f(to)i(functions)f(in)
3242 o(ternal)g(to)g Fv(Screamer)h Fy(whic)o(h)f(eliminate)e(the)j(need)h
3243 (to)e(create)i(the)e(b)q(o)q(olean)g(v)n(ariable\(s\))75
3244 1128 y(normally)8 b(returned)j(b)o(y)f(functions)h(lik)o(e)e
3245 Fq(notv)g Fy(and)h Fq(numberv)p Fy(.)16 b(Calls)9 b(to)h(the)h
3246 (functions)f Fq(numberv)p Fy(,)f Fq(realv)p Fy(,)g Fq(integerv)p
3247 Fy(,)75 1177 y Fq(memberv)p Fy(,)f Fq(booleanv)p Fy(,)h
3248 Fq(=v)p Fy(,)g Fq(<v)p Fy(,)g Fq(<=v)p Fy(,)h Fq(>v)p
3249 Fy(,)f Fq(>=v)p Fy(,)g Fq(/=v)p Fy(,)h Fq(notv)p Fy(,)f
3250 Fq(funcallv)p Fy(,)f Fq(applyv)g Fy(and)h Fq(equalv)f
3251 Fy(whic)o(h)i(app)q(ear)g(directly)75 1227 y(nested)15
3252 b(in)e(a)g(call)f(to)i Fq(assert!)p Fy(,)d(or)i(directly)h(nested)h(in)
3253 e(a)g(call)f(to)i Fq(notv)e Fy(whic)o(h)h(is)h(in)e(turn)i(directly)g
3254 (nested)h(in)e(a)g(call)75 1277 y(to)h Fq(assert!)p Fy(,)e(are)i
3255 (similarly)d(transformed.)75 1515 y Fq(known?)21 b Fp(x)1300
3256 b Fy([)p Fu(Deterministic)13 b(Macr)n(o)p Fy(])75 1663
3257 y(The)19 b(argumen)o(t)f Fp(x)h Fy(can)g(b)q(e)g(either)h(a)f(v)n
3258 (ariable)e(or)i(a)g(non-v)n(ariable.)31 b(The)20 b(expression)g
3259 Fq(\(known?)g Fp(x)p Fq(\))e Fy(restricts)j Fp(x)75 1713
3260 y Fy(to)d(b)q(e)g(b)q(o)q(olean.)29 b(This)17 b(assertion)i(ma)o(y)d
3261 (cause)i(other)h(assertions)f(to)g(b)q(e)g(made)f(due)h(to)f(noticers)i
3262 (attac)o(hed)f(to)g Fp(x)p Fy(.)75 1763 y(A)h(call)e(to)i
3263 Fq(known?)e Fy(fails)g(if)h Fp(x)g Fy(is)h(kno)o(wn)f(not)g(to)g(b)q(e)
3264 i(b)q(o)q(olean)e(prior)g(to)g(the)i(assertion)f(or)f(if)g(an)o(y)g(of)
3265 g(the)h(asser-)75 1813 y(tions)d(p)q(erformed)h(b)o(y)f(the)i(noticers)
3266 f(result)h(in)e(failure.)25 b(Restricting)17 b Fp(x)g
3267 Fy(to)f(b)q(e)h(b)q(o)q(olean)g(attac)o(hes)g(a)g(noticer)g(on)f
3268 Fp(x)75 1862 y Fy(so)i(that)g(an)o(y)f(subsequen)o(t)j(assertion)e
3269 (whic)o(h)g(restricts)h Fp(x)f Fy(to)g(b)q(e)g(non-b)q(o)q(olean)f
3270 (will)f(fail.)29 b(If)17 b Fp(x)g Fy(is)h(equal)g(to)f
3271 Fq(t)h Fy(af-)75 1912 y(ter)g(b)q(eing)f(restricted)i(to)e(b)q(e)h(b)q
3272 (o)q(olean)e(then)i Fq(known?)e Fy(returns)j Fq(t)p Fy(.)27
3273 b(If)17 b Fp(x)f Fy(is)h(equal)g(to)g Fq(nil)f Fy(or)h(if)g(the)g(v)n
3274 (alue)g(of)f Fp(x)h Fy(is)75 1962 y(unkno)o(wn)g(then)g
3275 Fq(known?)f Fy(returns)j Fq(nil)p Fy(.)26 b(Except)18
3276 b(for)f(the)h(fact)f(that)g(one)g(cannot)g(write)g Fq(#'known?)p
3277 Fy(,)f Fq(known?)f Fy(b)q(e-)75 2012 y(ha)o(v)o(es)20
3278 b(lik)o(e)e(a)h(function,)h(ev)o(en)h(though)e(it)g(is)g(implemen)o
3279 (ted)e(as)j(a)f(macro.)33 b(The)20 b(reason)g(it)f(is)h(implem)o(en)o
3280 (ted)e(as)75 2062 y(a)h(macro)e(is)i(to)g(allo)o(w)e(a)i(n)o(um)o(b)q
3281 (er)f(of)g(compile)f(time)h(optimizations.)31 b(Expressions)20
3282 b(lik)o(e)e Fq(\(known?)i(\(notv)h Fp(x)p Fq(\)\))p Fy(,)75
3283 2111 y Fq(\(known?)f(\(numberv)g Fp(x)p Fq(\)\))12 b
3284 Fy(and)f Fq(\(known?)21 b(\(notv)f(\(numberv)h Fp(x)p
3285 Fq(\)\)\))11 b Fy(are)h(transformed)f(in)o(to)g(calls)h(to)g(functions)
3286 g(in-)75 2161 y(ternal)k(to)g Fv(Screamer)h Fy(whic)o(h)f(eliminate)e
3287 (the)j(need)g(to)e(create)j(the)f(b)q(o)q(olean)e(v)n(ariable\(s\))h
3288 (normally)d(returned)18 b(b)o(y)75 2211 y(functions)12
3289 b(lik)o(e)f Fq(notv)f Fy(and)i Fq(numberv)p Fy(.)k(Calls)11
3290 b(to)g(the)h(functions)g Fq(numberv)p Fy(,)e Fq(realv)p
3291 Fy(,)h Fq(integerv)p Fy(,)f Fq(memberv)p Fy(,)g Fq(booleanv)p
3292 Fy(,)75 2261 y Fq(=v)p Fy(,)15 b Fq(<v)p Fy(,)g Fq(<=v)p
3293 Fy(,)g Fq(>v)p Fy(,)g Fq(>=v)p Fy(,)g Fq(/=v)p Fy(,)g
3294 Fq(notv)p Fy(,)f Fq(funcallv)p Fy(,)g Fq(applyv)g Fy(and)i
3295 Fq(equalv)e Fy(whic)o(h)h(app)q(ear)h(directly)g(nested)h(in)e(a)h
3296 (call)75 2311 y(to)f Fq(known?)p Fy(,)e(or)i(directly)g(nested)i(in)d
3297 (a)h(call)f(to)h Fq(notv)f Fy(whic)o(h)h(is)f(in)h(turn)g(directly)h
3298 (nested)g(in)f(a)f(call)g(to)h Fq(known?)p Fy(,)f(are)75
3299 2361 y(similarly)d(transformed.)75 2599 y Fq(decide)21
3300 b Fp(x)1235 b Fy([)p Fu(Nondeterministic)13 b(Macr)n(o)p
3301 Fy(])992 2723 y(17)p eop
3302 %%Page: 18 18
3303 18 17 bop 75 195 a Fy(The)13 b(argumen)o(t)e Fp(x)i Fy(can)f(b)q(e)h
3304 (either)h(a)e(v)n(ariable)f(or)i(a)f(non-v)n(ariable.)k(The)d
3305 (expression)h Fq(\(decide)20 b Fp(x)p Fq(\))12 b Fy(restricts)j
3306 Fp(x)d Fy(to)g(b)q(e)75 245 y(b)q(o)q(olean.)18 b(This)c(assertion)h
3307 (ma)o(y)d(cause)j(other)f(assertions)h(to)f(b)q(e)h(made)e(due)h(to)g
3308 (noticers)h(attac)o(hed)g(to)f Fp(x)p Fy(.)k(A)c(call)f(to)75
3309 295 y Fq(decide)e Fy(imm)o(ediately)e(fails)i(if)g Fp(x)h
3310 Fy(is)g(kno)o(wn)g(not)g(to)g(b)q(e)g(b)q(o)q(olean)g(prior)g(to)g(the)
3311 g(assertion)h(or)f(if)f(an)o(y)h(of)f(the)i(assertions)75
3312 345 y(p)q(erformed)h(b)o(y)h(the)g(noticers)g(result)h(in)e(failure.)19
3313 b(Restricting)c Fp(x)f Fy(to)g(b)q(e)i(b)q(o)q(olean)e(attac)o(hes)h(a)
3314 g(noticer)g(on)f Fp(x)g Fy(so)h(that)75 394 y(an)o(y)c(subsequen)o(t)j
3315 (assertion)e(whic)o(h)g(restricts)i Fp(x)d Fy(to)h(b)q(e)g(non-b)q(o)q
3316 (olean)g(will)e(fail.)16 b(After)c Fp(x)g Fy(is)f(restricted)j(to)e(b)q
3317 (e)g(b)q(o)q(olean)75 444 y(a)h(nondeterministic)g(c)o(hoice)h(is)f
3318 (made.)k(F)m(or)c(one)h(branc)o(h,)f Fp(x)g Fy(is)h(restricted)h(to)e
3319 (equal)g Fq(t)h Fy(and)f Fq(\(decide)20 b Fp(x)p Fq(\))13
3320 b Fy(returns)i Fq(t)75 494 y Fy(as)g(a)f(result.)21 b(F)m(or)14
3321 b(the)h(other)g(branc)o(h,)g Fp(x)f Fy(is)h(restricted)h(to)f(equal)f
3322 Fq(nil)g Fy(and)g Fq(\(decide)21 b Fp(x)p Fq(\))14 b
3323 Fy(returns)i Fq(nil)e Fy(as)g(a)h(result.)75 544 y(Except)g(for)f
3324 (implem)o(en)o(tation)d(optimizations)g Fq(\(decide)21
3325 b Fp(x)p Fq(\))13 b Fy(is)h(equiv)n(alen)o(t)f(to:)179
3326 625 y Fq(\(either)20 b(\(progn)h(\(assert!)f Fp(x)p Fq(\))h(t\))h
3327 (\(progn)e(\(assert!)g(\(notv)h Fp(x)p Fq(\)\))g(nil\)\))p
3328 Fy(.)75 705 y(The)11 b(implemen)o(tation)c(guaran)o(tees)12
3329 b(that)e Fp(x)h Fy(is)f(ev)n(aluated)h(only)e(once)j(so)e(it)h(ma)o(y)d
3330 (safely)j(con)o(tain)f(side)h(e\013ects.)19 b(Except)75
3331 755 y(for)d(the)g(fact)g(that)g(one)g(cannot)g(write)g
3332 Fq(#'decide)p Fy(,)e Fq(decide)h Fy(b)q(eha)o(v)o(es)h(lik)o(e)g(a)f
3333 (function,)h(ev)o(en)g(though)g(it)f(is)h(imple-)75 805
3334 y(men)o(ted)d(as)g(a)f(macro.)17 b(The)c(reason)h(it)f(is)g(implem)o
3335 (en)o(ted)e(as)i(a)g(macro)f(is)h(to)g(allo)o(w)e(a)i(n)o(um)o(b)q(er)f
3336 (of)h(compile)e(time)h(opti-)75 855 y(mizations.)j(Expressions)10
3337 b(lik)o(e)f Fq(\(decide)20 b(\(notv)h Fp(x)p Fq(\)\))p
3338 Fy(,)9 b Fq(\(decide)20 b(\(numberv)g Fp(x)p Fq(\)\))9
3339 b Fy(and)g Fq(\(decide)20 b(\(notv)h(\(numberv)f Fp(x)p
3340 Fq(\)\)\))75 905 y Fy(are)e(transformed)e(in)o(to)g(calls)h(to)g
3341 (functions)g(in)o(ternal)g(to)g Fv(Screamer)h Fy(whic)o(h)f(eliminate)e
3342 (the)j(need)g(to)f(create)h(the)75 954 y(b)q(o)q(olean)j(v)n
3343 (ariable\(s\))f(normally)e(returned)23 b(b)o(y)d(functions)h(lik)o(e)f
3344 Fq(notv)g Fy(and)h Fq(numberv)p Fy(.)38 b(Calls)20 b(to)g(the)i
3345 (functions)75 1004 y Fq(numberv)p Fy(,)17 b Fq(realv)p
3346 Fy(,)g Fq(integerv)p Fy(,)g Fq(memberv)p Fy(,)f Fq(booleanv)p
3347 Fy(,)h Fq(=v)p Fy(,)h Fq(<v)p Fy(,)g Fq(<=v)p Fy(,)f
3348 Fq(>v)p Fy(,)h Fq(>=v)p Fy(,)g Fq(/=v)p Fy(,)f Fq(notv)p
3349 Fy(,)h Fq(funcallv)p Fy(,)e Fq(applyv)75 1054 y Fy(and)e
3350 Fq(equalv)e Fy(whic)o(h)i(app)q(ear)g(directly)h(nested)g(in)e(a)h
3351 (call)f(to)h Fq(decide)p Fy(,)e(or)i(directly)g(nested)h(in)f(a)f(call)
3352 g(to)h Fq(notv)f Fy(whic)o(h)75 1104 y(is)h(in)f(turn)i(directly)f
3353 (nested)h(in)f(a)f(call)g(to)h Fq(decide)p Fy(,)e(are)i(similarly)d
3354 (transformed.)75 1342 y Fq(=v)21 b Fp(x)164 1327 y Fo(+)1506
3355 1342 y Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
3356 1491 y(Returns)h(a)f(b)q(o)q(olean)g(v)n(alue)g(whic)o(h)h(is)f
3357 (constrained)h(to)f(b)q(e)h Fq(t)g Fy(if)e(all)g(of)h(the)h(argumen)o
3358 (ts)f(are)h(n)o(umerically)d(equal)i(and)75 1540 y(constrained)j(to)g
3359 (b)q(e)g Fq(nil)f Fy(if)g(t)o(w)o(o)g(or)g(more)g(of)g(the)h(argumen)o
3360 (ts)f(n)o(umerically)e(di\013er.)27 b(This)16 b(function)g(tak)o(es)h
3361 (one)g(or)75 1590 y(more)f(argumen)o(ts.)28 b(All)16
3362 b(of)h(the)h(argumen)o(ts)e(are)i(restricted)h(to)e(b)q(e)h(n)o(umeric)
3363 f(\(see)h(section)g(8\).)28 b(Returns)18 b Fq(t)f Fy(when)75
3364 1640 y(called)c(with)g(one)g(argumen)o(t.)j(A)e(call)e(suc)o(h)i(as)f
3365 Fq(\(=v)21 b Fp(x)936 1646 y Fo(1)976 1640 y Fp(x)1000
3366 1646 y Fo(2)1025 1640 y Fp(:)7 b(:)g(:)f(x)1105 1646
3367 y Fh(n)1127 1640 y Fq(\))13 b Fy(with)g(more)f(than)h(t)o(w)o(o)f
3368 (argumen)o(ts)h(b)q(eha)o(v)o(es)h(lik)o(e)75 1690 y(a)g(conjunction)f
3369 (of)h(t)o(w)o(o)f(argumen)o(t)g(calls:)179 1771 y Fq(\(andv)21
3370 b(\(=v)g Fp(x)421 1777 y Fo(1)461 1771 y Fp(x)485 1777
3371 y Fo(2)503 1771 y Fq(\))p Fp(:)7 b(:)g(:)n Fq(\(=v)22
3372 b Fp(x)685 1777 y Fh(i)720 1771 y Fp(x)744 1777 y Fh(i)p
3373 Fo(+1)800 1771 y Fq(\))p Fp(:)7 b(:)g(:)n Fq(\(=v)21
3374 b Fp(x)981 1777 y Fh(n)p Fi(\000)p Fo(1)1068 1771 y Fp(x)1092
3375 1777 y Fh(n)1114 1771 y Fq(\)\))75 1851 y Fy(Beha)o(v)o(es)16
3376 b(as)f(follo)o(ws)e(when)i(called)f(with)h(t)o(w)o(o)f(argumen)o(ts.)19
3377 b(Returns)d Fq(t)e Fy(if)g Fp(x)1305 1857 y Fo(1)1338
3378 1851 y Fy(is)h(kno)o(wn)f(to)h(b)q(e)g(equal)f(to)h Fp(x)1808
3379 1857 y Fo(2)1841 1851 y Fy(at)f(the)75 1901 y(time)j(of)g(call.)30
3380 b(Tw)o(o)18 b(n)o(umeric)f(v)n(alues)h(are)g(kno)o(wn)g(to)g(b)q(e)g
3381 (equal)g(only)f(when)i(they)g(are)f(b)q(oth)g(b)q(ound)g(and)g(equal)75
3382 1951 y(according)12 b(to)g(the)g Fv(Common)17 b(Lisp)12
3383 b Fy(function)f Fq(=)p Fy(.)17 b(Returns)c Fq(nil)e Fy(if)g
3384 Fp(x)1166 1957 y Fo(1)1196 1951 y Fy(is)h(kno)o(wn)g(not)f(to)h(b)q(e)h
3385 (equal)e(to)h Fp(x)1721 1957 y Fo(2)1751 1951 y Fy(at)g(the)g(time)75
3386 2001 y(of)i(call.)19 b(Tw)o(o)13 b(n)o(umeric)h(v)n(alues)g(are)h(kno)o
3387 (wn)f(not)g(to)g(b)q(e)h(equal)f(when)h(their)g(domains)e(are)h
3388 (disjoin)o(t)g(\(see)h(section)h(6\).)75 2051 y(F)m(urthermore)h(t)o(w)
3389 o(o)f(real)h(v)n(alues)f(are)i(kno)o(wn)e(not)h(to)f(b)q(e)i(equal)e
3390 (when)i(their)f(ranges)g(are)h(disjoin)o(t,)e(i.e.)g(the)h(upp)q(er)75
3391 2100 y(b)q(ound)f(of)f(one)h(is)g(greater)h(than)f(the)h(lo)o(w)o(er)e
3392 (b)q(ound)h(of)f(the)i(other)g(\(see)g(section)f(6\).)24
3393 b(If)16 b(it)g(is)f(not)h(kno)o(wn)g(whether)75 2150
3394 y(or)g(not)f Fp(x)227 2156 y Fo(1)261 2150 y Fy(is)h(equal)f(to)h
3395 Fp(x)493 2156 y Fo(2)527 2150 y Fy(when)g Fq(=v)g Fy(is)f(called)h
3396 (then)g Fq(=v)f Fy(creates)j(and)d(returns)j(a)d(new)h(b)q(o)q(olean)g
3397 (v)n(ariable)e Fp(v)q Fy(.)25 b(The)75 2200 y(v)n(alues)15
3398 b(of)f Fp(x)272 2206 y Fo(1)291 2200 y Fy(,)g Fp(x)341
3399 2206 y Fo(2)375 2200 y Fy(and)h Fp(v)h Fy(are)g(m)o(utually)d
3400 (constrained)j(via)e(noticers)i(so)f(that)g Fp(v)i Fy(is)e(equal)g(to)g
3401 Fq(t)g Fy(if)f(and)h(only)f(if)h Fp(x)1889 2206 y Fo(1)1922
3402 2200 y Fy(is)75 2250 y(kno)o(wn)d(to)h(b)q(e)g(equal)f(to)g
3403 Fp(x)491 2256 y Fo(2)522 2250 y Fy(and)h Fp(v)h Fy(is)e(equal)g(to)h
3404 Fq(nil)f Fy(if)g(and)g(only)g(if)f Fp(x)1178 2256 y Fo(1)1209
3405 2250 y Fy(is)i(kno)o(wn)f(not)g(to)h(b)q(e)g(equal)f(to)h
3406 Fp(x)1739 2256 y Fo(2)1757 2250 y Fy(.)k(If)c(it)f(later)75
3407 2300 y(b)q(ecomes)i(kno)o(wn)g(that)g Fp(x)486 2306 y
3408 Fo(1)518 2300 y Fy(is)g(equal)f(to)h Fp(x)744 2306 y
3409 Fo(2)762 2300 y Fy(,)g(noticers)h(attac)o(hed)f(to)g
3410 Fp(x)1187 2306 y Fo(1)1219 2300 y Fy(and)g Fp(x)1324
3411 2306 y Fo(2)1356 2300 y Fy(restrict)i Fp(v)f Fy(to)f(equal)f
3412 Fq(t)p Fy(.)18 b(Lik)o(ewise,)c(if)75 2350 y(it)e(later)g(b)q(ecomes)h
3413 (kno)o(wn)f(that)g Fp(x)616 2356 y Fo(1)646 2350 y Fy(is)g(not)h(equal)
3414 f(to)g Fp(x)940 2356 y Fo(2)958 2350 y Fy(,)g(noticers)h(attac)o(hed)g
3415 (to)f Fp(x)1376 2356 y Fo(1)1407 2350 y Fy(and)g Fp(x)1510
3416 2356 y Fo(2)1540 2350 y Fy(restrict)i Fp(v)g Fy(to)e(equal)g
3417 Fq(nil)p Fy(.)75 2399 y(F)m(urthermore,)j(if)f Fp(v)j
3418 Fy(ev)o(er)f(b)q(ecomes)g(kno)o(wn)f(to)g(equal)g Fq(t)g
3419 Fy(then)h(a)f(noticer)h(attac)o(hed)g(to)f Fp(v)i Fy(restricts)g
3420 Fp(x)1711 2405 y Fo(1)1744 2399 y Fy(to)e(b)q(e)h(equal)75
3421 2449 y(to)h Fp(x)153 2455 y Fo(2)172 2449 y Fy(.)29 b(Lik)o(ewise,)17
3422 b(if)g Fp(v)i Fy(ev)o(er)g(b)q(ecomes)e(kno)o(wn)g(to)h(equal)f
3423 Fq(nil)g Fy(then)h(a)f(noticer)h(attac)o(hed)g(to)g Fp(v)h
3424 Fy(restricts)g Fp(x)1854 2455 y Fo(1)1890 2449 y Fy(not)75
3425 2499 y(to)f(b)q(e)h(equal)f(to)g Fp(x)384 2505 y Fo(2)402
3426 2499 y Fy(.)32 b(Restricting)18 b(t)o(w)o(o)g(v)n(alues)g
3427 Fp(x)898 2505 y Fo(1)934 2499 y Fy(and)h Fp(x)1044 2505
3428 y Fo(2)1080 2499 y Fy(to)f(b)q(e)h(equal)f(is)g(p)q(erformed)g(b)o(y)g
3429 (attac)o(hing)g(noticers)75 2549 y(to)c Fp(x)150 2555
3430 y Fo(1)183 2549 y Fy(and)g Fp(x)288 2555 y Fo(2)307 2549
3431 y Fy(.)19 b(These)d(noticers)f(con)o(tin)o(ually)e(restrict)j(the)f
3432 (domains)e(of)h Fp(x)1281 2555 y Fo(1)1313 2549 y Fy(and)h
3433 Fp(x)1419 2555 y Fo(2)1451 2549 y Fy(to)g(b)q(e)g(equiv)n(alen)o(t)e
3434 (sets)j(\(using)75 2599 y(the)f Fv(Common)i(Lisp)e Fy(function)f
3435 Fq(=)h Fy(as)f(a)h(test)h(function\))e(as)h(their)g(domains)e(are)i
3436 (restricted.)23 b(F)m(urthermore,)14 b(if)g Fp(x)1889
3437 2605 y Fo(1)1922 2599 y Fy(is)992 2723 y(18)p eop
3438 %%Page: 19 19
3439 19 18 bop 75 195 a Fy(kno)o(wn)16 b(to)g(b)q(e)h(real)f(then)h(the)g
3440 (noticer)g(attac)o(hed)f(to)h Fp(x)965 201 y Fo(2)999
3441 195 y Fy(con)o(tin)o(ually)e(restrict)j(the)e(upp)q(er)i(b)q(ound)e(of)
3442 g Fp(x)1760 201 y Fo(1)1794 195 y Fy(to)g(b)q(e)h(no)75
3443 245 y(higher)h(than)f(the)h(upp)q(er)h(b)q(ound)e(of)g
3444 Fp(x)710 251 y Fo(2)746 245 y Fy(and)g(the)i(lo)o(w)o(er)e(b)q(ound)g
3445 (of)g Fp(x)1224 251 y Fo(1)1260 245 y Fy(to)g(b)q(e)i(no)e(lo)o(w)o(er)
3446 g(than)h(the)g(lo)o(w)o(er)f(b)q(ound)75 295 y(of)h Fp(x)151
3447 301 y Fo(2)169 295 y Fy(.)31 b(The)19 b(noticer)g(of)e
3448 Fp(x)520 301 y Fo(2)557 295 y Fy(p)q(erforms)h(a)g(symmetric)e
3449 (restriction)j(on)f(the)h(b)q(ounds)g(of)e Fp(x)1545
3450 301 y Fo(1)1582 295 y Fy(if)g(it)h(is)g(kno)o(wn)g(to)g(b)q(e)75
3451 345 y(real.)28 b(Restricting)17 b(t)o(w)o(o)g(v)n(alues)g
3452 Fp(x)631 351 y Fo(1)667 345 y Fy(and)g Fp(x)775 351 y
3453 Fo(2)810 345 y Fy(to)g(not)g(b)q(e)h(equal)f(is)g(also)g(p)q(erformed)g
3454 (b)o(y)g(attac)o(hing)f(noticers)j(to)e Fp(x)1932 351
3455 y Fo(1)75 394 y Fy(and)12 b Fp(x)178 400 y Fo(2)197 394
3456 y Fy(.)17 b(These)d(noticers)f(ho)o(w)o(ev)o(er,)g(do)f(not)g(restrict)
3457 i(the)f(domains)e(or)h(ranges)h(of)f Fp(x)1418 400 y
3458 Fo(1)1449 394 y Fy(or)g Fp(x)1522 400 y Fo(2)1540 394
3459 y Fy(.)18 b(They)13 b(simply)d(monitor)75 444 y(their)15
3460 b(con)o(tin)o(ually)e(restrictions)j(and)e(fail)f(when)i(an)o(y)f
3461 (assertion)i(causes)g Fp(x)1272 450 y Fo(1)1305 444 y
3462 Fy(to)e(b)q(e)h(kno)o(wn)f(to)h(b)q(e)g(equal)f(to)h
3463 Fp(x)1840 450 y Fo(2)1858 444 y Fy(.)20 b(See)75 494
3464 y(section)15 b(6)e(for)h(a)f(discussion)i(of)e(v)n(ariable)g(upp)q(er)i
3465 (and)e(lo)o(w)o(er)h(b)q(ounds,)g(and)g(domains.)75 735
3466 y Fq(<v)21 b Fp(x)164 720 y Fo(+)1506 735 y Fy([)p Fu(Deterministic)14
3467 b(F)m(unction)p Fy(])75 887 y(Returns)19 b(a)f(b)q(o)q(olean)g(v)n
3468 (alue)g(whic)o(h)g(is)g(constrained)h(to)f(b)q(e)h Fq(t)f
3469 Fy(if)g(eac)o(h)g(argumen)o(t)g Fp(x)1453 893 y Fh(i)1484
3470 887 y Fy(is)g(less)h(than)g(the)g(follo)o(wing)75 936
3471 y(argumen)o(t)13 b Fp(x)285 942 y Fh(i)p Fo(+1)355 936
3472 y Fy(and)h(constrained)h(to)f(b)q(e)g Fq(nil)g Fy(if)f(some)g(argumen)o
3473 (t)g Fp(x)1197 942 y Fh(i)1225 936 y Fy(is)h(greater)h(than)f(or)g
3474 (equal)g(to)g(the)h(follo)o(wing)75 986 y(argumen)o(t)f
3475 Fp(x)286 992 y Fh(i)p Fo(+1)342 986 y Fy(.)22 b(This)16
3476 b(function)f(tak)o(es)h(one)f(or)h(more)e(argumen)o(ts.)22
3477 b(All)14 b(of)h(the)h(argumen)o(ts)f(are)h(restricted)h(to)e(b)q(e)75
3478 1036 y(real)g(\(see)i(section)f(8\).)22 b(Returns)17
3479 b Fq(t)e Fy(when)g(called)h(with)f(one)g(argumen)o(t.)21
3480 b(A)16 b(call)e(suc)o(h)j(as)e Fq(\(<v)21 b Fp(x)1641
3481 1042 y Fo(1)1681 1036 y Fp(x)1705 1042 y Fo(2)1731 1036
3482 y Fp(:)7 b(:)g(:)e(x)1810 1042 y Fh(n)1832 1036 y Fq(\))15
3483 b Fy(with)75 1086 y(more)e(than)h(t)o(w)o(o)f(argumen)o(ts)g(b)q(eha)o
3484 (v)o(es)i(lik)o(e)e(a)h(conjunction)g(of)f(t)o(w)o(o)g(argumen)o(t)g
3485 (calls:)179 1169 y Fq(\(andv)21 b(\(<v)g Fp(x)421 1175
3486 y Fo(1)461 1169 y Fp(x)485 1175 y Fo(2)503 1169 y Fq(\))p
3487 Fp(:)7 b(:)g(:)n Fq(\(<v)22 b Fp(x)685 1175 y Fh(i)720
3488 1169 y Fp(x)744 1175 y Fh(i)p Fo(+1)800 1169 y Fq(\))p
3489 Fp(:)7 b(:)g(:)n Fq(\(<v)21 b Fp(x)981 1175 y Fh(n)p
3490 Fi(\000)p Fo(1)1068 1169 y Fp(x)1092 1175 y Fh(n)1114
3491 1169 y Fq(\)\))75 1252 y Fy(Beha)o(v)o(es)15 b(as)f(follo)o(ws)f(when)h
3492 (called)g(with)g(t)o(w)o(o)g(argumen)o(ts.)j(Returns)e
3493 Fq(t)f Fy(if)g Fp(x)1298 1258 y Fo(1)1330 1252 y Fy(is)g(kno)o(wn)g(to)
3494 f(b)q(e)i(less)g(than)f Fp(x)1809 1258 y Fo(2)1841 1252
3495 y Fy(at)g(the)75 1302 y(time)e(of)g(call.)18 b(A)13 b(real)g(v)n(alue)g
3496 Fp(x)563 1308 y Fo(1)594 1302 y Fy(is)g(kno)o(wn)g(to)g(b)q(e)h(less)g
3497 (than)f(a)g(real)g(v)n(alue)f Fp(x)1288 1308 y Fo(2)1320
3498 1302 y Fy(if)g Fp(x)1381 1308 y Fo(1)1413 1302 y Fy(has)h(an)g(upp)q
3499 (er)h(b)q(ound,)f Fp(x)1824 1308 y Fo(2)1856 1302 y Fy(has)g(a)75
3500 1352 y(lo)o(w)o(er)g(b)q(ound)h(and)g(the)g(upp)q(er)h(b)q(ound)f(of)f
3501 Fp(x)781 1358 y Fo(1)813 1352 y Fy(is)h(less)g(than)g(the)g(lo)o(w)o
3502 (er)g(b)q(ound)f(of)h Fp(x)1407 1358 y Fo(2)1439 1352
3503 y Fy(\(see)h(section)f(6\).)k(Returns)d Fq(nil)75 1401
3504 y Fy(if)h Fp(x)140 1407 y Fo(1)176 1401 y Fy(is)h(kno)o(wn)f(to)h(b)q
3505 (e)h(greater)g(than)f(or)g(equal)g(to)g Fp(x)958 1407
3506 y Fo(2)993 1401 y Fy(at)g(the)h(time)d(of)i(call.)27
3507 b(A)17 b(real)g(v)n(alue)f Fp(x)1638 1407 y Fo(1)1674
3508 1401 y Fy(is)h(kno)o(wn)f(to)h(b)q(e)75 1451 y(greater)f(than)e(or)h
3509 (equal)f(to)g(a)g(real)h(v)n(alue)f Fp(x)776 1457 y Fo(2)809
3510 1451 y Fy(if)f Fp(x)871 1457 y Fo(1)904 1451 y Fy(has)i(a)f(lo)o(w)o
3511 (er)g(b)q(ound,)h Fp(x)1288 1457 y Fo(2)1321 1451 y Fy(has)f(an)h(upp)q
3512 (er)g(b)q(ound)g(and)f(the)h(lo)o(w)o(er)75 1501 y(b)q(ound)d(of)g
3513 Fp(x)271 1507 y Fo(1)302 1501 y Fy(is)g(greater)h(than)g(or)f(equal)g
3514 (to)g(the)h(upp)q(er)g(b)q(ound)g(of)f Fp(x)1167 1507
3515 y Fo(2)1197 1501 y Fy(\(see)i(section)f(6\).)k(If)12
3516 b(it)g(is)g(not)h(kno)o(wn)f(whether)75 1551 y(or)j(not)g
3517 Fp(x)226 1557 y Fo(1)260 1551 y Fy(is)g(less)h(than)f
3518 Fp(x)503 1557 y Fo(2)536 1551 y Fy(when)h Fq(<v)f Fy(is)g(called)f
3519 (then)i Fq(>v)f Fy(creates)i(and)e(returns)i(a)e(new)g(b)q(o)q(olean)g
3520 (v)n(ariable)f Fp(v)q Fy(.)23 b(The)75 1601 y(v)n(alues)15
3521 b(of)f Fp(x)272 1607 y Fo(1)291 1601 y Fy(,)g Fp(x)341
3522 1607 y Fo(2)375 1601 y Fy(and)h Fp(v)h Fy(are)g(m)o(utually)d
3523 (constrained)j(via)e(noticers)i(so)f(that)g Fp(v)i Fy(is)e(equal)g(to)g
3524 Fq(t)g Fy(if)f(and)h(only)f(if)h Fp(x)1889 1607 y Fo(1)1922
3525 1601 y Fy(is)75 1650 y(kno)o(wn)g(to)h(b)q(e)g(less)g(than)g
3526 Fp(x)520 1656 y Fo(2)553 1650 y Fy(and)g Fp(v)h Fy(is)e(equal)h(to)f
3527 Fq(nil)g Fy(if)g(and)g(only)g(if)g Fp(x)1240 1656 y Fo(1)1273
3528 1650 y Fy(is)h(kno)o(wn)f(to)g(b)q(e)i(greater)f(than)g(or)f(equal)75
3529 1700 y(to)h Fp(x)152 1706 y Fo(2)171 1700 y Fy(.)26 b(If)16
3530 b(it)g(later)h(b)q(ecomes)g(kno)o(wn)f(that)g Fp(x)815
3531 1706 y Fo(1)850 1700 y Fy(is)h(less)g(than)f Fp(x)1097
3532 1706 y Fo(2)1116 1700 y Fy(,)h(noticers)g(attac)o(hed)g(to)g
3533 Fp(x)1552 1706 y Fo(1)1587 1700 y Fy(and)f Fp(x)1694
3534 1706 y Fo(2)1729 1700 y Fy(restrict)i Fp(v)g Fy(to)75
3535 1750 y(equal)e Fq(t)p Fy(.)25 b(Lik)o(ewise,)16 b(if)f(it)h(later)g(b)q
3536 (ecomes)h(kno)o(wn)e(that)i Fp(x)1028 1756 y Fo(1)1062
3537 1750 y Fy(is)f(greater)h(than)g(or)f(equal)g(to)g Fp(x)1591
3538 1756 y Fo(2)1609 1750 y Fy(,)g(noticers)h(attac)o(hed)75
3539 1800 y(to)e Fp(x)151 1806 y Fo(1)185 1800 y Fy(and)h
3540 Fp(x)292 1806 y Fo(2)325 1800 y Fy(restrict)i Fp(v)f
3541 Fy(to)e(equal)g Fq(nil)p Fy(.)23 b(F)m(urthermore,)15
3542 b(if)g Fp(v)i Fy(ev)o(er)f(b)q(ecomes)g(kno)o(wn)f(to)g(equal)h
3543 Fq(t)f Fy(then)h(a)f(noticer)75 1850 y(attac)o(hed)i(to)g
3544 Fp(v)h Fy(restricts)g Fp(x)525 1856 y Fo(1)560 1850 y
3545 Fy(to)e(b)q(e)i(less)f(than)f Fp(x)875 1856 y Fo(2)894
3546 1850 y Fy(.)26 b(Lik)o(ewise,)16 b(if)g Fp(v)i Fy(ev)o(er)g(b)q(ecomes)
3547 e(kno)o(wn)h(to)f(equal)g Fq(nil)g Fy(then)h(a)75 1899
3548 y(noticer)g(attac)o(hed)g(to)f Fp(v)h Fy(restricts)i
3549 Fp(x)665 1905 y Fo(1)699 1899 y Fy(to)d(b)q(e)h(greater)g(than)f(or)h
3550 (equal)e(to)h Fp(x)1295 1905 y Fo(2)1314 1899 y Fy(.)25
3551 b(Restricting)16 b(a)g(real)g(v)n(alue)g Fp(x)1820 1905
3552 y Fo(1)1854 1899 y Fy(to)g(b)q(e)75 1949 y(less)g(than)g(a)g(real)g(v)n
3553 (alue)f Fp(x)505 1955 y Fo(2)539 1949 y Fy(is)g(p)q(erformed)h(b)o(y)f
3554 (attac)o(hing)h(noticers)g(to)g Fp(x)1261 1955 y Fo(1)1295
3555 1949 y Fy(and)g Fp(x)1402 1955 y Fo(2)1420 1949 y Fy(.)24
3556 b(The)16 b(noticer)h(attac)o(hed)f(to)g Fp(x)1932 1955
3557 y Fo(1)75 1999 y Fy(con)o(tin)o(ually)11 b(restricts)j(the)f(lo)o(w)o
3558 (er)f(b)q(ound)g(of)g Fp(x)818 2005 y Fo(2)849 1999 y
3559 Fy(to)g(b)q(e)h(no)f(lo)o(w)o(er)g(than)g(the)h(upp)q(er)g(b)q(ound)g
3560 (of)f Fp(x)1595 2005 y Fo(1)1625 1999 y Fy(if)g Fp(x)1686
3561 2005 y Fo(1)1716 1999 y Fy(has)h(an)f(upp)q(er)75 2049
3562 y(b)q(ound.)18 b(The)c(noticer)g(attac)o(hed)f(to)h Fp(x)685
3563 2055 y Fo(2)716 2049 y Fy(con)o(tin)o(ually)e(restricts)j(the)f(upp)q
3564 (er)g(b)q(ound)g(of)e Fp(x)1475 2055 y Fo(1)1507 2049
3565 y Fy(to)h(b)q(e)h(no)f(higher)g(than)g(the)75 2099 y(lo)o(w)o(er)h(b)q
3566 (ound)g(of)g Fp(x)384 2105 y Fo(2)416 2099 y Fy(if)f
3567 Fp(x)478 2105 y Fo(2)511 2099 y Fy(has)h(a)g(lo)o(w)o(er)g(b)q(ound.)19
3568 b(Since)c(these)g(restrictions)h(only)d(guaran)o(tee)i(that)f
3569 Fp(x)1701 2105 y Fo(1)1733 2099 y Fy(b)q(e)h(less)g(than)75
3570 2149 y(or)d(equal)g(to)g Fp(x)305 2155 y Fo(2)323 2149
3571 y Fy(,)g(the)h(constrain)o(t)f(that)h Fp(x)723 2155 y
3572 Fo(1)753 2149 y Fy(b)q(e)g(strictly)f(less)h(than)f Fp(x)1142
3573 2155 y Fo(2)1173 2149 y Fy(is)g(enforced)h(b)o(y)f(ha)o(ving)f(the)i
3574 (noticers)g(fail)d(when)75 2198 y(b)q(oth)k Fp(x)197
3575 2204 y Fo(1)229 2198 y Fy(and)g Fp(x)334 2204 y Fo(2)366
3576 2198 y Fy(b)q(ecome)g(kno)o(wn)g(to)g(b)q(e)g(equal.)k(Restricting)c(a)
3577 g(real)g(v)n(alue)f Fp(x)1340 2204 y Fo(1)1373 2198 y
3578 Fy(to)g(b)q(e)i(greater)g(than)f(or)g(equal)f(to)h(a)75
3579 2248 y(real)f(v)n(alue)f Fp(x)285 2254 y Fo(2)316 2248
3580 y Fy(is)h(p)q(erformed)g(b)o(y)f(an)h(analogous)f(set)i(of)e(noticers)i
3581 (without)e(this)h(last)g(equalit)o(y)f(c)o(hec)o(k.)19
3582 b(See)14 b(section)f(6)75 2298 y(for)h(a)f(discussion)i(of)e(v)n
3583 (ariable)g(upp)q(er)h(and)g(lo)o(w)o(er)g(b)q(ounds,)g(and)f(domains.)
3584 75 2539 y Fq(<=v)21 b Fp(x)186 2524 y Fo(+)1506 2539
3585 y Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])992
3586 2723 y(19)p eop
3587 %%Page: 20 20
3588 20 19 bop 75 195 a Fy(Returns)17 b(a)f(b)q(o)q(olean)f(v)n(alue)h(whic)
3589 o(h)g(is)g(constrained)g(to)g(b)q(e)h Fq(t)f Fy(if)f(eac)o(h)i(argumen)
3590 o(t)e Fp(x)1424 201 y Fh(i)1453 195 y Fy(is)h(less)h(than)f(or)g(equal)
3591 f(to)h(the)75 245 y(follo)o(wing)e(argumen)o(t)h Fp(x)465
3592 251 y Fh(i)p Fo(+1)537 245 y Fy(and)h(constrained)h(to)g(b)q(e)g
3593 Fq(nil)e Fy(if)h(some)f(argumen)o(t)h Fp(x)1398 251 y
3594 Fh(i)1428 245 y Fy(is)g(greater)h(than)g(the)g(follo)o(wing)75
3595 295 y(argumen)o(t)d Fp(x)286 301 y Fh(i)p Fo(+1)342 295
3596 y Fy(.)22 b(This)16 b(function)f(tak)o(es)h(one)f(or)h(more)e(argumen)o
3597 (ts.)22 b(All)14 b(of)h(the)h(argumen)o(ts)f(are)h(restricted)h(to)e(b)
3598 q(e)75 345 y(real)f(\(see)i(section)f(8\).)k(Returns)c
3599 Fq(t)f Fy(when)h(called)f(with)g(one)g(argumen)o(t.)k(A)c(call)g(suc)o
3600 (h)h(as)f Fq(\(<=v)21 b Fp(x)1642 351 y Fo(1)1682 345
3601 y Fp(x)1706 351 y Fo(2)1732 345 y Fp(:)7 b(:)g(:)e(x)1811
3602 351 y Fh(n)1833 345 y Fq(\))14 b Fy(with)75 394 y(more)f(than)h(t)o(w)o
3603 (o)f(argumen)o(ts)g(b)q(eha)o(v)o(es)i(lik)o(e)e(a)h(conjunction)g(of)f
3604 (t)o(w)o(o)g(argumen)o(t)g(calls:)179 475 y Fq(\(andv)21
3605 b(\(<=v)g Fp(x)443 481 y Fo(1)483 475 y Fp(x)507 481
3606 y Fo(2)525 475 y Fq(\))p Fp(:)7 b(:)g(:)n Fq(\(<=v)21
3607 b Fp(x)728 481 y Fh(i)764 475 y Fp(x)788 481 y Fh(i)p
3608 Fo(+1)843 475 y Fq(\))p Fp(:)7 b(:)g(:)n Fq(\(<=v)21
3609 b Fp(x)1046 481 y Fh(n)p Fi(\000)p Fo(1)1133 475 y Fp(x)1157
3610 481 y Fh(n)1179 475 y Fq(\)\))75 556 y Fy(Beha)o(v)o(es)16
3611 b(as)f(follo)o(ws)e(when)j(called)f(with)f(t)o(w)o(o)h(argumen)o(ts.)20
3612 b(Returns)c Fq(t)f Fy(if)f Fp(x)1309 562 y Fo(1)1342
3613 556 y Fy(is)h(kno)o(wn)f(to)h(b)q(e)h(less)f(than)g(or)g(equal)75
3614 606 y(to)g Fp(x)151 612 y Fo(2)184 606 y Fy(at)f(the)i(time)d(of)h
3615 (call.)20 b(A)15 b(real)g(v)n(alue)f Fp(x)806 612 y Fo(1)839
3616 606 y Fy(is)g(kno)o(wn)h(to)f(b)q(e)i(less)f(than)g(or)g(equal)f(to)h
3617 (a)f(real)h(v)n(alue)f Fp(x)1761 612 y Fo(2)1794 606
3618 y Fy(if)g Fp(x)1857 612 y Fo(1)1890 606 y Fy(has)75 655
3619 y(an)j(upp)q(er)g(b)q(ound,)h Fp(x)425 661 y Fo(2)460
3620 655 y Fy(has)f(a)f(lo)o(w)o(er)h(b)q(ound)g(and)f(the)i(upp)q(er)g(b)q
3621 (ound)f(of)f Fp(x)1302 661 y Fo(1)1337 655 y Fy(is)h(less)g(than)g(or)g
3622 (equal)f(to)h(the)g(lo)o(w)o(er)75 705 y(b)q(ound)c(of)g
3623 Fp(x)273 711 y Fo(2)304 705 y Fy(\(see)h(section)g(6\).)k(Returns)13
3624 b Fq(nil)g Fy(if)f Fp(x)887 711 y Fo(1)918 705 y Fy(is)h(kno)o(wn)g(to)
3625 f(b)q(e)i(greater)g(than)f Fp(x)1455 711 y Fo(2)1486
3626 705 y Fy(at)g(the)h(time)e(of)g(call.)17 b(A)c(real)75
3627 755 y(v)n(alue)f Fp(x)205 761 y Fo(1)235 755 y Fy(is)g(kno)o(wn)g(to)g
3628 (b)q(e)h(greater)g(than)f(a)g(real)g(v)n(alue)g Fp(x)985
3629 761 y Fo(2)1015 755 y Fy(if)g Fp(x)1076 761 y Fo(1)1106
3630 755 y Fy(has)h(a)f(lo)o(w)o(er)g(b)q(ound,)g Fp(x)1481
3631 761 y Fo(2)1511 755 y Fy(has)h(an)f(upp)q(er)h(b)q(ound)f(and)75
3632 805 y(the)i(lo)o(w)o(er)g(b)q(ound)g(of)f Fp(x)454 811
3633 y Fo(1)486 805 y Fy(is)h(greater)g(than)g(the)h(upp)q(er)f(b)q(ound)g
3634 (of)f Fp(x)1154 811 y Fo(2)1187 805 y Fy(\(see)i(section)f(6\).)k(If)13
3635 b(it)h(is)g(not)f(kno)o(wn)h(whether)75 855 y(or)j(not)g
3636 Fp(x)230 861 y Fo(1)265 855 y Fy(is)g(less)h(than)f(or)g(equal)g(to)g
3637 Fp(x)735 861 y Fo(2)770 855 y Fy(when)h Fq(>=v)e Fy(is)h(called)g(then)
3638 h Fq(>=v)e Fy(creates)j(and)e(returns)i(a)e(new)g(b)q(o)q(olean)75
3639 905 y(v)n(ariable)e Fp(v)q Fy(.)24 b(The)16 b(v)n(alues)g(of)f
3640 Fp(x)576 911 y Fo(1)594 905 y Fy(,)h Fp(x)646 911 y Fo(2)680
3641 905 y Fy(and)f Fp(v)j Fy(are)e(m)o(utually)d(constrained)k(via)e
3642 (noticers)h(so)g(that)g Fp(v)h Fy(is)f(equal)g(to)f Fq(t)h
3643 Fy(if)75 954 y(and)d(only)f(if)g Fp(x)306 960 y Fo(1)338
3644 954 y Fy(is)g(kno)o(wn)h(to)g(b)q(e)g(less)h(than)f(or)g(equal)g(to)g
3645 Fp(x)1019 960 y Fo(2)1050 954 y Fy(and)g Fp(v)h Fy(is)f(equal)g(to)g
3646 Fq(nil)f Fy(if)g(and)h(only)f(if)g Fp(x)1710 960 y Fo(1)1742
3647 954 y Fy(is)h(kno)o(wn)f(to)75 1004 y(b)q(e)h(greater)h(than)e
3648 Fp(x)389 1010 y Fo(2)408 1004 y Fy(.)17 b(If)c(it)f(later)g(b)q(ecomes)
3649 h(kno)o(wn)g(that)f Fp(x)1020 1010 y Fo(1)1051 1004 y
3650 Fy(is)h(less)g(than)f(or)h(equal)f(to)h Fp(x)1494 1010
3651 y Fo(2)1512 1004 y Fy(,)f(noticers)i(attac)o(hed)f(to)g
3652 Fp(x)1932 1010 y Fo(1)75 1054 y Fy(and)k Fp(x)183 1060
3653 y Fo(2)218 1054 y Fy(restrict)h Fp(v)g Fy(to)f(equal)f
3654 Fq(t)p Fy(.)27 b(Lik)o(ewise,)16 b(if)g(it)h(later)g(b)q(ecomes)g(kno)o
3655 (wn)f(that)h Fp(x)1415 1060 y Fo(1)1450 1054 y Fy(is)f(greater)i(than)f
3656 Fp(x)1762 1060 y Fo(2)1780 1054 y Fy(,)g(noticers)75
3657 1104 y(attac)o(hed)f(to)g Fp(x)323 1110 y Fo(1)357 1104
3658 y Fy(and)g Fp(x)464 1110 y Fo(2)498 1104 y Fy(restrict)h
3659 Fp(v)h Fy(to)d(equal)h Fq(nil)p Fy(.)23 b(F)m(urthermore,)15
3660 b(if)g Fp(v)j Fy(ev)o(er)e(b)q(ecomes)g(kno)o(wn)g(to)f(equal)h
3661 Fq(t)f Fy(then)75 1154 y(a)h(noticer)g(attac)o(hed)g(to)g
3662 Fp(v)i Fy(restricts)f Fp(x)699 1160 y Fo(1)734 1154 y
3663 Fy(to)e(b)q(e)i(less)f(than)g(or)g(equal)f(to)h Fp(x)1263
3664 1160 y Fo(2)1281 1154 y Fy(.)24 b(Lik)o(ewise,)16 b(if)f
3665 Fp(v)j Fy(ev)o(er)e(b)q(ecomes)g(kno)o(wn)75 1203 y(to)e(equal)f
3666 Fq(nil)h Fy(then)g(a)g(noticer)g(attac)o(hed)h(to)f Fp(v)h
3667 Fy(restricts)h Fp(x)1022 1209 y Fo(1)1054 1203 y Fy(to)e(b)q(e)g
3668 (greater)h(than)f Fp(x)1423 1209 y Fo(2)1442 1203 y Fy(.)k(Restricting)
3669 c(a)g(real)f(v)n(alue)h Fp(x)1932 1209 y Fo(1)75 1253
3670 y Fy(to)g(b)q(e)g(less)h(than)e(or)h(equal)g(to)f(a)h(real)f(v)n(alue)h
3671 Fp(x)813 1259 y Fo(2)845 1253 y Fy(is)f(p)q(erformed)h(b)o(y)f(attac)o
3672 (hing)h(noticers)g(to)g Fp(x)1555 1259 y Fo(1)1587 1253
3673 y Fy(and)g Fp(x)1692 1259 y Fo(2)1710 1253 y Fy(.)k(The)c(noticer)75
3674 1303 y(attac)o(hed)i(to)g Fp(x)323 1309 y Fo(1)357 1303
3675 y Fy(con)o(tin)o(ually)e(restricts)k(the)e(lo)o(w)o(er)g(b)q(ound)g(of)
3676 f Fp(x)1121 1309 y Fo(2)1155 1303 y Fy(to)g(b)q(e)i(no)e(lo)o(w)o(er)h
3677 (than)f(the)i(upp)q(er)g(b)q(ound)e(of)h Fp(x)1932 1309
3678 y Fo(1)75 1353 y Fy(if)d Fp(x)137 1359 y Fo(1)169 1353
3679 y Fy(has)h(an)f(upp)q(er)i(b)q(ound.)j(The)c(noticer)h(attac)o(hed)f
3680 (to)g Fp(x)1031 1359 y Fo(2)1063 1353 y Fy(con)o(tin)o(ually)e
3681 (restricts)k(the)e(upp)q(er)h(b)q(ound)f(of)f Fp(x)1825
3682 1359 y Fo(1)1857 1353 y Fy(to)g(b)q(e)75 1403 y(no)h(higher)g(than)g
3683 (the)g(lo)o(w)o(er)g(b)q(ound)g(of)f Fp(x)736 1409 y
3684 Fo(2)768 1403 y Fy(if)g Fp(x)830 1409 y Fo(2)862 1403
3685 y Fy(has)h(a)g(lo)o(w)o(er)f(b)q(ound.)19 b(Restricting)14
3686 b(a)f(real)h(v)n(alue)f Fp(x)1683 1409 y Fo(1)1716 1403
3687 y Fy(to)g(b)q(e)i(greater)75 1452 y(than)d(a)g(real)g(v)n(alue)g
3688 Fp(x)412 1458 y Fo(2)442 1452 y Fy(is)g(p)q(erformed)g(b)o(y)g(an)g
3689 (analogous)e(set)k(of)d(noticers.)18 b(Since)13 b(these)h(restrictions)
3690 f(only)e(guaran)o(tee)75 1502 y(that)j Fp(x)189 1508
3691 y Fo(1)221 1502 y Fy(b)q(e)h(greater)f(than)g(or)g(equal)g(to)f
3692 Fp(x)750 1508 y Fo(2)769 1502 y Fy(,)g(the)i(constrain)o(t)f(that)g
3693 Fp(x)1175 1508 y Fo(1)1207 1502 y Fy(b)q(e)g(strictly)h(greater)f(than)
3694 g Fp(x)1667 1508 y Fo(2)1699 1502 y Fy(is)g(enforced)h(b)o(y)75
3695 1552 y(ha)o(ving)e(the)i(noticers)g(fail)e(when)h(b)q(oth)h
3696 Fp(x)738 1558 y Fo(1)770 1552 y Fy(and)f Fp(x)875 1558
3697 y Fo(2)908 1552 y Fy(b)q(ecome)g(kno)o(wn)f(to)h(b)q(e)h(equal.)k(See)c
3698 (section)g(6)f(for)g(a)f(discussion)75 1602 y(of)g(v)n(ariable)g(upp)q
3699 (er)i(and)f(lo)o(w)o(er)f(b)q(ounds,)h(and)g(domains.)75
3700 1840 y Fq(>v)21 b Fp(x)164 1825 y Fo(+)1506 1840 y Fy([)p
3701 Fu(Deterministic)14 b(F)m(unction)p Fy(])75 1989 y(Returns)i(a)e(b)q(o)
3702 q(olean)g(v)n(alue)g(whic)o(h)h(is)g(constrained)g(to)g(b)q(e)g
3703 Fq(t)f Fy(if)g(eac)o(h)i(argumen)o(t)d Fp(x)1406 1995
3704 y Fh(i)1434 1989 y Fy(is)i(greater)h(than)e(the)i(follo)o(wing)75
3705 2039 y(argumen)o(t)h Fp(x)289 2045 y Fh(i)p Fo(+1)362
3706 2039 y Fy(and)g(constrained)i(to)e(b)q(e)i Fq(nil)e Fy(if)g(some)f
3707 (argumen)o(t)h Fp(x)1233 2045 y Fh(i)1264 2039 y Fy(is)h(less)g(than)g
3708 (or)f(equal)h(to)f(the)i(follo)o(wing)75 2088 y(argumen)o(t)14
3709 b Fp(x)286 2094 y Fh(i)p Fo(+1)342 2088 y Fy(.)22 b(This)16
3710 b(function)f(tak)o(es)h(one)f(or)h(more)e(argumen)o(ts.)22
3711 b(All)14 b(of)h(the)h(argumen)o(ts)f(are)h(restricted)h(to)e(b)q(e)75
3712 2138 y(real)g(\(see)i(section)f(8\).)22 b(Returns)17
3713 b Fq(t)e Fy(when)g(called)h(with)f(one)g(argumen)o(t.)21
3714 b(A)16 b(call)e(suc)o(h)j(as)e Fq(\(>v)21 b Fp(x)1641
3715 2144 y Fo(1)1681 2138 y Fp(x)1705 2144 y Fo(2)1731 2138
3716 y Fp(:)7 b(:)g(:)e(x)1810 2144 y Fh(n)1832 2138 y Fq(\))15
3717 b Fy(with)75 2188 y(more)e(than)h(t)o(w)o(o)f(argumen)o(ts)g(b)q(eha)o
3718 (v)o(es)i(lik)o(e)e(a)h(conjunction)g(of)f(t)o(w)o(o)g(argumen)o(t)g
3719 (calls:)179 2269 y Fq(\(andv)21 b(\(>v)g Fp(x)421 2275
3720 y Fo(1)461 2269 y Fp(x)485 2275 y Fo(2)503 2269 y Fq(\))p
3721 Fp(:)7 b(:)g(:)n Fq(\(>v)22 b Fp(x)685 2275 y Fh(i)720
3722 2269 y Fp(x)744 2275 y Fh(i)p Fo(+1)800 2269 y Fq(\))p
3723 Fp(:)7 b(:)g(:)n Fq(\(>v)21 b Fp(x)981 2275 y Fh(n)p
3724 Fi(\000)p Fo(1)1068 2269 y Fp(x)1092 2275 y Fh(n)1114
3725 2269 y Fq(\)\))75 2350 y Fy(Beha)o(v)o(es)15 b(as)g(follo)o(ws)e(when)i
3726 (called)f(with)g(t)o(w)o(o)g(argumen)o(ts.)19 b(Returns)c
3727 Fq(t)f Fy(if)g Fp(x)1302 2356 y Fo(1)1335 2350 y Fy(is)g(kno)o(wn)g(to)
3728 g(b)q(e)h(greater)h(than)e Fp(x)1880 2356 y Fo(2)1913
3729 2350 y Fy(at)75 2399 y(the)i(time)f(of)g(call.)23 b(A)15
3730 b(real)h(v)n(alue)f Fp(x)654 2405 y Fo(1)688 2399 y Fy(is)h(kno)o(wn)f
3731 (to)h(b)q(e)g(greater)h(than)f(a)f(real)h(v)n(alue)f
3732 Fp(x)1470 2405 y Fo(2)1504 2399 y Fy(if)g Fp(x)1568 2405
3733 y Fo(1)1602 2399 y Fy(has)h(a)f(lo)o(w)o(er)g(b)q(ound,)75
3734 2449 y Fp(x)99 2455 y Fo(2)130 2449 y Fy(has)e(an)g(upp)q(er)g(b)q
3735 (ound)g(and)g(the)g(lo)o(w)o(er)f(b)q(ound)h(of)g Fp(x)959
3736 2455 y Fo(1)990 2449 y Fy(is)f(greater)i(than)f(the)g(upp)q(er)h(b)q
3737 (ound)f(of)f Fp(x)1651 2455 y Fo(2)1682 2449 y Fy(\(see)i(section)g
3738 (6\).)75 2499 y(Returns)f Fq(nil)f Fy(if)g Fp(x)370 2505
3739 y Fo(1)401 2499 y Fy(is)g(kno)o(wn)g(to)h(b)q(e)g(less)g(than)f(or)h
3740 (equal)f(to)h Fp(x)1078 2505 y Fo(2)1108 2499 y Fy(at)g(the)g(time)e
3741 (of)h(call.)17 b(A)12 b(real)h(v)n(alue)f Fp(x)1712 2505
3742 y Fo(1)1743 2499 y Fy(is)g(kno)o(wn)g(to)75 2549 y(b)q(e)j(less)g(than)
3743 g(or)f(equal)g(to)g(a)g(real)h(v)n(alue)e Fp(x)767 2555
3744 y Fo(2)800 2549 y Fy(if)h Fp(x)863 2555 y Fo(1)895 2549
3745 y Fy(has)h(an)f(upp)q(er)i(b)q(ound,)e Fp(x)1312 2555
3746 y Fo(2)1344 2549 y Fy(has)h(a)f(lo)o(w)o(er)g(b)q(ound)h(and)f(the)h
3747 (upp)q(er)75 2599 y(b)q(ound)f(of)e Fp(x)273 2605 y Fo(1)305
3748 2599 y Fy(is)i(less)g(than)f(or)h(equal)f(to)g(the)h(lo)o(w)o(er)f(b)q
3749 (ound)h(of)f Fp(x)1107 2605 y Fo(2)1138 2599 y Fy(\(see)i(section)f
3750 (6\).)k(If)13 b(it)g(is)h(not)f(kno)o(wn)g(whether)i(or)992
3751 2723 y(20)p eop
3752 %%Page: 21 21
3753 21 20 bop 75 195 a Fy(not)15 b Fp(x)174 201 y Fo(1)206
3754 195 y Fy(is)g(greater)h(than)e Fp(x)512 201 y Fo(2)545
3755 195 y Fy(when)h Fq(>v)f Fy(is)h(called)f(then)h Fq(>v)g
3756 Fy(creates)h(and)e(returns)j(a)d(new)h(b)q(o)q(olean)f(v)n(ariable)g
3757 Fp(v)q Fy(.)21 b(The)75 245 y(v)n(alues)15 b(of)f Fp(x)272
3758 251 y Fo(1)291 245 y Fy(,)g Fp(x)341 251 y Fo(2)375 245
3759 y Fy(and)h Fp(v)h Fy(are)g(m)o(utually)d(constrained)j(via)e(noticers)i
3760 (so)f(that)g Fp(v)i Fy(is)e(equal)g(to)g Fq(t)g Fy(if)f(and)h(only)f
3761 (if)h Fp(x)1889 251 y Fo(1)1922 245 y Fy(is)75 295 y(kno)o(wn)g(to)h(b)
3762 q(e)g(greater)g(than)g Fp(x)584 301 y Fo(2)618 295 y
3763 Fy(and)f Fp(v)i Fy(is)f(equal)f(to)g Fq(nil)g Fy(if)g(and)g(only)g(if)g
3764 Fp(x)1304 301 y Fo(1)1338 295 y Fy(is)g(kno)o(wn)g(to)h(b)q(e)g(less)g
3765 (than)g(or)f(equal)75 345 y(to)f Fp(x)150 351 y Fo(2)168
3766 345 y Fy(.)k(If)13 b(it)h(later)g(b)q(ecomes)g(kno)o(wn)f(that)h
3767 Fp(x)788 351 y Fo(1)820 345 y Fy(is)g(greater)g(than)g
3768 Fp(x)1123 351 y Fo(2)1142 345 y Fy(,)f(noticers)i(attac)o(hed)f(to)g
3769 Fp(x)1566 351 y Fo(1)1598 345 y Fy(and)f Fp(x)1702 351
3770 y Fo(2)1734 345 y Fy(restrict)j Fp(v)f Fy(to)75 394 y(equal)f
3771 Fq(t)p Fy(.)k(Lik)o(ewise,)c(if)f(it)h(later)g(b)q(ecomes)g(kno)o(wn)g
3772 (that)g Fp(x)1004 400 y Fo(1)1036 394 y Fy(is)g(less)h(than)f(or)g
3773 (equal)g(to)g Fp(x)1488 400 y Fo(2)1506 394 y Fy(,)g(noticers)h(attac)o
3774 (hed)g(to)f Fp(x)1932 400 y Fo(1)75 444 y Fy(and)e Fp(x)178
3775 450 y Fo(2)209 444 y Fy(restrict)i Fp(v)g Fy(to)e(equal)h
3776 Fq(nil)p Fy(.)j(F)m(urthermore,)d(if)e Fp(v)j Fy(ev)o(er)g(b)q(ecomes)e
3777 (kno)o(wn)g(to)h(equal)f Fq(t)g Fy(then)h(a)f(noticer)h(attac)o(hed)75
3778 494 y(to)i Fp(v)i Fy(restricts)g Fp(x)349 500 y Fo(1)382
3779 494 y Fy(to)e(b)q(e)g(greater)i(than)e Fp(x)756 500 y
3780 Fo(2)774 494 y Fy(.)21 b(Lik)o(ewise,)15 b(if)f Fp(v)j
3781 Fy(ev)o(er)f(b)q(ecomes)f(kno)o(wn)g(to)g(equal)f Fq(nil)h
3782 Fy(then)h(a)e(noticer)75 544 y(attac)o(hed)h(to)g Fp(v)h
3783 Fy(restricts)g Fp(x)517 550 y Fo(1)550 544 y Fy(to)f(b)q(e)g(less)g
3784 (than)g(or)f(equal)g(to)h Fp(x)1071 550 y Fo(2)1089 544
3785 y Fy(.)20 b(Restricting)15 b(a)f(real)h(v)n(alue)f Fp(x)1584
3786 550 y Fo(1)1617 544 y Fy(to)g(b)q(e)h(greater)h(than)75
3787 594 y(a)e(real)f(v)n(alue)h Fp(x)322 600 y Fo(2)354 594
3788 y Fy(is)g(p)q(erformed)f(b)o(y)h(attac)o(hing)f(noticers)i(to)f
3789 Fp(x)1065 600 y Fo(1)1097 594 y Fy(and)g Fp(x)1202 600
3790 y Fo(2)1220 594 y Fy(.)k(The)d(noticer)f(attac)o(hed)h(to)e
3791 Fp(x)1718 600 y Fo(1)1751 594 y Fy(con)o(tin)o(ually)75
3792 643 y(restricts)18 b(the)g(upp)q(er)f(b)q(ound)g(of)f
3793 Fp(x)638 649 y Fo(2)673 643 y Fy(to)g(b)q(e)h(no)g(higher)f(than)h(the)
3794 g(lo)o(w)o(er)f(b)q(ound)h(of)f Fp(x)1465 649 y Fo(1)1500
3795 643 y Fy(if)f Fp(x)1564 649 y Fo(1)1599 643 y Fy(has)i(a)f(lo)o(w)o(er)
3796 g(b)q(ound.)75 693 y(The)h(noticer)g(attac)o(hed)g(to)f
3797 Fp(x)553 699 y Fo(2)587 693 y Fy(con)o(tin)o(ually)f(restricts)j(the)f
3798 (lo)o(w)o(er)f(b)q(ound)g(of)g Fp(x)1354 699 y Fo(1)1389
3799 693 y Fy(to)g(b)q(e)h(no)f(lo)o(w)o(er)g(than)g(the)h(upp)q(er)75
3800 743 y(b)q(ound)e(of)f Fp(x)276 749 y Fo(2)309 743 y Fy(if)g
3801 Fp(x)372 749 y Fo(2)405 743 y Fy(has)h(an)f(upp)q(er)i(b)q(ound.)21
3802 b(Since)15 b(these)h(restrictions)g(only)e(guaran)o(tee)h(that)g
3803 Fp(x)1635 749 y Fo(1)1668 743 y Fy(b)q(e)g(greater)h(than)75
3804 793 y(or)e(equal)g(to)h Fp(x)312 799 y Fo(2)330 793 y
3805 Fy(,)f(the)h(constrain)o(t)g(that)f Fp(x)738 799 y Fo(1)771
3806 793 y Fy(b)q(e)h(strictly)g(greater)g(than)f Fp(x)1233
3807 799 y Fo(2)1266 793 y Fy(is)g(enforced)i(b)o(y)e(ha)o(ving)f(the)i
3808 (noticers)g(fail)75 843 y(when)d(b)q(oth)g Fp(x)301 849
3809 y Fo(1)332 843 y Fy(and)f Fp(x)434 849 y Fo(2)465 843
3810 y Fy(b)q(ecome)g(kno)o(wn)h(to)g(b)q(e)g(equal.)17 b(Restricting)12
3811 b(a)g(real)g(v)n(alue)f Fp(x)1421 849 y Fo(1)1451 843
3812 y Fy(to)h(b)q(e)h(less)f(than)g(or)g(equal)f(to)h(a)75
3813 892 y(real)h(v)n(alue)f Fp(x)285 898 y Fo(2)316 892 y
3814 Fy(is)h(p)q(erformed)g(b)o(y)f(an)h(analogous)f(set)i(of)e(noticers)i
3815 (without)e(this)h(last)g(equalit)o(y)f(c)o(hec)o(k.)19
3816 b(See)14 b(section)f(6)75 942 y(for)h(a)f(discussion)i(of)e(v)n
3817 (ariable)g(upp)q(er)h(and)g(lo)o(w)o(er)g(b)q(ounds,)g(and)f(domains.)
3818 75 1184 y Fq(>=v)21 b Fp(x)186 1169 y Fo(+)1506 1184
3819 y Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
3820 1335 y(Returns)j(a)g(b)q(o)q(olean)f(v)n(alue)g(whic)o(h)g(is)h
3821 (constrained)g(to)f(b)q(e)h Fq(t)g Fy(if)e(eac)o(h)i(argumen)o(t)f
3822 Fp(x)1430 1341 y Fh(i)1460 1335 y Fy(is)g(greater)i(than)e(or)h(equal)f
3823 (to)75 1385 y(the)g(follo)o(wing)e(argumen)o(t)g Fp(x)537
3824 1391 y Fh(i)p Fo(+1)609 1385 y Fy(and)h(constrained)i(to)f(b)q(e)g
3825 Fq(nil)f Fy(if)g(some)g(argumen)o(t)g Fp(x)1465 1391
3826 y Fh(i)1494 1385 y Fy(is)h(less)g(than)g(the)h(follo)o(wing)75
3827 1435 y(argumen)o(t)d Fp(x)286 1441 y Fh(i)p Fo(+1)342
3828 1435 y Fy(.)22 b(This)16 b(function)f(tak)o(es)h(one)f(or)h(more)e
3829 (argumen)o(ts.)22 b(All)14 b(of)h(the)h(argumen)o(ts)f(are)h
3830 (restricted)h(to)e(b)q(e)75 1484 y(real)f(\(see)i(section)f(8\).)k
3831 (Returns)c Fq(t)f Fy(when)h(called)f(with)g(one)g(argumen)o(t.)k(A)c
3832 (call)g(suc)o(h)h(as)f Fq(\(>=v)21 b Fp(x)1642 1490 y
3833 Fo(1)1682 1484 y Fp(x)1706 1490 y Fo(2)1732 1484 y Fp(:)7
3834 b(:)g(:)e(x)1811 1490 y Fh(n)1833 1484 y Fq(\))14 b Fy(with)75
3835 1534 y(more)f(than)h(t)o(w)o(o)f(argumen)o(ts)g(b)q(eha)o(v)o(es)i(lik)
3836 o(e)e(a)h(conjunction)g(of)f(t)o(w)o(o)g(argumen)o(t)g(calls:)179
3837 1617 y Fq(\(andv)21 b(\(>=v)g Fp(x)443 1623 y Fo(1)483
3838 1617 y Fp(x)507 1623 y Fo(2)525 1617 y Fq(\))p Fp(:)7
3839 b(:)g(:)n Fq(\(>=v)21 b Fp(x)728 1623 y Fh(i)764 1617
3840 y Fp(x)788 1623 y Fh(i)p Fo(+1)843 1617 y Fq(\))p Fp(:)7
3841 b(:)g(:)n Fq(\(>=v)21 b Fp(x)1046 1623 y Fh(n)p Fi(\000)p
3842 Fo(1)1133 1617 y Fp(x)1157 1623 y Fh(n)1179 1617 y Fq(\)\))75
3843 1700 y Fy(Beha)o(v)o(es)13 b(as)e(follo)o(ws)f(when)i(called)g(with)f
3844 (t)o(w)o(o)g(argumen)o(ts.)17 b(Returns)12 b Fq(t)g Fy(if)e
3845 Fp(x)1271 1706 y Fo(1)1301 1700 y Fy(is)i(kno)o(wn)f(to)g(b)q(e)i
3846 (greater)f(than)g(or)f(equal)75 1750 y(to)h Fp(x)148
3847 1756 y Fo(2)179 1750 y Fy(at)g(the)h(time)e(of)g(call.)17
3848 b(A)c(real)f(v)n(alue)g Fp(x)781 1756 y Fo(1)811 1750
3849 y Fy(is)g(kno)o(wn)g(to)g(b)q(e)h(greater)h(than)e(or)g(equal)g(to)g(a)
3850 g(real)g(v)n(alue)g Fp(x)1768 1756 y Fo(2)1799 1750 y
3851 Fy(if)f Fp(x)1859 1756 y Fo(1)1890 1750 y Fy(has)75 1800
3852 y(a)j(lo)o(w)o(er)f(b)q(ound,)g Fp(x)381 1806 y Fo(2)413
3853 1800 y Fy(has)h(an)g(upp)q(er)h(b)q(ound)f(and)f(the)i(lo)o(w)o(er)e(b)
3854 q(ound)h(of)f Fp(x)1251 1806 y Fo(1)1283 1800 y Fy(is)h(greater)h(than)
3855 f(or)f(equal)h(to)g(the)g(upp)q(er)75 1850 y(b)q(ound)i(of)f
3856 Fp(x)278 1856 y Fo(2)311 1850 y Fy(\(see)i(section)g(6\).)23
3857 b(Returns)16 b Fq(nil)f Fy(if)g Fp(x)913 1856 y Fo(1)947
3858 1850 y Fy(is)g(kno)o(wn)g(to)g(b)q(e)i(less)f(than)f
3859 Fp(x)1434 1856 y Fo(2)1468 1850 y Fy(at)h(the)g(time)e(of)h(call.)22
3860 b(A)16 b(real)75 1899 y(v)n(alue)11 b Fp(x)204 1905 y
3861 Fo(1)235 1899 y Fy(is)g(kno)o(wn)h(to)g(b)q(e)g(less)h(than)f(a)g(real)
3862 g(v)n(alue)f Fp(x)918 1905 y Fo(2)948 1899 y Fy(if)h
3863 Fp(x)1009 1905 y Fo(1)1039 1899 y Fy(has)g(an)g(upp)q(er)h(b)q(ound,)f
3864 Fp(x)1446 1905 y Fo(2)1476 1899 y Fy(has)g(a)g(lo)o(w)o(er)f(b)q(ound)i
3865 (and)e(the)75 1949 y(upp)q(er)i(b)q(ound)f(of)f Fp(x)387
3866 1955 y Fo(1)417 1949 y Fy(is)h(less)g(than)g(the)g(lo)o(w)o(er)g(b)q
3867 (ound)f(of)h Fp(x)997 1955 y Fo(2)1027 1949 y Fy(\(see)h(section)f
3868 (6\).)18 b(If)11 b(it)g(is)h(not)g(kno)o(wn)f(whether)i(or)f(not)g
3869 Fp(x)1932 1955 y Fo(1)75 1999 y Fy(is)h(greater)h(than)f(or)g(equal)f
3870 (to)h Fp(x)584 2005 y Fo(2)615 1999 y Fy(when)h Fq(>=v)e
3871 Fy(is)h(called)f(then)i Fq(>=v)e Fy(creates)j(and)e(returns)h(a)f(new)g
3872 (b)q(o)q(olean)g(v)n(ariable)f Fp(v)q Fy(.)75 2049 y(The)i(v)n(alues)f
3873 (of)f Fp(x)353 2055 y Fo(1)372 2049 y Fy(,)g Fp(x)420
3874 2055 y Fo(2)452 2049 y Fy(and)h Fp(v)i Fy(are)e(m)o(utually)e
3875 (constrained)j(via)f(noticers)h(so)f(that)g Fp(v)i Fy(is)e(equal)g(to)g
3876 Fq(t)g Fy(if)g(and)g(only)f(if)h Fp(x)1932 2055 y Fo(1)75
3877 2099 y Fy(is)j(kno)o(wn)f(to)g(b)q(e)i(greater)f(than)g(or)g(equal)f
3878 (to)g Fp(x)844 2105 y Fo(2)878 2099 y Fy(and)h Fp(v)h
3879 Fy(is)f(equal)f(to)h Fq(nil)f Fy(if)f(and)i(only)f(if)g
3880 Fp(x)1566 2105 y Fo(1)1600 2099 y Fy(is)g(kno)o(wn)g(to)h(b)q(e)g(less)
3881 75 2149 y(than)c Fp(x)194 2155 y Fo(2)213 2149 y Fy(.)17
3882 b(If)12 b(it)g(later)h(b)q(ecomes)f(kno)o(wn)g(that)h
3883 Fp(x)824 2155 y Fo(1)855 2149 y Fy(is)f(greater)h(than)g(or)f(equal)g
3884 (to)g Fp(x)1360 2155 y Fo(2)1379 2149 y Fy(,)g(noticers)h(attac)o(hed)g
3885 (to)g Fp(x)1798 2155 y Fo(1)1828 2149 y Fy(and)g Fp(x)1932
3886 2155 y Fo(2)75 2198 y Fy(restrict)i Fp(v)f Fy(to)f(equal)g
3887 Fq(t)p Fy(.)18 b(Lik)o(ewise,)13 b(if)f(it)h(later)g(b)q(ecomes)g(kno)o
3888 (wn)g(that)g Fp(x)1223 2204 y Fo(1)1255 2198 y Fy(is)g(less)h(than)f
3889 Fp(x)1492 2204 y Fo(2)1510 2198 y Fy(,)g(noticers)h(attac)o(hed)g(to)f
3890 Fp(x)1932 2204 y Fo(1)75 2248 y Fy(and)f Fp(x)178 2254
3891 y Fo(2)209 2248 y Fy(restrict)i Fp(v)g Fy(to)e(equal)h
3892 Fq(nil)p Fy(.)j(F)m(urthermore,)d(if)e Fp(v)j Fy(ev)o(er)g(b)q(ecomes)e
3893 (kno)o(wn)g(to)h(equal)f Fq(t)g Fy(then)h(a)f(noticer)h(attac)o(hed)75
3894 2298 y(to)g Fp(v)i Fy(restricts)g Fp(x)343 2304 y Fo(1)375
3895 2298 y Fy(to)e(b)q(e)h(greater)g(than)f(or)h(equal)f(to)g
3896 Fp(x)951 2304 y Fo(2)969 2298 y Fy(.)18 b(Lik)o(ewise,)13
3897 b(if)f Fp(v)j Fy(ev)o(er)f(b)q(ecomes)g(kno)o(wn)f(to)g(equal)g
3898 Fq(nil)f Fy(then)75 2348 y(a)k(noticer)h(attac)o(hed)g(to)f
3899 Fp(v)i Fy(restricts)g Fp(x)702 2354 y Fo(1)737 2348 y
3900 Fy(to)e(b)q(e)h(less)g(than)f Fp(x)1051 2354 y Fo(2)1070
3901 2348 y Fy(.)25 b(Restricting)17 b(a)f(real)g(v)n(alue)g
3902 Fp(x)1577 2354 y Fo(1)1611 2348 y Fy(to)h(b)q(e)g(greater)g(than)75
3903 2398 y(or)d(equal)g(to)f(a)h(real)g(v)n(alue)f Fp(x)533
3904 2404 y Fo(2)566 2398 y Fy(is)h(p)q(erformed)f(b)o(y)h(attac)o(hing)g
3905 (noticers)g(to)g Fp(x)1277 2404 y Fo(1)1310 2398 y Fy(and)f
3906 Fp(x)1414 2404 y Fo(2)1433 2398 y Fy(.)18 b(The)d(noticer)f(attac)o
3907 (hed)h(to)f Fp(x)1932 2404 y Fo(1)75 2447 y Fy(con)o(tin)o(ually)d
3908 (restricts)k(the)f(upp)q(er)g(b)q(ound)f(of)g Fp(x)833
3909 2453 y Fo(2)864 2447 y Fy(to)g(b)q(e)h(no)e(higher)i(than)f(the)g(lo)o
3910 (w)o(er)g(b)q(ound)g(of)f Fp(x)1624 2453 y Fo(1)1656
3911 2447 y Fy(if)g Fp(x)1717 2453 y Fo(1)1748 2447 y Fy(has)i(a)e(lo)o(w)o
3912 (er)75 2497 y(b)q(ound.)21 b(The)15 b(noticer)g(attac)o(hed)h(to)f
3913 Fp(x)694 2503 y Fo(2)727 2497 y Fy(con)o(tin)o(ually)e(restricts)k(the)
3914 e(lo)o(w)o(er)f(b)q(ound)h(of)f Fp(x)1484 2503 y Fo(1)1518
3915 2497 y Fy(to)g(b)q(e)i(no)e(lo)o(w)o(er)h(than)f(the)75
3916 2547 y(upp)q(er)h(b)q(ound)f(of)f Fp(x)393 2553 y Fo(2)425
3917 2547 y Fy(if)g Fp(x)487 2553 y Fo(2)519 2547 y Fy(has)h(an)g(upp)q(er)g
3918 (b)q(ound.)k(Restricting)c(a)g(real)g(v)n(alue)f Fp(x)1373
3919 2553 y Fo(1)1405 2547 y Fy(to)h(b)q(e)g(less)g(than)g(a)g(real)g(v)n
3920 (alue)f Fp(x)1932 2553 y Fo(2)75 2597 y Fy(is)f(p)q(erformed)g(b)o(y)g
3921 (an)g(analogous)e(set)j(of)f(noticers.)18 b(Since)13
3922 b(these)h(restrictions)f(only)e(guaran)o(tee)i(that)f
3923 Fp(x)1707 2603 y Fo(1)1737 2597 y Fy(b)q(e)h(less)g(than)992
3924 2723 y(21)p eop
3925 %%Page: 22 22
3926 22 21 bop 75 195 a Fy(or)12 b(equal)g(to)g Fp(x)305 201
3927 y Fo(2)323 195 y Fy(,)g(the)h(constrain)o(t)f(that)h
3928 Fp(x)723 201 y Fo(1)753 195 y Fy(b)q(e)g(strictly)f(less)h(than)f
3929 Fp(x)1142 201 y Fo(2)1173 195 y Fy(is)g(enforced)h(b)o(y)f(ha)o(ving)f
3930 (the)i(noticers)g(fail)d(when)75 245 y(b)q(oth)16 b Fp(x)199
3931 251 y Fo(1)232 245 y Fy(and)g Fp(x)339 251 y Fo(2)373
3932 245 y Fy(b)q(ecome)f(kno)o(wn)g(to)g(b)q(e)h(equal.)23
3933 b(See)16 b(section)h(6)e(for)g(a)g(discussion)h(of)f(v)n(ariable)g(upp)
3934 q(er)h(and)f(lo)o(w)o(er)75 295 y(b)q(ounds,)f(and)g(domains.)75
3935 533 y Fq(/=v)21 b Fp(x)186 518 y Fo(+)1506 533 y Fy([)p
3936 Fu(Deterministic)14 b(F)m(unction)p Fy(])75 682 y(Returns)g(a)f(b)q(o)q
3937 (olean)g(v)n(alue)f(whic)o(h)h(is)g(constrained)h(to)f(b)q(e)h
3938 Fq(t)f Fy(if)f(t)o(w)o(o)h(or)g(more)f(of)g(the)i(argumen)o(ts)e(n)o
3939 (umerically)f(di\013er)75 732 y(and)j(constrained)h(to)f(b)q(e)h
3940 Fq(nil)f Fy(all)f(of)h(the)h(argumen)o(ts)e(are)i(n)o(umerically)d
3941 (equal.)19 b(This)14 b(function)g(tak)o(es)h(one)g(or)f(more)75
3942 782 y(argumen)o(ts.)19 b(All)13 b(of)h(the)h(argumen)o(ts)f(are)h
3943 (restricted)h(to)e(b)q(e)h(n)o(umeric)f(\(see)i(section)f(8\).)k
3944 (Returns)d Fq(nil)d Fy(when)i(called)75 832 y(with)h(one)h(argumen)o
3945 (t.)26 b(A)17 b(call)f(suc)o(h)i(as)f Fq(\(/=v)j Fp(x)872
3946 838 y Fo(1)913 832 y Fp(x)937 838 y Fo(2)962 832 y Fp(:)7
3947 b(:)g(:)e(x)1041 838 y Fh(n)1064 832 y Fq(\))16 b Fy(with)h(more)e
3948 (than)i(t)o(w)o(o)f(argumen)o(ts)h(b)q(eha)o(v)o(es)g(lik)o(e)f(a)75
3949 881 y(conjunction)e(of)f(t)o(w)o(o)h(argumen)o(t)e(calls:)204
3950 960 y Fq(\(andv)20 b(\(/=v)h Fp(x)467 966 y Fo(1)508
3951 960 y Fp(x)532 966 y Fo(2)550 960 y Fq(\))g Fp(:)7 b(:)g(:)21
3952 b Fq(\(/=v)g Fp(x)797 966 y Fo(1)837 960 y Fp(x)861 966
3953 y Fh(n)883 960 y Fq(\))334 1009 y(\(/=v)g Fp(x)467 1015
3954 y Fo(2)508 1009 y Fp(x)532 1015 y Fo(3)550 1009 y Fq(\))g
3955 Fp(:)7 b(:)g(:)21 b Fq(\(/=v)g Fp(x)797 1015 y Fo(2)837
3956 1009 y Fp(x)861 1015 y Fh(n)883 1009 y Fq(\))334 1054
3957 y(.)334 1071 y(.)334 1088 y(.)334 1138 y(\(/=v)g Fp(x)467
3958 1144 y Fh(i)503 1138 y Fp(x)527 1144 y Fh(i)p Fo(+1)604
3959 1138 y Fp(:)7 b(:)g(:)20 b Fq(\(/=v)h Fp(x)807 1144 y
3960 Fh(i)843 1138 y Fp(x)867 1144 y Fh(n)889 1138 y Fq(\))334
3961 1183 y(.)334 1199 y(.)334 1216 y(.)334 1266 y(\(/=v)g
3962 Fp(x)467 1272 y Fh(n)p Fi(\000)p Fo(1)554 1266 y Fp(x)578
3963 1272 y Fh(n)600 1266 y Fq(\)\))75 1345 y Fy(Beha)o(v)o(es)16
3964 b(as)e(follo)o(ws)f(when)i(called)g(with)f(t)o(w)o(o)g(argumen)o(ts.)19
3965 b(Returns)d Fq(t)e Fy(if)g Fp(x)1304 1351 y Fo(1)1337
3966 1345 y Fy(is)g(kno)o(wn)g(not)h(to)f(b)q(e)i(equal)e(to)g
3967 Fp(x)1880 1351 y Fo(2)1913 1345 y Fy(at)75 1394 y(the)j(time)e(of)g
3968 (call.)24 b(Tw)o(o)16 b(n)o(umeric)f(v)n(alues)h(are)g(kno)o(wn)g(not)g
3969 (to)g(b)q(e)h(equal)f(when)g(their)h(domains)d(are)j(disjoin)o(t)e
3970 (\(see)75 1444 y(section)h(6\).)24 b(F)m(urthermore)16
3971 b(t)o(w)o(o)f(real)g(v)n(alues)h(are)g(kno)o(wn)f(not)h(to)g(b)q(e)g
3972 (equal)f(when)i(their)f(ranges)g(are)g(disjoin)o(t,)f(i.e.)75
3973 1494 y(the)g(upp)q(er)h(b)q(ound)e(of)g(one)h(is)f(greater)h(than)g
3974 (the)g(lo)o(w)o(er)f(b)q(ound)g(of)g(the)h(other)g(\(see)h(section)f
3975 (6\).)20 b(Returns)15 b Fq(nil)f Fy(if)g Fp(x)1932 1500
3976 y Fo(1)75 1544 y Fy(is)i(kno)o(wn)f(to)h(b)q(e)g(equal)f(to)h
3977 Fp(x)551 1550 y Fo(2)585 1544 y Fy(at)g(the)g(time)f(of)g(call.)23
3978 b(Tw)o(o)15 b(n)o(umeric)g(v)n(alues)g(are)i(kno)o(wn)e(to)h(b)q(e)g
3979 (equal)f(only)g(when)75 1594 y(they)g(are)g(b)q(oth)g(b)q(ound)f(and)g
3980 (equal)h(according)f(to)h(the)g Fv(Common)h(Lisp)f Fy(function)f
3981 Fq(=)p Fy(.)20 b(If)14 b(it)g(is)g(not)h(kno)o(wn)f(whether)75
3982 1644 y(or)g(not)g Fp(x)224 1650 y Fo(1)256 1644 y Fy(is)f(equal)h(to)g
3983 Fp(x)482 1650 y Fo(2)514 1644 y Fy(when)g Fq(/=v)f Fy(is)h(called)f
3984 (then)i Fq(/=v)e Fy(creates)j(and)e(returns)h(a)e(new)i(b)q(o)q(olean)e
3985 (v)n(ariable)g Fp(v)q Fy(.)19 b(The)75 1693 y(v)n(alues)c(of)f
3986 Fp(x)272 1699 y Fo(1)291 1693 y Fy(,)g Fp(x)341 1699
3987 y Fo(2)375 1693 y Fy(and)h Fp(v)h Fy(are)g(m)o(utually)d(constrained)j
3988 (via)e(noticers)i(so)f(that)g Fp(v)i Fy(is)e(equal)g(to)g
3989 Fq(t)g Fy(if)f(and)h(only)f(if)h Fp(x)1889 1699 y Fo(1)1922
3990 1693 y Fy(is)75 1743 y(kno)o(wn)h(not)g(to)g(b)q(e)g(equal)g(to)g
3991 Fp(x)585 1749 y Fo(2)620 1743 y Fy(and)f Fp(v)j Fy(is)e(equal)g(to)g
3992 Fq(nil)f Fy(if)h(and)g(only)f(if)g Fp(x)1311 1749 y Fo(1)1346
3993 1743 y Fy(is)g(kno)o(wn)h(to)g(b)q(e)h(equal)f(to)g Fp(x)1824
3994 1749 y Fo(2)1842 1743 y Fy(.)25 b(If)15 b(it)75 1793
3995 y(later)h(b)q(ecomes)h(kno)o(wn)f(that)h Fp(x)593 1799
3996 y Fo(1)627 1793 y Fy(is)g(not)f(equal)g(to)g Fp(x)937
3997 1799 y Fo(2)956 1793 y Fy(,)g(noticers)h(attac)o(hed)g(to)g
3998 Fp(x)1391 1799 y Fo(1)1425 1793 y Fy(and)g Fp(x)1533
3999 1799 y Fo(2)1567 1793 y Fy(restrict)h Fp(v)g Fy(to)f(equal)f
4000 Fq(t)p Fy(.)75 1843 y(Lik)o(ewise,)f(if)f(it)h(later)g(b)q(ecomes)g
4001 (kno)o(wn)g(that)g Fp(x)849 1849 y Fo(1)882 1843 y Fy(is)g(equal)g(to)g
4002 Fp(x)1112 1849 y Fo(2)1130 1843 y Fy(,)g(noticers)h(attac)o(hed)f(to)g
4003 Fp(x)1559 1849 y Fo(1)1593 1843 y Fy(and)g Fp(x)1699
4004 1849 y Fo(2)1732 1843 y Fy(restrict)h Fp(v)h Fy(to)75
4005 1893 y(equal)e Fq(nil)p Fy(.)24 b(F)m(urthermore,)15
4006 b(if)g Fp(v)j Fy(ev)o(er)e(b)q(ecomes)g(kno)o(wn)g(to)f(equal)h
4007 Fq(t)f Fy(then)i(a)e(noticer)i(attac)o(hed)f(to)g Fp(v)h
4008 Fy(restricts)h Fp(x)1932 1899 y Fo(1)75 1942 y Fy(to)f(not)g(b)q(e)h
4009 (equal)f(to)g Fp(x)457 1948 y Fo(2)476 1942 y Fy(.)28
4010 b(Lik)o(ewise,)18 b(if)e Fp(v)j Fy(ev)o(er)f(b)q(ecomes)g(kno)o(wn)f
4011 (to)g(equal)g Fq(nil)f Fy(then)i(a)f(noticer)h(attac)o(hed)g(to)f
4012 Fp(v)75 1992 y Fy(restricts)g Fp(x)260 1998 y Fo(1)294
4013 1992 y Fy(to)e(b)q(e)g(equal)g(to)g Fp(x)590 1998 y Fo(2)608
4014 1992 y Fy(.)22 b(Restricting)16 b(t)o(w)o(o)e(v)n(alues)h
4015 Fp(x)1085 1998 y Fo(1)1119 1992 y Fy(and)g Fp(x)1225
4016 1998 y Fo(2)1258 1992 y Fy(to)g(b)q(e)h(equal)f(is)g(p)q(erformed)g(b)o
4017 (y)f(attac)o(hing)75 2042 y(noticers)g(to)e Fp(x)302
4018 2048 y Fo(1)333 2042 y Fy(and)h Fp(x)437 2048 y Fo(2)455
4019 2042 y Fy(.)18 b(These)c(noticers)g(con)o(tin)o(ually)d(restrict)j(the)
4020 g(domains)d(of)h Fp(x)1416 2048 y Fo(1)1447 2042 y Fy(and)g
4021 Fp(x)1550 2048 y Fo(2)1582 2042 y Fy(to)g(b)q(e)i(equiv)n(alen)o(t)e
4022 (sets)75 2092 y(\(using)j(the)i Fv(Common)f(Lisp)g Fy(function)f
4023 Fq(=)g Fy(as)h(a)f(test)i(function\))e(as)h(their)g(domains)d(are)j
4024 (restricted.)26 b(F)m(urthermore,)75 2142 y(if)17 b Fp(x)141
4025 2148 y Fo(1)177 2142 y Fy(is)h(kno)o(wn)f(to)h(b)q(e)g(real)g(then)g
4026 (the)g(noticer)h(attac)o(hed)f(to)g Fp(x)1126 2148 y
4027 Fo(2)1162 2142 y Fy(con)o(tin)o(ually)e(restrict)j(the)g(upp)q(er)g(b)q
4028 (ound)e(of)h Fp(x)1932 2148 y Fo(1)75 2191 y Fy(to)d(b)q(e)h(no)g
4029 (higher)f(than)h(the)g(upp)q(er)g(b)q(ound)g(of)f Fp(x)868
4030 2197 y Fo(2)902 2191 y Fy(and)g(the)h(lo)o(w)o(er)f(b)q(ound)h(of)f
4031 Fp(x)1370 2197 y Fo(1)1404 2191 y Fy(to)g(b)q(e)h(no)g(lo)o(w)o(er)f
4032 (than)g(the)h(lo)o(w)o(er)75 2241 y(b)q(ound)f(of)g Fp(x)277
4033 2247 y Fo(2)295 2241 y Fy(.)21 b(The)16 b(noticer)f(of)g
4034 Fp(x)627 2247 y Fo(2)660 2241 y Fy(p)q(erforms)f(a)h(symmetric)e
4035 (restriction)j(on)f(the)h(b)q(ounds)f(of)g Fp(x)1623
4036 2247 y Fo(1)1656 2241 y Fy(if)f(it)h(is)g(kno)o(wn)f(to)75
4037 2291 y(b)q(e)h(real.)k(Restricting)c(t)o(w)o(o)f(v)n(alues)g
4038 Fp(x)671 2297 y Fo(1)704 2291 y Fy(and)g Fp(x)809 2297
4039 y Fo(2)842 2291 y Fy(to)g(not)g(b)q(e)h(equal)f(is)g(also)g(p)q
4040 (erformed)g(b)o(y)g(attac)o(hing)g(noticers)h(to)g Fp(x)1932
4041 2297 y Fo(1)75 2341 y Fy(and)d Fp(x)178 2347 y Fo(2)197
4042 2341 y Fy(.)17 b(These)d(noticers)f(ho)o(w)o(ev)o(er,)g(do)f(not)g
4043 (restrict)i(the)f(domains)e(or)h(ranges)h(of)f Fp(x)1418
4044 2347 y Fo(1)1449 2341 y Fy(or)g Fp(x)1522 2347 y Fo(2)1540
4045 2341 y Fy(.)18 b(They)13 b(simply)d(monitor)75 2391 y(their)15
4046 b(con)o(tin)o(ually)e(restrictions)j(and)e(fail)f(when)i(an)o(y)f
4047 (assertion)i(causes)g Fp(x)1272 2397 y Fo(1)1305 2391
4048 y Fy(to)e(b)q(e)h(kno)o(wn)f(to)h(b)q(e)g(equal)f(to)h
4049 Fp(x)1840 2397 y Fo(2)1858 2391 y Fy(.)20 b(See)75 2441
4050 y(section)15 b(6)e(for)h(a)f(discussion)i(of)e(v)n(ariable)g(upp)q(er)i
4051 (and)e(lo)o(w)o(er)h(b)q(ounds,)g(and)g(domains.)992
4052 2723 y(22)p eop
4053 %%Page: 23 23
4054 23 22 bop 75 195 a Fq(real-abovev)20 b Fu(low)1109 b
4055 Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75 342
4056 y(Returns)j(a)e(real)h(v)n(ariable)e(whose)j(v)n(alue)e(is)h
4057 (constrained)g(to)g(b)q(e)g(greater)h(than)f(or)f(equal)h(to)g
4058 Fu(low)p Fy(.)23 b(The)16 b(expression)75 392 y Fq(\(real-above)k
4059 Fu(low)p Fq(\))13 b Fy(is)g(an)h(abbreviation)f(for:)204
4060 464 y Fq(\(let)21 b(\(\()p Fp(v)i Fq(\(make-variable\)\))o(\))225
4061 514 y(\(assert!)e(\(realv)f Fp(v)q Fq(\)\))225 564 y(\(assert!)h(\(>=v)
4062 g Fp(v)i Fu(low)p Fq(\)\))225 614 y Fp(v)q Fq(\))75 880
4063 y(real-belowv)d Fu(high)1095 b Fy([)p Fu(Deterministic)14
4064 b(F)m(unction)p Fy(])75 1027 y(Returns)19 b(a)f(real)h(v)n(ariable)e
4065 (whose)i(v)n(alue)f(is)g(constrained)h(to)f(b)q(e)h(less)g(than)g(or)f
4066 (equal)g(to)g Fu(high)p Fy(.)32 b(The)19 b(expression)75
4067 1077 y Fq(\(real-belowv)g Fu(high)p Fq(\))14 b Fy(is)g(an)g
4068 (abbreviation)f(for:)204 1154 y Fq(\(let)21 b(\(\()p
4069 Fp(v)i Fq(\(make-variable\)\))o(\))225 1204 y(\(assert!)e(\(realv)f
4070 Fp(v)q Fq(\)\))225 1254 y(\(assert!)h(\(<=v)g Fp(v)i
4071 Fu(high)p Fq(\)\))225 1304 y Fp(v)q Fq(\))75 1570 y(real-betweenv)c
4072 Fu(low)i(high)971 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p
4073 Fy(])75 1717 y(Returns)19 b(a)g(real)f(v)n(ariable)f(whose)j(v)n(alue)d
4074 (is)i(constrained)g(to)f(b)q(e)i(greater)f(than)g(or)f(equal)g(to)h
4075 Fu(low)e Fy(and)i(less)g(than)75 1767 y(or)g(equal)g(to)f
4076 Fu(high)p Fy(.)34 b(If)18 b(the)i(resulting)f(real)g(v)n(ariable)f(is)h
4077 (b)q(ound,)g(its)g(v)n(alue)g(is)f(returned)j(instead.)34
4078 b(F)m(ails)17 b(if)i(it)f(is)75 1817 y(kno)o(wn)d(that)g
4079 Fu(low)g Fy(is)g(greater)i(than)e Fu(high)h Fy(at)f(the)h(time)e(of)h
4080 (call.)21 b(The)16 b(expression)h Fq(\(real-betweenv)i
4081 Fu(low)i(high)p Fq(\))15 b Fy(is)75 1867 y(an)f(abbreviation)f(for:)204
4082 1936 y Fq(\(let)21 b(\(\()p Fp(v)i Fq(\(make-variable\)\))o(\))225
4083 1985 y(\(assert!)e(\(realv)f Fp(v)q Fq(\)\))225 2035
4084 y(\(assert!)h(\(>=v)g Fp(v)i Fu(low)p Fq(\)\))225 2085
4085 y(\(assert!)e(\(<=v)g Fp(v)i Fu(high)p Fq(\)\))225 2135
4086 y(\(value-of)d Fp(v)q Fq(\)\))75 2402 y(integer-abovev)f
4087 Fu(low)1044 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p
4088 Fy(])75 2549 y(Returns)e(an)f(in)o(teger)h(v)n(ariable)e(whose)i(v)n
4089 (alue)e(is)h(constrained)h(to)f(b)q(e)h(greater)g(than)g(or)f(equal)g
4090 (to)g Fu(low)p Fy(.)16 b(The)c(expression)75 2599 y Fq(\(integer-above)
4091 19 b Fu(low)p Fq(\))13 b Fy(is)h(an)f(abbreviation)g(for:)992
4092 2723 y(23)p eop
4093 %%Page: 24 24
4094 24 23 bop 204 188 a Fq(\(let)21 b(\(\()p Fp(v)i Fq(\(make-variable\)\))
4095 o(\))225 238 y(\(assert!)e(\(integerv)f Fp(v)q Fq(\)\))225
4096 288 y(\(assert!)h(\(>=v)g Fp(v)i Fu(low)p Fq(\)\))225
4097 338 y Fp(v)q Fq(\))75 611 y(integer-belowv)c Fu(high)1030
4098 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
4099 762 y(Returns)h(an)f(in)o(teger)h(v)n(ariable)e(whose)h(v)n(alue)g(is)g
4100 (constrained)h(to)f(b)q(e)h(less)g(than)f(or)g(equal)g(to)g
4101 Fu(high)p Fy(.)19 b(The)c(expression)75 812 y Fq(\(integer-belowv)k
4102 Fu(high)p Fq(\))14 b Fy(is)f(an)h(abbreviation)f(for:)204
4103 893 y Fq(\(let)21 b(\(\()p Fp(v)i Fq(\(make-variable\)\))o(\))225
4104 943 y(\(assert!)e(\(integerv)f Fp(v)q Fq(\)\))225 993
4105 y(\(assert!)h(\(<=v)g Fp(v)i Fu(high)p Fq(\)\))225 1043
4106 y Fp(v)q Fq(\))75 1316 y(integer-betweenv)18 b Fu(low)k(high)905
4107 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
4108 1467 y(Returns)21 b(an)e(in)o(teger)h(v)n(ariable)f(whose)i(v)n(alue)e
4109 (is)g(constrained)i(to)f(b)q(e)g(greater)h(than)f(or)f(equal)h(to)f
4110 Fu(low)h Fy(and)f(less)75 1517 y(than)f(or)g(equal)f(to)h
4111 Fu(high)p Fy(.)30 b(If)18 b(the)h(resulting)f(in)o(teger)g(v)n(ariable)
4112 f(is)h(b)q(ound,)g(its)g(v)n(alue)f(is)h(returned)i(instead.)30
4113 b(F)m(ails)75 1567 y(if)21 b(it)g(is)g(kno)o(wn)g(that)h(there)g(is)g
4114 (no)f(in)o(teger)h(b)q(et)o(w)o(een)h Fu(low)e Fy(and)g
4115 Fu(high)h Fy(at)f(the)h(time)e(of)h(call.)40 b(The)22
4116 b(expression)75 1616 y Fq(\(integer-betweenv)c Fu(low)j(high)p
4117 Fq(\))14 b Fy(is)g(an)g(abbreviation)f(for:)204 1697
4118 y Fq(\(let)21 b(\(\()p Fp(v)i Fq(\(make-variable\)\))o(\))225
4119 1747 y(\(assert!)e(\(integerv)f Fp(v)q Fq(\)\))225 1797
4120 y(\(assert!)h(\(>=v)g Fp(v)i Fu(low)p Fq(\)\))225 1847
4121 y(\(assert!)e(\(<=v)g Fp(v)i Fu(high)p Fq(\)\))225 1897
4122 y(\(value-of)d Fp(v)q Fq(\)\))75 2170 y(member-ofv)g
4123 Fu(se)n(quenc)n(e)1038 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p
4124 Fy(])75 2321 y(Returns)h(a)f(v)n(ariable)g(whose)h(v)n(alue)e(is)i
4125 (restricted)h(to)e(b)q(e)h(a)g(mem)o(b)q(er)d(of)i Fu(se)n(quenc)n(e)p
4126 Fy(.)21 b(If)14 b Fu(se)n(quenc)n(e)h Fy(is)f(a)g(singleton)g(and)75
4127 2371 y(the)k(resulting)f(v)n(ariable)f(w)o(ould)h(b)q(e)h(b)q(ound,)g
4128 (its)f(v)n(alue)f(is)i(returned)h(instead.)28 b(F)m(ails)16
4129 b(if)h Fu(se)n(quenc)n(e)h Fy(is)f(empt)o(y)m(.)27 b(The)75
4130 2421 y(expression)15 b Fq(\(member-ofv)20 b Fu(se)n(quenc)n(e)p
4131 Fq(\))14 b Fy(is)g(an)f(abbreviation)h(for:)204 2501
4132 y Fq(\(let)21 b(\(\()p Fp(v)i Fq(\(make-variable\)\))o(\))225
4133 2550 y(\(assert!)e(\(memberv)f Fp(v)j Fu(se)n(quenc)n(e)p
4134 Fq(\)\))225 2600 y(\(value-of)d Fp(v)q Fq(\)\))992 2723
4135 y Fy(24)p eop
4136 %%Page: 25 25
4137 25 24 bop 75 195 a Fq(notv)21 b Fp(x)1298 b Fy([)p Fu(Deterministic)14
4138 b(F)m(unction)p Fy(])75 346 y(Restricts)k Fp(x)e Fy(to)g(b)q(e)i(b)q(o)
4139 q(olean)e(\(see)i(section)f(8\).)26 b(Returns)17 b Fq(nil)f
4140 Fy(if)g Fp(x)g Fy(is)g(kno)o(wn)g(to)h(equal)f Fq(t)g
4141 Fy(after)h(this)g(restriction.)75 396 y(Returns)d Fq(t)g
4142 Fy(if)f Fp(x)g Fy(is)g(kno)o(wn)h(to)f(equal)g Fq(nil)g
4143 Fy(after)h(this)g(restriction.)19 b(If)13 b(it)g(is)h(not)f(kno)o(wn)h
4144 (whether)h Fp(x)e Fy(equals)h Fq(t)f Fy(or)h Fq(nil)75
4145 446 y Fy(then)f Fq(notv)e Fy(creates)j(and)f(returns)g(a)f(new)h(b)q(o)
4146 q(olean)f(v)n(ariable)f Fp(v)q Fy(.)18 b(The)13 b(v)n(alues)f(of)g
4147 Fp(x)g Fy(and)g Fp(v)i Fy(are)e(m)o(utually)e(constrained)75
4148 496 y(via)h(noticers)i(so)f(that)g Fp(v)h Fy(is)f(equal)g(to)f
4149 Fq(t)h Fy(if)f(and)h(only)f(if)g Fp(x)h Fy(is)f(kno)o(wn)h(to)g(equal)f
4150 Fq(nil)g Fy(and)h Fp(v)i Fy(is)d(equal)h(to)g Fq(nil)f
4151 Fy(if)g(and)h(only)75 546 y(if)j Fp(x)g Fy(is)g(kno)o(wn)g(to)h(equal)f
4152 Fq(t)p Fy(.)22 b(If)16 b Fp(x)f Fy(later)g(b)q(ecomes)h(kno)o(wn)f(to)g
4153 (equal)h Fq(t)f Fy(then)h(a)f(noticer)h(attac)o(hed)g(to)g
4154 Fp(x)f Fy(restricts)i Fp(v)75 595 y Fy(to)e(equal)g Fq(nil)p
4155 Fy(.)21 b(Lik)o(ewise,)15 b(if)f Fp(x)h Fy(later)g(b)q(ecomes)g(kno)o
4156 (wn)g(to)g(equal)f Fq(nil)h Fy(then)h(a)e(noticer)i(attac)o(hed)g(to)f
4157 Fp(x)f Fy(restricts)j Fp(v)75 645 y Fy(to)f(equal)f Fq(t)p
4158 Fy(.)24 b(F)m(urthermore,)15 b(if)g Fp(v)j Fy(later)e(b)q(ecomes)g(kno)
4159 o(wn)f(to)h(equal)f Fq(t)h Fy(then)g(a)g(noticer)g(attac)o(hed)h(to)e
4160 Fp(v)j Fy(restricts)f Fp(x)75 695 y Fy(to)e(equal)g Fq(nil)p
4161 Fy(.)21 b(Lik)o(ewise,)15 b(if)f Fp(v)j Fy(later)e(b)q(ecomes)h(kno)o
4162 (wn)f(to)g(equal)g Fq(nil)f Fy(then)i(a)f(noticer)h(attac)o(hed)f(to)g
4163 Fp(v)i Fy(restricts)g Fp(x)75 745 y Fy(to)d(equal)f Fq(t)p
4164 Fy(.)18 b(Note)c(that)g Fq(notv)f Fy(di\013ers)i(from)d(the)j
4165 Fv(Common)h(Lisp)e Fy(primitiv)o(e)e Fq(not)h Fy(in)g(that)h(while)g
4166 Fq(not)f Fy(accepts)i(an)o(y)75 795 y Fv(Common)i(Lisp)e
4167 Fy(ob)r(ject)h(as)f(input,)g(treating)g(an)o(y)g(non-)p
4168 Fq(nil)f Fy(v)n(alue)h(as)g(true,)h Fq(notv)e Fy(restricts)j(is)e
4169 (argumen)o(t)f(to)h(b)q(e)h(a)75 845 y(b)q(o)q(olean)e(v)n(alue,)e
4170 (failing)g(if)h(its)h(argumen)o(t)f(cannot)h(b)q(e)g(restricted)i(to)e
4171 (b)q(e)g(b)q(o)q(olean.)75 1086 y Fq(andv)21 b Fp(x)208
4172 1071 y Fi(\003)1506 1086 y Fy([)p Fu(Deterministic)14
4173 b(F)m(unction)p Fy(])75 1237 y(T)m(ak)o(es)k(zero)g(or)g(more)e
4174 (argumen)o(ts.)29 b(Restricts)19 b(eac)o(h)f(argumen)o(t)f(to)g(b)q(e)i
4175 (b)q(o)q(olean)e(\(see)i(section)f(8\).)30 b(Returns)18
4176 b Fq(t)g Fy(if)75 1287 y(called)f(with)g(no)g(argumen)o(ts.)27
4177 b(Returns)18 b Fq(nil)e Fy(if)h(an)o(y)g(argumen)o(t)f(is)h(kno)o(wn)f
4178 (to)h(equal)g Fq(nil)g Fy(after)g(this)h(restriction.)75
4179 1337 y(Returns)c Fq(t)f Fy(if)g(all)f(argumen)o(ts)g(are)i(kno)o(wn)f
4180 (to)g(equal)g Fq(t)g Fy(after)g(this)h(restriction.)19
4181 b(If)12 b(neither)j(of)d(the)i(ab)q(o)o(v)o(e)f(conditions)75
4182 1387 y(hold)g(then)h Fq(andv)e Fy(creates)j(and)e(returns)i(a)e(new)h
4183 (b)q(o)q(olean)f(v)n(ariable)f Fp(v)q Fy(.)19 b(The)13
4184 b(v)n(alues)g(of)g(the)h(argumen)o(ts)f Fp(x)1753 1393
4185 y Fh(i)1780 1387 y Fy(and)g Fp(v)i Fy(are)75 1436 y(m)o(utually)10
4186 b(constrained)k(via)e(noticers)h(so)g(that)g Fp(v)h Fy(is)f(equal)f(to)
4187 h Fq(t)g Fy(if)e(and)i(only)f(if)g(all)f(of)i(the)g(argumen)o(ts)f
4188 Fp(x)1738 1442 y Fh(i)1764 1436 y Fy(are)h(kno)o(wn)75
4189 1486 y(to)j(equal)g Fq(t)g Fy(and)g Fp(v)i Fy(is)e(equal)f(to)h
4190 Fq(nil)g Fy(if)f(and)h(only)g(if)f(some)g(argumen)o(t)g
4191 Fp(x)1264 1492 y Fh(i)1294 1486 y Fy(is)h(kno)o(wn)g(to)g(equal)g
4192 Fq(nil)p Fy(.)24 b(If)16 b(all)f(of)g(the)75 1536 y(argumen)o(ts)f
4193 Fp(x)302 1542 y Fh(i)331 1536 y Fy(later)h(b)q(ecomes)h(kno)o(wn)e(to)h
4194 (equal)g Fq(t)g Fy(then)h(noticers)g(attac)o(hed)g(to)f(the)h(argumen)o
4195 (ts)e Fp(x)1703 1542 y Fh(i)1732 1536 y Fy(restrict)i
4196 Fp(v)h Fy(to)75 1586 y(equal)c Fq(t)p Fy(.)18 b(Lik)o(ewise,)13
4197 b(if)g(some)g(argumen)o(t)g Fp(x)766 1592 y Fh(i)793
4198 1586 y Fy(later)h(b)q(ecomes)g(kno)o(wn)f(to)h(equal)f
4199 Fq(nil)g Fy(then)i(a)e(noticer)h(attac)o(hed)h(to)e Fp(x)1936
4200 1592 y Fh(i)75 1636 y Fy(restricts)18 b Fp(v)g Fy(to)e(equal)f
4201 Fq(nil)p Fy(.)24 b(F)m(urthermore,)16 b(if)f Fp(v)j Fy(later)e(b)q
4202 (ecomes)g(kno)o(wn)g(to)g(equal)g Fq(nil)f Fy(then)i(a)f(noticer)g
4203 (attac)o(hed)75 1686 y(to)e Fp(v)i Fy(restricts)g(all)d(of)g(the)i
4204 (argumen)o(ts)e Fp(x)725 1692 y Fh(i)753 1686 y Fy(to)h(equal)g
4205 Fq(nil)p Fy(.)k Fv(Screamer)c Fy(implemen)o(ts)e(one)i(further)h
4206 (optimization.)h(If)75 1735 y(when)c Fq(andv)f Fy(is)g(called,)g(all)f
4207 (of)h(the)h(argumen)o(ts)f(except)i(for)e(one,)h(sa)o(y)f
4208 Fp(x)1183 1741 y Fh(i)1196 1735 y Fy(,)h(are)g(kno)o(wn)f(to)g(equal)g
4209 Fq(t)g Fy(and)h(it)f(is)g(not)g(kno)o(wn)75 1785 y(whether)17
4210 b Fp(x)260 1791 y Fh(i)290 1785 y Fy(equals)f Fq(t)g
4211 Fy(or)g Fq(nil)f Fy(then)i Fq(andv)e Fy(returns)i(the)g(argumen)o(t)e
4212 Fp(x)1221 1791 y Fh(i)1250 1785 y Fy(directly)i(as)f(the)g(result.)25
4213 b(Note)17 b(that)f Fq(andv)75 1835 y Fy(di\013ers)g(from)e(the)j
4214 Fv(Common)f(Lisp)g Fy(primitiv)o(e)d Fq(and)i Fy(in)g(t)o(w)o(o)g(imp)q
4215 (ortan)o(t)f(w)o(a)o(ys.)23 b(First,)16 b(while)f Fq(and)g
4216 Fy(is)g(a)h(macro)e(and)75 1885 y(ev)n(aluates)i(its)f(argumen)o(ts)g
4217 (from)f(left)h(to)h(righ)o(t)f(halting)f(that)i(ev)n(aluation)e(when)i
4218 (an)g(argumen)o(t)e(ev)n(aluates)i(to)f Fq(nil)p Fy(,)75
4219 1935 y Fq(andv)e Fy(is)h(a)f(function)h(whic)o(h)g(alw)o(a)o(ys)f(ev)n
4220 (aluates)h(all)e(of)i(its)g(argumen)o(ts.)j(Since)d Fq(andv)f
4221 Fy(is)h(a)g(function)f(ho)o(w)o(ev)o(er,)h(it)g(can)75
4222 1984 y(b)q(e)h(funcalled)e(and)h(mapp)q(ed,)f(something)f(whic)o(h)i
4223 (cannot)g(b)q(e)h(done)f(with)g Fq(and)f Fy(since)i(it)e(is)h(a)g
4224 (macro.)j(Second,)d(while)75 2034 y Fq(and)h Fy(accepts)j(an)o(y)d
4225 Fv(Common)h(Lisp)g Fy(ob)r(ject)h(as)f(input,)f(treating)h(an)o(y)g
4226 (non-)p Fq(nil)f Fy(v)n(alue)g(as)h(true,)g Fq(andv)f
4227 Fy(restricts)j(its)75 2084 y(argumen)o(ts)13 b(to)h(b)q(e)g(b)q(o)q
4228 (olean)g(v)n(alues,)f(failing)f(if)h(an)o(y)g(argumen)o(t)g(cannot)h(b)
4229 q(e)h(restricted)g(to)f(b)q(e)h(b)q(o)q(olean.)75 2325
4230 y Fq(orv)21 b Fp(x)186 2310 y Fi(\003)1506 2325 y Fy([)p
4231 Fu(Deterministic)14 b(F)m(unction)p Fy(])75 2477 y(T)m(ak)o(es)j(zero)i
4232 (or)e(more)g(argumen)o(ts.)28 b(Restricts)19 b(eac)o(h)f(argumen)o(t)f
4233 (to)g(b)q(e)i(b)q(o)q(olean)e(\(see)i(section)f(8\).)29
4234 b(Returns)19 b Fq(nil)75 2526 y Fy(if)g(called)g(with)g(no)h(argumen)o
4235 (ts.)34 b(Returns)21 b Fq(t)e Fy(if)g(an)o(y)g(argumen)o(t)f(is)i(kno)o
4236 (wn)f(to)g(equal)h Fq(t)f Fy(after)h(this)g(restriction.)75
4237 2576 y(Returns)g Fq(nil)f Fy(if)f(all)g(argumen)o(ts)g(are)i(kno)o(wn)f
4238 (to)g(equal)g Fq(nil)f Fy(after)i(this)f(restriction.)35
4239 b(If)19 b(neither)h(of)e(the)i(ab)q(o)o(v)o(e)992 2723
4240 y(25)p eop
4241 %%Page: 26 26
4242 26 25 bop 75 195 a Fy(conditions)13 b(hold)h(then)g Fq(orv)f
4243 Fy(creates)j(and)d(returns)j(a)d(new)h(b)q(o)q(olean)g(v)n(ariable)f
4244 Fp(v)q Fy(.)18 b(The)c(v)n(alues)g(of)f(the)h(argumen)o(ts)f
4245 Fp(x)1936 201 y Fh(i)75 245 y Fy(and)e Fp(v)i Fy(are)f(m)o(utually)d
4246 (constrained)k(via)d(noticers)j(so)e(that)h Fp(v)h Fy(is)e(equal)h(to)f
4247 Fq(nil)g Fy(if)g(and)g(only)g(if)f(all)h(of)g(the)h(argumen)o(ts)e
4248 Fp(x)1936 251 y Fh(i)75 295 y Fy(are)j(kno)o(wn)g(to)f(equal)h
4249 Fq(nil)f Fy(and)h Fp(v)h Fy(is)f(equal)f(to)h Fq(t)f
4250 Fy(if)g(and)h(only)f(if)g(some)g(argumen)o(t)g Fp(x)1413
4251 301 y Fh(i)1439 295 y Fy(is)h(kno)o(wn)f(to)h(equal)f
4252 Fq(t)p Fy(.)18 b(If)12 b(all)g(of)75 345 y(the)g(argumen)o(ts)f
4253 Fp(x)368 351 y Fh(i)392 345 y Fy(later)h(b)q(ecomes)g(kno)o(wn)e(to)i
4254 (equal)f Fq(nil)f Fy(then)i(noticers)h(attac)o(hed)f(to)f(the)h
4255 (argumen)o(ts)f Fp(x)1763 351 y Fh(i)1787 345 y Fy(restrict)i
4256 Fp(v)75 394 y Fy(to)e(equal)f Fq(nil)p Fy(.)17 b(Lik)o(ewise,)11
4257 b(if)f(some)g(argumen)o(t)g Fp(x)843 400 y Fh(i)867 394
4258 y Fy(later)h(b)q(ecomes)h(kno)o(wn)e(to)h(equal)g Fq(t)f
4259 Fy(then)i(a)f(noticer)g(attac)o(hed)h(to)e Fp(x)1936
4260 400 y Fh(i)75 444 y Fy(restricts)18 b Fp(v)f Fy(to)f(equal)g
4261 Fq(t)p Fy(.)23 b(F)m(urthermore,)16 b(if)f Fp(v)j Fy(later)e(b)q
4262 (ecomes)g(kno)o(wn)f(to)h(equal)g Fq(t)f Fy(then)i(a)f(noticer)g(attac)
4263 o(hed)h(to)e Fp(v)75 494 y Fy(restricts)i(all)d(of)h(the)h(argumen)o
4264 (ts)e Fp(x)644 500 y Fh(i)673 494 y Fy(to)h(equal)g Fq(t)p
4265 Fy(.)22 b Fv(Screamer)16 b Fy(implem)o(en)o(ts)e(one)h(further)h
4266 (optimization.)k(If)14 b(when)75 544 y Fq(orv)h Fy(is)g(called,)g(all)g
4267 (of)f(the)i(argumen)o(ts)f(except)i(for)e(one,)h(sa)o(y)f
4268 Fp(x)1099 550 y Fh(i)1113 544 y Fy(,)g(are)h(kno)o(wn)f(to)g(equal)g
4269 Fq(nil)g Fy(and)h(it)f(is)g(not)g(kno)o(wn)75 594 y(whether)e
4270 Fp(x)256 600 y Fh(i)281 594 y Fy(equals)f Fq(t)g Fy(or)g
4271 Fq(nil)f Fy(then)h Fq(orv)f Fy(returns)j(the)e(argumen)o(t)f
4272 Fp(x)1153 600 y Fh(i)1178 594 y Fy(directly)h(as)g(the)h(result.)18
4273 b(Note)12 b(that)g Fq(orv)f Fy(di\013ers)75 643 y(from)f(the)i
4274 Fv(Common)k(Lisp)c Fy(primitiv)o(e)d Fq(or)i Fy(in)g(t)o(w)o(o)g(imp)q
4275 (ortan)o(t)f(w)o(a)o(ys.)17 b(First,)12 b(while)f Fq(or)g
4276 Fy(is)g(a)h(macro)e(and)h(ev)n(aluates)h(its)75 693 y(argumen)o(ts)g
4277 (from)g(left)h(to)g(righ)o(t)f(halting)g(that)i(ev)n(aluation)d(when)j
4278 (an)f(argumen)o(t)f(ev)n(aluates)h(to)g Fq(t)p Fy(,)g
4279 Fq(orv)f Fy(is)h(a)g(function)75 743 y(whic)o(h)j(alw)o(a)o(ys)g(ev)n
4280 (aluates)g(all)f(of)h(its)h(argumen)o(ts.)24 b(Since)17
4281 b Fq(orv)f Fy(is)g(a)g(function)h(ho)o(w)o(ev)o(er,)f(it)h(can)f(b)q(e)
4282 h(funcalled)f(and)75 793 y(mapp)q(ed,)g(something)g(whic)o(h)g(cannot)h
4283 (b)q(e)g(done)h(with)e Fq(or)g Fy(since)i(it)e(is)h(a)f(macro.)26
4284 b(Second,)17 b(while)g Fq(or)f Fy(accepts)i(an)o(y)75
4285 843 y Fv(Common)f(Lisp)f Fy(ob)r(ject)i(as)f(input,)g(treating)g(an)o
4286 (y)f(non-)p Fq(nil)g Fy(v)n(alue)g(as)h(true,)h Fq(orv)e
4287 Fy(restricts)j(its)e(argumen)o(ts)f(to)g(b)q(e)75 892
4288 y(b)q(o)q(olean)e(v)n(alues,)f(failing)e(if)i(an)o(y)h(argumen)o(t)f
4289 (cannot)h(b)q(e)g(restricted)i(to)e(b)q(e)g(b)q(o)q(olean.)75
4290 1134 y Fq(+v)21 b Fp(x)164 1119 y Fi(\003)1506 1134 y
4291 Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75 1477
4292 y Fq(-v)21 b Fp(x)164 1462 y Fo(+)1506 1477 y Fy([)p
4293 Fu(Deterministic)14 b(F)m(unction)p Fy(])75 1819 y Fq(*v)21
4294 b Fp(x)164 1804 y Fi(\003)1506 1819 y Fy([)p Fu(Deterministic)14
4295 b(F)m(unction)p Fy(])75 2162 y Fq(/v)21 b Fp(x)164 2147
4296 y Fo(+)1506 2162 y Fy([)p Fu(Deterministic)14 b(F)m(unction)p
4297 Fy(])75 2505 y Fq(minv)21 b Fp(x)208 2490 y Fo(+)1506
4298 2505 y Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])992
4299 2723 y(26)p eop
4300 %%Page: 27 27
4301 27 26 bop 75 195 a Fq(maxv)21 b Fp(x)208 180 y Fo(+)1506
4302 195 y Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
4303 538 y Fq(funcallv)20 b Fu(function)i Fp(x)465 523 y Fi(\003)1506
4304 538 y Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
4305 689 y(The)h(argumen)o(t)f Fu(function)h Fy(m)o(ust)f(b)q(e)i(b)q(ound)e
4306 (to)h(a)g(deterministic)f Fv(Common)j(Lisp)d Fy(function)h(ob)r(ject.)
4307 22 b(Returns)15 b(the)75 739 y(result)c(of)f(funcalling)f
4308 Fu(function)i Fy(on)g(the)g(dereferenced)j(v)n(alues)c(of)g(the)h
4309 (argumen)o(ts)f Fp(x)1391 745 y Fh(i)1415 739 y Fy(if)g(all)f(of)h(the)
4310 i Fp(x)1641 745 y Fh(i)1665 739 y Fy(are)f(b)q(ound)f(when)75
4311 789 y Fq(funcallv)i Fy(is)i(called.)j(If)d(some)f(of)g(the)h(argumen)o
4312 (ts)f Fp(x)928 795 y Fh(i)955 789 y Fy(are)h(not)g(b)q(ound)g(when)g
4313 Fq(funcallv)e Fy(is)i(called)f(then)i Fq(funcallv)75
4314 839 y Fy(creates)d(and)d(returns)j(a)d(v)n(ariable)g
4315 Fp(v)q Fy(.)17 b(The)10 b(argumen)o(ts)f Fp(x)961 845
4316 y Fh(i)985 839 y Fy(and)g Fp(v)j Fy(are)e(m)o(utually)d(constrained)k
4317 (via)e(noticers)i(so)f(that)f(if)g Fp(v)75 889 y Fy(and)i(the)h
4318 (argumen)o(ts)f Fp(x)446 895 y Fh(i)471 889 y Fy(ev)o(er)i(all)d(b)q
4319 (ecome)h(b)q(ound)h(then)g Fp(v)h Fy(is)e(restricted)j(to)d(equal)g
4320 (the)h(result)h(of)e(funcalling)e Fu(function)75 938
4321 y Fy(on)14 b(the)h(dereferenced)i(v)n(alues)d(of)f(the)i(argumen)o(ts)e
4322 Fp(x)913 944 y Fh(i)927 938 y Fy(.)18 b(The)d(noticers)g(furthermore)f
4323 (implemen)o(t)d(forw)o(ard)j(c)o(hec)o(king,)75 988 y(i.e.)i(if)f(the)j
4324 (collection)e Fp(v)i Fy(com)o(bined)d(with)h(the)i(argumen)o(ts)d
4325 Fp(x)1073 994 y Fh(i)1104 988 y Fy(all)g(b)q(ecome)h(b)q(ound,)h(sa)o
4326 (v)o(e)g(one)g(v)n(ariable,)e(and)i(this)75 1038 y(one)d(v)n(ariable)e
4327 (has)h(a)g(\014nite)h(domain)d(then)j(this)f(domain)e(is)i(restricted)j
4328 (to)d(con)o(tain)g(only)f(those)i(elemen)o(ts)f(whic)o(h)h(are)75
4329 1088 y(consisten)o(t)h(with)f(the)h(v)n(alues)f(of)g(the)h(remaining)d
4330 (b)q(ound)j(v)n(ariables.)j(The)d(follo)o(wing)c(is)k(a)f(standard)g
4331 (clic)o(h)o(\023)-20 b(e)15 b(used)g(to)75 1138 y(constrain)f(the)h(v)n
4332 (ariables)e Fp(x)523 1144 y Fo(1)548 1138 y Fp(:)7 b(:)g(:)e(x)627
4333 1144 y Fh(n)664 1138 y Fy(to)13 b(ob)q(ey)i(a)e(giv)o(en)h(predicate:)
4334 179 1221 y Fq(\(assert!)20 b(\(funcallv)g(#'\(lambda)g(\()p
4335 Fp(x)857 1227 y Fo(1)882 1221 y Fp(:)7 b(:)g(:)e(x)961
4336 1227 y Fh(n)984 1221 y Fq(\))21 b Fu(pr)n(e)n(dic)n(ate)p
4337 Fq(\))g Fp(x)1253 1227 y Fo(1)1279 1221 y Fp(:)7 b(:)g(:)e(x)1358
4338 1227 y Fh(n)1380 1221 y Fq(\)\))75 1495 y(applyv)21 b
4339 Fu(function)h Fp(x)422 1480 y Fo(+)1506 1495 y Fy([)p
4340 Fu(Deterministic)14 b(F)m(unction)p Fy(])75 1646 y(The)h(argumen)o(t)f
4341 Fu(function)h Fy(m)o(ust)f(b)q(e)i(b)q(ound)e(to)h(a)g(deterministic)f
4342 Fv(Common)j(Lisp)d Fy(function)h(ob)r(ject.)22 b(Returns)15
4343 b(the)75 1696 y(result)d(of)g(applying)e Fu(function)i
4344 Fy(on)g(the)g(dereferenced)j(v)n(alues)c(of)g(the)h(argumen)o(ts)f
4345 Fp(x)1382 1702 y Fh(i)1408 1696 y Fy(if)f(all)h(of)g(the)h
4346 Fp(x)1637 1702 y Fh(i)1663 1696 y Fy(are)g(b)q(ound)f(when)75
4347 1746 y Fq(applyv)h Fy(is)h(called.)18 b(If)13 b(some)f(of)h(the)h
4348 (argumen)o(ts)e Fp(x)881 1752 y Fh(i)908 1746 y Fy(are)i(not)f(b)q
4349 (ound)g(when)h Fq(applyv)e Fy(is)h(called)g(then)h Fq(applyv)e
4350 Fy(creates)75 1796 y(and)17 b(returns)i(a)d(v)n(ariable)g
4351 Fp(v)q Fy(.)29 b(The)17 b(argumen)o(ts)f Fp(x)881 1802
4352 y Fh(i)912 1796 y Fy(and)h Fp(v)i Fy(are)e(m)o(utually)e(constrained)j
4353 (via)e(noticers)i(so)f(that)g(if)f Fp(v)75 1846 y Fy(and)c(the)i
4354 (argumen)o(ts)e Fp(x)450 1852 y Fh(i)476 1846 y Fy(ev)o(er)h(all)f(b)q
4355 (ecome)g(b)q(ound)h(then)g Fp(v)h Fy(is)f(restricted)i(to)d(equal)h
4356 (the)g(result)g(of)f(applying)f Fu(function)75 1896 y
4357 Fy(on)j(the)h(dereferenced)i(v)n(alues)d(of)f(the)i(argumen)o(ts)e
4358 Fp(x)913 1902 y Fh(i)927 1896 y Fy(.)18 b(The)d(noticers)g(furthermore)
4359 f(implemen)o(t)d(forw)o(ard)j(c)o(hec)o(king,)75 1945
4360 y(i.e.)i(if)f(the)j(collection)e Fp(v)i Fy(com)o(bined)d(with)h(the)i
4361 (argumen)o(ts)d Fp(x)1073 1951 y Fh(i)1104 1945 y Fy(all)g(b)q(ecome)h
4362 (b)q(ound,)h(sa)o(v)o(e)g(one)g(v)n(ariable,)e(and)i(this)75
4363 1995 y(one)d(v)n(ariable)e(has)h(a)g(\014nite)h(domain)d(then)j(this)f
4364 (domain)e(is)i(restricted)j(to)d(con)o(tain)g(only)f(those)i(elemen)o
4365 (ts)f(whic)o(h)h(are)75 2045 y(consisten)o(t)h(with)f(the)g(v)n(alues)g
4366 (of)f(the)h(remaining)e(b)q(ound)i(v)n(ariables.)75 2286
4367 y Fq(equalv)21 b Fp(x)g(y)1213 b Fy([)p Fu(Deterministic)14
4368 b(F)m(unction)p Fy(])75 2438 y(Returns)k Fq(t)f Fy(if)f(the)i
4369 (aggregate)f(ob)r(ject)h Fp(x)f Fy(is)g(kno)o(wn)g(to)g(equal)f(the)i
4370 (aggregate)f(ob)r(ject)h Fp(y)h Fy(when)f Fq(equalv)e
4371 Fy(is)h(called.)75 2487 y(Returns)i Fq(nil)e Fy(if)g(the)h(aggregate)g
4372 (ob)r(ject)h Fp(x)e Fy(is)h(kno)o(wn)f(not)h(to)f(equal)h(the)g
4373 (aggregate)g(ob)r(ject)h Fp(y)g Fy(when)g Fq(equalv)d
4374 Fy(is)75 2537 y(called.)28 b(If)17 b(it)g(is)g(not)g(kno)o(wn)g
4375 (whether)h(or)g(not)f Fp(x)g Fy(equals)g Fp(y)i Fy(when)f
4376 Fq(equalv)e Fy(is)h(called)g(then)h Fq(equalv)e Fy(creates)j(and)75
4377 2587 y(returns)e(a)e(b)q(o)q(olean)h(v)n(ariable)e Fp(v)q
4378 Fy(.)24 b(The)16 b(v)n(alues)f(of)g Fp(x)p Fy(,)g Fp(y)j
4379 Fy(and)d Fp(v)i Fy(are)f(m)o(utually)d(constrain)o(ts)k(via)d(noticers)
4380 j(so)f(that)f Fp(v)992 2723 y Fy(27)p eop
4381 %%Page: 28 28
4382 28 27 bop 75 195 a Fy(equals)14 b Fq(t)g Fy(if)g(and)g(only)g(if)f
4383 Fp(x)h Fy(is)g(kno)o(wn)g(to)g(equal)g Fp(y)i Fy(and)f
4384 Fp(v)g Fy(equals)g Fq(nil)e Fy(if)h(and)g(only)g(if)f
4385 Fp(x)h Fy(is)g(kno)o(wn)g(not)g(to)h(equal)f Fp(y)q Fy(.)75
4386 245 y(Noticers)19 b(are)g(attac)o(hed)f(to)g Fp(v)i Fy(as)e(w)o(ell)f
4387 (as)i(to)f(all)e(v)n(ariables)i(nested)h(in)f(b)q(oth)g(in)g
4388 Fp(x)g Fy(and)g Fp(y)q Fy(.)31 b(When)18 b(the)h(noticers)75
4389 295 y(attac)o(hed)f(to)e(v)n(ariables)h(nested)h(in)e
4390 Fp(x)h Fy(and)g Fp(y)h Fy(detect)h(that)e Fp(x)g Fy(is)f(kno)o(wn)h(to)
4391 g(equal)f Fp(y)j Fy(they)e(restrict)i Fp(v)f Fy(to)f(equal)g
4392 Fq(t)p Fy(.)75 345 y(Lik)o(ewise,)12 b(when)g(the)g(noticers)h(attac)o
4393 (hed)f(to)g(v)n(ariables)f(nested)i(in)e Fp(x)g Fy(and)h
4394 Fp(y)h Fy(detect)h(that)d Fp(x)h Fy(is)f(kno)o(wn)h(not)f(to)h(equal)f
4395 Fp(y)75 394 y Fy(they)i(restrict)i Fp(v)f Fy(to)f(equal)f
4396 Fq(nil)p Fy(.)17 b(F)m(urthermore,)c(if)f Fp(v)i Fy(later)f(b)q(ecomes)
4397 g(kno)o(wn)g(to)f(equal)h Fq(t)g Fy(then)g Fp(x)g Fy(and)f
4398 Fp(y)j Fy(are)e(uni\014ed.)75 444 y(Lik)o(ewise,)k(if)e
4399 Fp(v)j Fy(later)f(b)q(ecomes)g(kno)o(wn)f(to)g(equal)g
4400 Fq(nil)g Fy(then)h Fp(x)f Fy(and)h Fp(y)h Fy(are)f(restricted)h(to)f
4401 (not)f(b)q(e)h(equal.)26 b(This)16 b(is)75 494 y(accomplished)h(b)o(y)g
4402 (attac)o(hing)g(noticers)h(to)g(the)g(v)n(ariables)f(nested)i(in)e
4403 Fp(x)g Fy(and)g Fp(y)j Fy(whic)o(h)d(detect)i(when)f
4404 Fp(x)g Fy(b)q(ecomes)75 544 y(equal)13 b(to)g Fp(y)j
4405 Fy(and)d(fail.)j(The)e(expression)h Fq(\(known?)20 b(\(equalv)h
4406 Fp(x)g(y)q Fq(\)\))14 b Fy(is)f(analogous)f(to)i(the)g(extra-logical)e
4407 (predicate)75 594 y Fq(==)g Fy(t)o(ypically)g(a)o(v)n(ailable)f(in)h
4408 Fv(Pr)o(olog)q Fy(.)17 b(The)d(expression)g Fq(\(known?)20
4409 b(\(notv)h(\(equalv)f Fp(x)i(y)q Fq(\)\)\))13 b Fy(is)g(analogous)f(to)
4410 g(the)75 643 y(extra-logical)i(predicate)j Fq(\\=)e Fy(t)o(ypically)f
4411 (a)o(v)n(ailable)f(in)i Fv(Pr)o(olog)p Fy(.)23 b(The)16
4412 b(expression)g Fq(\(assert!)k(\(equalv)h Fp(x)g(y)q Fq(\)\))16
4413 b Fy(is)75 693 y(analogous)g(to)h Fv(Pr)o(olog)h Fy(uni\014cation.)28
4414 b(The)18 b(expression)g Fq(\(assert!)j(\(notv)f(\(equalv)h
4415 Fp(x)g(y)q Fq(\)\)\))d Fy(is)f(analogous)f(to)75 743
4416 y(the)e(disuni\014cation)f(op)q(erator)h(a)o(v)n(ailable)d(in)i
4417 Fv(Pr)o(olog-I)q(I)p Fy(.)k(See)e(section)f(9)f(for)g(a)g(discussion)h
4418 (of)f(aggregate)g(ob)r(jects.)75 984 y Fq(bound?)21 b
4419 Fp(x)1254 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p
4420 Fy(])75 1136 y(Returns)e Fq(t)f Fy(if)f Fp(x)h Fy(is)g(not)g(a)g(v)n
4421 (ariable)f(or)i(if)e Fp(x)h Fy(is)g(a)g(b)q(ound)g(v)n(ariable.)16
4422 b(Otherwise)d(returns)g Fq(nil)p Fy(.)j Fq(Bound?)10
4423 b Fy(is)h(analogous)f(to)75 1186 y(the)i(extra-logical)e(predicates)j
4424 Fq(var)e Fy(and)h Fq(nonvar)e Fy(t)o(ypically)g(a)o(v)n(ailable)f(in)i
4425 Fv(Pr)o(olog)q Fy(.)17 b(See)c(section)f(7)f(for)g(a)g(discussion)75
4426 1235 y(of)i(ho)o(w)h Fv(Screamer)g Fy(determines)g(whether)i(or)e(not)f
4427 (a)h(v)n(ariable)f(is)g(b)q(ound.)75 1477 y Fq(value-of)20
4428 b Fp(x)1211 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p
4429 Fy(])75 1628 y(Returns)21 b Fp(x)f Fy(if)g Fp(x)g Fy(is)g(not)g(a)h(v)n
4430 (ariable.)36 b(If)20 b Fp(x)g Fy(is)g(a)g(v)n(ariable)g(then)h
4431 Fq(value-of)d Fy(dereferences)24 b Fp(x)c Fy(and)g(returns)i(the)75
4432 1678 y(dereferenced)c(v)n(alue.)k(If)15 b Fp(x)g Fy(is)g(b)q(ound)g
4433 (then)h(the)g(v)n(alue)f(returned)i(will)d(not)h(b)q(e)h(a)f(v)n
4434 (ariable.)21 b(If)15 b Fp(x)g Fy(is)g(un)o(b)q(ound)g(then)75
4435 1728 y(the)g(v)n(alue)g(returned)h(will)e(b)q(e)h(a)g(v)n(ariable)e
4436 (whic)o(h)i(ma)o(y)e(b)q(e)i Fp(x)g Fy(itself)f(or)h(another)g(v)n
4437 (ariable)f(whic)o(h)h(is)f(shared)i(with)f Fp(x)p Fy(.)75
4438 1777 y(See)f(section)f(7)f(for)h(a)f(discussion)h(of)f(ho)o(w)g
4439 Fv(Screamer)i Fy(determines)f(whether)h(or)e(not)h(a)f(v)n(ariable)g
4440 (is)g(b)q(ound)h(and)f(ho)o(w)75 1827 y Fv(Screamer)j
4441 Fy(dereferences)i(v)n(ariables.)75 2069 y Fq(ground?)j
4442 Fp(x)1233 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p
4443 Fy(])75 2220 y(The)f(primitiv)o(e)d Fq(ground?)h Fy(is)i(an)f
4444 (extension)h(of)f(the)h(primitiv)o(e)d Fq(bound?)i Fy(whic)o(h)g(can)h
4445 (recursiv)o(ely)g(determine)g(whether)75 2270 y(an)g(en)o(tire)h
4446 (aggregate)f(ob)r(ject)g(is)g(b)q(ound.)18 b(Returns)c
4447 Fq(t)f Fy(if)f Fp(x)h Fy(is)g(b)q(ound)g(and)g(either)h(the)f(v)n(alue)
4448 g(of)f Fp(x)h Fy(is)g(atomic)e(or)i(all)f(of)75 2319
4449 y(the)j(slots)f(in)g(the)g(v)n(alue)g(of)f Fp(x)h Fy(are)h(also)e(b)q
4450 (ound.)19 b(Otherwise)c(returns)h Fq(nil)p Fy(.)i(See)d(section)g(7)f
4451 (for)f(a)h(discussion)h(of)e(ho)o(w)75 2369 y Fv(Screamer)j
4452 Fy(determines)g(whether)h(or)e(not)g(a)h(v)n(ariable)e(is)h(b)q(ound.)
4453 23 b(See)16 b(section)h(9)e(for)g(a)g(discussion)h(of)f(aggregate)75
4454 2419 y(ob)r(jects.)992 2723 y(28)p eop
4455 %%Page: 29 29
4456 29 28 bop 75 195 a Fq(apply-substitutio)o(n)19 b Fp(x)993
4457 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
4458 346 y(The)19 b(primitiv)o(e)c Fq(apply-substitution)g
4459 Fy(is)j(an)g(extension)g(of)g(the)g(primitiv)o(e)e Fq(value-of)h
4460 Fy(whic)o(h)h(can)g(recursiv)o(ely)75 396 y(dereference)f(an)d(en)o
4461 (tire)i(aggregate)e(ob)r(ject.)20 b(If)14 b Fp(x)g Fy(is)h(an)f(un)o(b)
4462 q(ound)g(v)n(ariable)f(then)i Fq(apply-substitution)c
4463 Fy(b)q(eha)o(v)o(es)75 446 y(lik)o(e)f Fq(value-of)e
4464 Fy(dereferencing)13 b Fp(x)d Fy(and)g(returning)h(the)g(dereferenced)j
4465 (v)n(alue.)i(The)11 b(v)n(alue)f(returned)i(will)d(b)q(e)i(a)f(v)n
4466 (ariable)75 496 y(whic)o(h)j(ma)o(y)d(b)q(e)j Fp(x)g
4467 Fy(itself)f(or)h(another)g(v)n(ariable)e(whic)o(h)i(is)f(shared)i(with)
4468 e Fp(x)p Fy(.)17 b(Otherwise,)d(returns)g(a)f(cop)o(y)f(of)g(the)i(v)n
4469 (alue)75 546 y(of)e Fp(x)p Fy(.)17 b(Eac)o(h)12 b(slot)g(of)g
4470 Fp(x)g Fy(that)g(con)o(tains)g(a)g(b)q(ound)h(v)n(ariable)e(is)h
4471 (replaced)h(in)f(the)h(cop)o(y)f(with)g(the)h(dereferenced)i(v)n(alue)d
4472 (of)75 595 y(that)g(v)n(ariable)f(pro)q(duced)i(b)o(y)e(a)h(recursiv)o
4473 (e)h(application)e(of)g Fq(apply-substitutio)o(n)p Fy(.)k(See)d
4474 (section)h(7)e(for)h(a)f(discussion)75 645 y(of)18 b(ho)o(w)h
4475 Fv(Screamer)g Fy(determines)g(whether)h(or)f(not)g(a)f(v)n(ariable)g
4476 (is)g(b)q(ound)h(and)g(ho)o(w)f Fv(Screamer)i Fy(dereferences)75
4477 695 y(v)n(ariables.)d(See)e(section)g(9)e(for)h(a)f(discussion)i(of)e
4478 (aggregate)h(ob)r(jects.)75 936 y Fq(linear-force)19
4479 b Fp(x)1059 b Fy([)p Fu(Nondeterministic)14 b(F)m(unction)p
4480 Fy(])75 1088 y(Returns)19 b Fp(x)f Fy(if)f Fp(x)h Fy(is)g(not)g(a)g(v)n
4481 (ariable.)29 b(If)18 b Fp(x)g Fy(is)g(a)g(b)q(ound)g(v)n(ariable)f
4482 (then)i(b)q(eha)o(v)o(es)g(lik)o(e)e Fq(value-of)g Fy(returning)h(the)
4483 75 1138 y(dereferenced)g(v)n(alue)d(of)f Fp(x)p Fy(.)21
4484 b(If)15 b Fp(x)g Fy(is)g(an)g(un)o(b)q(ound)g(v)n(ariable)f(then)i(it)e
4485 (m)o(ust)g(b)q(e)i(kno)o(wn)f(to)g(ha)o(v)o(e)g(a)f(coun)o(table)i(set)
4486 g(of)75 1187 y(p)q(oten)o(tial)d(v)n(alues.)k(In)d(this)f(case)i
4487 Fp(x)e Fy(is)g(nondeterministically)e(restricted)16 b(to)d(b)q(e)h
4488 (equal)f(to)g(one)h(of)f(the)h(v)n(alues)f(in)g(this)75
4489 1237 y(coun)o(table)i(set,)h(th)o(us)g(forcing)f Fp(x)g
4490 Fy(to)g(b)q(e)h(b)q(ound.)22 b(The)15 b(dereferenced)k(v)n(alue)14
4491 b(of)h Fp(x)g Fy(is)g(then)h(returned.)23 b(An)16 b(un)o(b)q(ound)75
4492 1287 y(v)n(ariable)c(is)g(kno)o(wn)g(to)h(ha)o(v)o(e)f(a)g(coun)o
4493 (table)h(set)h(of)e(p)q(oten)o(tial)g(v)n(alues)g(either)h(if)f(it)h
4494 (is)f(kno)o(wn)g(to)h(ha)o(v)o(e)f(a)g(\014nite)h(domain)75
4495 1337 y(or)g(if)f(it)g(is)g(kno)o(wn)h(to)f(b)q(e)i(in)o(teger)f(v)n
4496 (alued.)k(An)c(error)g(is)g(signalled)f(if)f Fp(x)i Fy(is)f(not)h(kno)o
4497 (wn)f(to)h(ha)o(v)o(e)f(a)h(\014nite)g(domain)d(and)75
4498 1387 y(is)k(not)h(kno)o(wn)f(to)g(b)q(e)i(in)o(teger)f(v)n(alued.)k(Up)
4499 q(on)c(bac)o(ktrac)o(king)f Fp(x)g Fy(will)g(b)q(e)h(b)q(ound)f(to)h
4500 (eac)o(h)g(p)q(oten)o(tial)f(v)n(alue)g(in)g(turn,)75
4501 1436 y(failing)c(when)j(there)h(remain)c(no)j(un)o(tried)f(alternativ)o
4502 (es.)18 b(Since)13 b(the)g(set)g(of)f(p)q(oten)o(tial)f(v)n(alues)h(is)
4503 g(required)i(only)d(to)h(b)q(e)75 1486 y(coun)o(table,)j(not)f
4504 (\014nite,)h(the)g(set)h(of)e(un)o(tried)i(alternativ)o(e)e(ma)o(y)f
4505 (nev)o(er)j(b)q(e)f(exhausted)h(and)f(bac)o(ktrac)o(king)f(need)i(not)
4506 75 1536 y(terminate.)21 b(This)15 b(can)g(happ)q(en,)h(for)e(instance,)
4507 i(when)g Fp(x)e Fy(is)h(kno)o(wn)g(to)g(b)q(e)h(an)e(in)o(teger)i(but)f
4508 (lac)o(ks)g(either)h(an)f(upp)q(er)75 1586 y(of)d(lo)o(w)o(er)h(b)q
4509 (ound.)k(The)d(order)f(in)g(whic)o(h)f(the)i(nondeterministic)e
4510 (alternativ)o(es)h(are)g(tried)g(is)g(left)f(unsp)q(eci\014ed)j(to)e
4511 (giv)o(e)75 1636 y(future)j(implemen)o(tations)d(leew)o(a)o(y)i(in)h
4512 (incorp)q(orating)f(heuristics)i(in)e(the)i(pro)q(cess)g(of)e
4513 (determining)g(a)g(go)q(o)q(d)h(searc)o(h)75 1686 y(order.)j(See)c
4514 (section)g(6)e(for)h(a)g(discussion)g(of)g(restriction)g(to)g(\014nite)
4515 g(domains)f(and)g(to)h(in)o(teger)h(v)n(alues.)j(See)d(section)f(7)75
4516 1735 y(for)g(a)g(discussion)h(of)f(ho)o(w)g Fv(Screamer)h
4517 Fy(determines)g(whether)g(or)g(not)f(a)g(v)n(ariable)f(is)i(b)q(ound)f
4518 (and)g(ho)o(w)g Fv(Screamer)75 1785 y Fy(dereferences)j(v)n(ariables.)
4519 75 2026 y Fq(divide-and-conque)o(r-for)o(ce)i Fp(x)797
4520 b Fy([)p Fu(Nondeterministic)14 b(F)m(unction)p Fy(])75
4521 2178 y(Returns)19 b Fp(x)f Fy(if)f Fp(x)h Fy(is)g(not)g(a)g(v)n
4522 (ariable.)29 b(If)18 b Fp(x)g Fy(is)g(a)g(b)q(ound)g(v)n(ariable)f
4523 (then)i(b)q(eha)o(v)o(es)g(lik)o(e)e Fq(value-of)g Fy(returning)h(the)
4524 75 2228 y(dereferenced)k(v)n(alue)c(of)g Fp(x)p Fy(.)32
4525 b(If)19 b Fp(x)f Fy(is)h(an)g(un)o(b)q(ound)f(v)n(ariable)g(then)i(it)e
4526 (m)o(ust)g(b)q(e)h(kno)o(wn)f(either)i(to)f(ha)o(v)o(e)f(a)h(\014nite)
4527 75 2277 y(domain)d(or)j(to)g(b)q(e)g(real)g(and)g(ha)o(v)o(e)f(a)h(lo)o
4528 (w)o(er)f(and)h(upp)q(er)h(b)q(ound.)32 b(If)19 b(it)f(is)h(kno)o(wn)f
4529 (to)h(ha)o(v)o(e)f(a)h(\014nite)g(domain)d Fp(d)75 2327
4530 y Fy(then)h(this)g(domain)d(is)j(split)f(in)o(to)g(t)o(w)o(o)g(halv)o
4531 (es)h(and)f(the)h(v)n(alue)f(of)g Fp(x)h Fy(is)f(nondeterministically)f
4532 (restricted)k(to)d(b)q(e)h(a)75 2377 y(mem)o(b)q(er)10
4533 b(one)i(of)f(the)h(halv)o(es.)17 b(If)12 b Fp(x)f Fy(b)q(ecomes)h(b)q
4534 (ound)g(b)o(y)f(this)h(restriction)g(then)h(its)e(dereferenced)k(v)n
4535 (alue)c(is)h(returned.)75 2427 y(Otherwise,)17 b Fp(x)f
4536 Fy(itself)f(is)h(returned.)25 b(The)16 b(metho)q(d)f(of)g(splitting)g
4537 (the)i(domain)c(in)o(to)i(t)o(w)o(o)g(halv)o(es)h(is)g(left)f(unsp)q
4538 (eci\014ed)75 2477 y(to)g(giv)o(e)f(future)i(implem)o(en)o(tations)c
4539 (leew)o(a)o(y)j(in)f(incorp)q(orating)h(heuristics)h(in)e(the)i(pro)q
4540 (cess)h(of)d(determining)g(a)g(go)q(o)q(d)75 2526 y(searc)o(h)k(order.)
4541 30 b(All)16 b(that)i(is)f(sp)q(eci\014ed)i(is)e(that)g(if)g(the)h
4542 (domain)d(size)j(is)f(ev)o(en)h(prior)f(to)h(splitting,)e(the)i(halv)o
4543 (es)g(are)75 2576 y(of)h(equal)g(size,)i(while)e(if)f(the)i(domain)d
4544 (size)k(is)e(o)q(dd,)h(the)g(halv)o(es)f(di\013er)h(in)f(size)h(b)o(y)f
4545 (at)h(most)e(one.)35 b(If)19 b Fp(x)g Fy(is)g(not)992
4546 2723 y(29)p eop
4547 %%Page: 30 30
4548 30 29 bop 75 195 a Fy(kno)o(wn)14 b(to)g(ha)o(v)o(e)h(a)f(\014nite)h
4549 (domain)d(but)j(is)f(kno)o(wn)g(to)h(b)q(e)g(real)f(and)h(to)f(ha)o(v)o
4550 (e)h(b)q(oth)f(lo)o(w)o(er)g(and)h(upp)q(er)g(b)q(ounds)g(then)75
4551 245 y(nondeterministically)10 b(either)i(the)g(lo)o(w)o(er)f(or)h(upp)q
4552 (er)g(b)q(ound)g(is)f(restricted)i(to)f(the)g(midp)q(oin)o(t)d(b)q(et)o
4553 (w)o(een)k(the)f(lo)o(w)o(er)f(and)75 295 y(upp)q(er)g(b)q(ound.)17
4554 b(This)11 b(restriction)g(will)e(cause)i Fp(x)f Fy(to)g(b)q(ecome)h(b)q
4555 (ound)f(if)g(the)h(di\013erence)h(b)q(et)o(w)o(een)g(the)f(lo)o(w)o(er)
4556 f(and)g(upp)q(er)75 345 y(b)q(ounds)i(b)q(ecomes)g(smaller)f(than)g
4557 Fq(*fuzz*)p Fy(.)16 b(If)c Fp(x)f Fy(b)q(ecomes)h(b)q(ound)g(b)o(y)g
4558 (this)g(restriction)g(then)h(its)f(dereferenced)j(v)n(alue)75
4559 394 y(is)f(returned.)21 b(Otherwise,)15 b Fp(x)f Fy(itself)g(is)g
4560 (returned.)20 b(An)15 b(error)g(is)f(signalled)f(if)g
4561 Fp(x)h Fy(is)g(not)g(kno)o(wn)g(to)g(b)q(e)h(restricted)h(to)e(a)75
4562 444 y(\014nite)f(domain)e(and)h(either)i(is)e(not)h(kno)o(wn)f(to)h(b)q
4563 (e)h(real)e(or)h(is)g(not)f(kno)o(wn)h(to)f(ha)o(v)o(e)h(b)q(oth)g(a)f
4564 (lo)o(w)o(er)h(and)g(upp)q(er)g(b)q(ound.)75 494 y Fq
4565 (Divide-and-conque)o(r-for)o(ce)e Fy(implemen)o(ts)h(a)i(single)g
4566 (binary-branc)o(hing)f(step)i(of)f(a)g(divide-and-conquer)g(searc)o(h)
4567 75 544 y(algorithm.)23 b(There)18 b(are)f(alw)o(a)o(ys)e(t)o(w)o(o)h
4568 (alternativ)o(es,)h(the)g(second)h(of)e(whic)o(h)g(is)h(tried)g(up)q
4569 (on)f(bac)o(ktrac)o(king.)26 b(While)75 594 y(a)14 b(single)g
4570 (application)f(of)h Fq(divide-and-conq)o(uer-f)o(orce)d
4571 Fy(ma)o(y)h(not)i(cause)i(its)e(argumen)o(t)f(to)h(b)q(e)h(b)q(ound,)f
4572 (rep)q(eated)75 643 y(application)g(is)h(guaran)o(teed)g(to)g(ev)o(en)o
4573 (tually)g(bind)g(its)g(argumen)o(t)f(so)h(long)f(as)h
4574 Fq(*fuzz*)f Fy(is)h(non-zero.)22 b(See)16 b(section)g(6)75
4575 693 y(for)e(a)g(discussion)g(of)g(restriction)h(to)f(\014nite)g
4576 (domains)e(and)i(to)g(real)g(v)n(alues.)k(See)d(section)g(7)f(for)f(a)h
4577 (discussion)h(of)e(ho)o(w)75 743 y Fv(Screamer)i Fy(determines)f
4578 (whether)h(or)f(not)g(a)f(v)n(ariable)g(is)h(b)q(ound)g(and)f(ho)o(w)h
4579 Fv(Screamer)g Fy(dereferences)k(v)n(ariables.)75 984
4580 y Fq(static-ordering)h Fu(for)n(c)n(e-function)833 b
4581 Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75 1136
4582 y(This)k(function)f(is)h(a)f(higher-order)i(function)e(whic)o(h)h(tak)o
4583 (es)g(a)g Fu(for)n(c)n(e-function)f Fy(as)h(an)g(argumen)o(t)e(and)i
4584 (returns)h(an)75 1186 y(ordering)d(force)h(function)f(as)g(its)h
4585 (result.)26 b(The)16 b Fu(for)n(c)n(e-function)g Fy(is)g(an)o(y)g(\(p)q
4586 (oten)o(tially)f(nondeterministic\))h(function)75 1235
4587 y(whic)o(h)j(can)g(b)q(e)g(applied)g(to)f(a)h(v)n(ariable)f(as)h(its)g
4588 (single)f(argumen)o(t)g(with)h(the)g(stipulation)f(that)h(a)g(\014nite)
4589 g(n)o(um)o(b)q(er)75 1285 y(of)e(rep)q(eated)i(applications)d(will)g
4590 (force)i(the)g(v)n(ariable)e(to)i(b)q(e)g(b)q(ound.)28
4591 b(The)18 b Fu(for)n(c)n(e-function)f Fy(need)i(not)e(return)h(an)o(y)75
4592 1335 y(useful)h(v)n(alue.)30 b Fv(Screamer)19 b Fy(curren)o(tly)h(pro)o
4593 (vides)e(t)o(w)o(o)g(con)o(v)o(enien)o(t)h Fu(for)n(c)n(e-function)p
4594 Fy(s,)g(namely)e Fq(#'linear-force)75 1385 y Fy(and)f
4595 Fq(#'divide-and-conq)o(uer-)o(force)c Fy(though)k(future)h(implemen)o
4596 (tati)o(ons)d(ma)o(y)g(pro)o(vide)h(additional)g(ones.)25
4597 b(The)75 1435 y(de\014ned)15 b Fv(Screamer)g Fy(proto)q(col)e(do)q(es)i
4598 (not)f(pro)o(vide)g(su\016cien)o(t)g(ho)q(oks)g(for)g(the)g(user)h(to)f
4599 (de\014ne)h(her)g(o)o(wn)e Fu(for)n(c)n(e)i(func-)75
4600 1484 y(tion)p Fy(s.)j(The)d(ordering)f(force)g(function)g(whic)o(h)f
4601 (is)h(returned)i(is)d(a)h(nondeterministic)f(function)h(whic)o(h)f(tak)
4602 o(es)i(a)e(single)75 1534 y(argumen)o(t)k Fp(x)p Fy(.)32
4603 b(This)19 b(argumen)o(t)e Fp(x)h Fy(can)h(b)q(e)g(a)f(list)g(of)g(v)n
4604 (alues)h(where)g(eac)o(h)g(v)n(alue)f(ma)o(y)f(b)q(e)i(either)g(a)g(v)n
4605 (ariable)e(or)75 1584 y(a)f(non-v)n(ariable.)24 b(The)17
4606 b(ordering)f(force)h(function)f(applies)g(the)h Fu(for)n(c)n
4607 (e-function)f Fy(in)f(turn)i(to)f(eac)o(h)h(of)f(the)h(v)n(ariables)75
4608 1634 y(in)e Fp(x)p Fy(,)h(in)f(the)i(order)g(that)e(they)i(app)q(ear,)f
4609 (rep)q(eatedly)h(applying)e(the)h Fu(for)n(c)n(e-function)g
4610 Fy(to)g(a)f(giv)o(en)h(v)n(ariable)e(un)o(til)h(it)75
4611 1684 y(b)q(ecomes)e(b)q(ound)h(b)q(efore)g(pro)q(ceeding)g(to)f(the)g
4612 (next)h(v)n(ariable.)j(The)c(ordering)h(force)f(function)g(do)q(es)h
4613 (not)f(return)h(an)o(y)75 1733 y(meaningful)d(result.)75
4614 1975 y Fq(domain-size)20 b Fp(x)1145 b Fy([)p Fu(Deterministic)14
4615 b(F)m(unction)p Fy(])75 2126 y(Returns)d(the)h(domain)c(size)j(of)f
4616 Fp(x)p Fy(.)17 b(This)10 b(is)h(the)g(n)o(um)o(b)q(er)f(of)g(p)q
4617 (ossible)h(ground)f(v)n(alues)g(whic)o(h)h Fp(x)f Fy(ma)o(y)f
4618 (consisten)o(tly)i(tak)o(e)75 2176 y(on.)26 b(This)17
4619 b(function)f(recursiv)o(ely)i(tra)o(v)o(erses)g(aggregate)e(ob)r(jects)
4620 i(when)f(computing)e(domain)g(sizes.)27 b(The)17 b(domain)75
4621 2226 y(size)d(of)g(an)f(aggregate)h(ob)r(ject)g(is)g(the)g(pro)q(duct)h
4622 (of)e(the)h(domain)e(sizes)i(of)g(its)f(slots.)18 b(An)c(atomic)e
4623 (non-v)n(ariable)g(has)i(a)75 2276 y(domain)d(size)k(of)e(one.)18
4624 b(The)c(domain)e(size)i(of)g(a)f(b)q(ound)h(v)n(ariable)e(is)i(the)g
4625 (domain)e(size)i(of)f(its)h(dereferenced)j(v)n(alue.)g(If)75
4626 2325 y(an)c(un)o(b)q(ound)g(v)n(ariable)f(is)g(kno)o(wn)h(to)g(ha)o(v)o
4627 (e)f(a)h(\014nite)g(domain)e(then)i(its)g(domain)e(size)j(is)e(the)i
4628 (size)g(of)e(that)h(domain.)i(If)75 2375 y(an)d(un)o(b)q(ound)h(v)n
4629 (ariable)e(is)h(not)g(kno)o(wn)g(to)g(ha)o(v)o(e)h(a)f(\014nite)g
4630 (domain)e(but)j(is)f(kno)o(wn)g(to)g(b)q(e)h(in)o(teger)g(v)n(alued)f
4631 (and)g(to)g(ha)o(v)o(e)75 2425 y(upp)q(er)i(and)f(lo)o(w)o(er)f(b)q
4632 (ounds)i(then)f(its)g(domain)e(size)j(is)f(the)g(one)g(plus)g(the)h
4633 (di\013erence)h(b)q(et)o(w)o(een)f(the)g(upp)q(er)g(and)e(lo)o(w)o(er)
4634 75 2475 y(b)q(ounds)i(Otherwise,)g(the)g(domain)d(size)k(of)d(an)h(un)o
4635 (b)q(ound)h(v)n(ariable)e(is)h(in\014nite.)18 b Fq(Domain-size)11
4636 b Fy(returns)k Fq(nil)e Fy(if)f Fp(x)p Fy(,)h(or)75 2525
4637 y(an)o(y)g(slot)h(nested)h(in)f Fp(x)p Fy(,)f(has)h(an)g(in\014nite)f
4638 (domain)f(size.)19 b(See)14 b(section)h(9)f(for)f(a)h(discussion)g(of)f
4639 (aggregate)h(ob)r(jects.)992 2723 y(30)p eop
4640 %%Page: 31 31
4641 31 30 bop 75 195 a Fq(reorder)20 b Fu(for)n(c)n(e-function)1008
4642 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])75
4643 342 y(This)k(function)f(is)h(a)f(higher-order)i(function)e(whic)o(h)h
4644 (tak)o(es)g(a)g Fu(for)n(c)n(e-function)f Fy(as)h(an)g(argumen)o(t)e
4645 (and)i(returns)h(an)75 392 y(ordering)d(force)h(function)f(as)g(its)h
4646 (result.)26 b(The)16 b Fu(for)n(c)n(e-function)g Fy(is)g(an)o(y)g(\(p)q
4647 (oten)o(tially)f(nondeterministic\))h(function)75 442
4648 y(whic)o(h)j(can)g(b)q(e)g(applied)g(to)f(a)h(v)n(ariable)f(as)h(its)g
4649 (single)f(argumen)o(t)g(with)h(the)g(stipulation)f(that)h(a)g(\014nite)
4650 g(n)o(um)o(b)q(er)75 492 y(of)e(rep)q(eated)i(applications)d(will)g
4651 (force)i(the)g(v)n(ariable)e(to)i(b)q(e)g(b)q(ound.)28
4652 b(The)18 b Fu(for)n(c)n(e-function)f Fy(need)i(not)e(return)h(an)o(y)75
4653 542 y(useful)h(v)n(alue.)30 b Fv(Screamer)19 b Fy(curren)o(tly)h(pro)o
4654 (vides)e(t)o(w)o(o)g(con)o(v)o(enien)o(t)h Fu(for)n(c)n(e-function)p
4655 Fy(s,)g(namely)e Fq(#'linear-force)75 591 y Fy(and)f
4656 Fq(#'divide-and-conq)o(uer-)o(force)c Fy(though)k(future)h(implemen)o
4657 (tati)o(ons)d(ma)o(y)g(pro)o(vide)h(additional)g(ones.)25
4658 b(The)75 641 y(de\014ned)15 b Fv(Screamer)g Fy(proto)q(col)e(do)q(es)i
4659 (not)f(pro)o(vide)g(su\016cien)o(t)g(ho)q(oks)g(for)g(the)g(user)h(to)f
4660 (de\014ne)h(her)g(o)o(wn)e Fu(for)n(c)n(e)i(func-)75
4661 691 y(tion)p Fy(s.)j(The)d(ordering)f(force)g(function)g(whic)o(h)f(is)
4662 h(returned)i(is)d(a)h(nondeterministic)f(function)h(whic)o(h)f(tak)o
4663 (es)i(a)e(single)75 741 y(argumen)o(t)j Fp(x)p Fy(.)26
4664 b(This)17 b(argumen)o(t)e Fp(x)i Fy(can)g(b)q(e)g(a)f(list)h(of)f(v)n
4665 (alues)g(where)i(eac)o(h)g(v)n(alue)e(ma)o(y)e(b)q(e)k(either)f(a)g(v)n
4666 (ariable)f(or)g(a)75 791 y(non-v)n(ariable.)g(The)e(ordering)f(force)h
4667 (function)f(rep)q(eatedly)h(applies)f(the)g Fu(for)n(c)n(e-function)g
4668 Fy(to)g(the)h(v)n(ariable)e(in)h Fp(x)f Fy(with)75 840
4669 y(the)i(smallest)f(domain)e(size)k(un)o(til)e(all)f(v)n(ariables)h(in)g
4670 Fp(x)h Fy(are)g(b)q(ound.)k(The)c(ordering)g(force)g(function)g(do)q
4671 (es)g(not)g(return)75 890 y(an)o(y)f(meaningful)f(result.)75
4672 1127 y Fq(solution)20 b Fu(list)h(or)n(dering-for)n(c)n(e-function)680
4673 b Fy([)p Fu(Nondeterministic)14 b(F)m(unction)p Fy(])75
4674 1275 y(The)19 b(argumen)o(t)e Fu(list)g Fy(is)h(a)g(list)g(of)f(v)n
4675 (alues.)31 b(T)o(ypically)17 b(it)h(is)g(a)g(list)f(of)h(v)n(ariables)f
4676 (but)i(it)f(ma)o(y)e(also)i(con)o(tain)f(non-)75 1324
4677 y(v)n(ariables.)g(The)c(sp)q(eci\014ed)i Fu(or)n(dering-for)n(c)n
4678 (e-function)d Fy(is)h(used)h(to)e(force)i(eac)o(h)f(of)g(the)g(v)n
4679 (ariables)f(in)h Fu(list)f Fy(to)h(b)q(e)g(b)q(ound.)75
4680 1374 y(Returns)h(a)f(list)f(of)h(the)h(dereference)i(v)n(alues)c(of)h
4681 (the)h(elemen)o(ts)e(of)h Fu(list)f Fy(in)h(the)g(same)g(order)g(that)h
4682 (they)f(app)q(ear)h(in)e Fu(list)p Fy(,)75 1424 y(irresp)q(ectiv)o(e)i
4683 (of)d(the)i(forcing)e(order)i(imp)q(osed)e(b)o(y)g(the)i
4684 Fu(or)n(dering-for)n(c)n(e-function)p Fy(.)j(The)d Fu(or)n(dering-for)n
4685 (c)n(e-function)e Fy(can)75 1474 y(b)q(e)h(an)o(y)f(function)g(whic)o
4686 (h)h(tak)o(es)g(a)f(list)g(of)g(v)n(alues)g(as)h(its)f(single)h
4687 (argumen)o(t)e(that)h(is)h(guaran)o(teed)g(to)f(force)h(all)f(v)n
4688 (ariables)75 1524 y(in)k(that)h(list)f(to)h(b)q(e)g(b)q(ound)g(up)q(on)
4689 f(its)h(return.)25 b(The)16 b(returned)h(v)n(alue)e(of)g(the)h
4690 Fu(or)n(dering-for)n(c)n(e-function)f Fy(is)h(ignored.)75
4691 1573 y(The)j(user)h(can)f(construct)h(her)g(o)o(wn)e
4692 Fu(or)n(dering-for)n(c)n(e-function)g Fy(or)h(use)h(one)f(of)f(the)h
4693 (follo)o(wing)d(four)j(alternativ)o(es)75 1623 y(pro)o(vided)14
4694 b(with)f Fv(Screamer)q Fy(.)137 1703 y Fr(\017)21 b Fq
4695 (\(static-ordering)d(#'linear-force\))p Fy(,)137 1784
4696 y Fr(\017)j Fq(\(static-ordering)d(#'divide-and-conque)o(r-for)o(ce\))p
4697 Fy(,)137 1866 y Fr(\017)j Fq(\(reorder)f(#'linear-force\))11
4698 b Fy(and)137 1947 y Fr(\017)21 b Fq(\(reorder)f(#'divide-and-conq)o
4699 (uer-f)o(orce\))o Fy(.)75 2027 y(F)m(uture)14 b(implemen)o(tation)d(of)
4700 i Fv(Screamer)i Fy(ma)o(y)d(pro)o(vide)h(additional)f(forcing)i(and)f
4701 (ordering)h(functions.)75 2264 y Fq(best-value)20 b Fu(obje)n
4702 (ctive-function)i(expr)n(ession)648 b Fy([)p Fu(Nondeterministic)13
4703 b(Macr)n(o)p Fy(])75 2599 y Fq(template)20 b Fp(x)1211
4704 b Fy([)p Fu(Deterministic)14 b(F)m(unction)p Fy(])992
4705 2723 y(31)p eop
4706 %%Page: 32 32
4707 32 31 bop 75 195 a Fy(Copies)13 b(an)g(aggregate)g(ob)r(ject,)h
4708 (replacing)f(an)o(y)g(sym)o(b)q(ol)e(b)q(eginning)i(with)g(a)g
4709 (question)g(mark)f(with)g(a)h(newly)g(created)75 245
4710 y(v)n(ariable.)k(If)c(the)h(same)f(sym)o(b)q(ol)f(app)q(ears)i(more)e
4711 (than)i(once)g(in)f Fp(x)p Fy(,)g(only)g(one)h(v)n(ariable)e(is)h
4712 (created)i(for)f(that)f(sym)o(b)q(ol,)75 295 y(the)i(same)f(v)n
4713 (ariable)g(replacing)g(an)o(y)h(o)q(ccurrences)j(of)c(that)g(sym)o(b)q
4714 (ol.)19 b(Th)o(us)c Fq(\(template)20 b('\(a)h(b)h(\(?c)f(d)h(?e\))f
4715 (?e\)\))75 345 y Fy(has)14 b(the)h(same)e(e\013ect)i(as:)204
4716 414 y Fq(\(let)21 b(\(\(?c)g(\(make-variable\)\))334
4717 463 y(\(?e)h(\(make-variable\)\))o(\))225 513 y(\(list)f('a)h('b)f
4718 (\(list)g(c)g('d)h(e\))f(e\)\).)75 591 y Fy(This)14 b(is)g(useful)g
4719 (for)g(creating)g(patterns)h(to)f(b)q(e)h(uni\014ed)f(with)g(other)g
4720 (structures.)21 b(See)15 b(section)g(9)f(for)f(a)h(discussion)h(of)75
4721 641 y(aggregate)f(ob)r(jects.)75 879 y Fq(*fuzz*)1571
4722 b Fy([)p Fu(V)m(ariable)p Fy(])75 1026 y(The)18 b(v)n(ariable)f
4723 Fq(*fuzz*)g Fy(is)h(used)h(to)f(determine)g(whether)h(a)f(real)g(v)n
4724 (ariable)f(is)g(b)q(ound)i(when)f(it)g(is)g(not)g(kno)o(wn)f(to)75
4725 1076 y(ha)o(v)o(e)e(a)f(\014nite)h(domain.)k(If)c(a)f(real)h(v)n(alue)f
4726 (has)h(lo)o(w)o(er)g(and)f(upp)q(er)i(b)q(ounds)g(and)e(the)i
4727 (di\013erence)h(b)q(et)o(w)o(een)f(the)f(lo)o(w)o(er)75
4728 1126 y(and)g(upp)q(er)h(b)q(ounds)g(is)f(less)h(than)g
4729 Fq(*fuzz*)e Fy(then)i(the)g(v)n(ariable)e(is)h(considered)i(b)q(ound.)
4730 22 b(When)16 b(suc)o(h)g(a)f(v)n(ariable)f(is)75 1176
4731 y(dereferenced,)i(the)f(lo)o(w)o(er)e(b)q(ound)h(is)g(arbitrarily)f
4732 (tak)o(en)h(as)g(its)g(v)n(alue.)j(See)e(section)g(6)e(for)h(further)h
4733 (discussion.)75 1312 y Fw(12)69 b(Examples)75 1403 y
4734 Fy(In)12 b(this)f(section)i(I)e(will)g(presen)o(t)i(a)e(n)o(um)o(b)q
4735 (er)g(of)g(examples)g(of)g Fv(Screamer)h Fy(programs)f(to)g(illustrate)
4736 h(t)o(ypical)f(program-)75 1453 y(ming)i(st)o(yles)i(and)g(clic)o(h)o
4737 (\023)-20 b(es.)21 b(Figure)15 b(1)g(con)o(tains)g(a)f(program)g(for)g
4738 (computing)f(all)h(Pythagorean)h(triples)g(of)f(p)q(ositiv)o(e)75
4739 1503 y(in)o(tegers)g(less)g(than)f(or)g(equal)f(to)h
4740 Fp(n)p Fy(.)18 b(It)13 b(illustrates)g(a)g(simple)f(generate-and-test)j
4741 (paradigm.)g(The)f Fq(let)e Fy(bindings)h(of)75 1553
4742 y(the)f(function)f Fq(pythagorean-trip)o(les)d Fy(constitute)k(the)g
4743 (generator)g(while)f(the)g Fq(unless)f Fy(expression)j(constitutes)f
4744 (the)75 1602 y(test.)24 b(The)16 b(function)g Fq(integer-between)c
4745 Fy(nondeterministically)i(returns)j(an)e(in)o(teger)h(in)f(the)i(range)
4746 e(giv)o(en)h(b)o(y)f(its)75 1652 y(argumen)o(ts.)k(This)14
4747 b(function)g(is)h(so)f(useful)h(that)f(it)g(is)g(built)g(in)o(to)g
4748 Fv(Screamer)p Fy(,)g(though)h(it)f(could)g(easily)g(b)q(e)h(de\014ned)
4749 75 1702 y(as)f(in)f(\014gure)i(1.)137 1752 y(Figure)i(1)g(also)g(con)o
4750 (tains)g(a)g(second)h(program)d(for)i(\014nding)g(p)o(ythagorean)g
4751 (triples.)28 b(While)16 b(the)i(\014rst)f(one)h(uses)75
4752 1802 y(pure)f(bac)o(ktrac)o(king)f(searc)o(h,)h(the)g(second)g
4753 (function)f Fq(pythagorean-tripl)o(esv)d Fy(uses)k(the)g
4754 Fv(Screamer)g Fy(constrain)o(t)75 1851 y(pac)o(k)n(age.)25
4755 b(While)15 b(for)h(this)h(problem,)e(the)h(constrain)o(t)h(based)g(v)o
4756 (ersion)f(do)q(es)h(not)g(o\013er)f(m)o(uc)o(h)g(computational)d(ad-)75
4757 1901 y(v)n(an)o(tage)i(o)o(v)o(er)g(the)i(bac)o(ktrac)o(king)e(v)o
4758 (ersion,)h(this)f(example)f(do)q(es)j(illustrate)e(a)g(standard)h(clic)
4759 o(h)o(\023)-20 b(e)16 b(for)f(reform)o(ulating)75 1951
4760 y(generate-and-test)20 b(algorithms)c(in)o(to)h(constrain)o(t)h
4761 (propagation)f(ones.)31 b(Note)18 b(the)g(in)o(ten)o(tional)f
4762 (similarit)o(y)e(in)i(the)75 2001 y(names)f(of)g(the)i(primitiv)o(es)d
4763 Fq(integer-between)f Fy(and)i Fq(integer-betweenv)p Fy(.)24
4764 b(A)17 b(similar)e(analogy)g(exists)j(b)q(et)o(w)o(een)75
4765 2051 y(the)c(primitiv)o(es)f Fq(member-of)f Fy(and)h
4766 Fq(member-ofv)p Fy(.)137 2100 y(Figure)i(2)g(con)o(tains)g(a)f(program)
4767 f(for)i(solving)e(the)j Fp(N)5 b Fy(-Queens)16 b(problem.)k(The)15
4768 b(function)f Fq(attacks)g Fy(returns)i Fq(t)f Fy(if)75
4769 2150 y(a)e(queen)h(on)f(ro)o(w)g Fp(q)382 2156 y Fh(i)409
4770 2150 y Fy(attac)o(ks)g(a)g(queen)h(on)f(ro)o(w)g Fp(q)858
4771 2156 y Fh(j)889 2150 y Fy(when)g(the)h(queens)h(are)e
4772 Fu(distanc)n(e)h Fy(columns)e(apart.)18 b(The)13 b(function)75
4773 2200 y Fq(check-queens)h Fy(c)o(hec)o(ks)j(whether)h(a)e(new)g(queen)h
4774 (can)g(b)q(e)f(placed)h(on)f(the)g(b)q(oard)h(without)e(attac)o(king)h
4775 (the)h(queens)75 2250 y(already)g(placed.)27 b(It)17
4776 b(recursiv)o(ely)h(c)o(hec)o(ks)h(the)e(new)h(queen)f(against)g(eac)o
4777 (h)g(previously)g(placed)g(queen)h(and)f(fails)f(if)75
4778 2300 y(it)f(detects)i(an)e(attac)o(k.)23 b(The)15 b(parameter)g
4779 Fu(que)n(en)h Fy(giv)o(es)g(the)f(ro)o(w)h(of)e(the)i(new)g(queen)g(to)
4780 f(b)q(e)h(placed)g(in)f(the)h(column)75 2350 y(adjacen)o(t)f(to)g
4781 (columns)e(of)h(the)i(previously)e(placed)h(queens.)22
4782 b(The)15 b(parameter)g Fu(que)n(ens)g Fy(is)g(a)f(list)h(of)f(the)h(ro)
4783 o(ws)g(of)f(the)75 2399 y(previously)h(placed)h(queens.)24
4784 b(Note)16 b(that)g(the)g(functions)g Fq(attacks)e Fy(and)h
4785 Fq(check-queens)e Fy(are)j(deterministic.)23 b(The)75
4786 2449 y(function)14 b Fq(n-queens)f Fy(nondeterministically)g(recursiv)o
4787 (ely)i(places)g(queens)h(on)e(the)h(b)q(oard,)f(c)o(hec)o(king)h(for)f
4788 (attac)o(ks)h(as)75 2499 y(eac)o(h)f(queen)h(is)f(placed.)137
4789 2549 y(This)f(example)e(illustrates)i(the)g(clic)o(h)o(\023)-20
4790 b(e)13 b(of)f(in)o(terlea)o(ving)g(the)h(generate)h(and)f(test)g(pro)q
4791 (cesses)j(to)c(implemen)o(t)e(early)75 2599 y(failure)k(detection.)23
4792 b(Rather)15 b(than)g(w)o(ait)g(un)o(til)f(all)g(queens)i(are)g(placed)f
4793 (b)q(efore)h(c)o(hec)o(king)f(for)g(attac)o(ks,)g(consistency)992
4794 2723 y(32)p eop
4795 %%Page: 33 33
4796 33 32 bop 134 197 1757 2 v 134 1068 2 872 v 173 244 a
4797 Fq(\(defun)21 b(integer-between)e(\(low)i(high\))195
4798 294 y(\(if)g(\(>)h(low)f(high\))g(\(fail\))f(\(either)h(low)g
4799 (\(integer-between)d(\(1+)j(low\))g(high\)\)\)\))173
4800 394 y(\(defun)g(pythagorean-triple)o(s)e(\(n\))195 443
4801 y(\(all-values)217 493 y(\(let)i(\(\(a)g(\(integer-between)e(1)i(n\)\))
4802 348 543 y(\(b)g(\(integer-between)e(1)i(n\)\))348 593
4803 y(\(c)g(\(integer-between)e(1)i(n\)\)\))239 643 y(\(unless)f(\(=)i(\(+)
4804 f(\(*)g(a)h(a\))f(\(*)h(b)f(b\)\))g(\(*)h(c)f(c\)\))h(\(fail\)\))239
4805 692 y(\(list)f(a)g(b)h(c\)\)\)\))173 792 y(\(defun)f
4806 (pythagorean-triple)o(sv)e(\(n\))195 842 y(\(let)i(\(\(a)g
4807 (\(integer-betweenv)e(1)i(n\)\))326 892 y(\(b)g(\(integer-betweenv)e(1)
4808 i(n\)\))326 941 y(\(c)g(\(integer-betweenv)e(1)i(n\)\)\))217
4809 991 y(\(assert!)f(\(=v)h(\(+v)h(\(*v)f(a)g(a\))h(\(*v)f(b)g(b\)\))h
4810 (\(*v)f(c)g(c\)\)\))217 1041 y(\(all-values)f(\(solution)g(\(list)g(a)i
4811 (b)f(c\))h(\(reorder)e(#'divide-and-conq)o(uer-f)o(orce\))o(\)\)\)\))p
4812 1889 1068 V 134 1070 1757 2 v 193 1183 a FA(Figure)e(1:)24
4813 b(Tw)o(o)16 b Fz(Screamer)h FA(programs)h(for)e(\014nding)j(p)o
4814 (ythagorean)g(triples.)30 b(The)16 b(\014rst)h(uses)h(bac)o(ktrac)o
4815 (king)193 1229 y(searc)o(h)13 b(while)h(the)g(second)g(uses)f(the)g
4816 (constrain)o(t)i(pac)o(k)n(age.)75 1361 y Fy(is)e(c)o(hec)o(k)o(ed)i
4817 (after)f(making)d(eac)o(h)j(nondeterministic)f(c)o(hoice.)19
4818 b(This)13 b(example)g(also)g(illustrates)g(ho)o(w)g Fv(Common)k(Lisp)75
4819 1411 y Fy(features)e(suc)o(h)g(as)f Fq(&optional)e Fy(argumen)o(ts)h
4820 (are)h(a)o(v)n(ailable)e(in)h Fv(Screamer)q Fy(.)137
4821 1460 y(Figure)j(3)f(con)o(tains)g(a)g(program)f(for)h(\014nding)g(all)f
4822 (simple)g(paths)i(in)f(a)g(directed)h(graph.)23 b(A)15
4823 b(simple)f(path)h(is)h(one)75 1510 y(whic)o(h)e(do)q(es)g(not)f(visit)g
4824 (a)h(v)o(ertex)g(more)f(than)h(once.)k(The)c(graph)g(is)f(represen)o
4825 (ted)k(via)12 b(the)j Fq(defstruct)20 b(node)p Fy(.)d(Eac)o(h)75
4826 1560 y(no)q(de)c(con)o(tains)g(t)o(w)o(o)f(slots.)17
4827 b(The)d Fq(marked?)d Fy(slot)h(is)h(used)g(to)g(record)g(when)g(a)g(no)
4828 q(de)g(has)g(already)f(b)q(een)i(visited)e(in)g(the)75
4829 1610 y(path)j(b)q(eing)f(constructed.)22 b(The)15 b Fq(next-nodes)e
4830 Fy(slot)h(con)o(tains)g(a)h(list)f(of)g(all)f(of)h(the)h(no)q(des)g
4831 (reac)o(hable)g(from)e(a)h(giv)o(en)75 1660 y(no)q(de)g(via)f
4832 (out-edges.)19 b(The)c(function)e Fq(member-of)f Fy(is)i(used)h(to)f
4833 (nondeterministically)e(c)o(ho)q(ose)j(one)f(of)f(the)i(no)q(des)f(in)
4834 75 1709 y(the)f Fq(next-nodes)e Fy(slot)i(as)f(the)i(next)f(no)q(de)g
4835 (in)g(the)g(path)g(b)q(eing)g(constructed.)19 b(This)13
4836 b(function)f(is)h(so)g(useful)g(that)g(it)f(is)75 1759
4837 y(built)g(in)o(to)g Fv(Screamer)p Fy(,)h(though)f(it)g(could)h(easily)f
4838 (b)q(e)h(de\014ned)h(as)e(in)g(\014gure)i(3.)j(The)c(v)o(ersion)g
4839 (built)e(in)o(to)h Fv(Screamer)75 1809 y Fy(is)i(sligh)o(tly)e(more)h
4840 (complex)g(as)h(it)f(accepts)j(either)e(a)g(v)o(ector)h(or)f(a)f(list)h
4841 (as)g(its)f(argumen)o(t.)137 1859 y(This)g(example)e(illustrates)i(the)
4842 h(utilit)o(y)d(of)h(lo)q(cal)g(side)h(e\013ects.)20 b(Lo)q(cal)12
4843 b(side)i(e\013ects)g(are)g(used)f(to)g(mark)e(a)i(no)q(de)g(as)75
4844 1909 y(b)q(eing)f(visited)h(so)f(that)h(they)g(are)f(not)h(included)f
4845 (t)o(wice)h(in)f(the)h(path.)18 b(The)12 b(marking)f(is)h(undone)h(up)q
4846 (on)f(bac)o(ktrac)o(king)75 1958 y(as)i(di\013eren)o(t)h(paths)f(are)g
4847 (considered.)137 2008 y(The)k(function)f Fq(simple-path)e
4848 Fy(nev)o(er)j(o)o(v)o(erwrites)g(a)f(lo)q(cal)f(side)h(e\013ect.)30
4849 b(As)18 b(suc)o(h,)g(its)f(side)h(e\013ects)h(are)e(single)75
4850 2058 y(assignmen)o(t,)11 b(m)o(uc)o(h)g(lik)o(e)h Fv(Pr)o(olog)p
4851 Fy('s)g(binding)g(of)g(logic)f(v)n(ariables.)17 b Fv(Screamer)c
4852 Fy(allo)o(ws)e(m)o(ultiple)f(assignmen)o(t)h(lo)q(cal)75
4853 2108 y(side)j(e\013ects,)i(something)d(whic)o(h)g(is)h(not)g(p)q
4854 (ossible)g(in)g Fv(Pr)o(olog)p Fy(.)k(The)d(second)g(example)e(in)g
4855 (\014gure)i(3)e(illustrates)h(the)75 2158 y(utilit)o(y)i(of)g(m)o
4856 (ultiple)e(assignmen)o(t)i(lo)q(cal)g(side)i(e\013ects.)29
4857 b(Let)17 b(us)h(extend)f(the)h(de\014nition)f(of)f(simple)f(path)i(to)g
4858 (de\014ne)75 2208 y(the)h(notion)e(of)h(a)g Fp(k)q Fy(-simple)e(path.)
4859 28 b(A)17 b Fp(k)q Fy(-simple)f(path)h(is)g(one)g(whic)o(h)g(nev)o(er)h
4860 (visits)f(a)g(no)q(de)h(more)e(than)h Fp(k)h Fy(times.)75
4861 2257 y(A)d(program)e(for)h(\014nding)g(simple)f(paths)i(can)g(b)q(e)g
4862 (con)o(v)o(erted)h(in)o(to)e(one)h(whic)o(h)f(\014nds)h
4863 Fp(k)q Fy(-simple)e(paths)i(b)o(y)g(k)o(eeping)f(a)75
4864 2307 y Fq(visits)d Fy(coun)o(t)i(for)e(eac)o(h)i(no)q(de)g(instead)g
4865 (of)e(a)h Fq(marked?)f Fy(\015ag.)17 b(Incremen)o(ting)12
4866 b(this)g Fq(visits)f Fy(coun)o(t)i(requires)g(m)o(ultiple)75
4867 2357 y(assignmen)o(t)j(lo)q(cal)g(side)i(e\013ects.)29
4868 b(This)17 b(example)f(also)h(illustrates)g(ho)o(w)f(lo)q(cal)h(side)g
4869 (e\013ects)i(can)f(b)q(e)f(done)h(on)e(an)o(y)75 2407
4870 y Fv(Common)h(Lisp)c Fy(generalized)i(v)n(ariable)e(\(suc)o(h)i(as)f
4871 Fq(defstruct)e Fy(slots\))i(via)f(the)h Fq(setf)f Fy(primitiv)o(e.)137
4872 2457 y(The)i Fv(Screamer)g Fy(constrain)o(t)g(pac)o(k)n(age)f(is)g
4873 (implemen)o(ted)e(using)i(the)h(basic)g(nondeterministic)f(primitiv)o
4874 (es)e(pro-)75 2506 y(vided)d(b)o(y)g Fv(Screamer)q Fy(.)17
4875 b(No)9 b(in)o(ternals)g(of)g Fv(Screamer)h Fy(needed)h(to)e(b)q(e)h(mo)
4876 q(di\014ed)e(to)h(supp)q(ort)h(the)g(constrain)o(t)g(pac)o(k)n(age.)75
4877 2556 y(Had)k(the)h(constrain)o(t)f(pac)o(k)n(age)g(not)g(b)q(een)h(pro)
4878 o(vided)f(with)f Fv(Screamer)q Fy(,)h(a)f(user)j(could)d(ha)o(v)o(e)h
4879 (constructed)j(her)d(o)o(wn)992 2723 y(33)p eop
4880 %%Page: 34 34
4881 34 33 bop 124 654 1778 2 v 124 1974 2 1321 v 163 701
4882 a Fq(\(defun)20 b(attacks)g(\(qi)i(qj)f(distance\))184
4883 751 y(\(or)h(\(=)f(qi)g(qj\))272 801 y(\(=)g(qi)g(\(+)h(qj)f
4884 (distance\)\))272 851 y(\(=)g(qi)g(\(-)h(qj)f(distance\)\)\)\))163
4885 950 y(\(defun)f(check-queens)f(\(queen)i(queens)g(&optional)e
4886 (\(distance)h(1\)\))184 1000 y(\(unless)h(\(null)f(queens\))206
4887 1050 y(\(if)h(\(attacks)f(queen)h(\(first)g(queens\))f(distance\))g
4888 (\(fail\)\))206 1100 y(\(check-queens)f(queen)i(\(rest)g(queens\))f
4889 (\(1+)h(distance\)\)\)\))163 1199 y(\(defun)f(n-queens)g(\(n)i
4890 (&optional)e(queens\))184 1249 y(\(if)i(\(=)f(\(length)f(queens\))h
4891 (n\))272 1299 y(queens)272 1349 y(\(let)g(\(\(queen)f
4892 (\(integer-between)e(1)k(n\)\)\))293 1399 y(\(check-queens)d(queen)i
4893 (queens\))293 1448 y(\(n-queens)f(n)i(\(cons)f(queen)f
4894 (queens\)\)\)\)\))163 1548 y(\(defun)g(n-queensv)g(\(n\))184
4895 1598 y(\(let)h(\(\(q)h(\(make-array)d(n\)\)\))206 1648
4896 y(\(dotimes)h(\(i)i(n\))228 1697 y(\(setf)f(\(aref)f(q)i(i\))f
4897 (\(member-ofv)f(\(all-values)f(\(integer-between)g(1)j(n\)\)\)\)\))206
4898 1747 y(\(dotimes)e(\(i)i(n\))228 1797 y(\(dotimes)e(\(j)h(n\))250
4899 1847 y(\(if)g(\(>)g(j)h(i\))337 1897 y(\(assert!)e(\(notv)h(\(funcallv)
4900 f(#'attacks)g(\(aref)g(q)i(i\))f(\(aref)g(q)h(j\))f(\(-)g(j)h
4901 (i\)\)\)\)\)\)\))206 1946 y(\(all-values)e(\(solution)g(\(coerce)g(q)i
4902 ('list\))e(\(reorder)g(#'linear-force\)\)\)\))o(\))p
4903 1900 1974 V 124 1976 1778 2 v 193 2089 a FA(Figure)13
4904 b(2:)k(Tw)o(o)12 b Fz(Screamer)h FA(programs)g(for)g(solving)i(the)d
4905 Fg(N)t FA(-Queens)h(problem.)18 b(The)13 b(\014rst)g(uses)g(bac)o
4906 (ktrac)o(king)193 2134 y(searc)o(h)g(while)h(the)g(second)g(uses)f(the)
4907 g(constrain)o(t)i(pac)o(k)n(age.)992 2723 y Fy(34)p eop
4908 %%Page: 35 35
4909 35 34 bop 200 801 1626 2 v 200 1872 2 1071 v 239 848
4910 a Fq(\(defun)20 b(member-of)g(\(list\))261 898 y(\(if)h(\(null)g
4911 (list\))f(\(fail\))h(\(either)f(\(first)h(list\))g(\(member-of)e
4912 (\(rest)i(list\)\)\)\)\))239 998 y(\(defstruct)f(\(node)g(\(:conc-name)
4913 g(nil\))h(\(:print-function)d(print-node\)\))282 1048
4914 y(name)j(next-nodes)f(\(marked?)g(nil\))h(\(visits)g(0\)\))239
4915 1147 y(\(defun)f(print-node)g(\(node)h(stream)f(print-level\))261
4916 1197 y(\(declare)g(\(ignore)g(print-level\)\))261 1247
4917 y(\(princ)g(\(name)h(node\))g(stream\)\))239 1347 y(\(defun)f
4918 (simple-path)g(\(u)h(v\))261 1396 y(\(if)g(\(marked?)f(u\))h
4919 (\(fail\)\))261 1446 y(\(local)f(\(setf)h(\(marked?)f(u\))h(t\)\))261
4920 1496 y(\(either)f(\(progn)h(\(unless)f(\(eq)h(u)h(v\))f(\(fail\)\))f
4921 (\(list)h(u\)\))435 1546 y(\(cons)g(u)g(\(simple-path)f(\(member-of)f
4922 (\(next-nodes)h(u\)\))h(v\)\)\)\))239 1645 y(\(defun)f(k-simple-path)g
4923 (\(u)h(v)g(k\))261 1695 y(\(if)g(\(=)g(\(visits)g(u\))g(k\))g
4924 (\(fail\)\))261 1745 y(\(local)f(\(setf)h(\(visits)f(u\))i(\(1+)f
4925 (\(visits)f(u\)\)\)\))261 1795 y(\(either)g(\(progn)h(\(unless)f(\(eq)h
4926 (u)h(v\))f(\(fail\)\))f(\(list)h(u\)\))435 1845 y(\(cons)g(u)g
4927 (\(k-simple-path)e(\(member-of)h(\(next-nodes)f(u\)\))j(v)f(k\)\)\)\))p
4928 1824 1872 V 200 1874 1626 2 v 450 1987 a FA(Figure)14
4929 b(3:)j(A)12 b Fz(Screamer)i FA(program)f(for)g(\014nding)i(simple)g
4930 (paths)e(in)h(a)f(graph.)992 2723 y Fy(35)p eop
4931 %%Page: 36 36
4932 36 35 bop 75 195 a Fy(using)13 b(nothing)g(more)f(than)i(the)g
4933 (facilities)e(already)h(pro)o(vided)h(b)o(y)f Fv(Common)j(Lisp)e
4934 Fy(and)f(the)h(non)f(constrain)o(t)h(pac)o(k-)75 245
4935 y(age)d(p)q(ortions)h(of)f Fv(Screamer)p Fy(.)18 b(This)11
4936 b(is)g(in)g(striking)g(con)o(trast)i(to)e(constrain)o(t)h(logic)e
4937 (programming)e(languages)j(whic)o(h)75 295 y(cannot)17
4938 b(b)q(e)h(implemen)o(ted)d(e\016cien)o(tly)i(on)h(top)f(of)f(existing)h
4939 Fv(Pr)o(olog)h Fy(implemen)o(tations)c(but)k(rather)g(necessitate)75
4940 345 y(creating)c(a)g(new)g(language)f(implemen)o(tation.)137
4941 394 y(T)m(o)f(illustrate)g(the)g(essen)o(tial)h(organization)e(of)g
4942 (the)i(constrain)o(t)g(pac)o(k)n(age)e(and)h(ho)o(w)g(it)g(is)g(implem)
4943 o(en)o(ted)f(on)h(top)g(of)75 444 y(nondeterministic)h
4944 Fv(Common)j(Lisp)p Fy(,)d(\014gure)h(4)f(con)o(tains)g(a)g(greatly)g
4945 (simpli\014ed)e(v)o(ersion)i(of)g(the)h(constrain)o(t)f(pac)o(k)n(age)
4946 75 494 y(whic)o(h)k(supp)q(orts)h(only)f(b)q(o)q(olean)g(constrain)o
4947 (ts.)28 b(This)17 b(v)o(ersion)h(is)f(th)o(us)g(analogous)f(to)h(what)g
4948 (is)g(commonly)d(called)75 544 y(a)20 b(truth)h(main)o(tenance)e
4949 (system)h(or)g(TMS.)36 b(V)m(ariables)20 b(ha)o(v)o(e)g(t)o(w)o(o)g
4950 (slots,)h(a)f Fq(value)f Fy(whic)o(h)h(is)g(either)h
4951 Fq(t)p Fy(,)g Fq(nil)e Fy(or)75 594 y Fq(:unassigned)p
4952 Fy(,)12 b(and)j(a)g(list)f(of)h Fq(noticers)p Fy(,)e(pro)q(cedures)k
4953 (to)e(b)q(e)h(called)e(to)h(p)q(erform)f(constrain)o(t)i(propagation)d
4954 (when)75 643 y(a)g(v)n(ariable)f(is)h(assigned)h(a)e(v)n(alue.)18
4955 b(The)13 b(functions)g Fq(notv)g Fy(and)g Fq(andv)f Fy(tak)o(e)h(v)n
4956 (ariables)g(as)g(argumen)o(ts)f(and)h(create)i(and)75
4957 693 y(return)j(a)f(new)h(v)n(ariable)e(constrained)i(b)o(y)f(the)g
4958 (appropriate)h(relation)e(to)h(the)h(argumen)o(ts.)27
4959 b(The)18 b(constrain)o(ts)g(are)75 743 y(implemen)o(ted)9
4960 b(via)h(noticers)i(attac)o(hed)f(b)q(oth)g(to)g(the)h(argumen)o(t)d
4961 (and)i(result)h(v)n(ariables.)k(The)11 b(function)g Fq(set-value)e
4962 Fy(is)75 793 y(used)i(to)f(set)i(the)f(v)n(alue)e(of)h(a)g(v)n
4963 (ariable.)16 b(It)10 b(\014rst)h(c)o(hec)o(ks)h(whether)f(the)g(v)n
4964 (ariable)f(can)g(b)q(e)h(set)g(to)f(the)h(giv)o(en)f(v)n(alue,)g
4965 (failing)75 843 y(if)i(it)g(cannot.)18 b(If)13 b(the)g(v)n(ariable)f(w)
4966 o(as)g(not)h(previously)f(b)q(ound,)h Fq(set-value)e
4967 Fy(calls)h(its)h(noticers)h(after)f(setting)g(its)g(v)n(alue)75
4968 892 y(in)h(order)h(to)g(p)q(erform)e(constrain)o(t)i(propagation.)k
4969 (Note)14 b(that)h(the)g(functions)g Fq(notv)p Fy(,)e
4970 Fq(andv)g Fy(and)i Fq(set-value)d Fy(are)j(all)75 942
4971 y(deterministic.)k(This)14 b(is)g(in)g(k)o(eeping)h(with)f(the)h
4972 (requiremen)o(t)f(that)g(constrain)o(t)h(propagation)e(b)q(e)i(a)f
4973 (fast)h(op)q(eration.)75 992 y(Nonetheless,)20 b(it)e(is)f(an)h
4974 (incomplete)f(metho)q(d)g(for)g(\014nding)g(solutions)h(to)g(prop)q
4975 (ositional)e(satis\014abilit)o(y)g(problems.)75 1042
4976 y(Man)o(y)10 b(truth)h(main)o(tenance)f(systems)h(rely)f(solely)h(on)f
4977 (constrain)o(t)h(propagation)e(and)i(are)g(th)o(us)g(incomplete.)16
4978 b(Figure)10 b(4)75 1092 y(sho)o(ws)h(ho)o(w)e(a)h(TMS)h(built)e(in)h
4979 Fv(Screamer)h Fy(can)f(circum)o(v)o(en)o(t)g(this)g(problem)f(b)o(y)h
4980 (pro)o(viding)f(a)h(ho)q(ok)g(in)o(to)f(bac)o(ktrac)o(king)75
4981 1142 y(searc)o(h.)22 b(The)15 b(function)g Fq(solution)e
4982 Fy(is)i(suc)o(h)g(a)g(ho)q(ok)f(whic)o(h)h(nondeterministically)e
4983 (assigns)i(v)n(alues)g(to)g(unassigned)75 1191 y(v)n(ariables,)j(in)o
4984 (terlea)o(ving)f(constrain)o(t)i(propagation)e(with)g(eac)o(h)i
4985 (assignmen)o(t.)30 b(The)18 b(\014nal)g(expression)h(in)f(\014gure)g(4)
4986 75 1241 y(sho)o(ws)c(ho)o(w)g(this)g(TMS)g(can)g(b)q(e)g(used)h(to)f
4987 (\014nd)g(all)e(solutions)i(to)g(an)o(y)f(prop)q(ositional)g
4988 (satis\014abilit)o(y)f(problem.)137 1291 y(Figure)j(5)g(con)o(tains)f
4989 (a)h(program)e(for)i(learning)f(the)h(syn)o(tactic)h(categories)f(of)f
4990 (w)o(ords)h(app)q(earing)g(in)f(a)h(corpus)h(of)75 1341
4991 y(sen)o(tences.)21 b(It)14 b(is)f(a)h(problem)f(\014rst)h(prop)q(osed)h
4992 (and)f(solv)o(ed)g(b)o(y)f(Ra)o(yner)h(et)h(al.)d(\(1988\).)18
4993 b(The)c(basic)g(idea)g(is)f(that)h(y)o(ou)75 1391 y(are)f(presen)o(ted)
4994 h(with)e(a)h(con)o(text)g(free)g(grammar)c(and)j(a)h(corpus)g(of)f(sen)
4995 o(tences)j(generated)f(b)o(y)e(that)g(grammar)e(but)i(do)75
4996 1440 y(not)g(kno)o(w)g(the)i(syn)o(tactic)f(categories)g(of)f(the)h(w)o
4997 (ords)g(app)q(earing)f(in)g(the)i(corpus.)k(One)13 b(can)g(\014nd)g(a)f
4998 (lexicon)g(mapping)75 1490 y(w)o(ords)g(to)g(categories)h(b)o(y)f
4999 (nondeterministically)e(en)o(umerating)g(all)h(p)q(ossible)h(mappings)e
5000 (and)i(\014ltering)g(out)g(the)g(ones)75 1540 y(whic)o(h)i(do)g(not)h
5001 (allo)o(w)d(the)j(sen)o(tences)i(to)e(b)q(e)f(parsed)i(b)o(y)e(the)h
5002 (grammar.)h(The)f(k)o(ey)f(to)h(making)d(this)i(tractable)h(is)f(to)75
5003 1590 y(order)i(the)f(searc)o(h)h(so)f(as)g(to)g(dela)o(y)f(the)i(pro)q
5004 (cess)g(of)e(making)f(nondeterministic)h(c)o(hoices)i(for)e(lexical)g
5005 (en)o(tries)i(for)f(as)75 1640 y(long)e(as)h(p)q(ossible.)137
5006 1689 y(Figure)20 b(5)f(sho)o(ws)i(a)e Fv(Screamer)h Fy(v)o(ersion)g(of)
5007 f(the)h(original)e Fv(Pr)o(olog)i Fy(solution.)35 b(The)20
5008 b(v)n(ariable)f Fq(*grammar*)75 1739 y Fy(con)o(tains)d(a)g(list)g(of)g
5009 (con)o(text)h(free)g(rules.)26 b(The)17 b(function)f
5010 Fq(lhs)g Fy(returns)i(the)f(category)f(on)g(the)h(left)g(hand)f(side)h
5011 (of)e(a)75 1789 y(rule)j(while)g(the)g(function)g Fq(rhs)f
5012 Fy(returns)j(the)e(list)g(of)f(categories)i(forming)d(the)i(righ)o(t)g
5013 (hand)g(side)g(of)f(a)h(rule.)31 b(The)75 1839 y(function)20
5014 b Fq(parse)e Fy(returns)k Fq(t)d Fy(if)g(a)h(list)f(of)g
5015 Fu(wor)n(ds)g Fy(can)h(b)q(e)h(parsed)g(as)e(a)h(phrase)h(of)e(a)g(giv)
5016 o(en)h Fu(c)n(ate)n(gory)f Fy(and)h(fails)75 1889 y(otherwise.)g(It)14
5017 b(is)g(essen)o(tially)g(a)g(simple)f(top-do)o(wn)g(left-to-righ)o(t)g
5018 (nondeterministic)h(parser.)20 b(It)14 b(calls)g Fq(parse-rule)75
5019 1939 y Fy(whic)o(h)i(nondeterministically)e(tries)j(to)e(parse)i(the)g
5020 Fu(wor)n(ds)e Fy(using)h(ev)o(ery)g(grammar)d(rule)j(whic)o(h)g(con)o
5021 (tains)g Fu(c)n(ate)n(gory)75 1988 y Fy(as)e(its)g(left)g(hand)g(side.)
5022 20 b(The)14 b(core)h(of)f(the)g(parser)i(is)e(the)g(function)g
5023 Fq(parse-categories)p Fy(.)i(It)e(tak)o(es)h(the)f(righ)o(t)g(hand)75
5024 2038 y(side)h(of)e(a)h(rule)g(and)g(nondeterministically)f(splits)h(a)g
5025 (list)g(of)f(w)o(ords)i(in)o(to)e(sub-phrases)j(to)e(assign)g(to)g(eac)
5026 o(h)h(category)75 2088 y(in)e(the)i(righ)o(t)e(hand)h(side,)g(in)f(ev)o
5027 (ery)i(p)q(ossible)f(w)o(a)o(y)m(,)e(and)i(attempts)g(to)f(recursiv)o
5028 (ely)i(parse)g(eac)o(h)f(sub-phrase.)137 2138 y(So)k(far)f(this)g(is)h
5029 (a)f(straigh)o(tforw)o(ard)g(parser.)30 b(Nothing)17
5030 b(ab)q(out)g(this)h(parser)g(is)g(particular)f(to)g(the)h(problem)f(of)
5031 75 2188 y(category)j(acquisition.)33 b(The)19 b(\014rst)h(de\014nition)
5032 f(for)g(the)g(function)g Fq(category)f Fy(completes)h(the)h
5033 (de\014nition)e(of)h(this)75 2237 y(parser.)35 b(By)19
5034 b(replacing)g(this)g(de\014nition)g(with)g(the)g(second)h(one,)g(the)g
5035 (parser)g(is)f(transformed)g(in)o(to)f(a)h(language)75
5036 2287 y(acquisition)13 b(device.)18 b(While)13 b(the)h(\014rst)h
5037 (de\014nition)e(returns)i(the)f(categories)g(asso)q(ciated)h(with)e(a)g
5038 (w)o(ord)h(deriv)o(ed)g(from)75 2337 y(a)i(pre-existing)h(lexicon,)f
5039 (the)g(second)i(de\014nition)e(creates)i(that)e(lexicon)g(on)g(the)h
5040 (\015y)m(.)25 b(It)16 b(enforces)i(the)f(monosem)o(y)75
5041 2387 y(constrain)o(t)i(b)o(y)g(returning)h(the)f(category)h(of)e(a)h(w)
5042 o(ord)g(whic)o(h)g(is)g(already)g(in)f(the)i(lexicon.)33
5043 b(New)20 b(lexical)e(en)o(tries)75 2437 y(are)f(added)g(as)f(new)h(w)o
5044 (ords)g(are)f(encoun)o(tered,)j(nondeterministically)c(assigning)g
5045 (categories)i(to)g(eac)o(h)g(new)g(w)o(ord.)75 2487 y(Notice)11
5046 b(ho)o(w)f(lexical)f(en)o(tries)j(are)f(added)f(b)o(y)h(p)q(erforming)d
5047 (lo)q(cal)i(side)h(e\013ects)h(to)e(a)h(hash)f(table,)h(something)e(p)q
5048 (ossible)h(in)75 2536 y Fv(Screamer)k Fy(but)f(not)g(in)f
5049 Fv(Pr)o(olog)q Fy(.)17 b(The)d(last)e(expression)j(in)d(\014gure)i(5)e
5050 (illustrates)h(ho)o(w)g(to)g(solv)o(e)f(a)h(giv)o(en)g(category)75
5051 2586 y(acquisition)j(puzzle)i(b)o(y)e(forming)f(a)h(series)j(of)d
5052 (calls)g(to)h(the)h(parser,)g(one)f(for)g(eac)o(h)g(sen)o(tence)i(in)e
5053 (the)g(corpus,)h(and)992 2723 y(36)p eop
5054 %%Page: 37 37
5055 37 36 bop 186 197 1654 2 v 186 2642 2 2445 v 238 241
5056 a Ff(\(defstruc)o(t)17 b(\(boolean)o(-va)o(ri)o(abl)o(e)g(\(:conc-n)o
5057 (ame)f(nil\)\))i(\(value)f(:unassign)o(ed\))f(noticers\))238
5058 333 y(\(defun)h(notb)h(\(x\))257 378 y(\(let)g(\(\(z)h(\(make-boo)o
5059 (lea)o(n-)o(var)o(iab)o(le)o(\)\)\))277 424 y(\(local)e(\(push)h
5060 (#'\(lambda)e(\(\))j(\(set-valu)o(e)e(x)i(\(not)f(\(value)f(z\)\)\)\))h
5061 (\(noticers)e(z\)\))414 469 y(\(push)i(#'\(lambda)e(\(\))j(\(set-valu)o
5062 (e)e(z)i(\(not)f(\(value)f(x\)\)\)\))h(\(noticers)e(x\)\)\))277
5063 515 y(z\)\))238 606 y(\(defun)h(andb)h(\(x)h(y\))257
5064 652 y(\(let)f(\(\(z)h(\(make-boo)o(lea)o(n-)o(var)o(iab)o(le)o(\)\)\))
5065 277 698 y(\(local)297 743 y(\(push)e(#'\(lambda)f(\(\))473
5066 789 y(\(cond)i(\(\(value)f(x\))610 835 y(\(unless)g(\(eq)i(\(value)e
5067 (y\))i(:unassign)o(ed\))d(\(set-valu)o(e)h(z)i(\(value)e(y\)\)\))610
5068 880 y(\(unless)g(\(eq)i(\(value)e(z\))i(:unassign)o(ed\))d(\(set-valu)o
5069 (e)h(y)i(\(value)e(z\)\)\)\))591 926 y(\(t)i(\(set-valu)o(e)d(z)k
5070 (nil\)\)\)\))414 972 y(\(noticers)c(x\)\))297 1017 y(\(push)h
5071 (#'\(lambda)f(\(\))473 1063 y(\(cond)i(\(\(value)f(y\))610
5072 1109 y(\(unless)g(\(eq)i(\(value)e(x\))i(:unassign)o(ed\))d(\(set-valu)
5073 o(e)h(z)i(\(value)e(x\)\)\))610 1154 y(\(unless)g(\(eq)i(\(value)e(z\))
5074 i(:unassign)o(ed\))d(\(set-valu)o(e)h(x)i(\(value)e(z\)\)\)\))591
5075 1200 y(\(t)i(\(set-valu)o(e)d(z)k(nil\)\)\)\))414 1246
5076 y(\(noticers)c(y\)\))297 1291 y(\(push)h(#'\(lambda)f(\(\))473
5077 1337 y(\(cond)i(\(\(value)f(z\))i(\(set-val)o(ue)d(x)k(t\))e
5078 (\(set-value)e(y)j(t\)\))591 1383 y(\(t)g(\(if)f(\(eq)h(\(value)e(x\))i
5079 (t\))g(\(set-val)o(ue)d(y)k(nil\)\))650 1428 y(\(if)e(\(eq)h(\(value)e
5080 (y\))i(t\))g(\(set-val)o(ue)d(x)k(nil\)\)\)\)\))414 1474
5081 y(\(noticers)c(z\)\))297 1520 y(z\)\)\))238 1611 y(\(defun)h(orb)i(\(x)
5082 f(y\))h(\(notb)f(\(andb)g(\(notb)f(x\))i(\(notb)f(y\)\)\)\))238
5083 1702 y(\(defun)f(set-value)f(\(variable)g(value\))257
5084 1748 y(\(cond)i(\(\(eq)g(\(value)f(variable\))g(:unassig)o(ned)o(\))395
5085 1794 y(\(local)g(\(setf)h(\(value)f(variable\))f(value\)\))395
5086 1839 y(\(dolist)h(\(noticer)f(\(noticers)g(variable\)\))g(\(funcall)h
5087 (noticer\))o(\)\))375 1885 y(\(t)i(\(unless)e(\(eq)h(\(value)g
5088 (variable)o(\))f(value\))g(\(fail\)\)\)\)\))238 1976
5089 y(\(defun)g(boolean-so)o(lu)o(tio)o(n)f(\(variables\))257
5090 2022 y(\(if)j(\(null)f(variable)o(s\))336 2068 y('\(\))336
5091 2113 y(\(let)g(\(\(variabl)o(e)f(\(first)g(variables)o(\)\)\))355
5092 2159 y(\(when)h(\(eq)h(\(value)e(variable\))f(:unassigne)o(d\))375
5093 2205 y(\(set-value)g(variable)g(\(either)h(t)i(nil\)\)\))355
5094 2250 y(\(cons)f(\(value)f(variable\))g(\(boolean)o(-so)o(lut)o(io)o(n)g
5095 (\(rest)g(variables\))o(\)\)\))o(\)\))238 2342 y(\(defun)g(sat-proble)o
5096 (m)f(\(\))257 2387 y(\(all-values)277 2433 y(\(let)i(\(\(x)h(\(make-bo)
5097 o(ole)o(an)o(-va)o(ria)o(bl)o(e\)\))395 2479 y(\(y)g(\(make-bo)o(ole)o
5098 (an)o(-va)o(ria)o(bl)o(e\)\))395 2524 y(\(z)g(\(make-bo)o(ole)o(an)o
5099 (-va)o(ria)o(bl)o(e\)\))o(\))297 2570 y(\(set-valu)o(e)d(\(andb)i
5100 (\(orb)g(x)h(\(notb)f(y\)\))g(\(orb)h(y)g(\(notb)e(z\)\)\))i(t\))297
5101 2616 y(\(boolean-)o(so)o(lut)o(io)o(n)e(\(list)g(x)j(y)f(z\)\)\)\)\))p
5102 1837 2642 V 186 2644 1654 2 v 193 2757 a FA(Figure)11
5103 b(4:)16 b(A)10 b Fz(Screamer)g FA(program)i(for)e(solving)i(prop)q
5104 (osition)q(al)i(satis\014abili)q(t)o(y)f(problems)f(using)g(a)e(com)o
5105 (bination)193 2802 y(of)i(constrain)o(t)j(propagation)g(and)f(bac)o
5106 (ktrac)o(king)h(searc)o(h.)992 2723 y Fy(37)p eop
5107 %%Page: 38 38
5108 38 37 bop 233 197 1560 2 v 233 3361 2 3165 v 272 244
5109 a Fq(\(defvar)20 b(*grammar*)g('\(\(s)h(np)g(vp\))707
5110 294 y(\(np)h(det)f(n\))707 344 y(\(np)h(n\))707 394 y(\(vp)g(v\))707
5111 443 y(\(vp)g(v)f(np\))707 493 y(\(vp)h(v)f(np)h(np\))707
5112 543 y(\(vp)g(v)f(pp\))707 593 y(\(vp)h(v)f(np)h(pp\))707
5113 643 y(\(pp)g(p)f(np\)\)\))272 742 y(\(defun)f(lhs)h(\(rule\))g(\(car)g
5114 (rule\)\))272 842 y(\(defun)f(rhs)h(\(rule\))g(\(cdr)g(rule\)\))272
5115 941 y(\(defun)f(categories)g(\(grammar\))293 991 y(\(remove-duplicates)
5116 315 1041 y(\(set-difference)f(\(reduce)h(#'append)g(grammar\))g
5117 (\(mapcar)h(#'first)f(grammar\))664 1091 y(:test)h(#'eq\))315
5118 1141 y(:test)g(#'eq\)\))272 1240 y(\(defun)f(parse-categories)f
5119 (\(categories)g(words1)i(&optional)f(words2\))293 1290
5120 y(\(if)i(\(null)e(categories\))381 1340 y(\(if)h(\(and)g(\(null)f
5121 (words1\))h(\(null)f(words2\)\))h(t)g(\(fail\)\))381
5122 1390 y(\(either)f(\(progn)g(\(parse)h(\(first)f(categories\))g
5123 (words1\))707 1440 y(\(parse-categories)f(\(rest)h(categories\))g
5124 (words2\)\))555 1489 y(\(if)h(\(null)g(words1\))642 1539
5125 y(\(fail\))642 1589 y(\(parse-categories)664 1639 y(categories)664
5126 1689 y(\(reverse)f(\(rest)h(\(reverse)f(words1\)\)\))664
5127 1738 y(\(append)g(\(last)h(words1\))f(words2\)\)\)\)\)\))272
5128 1838 y(\(defun)g(parse-rule)g(\(category)g(words)g(rules\))293
5129 1888 y(\(if)i(\(null)e(rules\))381 1938 y(\(fail\))381
5130 1988 y(\(either)g(\(if)h(\(eq)g(\(lhs)g(\(first)g(rules\)\))f
5131 (category\))642 2037 y(\(parse-categories)e(\(rhs)j(\(first)g
5132 (rules\)\))f(words\))642 2087 y(\(fail\)\))555 2137 y(\(parse-rule)f
5133 (category)h(words)h(\(rest)g(rules\)\)\)\)\))272 2237
5134 y(\(defun)f(parse)h(\(category)f(words\))293 2286 y(\(if)i(\(null)e
5135 (\(rest)h(words\)\))381 2336 y(\(if)g(\(eq)g(category)f(\(category)g
5136 (\(first)g(words\)\)\))h(t)g(\(fail\)\))381 2386 y(\(parse-rule)e
5137 (category)h(words)h(*grammar*\)\)\))272 2486 y(\(defun)f(category)g
5138 (\(word\))h(\(member-of)e(\(categories)h(word\)\)\))272
5139 2585 y(\(defun)g(category)g(\(word\))293 2635 y(\(declare)g(\(special)h
5140 (lexicon\)\))293 2685 y(\(let)g(\(\(category)f(\(gethash)g(word)h
5141 (lexicon\)\)\))315 2735 y(\(if)g(category)402 2785 y(category)402
5142 2834 y(\(local)g(\(setf)g(\(gethash)f(word)h(lexicon\))686
5143 2884 y(\(member-of)e(\(categories)h(*grammar*\)\)\)\)\)\)\))272
5144 2984 y(\(defun)g(grow-up)g(\(\))293 3034 y(\(all-values)315
5145 3083 y(\(let)h(\(\(lexicon)f(\(make-hash-table)e(:test)j(#'eq\)\)\))337
5146 3133 y(\(declare)f(\(special)g(lexicon\)\))337 3183 y(\(progn)g
5147 (\(parse)h('s)g('\(the)g(cup)g(slid)g(from)g(john)g(to)h(mary\)\))489
5148 3233 y(\(parse)f('s)g('\(john)g(walked)f(to)i(the)f(table\)\)\))337
5149 3283 y(\(iterate)f(\(for)h(\(word)g(category\))f(in-hashtable)f
5150 (lexicon\))533 3334 y(\(format)h(t)i(")773 3323 y(~)773
5151 3334 y(\045)795 3327 y(~)795 3334 y(S:)882 3327 y(~)882
5152 3334 y(S")f(word)g(category\)\)\)\)\))p 1791 3361 V 233
5153 3363 1560 2 v 365 3476 a FA(Figure)14 b(5:)j(A)c Fz(Screamer)g
5154 FA(program)h(for)f(learning)i(the)e(syn)o(tactic)h(categories)h(of)d(w)
5155 o(ords.)992 2723 y Fy(38)p eop
5156 %%Page: 39 39
5157 39 38 bop 75 195 a Fy(bac)o(ktrac)o(king)14 b(un)o(til)f(a)g(solution)g
5158 (is)h(found.)137 245 y(Siskind)19 b(\(1990\))f(extended)j(the)f(w)o
5159 (ork)f(of)f(Ra)o(yner)h(et)h(al.)e(\(1988\))g(in)h(a)g(n)o(um)o(b)q(er)
5160 g(of)f(w)o(a)o(ys.)34 b(One)20 b(imp)q(ortan)o(t)75 295
5161 y(extension)14 b(w)o(as)f(using)g(a)g(constrain)o(t)h(propagation)e
5162 (based)i(metho)q(d)f(rather)h(than)f(a)g(pure)i(bac)o(ktrac)o(king)e
5163 (metho)q(d)f(to)75 345 y(solv)o(e)f(the)h(puzzle.)18
5164 b(The)12 b(k)o(ey)g(ideas)f(b)q(ehind)h(this)g(metho)q(d)e(are)i
5165 (illustrated)f(in)g(\014gure)h(6.)17 b(This)11 b(is)h(a)f(greatly)g
5166 (simpli\014ed)75 394 y(v)o(ersion)17 b(of)f(the)i(program)d(describ)q
5167 (ed)k(in)d(Siskind)h(\(1990\).)1027 379 y Fo(8)1072 394
5168 y Fy(This)g(program)e(w)o(as)i(deriv)o(ed)g(from)f(the)h(program)e(in)
5169 75 444 y(\014gure)h(5)g(b)o(y)f(c)o(hanging)g(only)g(those)i(parts)f
5170 (that)g(app)q(ear)g(in)f(upp)q(er)i(case)g(letters.)24
5171 b(Lik)o(e)16 b(the)g(program)e(in)h(\014gure)i(1,)75
5172 494 y(this)e(illustrates)g(a)g(t)o(ypical)f(clic)o(h)o(\023)-20
5173 b(e)15 b(for)g(con)o(v)o(erting)g(bac)o(ktrac)o(king)f(programs)g(in)o
5174 (to)g(constrain)o(t)i(propagation)d(based)75 544 y(ones.)20
5175 b(In)14 b(the)h(deriv)o(ed)f(program,)f(the)h(functions)h
5176 Fq(parse-categories)o Fy(,)c Fq(parse-rule)p Fy(,)h Fq(parse)h
5177 Fy(and)h Fq(category)f Fy(are)75 594 y(all)g(deterministic.)19
5178 b(They)c(read)g(in)f(a)g(corpus)i(and)e(construct)i(a)e(large)g
5179 (constrain)o(t)h(net)o(w)o(ork)g(corresp)q(onding)g(to)f(the)75
5180 643 y(category)g(acquisition)g(puzzle.)19 b(The)14 b(last)g(expression)
5181 h(in)f(\014gure)h(6)e(triggers)i(the)f(constrain)o(t)h(solving)e(pro)q
5182 (cess.)20 b(It)14 b(is)75 693 y(the)g(only)g(nondeterministic)f
5183 (expression)i(in)e(the)i(program.)137 743 y(Crossw)o(ord)e(puzzles)g
5184 (are)f(an)f(in)o(teresting)h(problem)f(for)g(illustrating)g(constrain)o
5185 (t)h(satisfaction)f(tec)o(hniques.)18 b(Con-)75 793 y(sider)e(the)g
5186 (problem)f(of)f(consisten)o(tly)j(\014tting)e(a)g(subset)i(of)e(a)g
5187 (giv)o(en)g(set)i(of)e(w)o(ords)g(in)o(to)g(a)g(giv)o(en)g(crossw)o
5188 (ord)i(puzzle)75 843 y(without)f(the)g(clues.)25 b(Figure)16
5189 b(7)f(sho)o(ws)i(a)e(sample)g(crossw)o(ord)i(puzzle)g(and)e(set)i(of)e
5190 (w)o(ords.)25 b(Puzzles)17 b(suc)o(h)g(as)f(these)75
5191 892 y(can)e(easily)g(b)q(e)h(solv)o(ed)f(using)g(the)h
5192 Fv(Screamer)g Fy(constrain)o(t)g(pac)o(k)n(age.)j(Figure)d(9)f(giv)o
5193 (es)g(a)g Fv(Screamer)h Fy(program)d(for)75 942 y(solving)f(crossw)o
5194 (ord)j(puzzles.)19 b(A)13 b(v)n(ariable)e(is)h(created)i(for)f(eac)o(h)
5195 g(across)g(and)g(do)o(wn)f(en)o(try)h(whic)o(h)f(w)o(e)h(will)e(call)h
5196 (place-)75 992 y(men)o(ts.)17 b(Eac)o(h)12 b(v)n(ariable)g(is)g(giv)o
5197 (en)g(a)g(\014xed)g(domain)e(ranging)i(o)o(v)o(er)g(all)f(w)o(ords)h
5198 (of)g(the)h(requisite)g(length.)k(A)c(constrain)o(t)75
5199 1042 y(is)e(established)g(for)g(eac)o(h)g(pair)g(of)f(v)n(ariables)g
5200 (that)h(represen)o(ts)i(t)o(w)o(o)e(in)o(tersecting)h(placemen)o(ts)e
5201 (to)h(enforce)h(the)f(require-)75 1092 y(men)o(t)h(that)i(they)g(con)o
5202 (tain)f(the)h(same)f(letter)h(at)f(their)h(in)o(tersection)h(p)q(oin)o
5203 (t.)i(The)d(function)f Fq(crossword-variabl)o(es)75 1142
5204 y Fy(creates)21 b(the)e(v)n(ariables)g(and)f(asserts)j(the)e(constrain)
5205 o(ts)h(b)q(et)o(w)o(een)g(them.)33 b(It)19 b(is)g(a)f(deterministic)h
5206 (function.)33 b(The)75 1191 y(function)14 b Fq(crosswordv)d
5207 Fy(is)j(a)g(nondeterministic)f(function)h(whic)o(h)f(initiates)h(the)g
5208 (searc)o(h)h(for)f(a)f(solution.)137 1241 y(The)i(arithmetic)e
5209 (constrain)o(t)i(primitiv)o(es)d(of)i(the)h Fv(Screamer)g
5210 Fy(constrain)o(t)f(pac)o(k)n(age)g(can)h(b)q(e)g(used)g(to)f(\014nd)g
5211 (solu-)75 1291 y(tions)9 b(to)h(complex)e(systems)i(of)f(nonlinear)g
5212 (equations)h(and)f(inequalities)g(o)o(v)o(er)h(the)g(reals,)g(as)g(w)o
5213 (ell)f(as)h(in)o(teger)g(program-)75 1341 y(ming)e(problems.)16
5214 b(Figures)11 b(10)f(illustrates)h(ho)o(w)f(this)h(can)g(b)q(e)g(done.)
5215 17 b(Problems)10 b(o)o(v)o(er)g(the)h(reals)g(m)o(ust)f(b)q(e)h(solv)o
5216 (ed)f(using)75 1391 y Fq(static-ordering)i Fy(and)j Fq
5217 (divide-and-conquer)o(-forc)o(e)p Fy(.)k(In)o(teger)d(programming)c
5218 (problems)i(can)i(b)q(e)g(solv)o(ed)f(us-)75 1440 y(ing)c(either)i
5219 Fq(static-ordering)8 b Fy(or)k Fq(reorder)e Fy(as)i(w)o(ell)f(as)h
5220 (either)h Fq(linear-force)c Fy(or)j Fq(divide-and-conque)o(r-for)o(ce)
5221 75 1490 y Fy(though)i(the)g(later)g(usually)f(will)g(yield)g(b)q(etter)
5222 i(p)q(erformance.)137 1540 y(Our)22 b(\014nal)e(example)f(is)h(an)h
5223 (illustration)e(of)h(a)h(standard)g(clic)o(h)o(\023)-20
5224 b(e)21 b(for)f(translating)g Fv(Pr)o(olog)h Fy(programs)f(in)o(to)75
5225 1590 y Fv(Screamer)q Fy(.)31 b(Figure)18 b(11)g(sho)o(ws)h(the)g
5226 (standard)f Fq(append)f Fy(function)h(in)g Fv(Pr)o(olog)q
5227 Fy(,)h(along)e(with)h(a)g(translation)g(of)75 1640 y(that)h
5228 Fv(Pr)o(olog)g Fy(program)e(in)o(to)h Fv(Screamer)p Fy(.)33
5229 b(Automation)16 b(of)i(this)h(translation)f(is)g(quite)h(straigh)o
5230 (tforw)o(ard.)32 b(A)75 1689 y(future)13 b(release)i(of)d
5231 Fv(Screamer)h Fy(will)f(ha)o(v)o(e)g(a)h(facilit)o(y)e(for)i(doing)f
5232 (this.)17 b(This)c(will)e(allo)o(w)h(complete)g(in)o(ter-op)q(erabilit)
5233 o(y)75 1739 y(b)q(et)o(w)o(een)j Fv(Common)i(Lisp)d Fy(and)f
5234 Fv(Pr)o(olog)q Fy(.)75 1877 y Fw(13)69 b(Using)23 b(Screamer)75
5235 1968 y Fy(Y)m(ou)13 b(m)o(ust)g(include)h(the)h(follo)o(wing)c(three)k
5236 (expressions)h(at)d(the)i(top)f(of)f(ev)o(ery)i(\014le)e(whic)o(h)h
5237 (uses)h Fv(Screamer)q Fy(.)p 570 2015 885 2 v 570 2189
5238 2 175 v 609 2062 a Fq(\(in-package)20 b(:my-package\))609
5239 2112 y(\(use-package)g('\(:lisp)g(:screamer\)\))609 2162
5240 y(\(shadowing-import)f('\(screamer::def)o(un\)\))p 1453
5241 2189 V 570 2191 885 2 v 75 2257 a Fy(Y)m(ou)c(ma)o(y)f(replace)j
5242 Fq(:my-package)c Fy(with)i(the)i(desired)f(pac)o(k)n(age)g(name)e(for)i
5243 (y)o(our)f(\014le)h(and)f(ha)o(v)o(e)h(that)g(pac)o(k)n(age)f(use)75
5244 2307 y(an)o(y)h(other)h(pac)o(k)n(ages)g(that)g(y)o(ou)f(wish.)26
5245 b Fv(Screamer)17 b Fy(m)o(ust)f(b)q(e)h(loaded)f(in)o(to)g(y)o(our)h
5246 Fv(Common)f(Lisp)h Fy(en)o(vironmen)o(t)75 2356 y(b)q(efore)e(y)o(ou)e
5247 (attempt)g(to)h(compile)e(or)i(load)f(an)o(y)g(\014le)h(whic)o(h)g
5248 (uses)h Fv(Screamer)q Fy(.)p 75 2391 750 2 v 121 2418
5249 a Fn(8)139 2430 y Fs(The)g(program)e(describ)q(ed)h(in)h(Siskind)f
5250 (\(1990\))g(w)o(as)i(written)e(prior)h(to)g(the)g(dev)o(elopmen)n(t)e
5251 (of)i Fm(Screamer)o Fs(.)28 b(Siskind)14 b(\(1991\))g(de-)75
5252 2469 y(scrib)q(es)e(con)o(tin)o(ued)e(w)o(ork)k(along)d(these)i(lines,)
5253 f(including)f(a)i(new)o(er)g(program)e(whic)o(h)i(is)g(written)f(in)h
5254 Fm(Screamer)o Fs(,)h(though)e(it)h(uses)f(only)75 2508
5255 y(nondetermi)o(nisti)o(c)d Fm(Lisp)i Fs(and)g(not)f(the)h(constrain)o
5256 (t)e(pac)o(k)n(age.)992 2723 y Fy(39)p eop
5257 %%Page: 40 40
5258 40 39 bop 167 228 1691 2 v 167 2446 2 2219 v 206 275
5259 a Fq(\(defun)21 b(parse-categories)o(v)e(\(categories)g(words1)i
5260 (&optional)f(words2\))228 325 y(\(if)h(\(null)g(categories\))315
5261 375 y(\(if)g(\(and)g(\(null)g(words1\))f(\(null)h(words2\)\))f(t)i
5262 (NIL\))315 424 y(\(ORV)f(\(progn)g(\(parsev)f(\(first)h(categories\))e
5263 (words1\))577 474 y(\(parse-categorie)o(sv)g(\(rest)h(categories\))g
5264 (words2\)\))424 524 y(\(if)h(\(null)g(words1\))511 574
5265 y(NIL)511 624 y(\(parse-categoriesv)533 673 y(categories)533
5266 723 y(\(reverse)f(\(rest)h(\(reverse)f(words1\)\)\))533
5267 773 y(\(append)g(\(last)h(words1\))f(words2\)\)\)\)\)\))206
5268 873 y(\(defun)h(parse-rulev)e(\(category)h(words)h(rules\))228
5269 922 y(\(if)g(\(null)g(rules\))315 972 y(NIL)315 1022
5270 y(\(ORV)g(\(if)g(\(eq)g(\(lhs)g(\(first)g(rules\)\))f(category\))511
5271 1072 y(\(parse-categoriesv)e(\(rhs)j(\(first)g(rules\)\))f(words\))511
5272 1122 y(NIL\))424 1172 y(\(parse-rulev)f(category)i(words)f(\(rest)h
5273 (rules\)\)\)\)\))206 1271 y(\(defun)g(parsev)f(\(category)g(words\))228
5274 1321 y(\(if)h(\(null)g(\(rest)g(words\)\))315 1371 y(\(EQUALV)f
5275 (CATEGORY)h(\(CATEGORYV)e(\(FIRST)i(WORDS\)\)\))315 1421
5276 y(\(parse-rulev)e(category)i(words)f(*grammar*\)\)\))206
5277 1520 y(\(defun)h(categoryv)f(\(word\))228 1570 y(\(declare)g(\(special)
5278 g(lexicon\)\))228 1620 y(\(let)h(\(\(category)f(\(gethash)g(word)h
5279 (lexicon\)\)\))250 1670 y(\(if)g(category)337 1719 y(category)337
5280 1769 y(\(setf)g(\(gethash)f(word)h(lexicon\))f(\(MEMBER-OFV)f
5281 (\(categories)h(*grammar*\)\)\)\)\)\))206 1869 y(\(defun)h(grow-upv)f
5282 (\(\))228 1919 y(\(let)h(\(\(lexicon)f(\(make-hash-table)e(:test)j
5283 (#'eq\)\)\))250 1969 y(\(declare)f(\(special)g(lexicon\)\))250
5284 2018 y(\(ASSERT!)g(\(ANDV)h(\(parsev)f('s)h('\(the)g(cup)g(slid)g(from)
5285 g(john)g(to)h(mary\)\))577 2068 y(\(parsev)e('s)h('\(john)g(walked)f
5286 (to)i(the)f(table\)\)\)\))250 2118 y(\(all-values)272
5287 2168 y(\(FUNCALL)f(\(REORDER)g(#'LINEAR-FORCE\))468 2218
5288 y(\(ITERATE)g(\(FOR)h(\(WORD)g(CATEGORY\))e(IN-HASHTABLE)h(LEXICON\))
5289 664 2267 y(\(DECLARE)g(\(IGNORE)g(WORD\)\))664 2317 y(\(COLLECT)g
5290 (CATEGORY\)\)\))272 2367 y(\(iterate)g(\(for)h(\(word)f(category\))g
5291 (in-hashtable)g(lexicon\))468 2418 y(\(format)g(t)i(")708
5292 2407 y(~)708 2418 y(\045)730 2411 y(~)730 2418 y(S:)816
5293 2411 y(~)816 2418 y(S")g(word)f(category\)\)\)\)\))p
5294 1856 2446 V 167 2448 1691 2 v 221 2561 a FA(Figure)15
5295 b(6:)i(A)12 b(constrain)o(t-based)k Fz(Screamer)d FA(program)h(for)e
5296 (learning)k(the)d(syn)o(tactic)h(categories)g(of)f(w)o(ords.)992
5297 2723 y Fy(40)p eop
5298 %%Page: 41 41
5299 41 40 bop 539 1730 a Fy(ad)122 b(al)137 b(alas)111 b(aloha)52
5300 b(art)122 b(at)539 1780 y(atl)117 b(bags)89 b(bang)k(base)72
5301 b(b)q(ore)96 b(coat)539 1830 y(dad)j(dart)94 b(dime)e(dine)74
5302 b(div)o(e)101 b(do)539 1879 y(eh)125 b(elf)i(er)147 b(ev)n(ade)50
5303 b(ev)o(en)95 b(fan)539 1929 y(fee)117 b(\014ne)106 b(gate)f(goat)71
5304 b(happ)o(y)64 b(hares)539 1979 y(hem)89 b(hide)94 b(hire)112
5305 b(hiv)o(e)76 b(ho)q(e)112 b(hone)539 2029 y(inn)c(largest)50
5306 b(learned)g(lee)102 b(lemons)49 b(lid)539 2079 y(lilac)91
5307 b(lip)123 b(lo)148 b(load)73 b(mates)68 b(mile)539 2128
5308 y(mirror)49 b(mist)90 b(mo)q(on)79 b(more)59 b(oak)111
5309 b(oliv)o(e)539 2178 y(ore)g(pans)87 b(paris)93 b(pa)o(y)85
5310 b(p)q(ea)112 b(p)q(edal)539 2228 y(p)q(enn)o(y)57 b(pier)101
5311 b(pile)116 b(pins)76 b(pits)108 b(raise)539 2278 y(rips)99
5312 b(ro)q(e)114 b(rop)q(es)86 b(ro)o(y)92 b(salads)66 b(see)539
5313 2328 y(slam)81 b(slat)105 b(some)90 b(sp)q(ot)73 b(steer)91
5314 b(stew)539 2378 y(tag)108 b(tame)79 b(tan)121 b(tank)68
5315 b(tea)120 b(tee)539 2427 y(tie)g(tigers)71 b(tire)119
5316 b(to)113 b(to)q(e)119 b(w)o(ager)539 2477 y(w)o(a)o(v)o(e)78
5317 b(wider)71 b(win)116 b(wires)276 2605 y FA(Figure)14
5318 b(7:)j(A)c(sample)h(crossw)o(ord)g(puzzle)g(whic)o(h)g(can)f(b)q(e)g
5319 (solv)o(ed)i(b)o(y)e(the)g(the)g(program)h(in)g(\014gure)g(8.)992
5320 2723 y Fy(41)p eop
5321 %%Page: 42 42
5322 42 41 bop 145 197 1735 2 v 145 3659 2 3463 v 184 244
5323 a Fq(\(defun)21 b(row)g(\(placement\))f(\(first)g(placement\)\))184
5324 344 y(\(defun)h(column)f(\(placement\))g(\(second)g(placement\)\))184
5325 443 y(\(defun)h(direction)f(\(placement\))f(\(third)i(placement\)\))184
5326 543 y(\(defun)g(placement-length)d(\(placement\))i(\(fourth)g
5327 (placement\)\))184 643 y(\(defun)h(intersect?)f(\(placement1)f
5328 (placement2\))206 692 y(\(and)228 742 y(\(not)i(\(eq)g(\(direction)f
5329 (placement1\))f(\(direction)h(placement2\)\)\))228 792
5330 y(\(if)h(\(eq)g(\(direction)f(placement1\))g('across\))315
5331 842 y(\(and)h(\(>=)g(\(row)g(placement1\))f(\(row)h(placement2\)\))424
5332 892 y(\(<=)g(\(row)g(placement1\))511 941 y(\(+)h(\(row)f(placement2\))
5333 e(\(placement-length)f(placement2\))i(-1\)\))424 991
5334 y(\(>=)h(\(column)g(placement2\))e(\(column)h(placement1\)\))424
5335 1041 y(\(<=)h(\(column)g(placement2\))511 1091 y(\(+)h(\(column)e
5336 (placement1\))f(\(placement-length)g(placement1\))g(-1\)\)\))315
5337 1141 y(\(and)i(\(>=)g(\(row)g(placement2\))f(\(row)h(placement1\)\))424
5338 1191 y(\(<=)g(\(row)g(placement2\))511 1240 y(\(+)h(\(row)f
5339 (placement1\))e(\(placement-length)f(placement1\))i(-1\)\))424
5340 1290 y(\(>=)h(\(column)g(placement1\))e(\(column)h(placement2\)\))424
5341 1340 y(\(<=)h(\(column)g(placement1\))511 1390 y(\(+)h(\(column)e
5342 (placement2\))f(\(placement-length)g(placement2\))g(-1\)\)\)\)\)\))184
5343 1489 y(\(defun)i(consistent-placem)o(ents?)272 1539 y(\(placement1)e
5344 (placement2)h(placement1-word)e(placement2-word\))206
5345 1589 y(\(or)j(\(not)g(\(intersect?)f(placement1)g(placement2\)\))293
5346 1639 y(\(if)i(\(eq)f(\(direction)e(placement1\))h('across\))381
5347 1689 y(\(char=)g(\(aref)h(placement1-word)664 1738 y(\(-)g(\(column)g
5348 (placement2\))e(\(column)h(placement1\)\)\))533 1788
5349 y(\(aref)h(placement2-word)664 1838 y(\(-)g(\(row)g(placement1\))f
5350 (\(row)h(placement2\)\)\)\))381 1888 y(\(char=)f(\(aref)h
5351 (placement2-word)664 1938 y(\(-)g(\(column)g(placement1\))e(\(column)h
5352 (placement2\)\)\))533 1988 y(\(aref)h(placement1-word)664
5353 2037 y(\(-)g(\(row)g(placement2\))f(\(row)h(placement1\)\)\)\)\)\))o
5354 (\))184 2137 y(\(defun)g(word-of-length)e(\(n)i(dictionary\))206
5355 2187 y(\(if)g(\(null)g(dictionary\))293 2237 y(\(fail\))293
5356 2286 y(\(if)h(\(=)f(\(length)f(\(first)h(dictionary\)\))e(n\))381
5357 2336 y(\(either)h(\(first)g(dictionary\))g(\(word-of-length)f(n)i
5358 (\(rest)g(dictionary\)\)\))381 2386 y(\(word-of-length)d(n)k(\(rest)f
5359 (dictionary\)\)\)\)\))184 2486 y(\(defun)g(check-placement)e
5360 (\(placement)g(word)i(solution\))206 2535 y(\(dolist)g
5361 (\(placement-word)d(solution\))228 2585 y(\(if)j(\(not)g
5362 (\(consistent-placem)o(ents?)446 2635 y(\(first)f(placement-word\))f
5363 (placement)h(\(second)g(placement-word\))f(word\)\))315
5364 2685 y(\(fail\)\)\)\))184 2785 y(\(defun)i(choose-placement)d
5365 (\(placements)i(solution\))206 2834 y(\(block)h(exit)228
5366 2884 y(\(dolist)f(\(placement)g(placements\))250 2934
5367 y(\(if)h(\(some)g(#'\(lambda)f(\(placement-word)o(\))533
5368 2984 y(\(intersect?)g(\(first)g(placement-word\))f(placement\)\))468
5369 3034 y(solution\))337 3083 y(\(return-from)g(exit)i(placement\)\)\))228
5370 3133 y(\(return-from)e(exit)i(\(first)g(placements\)\)\)\))184
5371 3233 y(\(defun)g(crossword)f(\(placements)f(dictionary)h(&optional)g
5372 (solution\))206 3283 y(\(if)h(\(null)g(placements\))293
5373 3333 y(solution)293 3382 y(\(let*)g(\(\(placement)f(\(choose-placeme)o
5374 (nt)f(placements)h(solution\)\))446 3432 y(\(word)h(\(word-of-length)d
5375 (\(placement-length)h(placement\))g(dictionary\)\)\))315
5376 3482 y(\(check-placement)g(placement)h(word)g(solution\))315
5377 3532 y(\(crossword)g(\(remove)g(placement)g(placements\))555
5378 3582 y(dictionary)555 3631 y(\(cons)h(\(list)f(placement)g(word\))h
5379 (solution\)\)\)\)\))p 1878 3659 V 145 3661 1735 2 v 386
5380 3774 a FA(Figure)15 b(8:)i(A)12 b(bac)o(ktrac)o(king)j
5381 Fz(Screamer)f FA(program)f(for)g(solving)i(crossw)o(ord)f(puzzles.)992
5382 2723 y Fy(42)p eop
5383 %%Page: 43 43
5384 43 42 bop 298 477 1430 2 v 298 2196 2 1719 v 337 525
5385 a Fq(\(defun)20 b(crossword-variables)e(\(placements)i(dictionary\))359
5386 575 y(\(iterate)381 624 y(\(with)g(variables)g(=)511
5387 674 y(\(iterate)533 724 y(\(for)h(placement)f(in)h(placements\))533
5388 774 y(\(collect)555 824 y(\(member-ofv)577 873 y(\(all-values)598
5389 923 y(\(let)g(\(\(word)g(\(member-of)f(dictionary\)\)\))620
5390 973 y(\(unless)h(\(=)g(\(length)f(word\))860 1023 y(\(placement-length)
5391 e(placement\)\))642 1073 y(\(fail\)\))620 1122 y(word\)\)\)\)\)\))381
5392 1172 y(\(for)i(\(variable1)g(.)44 b(remaining-varia)o(bles\))18
5393 b(on)k(variables\))381 1222 y(\(for)e(\(placement1)g(.)43
5394 b(remaining-placement)o(s\))19 b(on)i(placements\))381
5395 1272 y(\(iterate)402 1322 y(\(for)g(variable2)f(in)i(remaining-varia)o
5396 (bles\))402 1372 y(\(for)f(placement2)f(in)h(remaining-placement)o(s\))
5397 402 1421 y(\(if)g(\(intersect?)f(placement1)g(placement2\))489
5398 1471 y(\(let)h(\(\(placement1)f(placement1\))620 1521
5399 y(\(placement2)g(placement2\)\))511 1571 y(\(assert!)533
5400 1621 y(\(funcallv)g(#'\(lambda)g(\(word1)g(word2\))816
5401 1670 y(\(consistent-placeme)o(nts?)838 1720 y(placement1)g(placement2)g
5402 (word1)g(word2\)\))751 1770 y(variable1)751 1820 y(variable2\)\)\)\)\))
5403 381 1870 y(\(finally)g(\(return)g(variables\)\)\)\))337
5404 1969 y(\(defun)g(crosswordv)g(\(placements)g(dictionary\))359
5405 2019 y(\(mapcar)g(#'list)533 2069 y(placements)533 2119
5406 y(\(solution)g(\(crossword-variab)o(les)f(placements)g(dictionary\))751
5407 2169 y(\(reorder)h(#'linear-force\)\)\)\))p 1725 2196
5408 V 298 2198 1430 2 v 370 2311 a FA(Figure)14 b(9:)j(A)c(constrain)o
5409 (t-based)i(Screamer)f(program)g(for)e(solving)k(crossw)o(ord)d
5410 (puzzles.)992 2723 y Fy(43)p eop
5411 %%Page: 44 44
5412 44 43 bop 200 269 1626 2 v 200 991 2 723 v 239 316 a
5413 Fq(\(one-value)261 366 y(\(let)21 b(\(\(x)g(\(real-betweenv)e(-1e40)h
5414 (1e40\)\))391 416 y(\(y)i(\(real-betweenv)d(-1e40)h(1e40\)\))391
5415 466 y(\(z)i(\(real-betweenv)d(-1e40)h(1e40\)\)\))282
5416 515 y(\(assert!)h(\(andv)f(\(orv)h(\(=v)g(\(+v)h(\(*v)f(4)g(x)h(x)g
5417 (y\))893 565 y(\(*v)f(7)g(y)h(z)g(z\))893 615 y(\(*)f(6)h(x)f(x)h(z)f
5418 (z\)\))805 665 y(2\))718 715 y(\(=v)g(\(+v)h(\(*v)f(3)g(x)h(y\))893
5419 764 y(\(*v)f(2)g(y)h(y\))893 814 y(\(*v)f(5)g(x)h(y)g(z\)\))805
5420 864 y(-4\)\))609 914 y(\(>=v)f(\(*v)g(\(+v)h(x)f(y\))h(\(+v)f(y)g
5421 (z\)\))h(-5\)\)\)\))282 964 y(\(solution)e(\(list)h(x)h(y)f(z\))h
5422 (\(static-ordering)c(#'divide-and-conqu)o(er-fo)o(rce\)\))o(\))p
5423 1824 991 V 200 993 1626 2 v 459 1106 a FA(Figure)c(10:)k(A)12
5424 b Fz(Screamer)h FA(program)h(for)f(solving)i(nonlinear)h(inequaliti)q
5425 (es.)p 516 1334 994 2 v 516 2405 2 1071 v 555 1381 a
5426 Fq(append\([],x,x\).)555 1431 y(append\([a|x],y,[a)o(|z]\))o(:-app)o
5427 (end\(x)o(,y,z\))o(.)555 1530 y(\(defun)k(prolog-append)f(\(x)j(y)f
5428 (z\))577 1580 y(\(either)f(\(progn)h(\(assert!)f(\(equalv)g(x)i
5429 (nil\)\))904 1630 y(\(assert!)e(\(equalv)g(y)i(z\)\)\))751
5430 1680 y(\(let)f(\(\(x1)g(\(make-variable\)\))882 1730
5431 y(\(y1)g(\(make-variable\)\))882 1779 y(\(z1)g(\(make-variable\)\))882
5432 1829 y(\(a)g(\(make-variable\)\)\))773 1879 y(\(assert!)f(\(equalv)g(x)
5433 i(\(cons)f(a)g(x1\)\)\))773 1929 y(\(assert!)f(\(equalv)g(y)i(y1\)\))
5434 773 1979 y(\(assert!)e(\(equalv)g(z)i(\(cons)f(a)g(z1\)\)\))773
5435 2028 y(\(prolog-append)e(x1)i(y1)g(z1\)\)\)\))555 2128
5436 y(\(defun)f(split-list)g(\(\))577 2178 y(\(all-values)598
5437 2228 y(\(let)h(\(\(x)h(\(make-variable\))o(\))729 2278
5438 y(\(y)g(\(make-variable\))o(\)\))620 2327 y(\(prolog-append)d(x)j(y)f
5439 ('\(a)g(b)h(c)g(d\)\))620 2377 y(\(print)f(\(list)g(x)g(y\)\)\)\)\))p
5440 1508 2405 V 516 2407 994 2 v 424 2519 a FA(Figure)15
5441 b(11:)i(A)12 b(metho)q(d)i(for)f(translating)i Fz(Pr)o(olog)e
5442 FA(programs)h(in)o(to)g Fz(Screamer)992 2723 y Fy(44)p
5444 %%Page: 45 45
5445 45 44 bop 466 245 a Fy([)o(\()p Fq(either)o Fy(\)])652
5446 257 y Fo(c)710 245 y Fe(;)41 b Fy(\()p Fq(throw)11 b('fail)g(nil)o
5447 Fy(\))916 b(\(1\))435 307 y([\()p Fq(either)10 b Fp(e)p
5448 Fy(\)])652 320 y Fo(c)710 307 y Fe(;)41 b Fy([)p Fp(e)p
5449 Fy(])836 320 y Fo(c)2048 307 y Fy(\(2\))312 369 y([\()p
5450 Fq(either)10 b Fp(e)501 375 y Fo(1)527 369 y Fp(:)d(:)g(:)e(e)601
5451 375 y Fh(n)624 369 y Fy(\)])652 382 y Fo(c)710 369 y
5452 Fe(;)62 b Fy(\()p Fq(let)p Fy(\(\()p Fp(a)11 b(c)p Fy(\)\))826
5453 419 y(\()p Fq(catch)f('fail)18 b Fy([)o Fp(e)1120 425
5454 y Fo(1)1139 419 y Fy(])1151 432 y Fo(a)1169 419 y Fy(\))826
5455 463 y(.)826 480 y(.)826 497 y(.)826 547 y(\()p Fq(catch)10
5456 b('fail)18 b Fy([)o Fp(e)1120 553 y Fh(n)p Fi(\000)p
5457 Fo(1)1186 547 y Fy(])1197 559 y Fo(a)1216 547 y Fy(\))826
5458 596 y([)o Fp(e)856 602 y Fh(n)879 596 y Fy(])891 609
5459 y Fo(a)909 596 y Fy(\))2048 369 y(\(3\))509 659 y([\()p
5460 Fq(fail)o Fy(\)])652 671 y Fo(c)710 659 y Fe(;)41 b Fy(\()p
5461 Fq(throw)11 b('fail)g(nil)o Fy(\))916 b(\(4\))75 721
5462 y([\()p Fq(nondeterministic)o(-setf)8 b Fp(v)13 b(e)p
5463 Fy(\)])652 734 y Fo(c)710 721 y Fe(;)41 b Fy([)p Fp(e)p
5464 Fy(])857 742 y(\()p Fp(\025)p Fy(\()p Fp(d)p Fy(\))868
5465 792 y(\()p Fq(let)p Fy(\(\()p Fp(b)11 b(v)q Fy(\)\))880
5466 841 y(\()p Fq(unwind-protect)903 891 y Fy(\()p Fq(progn)f
5467 Fy(\()p Fq(setf)h Fp(v)i(d)p Fy(\))f(\()p Fq(funcall)e(c)h
5468 Fp(d)p Fy(\)\))891 941 y(\()p Fq(setq)g Fp(v)i(b)p Fy(\)\)\)\))2048
5469 721 y(\(5\))452 1004 y([\()p Fq(quote)e Fp(x)p Fy(\)])652
5470 1016 y Fo(c)710 1004 y Fe(;)41 b Fy(\()p Fq(funcall)11
5471 b Fp(c)g Fy(\()p Fq(quote)g Fp(x)p Fy(\)\))852 b(\(6\))387
5472 1066 y([\()p Fq(function)10 b Fp(x)p Fy(\)])652 1079
5473 y Fo(c)710 1066 y Fe(;)41 b Fy(\()p Fq(funcall)11 b Fp(c)g
5474 Fy(\()p Fq(function)f Fp(x)p Fy(\)\))787 b(\(7\))488
5475 1128 y([)o(\()p Fq(progn)o Fy(\)])652 1141 y Fo(c)710
5476 1128 y Fe(;)41 b Fy(\()p Fq(funcall)11 b Fp(c)g Fq(nil)o
5477 Fy(\))964 b(\(8\))438 1191 y([\()p Fq(progn)10 b Fp(e)605
5478 1197 y Fo(1)624 1191 y Fy(\)])652 1203 y Fo(c)710 1191
5479 y Fe(;)41 b Fy([)p Fp(e)824 1197 y Fo(1)843 1191 y Fy(])854
5480 1203 y Fo(c)2048 1191 y Fy(\(9\))334 1253 y([\()p Fq(progn)10
5481 b Fp(e)501 1259 y Fo(1)527 1253 y Fp(:)d(:)g(:)e(e)601
5482 1259 y Fh(n)624 1253 y Fy(\)])652 1265 y Fo(c)710 1253
5483 y Fe(;)41 b Fy([)p Fp(e)824 1259 y Fo(1)843 1253 y Fy(])854
5484 1265 y Fo(\()p Fh(\025)p Fo(\()p Fh(d)917 1269 y Fd(1)933
5485 1265 y Fo(\))p Fh(:::)p Fo([)p Fh(e)1001 1269 y Fc(n)1022
5486 1265 y Fo(])1031 1275 y Fd(c)1046 1265 y Fh(:::)o Fo(\))2028
5487 1253 y Fy(\(10\))445 1322 y([\()p Fq(setq)11 b Fp(v)i(e)p
5488 Fy(\)])652 1335 y Fo(c)710 1322 y Fe(;)41 b Fy([)p Fp(e)p
5489 Fy(])836 1335 y Fo(\()p Fh(\025)p Fo(\()p Fh(d)p Fo(\))9
5490 b(\()p Fq(setq)g Fh(v)h(d)p Fo(\))f(\()p Fq(funcall)f
5491 Fh(c)i(d)p Fo(\)\))2028 1322 y Fy(\(11\))405 1392 y([)o(\()p
5492 Fq(if)h Fp(e)506 1398 y Fo(1)537 1392 y Fp(e)556 1398
5493 y Fo(2)586 1392 y Fp(e)605 1398 y Fo(3)624 1392 y Fy(\)])652
5494 1404 y Fo(c)710 1392 y Fe(;)41 b Fy(\()p Fq(let)p Fy(\(\()p
5495 Fp(a)12 b(c)p Fy(\)\))18 b([)p Fp(e)1040 1398 y Fo(1)1059
5496 1392 y Fy(])1070 1404 y Fo(\()p Fh(\025)p Fo(\(d\))10
5497 b(\()p Fq(if)f Fo(d)h([e)1275 1408 y Fd(2)1291 1404 y
5498 Fo(])1300 1414 y Fd(a)1326 1404 y Fo([e)1350 1408 y Fd(3)1366
5499 1404 y Fo(])1376 1414 y Fd(a)1392 1404 y Fo(\)\))1420
5500 1392 y Fy(\))592 b(\(12\))418 1461 y([\()p Fp(f)16 b(e)501
5501 1467 y Fo(1)527 1461 y Fp(:)7 b(:)g(:)e(e)601 1467 y
5502 Fh(n)624 1461 y Fy(\)])652 1474 y Fo(c)710 1461 y Fe(;)41
5503 b Fy([)p Fp(e)824 1467 y Fo(1)843 1461 y Fy(])875 1482
5504 y(\()p Fp(\025)p Fy(\()p Fp(d)953 1488 y Fo(1)972 1482
5505 y Fy(\))18 b Fp(:)7 b(:)g(:)f Fy([)o Fp(e)1092 1488 y
5506 Fh(n)1115 1482 y Fy(])1127 1494 y Fo(\()p Fh(\025)p Fo(\(d)1191
5507 1498 y Fd(n)1208 1494 y Fo(\))k(\(f)i(c)d(d)1308 1498
5508 y Fd(1)1325 1494 y Fh(:::)o Fo(d)1372 1498 y Fd(n)1390
5509 1494 y Fo(\)\))p Fh(:::)1448 1482 y Fy(\))1494 1461 y(when)j
5510 Fp(f)k Fy(is)e(nondeterministic)47 b(\(13\))418 1549
5511 y([\()p Fp(f)16 b(e)501 1555 y Fo(1)527 1549 y Fp(:)7
5512 b(:)g(:)e(e)601 1555 y Fh(n)624 1549 y Fy(\)])652 1562
5513 y Fo(c)710 1549 y Fe(;)41 b Fy([)p Fp(e)824 1555 y Fo(1)843
5514 1549 y Fy(])875 1570 y(\()p Fp(\025)p Fy(\()p Fp(d)953
5515 1576 y Fo(1)972 1570 y Fy(\))18 b Fp(:)7 b(:)g(:)f Fy([)o
5516 Fp(e)1092 1576 y Fh(n)1115 1570 y Fy(])1127 1582 y Fo(\()p
5517 Fh(\025)p Fo(\(d)1191 1586 y Fd(n)1208 1582 y Fo(\))k(\()p
5518 Fq(funcall)e Fo(c)h(\(f)j(d)1483 1586 y Fd(1)1500 1582
5519 y Fh(:::)o Fo(d)1547 1586 y Fd(n)1565 1582 y Fo(\)\)\))p
5520 Fh(:::)1636 1570 y Fy(\))1682 1549 y(when)g Fp(f)k Fy(is)e
5521 (deterministic)-74 b(\(14\))605 1637 y([)p Fp(x)p Fy(])652
5522 1650 y Fo(c)710 1637 y Fe(;)41 b Fy(\()p Fq(funcall)11
5523 b Fp(c)g(x)p Fy(\)when)q Fp(x)p Fy(is)i(a)h(v)n(ariable)e(or)i(is)g
5524 (self)g(ev)n(aluating)282 b(\(15\))493 1763 y FA(T)m(able)14
5525 b(1:)j(Some)c(of)g(the)g(CPS)g(con)o(v)o(ersion)i(rules)f(used)g(b)o(y)
5526 f Fz(Screamer)q FA(.)75 1895 y Fw(14)69 b(Implemen)n(tation)75
5527 1986 y Fv(Screamer)19 b Fy(implemen)o(ts)d(bac)o(ktrac)o(king)i(b)o(y)g
5528 (p)q(erforming)f(CPS)i(\(Con)o(tin)o(uation)e(P)o(assing)h(St)o(yle\))h
5529 (con)o(v)o(ersion)f(on)75 2035 y(expressions)j(in)e(nondeterministic)g
5530 (con)o(texts.)36 b(Without)19 b(CPS)g(con)o(v)o(ersion,)i(returning)f
5531 (v)n(alues)f(from)f(functions)75 2085 y(is)g(handled)g(b)o(y)h(the)f
5532 (underlying)g Fv(Lisp)h Fy(function)f(return)h(mec)o(hanism.)29
5533 b(A)19 b(CPS)f(con)o(v)o(erted)i(expression)f(returns)75
5534 2135 y(its)f(v)n(alue)e(b)o(y)i(calling)e(a)h(con)o(tin)o(uation)g
5535 (with)g(the)h(returned)h(v)n(alue)e(as)h(its)f(single)h(argumen)o(t.)28
5536 b(This)17 b(frees)i(up)e(the)75 2185 y(underlying)c Fv(Lisp)g
5537 Fy(function)g(return)h(mec)o(hanism)d(to)h(b)q(e)i(usurp)q(ed)h(to)d
5538 (handle)h(bac)o(ktrac)o(king.)18 b(Th)o(us)13 b(in)g
5539 Fv(Screamer)p Fy(,)75 2235 y(a)h(nondeterministic)f(function)g(fails)g
5540 (b)o(y)h(returning)g(and)g(returns)h(b)o(y)f(calling)f(its)g(con)o(tin)
5541 o(uation.)137 2285 y(If)h Fp(e)h Fy(and)f Fp(c)h Fy(are)g(non-CPS-con)o
5542 (v)o(erted)g(expressions)h(expressions,)g(w)o(e)e(denote)i(b)o(y)e([)o
5543 Fp(e)p Fy(])1503 2297 y Fo(c)1520 2285 y Fy(,)g(the)h(CPS)g(con)o(v)o
5544 (ersion)g(of)75 2334 y Fp(e)i Fy(so)f(that)g(it)g(calls)g(the)h(con)o
5545 (tin)o(uation)e(denoted)i(b)o(y)f Fp(c)g Fy(with)g(its)g(result.)26
5546 b(Some)15 b(of)h(the)h(transformations)d(rules)j(for)75
5547 2384 y(p)q(erforming)12 b(CPS)j(con)o(v)o(ersion)f(of)f(expressions)i
5548 (allo)o(w)o(ed)e(in)g(nondeterministic)h(con)o(texts)h(is)e(giv)o(en)h
5549 (in)f(table)h(1.)137 2434 y(Some)k(commen)o(ts)f(p)q(ertaining)h(to)h
5550 (these)h(CPS)f(con)o(v)o(ersion)g(rules)g(are)h(w)o(orth)o(while.)32
5551 b(First,)19 b(an)o(y)g(v)n(ariable)e(in)75 2484 y(italics)e(app)q
5552 (earing)g(on)g(the)h(righ)o(t)f(hand)h(side)f(of)g(a)g(rule)h(and)f
5553 (not)h(the)g(left)f(hand)g(side)h(denotes)h(a)e(new)h(unin)o(terned)75
5554 2534 y(sym)o(b)q(ol)c(created)k(b)o(y)d Fq(gensym)p Fy(.)k(Second,)e
5555 (rules)f(3)g(and)g(12)f(in)o(tro)q(duce)i(new)f(v)n(ariables)g
5556 Fp(a)g Fy(to)f(factor)h(out)g(the)h(common)75 2583 y(con)o(tin)o
5557 (uation)i(sub)q(expression)j(and)d(a)o(v)o(oid)g(the)h(p)q(oten)o(tial)
5558 g(exp)q(onen)o(tial)f(gro)o(wth)h(in)f(expression)i(size)g(that)f(w)o
5559 (ould)992 2723 y(45)p eop
5560 %%Page: 46 46
5561 46 45 bop 75 195 a Fy(o)q(ccur)16 b(if)d(suc)o(h)i(common)d(sub)q
5562 (expression)k(factoring)e(w)o(ere)i(not)e(p)q(erformed.)19
5563 b(As)c(an)f(optimization,)e(if)i(this)g(v)n(ariable)75
5564 245 y Fp(a)g Fy(w)o(ould)f(only)h(rename)f(another)i(created)h(v)n
5565 (ariable,)c(then)j(the)g Fq(let)e Fy(in)o(tro)q(ducing)h
5566 Fp(a)g Fy(is)g Fp(\014)r Fy(-con)o(v)o(erted.)21 b(Third,)13
5567 b(while)75 295 y(bac)o(ktrac)o(king)i(could)h(ha)o(v)o(e)g(b)q(een)h
5568 (implem)o(en)o(ted)d(as)i(simple)e(function)i(return,)h(instead)f(c)o
5569 (hoice)g(p)q(oin)o(ts)g(are)g(set)h(up)75 345 y(as)g
5570 Fq(catch)g Fy(frames)f(with)h(the)h(tag)f Fq(fail)f Fy(and)h(bac)o
5571 (ktrac)o(king)g(is)g(implemen)o(ted)e(via)i(a)g Fq(throw)f
5572 Fy(to)h(the)h(most)e(recen)o(t)75 394 y(catc)o(h)i(frame)d(named)h
5573 Fq(fail)p Fy(.)26 b(Presumably)m(,)16 b(un)o(winding)g(a)h(stac)o(k)g
5574 (via)f Fq(throw)g Fy(is)h(faster)h(than)e(returning)i(through)75
5575 444 y(all)h(of)g(the)i(in)o(termediate)e(frames.)35 b(F)m(ourth,)21
5576 b(the)f(dumm)o(y)d(v)n(ariables)i Fp(d)1273 450 y Fo(1)1298
5577 444 y Fp(:)7 b(:)g(:)f(d)1376 450 y Fh(n)p Fi(\000)p
5578 Fo(1)1460 444 y Fy(in)20 b(rule)g(10)f(are)i(nev)o(er)g(used.)75
5579 494 y(T)m(o)15 b(a)o(v)o(oid)g(b)q(eing)h(\015agged)g(with)g(w)o
5580 (arnings)f(b)o(y)h(some)f Fv(Common)i(Lisp)f Fy(compilers,)f(they)i
5581 (are)f(declared)h(as)f Fq(ignore)75 544 y Fy(v)n(ariables.)25
5582 b(Fifth,)16 b(all)f(of)h(the)h(closures)g(created)h(b)o(y)e(the)h(lam)o
5583 (b)q(da)d(expressions)k(created)g(b)o(y)e(the)h(CPS)g(con)o(v)o(ersion)
5584 75 594 y(can)e(b)q(e)h(stac)o(k)f(allo)q(cated)g(b)o(y)g
5585 Fv(Common)h(Lisp)f Fy(compilers)g(whic)o(h)f(pro)o(vide)h(suc)o(h)h(a)f
5586 (capabilit)o(y)m(.)20 b(As)15 b(the)h(Sym)o(b)q(olics)75
5587 643 y(compiler)g(supp)q(orts)i(stac)o(k)g(allo)q(cated)f(closures)i
5588 (only)d(when)i(lam)o(b)q(da)d(expression)j(are)g(declared)g(as)g(suc)o
5589 (h)g(via)e(the)75 693 y(declaration)g Fq(sys:downward-fun)o(ctio)o(n)p
5590 Fy(,)d(suc)o(h)k(a)e(declaration)h(is)g(added)g(to)g(all)f(lam)o(b)q
5591 (da)e(expressions)18 b(generated)75 743 y(b)o(y)c(CPS)g(con)o(v)o
5592 (ersion.)428 728 y Fo(9)137 793 y Fy(The)d(CPS)f(con)o(v)o(erter)i(p)q
5593 (erforms)e(one)g(additional)f(optimization.)14 b(Stated)c(in)g(their)h
5594 (simple)e(form)f(giv)o(en)i(in)g(table)g(1,)75 843 y(the)19
5595 b(CPS)g(con)o(v)o(ersion)g(rules)g(generate)g(a)g(great)f(deal)h(of)f
5596 (redundan)o(t)h(lam)o(b)q(da)d(expressions)k(whic)o(h)e(immediately)75
5597 892 y(get)i(funcalled.)33 b(T)m(o)19 b(remo)o(v)o(e)f(suc)o(h)i
5598 (redundan)o(t)g(lam)o(b)q(da)d(expressions,)22 b(the)e(CPS)g(con)o(v)o
5599 (erter)g(incorp)q(orates)g(a)f Fp(\014)r Fy(-)75 942
5600 y(con)o(v)o(ersion)e(rule.)25 b(The)17 b Fq(let)e Fy(bindings)h(for)g
5601 (the)h(v)n(ariable)e Fp(a)h Fy(created)i(b)o(y)e(rules)h(3)f(and)g(12)g
5602 (can)g(sometimes)f(th)o(w)o(art)75 992 y(the)j Fp(\014)r
5603 Fy(-con)o(v)o(ersion)g(optimization.)24 b(The)18 b(aforemen)o(tioned)e
5604 (optimization)e(whereb)o(y)k Fq(let)f Fy(bindings)f(whic)o(h)h(simply)
5605 75 1042 y(bind)12 b Fp(a)g Fy(to)g(a)g(previously)g(created)i(v)n
5606 (ariable)d(are)i Fp(\014)r Fy(-con)o(v)o(erted)h(ma)o(y)d(circum)o(v)o
5607 (en)o(t)g(this)i(th)o(w)o(arting)e(and)h(allo)o(w)f(further)75
5608 1092 y Fp(\014)r Fy(-con)o(v)o(ersion)k(b)o(y)e(the)i(curren)o(t)g
5609 (rule.)137 1142 y(The)20 b(actual)e(implemen)o(tatio)o(n)e(uses)k(a)f
5610 (more)f(e\016cien)o(t)h(CPS)g(con)o(v)o(ersion)g(algorithm.)30
5611 b(First,)20 b(it)f(p)q(erforms)f(a)75 1191 y(more)c(e\016cien)o(t)h
5612 (CPS)g(con)o(v)o(ersion)g(on)f(sp)q(ecial)h(forms)e(whic)o(h)i(ha)o(v)o
5613 (e)f(only)g(deterministic)g(sub-expressions.)23 b(Second,)75
5614 1241 y(it)16 b(p)q(erforms)g(a)g(more)f(e\016cien)o(t)i(CPS)f(con)o(v)o
5615 (ersion)h(for)f(the)h(sp)q(ecial)f(forms)f Fq(if)p Fy(,)h
5616 Fq(progn)g Fy(and)g Fq(setq)f Fy(when)i(it)f(can)g(b)q(e)75
5617 1291 y(sho)o(wn)e(that)g(their)g(v)n(alues)g(are)g(not)g(b)q(eing)g
5618 (used)g(and)g(they)h(are)f(only)f(b)q(eing)h(called)f(for)h(side)g
5619 (e\013ect.)75 1428 y Fw(15)69 b(In)n(tellectual)20 b(Heritage)75
5620 1519 y Fy(Nondeterministic)f Fv(Lisp)g Fy(is)h(not)f(new.)36
5621 b(The)20 b(addition)e(of)h(a)g(nondeterministic)g(c)o(hoice)h(op)q
5622 (erator)g(\(once)g(called)75 1569 y Fq(amb)p Fy(\))h(to)g
5623 Fv(Lisp)g Fy(dates)h(bac)o(k)f(to)g(McCarth)o(y)h(\(1963\).)39
5624 b(Clinger)21 b(\(1982\))g(discusses)i(the)f(di\016culties)e(in)o(v)o
5625 (olv)o(ed)g(in)75 1619 y(giving)e(a)i(formal)d(seman)o(tics)i(to)h(a)f
5626 (nondeterministic)g(c)o(hoice)h(op)q(erator)g(in)g Fv(Lisp)p
5627 Fy(.)35 b Fv(Dependency)24 b(Directed)75 1669 y(Lisp)18
5628 b Fy(\(also)f(kno)o(wn)g(as)h Fv(ddl)p Fy(\))g(\(Chapman,)e
5629 (unpublished\))i(w)o(as)g(an)f(implemen)o(tation)e(of)i
5630 (nondeterministic)g Fv(Lisp)75 1718 y Fy(used)h(to)g(implem)o(en)o(t)d
5631 Fv(Tweak)j Fy(\(Chapman,)d(1985\),)i(a)h(non-linear)e(constrain)o(t-p)q
5632 (osting)i(planner.)29 b Fv(ddl)17 b Fy(recorded)75 1768
5633 y(dep)q(endency)j(information)15 b(during)i(execution)i(to)e(supp)q
5634 (ort)i(selectiv)o(e)g(bac)o(ktrac)o(king.)29 b Fv(Schemer)18
5635 b Fy(\(Zabih,)f(1987;)75 1818 y(Zabih,)f(McAllester)j(and)e(Chapman,)e
5636 (1987;)i(Zabih,)g(McAllester)h(and)f(Chapman,)e(forthcoming\))h(w)o(as)
5637 h(an)g(in)o(ter-)75 1868 y(preter)j(for)e(nondeterministic)g
5638 Fv(Scheme)h Fy(that)g(recorded)h(and)e(analyzed)g(dep)q(endency)j
5639 (information)15 b(to)k(p)q(erform)75 1918 y(b)q(oth)c(selectiv)o(e)i
5640 (bac)o(ktrac)o(king)e(and)g(lateral)g(pruning.)21 b Fv(Schemer)16
5641 b Fy(and)f Fv(ddl)h Fy(w)o(ere)g(b)q(oth)f(in)o(terpreters)j(to)d(supp)
5642 q(ort)75 1968 y(retaining)k(the)i(dep)q(endency)h(information)17
5643 b(needed)k(for)e(in)o(telligen)o(t)g(bac)o(ktrac)o(king.)36
5644 b(Because)21 b Fv(Screamer)g Fy(uses)75 2017 y(c)o(hronological)15
5645 b(bac)o(ktrac)o(king,)h(it)g(can)h(macro-expand)e(in)o(to)h(ordinary)g
5646 Fv(Common)g(Lisp)h Fy(whic)o(h)f(is)g(then)i(compiled)75
5647 2067 y(in)o(to)d(e\016cien)o(t)h(co)q(de.)24 b Fv(Lambex)17
5648 b Fy(\(McAllester,)g(unpublished\))f(and)f(new)h Fv(Ontic)f
5649 Fy(\(McAllester,)i(unpublished\))f(are)75 2117 y(dialects)h(of)g
5650 Fv(Lisp)g Fy(whic)o(h)f(incorp)q(orate)i(a)f(nondeterministic)f(c)o
5651 (hoice)i(op)q(erator.)27 b(They)18 b(are)f(in)o(tended)h(to)e(b)q(e)i
5652 (used)75 2167 y(as)e(a)g(declarativ)o(e)h(input)f(language)f(for)h
5653 (stating)g(theorems)h(to)f(a)g(pro)q(of)g(c)o(hec)o(k)o(er)i(and)e(no)g
5654 (op)q(erational)f(ev)n(aluators)75 2217 y(ha)o(v)o(e)h(b)q(een)h
5655 (constructed)h(for)d(them.)24 b(Ha)o(ynes)16 b(\(1987\))f(describ)q(es)
5656 j(ho)o(w)e(a)g(nondeterministic)f(c)o(hoice)h(op)q(erator)h(can)75
5657 2266 y(b)q(e)e(added)f(to)f Fv(Scheme)i Fy(using)f(the)g
5658 Fq(call/cc)e Fy(function.)137 2316 y(The)i(tec)o(hniques)g(used)g(for)e
5659 (implemen)o(ting)e(bac)o(ktrac)o(king)i(in)h Fv(Screamer)g
5660 Fy(are)h(analogous)d(to)i(those)h(used)f(when)75 2366
5661 y(compiling)e Fv(Pr)o(olog)k Fy(in)o(to)e Fv(Lisp)i Fy(\(Kahn,)f(1982;)
5662 e(Kahn,)i(1983;)f(Kahn)h(and)g(Carrlson,)g(1984;)f(Siskind,)g(1989\).)
5663 18 b(CPS)75 2416 y(con)o(v)o(ersion)c(w)o(as)g(used)h(in)e(the)i
5664 Fv(Rabbit)e Fy(compiler)g(for)g Fv(Scheme)i Fy(\(Steele)g(and)f
5665 (Sussman,)e(1976;)h(Steele,)h(1977\).)p 75 2453 750 2
5666 v 121 2480 a Fn(9)139 2491 y Fs(Since)d(e\016cien)o(t)i(CPS)g(con)o(v)o
5667 (ersion)e(relies)h(on)h(b)q(eing)f(able)g(to)h(stac)o(k)f(allo)q(cate)g
5668 (closures)f(to)i(a)o(v)o(oid)f(needing)f(to)i(garbage)e(collect)h(the)
5669 75 2531 y(man)o(y)e(closures)g(created)g(during)f(the)i(execution)e(of)
5670 i(nondetermini)o(stic)d(functions,)h(in)j(w)o(ould)f(b)q(e)g(nice)f(if)
5671 i Fm(Common)h(Lisp)e Fs(incorp)q(orate)o(d)75 2570 y(the)g(option)f(of)
5672 h(a)g Fl(sys:downwar)o(d-)o(fun)o(cti)o(on)d Fs(declaration)h(as)i(a)g
5673 (standard)f(feature.)992 2723 y Fy(46)p eop
5674 %%Page: 47 47
5675 47 46 bop 137 195 a Fy(Constrain)o(t)17 b(solv)o(ers)h(based)g(on)f
5676 (forw)o(ard)g(c)o(hec)o(king)g(\(sometimes)f(called)h(constrain)o(t)g
5677 (propagation\))g(also)f(ha)o(v)o(e)75 245 y(a)10 b(long)g(history)m(.)
5678 16 b(Some)9 b(of)h(the)h(earliest)g(and)f(b)q(est)i(kno)o(wn)e(of)g
5679 (suc)o(h)h(systems)g(w)o(ere)g Fv(Sketchp)m(ad)h Fy(\(Sutherland,)e
5680 (1963\),)75 295 y Fv(Thinglab)g Fy(\(Borning,)f(1979\),)f
5681 Fv(Consys)j Fy(\(Steele,)e(1980;)h(Sussman)e(and)h(Steele,)h(1980\))f
5682 (and)g Fv(Ma)o(gritte)f Fy(\(Gosling,)f(1983\).)75 345
5683 y(Since)13 b(constrain)o(t)g(propagation)e(is)i(an)f(incomplete)g(tec)o
5684 (hnique)h(for)f(solving)g(systems)g(of)g(constrain)o(ts,)h(systems)g
5685 (suc)o(h)75 394 y(as)f(these)h(whic)o(h)f(rely)g(primarily)e(on)i
5686 (constrain)o(t)g(propagation)f(are)h(incapable)g(of)f(solving)g(man)o
5687 (y)f(problems)h(they)i(are)75 444 y(giv)o(en.)k(The)d(constrain)o(t)f
5688 (handling)f(mec)o(hanism)f(used)j(in)e Fv(Screamer)i
5689 Fy(w)o(as)f(adapted)g(from)f(the)h(one)h(used)g(in)e
5690 Fv(CHiP)75 494 y Fy(\(V)m(an)f(Hen)o(tenryc)o(k,)h(1989\).)k(The)c(no)o
5691 (v)o(el)e(approac)o(h)h(tak)o(en)h(b)o(y)f Fv(CHiP)f
5692 Fy(and)h Fv(Screamer)g Fy(is)g(to)g(com)o(bine)f(bac)o(ktrac)o(king)75
5693 544 y(searc)o(h)j(with)f(constrain)o(t)g(propagation)f(to)h(yield)g(a)g
5694 (complete)f(constrain)o(t)h(solv)o(er.)18 b(Unlik)o(e)11
5695 b Fv(CHiP)g Fy(whic)o(h)h(uses)h(linear)75 594 y(programming)7
5696 b(tec)o(hniques)13 b(to)d(solv)o(e)h(systems)g(of)g(n)o(umeric)f
5697 (constrain)o(ts,)h Fv(Screamer)h Fy(uses)g(range)f(propagation)f(and)75
5698 643 y(supp)q(orts)k(a)e(divide)g(and)g(conquer)i(approac)o(h)e(to)h
5699 (solving)e(nonlinear)h(n)o(umeric)g(constrain)o(t)g(problems.)17
5700 b(V)m(an)12 b(Hen)o(ten-)75 693 y(ryc)o(k's)f(b)q(o)q(ok)g(giv)o(es)g
5701 (an)f(excellen)o(t)i(historical)f(o)o(v)o(erview)f(of)h(the)g(dev)o
5702 (elopmen)o(t)f(of)h(constrain)o(t)g(satisfaction)g(tec)o(hniques)75
5703 743 y(and)j(languages)f(and)h(con)o(tains)g(an)f(extensiv)o(e)i
5704 (bibliograph)o(y)d(of)h(that)h(\014eld.)75 879 y Fw(16)69
5705 b(Obtaining)22 b(Screamer)75 970 y Fv(Screamer)13 b Fy(is)e(in)o
5706 (tended)i(to)f(b)q(e)h(p)q(ortable)f(and)f(should)h(run)h(under)f(an)o
5707 (y)g Fv(Common)k(Lisp)c Fy(implemen)o(tation.)i(A)o(t)e(the)75
5708 1020 y(M.)h(I.)h(T.)f(Arti\014cial)g(In)o(telligence)h(lab)q(oratory)m
5709 (,)f(the)h(source)h(co)q(de)g(for)f Fv(Screamer)g Fy(is)g(a)o(v)n
5710 (ailable)e(from)g(the)i(\014le:)204 1099 y Fq(/src/local/lispl)o(ib/sr)
5711 o(c/scr)o(eame)o(r/scr)o(eamer)o(.lisp)75 1178 y Fy(Compiled)d(co)q(de)
5712 j(for)e(v)n(arious)h(com)o(binations)e(of)h(mac)o(hines)g(and)h
5713 Fv(Common)j(Lisp)d Fy(compilers)f(is)h(a)o(v)n(ailable)e(from)g(the)75
5714 1228 y(\014les:)204 1307 y Fq(/src/local/lispl)o(ib/)p
5715 Fu(machine)p Fq(/scre)o(amer.)o Fu(binary)75 1386 y Fy(where)17
5716 b Fu(machine)g Fy(is)g(the)g(directory)g(for)f(storing)g(compiled)f
5717 Fv(Lisp)h Fy(co)q(de)h(for)f(that)g(arc)o(hitecture)j(and)d
5718 Fu(binary)g Fy(is)g(the)75 1436 y(standard)f(extension)g(for)f(that)h
5719 (arc)o(hitecture.)21 b(The)15 b(follo)o(wing)d(\014le)j(is)f(useful)h
5720 (if)e(y)o(ou)h(attempt)g(to)h(p)q(ort)f Fv(Screamer)75
5721 1485 y Fy(to)g(a)f(new)i(mac)o(hine)d(or)i Fv(Common)j(Lisp)d
5722 Fy(implem)o(en)o(tation:)204 1564 y Fq(/src/local/lispl)o(ib/sr)o
5723 (c/scr)o(eame)o(r/pri)o(mordi)o(al.li)o(sp)75 1643 y
5724 Fy(It)h(con)o(tains)h(a)f(series)h(of)f(examples)g(designed)h(to)f
5725 (exercise)i Fv(Screamer)q Fy(.)22 b(Simply)13 b(compile)h(that)h
5726 (\014le)g(and)h(run)f(the)75 1693 y(function)h Fq(\(prime-ordeal\))p
5727 Fy(.)22 b(It)17 b(should)f(return)h Fq(t)f Fy(if)g(the)g
5728 Fv(Screamer)h Fy(p)q(ort)g(w)o(as)f(successful)i(and)e(giv)o(e)g(an)g
5729 (error)75 1743 y(message)e(if)f(not.)18 b(Additionally)m(,)10
5730 b(a)k(\014le)g(con)o(taining)f(all)f(of)i(the)g(examples)f(from)f(this)
5731 i(man)o(ual)e(is)h(a)o(v)n(ailable)f(as:)204 1822 y Fq
5732 (/src/local/lispl)o(ib/sr)o(c/scr)o(eame)o(r/scr)o(eams.)o(lisp)75
5733 1901 y Fy(Finally)m(,)f(a)j(p)q(ostscript)h(\014le)f(con)o(taining)f
5734 (this)h(man)o(ual)d(is)j(a)o(v)n(ailable)e(from)g(the)i(\014le:)204
5735 1980 y Fq(/src/local/lispl)o(ib/do)o(c/scr)o(eame)o(r.ps)137
5736 2059 y Fy(F)m(rom)e(outside)j(M.)e(I.)g(T.,)g Fv(Screamer)i
5737 Fy(is)e(a)o(v)n(ailable)f(b)o(y)i(public)f(FTP)h(from)f(the)h(host:)204
5738 2138 y Fq(ftp.ai.mit.edu)75 2217 y Fy(in)f(the)i(directory:)204
5739 2296 y Fq(/com/ftp/pub/scr)o(eamer)o(/)75 2375 y Fy(In)f(that)g
5740 (directory)g(y)o(ou)g(will)e(\014nd)i(the)h(\014les:)204
5741 2451 y Fq(screamer.lisp)204 2501 y(primordial.lisp)204
5742 2550 y(screams.lisp)204 2600 y(screamer.ps)992 2723 y
5743 Fy(47)p eop
5744 %%Page: 48 48
5745 48 47 bop 75 195 a Fy(Y)m(ou)11 b(will)g(ha)o(v)o(e)g(to)h(compile)e
5746 Fv(Screamer)i Fy(y)o(ourself)g(for)f(whic)o(hev)o(er)i(mac)o(hine)e
5747 (and)g Fv(Common)17 b(Lisp)11 b Fy(implemen)o(tation)75
5748 245 y(y)o(ou)i(use.)137 295 y(W)m(e)k(main)o(tain)e(sev)o(eral)j
5749 (mailing)c(lists)j(p)q(ertaining)g(to)g Fv(Screamer)q
5750 Fy(.)29 b(The)17 b(mailing)d(list)j Fq(Info-Screamer)e
5751 Fy(is)i(a)75 345 y(c)o(hannel)f(from)e(the)i(dev)o(elop)q(ers)h(to)e
5752 (the)h(users)h(and)f(con)o(tains)f(announcemen)o(ts)h(of)f(enhancemen)o
5753 (ts)h(and)f(bug)h(\014xes.)75 394 y(T)m(o)d(b)q(e)i(added)f(to)g(that)g
5754 (maili)o(ng)d(list,)i(send)i(mail)c(to:)204 471 y Fq(Info-Screamer-Re)o
5755 (quest)o(@AI.M)o(IT.E)o(DU)75 547 y Fy(If)j(y)o(ou)f(detect)i(a)f(bug)g
5756 (in)f Fv(Screamer)i Fy(please)f(send)h(mail)c(to:)204
5757 624 y Fq(Bug-Screamer@AI.)o(MIT.E)o(DU)75 700 y Fy(Please)i(do)e(not)h
5758 (send)h(mail)c(directly)j(to)g(the)g(author)g(as)g(the)h
5759 Fq(Bug-Screamer)c Fy(mailing)g(list)i(is)h(arc)o(hiv)o(ed)g(separately)
5760 g(to)75 750 y(aid)f(in)h(main)o(taining)c Fv(Screamer)q
5761 Fy(.)17 b(W)m(e)12 b(also)f(ask)h(that)g(y)o(ou)f(rep)q(ort)i
5762 Fu(al)r(l)f Fy(bugs)g(whether)h(or)f(not)g(y)o(ou)f(need)i(them)f
5763 (\014xed)75 800 y(and)d(whether)i(or)e(not)h(y)o(ou)f(\014x)g(them)g(y)
5764 o(ourself.)16 b(This)9 b(will)f(assist)i(us)g(in)f(helping)g(the)h(en)o
5765 (tire)g(user)h(comm)o(unit)o(y)l(.)j(Finally)m(,)75 850
5766 y(w)o(e)j(ask)g(that)g(y)o(ou)f(send)i(mail)c(to)j Fq(Bug-Screamer)d
5767 Fy(whenev)o(er)k(y)o(ou)f(attempt)f(to)g(p)q(ort)i Fv(Screamer)f
5768 Fy(to)g(a)f(mac)o(hine)75 900 y(or)d Fv(Common)k(Lisp)c
5769 Fy(implemen)o(tation)d(not)j(listed)h(at)f(the)h(b)q(eginning)e(of)h
5770 (the)h(\014le)f Fq(screamer.lisp)e Fy(whether)k(or)e(not)75
5771 950 y(that)h(p)q(ort)g(is)g(successful.)137 999 y Fv(Screamer)i
5772 Fy(is)g(a)o(v)n(ailable)d(free)j(of)f(c)o(harge)h(and)g(without)f(an)o
5773 (y)g(restriction.)24 b(All)15 b(w)o(e)g(ask)h(is)f(that)h(y)o(ou)f
5774 (abide)g(b)o(y)75 1049 y(the)h(ab)q(o)o(v)o(e)f(p)q(olicy)g(for)g
5775 (sending)g(bug)h(rep)q(orts)g(and)f(also)g(send)h(mail)d(to)i
5776 Fq(Info-Screamer-Reque)o(st)d Fy(if)j(y)o(ou)g(obtain)75
5777 1099 y(a)h(cop)o(y)f(in)h(an)o(y)f(w)o(a)o(y)g(so)h(that)g(w)o(e)g(ma)o
5778 (y)e(k)o(eep)j(trac)o(k)f(of)f(who)h(has)g(obtained)f(a)h(cop)o(y)g
5779 (and)f(k)o(eep)i(users)g(informed)e(of)75 1149 y(enhancemen)o(ts)g(and)
5780 e(bug)h(\014xes)h(b)o(y)e(w)o(a)o(y)g(of)h(the)g Fq(Info-Screamer)d
5781 Fy(mailing)g(list.)825 1232 y Fb(Ac)o(kno)o(wledgmen)o(ts)137
5782 1315 y Fy(Bug-DDL@AI.MIT.EDU)75 1451 y Fw(References)96
5783 1542 y Fy([1])19 b(Alan)d(Hamilton)e(Borning.)25 b Fv(Thinglab)q
5784 Fu(|A)17 b(Constr)n(aint-Oriente)n(d)f(Simulation)h(L)n(ab)n(or)n
5785 (atory)p Fy(.)25 b(PhD)17 b(thesis,)160 1592 y(Stanford)g(Univ)o(ersit)
5786 o(y)m(,)f(July)h(1979.)25 b(Also)17 b(a)o(v)n(ailable)d(as)j(Stanford)g
5787 (Computer)f(Science)i(Departmen)o(t)e(rep)q(ort)160 1642
5788 y(ST)m(AN-CS-79-746)c(and)i(as)g(XER)o(O)o(X)g(P)o(alo)f(Alto)g
5789 (Researc)o(h)i(Cen)o(ter)g(rep)q(ort)g(SSL-79-3.)96 1721
5790 y([2])k(Da)o(vid)c(Chapman.)22 b(Dep)q(endency-Directed)c
5791 Fv(Lisp)p Fy(.)23 b(Unpublished)16 b(man)o(uscript)f(receiv)o(ed)i
5792 (directly)f(from)e(au-)160 1771 y(thor.)96 1851 y([3])19
5793 b(Da)o(vid)13 b(Chapman.)j(Planning)d(for)h(conjunctiv)o(e)g(goals.)j
5794 (Master's)e(thesis,)f(Massac)o(h)o(usetts)i(Institute)f(of)e(T)m(ec)o
5795 (h-)160 1901 y(nology)m(,)f(Jan)o(uary)h(1985.)j(Also)d(a)o(v)n
5796 (ailable)e(as)i(M.)g(I.)g(T.)f(Arti\014cial)h(In)o(teligence)h(Lab)q
5797 (oratory)f(T)m(ec)o(hnical)g(Rep)q(ort)160 1951 y(802.)96
5798 2030 y([4])19 b(W.)13 b(Clinger.)j(Nondeterministic)d(call)g(b)o(y)g
5799 (need)h(is)f(neither)h(lazy)f(nor)g(b)o(y)g(name.)j(In)d
5800 Fu(Pr)n(o)n(c)n(e)n(e)n(dings)i(of)f(the)g(A)o(CM)160
5801 2080 y(Confer)n(enc)n(e)h(on)h Fv(Lisp)e Fu(and)i(F)m(unctional)f(Pr)n
5802 (o)n(gr)n(amming)p Fy(,)e(pages)h(226{234,)e(1982.)96
5803 2160 y([5])19 b(James)14 b(Gosling.)i Fu(A)o(lgebr)n(aic)e(Constr)n
5804 (aints)p Fy(.)k(PhD)13 b(thesis,)i(Carnegie-Mellon)e(Univ)o(ersit)o(y)m
5805 (,)g(1983.)96 2240 y([6])19 b(Christopher)c(T.)e(Ha)o(ynes.)19
5806 b(Logic)13 b(con)o(tin)o(uations.)k Fu(Journal)e(of)g(L)n(o)n(gic)g(Pr)
5807 n(o)n(gr)n(amming)p Fy(,)e(4:157{176,)e(1987.)96 2320
5808 y([7])19 b(Nevin)c(Hein)o(tze,)g(Spiro)g(Mic)o(ha)o(ylo)o(v,)d(and)j(P)
5809 o(eter)h(Stuc)o(k)o(ey)m(.)k Fv(clp)p Fy(\()p Fr(<)p
5810 Fy(\))15 b(and)f(some)g(electrical)h(engineering)g(prob-)160
5811 2369 y(lems.)28 b(In)18 b(Jean-Louis)f(Lassez,)j(editor,)e
5812 Fu(L)n(o)n(gic)g(Pr)n(o)n(gr)n(amming:)25 b(Pr)n(o)n(c)n(e)n(e)n(dings)
5813 18 b(of)g(the)h(F)m(ourth)f(International)160 2419 y(Confer)n(enc)n(e)p
5814 Fy(,)c(pages)g(675{703,)e(Cam)o(bridge,)f(MA,)j(Ma)o(y)f(1987.)g(The)h
5815 (MIT)g(Press.)96 2499 y([8])19 b(Jo)o(xan)e(Ja\013ar)g(and)g(Spiro)g
5816 (Mic)o(ha)o(ylo)o(v.)26 b(Metho)q(dology)16 b(and)h(implemen)o(tati)o
5817 (on)d(of)j(a)f Fv(clp)h Fy(system.)28 b(In)17 b(Jean-)160
5818 2549 y(Louis)11 b(Lassez,)h(editor,)f Fu(L)n(o)n(gic)h(Pr)n(o)n(gr)n
5819 (amming:)17 b(Pr)n(o)n(c)n(e)n(e)n(dings)12 b(of)g(the)g(F)m(ourth)g
5820 (International)h(Confer)n(enc)n(e)p Fy(,)e(pages)160
5821 2599 y(196{218,)h(Cam)o(bridge,)g(MA,)h(Ma)o(y)h(1987.)e(The)i(MIT)g
5822 (Press.)992 2723 y(48)p eop
5823 %%Page: 49 49
5824 49 48 bop 96 195 a Fy([9])19 b(Kenneth)g(M.)e(Kahn.)29
5825 b(A)17 b(partial)g(ev)n(aluator)f(of)h Fv(Lisp)g Fy(written)h(in)f
5826 Fv(Pr)o(olog)q Fy(.)28 b(In)18 b Fu(Pr)n(o)n(c)n(e)n(e)n(dings)g(of)g
5827 (the)g(First)160 245 y(L)n(o)n(gic)d(Pr)n(o)n(gr)n(amming)f(Confer)n
5828 (enc)n(e)p Fy(,)g(Marseille,)f(F)m(rance,)h(1982.)75
5829 328 y([10])19 b(Kenneth)d(M.)f(Kahn.)20 b(Unique)15 b(features)h(of)e
5830 Fv(Lisp)h Fy(mac)o(hine)e Fv(Pr)o(olog)q Fy(.)20 b(UPMAIL)15
5831 b(Rep)q(ort)g(14,)f(Univ)o(ersit)o(y)h(of)160 378 y(Uppsala,)e(Sw)o
5832 (eden,)i(1983.)75 461 y([11])k(Kenneth)h(M.)e(Kahn)g(and)g(M.)g
5833 (Carlsson.)31 b(Ho)o(w)18 b(to)g(implemen)o(t)e Fv(Pr)o(olog)j
5834 Fy(on)f(a)g Fv(Lisp)g Fy(mac)o(hine.)30 b(In)18 b(J.)g(A.)160
5835 511 y(Campb)q(ell,)d(editor,)i Fu(Implementations)h(of)f
5836 Fv(Pr)o(olog)q Fy(,)g(c)o(hapter)h(2,)e(pages)h(117{134.)e(Ellis)h
5837 (Horw)o(o)q(o)q(d,)g(Chic)o(h-)160 560 y(ester,)f(1984.)75
5838 643 y([12])k(Da)o(vid)13 b(Allen)h(McAllester.)19 b(Lam)o(b)q(ex.)d
5839 (Unpublished)f(man)o(uscript)e(receiv)o(ed)i(directly)f(from)e(author.)
5840 75 726 y([13])19 b(John)10 b(McCarth)o(y)m(.)h(A)f(basis)g(for)g(a)f
5841 (mathematical)d(theory)11 b(of)e(computation.)g(In)h(P)m(.)f
5842 (Bra\013ort)i(and)e(D.)g(Hirsc)o(h)o(b)q(erg,)160 776
5843 y(editors,)14 b Fu(Computer)h(Pr)n(o)n(gr)n(aming)f(and)i(F)m(ormal)e
5844 (Systems)p Fy(.)g(Elsevier)g(North-Holland,)f(Amsterdam,)e(1963.)75
5845 859 y([14])19 b(Mann)o(y)h(Ra)o(yner,)469 852 y(\027)469
5846 859 y(Asa)g(Hugosson,)h(and)f(G\177)-21 b(oran)20 b(Hagert.)37
5847 b(Using)19 b(a)h(logic)f(grammar)e(to)j(learn)g(a)g(lexicon.)160
5848 909 y(T)m(ec)o(hnical)14 b(Rep)q(ort)g(R88001,)e(Sw)o(edish)i
5849 (Institute)h(of)e(Computer)g(Science,)i(1988.)75 992
5850 y([15])k(Je\013rey)k(Mark)d(Siskind.)38 b(The)21 b(culprit)f(p)q(oin)o
5851 (ter)h(metho)q(d)f(for)g(selectiv)o(e)i(bac)o(ktrac)o(king.)38
5852 b(Master's)22 b(thesis,)160 1042 y(Massac)o(h)o(usetts)16
5853 b(Institute)f(of)e(T)m(ec)o(hnology)m(,)f(Jan)o(uary)i(1989.)75
5854 1125 y([16])19 b(Je\013rey)14 b(Mark)e(Siskind.)i(Acquiring)e(core)h
5855 (meanings)d(of)i(w)o(ords,)g(represen)o(ted)i(as)f(Jac)o(k)o
5856 (endo\013-st)o(yle)f(conceptual)160 1175 y(structures,)23
5857 b(from)17 b(correlated)j(streams)f(of)f(linguistic)g(and)h
5858 (non-linguistic)e(input.)33 b(In)19 b Fu(Pr)n(o)n(c)n(e)n(e)n(dings)g
5859 (of)h(the)160 1225 y Fy(28)202 1210 y Fa(th)250 1225
5860 y Fu(A)o(nnual)d(Me)n(eting)g(of)f(the)h(Asso)n(ciation)f(for)g
5861 (Computational)h(Linguistics)p Fy(,)f(pages)g(143{156,)e(Univ)o(ersit)o
5862 (y)160 1274 y(of)g(Pittsburgh,)g(Pittsburgh,)g(P)m(A,)f(June)i(1990.)75
5863 1357 y([17])k(Je\013rey)d(Mark)e(Siskind.)k(Disp)q(elling)13
5864 b(m)o(yths)g(ab)q(out)h(language)g(b)q(o)q(otstrapping.)k(In)d
5865 Fu(The)g(AAAI)f(Spring)i(Sym-)160 1407 y(p)n(osium)g(Workshop)g(on)g
5866 (Machine)g(L)n(e)n(arning)f(of)h(Natur)n(al)e(L)n(anguage)j(and)f
5867 (Ontolo)n(gy)p Fy(,)e(pages)g(157{164,)f(Marc)o(h)160
5868 1457 y(1991.)75 1540 y([18])19 b(Iv)n(an)11 b(E.)g(Southerland.)j
5869 Fv(Sketchp)m(ad)r Fu(:)j(A)c(Man-Machine)h(Gr)n(aphic)n(al)e(Communic)n
5870 (ation)h(System)p Fy(.)h(PhD)e(thesis,)160 1590 y(Massac)o(h)o(usetts)k
5871 (Institute)f(of)e(T)m(ec)o(hnology)m(,)f(Jan)o(uary)i(1963.)75
5872 1673 y([19])19 b(Guy)f(Lewis)g(Steele)h(Jr.)31 b(Debunking)17
5873 b(the)i(\\exp)q(ensiv)o(e)g(pro)q(cedure)h(call")d(m)o(yth,)g(or)h(pro)
5874 q(cedure)i(call)d(imple-)160 1723 y(men)o(tations)d(considered)i
5875 (harmful,)d(or)i(lam)o(b)q(da,)e(the)i(ultimate)e(goto.)21
5876 b(A.)15 b(I.)f(Memo)g(443,)g(M.)h(I.)f(T.)h(Arti\014cial)160
5877 1773 y(In)o(telligence)f(Lab)q(oratory)m(,)f(Octob)q(er)i(1977.)75
5878 1856 y([20])k(Guy)d(Lewis)h(Steele)g(Jr.)25 b Fu(The)17
5879 b(De\014nition)h(and)g(Implementation)f(of)g(a)h(Computer)e(Pr)n(o)n
5880 (gr)n(amming)h(L)n(anguage)160 1905 y(Base)n(d)22 b(on)f(Constr)n
5881 (aints)p Fy(.)36 b(PhD)20 b(thesis,)i(Massac)o(h)o(usetts)g(Institute)f
5882 (of)e(T)m(ec)o(hnology)m(,)h(August)h(1980.)35 b(Also)160
5883 1955 y(a)o(vilable)13 b(as)i(M.)g(I.)f(T.)g(VLSI)h(Memo)f(80{32)f(and)i
5884 (as)f(M.)h(I.)f(T.)g(Arti\014cial)g(In)o(teligence)i(Lab)q(oratory)e(T)
5885 m(ec)o(hnical)160 2005 y(Rep)q(ort)h(595.)75 2088 y([21])k(Guy)13
5886 b(Lewis)g(Steele)i(Jr.)e(and)g(Gerald)f(Ja)o(y)h(Sussman.)j(Lam)o(b)q
5887 (da,)11 b(the)j(ultimate)d(imp)q(erativ)o(e.)16 b(A.)d(I.)f(Memo)g
5888 (353,)160 2138 y(M.)i(I.)f(T.)g(Arti\014cial)h(In)o(telligence)g(Lab)q
5889 (oratory)m(,)e(Marc)o(h)j(1976.)75 2221 y([22])k(Gerald)c(Ja)o(y)h
5890 (Sussman)f(and)g(Guy)g(Lewis)h(Steele)g(Jr.)24 b Fv(Constraints)p
5891 Fy(|a)15 b(language)f(for)h(expressing)i(almost-)160
5892 2271 y(hierarc)o(hical)10 b(descriptions.)j Fu(A)o(rti\014cial)e(Intel)
5893 r(ligenc)n(e)p Fy(,)f(14\(1\):1{39,)e(1980.)j(Also)f(a)o(v)n(ailable)e
5894 (as)j(M.)e(I.)h(T.)g(Arti\014cial)160 2320 y(In)o(telligence)k(Lab)q
5895 (oratory)g(Memo)f(502A.)75 2403 y([23])19 b(P)o(ascal)11
5896 b(V)m(an)f(Hen)o(tenryc)o(k.)k Fu(Constr)n(aint)e(Satisfaction)g(in)g
5897 (L)n(o)n(gic)g(Pr)n(o)n(gr)n(amming)p Fy(.)g(The)f(MIT)g(Press,)h(Cam)o
5898 (bridge,)160 2453 y(MA,)i(1989.)75 2536 y([24])19 b(Ramin)10
5899 b(D.)i(Zabih.)j(Dep)q(endency-directed)g(bac)o(ktrac)o(king)d(in)g
5900 (non-deterministic)f Fv(Scheme)q Fy(.)k(Master's)f(thesis,)160
5901 2586 y(Massac)o(h)o(usetts)i(Institute)f(of)e(T)m(ec)o(hnology)m(,)f
5902 (Jan)o(uary)i(1987.)992 2723 y(49)p eop
5903 %%Page: 50 50
5904 50 49 bop 75 195 a Fy([25])19 b(Ramin)g(D.)h(Zabih,)h(Da)o(vid)f(Allen)
5905 g(McAllester,)k(and)c(Da)o(vid)g(Chapman.)36 b(Non-deterministic)20
5906 b Fv(Lisp)h Fy(with)160 245 y(dep)q(endency-directe)q(d)c(bac)o(ktrac)o
5907 (king.)g(In)d Fu(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)g(AAAI{87)p
5908 Fy(,)e(pages)i(59{64,)d(July)h(1987.)75 328 y([26])19
5909 b(Ramin)10 b(D.)i(Zabih,)g(Da)o(vid)f(Allen)h(McAllester,)h(and)f(Da)o
5910 (vid)f(Chapman.)j(Dep)q(endency-directed)h(bac)o(ktrac)o(king)160
5911 378 y(in)f(non-deterministic)f Fv(Lisp)p Fy(.)18 b Fu(A)o(rti\014cial)c
5912 (Intel)r(ligenc)n(e)p Fy(,)f(1988.)k(Submitted)c(for)g(publication.)992
5913 2723 y(50)p eop
5914 %%Trailer
5916 userdict /end-hook known{end-hook}if
5917 %%EOF