Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/tests/coresml/doc/testsuit.wp5
ViewVC logotype

Annotation of /sml/trunk/tests/coresml/doc/testsuit.wp5

Parent Directory Parent Directory | Revision Log Revision Log


Revision 548 - (view) (download) (as text)

1 : dbm 548 ÿWPCée
2 :     §?
3 :     4
4 :    
5 :     Ä Äûÿ
6 :     ÁHHÀ
7 :    
8 :     ÁHÐÀ
9 :    
10 :     ÁHÐÀ
11 :    
12 :    
13 :     Ä ÄÑ#
14 :     Áà<¬
15 :     ÄÄ
16 :     Ã ÃÑ#
17 :    
18 :     3.4.2 Áº º 
19 :    
20 :     Technical University of Denmark for giving us the opportunity to work on this
21 :     project. Also, we would like to thank him for his assistance in the development of
22 :     this test suite.
23 :     Ã ÃÐ
24 :    
25 :     Standard ML implementations. A precise and formal definition of Standard ML
26 :     is given in ÃÃThe Definition of Standard MLÄÄÖ
27 :     capital letter.æ
28 :     develop a test suite based on the definitions present in the Definition. The
29 :     definition of the Standard ML programming language is different from the
30 :     definitions of most other programming languages À"À it mathematically describes
31 :     not only the grammar but also the meaning of the language. This is why it
32 :     seemed reasonable to try to construct a test suite based on the definitions
33 :     available, rule by rule. Because of the time limitations imposed on the project,
34 :     this test suite is limited to testing the static semantics for the Core Language of
35 :     Standard ML. The dynamic semantics for the Core Language and the Module
36 :     Language is not covered by this work.
37 :    
38 :     The test suite is formed by a collection of small Standard ML programs. Each
39 :     program is constructed to test a rule or a part of a rule, e.g. a side condition. Also
40 :     each program is accompanied by a description of how the compiler is expected to
41 :     react to it. For example, the program might fail because of a type error. On the
42 :     other hand, the program might succeed in which case its expected behaviour
43 :     must be documented.
44 :    
45 :     An exhaustive test is impossible, so care is needed in selecting cases that are
46 :     most likely to reveal errors. Some program constructions are more complicated
47 :     than others, and in general more complicated constructions are somewhat more
48 :     likely to fool a compiler than simple ones. Nevertheless, the use of this test suite
49 :     on four different Standard ML implementations showed us, that even simple
50 :     illegal constructs were accepted by some implementations (for example, two
51 :     implementations accepted free imperative type variables at top level).
52 :    
53 :     Section 2 of this document describes exactly which parts of the Definition are
54 :     tested by this test suite and which are not. Section 3 describes the approach used
55 :     in the development. It contains information regarding testing systematically,
56 :     naming files systematically and the test suite programs in general. Also the
57 :     testing of rule 17 is outlined as an example of how rules are tested
58 :     systematically. Section 4 describes how to use the test suite. Finally, section 5 is
59 :     dedicated to the conclusion. Note, that it is not the intention with this document
60 :     to describe the development of each program in this test suite in detail. Neither
61 :     does it try to explain definitions nor rules in the Definition. Anyone interested in
62 :     the definitions of Standard ML is advised to take a look at the Definition or [2]. Ã ÃÑ#
63 :     semantics for the Core Language of Standard ML. The dynamic semantics for
64 :     the Core Language and the Module Language are not covered by this work.
65 :    
66 :    
67 :     This test suite tests
68 :    
69 :     ÀÀÂ
70 :     to 52, rule 23 excluded) [chapter 4].
71 :    
72 :     ÀÀÂ
73 :     9 or [Appendix B] for the Definition, Appendix B.
74 :    
75 :     ÀÀÂ
76 :    
77 :     ÀÀÂ
78 :    
79 :     ÀÀÂ
80 :    
81 :     ÀÀÂ
82 :    
83 :     ÀÀÂ
84 :     restrictions [page 30].
85 :    
86 :     ÀÀÂ
87 :     programs R017A©AC.ML and R017K©FL.ML may however indicate
88 :     whether the compiler treats the scoping correctly).
89 :    
90 :     Ã ÃÑ#
91 :    
92 :     The rules in the Definition are tested one by one and the test programs are kept
93 :     as simple as possible. This makes it easier to ensure that the rules are tested in
94 :     all possible instances. It also minimizes the chance of problems in one
95 :     declaration affecting on the testing of another.
96 :    
97 :     ÀÀÂ
98 :     programs.
99 :    
100 :     ÀÀÂ
101 :     fail to elaborate when the side condition does not hold.
102 :    
103 :     ÀÀÂ
104 :    
105 :     ÀÀÂ
106 :     except for the test programs for the more essential rules in ML.
107 :    
108 :     For each rule there is also one or more programs that test the rule in general.
109 :     These are the programs that requires intuition to construct. The better
110 :     knowledge of SML implementations and problems herein, the better test
111 :     programs one can conceive. They should be designed so they are most likely to
112 :     fool a compiler, although they must remain correct according to the Definition.
113 :    
114 :     Naturally, the biggest problem testing compilers systematically is that not all
115 :     side conditions can be tested that easily. For instance, some of the side
116 :     conditions make demands on how the compiler should react internally. This can
117 :     not be tested directly in a program. However, if the compiler does not comply
118 :     with these conditions it could have unpredictable consequences in the
119 :     elaboration of the following declarations. Normally, if the compiler treats
120 :     complicated examples correctly, chances are that it will treat all programs
121 :     correctly with respect to this specific side condition. This is the philosophy
122 :     behind this test suite when testing internal behavior of the compiler.
123 :    
124 :    
125 :     Ã Ã3.2 Naming files systematicallyÄ Ä
126 :    
127 :     For convenience the test programs are named the following way:
128 :    
129 :     {1 char category} + {3 char rule/restriction/derived form number} + {1 char serial
130 :     number A©Z} + "©" + {2 char compiler reaction} + ".ML"
131 :     ŒThe test programs are divided into four categories:
132 :    
133 :    
134 :     as given in the Definition. The number in the filename equals the rule
135 :     number.
136 :    
137 :    
138 :     these extra restrictions. The number in the filename equals the point
139 :     number [page 9].
140 :    
141 :    
142 :     derived forms as mentioned in [Appendix A].
143 :    
144 :    
145 :     further information.
146 :    
147 :     The reactions indicated in the filenames can be either AC or FL meaning that
148 :     the compiler should accept or fail respectively.
149 :    
150 :     Examples:
151 :    
152 :     R017B©FL.ML: this program is the second program that tests rule 17 and the
153 :     compiler should refuse to elaborate it.
154 :    
155 :     S002A©AC.ML: this program is the first program that tests the second point in
156 :     the syntactic restrictions and the compiler should succeed in elaborating it.
157 :    
158 :    
159 :     Ã Ã3.3 Test suite programsÄ Ä
160 :    
161 :     Some considerations have been made in order to make it as easy as possible to
162 :     test compilers with this test suite. All programs in this test suite are made the
163 :     same way:
164 :    
165 :     ÀÀÂ
166 :     program. This ensures that a deliberate error does not influence the
167 :     elaboration of other tests.
168 :    
169 :     ÀÀÂ
170 :     named test, test1, test2 and so forth. The programs are all constructed so
171 :     the boolean variables should elaborate to true. This way, it will be
172 :     obvious, that if a variable evaluates to false there is an error in the
173 :     compiler.
174 :    
175 :     ÀÀÂ
176 :     each line. This makes the programs somewhat harder to read. However,
177 :     it enables the reader to ensure for himself that the program really tests
178 :     what it is meant to test. It also makes it possible to see which programs
179 :     uses which rules.
180 :    
181 :     ÀÀÂ
182 :     the expected output from the SML compiler. Note however, that different
183 :     SML implementations print output in different ways. This is why the
184 :     expected output is only advisory. It cannot be exact for all SML
185 :     implementations.
186 :    
187 :     The test programs for the derived forms are constructed in a somewhat different
188 :     way. More than one derived form are tested in the same program. This means
189 :     that most of these programs are quite long compared to the programs in the
190 :     other three categories. In these programs all declarations resulting in non©boolean variables are hidden in local declarations. This is done to cut down on
191 :     the material needed to be examined in order to see if the compiler does it right.
192 :     As usual all the boolean variables should evaluate to true. Furthermore, in the
193 :     last declaration of the programs in this category a variable named alltrue should
194 :     evaluate to true if all the other boolean variables are true. This way, only the
195 :     variable alltrue has to be inspected to see if the compiler elaborates and
196 :     evaluates the derived forms correctly.
197 :    
198 :    
199 :     Ã Ã3.4 Testing rule 17Ä Ä
200 :    
201 :     In this section we will describe the test programs used to test rule 17. This
202 :     description is also an example of how one can systematically construct programs
203 :     to test a given rule. These programs have not been chosen at random of course.
204 :     Rule 17 is interesting because it concerns the value binding which is
205 :     fundamental to SML. The fact that it is the most difficult rule to test also makes
206 :     it the obvious choice of rule to describe thoroughly. It is beyond the scope of this
207 :     document to describe the development of all the programs in this test suite in
208 :     such detail.
209 :    
210 :     Rule 17 concerns value declarations such as:
211 :    
212 :     ÃÃval pat = expÄÄ
213 :    
214 :     The rule has two side conditions:
215 :    
216 :     1.Áº º 
217 :     R017A©AC.ML tests valbindings in general. The next programs from ŒR017B©FL.ML to R17I©FL.ML test the closure of the variable environment VE.
218 :     The program R017J©FL.ML tests the second side condition. Finally, the program
219 :     R017K©FL.ML tests the scoping of explicit type variables. Note that in the
220 :     valbindings in the programs R017A©AC.ML and R017K©FL.ML the explicit type
221 :     variables scoped here have been listed in brackets {}.
222 :    
223 :    
224 :     Ã Ã3.4.1 Test of the valbindingÄ Ä
225 :    
226 :     R0017A©AC.ML:
227 :    
228 :     Ñ#
229 :     Ó
230 :     Ñ#
231 :     explicit type variables. Since 'a is scoped locally at the second value declaration,
232 :     Ñ#
233 :     À“À ÀzÀ'b.'b ÀÀ 'b}. Hence the applications Ñ#
234 :    
235 :    
236 :     Ã Ã3.4.2 Test of closure of the variable environment VEÄ Ä
237 :    
238 :     The next programs test the different alternatives the SML compiler has to
239 :     contemplate when closing the variable environment in rule 17. As stated [page
240 :     21], the compiler should determine whether the expression ÃÃexpÄÄ is expansive or
241 :     non©expansive and do the closure operation accordingly. The type variables can
242 :     be either applicative or imperative and either free or not free in the context C.
243 :     This results in the following eight possibilities and test programs.
244 :    
245 :    
246 :     Ò h
247 :     end;
248 :     Ñ#
249 :     is the initial context. But since 'a is free in the context it should not be quantified
250 :     in this value declaration. Therefore this value declaration should result in the
251 :     variable environment VE' = {y À“À 'a ÀÀ 'a}. Now 'a can be unified with bool in the
252 :     expression ÃÃnot y ÄÄbut not with int in the same expression as well. Thus the
253 :     compiler should fail to elaborate this program.
254 :    
255 :    
256 :     R017C©AC.ML:
257 :     Û!
258 :     end;
259 :     Ñ#
260 :     type variables are free in the context and ÃÃexpÄÄ is non©expansive, 'a should be
261 :     quantified in this value declaration. Therefore this value declaration should
262 :     result in the variable environment VE' = {f À“À ÀzÀ'a.'a ÀÀ 'a}. Now 'a can be unified
263 :     with int in the expression ÃÃf 3 = 3 ÄÄand with bool in the expression ÃÃf trueÄÄ.
264 :    
265 :    
266 :     R017D©AC.ML:
267 :    
268 :     Ñ#
269 :     in
270 :     f 3 ; f true
271 :     end;
272 :     Ñ#
273 :     no type variables are free in the context and the expression in the valbinding, Ñ#
274 :     Now 'a can be unified with int in the expression ÃÃf 3 ÄÄand with bool in the
275 :     expression ÃÃf trueÄÄ.
276 :    
277 :    
278 :     R017E-FL.ML:
279 :    
280 :     Ñ#
281 :     in
282 :     not(!y) andalso !y = 5
283 :     end;
284 :     Ñ#
285 :     the type variable for x, 'a, is free in the context 'a should not be quantified in this
286 :     value declaration. Therefore this value declaration should result in the variable
287 :     environment VE' = {y À“À 'a ref}. Now 'a can be unified with bool in the expression
288 :     ÃÃnot(!y)ÄÄ but not with int in the expression ÃÃ!y = 5ÄÄ. Thus the compiler should fail to
289 :     elaborate this program.
290 :    
291 :    
292 :     R017F-FL.ML:
293 :    
294 :     Ñ#
295 :     in
296 :     (g = 5.5) andalso g
297 :     end;
298 :     Ñ#
299 :     But since the type variable for x, 'a, is free in the context C, 'a should not be
300 :     quantified in this value declaration. Therefore the value declaration should
301 :     result in the variable environment VE' = {g À“À 'a}. Now 'a can be unified with real
302 :     in the expression ÃÃg = 5.5ÄÄ but not with bool in the expression ÃÃgÄÄ. Thus the compiler
303 :     should fail to elaborate this program.
304 :    
305 :    
306 :     R017G-AC.ML:
307 :    
308 :     Ñ#
309 :     in
310 :     let
311 :     val (f,y) = r
312 :     in
313 :     f 3 = 3 andalso f true andalso ( y := [1]; [1] = !y)
314 :     end
315 :     end;
316 :     Ñ#
317 :     type variable 'a should be quantified. Therefore this value declaration should
318 :     give the variable environment VE' = {r À“À ÀzÀ'a.('a ÀÀ 'a) * 'b list ref }. Now 'a can be
319 :     unified with int in the expression ÃÃf 3 = 3ÄÄ and also with bool in the expression ÃÃf
320 :     trueÄÄ.
321 :    
322 :    
323 :     R017H-FL.ML:
324 :    
325 :     Ñ#
326 :     in
327 :     let
328 :     val (f,y) = r
329 :     in
330 :     f 3 = 3
331 :     andalso f true
332 :     andalso (y := [1]; [1] = !y)
333 :     andalso (y := [true]; [true] = !y)
334 :     end
335 :     end;
336 :     Ñ#
337 :     and the expression is expansive 'b should not be quantified in this value
338 :     declaration. Therefore this value declaration should result in the variable
339 :     environment VE' = {r À“À ÀzÀ'a.('a ÀÀ 'a) * 'b list ref }. The program should not
340 :     elaborate since 'b can not be unified with int list in the expression ÃÃy := [1]ÄÄ and
341 :     also with bool list in the expression ÃÃy := [true]ÄÄ. Thus the compiler should fail to
342 :     elaborate this program.
343 :    
344 :    
345 :     R017I-FL.ML:
346 :    
347 :     Ñ#
348 :     in
349 :     y := 1 ; y := true
350 :     end;
351 :     Ñ#
352 :     'a is free in this context 'a should not be quantified in this value declaration.
353 :     Therefore the value declaration should result in the variable environment VE' =
354 :     {y À“À 'a ref}. The program should not elaborate since 'a cannot be unified with int
355 :     in the expression ÃÃy := 1ÄÄ and also with bool in the expression ÃÃy := trueÄÄ. Thus the
356 :     compiler should fail to elaborate this program.
357 :    
358 :    
359 :     R017J-FL.ML:
360 :    
361 :     Ñ#
362 :     in
363 :     y
364 :     end;
365 :     Ñ#
366 :     declaration sets y equal to x the two type variables, 'a and 'b, must also be the
367 :     same. This breaks the second side condition of rule 17 (U ÀÀ tyvars VE' = ÀPÀ). Thus
368 :     the program should not elaborate.Œ™R017K-FL.ML:
369 :    
370 :     Ñ#
371 :     Ó
372 :     This program is taken from [page 20]. It tests the scoping of explicit type
373 :     variables. The type variable 'a is scoped at the outer value declaration. This
374 :     means that the valbinding, Ñ#
375 :     {Id À“À 'a ÀÀ 'a}. This way Ñ#
376 :     expression Ñ#
377 :     However, the work is made somewhat easier by the accessory files provided with
378 :     it. For testing compilers running under MS©DOS the following batch files are
379 :     provided:
380 :    
381 :     TEST_ALL.BATÂ
382 :     output into a subdirectory called LOGFILES.
383 :    
384 :     TEST_ONE.BATÂ
385 :     compiler to be tested. Used by TEST_ALL.BAT.
386 :    
387 :     SHOW_ALL.BATÂ
388 :     actual results with the expected results to see if the
389 :     compiler has elaborated and evaluated the programs
390 :     correctly.
391 :    
392 :     SHOW_ONE.BATÂ
393 :    
394 :     For testing compilers running under UNIX the script TEST_ALL.S is provided.
395 :     The command:
396 :    
397 :     sh TEST_ALL.S > compiler.log
398 :    
399 :     runs the compiler with all the test programs and stores all the output into the
400 :     file compiler.log.
401 :    
402 :     Please note that ÃÃit is very important that the output from the compiler is carefully
403 :     examinedÄÄ. It should be checked that the output from the compiler matches the
404 :     expected results. This does not mean that the compiler should give the same
405 :     results syntactically but semantically. The test results from the failing programs
406 :     should be examined closely to see if an error message really is a result of a
407 :     deliberate error in a program.
408 :    
409 :     Ã ÃÑ#
410 :     implementation, or any other program for that matter, works as intended to do
411 :     by using it on test data. For example, one cannot ensure that a every new
412 :     datatype in a SML program is really assigned a new internal type in the SML
413 :     implementation (rule 29). Also, one cannot test the internal interpretation of a
414 :     SML program. This is why, for example, it is not possible to ensure that derived
415 :     forms are interpreted correctly. One can create a number of test programs
416 :     containing derived forms and examine if they behave as expected. But one
417 :     cannot really check that the derived forms are interpreted correctly internally in
418 :     the SML implementation. Even though the compiler handles the examples
419 :     correctly one will never know if the compiler will handle all other instances of
420 :     the derived forms correctly as well.
421 :    
422 :     So is the approach used in this project appropriate, e.g. is systematical testing
423 :     based on the rules from the Definition the best way to test a SML
424 :     implementation? We think so for the following reasons:
425 :    
426 :     ÀÀÂ
427 :     possible to use a systematic approach.
428 :    
429 :     ÀÀÂ
430 :     things that might otherwise not be thought of.
431 :    
432 :     ÀÀÂ
433 :     failure to elaborate or evaluate a declaration is not a side effect of a
434 :     previous declaration.
435 :    
436 :     ÀÀÂ
437 :    
438 :     The question then is if we have found more errors than we would by testing at
439 :     random. We are convinced that we actually have. The arguments are the same
440 :     as above plus the fact that this test suite makes it very easy to compare expected
441 :     results with actual results. Also by constructing test programs at random
442 :     chances are that different programs might actually test the same thing. One
443 :     would have to check the Definition to see what a program actually tested. This
444 :     approach could lead to much more work.
445 :    
446 :     Having said this about the systematical approach we should add, as stated
447 :     before, that intuition was also a part of the development of the programs in this
448 :     test suite, e.g. the rules in the Definition cannot be translated directly into
449 :     programs. The construction of a program for a specific rule or a side condition
450 :     sometimes required a lot of effort.Œ™Finally, we would like to reemphasize that an exhaustive test is impossible using
451 :     test data. If a SML implementation elaborates (and evaluates) all programs in
452 :     this test suite correctly it may of course still contain errors.
453 :    
454 :     Ã ÃÑ#
455 :     ML. MIT Press, 1990.
456 :    
457 :     [2]Â
458 :     1991.
459 :    
460 :     [3]Â
461 :    
462 :     [4]Â
463 :    
464 :    
465 :     Ã ÃÑ#
466 :     it can be seen from the list, all the rules 1©22, 24©52 are used in the test suite.
467 :    
468 :    
469 :     Ã ÃÑ#
470 :     R010A-AC.ML, R010B-FL.ML, R011A-AC.ML, R011B-FL.ML, R011D-FL.ML, R012A-AC.ML,
471 :     R012B-FL.ML, R012C-FL.ML, R013A-AC.ML, R014A-AC.ML, R015A-AC.ML, R015B-FL.ML,
472 :     R015C-FL.ML, R016A-AC.ML, R016B-AC.ML, R017B-FL.ML, R017C-AC.ML, R017E-FL.ML,
473 :     R017F-FL.ML, R017G-AC.ML, R017I-FL.ML, R018A-AC.ML, R020A-AC.ML, R020B-FL.ML,
474 :     R020C-FL.ML, R021A-AC.ML, R021B-FL.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML,
475 :     R024A-AC.ML, R025A-AC.ML, R026A-FL.ML, R026B-FL.ML, R027A-AC.ML, R027B-AC.ML,
476 :     R027C-FL.ML, R028A-AC.ML, R029A-AC.ML, R029B-AC.ML, R030A-AC.ML, R031A-AC.ML,
477 :     R031B-FL.ML, R031C-FL.ML, R034A-AC.ML, R034B-AC.ML, R035A-AC.ML, R038A-AC.ML,
478 :     R039A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML, R044B-FL.ML,
479 :     R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R048A-AC.ML, R049A-AC.ML,
480 :     R049B-FL.ML,
481 :    
482 :     Ã ÃRule 2:Ä Ä
483 :     R002A-FL.ML, R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R006A-AC.ML, R006B-FL.ML,
484 :     R006C-FL.ML, R007A-AC.ML, R008A-AC.ML, R010A-AC.ML, R010B-FL.ML, R011A-AC.ML,
485 :     R011E-FL.ML, R013A-AC.ML, R014A-AC.ML, R015A-AC.ML, R015B-FL.ML, R015C-FL.ML,
486 :     R016B-AC.ML, R017A-AC.ML, R017B-FL.ML, R017C-AC.ML, R017D-AC.ML, R017E-FL.ML,
487 :     R017F-FL.ML, R017G-AC.ML, R017H-FL.ML, R017I-FL.ML, R017J-FL.ML, R017K-FL.ML,
488 :     R018A-AC.ML, R019A-AC.ML, R019B-AC.ML, R019C-FL.ML, R019D-AC.ML, R020A-AC.ML,
489 :     R020B-FL.ML, R020C-FL.ML, R020D-AC.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML,
490 :     R024A-AC.ML, R025A-AC.ML, R026B-FL.ML, R027A-AC.ML, R027B-AC.ML, R027C-FL.ML,
491 :     R027D-FL.ML, R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R029C-FL.ML, R031A-AC.ML,
492 :     R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R036A-AC.ML, R038A-AC.ML, R039A-AC.ML,
493 :     R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML, R044B-FL.ML, R045A-AC.ML,
494 :     R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML,
495 :    
496 :     Ã ÃRule 3:Ä Ä
497 :     R003A-FL.ML, R005A-AC.ML, R005B-FL.ML, R006A-AC.ML, R006B-FL.ML, R006C-FL.ML,
498 :     R008A-AC.ML, R010A-AC.ML, R011A-AC.ML, R011B-FL.ML, R011C-FL.ML, R013A-AC.ML,
499 :     R017C-AC.ML, R017D-AC.ML, R017E-FL.ML, R017G-AC.ML, R017H-FL.ML, R017I-FL.ML,
500 :     R019A-AC.ML, R019B-AC.ML, R019C-FL.ML, R019D-AC.ML, R020A-AC.ML, R020B-FL.ML,
501 :     R020C-FL.ML, R020D-AC.ML, R022A-AC.ML, R022B-AC.ML, R025B-FL.ML, R027D-FL.ML,
502 :     R028B-AC.ML, R029A-AC.ML, R029B-AC.ML, R029C-FL.ML, R029D-FL.ML, R030A-AC.ML,
503 :     R031A-AC.ML, R031B-FL.ML, R031C-FL.ML, R034A-AC.ML, R034C-AC.ML, R035A-AC.ML,
504 :     R036A-AC.ML, R038A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML,
505 :     R044B-FL.ML, R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R048A-AC.ML,
506 :     R049A-AC.ML, R049B-FL.ML, R050A-AC.ML, R052A-AC.ML, R100A-FL.ML,
507 :    
508 :     Ã ÃRule 4:Ä Ä
509 :     R013A-AC.ML, R013B-FL.ML, R021A-AC.ML, R044A-AC.ML,
510 :    
511 :     Ã ÃRule 5:Ä Ä
512 :     R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R006B-FL.ML, R006C-FL.ML, R007A-AC.ML,
513 :     R008A-AC.ML, R010A-AC.ML, R010B-FL.ML, R011A-AC.ML, R011B-FL.ML, R013A-AC.ML,
514 :     R015B-FL.ML, R017A-AC.ML, R017B-FL.ML, R017C-AC.ML, R017E-FL.ML, R017F-FL.ML,
515 :     R017G-AC.ML, R017H-FL.ML, R017I-FL.ML, R017K-FL.ML, R018A-AC.ML, R019A-AC.ML,
516 :     R019B-AC.ML, R019C-FL.ML, R019D-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML,
517 :     R020D-AC.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R025A-AC.ML, R027A-AC.ML,
518 :     R027B-AC.ML, R027C-FL.ML, R027D-FL.ML, R028A-AC.ML, R029A-AC.ML, R029B-AC.ML,
519 :     R029C-FL.ML, R030A-AC.ML, R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R035A-AC.ML,
520 :     R038A-AC.ML, R039A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML,
521 :     R044B-FL.ML, R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R048A-AC.ML,
522 :     R049A-AC.ML, R049B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML,
523 :    
524 :     Ã ÃRule 6:Ä Ä
525 :     R006A-AC.ML, R006B-FL.ML, R006C-FL.ML, R010B-FL.ML, R017A-AC.ML, R017B-FL.ML,
526 :     R017C-AC.ML, R017D-AC.ML, R017E-FL.ML, R017F-FL.ML, R017G-AC.ML, R017H-FL.ML,
527 :     R017I-FL.ML, R017J-FL.ML, R019B-AC.ML, R019C-FL.ML, R019D-AC.ML, R024A-AC.ML,
528 :     R025B-FL.ML, R029B-AC.ML, R031B-FL.ML, R031C-FL.ML,
529 :    
530 :     Ã ÃRule 7:Ä Ä
531 :     R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R007A-AC.ML, R008A-AC.ML, R010B-FL.ML,
532 :     R011A-AC.ML, R011E-FL.ML, R013A-AC.ML, R014A-AC.ML, R017C-AC.ML, R017F-FL.ML,
533 :     R017G-AC.ML, R017H-FL.ML, R019A-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML,
534 :     R025A-AC.ML, R027A-AC.ML, R027B-AC.ML, R027C-FL.ML, R031A-AC.ML, R031B-FL.ML,
535 :    
536 :     Ã ÃRule 8:Ä Ä
537 :     R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R006B-FL.ML, R006C-FL.ML, R007A-AC.ML,
538 :     R008A-AC.ML, R010A-AC.ML, R010B-FL.ML, R011A-AC.ML, R011B-FL.ML, R013A-AC.ML,
539 :     R015B-FL.ML, R017A-AC.ML, R017B-FL.ML, R017C-AC.ML, R017E-FL.ML, R017F-FL.ML,
540 :     R017G-AC.ML, R017H-FL.ML, R017I-FL.ML, R017K-FL.ML, R018A-AC.ML, R019A-AC.ML,
541 :     R019B-AC.ML, R019C-FL.ML, R019D-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML,
542 :     R020D-AC.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R025A-AC.ML, R027A-AC.ML,
543 :     R027B-AC.ML, R027C-FL.ML, R027D-FL.ML, R028A-AC.ML, R029A-AC.ML, R029B-AC.ML,
544 :     R029C-FL.ML, R030A-AC.ML, R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R035A-AC.ML,
545 :     R038A-AC.ML, R039A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML,
546 :     R044B-FL.ML, R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R048A-AC.ML,
547 :     R049A-AC.ML, R049B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML,
548 :    
549 :     Ã ÃRule 9:Ä Ä
550 :     R002A-FL.ML, R003A-FL.ML, R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R006A-AC.ML,
551 :     R006B-FL.ML, R006C-FL.ML, R007A-AC.ML, R008A-AC.ML, R010A-AC.ML, R010B-FL.ML,
552 :     R011A-AC.ML, R011B-FL.ML, R011C-FL.ML, R011D-FL.ML, R011E-FL.ML, R012A-AC.ML,
553 :     R012B-FL.ML, R012C-FL.ML, R013A-AC.ML, R013B-FL.ML, R014A-AC.ML, R015A-AC.ML,
554 :     R015B-FL.ML, R015C-FL.ML, R016A-AC.ML, R016B-AC.ML, R017A-AC.ML, R017B-FL.ML,
555 :     R017C-AC.ML, R017D-AC.ML, R017E-FL.ML, R017F-FL.ML, R017G-AC.ML, R017H-FL.ML,
556 :     R017I-FL.ML, R017J-FL.ML, R017K-FL.ML, R018A-AC.ML, R019A-AC.ML, R019B-AC.ML,
557 :     R019C-FL.ML, R019D-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R020D-AC.ML,
558 :     R021A-AC.ML, R021B-FL.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R024A-AC.ML,
559 :     R025A-AC.ML, R025B-FL.ML, R026A-FL.ML, R026B-FL.ML, R027A-AC.ML, R027B-AC.ML,
560 :     R027C-FL.ML, R027D-FL.ML, R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R029A-AC.ML,
561 :     R029B-AC.ML, R029C-FL.ML, R029D-FL.ML, R030A-AC.ML, R031A-AC.ML, R031B-FL.ML,
562 :     R031C-FL.ML, R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R035A-AC.ML, R036A-AC.ML,
563 :     R038A-AC.ML, R039A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML,
564 :     R044B-FL.ML, R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R048A-AC.ML,
565 :     R049A-AC.ML, R049B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML, R100A-FL.ML,
566 :    
567 :     Ã ÃRule 10:Ä Ä
568 :     R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R006B-FL.ML, R006C-FL.ML, R007A-AC.ML,
569 :     R008A-AC.ML, R010A-AC.ML, R010B-FL.ML, R011A-AC.ML, R013A-AC.ML, R014A-AC.ML,
570 :     R015B-FL.ML, R016B-AC.ML, R017A-AC.ML, R017B-FL.ML, R017C-AC.ML, R017D-AC.ML,
571 :     R017E-FL.ML, R017F-FL.ML, R017G-AC.ML, R017H-FL.ML, R017I-FL.ML, R017K-FL.ML,
572 :     R018A-AC.ML, R019A-AC.ML, R019B-AC.ML, R019C-FL.ML, R019D-AC.ML, R020A-AC.ML,
573 :     R020B-FL.ML, R020C-FL.ML, R020D-AC.ML, R021A-AC.ML, R022A-AC.ML, R022B-AC.ML,
574 :     R022C-FL.ML, R025A-AC.ML, R027A-AC.ML, R027B-AC.ML, R027C-FL.ML, R027D-FL.ML,
575 :     R028A-AC.ML, R028B-AC.ML, R029A-AC.ML, R029B-AC.ML, R029C-FL.ML, R030A-AC.ML,
576 :     R031A-AC.ML, R031B-FL.ML, R031C-FL.ML, R039A-AC.ML, R041A-AC.ML, R043A-AC.ML,
577 :     R043B-FL.ML, R044A-AC.ML, R044B-FL.ML, R100A-FL.ML,
578 :    
579 :     Ã ÃRule 11:Ä Ä
580 :     R011A-AC.ML, R011B-FL.ML, R011D-FL.ML, R011E-FL.ML, R014A-AC.ML, R016B-AC.ML,
581 :     R017K-FL.ML, R020A-AC.ML, R025B-FL.ML, R048A-AC.ML, R049A-AC.ML, R049B-FL.ML,
582 :    
583 :     Ã ÃRule 12:Ä Ä
584 :     R012A-AC.ML, R012B-FL.ML, R012C-FL.ML, R013A-AC.ML, R031A-AC.ML, R031B-FL.ML,
585 :    
586 :     Ã ÃRule 13:Ä Ä
587 :     R013A-AC.ML, R013B-FL.ML, R031A-AC.ML, R031B-FL.ML,
588 :    
589 :     Ã Ã Rule 14:Ä Ä
590 :     R008A-AC.ML, R011E-FL.ML, R014A-AC.ML, R015A-AC.ML, R015B-FL.ML, R015C-FL.ML,
591 :     R016A-AC.ML, R016B-AC.ML, R017A-AC.ML, R017B-FL.ML, R017C-AC.ML, R017D-AC.ML,
592 :     R017E-FL.ML, R017F-FL.ML, R017G-AC.ML, R017H-FL.ML, R017I-FL.ML, R017J-FL.ML,
593 :     R017K-FL.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R022A-AC.ML, R022B-AC.ML,
594 :     R022C-FL.ML, R027A-AC.ML, R027B-AC.ML, R027C-FL.ML, R027D-FL.ML, R028B-AC.ML,
595 :     R034C-AC.ML, R036A-AC.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML,
596 :    
597 :     Ã ÃRule 15:Ä Ä
598 :     R008A-AC.ML, R011E-FL.ML, R012A-AC.ML, R012B-FL.ML, R012C-FL.ML, R013A-AC.ML,
599 :     R014A-AC.ML, R015A-AC.ML, R015B-FL.ML, R015C-FL.ML, R016A-AC.ML, R016B-AC.ML,
600 :     R017A-AC.ML, R017B-FL.ML, R017C-AC.ML, R017D-AC.ML, R017E-FL.ML, R017F-FL.ML,
601 :     R017G-AC.ML, R017H-FL.ML, R017I-FL.ML, R017J-FL.ML, R017K-FL.ML, R020A-AC.ML,
602 :     R020B-FL.ML, R020C-FL.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R027A-AC.ML,
603 :     R027B-AC.ML, R027C-FL.ML, R027D-FL.ML, R028B-AC.ML, R031A-AC.ML, R031B-FL.ML,
604 :     R034C-AC.ML, R036A-AC.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML,
605 :    
606 :     Ã ÃRule 16:Ä Ä
607 :     R008A-AC.ML, R011E-FL.ML, R012A-AC.ML, R012B-FL.ML, R012C-FL.ML, R013A-AC.ML,
608 :     R014A-AC.ML, R015A-AC.ML, R015B-FL.ML, R015C-FL.ML, R016A-AC.ML, R016B-AC.ML,
609 :     R017A-AC.ML, R017B-FL.ML, R017C-AC.ML, R017D-AC.ML, R017E-FL.ML, R017F-FL.ML,
610 :     R017G-AC.ML, R017H-FL.ML, R017I-FL.ML, R017J-FL.ML, R017K-FL.ML, R020A-AC.ML,
611 :     R020B-FL.ML, R020C-FL.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R027A-AC.ML,
612 :     R027B-AC.ML, R027C-FL.ML, R027D-FL.ML, R028B-AC.ML, R031A-AC.ML, R031B-FL.ML,
613 :     R034C-AC.ML, R036A-AC.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML,
614 :    
615 :     Ã ÃRule 17:Ä Ä
616 :     R002A-FL.ML, R003A-FL.ML, R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R006A-AC.ML,
617 :     R006B-FL.ML, R006C-FL.ML, R007A-AC.ML, R008A-AC.ML, R010A-AC.ML, R010B-FL.ML,
618 :     R011A-AC.ML, R011B-FL.ML, R011C-FL.ML, R011D-FL.ML, R011E-FL.ML, R012A-AC.ML,
619 :     R012B-FL.ML, R012C-FL.ML, R013A-AC.ML, R013B-FL.ML, R014A-AC.ML, R015A-AC.ML,
620 :     R015B-FL.ML, R015C-FL.ML, R016A-AC.ML, R016B-AC.ML, R017A-AC.ML, R017B-FL.ML,
621 :     R017C-AC.ML, R017D-AC.ML, R017E-FL.ML, R017F-FL.ML, R017G-AC.ML, R017H-FL.ML,
622 :     R017I-FL.ML, R017J-FL.ML, R017K-FL.ML, R018A-AC.ML, R019A-AC.ML, R019B-AC.ML,
623 :     R019C-FL.ML, R019D-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R020D-AC.ML,
624 :     R021A-AC.ML, R021B-FL.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R024A-AC.ML,
625 :     R025A-AC.ML, R025B-FL.ML, R026A-FL.ML, R026B-FL.ML, R027A-AC.ML, R027B-AC.ML,
626 :     R027C-FL.ML, R027D-FL.ML, R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R029A-AC.ML,
627 :     R029B-AC.ML, R029C-FL.ML, R029D-FL.ML, R030A-AC.ML, R031A-AC.ML, R031B-FL.ML,
628 :     R031C-FL.ML, R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R035A-AC.ML, R036A-AC.ML,
629 :     R038A-AC.ML, R039A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML,
630 :     R044B-FL.ML, R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R048A-AC.ML,
631 :     R049A-AC.ML, R049B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML, R100A-FL.ML,
632 :    
633 :     Ã ÃRule 18:Ä Ä
634 :     R018A-AC.ML, R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R028D-FL.ML, R029A-AC.ML,
635 :     R048A-AC.ML, R049A-AC.ML, R049B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML,
636 :    
637 :     Ã ÃRule 19:Ä Ä
638 :     R006C-FL.ML, R012C-FL.ML, R013B-FL.ML, R019A-AC.ML, R019B-AC.ML, R019C-FL.ML,
639 :     R019D-AC.ML, R025B-FL.ML, R029A-AC.ML, R029B-AC.ML, R029C-FL.ML, R029D-FL.ML,
640 :     R029E-AC.ML, R030A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML,
641 :    
642 :     Ã ÃRule 20:Ä Ä
643 :     R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R020D-AC.ML,
644 :    
645 :     Ã ÃRule 21:Ä Ä
646 :     R012A-AC.ML, R012B-FL.ML, R013A-AC.ML, R021A-AC.ML, R021B-FL.ML, R031A-AC.ML,
647 :     R031B-FL.ML, R031C-FL.ML, R032A-AC.ML, R041A-AC.ML, R044A-AC.ML, R044B-FL.ML,
648 :     R052A-AC.ML,
649 :    
650 :     Ã ÃRule 22:Ä Ä
651 :     R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R024A-AC.ML,
652 :    
653 :     Ã ÃRule 24:Ä Ä
654 :     R017D-AC.ML, R017I-FL.ML, R024A-AC.ML,
655 :    
656 :     Ã ÃRule 25:Ä Ä
657 :     R017D-AC.ML, R017G-AC.ML, R017I-FL.ML, R024A-AC.ML, R025B-FL.ML, Œ™Ã ÃRule 26:Ä Ä
658 :     R002A-FL.ML, R003A-FL.ML, R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R006A-AC.ML,
659 :     R006B-FL.ML, R006C-FL.ML, R007A-AC.ML, R008A-AC.ML, R010A-AC.ML, R010B-FL.ML,
660 :     R011A-AC.ML, R011B-FL.ML, R011C-FL.ML, R011D-FL.ML, R011E-FL.ML, R012A-AC.ML,
661 :     R012B-FL.ML, R012C-FL.ML, R013A-AC.ML, R013B-FL.ML, R014A-AC.ML, R015A-AC.ML,
662 :     R015B-FL.ML, R015C-FL.ML, R016A-AC.ML, R016B-AC.ML, R017A-AC.ML, R017B-FL.ML,
663 :     R017C-AC.ML, R017D-AC.ML, R017E-FL.ML, R017F-FL.ML, R017G-AC.ML, R017H-FL.ML,
664 :     R017I-FL.ML, R017J-FL.ML, R017K-FL.ML, R018A-AC.ML, R019A-AC.ML, R019B-AC.ML,
665 :     R019C-FL.ML, R019D-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R020D-AC.ML,
666 :     R021A-AC.ML, R021B-FL.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R024A-AC.ML,
667 :     R025A-AC.ML, R025B-FL.ML, R026A-FL.ML, R026B-FL.ML, R027A-AC.ML, R027B-AC.ML,
668 :     R027C-FL.ML, R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R029A-AC.ML, R029B-AC.ML,
669 :     R029C-FL.ML, R029D-FL.ML, R030A-AC.ML, R031A-AC.ML, R031B-FL.ML, R031C-FL.ML,
670 :     R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R035A-AC.ML, R036A-AC.ML, R038A-AC.ML,
671 :     R039A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML, R044B-FL.ML,
672 :     R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R048A-AC.ML, R049A-AC.ML,
673 :     R049B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML, R100A-FL.ML,
674 :    
675 :     Ã ÃRule 27:Ä Ä
676 :     R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R027A-AC.ML, R027D-FL.ML,
677 :    
678 :     Ã ÃRule 28:Ä Ä
679 :     R018A-AC.ML, R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R028D-FL.ML, R029A-AC.ML,
680 :     R048A-AC.ML, R049A-AC.ML, R049B-FL.ML, R050B-FL.ML, R052A-AC.ML,
681 :    
682 :     Ã ÃRule 29:Ä Ä
683 :     R006C-FL.ML, R012C-FL.ML, R013B-FL.ML, R019A-AC.ML, R019B-AC.ML, R019C-FL.ML,
684 :     R019D-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R020D-AC.ML, R025B-FL.ML,
685 :     R029A-AC.ML, R029B-AC.ML, R029C-FL.ML, R029D-FL.ML, R029E-AC.ML, R030A-AC.ML,
686 :     R041A-AC.ML, R043A-AC.ML, R043B-FL.ML,
687 :    
688 :     Ã ÃRule 30:Ä Ä
689 :     R006C-FL.ML, R012C-FL.ML, R013B-FL.ML, R019A-AC.ML, R019B-AC.ML, R019C-FL.ML,
690 :     R019D-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R020D-AC.ML, R029A-AC.ML,
691 :     R029B-AC.ML, R029C-FL.ML, R029D-FL.ML, R029E-AC.ML, R030A-AC.ML, R041A-AC.ML,
692 :     R043A-AC.ML, R043B-FL.ML,
693 :    
694 :     Ã ÃRule 31:Ä Ä
695 :     R012A-AC.ML, R012B-FL.ML, R013A-AC.ML, R021A-AC.ML, R021B-FL.ML, R031A-AC.ML,
696 :     R031B-FL.ML, R031C-FL.ML, R032A-AC.ML, R041A-AC.ML, R044A-AC.ML, R044B-FL.ML,
697 :     R052A-AC.ML,
698 :    
699 :     Ã ÃRule 32:Ä Ä
700 :     R032A-AC.ML,
701 :    
702 :     Ã ÃRule 33:Ä Ä
703 :     R036A-AC.ML, R043A-AC.ML, R043B-FL.ML,
704 :    
705 :     Ã ÃRule 34:Ä Ä
706 :     R027A-AC.ML, R027B-AC.ML, R027C-FL.ML, R031A-AC.ML, R031B-FL.ML, R034B-AC.ML,
707 :    
708 :     Ã ÃRule 35:Ä Ä
709 :     R002A-FL.ML, R003A-FL.ML, R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R006A-AC.ML,
710 :     R006B-FL.ML, R006C-FL.ML, R007A-AC.ML, R008A-AC.ML, R010A-AC.ML, R010B-FL.ML,
711 :     R011A-AC.ML, R011B-FL.ML, R011C-FL.ML, R011D-FL.ML, R011E-FL.ML, R012A-AC.ML,
712 :     R012B-FL.ML, R012C-FL.ML, R013A-AC.ML, R013B-FL.ML, R014A-AC.ML, R015A-AC.ML,
713 :     R015B-FL.ML, R015C-FL.ML, R016A-AC.ML, R016B-AC.ML, R017A-AC.ML, R017B-FL.ML,
714 :     R017C-AC.ML, R017D-AC.ML, R017E-FL.ML, R017F-FL.ML, R017G-AC.ML, R017H-FL.ML,
715 :     R017I-FL.ML, R017J-FL.ML, R017K-FL.ML, R018A-AC.ML, R019A-AC.ML, R019B-AC.ML,
716 :     R019C-FL.ML, R019D-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R020D-AC.ML,
717 :     R021A-AC.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R024A-AC.ML, R025A-AC.ML,
718 :     R025B-FL.ML, R026B-FL.ML, R027A-AC.ML, R027B-AC.ML, R027C-FL.ML, R027D-FL.ML,
719 :     R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R028D-FL.ML, R029A-AC.ML, R029B-AC.ML,
720 :     R029C-FL.ML, R029D-FL.ML, R030A-AC.ML, R031A-AC.ML, R031B-FL.ML, R031C-FL.ML,
721 :     R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R035A-AC.ML, R036A-AC.ML, R038A-AC.ML,
722 :     R039A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML, R044B-FL.ML,
723 :     R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R048A-AC.ML, R049A-AC.ML,
724 :     R049B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML, R100A-FL.ML,
725 :     ŒÃ ÃRule 36:Ä Ä
726 :     R015A-AC.ML, R015C-FL.ML, R016A-AC.ML, R027D-FL.ML, R031A-AC.ML, R034A-AC.ML,
727 :     R034C-AC.ML, R036A-AC.ML, R044B-FL.ML,
728 :    
729 :     Ã ÃRule 37:Ä Ä
730 :     R012A-AC.ML, R012B-FL.ML, R012C-FL.ML, R013A-AC.ML, R021B-FL.ML,
731 :    
732 :     Ã ÃRule 38:Ä Ä
733 :     R008A-AC.ML, R017G-AC.ML, R017H-FL.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML,
734 :     R027D-FL.ML, R031A-AC.ML, R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R036A-AC.ML,
735 :     R038A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML, R044B-FL.ML,
736 :     R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML,
737 :    
738 :     Ã ÃRule 39:Ä Ä
739 :     R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R027D-FL.ML, R039A-AC.ML,
740 :    
741 :     Ã ÃRule 40:Ä Ä
742 :     R008A-AC.ML, R038A-AC.ML, R041A-AC.ML, R044B-FL.ML, R045A-AC.ML, R045B-FL.ML,
743 :    
744 :     Ã ÃRule 41:Ä Ä
745 :     R008A-AC.ML, R017G-AC.ML, R017H-FL.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML,
746 :     R027D-FL.ML, R031A-AC.ML, R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R036A-AC.ML,
747 :     R038A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML, R044B-FL.ML,
748 :     R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML,
749 :    
750 :     Ã ÃRule 42:Ä Ä
751 :     R002A-FL.ML, R003A-FL.ML, R005A-AC.ML, R005B-FL.ML, R005C-FL.ML, R006A-AC.ML,
752 :     R006B-FL.ML, R006C-FL.ML, R007A-AC.ML, R008A-AC.ML, R010A-AC.ML, R010B-FL.ML,
753 :     R011A-AC.ML, R011B-FL.ML, R011C-FL.ML, R011D-FL.ML, R011E-FL.ML, R012A-AC.ML,
754 :     R012B-FL.ML, R012C-FL.ML, R013A-AC.ML, R013B-FL.ML, R014A-AC.ML, R015A-AC.ML,
755 :     R015B-FL.ML, R015C-FL.ML, R016A-AC.ML, R016B-AC.ML, R017A-AC.ML, R017B-FL.ML,
756 :     R017C-AC.ML, R017D-AC.ML, R017E-FL.ML, R017F-FL.ML, R017G-AC.ML, R017H-FL.ML,
757 :     R017I-FL.ML, R017J-FL.ML, R017K-FL.ML, R018A-AC.ML, R019A-AC.ML, R019B-AC.ML,
758 :     R019C-FL.ML, R019D-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R020D-AC.ML,
759 :     R021A-AC.ML, R022A-AC.ML, R022B-AC.ML, R022C-FL.ML, R024A-AC.ML, R025A-AC.ML,
760 :     R025B-FL.ML, R026B-FL.ML, R027A-AC.ML, R027B-AC.ML, R027C-FL.ML, R027D-FL.ML,
761 :     R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R028D-FL.ML, R029A-AC.ML, R029B-AC.ML,
762 :     R029C-FL.ML, R029D-FL.ML, R030A-AC.ML, R031A-AC.ML, R031B-FL.ML, R031C-FL.ML,
763 :     R034A-AC.ML, R034B-AC.ML, R034C-AC.ML, R035A-AC.ML, R036A-AC.ML, R038A-AC.ML,
764 :     R039A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML, R044B-FL.ML,
765 :     R045A-AC.ML, R045B-FL.ML, R046A-AC.ML, R046B-FL.ML, R048A-AC.ML, R049A-AC.ML,
766 :     R049B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML, R100A-FL.ML,
767 :    
768 :     Ã ÃRule 43:Ä Ä
769 :     R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R027D-FL.ML, R031A-AC.ML, R031B-FL.ML,
770 :     R036A-AC.ML, R041A-AC.ML, R043A-AC.ML, R043B-FL.ML,
771 :    
772 :     Ã ÃRule 44:Ä Ä
773 :     R021B-FL.ML, R044A-AC.ML, R044B-FL.ML,
774 :    
775 :     Ã ÃRule 45:Ä Ä
776 :     R002A-FL.ML, R003A-FL.ML, R011C-FL.ML, R017A-AC.ML, R017J-FL.ML, R017K-FL.ML,
777 :     R018A-AC.ML, R026A-FL.ML, R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R029A-AC.ML,
778 :     R029D-FL.ML, R030A-AC.ML, R031A-AC.ML, R043B-FL.ML, R045A-AC.ML, R045B-FL.ML,
779 :     R046B-FL.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML,
780 :    
781 :     Ã ÃRule 46:Ä Ä
782 :     R039A-AC.ML, R046A-AC.ML, R046B-FL.ML,
783 :    
784 :     Ã ÃRule 47:Ä Ä
785 :     R002A-FL.ML, R003A-FL.ML, R011D-FL.ML, R011E-FL.ML, R016B-AC.ML, R017A-AC.ML,
786 :     R017J-FL.ML, R017K-FL.ML, R028A-AC.ML, R028B-AC.ML, R029A-AC.ML, R029B-AC.ML,
787 :     R031B-FL.ML, R031C-FL.ML, R049A-AC.ML, R049B-FL.ML, R050A-AC.ML, R050B-FL.ML,
788 :     R052A-AC.ML,
789 :    
790 :     Ã ÃRule 48:Ä Ä
791 :     R002A-FL.ML, R003A-FL.ML, R011A-AC.ML, R011B-FL.ML, R019A-AC.ML, R028A-AC.ML,
792 :     R028B-AC.ML, R029A-AC.ML, R030A-AC.ML, R031A-AC.ML, R032A-AC.ML, R041A-AC.ML,
793 :     R043A-AC.ML, R043B-FL.ML, R048A-AC.ML, R049A-AC.ML, R049B-FL.ML, R050A-AC.ML,
794 :     R050B-FL.ML,
795 :    
796 :     Ã ÃRule 49:Ä Ä
797 :     R002A-FL.ML, R003A-FL.ML, R011A-AC.ML, R011B-FL.ML, R011C-FL.ML, R014A-AC.ML,
798 :     R018A-AC.ML, R019A-AC.ML, R019B-AC.ML, R019C-FL.ML, R019D-AC.ML, R020A-AC.ML,
799 :     R020B-FL.ML, R020C-FL.ML, R020D-AC.ML, R021A-AC.ML, R021B-FL.ML, R025B-FL.ML,
800 :     R026A-FL.ML, R028A-AC.ML, R028B-AC.ML, R028C-AC.ML, R028D-FL.ML, R029A-AC.ML,
801 :     R029B-AC.ML, R029D-FL.ML, R029E-AC.ML, R030A-AC.ML, R031A-AC.ML, R032A-AC.ML,
802 :     R041A-AC.ML, R043A-AC.ML, R043B-FL.ML, R044A-AC.ML, R044B-FL.ML, R045A-AC.ML,
803 :     R045B-FL.ML, R046B-FL.ML, R048A-AC.ML, R049A-AC.ML, R049B-FL.ML, R050A-AC.ML,
804 :     R050B-FL.ML, R052A-AC.ML,
805 :    
806 :     Ã ÃRule 50:Ä Ä
807 :     R002A-FL.ML, R003A-FL.ML, R011A-AC.ML, R011E-FL.ML, R017A-AC.ML, R017K-FL.ML,
808 :     R019C-FL.ML, R028B-AC.ML, R050A-AC.ML, R050B-FL.ML, R052A-AC.ML,
809 :    
810 :     Ã ÃRule 51:Ä Ä
811 :     R011A-AC.ML, R020A-AC.ML, R020B-FL.ML, R020C-FL.ML, R050A-AC.ML, R050B-FL.ML,
812 :    
813 :     Ã ÃRule 52:Ä Ä
814 :     R002A-FL.ML, R003A-FL.ML, R011A-AC.ML, R011B-FL.ML, R019A-AC.ML, R028A-AC.ML,
815 :     R028B-AC.ML, R029A-AC.ML, R030A-AC.ML, R031A-AC.ML, R032A-AC.ML, R041A-AC.ML,
816 :     R043A-AC.ML, R043B-FL.ML, R048A-AC.ML, R049A-AC.ML, R049B-FL.ML,
817 :    
818 :     Ñ#
819 :    
820 :     Â
821 :    
822 :     Â
823 :    
824 :     Â
825 :    
826 :     Â
827 :    
828 :     The results of the testing of these SML implementations can be seen below. The
829 :     list of programs that were elaborated (and evaluated) with results different than
830 :     those expected contains both AC and FL programs. AC programs appear in the
831 :     list if they did not elaborate correctly. FL programs appear in the list if they did
832 :     indeed elaborate even though they should not. The same is true for the list of
833 :     programs that elaborated differently than expected causing cryptic error
834 :     messages. However, the test suite programs listed in this category elaborated
835 :     differently than expected causing a cryptic error message. An example of a
836 :     cryptic error message is:
837 :    
838 :     Ñ#
839 :    
840 :     In expression: val z = (12,(true,3.3)) : int*bool*real;
841 :     Ñ#
842 :    
843 :     The following programs were elaborated differently than expected:
844 :    
845 :     ÒÆ
846 :     D005B©FL.ML
847 :     D005C©FL.ML
848 :    
849 :     M001A©AC.ML
850 :     R002A©FL.ML
851 :     R003A©FL.ML
852 :     R011C©FL.ML
853 :     R011D©FL.ML
854 :     R011E©FL.ML
855 :     R017J©FL.ML
856 :     R017K©FL.ML
857 :     R021b©FL.ML
858 :     R031C©FL.ML
859 :     R038A©AC.ML
860 :     R100A©FL.ML
861 :    
862 :     S002A©FL.ML
863 :     S002B©FL.ML
864 :     S002C©FL.ML
865 :     S002F©FL.ML
866 :     Ñ#
867 :    
868 :     Note that Micro ML of Umea does not support records. All programs listed below
869 :     as failing because of the use of records are marked with an asterisk (*). When
870 :     compiling the test programs, constructors were shown in another order than
871 :     they appeared in the files. An example of a file, where the order was changed is
872 :     R029A©AC.ML.
873 :    
874 :     The following programs were elaborated differently than expected:
875 :    
876 :     ÒÆ
877 :     D002A©AC.ML
878 :     D004A©AC.ML
879 :     D005A©AC.ML
880 :     D005B©FL.ML
881 :     D005C©FL.ML
882 :    
883 :     M001A©AC.ML * M001B©FL.ML *
884 :     M003A©FL.ML
885 :    
886 :     R011C©FL.ML
887 :     R011D©FL.ML
888 :     R011E©FL.ML
889 :     R017D©AC.ML
890 :     R017G©AC.ML R017H©FL.ML
891 :     R017J©FL.ML
892 :     R017K©FL.ML
893 :     R019C©FL.ML
894 :     R020B©FL.ML
895 :     R024A©AC.ML
896 :     R032A©AC.ML
897 :     R034B©AC.ML R038A©AC.ML *
898 :    
899 :     S002F©FL.ML
900 :     S002G©FL.ML
901 :     Ñ#
902 :     cryptic error messages:
903 :    
904 :     ÒÆ
905 :     D006D©FL.ML
906 :     D006E©FL.ML
907 :    
908 :     R002A©FL.ML
909 :     R003A©FL.ML
910 :     R005A©AC.ML *
911 :     R005B©FL.ML * R005C©FL.ML *
912 :     R008A©AC.ML *
913 :     R010B©FL.ML *
914 :     R031B©FL.ML
915 :     R031C©FL.ML
916 :     R041A©AC.ML *
917 :     R043A©AC.ML *
918 :     R043B©FL.ML * R044A©AC.ML *
919 :     R044B©FL.ML *
920 :     R045A©AC.ML *
921 :     R045B©FL.ML *
922 :     R046A©AC.ML *
923 :     R046B©FL.ML *
924 :     R048A©AC.ML *
925 :     R049A©AC.ML * R049B©FL.ML *
926 :     R052A©AC.ML *
927 :     R100A©FL.ML
928 :    
929 :     S001B©FL.ML *
930 :     S001C©FL.ML *
931 :     S001D©FL.ML *
932 :     Ñ#
933 :    
934 :     The following programs failed:
935 :    
936 :     Ñ#
937 :    
938 :     Ñ#
939 :    
940 :     Ñ#
941 :     exception A;
942 :     exception B = A;
943 :     in
944 :     val test5 = 1 = (case B of A => 1 | B => 2 | _ => 3);
945 :     end;
946 :     Ñ#
947 :     exception B with the exception A. This does not comply with rule 139 [page 54].
948 :     However, this rule is part of the dynamic semantics for the Core and it is not
949 :     tested thoroughly in this test suite.
950 :    
951 :    
952 :     Ã ÃStandard ML of New Jersey, Version 0.93, port no. 2 of May 1994, OS/2Ä Ä
953 :    
954 :     This compiler behaved exactly like the UNIX version of SML of New Jersey.
955 :    

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0