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

SCM Repository

[smlnj] View of /sml/trunk/tests/coresml/doc/testsuit.wp6
ViewVC logotype

View of /sml/trunk/tests/coresml/doc/testsuit.wp6

Parent Directory Parent Directory | Revision Log Revision Log


Revision 548 - (download) (annotate)
Tue Feb 29 16:38:11 2000 UTC (21 years, 8 months ago) by dbm
File size: 82413 byte(s)
Initial revision
ÿWPC0:
íAŠD5ŠÔÚAõ„ç{釁ɨõå,‘'ÈE ôBv¶IBtS.ºTHk_ã+%î4jaàrµ¥'Ÿ¿f–£Sé+mÌ#`ÃBYóŠø4¿1‚—í«gOgtövþ¥§9¸^Ï:
agtTGÖÍg—Qö[Kãqcw±äð,›U¶auɉ*áBÚåèLv‘ËåI?]›?fn &²^‰“ôz‘ºnÏÖQ´	HÀW¾§‰5òK6àoéG{z:B ùæýºEdüw=zÿš‘rÞjŒTä=¡{ ïTT}ÄÛº$ŠbºXP¿
 F¡ÈJ¸@8Héû cµêëéŠéÓW:§üè䈌,·5„ªÆ,7v–ÎuI[ZY;‚ÿÁaq]HeynàND
{
¡å¤t1Üjø<Õ~‰:ÙcÉ͐â6›u©y”²óí<ŠØ)O#û¶åDñt“¶ôš"ÈG£{j¹DñŒlݸJ«Fóï'Ÿéùå÷‘	±u¾Úg!œö:ç”çё”ašt@½ÁŸ?^vŒöì^>NtƒŽ:–nP«…¬ŸG³/©PpÞÜ/bµª$¢æÊLU8W„Ôù,õž03Ë·e0~†0x0k|0kç0šR	0~ì	0Ñj
0ä;0¦0÷Å0
¼
0Æ01ä0C0VX0Ï®0¤}0¤!0ÃÅ0¼ˆ0»D0Ùÿ0£Ø0£{U.	%L0>R0z0ä
	î0=ÿ0F<0P‚	1“Ò0Ùe	1>0·C¼ú0	¶#E¿%	CÁ%4Û%fï%	B*ñ%	Bu&	1·8&ï&n­ÿ&0î¬'UPš)aê)U>þ)U><*U>z*U>¸*U>ö*U>4+U>r+U>°+U>î+U>,,U>j,U>¨,U>æ,U>$-U>b-U> -U>Þ-U>.U>Z.U>˜.U>Ö.U>/U>R/U>/U>Î/U>0U>J0U>ˆ0U>Æ0U>1U>B1U>€1U>¾1U>ü1U>:2U>x2U>¶2U>ô2^230240DÂ6UP7yV7UPÏ8U>9U>]9U>›9U>Ù9	h:V&ÿÿ8Document[8]Document Styleà0..àà8`	..`	àÌVÿÿ8Document[4]Document Styleà..àòòòò.óó€€óóVÿÿ8Document[6]Document Styleà8..àÌVÿÿ8Document[5]Document Styleà0..àÌV/ÿÿ8Document[2]Document StyleÌòòÔ2ÔA.Ô3

ԀòòÔ


ÔÔ

ÔÌóóóóV&ÿÿ8Document[7]Document Styleà0..àà0`	..`	àÌzUÿÿ:Right Par[1]Right-Aligned Paragraph NumbersàÐ.. àÔ2ÔI.Ô3

Ԁˆà°..°àà0..àÌzhÿÿ:Right Par[2]Right-Aligned Paragraph Numbersà..ààÐ`	..øàÔ2ÔA.Ô3

Ԁˆà..àà0`	..`	àÌV?ÿÿ8Document[3]Document StyleÌà..àòòÔ2Ô1.Ô3

ԀÔ


ÔÔ

Ôóóz{ÿÿ:Right Par[3]Right-Aligned Paragraph Numbersà..àà`	..`	ààи..P
àÔ2Ô1.Ô3

Ԁˆà`	..`	àà0¸..¸àÌzŽÿÿ:Right Par[4]Right-Aligned Paragraph Numbersà..àà`	..`	àà¸..¸ààÐ..¨àÔ2Ôa.Ô3

Ԁˆà¸..¸àà0..àÌz¢ÿÿ:Right Par[5]Right-Aligned Paragraph Numbersà..àà`	..`	àà¸..¸àà..ààÐh..ˆàÔ2Ô(1)Ô3

Ԁˆà..àà0h..hàÌzµÿÿ:Right Par[6]Right-Aligned Paragraph Numbersà..àà`	..`	àà¸..¸àà..ààh..hààÐÀ..ààÔ2Ô(a)Ô3

Ԁˆàh..hàà0À..ÀàÌzÇÿÿ:Right Par[7]Right-Aligned Paragraph Numbersà..àà`	..`	àà¸..¸àà..ààh..hààÀ..ÀààÐ..°àÔ2Ôi)Ô3

ԀˆàÀ..Ààà0..àÌzÚÿÿ:Right Par[8]Right-Aligned Paragraph Numbersà..àà`	..`	àà¸..¸àà..ààh..hààÀ..Ààà..ààÐp..àÔ2Ôa)Ô3

Ԁˆà..àà0p..pàÌVXÿÿ8Document[1]Document StyleÌÔÔà@ì..^àòòòòÔ


ÔÔ2ÔI.Ô3

ԀÔÔÔÔÔ

ԈÌóóóól2ÿÿ:Technical[5]Technical Document Styleà..àòòÔ2Ô(1)Ô3

Ԁ.€€óól2ÿÿ:Technical[6]Technical Document Styleà..àòòÔ2Ô(a)Ô3

Ԁ.€€óól/%ÿÿ:Technical[2]Technical Document StyleÌòòÔ2ÔA.Ô3

ԀòòÔ


ÔÔ

ÔóóÌà..àóól,!ÿÿ:Technical[3]Technical Document StyleÌòòÔ2Ô1.Ô3

ԀÔ


ÔÔ

Ôà..àóól(!ÿÿ:Technical[4]Technical Document StyleòòÔ2Ôa.Ô3

ԀÔ


ÔÔ

Ôà..àóól:0ÿÿ:Technical[1]Technical Document StyleÌòòòòÔ


ÔÔ2ÔI.Ô3

ԀÔÔÔÔÔ

ÔÌóóà..àóól1ÿÿ:Technical[7]Technical Document Styleà..àòòÔ2Ôi)Ô3

Ԁ.€€óól1ÿÿ:Technical[8]Technical Document Styleà..àòòÔ2Ôa)Ô3

Ԁ.€€óó<þ6X9`(CourierX8ÿÿ6ML-programòòóóR&ÿÿ8BibliogrphyBibliographyà0..àà°..°àÌÌfpÿÿ2Doc InitInitialize Document StyleÓ€ÓÇÓS€	"	  I. 1. A. a.(1)(a) i) a)SÓØØ !(ÿÿ$˜˜Ìà0

àà

à(ÿÿ$™™à0

àà0

àà

à((ÿÿ$ššà0

àà0

àà0

àà

à	 ÿÿA_ekqw‡DocumentDocument StyleI.1.A.a.(1)(a)i)a)joÿÿ4Tech InitInitialize Technical StyleÓS€	$  1 .1 .1 .1 .1 .1 .1 .1 þSÓØØ ÿÿCuy±ÉåTechnicalTechnical Document Style11.11.1.11.1.1.11.1.1.1.11.1.1.1.1.11.1.1.1.1.1.11.1.1.1.1.1.1.1x?çt2PleadingHeader for numbered pleading paperÓÈÓÑ °ÑÑè°ÑÖ€&ÿÿÖ
²Ý
ƒ'ÿÿ(ÝÝÝÔ€,ïXXXÔÓ'ÿÓÓ
'ÿÓÓÈÓÓ'ÿÓÒX°ÒÓ
'ÿÓÒ°°ÒÓÿÿÀ°œXÓß6€-('ü°ø*–d6ßß6€-('°ø*–d6ßÌÌàHHÀà1ˆÌÌàHHÀà2ˆÌÌàHHÀà3ˆÌÌàHHÀà4ˆÌÌàHHÀà5ˆÌÌàHHÀà6ˆÌÌàHHÀà7ˆÌÌàHHÀà8ˆÌÌàHHÀà9ˆÌÌàÐÐÀà10ˆÌÌàÐÐÀà11ˆÌÌàÐÐÀà12ˆÌÌàÐÐÀà13ˆÌÌàÐÐÀà14ˆÌÌàÐÐÀà15ˆÌÌàÐÐÀà16ˆÌÌàÐÐÀà17ˆÌÌàÐÐÀà18ˆÌÌàÐÐÀà19ˆÌÌàÐÐÀà20ˆÌÌàÐÐÀà21ˆÌÌàÐÐÀà22ˆÌÌàÐÐÀà23ˆÌÌàÐÐÀà24ˆÌÌàÐÐÀà25ˆÌÌàÐÐÀà26ˆÌÌàÐÐÀà27ˆÌÌàÐÐÀà28Ô  à.À+Ô(á2€$¨¨Ý
ƒ1Ҁ!ÝÔDKUS.,ÔÒ‰°ÒÒ‰°Òщ°Ñщ°ÑÑÑÑÑÑTRWTÐ6Â&3Ø'Ð6Â&A4ÿ3Ø'TÑÓÓÝÝ
ÿÿÿdš,,le_&ÿÿ0ddd

 ÿÿCƒ‰•›£«±Right ParRight-Aligned Paragraph NumbersI.A.1.a.(1)(a)i)a)3|xR
«<þ6X9`(CourierXÛxþ6X@ÉüKX@(ÆҀ$¡¡ÔDKUS.,ÔÒ‰°ÒÒ‰°Òщ°Ñщ°ÑÑÑÑÑÑTRWTÐ6Â&3Ø'Ð6Â&A4ÿ3Ø'TÑÓÓ.æF)Z8NewCenturySchlbk RegularTable_A;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular<ÆðI9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular
TÝ
ƒ[²$ÝÔDKUS.,ÔÒ‰°ÒÒ‰°ÒÓÓàáàòòÚÚ1Ú

ÚóóÝÝÔ€]X‘XXXÔÔ€]ÛeX]X‘Ԁ€The€Definition€of€Standard€ML€will€henceforth€be€referred€to€as€ð ðthe€Definitionðð,€distinguished€by€an€initialÐ	‰ Ðcapital€letter.(â(3²$¤¤Ý
ƒ1Ҁ!ÝÔDKUS.,ÔÒ‰°ÒÒ‰°Òщ‰Ñщ±ÑÑÑÑÑÑTRWTÐ6Â&WTÐ6Â&Ð6Â&A4Ð6Â&A4TÑÓÓÝÝàáàòòÚÚ1Ú

Úóó(%Ã$òòÚÚ1Ú

Úóó.æF)Z8NewCenturySchlbk Regular
oÝ
ƒ[²$ÝÔDKUS.,ÔÒ‰°ÒÒ‰°ÒÓÓàáàòòÚÚ2Ú

ÚóóÝÝÔ€_X‘XXXÔÔ€_ÛeX_X‘Ԁ€When€we€refer€to€the€Definition€we€shall€do€so€using€square€brackets,€e.g.€[page€9]€for€the€Definition,€pageÐ	‰ Ð9€or€[Appendix€B]€for€the€Definition,€Appendix€B..æF)Z8NewCenturySchlbk Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular;@÷Ð9Z&Courier Regular++Ý
ƒ1Ҁ!ÝÔDKUS.,ÔÒ‰°ÒÒ‰°Òщ°Ñщ°ÑÑÑÑÑÑTRWTÐ6Â&3Ø'Ð6Â&A4ÿ3Ø'TÑÓÓÝÝѱ‰ÑÒb‰ÒÒ̉ÒÔUSDK,.ÔÔ€2Xá?XXXÔÔ€2%·è%X2Xá?ÔÓÓÓšÓÌÌÌÌÔ‡2»j»%2%·èÔòòà@4	4	¬àTest€suite€for€the€Core€Language€of€Standard€MLˆÐ	=	´ ÐóóÔ#†2%·è%»2»j}#ÔÌÌÌÌà@¬¬!¬àMichael€Vium,€C€908944ˆÌÌà@+¬àandˆÌÌà@¾¾!¬àSten€Schmidt,€C€908841ˆÌÌÌà@<<¬àDepartment€of€Computer€ScienceˆÌà@<<¬àTechnical€University€of€DenmarkˆÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌòòà@²²$¬àSeptember€1,€1994ˆÐ	£-(+ ÐóóÌÐ		}/ô)- ÐòòÔ‡2»Pt»%2%'ÎÔContentsóóÔ#†2%'Î%»2»Ptp#ÔÐ	‰ Ðß8€-()
°°xd8ßÐ	Á8 ÐÌÌÌÌàº	àAcknowledgementàÂààààrààÊàà"àà€’!’!Gö!à1ˆÐ	…
ü ÐÌ1.0€àº	àIntroductionàjààÂààààrààÊàà"ààzàà€’!’!Gö!à2ˆÐ	_Ö ÐÌ2.0€àº	àWhat€is€testedàÂààààrààÊàà"ààzààÒàà€’!’!Gö!à3ˆÐ	9°
 ÐÌ3.0€àº	àApproachàjààÂààààrààÊàà"ààzààÒàà€’!’!Gö!à4ˆÐ	Š
 ÐÌ3.1€àº	àTesting€systematicallyàààrààÊàà"ààzààÒàà€’!’!Gö!à4ˆÐ	íd ÐÌ3.2€àº	àNaming€files€systematicallyàààrààÊàà"ààzàà€’!’!Gö!à4ˆÐ	Ç> ÐÌ3.3€àº	àTest€suite€programsàÂààààrààÊàà"ààzàà€’!’!Gö!à5ˆÐ	¡ ÐÌ3.4€àº	àTesting€rule€17àÂààààrààÊàà"ààzààÒàà€’!’!Gö!à6ˆÐ	{ò ÐÌ3.4.1€àº	àTest€of€the€valbindingàààrààÊàà"ààzààÒàà€’!’!Gö!à7ˆÐ	UÌ ÐÌ3.4.2€àº	àTest€of€Closure€of€the€variable€environment€VEà"ààzàà€’!’!Gö!à7ˆÐ	/¦ ÐÌ4.0€àº	àUsing€the€test€suiteàÂààààrààÊàà"ààzàà€.!.!Fö!à12ˆÐ		€ ÐÌ5.0€àº	àConclusionàjààÂààààrààÊàà"ààzàà€.!.!Fö!à13ˆÐ	ãZ ÐÌàº	àBibliographyàjààÂààààrààÊàà"ààzààÒàà€.!.!Fö!à15ˆÐ	½ 4 ÐÌA€€àº	àAppendix:€Which€rules€are€used€in€which€filesà"ààzààÒàà€.!.!Fö!à16ˆÐ	—"  ÐÌB€€àº	àAppendix:€Test€results€from€four€SML€implementationsàzàà€.!.!Fö!à22ˆÐ	q$è" ÐÌÐ		K& $ ÐØØòòÔ‡2»Pt»%2%'ÎÔÑ7€2'Î2%%dØXXdÈ7ÑAcknowledgementóóÔ#†2%'Î%»2»Ptô
#ÔÐ	‰ Ðß8€-()
°°xd8ßÐ	Á8 ÐÌÌÌÌWe€would€like€to€thank€Peter€Sestoft€at€the€Department€of€Computer€Science,ÏTechnical€University€of€Denmark€for€giving€us€the€opportunity€to€work€on€thisÏproject.€Also,€we€would€like€to€thank€him€for€his€assistance€in€the€development€ofÏthis€test€suite.ÌÐ		9°
 ÐòòÑ7€2'Î2%%dØ2%%dØ7ÑÔ‡2»Pt»%2%'ÎÔ1.0€IntroductionóóÔ#†2%'Î%»2»Pt2#ÔÐ	‰ Ðß8€-()
°°xd8ßÐ	Á8 ÐÌÌÌÌThis€document€describes€the€development€of€a€test€suite€that€can€be€used€to€testÏStandard€ML€implementations.€A€precise€and€formal€definition€of€Standard€MLÏis€given€in€òòThe€Definition€of€Standard€MLóó׃Z×Ý
ƒ\%ÃÝòòÚÚ1Ú

ÚóóÝÝ×

׀written€by€Milner,€Tofte,€and€HarperÐ	_Ö Ðavailable€from€MIT€Press.€The€idea€with€this€project€was€systematically€toÏdevelop€a€test€suite€based€on€the€definitions€present€in€the€Definition.€TheÏdefinition€of€the€Standard€ML€programming€language€is€different€from€theÏdefinitions€of€most€other€programming€languages€ð"ð€it€mathematically€describesÏnot€only€the€grammar€but€also€the€meaning€of€the€language.€This€is€why€itÏseemed€reasonable€to€try€to€construct€a€test€suite€based€on€the€definitionsÏavailable,€rule€by€rule.€Because€of€the€time€limitations€imposed€on€the€project,Ïthis€test€suite€is€limited€to€testing€the€static€semantics€for€the€Core€Language€ofÏStandard€ML.€The€dynamic€semantics€for€the€Core€Language€and€the€ModuleÏLanguage€is€not€covered€by€this€work.ÌÌThe€test€suite€is€formed€by€a€collection€of€small€Standard€ML€programs.€EachÏprogram€is€constructed€to€test€a€rule€or€a€part€of€a€rule,€e.g.€a€side€condition.€AlsoÏeach€program€is€accompanied€by€a€description€of€how€the€compiler€is€expected€toÏreact€to€it.€For€example,€the€program€might€fail€because€of€a€type€error.€On€theÏother€hand,€the€program€might€succeed€in€which€case€its€expected€behaviourÏmust€be€documented.ÌÌAn€exhaustive€test€is€impossible,€so€care€is€needed€in€selecting€cases€that€areÏmost€likely€to€reveal€errors.€Some€program€constructions€are€more€complicatedÏthan€others,€and€in€general€more€complicated€constructions€are€somewhat€moreÏlikely€to€fool€a€compiler€than€simple€ones.€Nevertheless,€the€use€of€this€test€suiteÏon€four€different€Standard€ML€implementations€showed€us,€that€even€simpleÏillegal€constructs€were€accepted€by€some€implementations€(for€example,€twoÏimplementations€accepted€free€imperative€type€variables€at€top€level).ÌÌSection€2€of€this€document€describes€exactly€which€parts€of€the€Definition€areÏtested€by€this€test€suite€and€which€are€not.€Section€3€describes€the€approach€usedÏin€the€development.€It€contains€information€regarding€testing€systematically,Ïnaming€files€systematically€and€the€test€suite€programs€in€general.€Also€theÏtesting€of€rule€17€is€outlined€as€an€example€of€how€rules€are€testedÏsystematically.€Section€4€describes€how€to€use€the€test€suite.€Finally,€section€5€isÏdedicated€to€the€conclusion.€Note,€that€it€is€not€the€intention€with€this€documentÏto€describe€the€development€of€each€program€in€this€test€suite€in€detail.€NeitherÏdoes€it€try€to€explain€definitions€nor€rules€in€the€Definition.€Anyone€interested€inÏthe€definitions€of€Standard€ML€is€advised€to€take€a€look€at€the€Definition€or€[2].Ð		³-*(, ÐòòÔ‡2»Pt»%2%'ÎÔ2.0€What€is€testedóóÔ#†2%'Î%»2»Pt#ÔÐ	‰ Ðß8€-()
°°xd8ßÐ	Á8 ÐÌÌÌÌAs€stated€in€the€introduction€this€test€suite€is€limited€to€testing€the€staticÏsemantics€for€the€Core€Language€of€Standard€ML.€The€dynamic€semantics€forÏthe€Core€Language€and€the€Module€Language€are€not€covered€by€this€work.ÌÌÌThis€test€suite€testsÌÌððà0º	àrule€100€and€the€static€semantics€for€the€Core€Language€(the€rules€from€1Ð	w
 Ðto€52,€rule€23€excluded)€[chapter€4].Ð
º	ö!º	ö! ÐÌððà0º	àthe€syntactic€restrictions€[page€9]׃^×Ý
ƒ\%ÃÝòòÚÚ2Ú

ÚóóÝÝ×

×.ÐÇ>º	ö!º	ö! ÐÌððà0º	àthe€derived€forms€[page€67„68].Сº	ö!º	ö! ÐÌððà0º	àthe€first€point€in€the€further€restrictions€[page€30].Ð{òº	ö!º	ö! ÐÌÌThis€test€suite€does€not€testÌÌððà0º	àthe€Module€Language.Гº	ö!º	ö! ÐÌððà0º	àthe€dynamic€semantics€for€the€Core€Language€[chapter€6]Ðömº	ö!º	ö! ÐÌððà0º	àthe€initial€static€basis€[Appendix€C].ÐÐGº	ö!º	ö! ÐÌððà0º	àthe€initial€dynamic€basis€[Appendix€D]€thoroughly.Ъ!!º	ö!º	ö! ÐÌððà0º	àthe€grammar€of€the€Core€Language€[page€8„9]€and€[Appendix€B]Ð	„#û! Ðsystematically€or€thoroughly.Ð
º	ö!º	ö! ÐÌððà0º	àwhether€the€compiler€warns€regarding€match€exhaustiveness€andÐ	K& $ Ðredundant€patterns€as€demanded€in€the€second€point€in€the€furtherÏrestrictions€[page€30].Ð
º	ö!º	ö! ÐÌððà0º	àthe€scoping€of€explicit€type€variables€in€valbindings€completely€(the€testÐ	ÿ)v$( Ðprograms€R017A„AC.ML€and€R017K„FL.ML€may€however€indicateÏwhether€the€compiler€treats€the€scoping€correctly).Ð
º	ö!º	ö! ÐÌÐ		³-*(, ÐòòÔ‡2»Pt»%2%'ÎÔ3.0€ApproachóóÔ#†2%'Î%»2»PtÕ##ÔÐ	‰ Ðß8€-()
°°xd8ßÐ	Á8 ÐÌÌÌÌòò3.1€Testing€systematicallyóóÐ	…
ü ÐÌThe€rules€in€the€Definition€are€tested€one€by€one€and€the€test€programs€are€keptÏas€simple€as€possible.€This€makes€it€easier€to€ensure€that€the€rules€are€tested€inÏall€possible€instances.€It€also€minimizes€the€chance€of€problems€in€oneÏdeclaration€affecting€on€the€testing€of€another.ÌÌððà0º	àfor€each€rule€all€the€side€conditions€are€tested€separately€in€different€testÐ	|
 Ðprograms.Ð
º	ö!º	ö! ÐÌððà0º	àfor€each€side€condition€there€is€a€program€testing€that€the€compiler€willÐ	ÌC Ðfail€to€elaborate€when€the€side€condition€does€not€hold.Ð
º	ö!º	ö! ÐÌððà0º	àall€instances€where€a€side€condition€does€not€hold€are€tested€separately.Г
º	ö!º	ö! ÐÌððà0º	àthe€test€programs€in€the€present€test€suite€are€generally€kept€very€simpleÐ	mä Ðexcept€for€the€test€programs€for€the€more€essential€rules€in€ML.Ð
º	ö!º	ö! ÐÌFor€each€rule€there€is€also€one€or€more€programs€that€test€the€rule€in€general.ÏThese€are€the€programs€that€requires€intuition€to€construct.€The€betterÏknowledge€of€SML€implementations€and€problems€herein,€the€better€testÏprograms€one€can€conceive.€They€should€be€designed€so€they€are€most€likely€toÏfool€a€compiler,€although€they€must€remain€correct€according€to€the€Definition.ÌÌNaturally,€the€biggest€problem€testing€compilers€systematically€is€that€not€allÏside€conditions€can€be€tested€that€easily.€For€instance,€some€of€the€sideÏconditions€make€demands€on€how€the€compiler€should€react€internally.€This€canÏnot€be€tested€directly€in€a€program.€However,€if€the€compiler€does€not€complyÏwith€these€conditions€it€could€have€unpredictable€consequences€in€theÏelaboration€of€the€following€declarations.€Normally,€if€the€compiler€treatsÏcomplicated€examples€correctly,€chances€are€that€it€will€treat€all€programsÏcorrectly€with€respect€to€this€specific€side€condition.€This€is€the€philosophyÏbehind€this€test€suite€when€testing€internal€behavior€of€the€compiler.ÌÌÌòò3.2€Naming€files€systematicallyóóÐ	ñ*h%) ÐÌFor€convenience€the€test€programs€are€named€the€following€way:ÌÌ{1€char€category}€+€{3€char€rule/restriction/derived€form€number}€+€{1€char€serialÏnumber€A„Z}€+€"„"€+€{2€char€compiler€reaction}€+€".ML"ÌÐ	„0û*/ ÐThe€test€programs€are€divided€into€four€categories:ÌÌRà0º	àòòRulesóó.€These€are€the€main€programs€in€the€test€suite.€They€test€the€rulesÐ	cÚ Ðas€given€in€the€Definition.€The€number€in€the€filename€equals€the€ruleÏnumber.Ð
º	ö!º	ö! ÐÌSà0º	àòòSyntactic€restrictionsóó.€These€programs€test€that€the€compiler€respectsÐ	Ž Ðthese€extra€restrictions.€The€number€in€the€filename€equals€the€pointÏnumber€[page€9].Ð
º	ö!º	ö! ÐÌDà0º	àòòDerived€Formsóó.€These€programs€test€that€the€compiler€implements€all€theÐ	ËB	
 Ðderived€forms€as€mentioned€in€[Appendix€A].€Ð
º	ö!º	ö! ÐÌMà0º	àòòMiscellaneousóó.€These€files€test€various€details€in€SML.€Se€notes€in€files€forÐ	’	
 Ðfurther€information.Ð
º	ö!º	ö! ÐÌThe€reactions€indicated€in€the€filenames€can€be€either€AC€or€FL€meaning€thatÏthe€compiler€should€accept€or€fail€respectively.ÌÌExamples:ÌÌR017B„FL.ML:€this€program€is€the€second€program€that€tests€rule€17€and€theÏcompiler€should€refuse€to€elaborate€it.ÌÌS002A„AC.ML:€this€program€is€the€first€program€that€tests€the€second€point€inÏthe€syntactic€restrictions€and€the€compiler€should€succeed€in€elaborating€it.ÌÌÌòò3.3€Test€suite€programsóóÐ	uì ÐÌSome€considerations€have€been€made€in€order€to€make€it€as€easy€as€possible€toÏtest€compilers€with€this€test€suite.€All€programs€in€this€test€suite€are€made€theÏsame€way:ÌÌððà0º	àThey€are€all€as€small€as€possible.Ð%"º	ö!º	ö! ÐÌððà0º	àThe€programs€that€are€meant€to€fail€will€fail€in€the€last€declaration€of€theÐ	â&Y!$ Ðprogram.€This€ensures€that€a€deliberate€error€does€not€influence€theÏelaboration€of€other€tests.Ð
º	ö!º	ö! ÐÌððà0º	àIn€all€value€declarations€resulting€in€boolean€variables,€the€variables€areÐ	–*
%( Ðnamed€test,€test1,€test2€and€so€forth.€The€programs€are€all€constructed€soÏthe€boolean€variables€should€elaborate€to€true.€This€way,€it€will€beÏobvious,€that€if€a€variable€evaluates€to€false€there€is€an€error€in€theÏcompiler.Ð
º	ö!º	ö! ÐÌÐ		$0›*. Ðððà0º	àThe€programs€in€the€rules€category€list€the€rules€in€Ô‡2ÂHN
Â%2%'ÎÔÔ‡bÂfÂ
Â2ÂHNÔ(*€*)Ô#†2ÂHN
ÂÂbÂf‡6#ÔÔ#†2%'Î%
Â2ÂHNh6#Ԁthat€are€used€inÐ	‰ Ðeach€line.€This€makes€the€programs€somewhat€harder€to€read.€However,Ïit€enables€the€reader€to€ensure€for€himself€that€the€program€really€testsÏwhat€it€is€meant€to€test.€It€also€makes€it€possible€to€see€which€programsÏuses€which€rules.Ð
º	ö!º	ö! ÐÌððà0º	àAll€the€programs€in€the€test€suite€contain€a€comment€at€the€end€showingÐ	Ž Ðthe€expected€output€from€the€SML€compiler.€Note€however,€that€differentÏSML€implementations€print€output€in€different€ways.€This€is€why€theÏexpected€output€is€only€advisory.€It€cannot€be€exact€for€all€SMLÏimplementations.Ð
º	ö!º	ö! ÐÌThe€test€programs€for€the€derived€forms€are€constructed€in€a€somewhat€differentÏway.€More€than€one€derived€form€are€tested€in€the€same€program.€This€meansÏthat€most€of€these€programs€are€quite€long€compared€to€the€programs€in€theÏother€three€categories.€In€these€programs€all€declarations€resulting€in€non„¼ñR
ñ¼ñR
ñboolean€variables€are€hidden€in€local€declarations.€This€is€done€to€cut€down€onÏthe€material€needed€to€be€examined€in€order€to€see€if€the€compiler€does€it€right.ÏAs€usual€all€the€boolean€variables€should€evaluate€to€true.€Furthermore,€in€theÏlast€declaration€of€the€programs€in€this€category€a€variable€named€alltrue€shouldÏevaluate€to€true€if€all€the€other€boolean€variables€are€true.€This€way,€only€theÏvariable€alltrue€has€to€be€inspected€to€see€if€the€compiler€elaborates€andÏevaluates€the€derived€forms€correctly.ÌÌÌòò3.4€Testing€rule€17óóÐ	®% ÐÌIn€this€section€we€will€describe€the€test€programs€used€to€test€rule€17.€ThisÏdescription€is€also€an€example€of€how€one€can€systematically€construct€programsÏto€test€a€given€rule.€These€programs€have€not€been€chosen€at€random€of€course.ÏRule€17€is€interesting€because€it€concerns€the€value€binding€which€isÏfundamental€to€SML.€The€fact€that€it€is€the€most€difficult€rule€to€test€also€makesÏit€the€obvious€choice€of€rule€to€describe€thoroughly.€It€is€beyond€the€scope€of€thisÏdocument€to€describe€the€development€of€all€the€programs€in€this€test€suite€inÏsuch€detail.ÌÌRule€17€concerns€value€declarations€such€as:ÌÌòòval€pat€=€expóóÐ	¼(3#& ÐÌThe€rule€has€two€side€conditions:ÌÌ1.àº	àVE'=ClosòòC,valbindóóVEÐ	p,ç&* Ð2.àº	àU€ðð€tyvars€VE'€=€Ð	]-Ô'+ ÐÌEach€one€of€these€side€conditions€is€tested€separately.€The€first€test€programÏR017A„AC.ML€tests€valbindings€in€general.€The€next€programs€from€Ð	$0›*. ÐR017B„FL.ML€to€R17I„FL.ML€test€the€closure€of€the€variable€environment€VE.ÏThe€program€R017J„FL.ML€tests€the€second€side€condition.€Finally,€the€programÏR017K„FL.ML€tests€the€scoping€of€explicit€type€variables.€Note€that€in€theÏvalbindings€in€the€programs€R017A„AC.ML€and€R017K„FL.ML€the€explicit€typeÏvariables€scoped€here€have€been€listed€in€brackets€{}.ÌÌÌòò3.4.1€Test€of€the€valbindingóóÐ	{ ÐÌR0017A„AC.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡4ÂfÂ
Â2ÂHNÔvalòò{}óó€x€=€(let€valòò{'a}óó€Id1€:€'a€->€'a€=€fn€z€=>€z€in€Id1€Id1€end,Ð	½4
 Ѐ€€€€€€€€€Ôã
ã
ã
Ôlet€valòò{'a}óó€Id2€:€'a€->€'a€=€fn€z€=>€z€in€Id2€Id2€end);Ð	_Ö
 ÐÔ#†2ÂHN
ÂÂ4Âf‰B#ÔÔ#†2%'Î%
Â2ÂHNjB#ÔÌThe€first€test€program€is€taken€directly€from€[page€20].€It€tests€the€scoping€ofÏexplicit€type€variables.€Since€'a€is€scoped€locally€at€the€second€value€declaration,ÏÔ‡2ÂHN
Â%2%'ÎÔÔ‡5ÂfÂ
Â2ÂHNÔlet€val€Id1:€'a€„>€'a€=€fn€z€=>€zÔ#†2ÂHN
ÂÂ5Âf‡D#ÔÔ#†2%'Î%
Â2ÂHNhD#Ô,€it€should€result€in€the€variable€environmentÐ	È? ÐVE'€=€{Id€ð“ð€ðzð'a.'a€ðð€'a}.€For€the€same€reason€the€third€value€declaration,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡6ÂfÂ
Â2ÂHNÔlet€valÐ	µ, ÐId2€:€'a€->€'a€=€fn€z€=>€zÔ#†2ÂHN
ÂÂ6ÂfÃE#ÔÔ#†2%'Î%
Â2ÂHN¤E#Ô,€should€result€in€the€variable€environment€VE'€=€{IdÐ	¢ Ðð“ð€ðzð'b.'b€ðð€'b}.€Hence€the€applications€Ô‡2ÂHN
Â%2%'ÎÔÔ‡VÂfÂ
Â2ÂHNÔId1€Id1Ô#†2ÂHN
ÂÂVÂf÷F#ÔÔ#†2%'Î%
Â2ÂHNØF#Ԁand€Ô‡2ÂHN
Â%2%'ÎÔÔ‡UÂfÂ
Â2ÂHNÔId2€Id2Ô#†2ÂHN
ÂÂUÂf‡G#ÔÔ#†2%'Î%
Â2ÂHNhG#Ԁshould€elaborate.Ð	 ÐÌÌòò3.4.2€Test€of€closure€of€the€variable€environment€VEóóÐ	VÍ ÐÌThe€next€programs€test€the€different€alternatives€the€SML€compiler€has€toÏcontemplate€when€closing€the€variable€environment€in€rule€17.€As€stated€[pageÏ21],€the€compiler€should€determine€whether€the€expression€òòexpóó€is€expansive€orÐ	† Ðnon„expansive€and€do€the€closure€operation€accordingly.€The€type€variables€canÏbe€either€applicative€or€imperative€and€either€free€or€not€free€in€the€context€C.ÏThis€results€in€the€following€eight€possibilities€and€test€programs.ÌÌÌÔ*sƒ+3ddd Xdd Xdd Xbö!bö!sÔÔ,û”” ÔÔ,Ztd ÔÔ,Ìtd ÔÔ,Ztd ÔÔ,Ôt” ÔÔ+

ÔÐ-€--
"  €0€‚¨‚„„-ÐÔ‡2ÂHN
Â%2%'ÎÔÔ‡7ÂfÂ
Â2ÂHNÔtestÐ	E#¼! ÐprogramÐ
7€--(ç#^""-- „„7ÐexpÐ
7€--(E#¼#"-- „„7ÐtypeÏvariableÐ
7€--(ç#^%"-- „„7Ðtype€variableÏin€CÐ
;€---(ç#^'"-- „„;ÐquantificationÐO€--@(E#¼("
¨0
0--- €€‚ˆ‚ƒƒ„„OÐR017B„FL.MLÐ
7€--(3%ª)"-- „„7Ðnon„expansiveÐ
7€--(3%ª*"-- „„7ÐapplicativeÐ
7€--(3%ª+"-- „„7ÐfreeÐ
;€---(3%ª,"-- „„;ÐnoÐO€--@(3%ª-"
ˆ
--- €€‚ˆ‚ƒƒ„„OÐR017C„AC.MLÐ
7€--(O&Æ ."-- „„7Ðnon„expansiveÐ
7€--(O&Æ /"-- „„7ÐapplicativeÐ
7€--(O&Æ 0"-- „„7Ðnot€freeÐ
;€---(O&Æ 1"-- „„;ÐyesÐO€--@(O&Æ 2"
ˆ
--- €€‚ˆ‚ƒƒ„„OÐR017D„AC.MLÐ
7€--(k'â!3"-- „„7Ðnon„expansiveÐ
7€--(k'â!4"-- „„7ÐimperativeÐ
7€--(k'â!5"-- „„7Ðnot€freeÐ
;€---(k'â!6"-- „„;ÐyesÐO€--@(k'â!7"
ˆ
--- €€‚ˆ‚ƒƒ„„OÐR017E„FL.MLÐ
7€--(‡(þ"8"-- „„7Ðnon„expansiveÐ
7€--(‡(þ"9"-- „„7ÐimperativeÐ
7€--(‡(þ":"-- „„7ÐfreeÐ
;€---(‡(þ";"-- „„;ÐnoÐO€--@(‡(þ"<"
ˆ
--- €€‚ˆ‚ƒƒ„„OÐR017F„FL.MLÐ
7€--(£)$="-- „„7ÐexpansiveÐ
7€--(£)$>"-- „„7ÐapplicativeÐ
7€--(£)$?"-- „„7ÐfreeÐ
;€---(£)$@"-- „„;ÐnoÐO€--@(£)$A"
ˆ
--- €€‚ˆ‚ƒƒ„„OÐR017G„AC.MLÐ
7€--(¿*6%B"-- „„7ÐexpansiveÐ
7€--(¿*6%C"-- „„7ÐapplicativeÐ
7€--(¿*6%D"-- „„7Ðnot€freeÐ
;€---(¿*6%E"-- „„;ÐyesÐO€--@(¿*6%F"
ˆ
--- €€‚ˆ‚ƒƒ„„OÐR017H„FL.MLÐ
7€--(Û+R&G"-- „„7ÐexpansiveÐ
7€--(Û+R&H"-- „„7ÐimperativeÐ
7€--(Û+R&I"-- „„7Ðnot€freeÐ
;€---(Û+R&J"-- „„;ÐnoÐM€---<(Û+R&K"
ˆ
--- €H€‚ˆ‚„„MÐR017I„FL.MLÐ
9€---(÷,n'L"--- „„9ÐexpansiveÐ
9€---(÷,n'M"--- „„9ÐimperativeÐ
9€---(÷,n'N"--- „„9ÐfreeÐ
;€----(÷,n'O"--- „„;ÐnoÔ#†2ÂHN
ÂÂ7Âf¤K#ÔÔ#†2%'Î%
Â2ÂHN…K#ÔÐ8.,÷,n'P"
ˆ0
H

---- 8ÐÌÐ		¨.)Q ÐR017B„FL.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡8ÂfÂ
Â2ÂHNÔval€f€=€fn€x€=>€letÐ	cÚ Ѐ€€€€€€€€€€€€€€€€€€val€y€=€x̀€€€€€€€€€€€€€€€iǹ€€€€€€€€€€€€€€€€€€not€y€andalso€y€=€5̀€€€€€€€€€€€€€€€end;ÌÔ#†2ÂHN
ÂÂ8ÂfwX#ÔÔ#†2%'Î%
Â2ÂHNXX#ÔÌÝ‚ÿÿÿÝòòÝÝóóThe€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡:ÂfÂ
Â2ÂHNÔval€y€=€xÔ#†2ÂHN
ÂÂ:ÂfÁY#ÔÔ#†2%'Î%
Â2ÂHN¢Y#Ô,€is€elaborated€in€the€context€C€=€Còò0óó€+€{x€ð“ð€'a}€where€Còò0óóÐ	zñ Ðis€the€initial€context.€But€since€'a€is€free€in€the€context€it€should€not€be€quantifiedÏin€this€value€declaration.€Therefore€this€value€declaration€should€result€in€theÏvariable€environment€VE'€=€{y€ð“ð€'a€ðð€'a}.€Now€'a€can€be€unified€with€bool€in€theÐ	A¸ Ðexpression€òònot€y€óóbut€not€with€int€in€the€same€expression€as€well.€Thus€theÐ	.¥	 Ðcompiler€should€fail€to€elaborate€this€program.ÌÌÌR017C„AC.ML:ÌÝ‚ÿqYÝñR
ñóóñR
ñÝÝÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡9ÂfÂ
Â2ÂHNÔval€test€=€letÐ	¼3 Ѐ€€€€€€€€€€€€€val€f€=€fn€z€=>€z̀€€€€€€€€€€iǹ€€€€€€€€€€€€€(f€3€=€3)€andalso€f€tru耀€€€€€€€€end;ÌÔ#†2ÂHN
ÂÂ9Âf”\#ÔÔ#†2%'Î%
Â2ÂHNu\#ÔÌThe€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡;ÂfÂ
Â2ÂHNÔval€f€=€fn€z€=>€zÔ#†2ÂHN
ÂÂ;Âf±]#ÔÔ#†2%'Î%
Â2ÂHN’]#Ô,€is€elaborated€in€the€context€Còò0óó.€But€since€noÐ	ÓJ Ðtype€variables€are€free€in€the€context€and€òòexpóó€is€non„expansive,€'a€should€beÐ	À7 Ðquantified€in€this€value€declaration.€Therefore€this€value€declaration€shouldÏresult€in€the€variable€environment€VE'€=€{f€ð“ð€ðzð'a.'a€ðð€'a}.€Now€'a€can€be€unifiedÐ	š Ðwith€int€in€the€expression€òòf€3€=€3€óóand€with€bool€in€the€expression€òòf€trueóó.€Ð	‡þ ÐÌÌR017D„AC.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡<ÂfÂ
Â2ÂHNÔlet€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Ð	(!Ÿ! Ѐ€€val€f€=€fn€x€=>€ref€x€€€€€€€Ìiǹ€€f€3€;€f€trueÌend;ÌÔ#†2ÂHN
ÂÂ<Âf1`#ÔÔ#†2%'Î%
Â2ÂHN`#ÔÌThe€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡=ÂfÂ
Â2ÂHNÔval€f€=€fn€x€=>€ref€xÔ#†2ÂHN
ÂÂ=Âf6a#ÔÔ#†2%'Î%
Â2ÂHNa#Ô,€is€elaborated€in€the€context€Còò0óó.€But€sinceÐ	?%¶' Ðno€type€variables€are€free€in€the€context€and€the€expression€in€the€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡>ÂfÂ
Â2ÂHNÔfnÐ	,&£ ( Ðx€=>€ref€xÔ#†2ÂHN
ÂÂ>Âffb#ÔÔ#†2%'Î%
Â2ÂHNGb#Ô,€is€non„expansive,€'a€should€be€quantified.€Therefore€the€valueÐ	'!) Ðdeclaration€should€result€in€the€variable€environment€VE'€=€{f€ð“ð€ðzð'a.'a€ðð€'a€ref}.Ð	(}"* ÐNow€'a€can€be€unified€with€int€in€the€expression€òòf€3€óóand€with€bool€in€theÐ	ó(j#+ Ðexpression€òòf€trueóó.€Ð	à)W$, ÐÌÌÐ		§,'/ ÐR017E-FL.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡?ÂfÂ
Â2ÂHNÔval€f€=€fn€x€=>€letÐ	cÚ Ѐ€€€€€€€€€€€€€€€€€€val€y€=€ref€x̀€€€€€€€€€€€€€€€iǹ€€€€€€€€€€€€€€€€€€not(!y)€andalso€!y€=€5€Ì€€€€€€€€€€€€€€€€end;ÌÔ#†2ÂHN
ÂÂ?Âf‡d#ÔÔ#†2%'Î%
Â2ÂHNhd#ÔÌThe€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡@ÂfÂ
Â2ÂHNÔval€y€=€ref€xÔ#†2ÂHN
ÂÂ@Âf¸e#ÔÔ#†2%'Î%
Â2ÂHN™e#Ô,€is€elaborated€in€the€context€Còò0óó€+€{x€ð“ð€'a}.€But€sinceÐ	zñ Ðthe€type€variable€for€x,€'a,€is€free€in€the€context€'a€should€not€be€quantified€in€thisÏvalue€declaration.€Therefore€this€value€declaration€should€result€in€the€variableÏenvironment€VE'€=€{y€ð“ð€'a€ref}.€Now€'a€can€be€unified€with€bool€in€the€expressionÐ	A¸ Ðòònot(!y)óó€but€not€with€int€in€the€expression€òò!y€=€5óó.€Thus€the€compiler€should€fail€toÐ	.¥	 Ðelaborate€this€program.ÌÌÌR017F-FL.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡AÂfÂ
Â2ÂHNÔfn€x€=>€let€€€€€€€€€€Ð	¼3 Ѐ€€€€€€€€€€val€g€=€(fn€y€=>€x)€5€Ì€€€€€€€€iǹ€€€€€€€€€€(g€=€5.5)€andalso€g̀€€€€€€€end;ÌÔ#†2ÂHN
ÂÂAÂfMh#ÔÔ#†2%'Î%
Â2ÂHN.h#ÔÌThe€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡BÂfÂ
Â2ÂHNÔval€g€=€(fn€y€=>€x)€5Ô#†2ÂHN
ÂÂBÂfei#ÔÔ#†2%'Î%
Â2ÂHNFi#Ô,€is€elaborated€in€the€context€Còò0óó€+€{x€ð“ð€'a}.Ð	ÓJ ÐBut€since€the€type€variable€for€x,€'a,€is€free€in€the€context€C,€'a€should€not€beÏquantified€in€this€value€declaration.€Therefore€the€value€declaration€shouldÏresult€in€the€variable€environment€VE'€=€{g€ð“ð€'a}.€Now€'a€can€be€unified€with€realÐ	š Ðin€the€expression€òòg€=€5.5óó€but€not€with€bool€in€the€expression€òògóó.€Thus€the€compilerÐ	‡þ Ðshould€fail€to€elaborate€this€program.ÌÌÌR017G-AC.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡CÂfÂ
Â2ÂHNÔval€test€=€letÐ	"Œ" Ѐ€€€€€€€€€€€€€val€r€=€(fn€x€=>€(x,€ref€[]))€(fn€y€=>€y)̀€€€€€€€€€€iǹ€€€€€€€€€€€€€let̀€€€€€€€€€€€€€€€€val€(f,y)€=€r̀€€€€€€€€€€€€€iǹ€€€€€€€€€€€€€€€€f€3€=€3€andalso€f€true€andalso€(€y€:=€[1];€[1]€=€!y)̀€€€€€€€€€€€€€end̀€€€€€€€€€€end;ÌÔ#†2ÂHN
ÂÂCÂfük#ÔÔ#†2%'Î%
Â2ÂHNÝk#ÔÌThe€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡DÂfÂ
Â2ÂHNÔval€r€=€(fn€x€=>€(x,€ref€[]))€(fn€y€=>€y)Ô#†2ÂHN
ÂÂDÂf¤m#ÔÔ#†2%'Î%
Â2ÂHN…m#Ô,€is€elaborated€in€theÐ	´(+#, Ðcontext€Còò0óó.€But€since€no€type€variables€are€free€in€the€context€C,€the€applicativeÐ	¡)$- Ðtype€variable€'a€should€be€quantified.€Therefore€this€value€declaration€shouldÏgive€the€variable€environment€VE'€=€{r€ð“ð€ðzð'a.('a€ðð€'a)€*€'b€list€ref€}.€Now€'a€can€beÐ	{+ò%/ Ðunified€with€int€in€the€expression€òòf€3€=€3óó€and€also€with€bool€in€the€expression€òòfÐ	h,ß&0 Ðtrueóó.€Ð	U-Ì'1 ÐÌÌÐ		0“*4 ÐR017H-FL.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡EÂfÂ
Â2ÂHNÔval€test€=€letÐ	cÚ Ѐ€€€€€€€€€€€€€val€r€=€(fn€x€=>€(x,€ref€[]))€(fn€y€=>€y)̀€€€€€€€€€€iǹ€€€€€€€€€€€€€let̀€€€€€€€€€€€€€€€€val€(f,y)€=€r̀€€€€€€€€€€€€€iǹ€€€€€€€€€€€€€€€€f€3€=€3̀€€€€€€€€€€€€€€€€andalso€f€tru耀€€€€€€€€€€€€€€andalso€(y€:=€[1];€[1]€=€!y)̀€€€€€€€€€€€€€€€€andalso€(y€:=€[true];€[true]€=€!y)̀€€€€€€€€€€€€€end̀€€€€€€€€€€end;ÌÔ#†2ÂHN
ÂÂEÂf]p#ÔÔ#†2%'Î%
Â2ÂHN>p#ÔÌThe€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡FÂfÂ
Â2ÂHNÔval€r€=€(fn€x€=>€(x,€ref€[]))€(fn€y€=>€y)Ô#†2ÂHN
ÂÂFÂfZr#ÔÔ#†2%'Î%
Â2ÂHN;r#Ô,€is€elaborated€in€theÐ	è_
 Ðcontext€Còò0óó.€But€since€the€type€of€Ô‡2ÂHN
Â%2%'ÎÔÔ‡WÂfÂ
Â2ÂHNÔref€[]Ô#†2ÂHN
ÂÂWÂfZs#ÔÔ#†2%'Î%
Â2ÂHN;s#Ԁcontains€an€imperative€type€variable€'bÐ	ÕL Ðand€the€expression€is€expansive€'b€should€not€be€quantified€in€this€valueÏdeclaration.€Therefore€this€value€declaration€should€result€in€the€variableÏenvironment€VE'€=€{r€ð“ð€ðzð'a.('a€ðð€'a)€*€'b€list€ref€}.€The€program€should€notÐ	œ Ðelaborate€since€'b€can€not€be€unified€with€int€list€in€the€expression€òòy€:=€[1]óó€andÐ	‰ Ðalso€with€bool€list€in€the€expression€òòy€:=€[true]óó.€Thus€the€compiler€should€fail€toÐ	ví Ðelaborate€this€program.ÌÌÌR017I-FL.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡GÂfÂ
Â2ÂHNÔval€f€=€fn€x€=>€letÐ	{ Ѐ€€€€€€€€€€€€€€€€€€val€y€=€ref€x̀€€€€€€€€€€€€€€€iǹ€€€€€€€€€€€€€€€€€€y€:=€1€;€y€:=€tru耀€€€€€€€€€€€€€end;ÌÔ#†2ÂHN
ÂÂGÂf$v#ÔÔ#†2%'Î%
Â2ÂHNv#ÔÌThe€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡HÂfÂ
Â2ÂHNÔval€y€=€ref€xÔ#†2ÂHN
ÂÂHÂfPw#ÔÔ#†2%'Î%
Â2ÂHN1w#Ô,€is€elaborated€in€the€context€Còò0óó€+€{x€ð“ð€'a}.€But€sinceÐ	’! Ð'a€is€free€in€this€context€'a€should€not€be€quantified€in€this€value€declaration.ÏTherefore€the€value€declaration€should€result€in€the€variable€environment€VE'€=Ï{y€ð“ð€'a€ref}.€The€program€should€not€elaborate€since€'a€cannot€be€unified€with€intÐ	â!Y$ Ðin€the€expression€òòy€:=€1óó€and€also€with€bool€in€the€expression€òòy€:=€trueóó.€Thus€theÐ	Ï"F% Ðcompiler€should€fail€to€elaborate€this€program.ÌÌÌR017J-FL.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡IÂfÂ
Â2ÂHNÔfn€x€=>€letÐ	](Ô"+ Ѐ€€€€€€€€€€valòòÔ#†2ÂHN
ÂIÂfôy#ÔÔ‡4ÂfÂ
2ÂHNÔÔ#†4%Tý%4ÂfÕy#ÔÔ‡4ÂfÂI4%TýÔ{'a}Ô#†2ÂHN
Â4Âfgz#ÔÔ#†2%'Î%
2ÂHN©z#ÔÔ‡I%Tý%I2%'ÎÔÔ‡IÂfÂII%TýÔóó€y€:€'a€=€xÐ	ÿ(v#, Ѐ€€€€€€€iǹ€€€€€€€€€€ỳ€€€€€€€end;ÌÔ#†2ÂHN
ÂÂIÂf{#ÔÔ#†2%'Î%
Â2ÂHN1{#ÔÌIn€this€program€'a€is€scoped€at€the€val€declaration,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡JÂfÂ
Â2ÂHNÔvalÔ#†2ÂHN
ÂÂJÂf3|#ÔÔ‡4ÂfÂ
Â2ÂHNÔÔ#†4%Tý%Â4Âf|#ÔÔ‡4ÂfÂ%4%TýÔòò{'a}óóÔ#†2ÂHN
ÂÂ4Âfx|#ÔÔ#†2%'Î%
Â2ÂHNº|#ÔÔ‡J%Tý%%2%'ÎÔÔ‡JÂfÂ%J%TýԀy€:€'a€=€xÔ#†2ÂHN
ÂÂJÂf)}#ÔÔ#†2%'Î%
Â2ÂHNH}#Ô.€TheÐ	t,ë&1 Ðdeclaration€is€elaborated€in€the€context€Còò0óó€+€{x€ð“ð€'b}.€But€since€the€valueÐ	a-Ø'2 Ðdeclaration€sets€y€equal€to€x€the€two€type€variables,€'a€and€'b,€must€also€be€theÏsame.€This€breaks€the€second€side€condition€of€rule€17€(U€ðð€tyvars€VE'€=€).€ThusÐ	;/²)4 Ðthe€program€should€not€elaborate.Ð	(0Ÿ*5 ЇR017K-FL.ML:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡KÂfÂ
Â2ÂHNÔvalòò{'a}€óóx€=€(let€valòò{}óó€Id€:€'a€->€'a€=€fn€z€=>€z€in€Id€Id€end,Ð	cÚ Ѐ€€€€€€€€€€Ô%%%ûÿûÿÔfn€z€=>€z€:€'a);Ð	| ÐÔ#†2ÂHN
ÂÂKÂfZ#ÔÔ#†2%'Î%
Â2ÂHN;#ÔÌThis€program€is€taken€from€[page€20].€It€tests€the€scoping€of€explicit€typeÏvariables.€The€type€variable€'a€is€scoped€at€the€outer€value€declaration.€ThisÏmeans€that€the€valbinding,€Ô‡2ÂHN
Â%2%'ÎÔÔ‡LÂfÂ
Â2ÂHNÔvalòò{}óó€Id€:€'a€„>€'a€=€fn€z€=>€zÔ#†2ÂHN
ÂÂLÂf9#ÔÔ#†2%'Î%
Â2ÂHN#Ô,€elaborates€into€VE€=Ð	nå Ð{Id€ð“ð€'a€ðð€'a}.€This€way€Ô‡2ÂHN
Â%2%'ÎÔÔ‡cÂfÂ
Â2ÂHNÔIdÔ#†2ÂHN
ÂÂcÂf,‚#ÔÔ#†2%'Î%
Â2ÂHN
‚#Ԁcan€not€occur€in€two€different€instantiations€in€theÐ	[Ò Ðexpression€Ô‡2ÂHN
Â%2%'ÎÔÔ‡XÂfÂ
Â2ÂHNÔId€IdÔ#†2ÂHN
ÂÂXÂfƒ#ÔÔ#†2%'Î%
Â2ÂHNè‚#Ô.€Thus€the€program€should€not€elaborate.Ð	H
¿	 ÐÌÌÐ		†
 ÐòòÔ‡2»Pt»%2%'ÎÔ4.0€Using€the€test€suiteóóÔ#†2%'Î%»2»Ptȃ#ÔÐ	‰ Ðß8€-()
°°xdÿÿ8ßÐ	Á8 ÐÌÌÌÌThe€testing€of€a€compiler€with€this€test€suite€can€not€be€made€automatically.ÏHowever,€the€work€is€made€somewhat€easier€by€the€accessory€files€provided€withÏit.€For€testing€compilers€running€under€MS„DOS€the€following€batch€files€areÏprovided:ÌÌTEST_ALL.BATà0jàRuns€all€the€test€programs€on€the€compiler€and€directs€theÐ	&	 Ðoutput€into€a€subdirectory€called€LOGFILES.Ð
jö!jö! ÐÌTEST_ONE.BATà0jàRuns€one€test€program€on€a€compiler.€The€user€shouldÐ	íd Ðchange€the€contents€of€this€file€with€the€name€of€theÏcompiler€to€be€tested.€Used€by€TEST_ALL.BAT.Ð
jö!jö! ÐÌSHOW_ALL.BATà0jàShows€all€the€test€programs€one€by€one€with€the€resultÐ	¡ Ðfrom€the€compiler.€This€makes€it€possible€to€compare€theÏactual€results€with€the€expected€results€to€see€if€theÏcompiler€has€elaborated€and€evaluated€the€programsÏcorrectly.Ð
jö!jö! ÐÌSHOW_ONE.BATà0jàUsed€by€SHOW_ALL.BAT€to€show€one€test€program€alongÐ	/¦ Ðwith€the€output€from€the€compiler.Ð
jö!jö! ÐÌFor€testing€compilers€running€under€UNIX€the€script€TEST_ALL.S€is€provided.ÏThe€command:ÌÌsh€TEST_ALL.S€>€compiler.logÌÌruns€the€compiler€with€all€the€test€programs€and€stores€all€the€output€into€theÏfile€compiler.log.€ÌÌPlease€note€that€òòit€is€very€important€that€the€output€from€the€compiler€is€carefullyÐ	^%Õ# Ðexaminedóó.€It€should€be€checked€that€the€output€from€the€compiler€matches€theÐ	K& $ Ðexpected€results.€This€does€not€mean€that€the€compiler€should€give€the€sameÏresults€syntactically€but€semantically.€The€test€results€from€the€failing€programsÏshould€be€examined€closely€to€see€if€an€error€message€really€is€a€result€of€aÏdeliberate€error€in€a€program.ÌÌÐ		Ù+P&* ÐòòÔ‡2»Pt»%2%'ÎÔ5.0€ConclusionóóÔ#†2%'Î%»2»Pt™‹#ÔÐ	‰ Ðß8€-()
°°xd8ßÐ	Á8 ÐÌÌÌÌAs€stated€in€the€introduction€it€is€not€possible€to€prove€that€a€Standard€MLÏimplementation,€or€any€other€program€for€that€matter,€works€as€intended€to€doÏby€using€it€on€test€data.€For€example,€one€cannot€ensure€that€a€every€newÏdatatype€in€a€SML€program€is€really€assigned€a€new€internal€type€in€the€SMLÏimplementation€(rule€29).€Also,€one€cannot€test€the€internal€interpretation€of€aÏSML€program.€This€is€why,€for€example,€it€is€not€possible€to€ensure€that€derivedÏforms€are€interpreted€correctly.€One€can€create€a€number€of€test€programsÏcontaining€derived€forms€and€examine€if€they€behave€as€expected.€But€oneÏcannot€really€check€that€the€derived€forms€are€interpreted€correctly€internally€inÏthe€SML€implementation.€Even€though€the€compiler€handles€the€examplesÏcorrectly€one€will€never€know€if€the€compiler€will€handle€all€other€instances€ofÏthe€derived€forms€correctly€as€well.ÌÌSo€is€the€approach€used€in€this€project€appropriate,€e.g.€is€systematical€testingÏbased€on€the€rules€from€the€Definition€the€best€way€to€test€a€SMLÏimplementation?€We€think€so€for€the€following€reasons:€ÌÌððà0º	àSML€is€very€precisely€mathematically€defined€which€in€itself€makes€itÐ	B¹ Ðpossible€to€use€a€systematic€approach.Ð
º	ö!º	ö! ÐÌððà0º	àby€systematically€testing€rule€by€rule€chances€are€that€one€gets€to€testÐ		€ Ðthings€that€might€otherwise€not€be€thought€of.Ð
º	ö!º	ö! ÐÌððà0º	àby€testing€one€thing€at€a€time€in€separate€programs€one€ensures€that€aÐ	ÐG Ðfailure€to€elaborate€or€evaluate€a€declaration€is€not€a€side€effect€of€aÏprevious€declaration.Ð
º	ö!º	ö! ÐÌððà0º	àwe€have€found€a€number€of€errors€in€different€SML€implementations.Є#û!º	ö!º	ö! ÐÌThe€question€then€is€if€we€have€found€more€errors€than€we€would€by€testing€atÏrandom.€We€are€convinced€that€we€actually€have.€The€arguments€are€the€sameÏas€above€plus€the€fact€that€this€test€suite€makes€it€very€easy€to€compare€expectedÏresults€with€actual€results.€Also€by€constructing€test€programs€at€randomÏchances€are€that€different€programs€might€actually€test€the€same€thing.€OneÏwould€have€to€check€the€Definition€to€see€what€a€program€actually€tested.€ThisÏapproach€could€lead€to€much€more€work.ÌÌHaving€said€this€about€the€systematical€approach€we€should€add,€as€statedÏbefore,€that€intuition€was€also€a€part€of€the€development€of€the€programs€in€thisÏtest€suite,€e.g.€the€rules€in€the€Definition€cannot€be€translated€directly€intoÏprograms.€The€construction€of€a€program€for€a€specific€rule€or€a€side€conditionÏsometimes€required€a€lot€of€effort.Ð	z0ñ*/ ЇFinally,€we€would€like€to€reemphasize€that€an€exhaustive€test€is€impossible€usingÏtest€data.€If€a€SML€implementation€elaborates€(and€evaluates)€all€programs€inÏthis€test€suite€correctly€it€may€of€course€still€contain€errors.ÌÌÐ		=	´ ÐòòÔ‡2»Pt»%2%'ÎÔBibliographyóóÔ#†2%'Î%»2»Pt«—#ÔÐ	‰ Ðß8€-()
°°xd8ßÐ	Á8 ÐÌÌÌÌ[1]à0º	àRobin€Milner,€Mads€Tofte,€and€Robin€Harper.€The€Definition€of€StandardÐ	…
ü ÐML.€MIT€Press,€1990.Ð
º	ö!º	ö! ÐÌ[2]à0º	àRobin€Milner€and€Mads€Tofte.€Commentary€on€Standard€ML.€MIT€Press,Ð	L
Ã	 Ð1991.Ð
º	ö!º	ö! ÐÌ[3]à0º	àChris€Reade.€Elements€of€functional€programming.€Addison„WesleyÐ	Š
 ÐPublishers€Ltd,€1989.Ð
º	ö!º	ö! ÐÌ[4]à0º	àRobert€Harper.€Introduction€to€Standard€ML.€School€of€ComputerÐ	ÚQ
 ÐScience,€Carnegie€Mellon€University,€1990.Ð
º	ö!º	ö! ÐÌÌÐ		Ž ÐòòÔ‡2»Pt»%2%'ÎÔA.€Which€rules€are€used€in€which€filesóóÔ#†2%'Î%»2»PtȚ#ÔÐ	‰ Ðß8€-()
°°xd8ßÐ	Á8 ÐÌÌÌÌThe€following€list€shows€which€rules€are€used€in€which€files.€Each€of€the€rules€1„¼ñR
ñ¼ñR
ñ22,€24„52€is€followed€by€a€list€of€the€files€in€which€a€rule€is€used€at€least€once.€AsÏit€can€be€seen€from€the€list,€all€the€rules€1„22,€24„52€are€used€in€the€test€suite.ÌÌÌòòÔ‡2ÂHN
Â%2%'ÎÔÔ‡MÂfÂ
Â2ÂHNÔRule€€€1:óóÐ	&	 ÐR005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006A-AC.ML,€R007A-AC.ML,€R008A-AC.ML,€ÌR010A-AC.ML,€R010B-FL.ML,€R011A-AC.ML,€R011B-FL.ML,€R011D-FL.ML,€R012A-AC.ML,€ÌR012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€R014A-AC.ML,€R015A-AC.ML,€R015B-FL.ML,€ÌR015C-FL.ML,€R016A-AC.ML,€R016B-AC.ML,€R017B-FL.ML,€R017C-AC.ML,€R017E-FL.ML,€ÌR017F-FL.ML,€R017G-AC.ML,€R017I-FL.ML,€R018A-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€ÌR020C-FL.ML,€R021A-AC.ML,€R021B-FL.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€ÌR024A-AC.ML,€R025A-AC.ML,€R026A-FL.ML,€R026B-FL.ML,€R027A-AC.ML,€R027B-AC.ML,€ÌR027C-FL.ML,€R028A-AC.ML,€R029A-AC.ML,€R029B-AC.ML,€R030A-AC.ML,€R031A-AC.ML,€ÌR031B-FL.ML,€R031C-FL.ML,€R034A-AC.ML,€R034B-AC.ML,€R035A-AC.ML,€R038A-AC.ML,€ÌR039A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€ÌR045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R048A-AC.ML,€R049A-AC.ML,€ÌR049B-FL.ML,€ÌÌòòRule€€€2:óóÐ	y ÐR002A-FL.ML,€R005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006A-AC.ML,€R006B-FL.ML,€ÌR006C-FL.ML,€R007A-AC.ML,€R008A-AC.ML,€R010A-AC.ML,€R010B-FL.ML,€R011A-AC.ML,€ÌR011E-FL.ML,€R013A-AC.ML,€R014A-AC.ML,€R015A-AC.ML,€R015B-FL.ML,€R015C-FL.ML,€ÌR016B-AC.ML,€R017A-AC.ML,€R017B-FL.ML,€R017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€ÌR017F-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€R017I-FL.ML,€R017J-FL.ML,€R017K-FL.ML,€ÌR018A-AC.ML,€R019A-AC.ML,€R019B-AC.ML,€R019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€ÌR020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€ÌR024A-AC.ML,€R025A-AC.ML,€R026B-FL.ML,€R027A-AC.ML,€R027B-AC.ML,€R027C-FL.ML,€ÌR027D-FL.ML,€R028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R029C-FL.ML,€R031A-AC.ML,€ÌR034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R036A-AC.ML,€R038A-AC.ML,€R039A-AC.ML,€ÌR041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€R045A-AC.ML,€ÌR045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€€3:óóÐ	Þ U' ÐR003A-FL.ML,€R005A-AC.ML,€R005B-FL.ML,€R006A-AC.ML,€R006B-FL.ML,€R006C-FL.ML,€ÌR008A-AC.ML,€R010A-AC.ML,€R011A-AC.ML,€R011B-FL.ML,€R011C-FL.ML,€R013A-AC.ML,€ÌR017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€R017I-FL.ML,€ÌR019A-AC.ML,€R019B-AC.ML,€R019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€ÌR020C-FL.ML,€R020D-AC.ML,€R022A-AC.ML,€R022B-AC.ML,€R025B-FL.ML,€R027D-FL.ML,€ÌR028B-AC.ML,€R029A-AC.ML,€R029B-AC.ML,€R029C-FL.ML,€R029D-FL.ML,€R030A-AC.ML,€ÌR031A-AC.ML,€R031B-FL.ML,€R031C-FL.ML,€R034A-AC.ML,€R034C-AC.ML,€R035A-AC.ML,€ÌR036A-AC.ML,€R038A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€ÌR044B-FL.ML,€R045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R048A-AC.ML,€ÌR049A-AC.ML,€R049B-FL.ML,€R050A-AC.ML,€R052A-AC.ML,€R100A-FL.ML,€ÌÌòòRule€€€4:óóÐ	v(í"3 ÐR013A-AC.ML,€R013B-FL.ML,€R021A-AC.ML,€R044A-AC.ML,€ÌÌòòRule€€€5:óóÐ	\*Ó$6 ÐR005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006B-FL.ML,€R006C-FL.ML,€R007A-AC.ML,€ÌR008A-AC.ML,€R010A-AC.ML,€R010B-FL.ML,€R011A-AC.ML,€R011B-FL.ML,€R013A-AC.ML,€ÌR015B-FL.ML,€R017A-AC.ML,€R017B-FL.ML,€R017C-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€ÌR017G-AC.ML,€R017H-FL.ML,€R017I-FL.ML,€R017K-FL.ML,€R018A-AC.ML,€R019A-AC.ML,€ÌR019B-AC.ML,€R019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€ÌR020D-AC.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R025A-AC.ML,€R027A-AC.ML,€ÌR027B-AC.ML,€R027C-FL.ML,€R027D-FL.ML,€R028A-AC.ML,€R029A-AC.ML,€R029B-AC.ML,€ÌR029C-FL.ML,€R030A-AC.ML,€R034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R035A-AC.ML,€ÌR038A-AC.ML,€R039A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€ÌÐ		°0'+@ ÐR044B-FL.ML,€R045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R048A-AC.ML,€ÌR049A-AC.ML,€R049B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€€6:óóÐ	oæ ÐR006A-AC.ML,€R006B-FL.ML,€R006C-FL.ML,€R010B-FL.ML,€R017A-AC.ML,€R017B-FL.ML,€ÌR017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€ÌR017I-FL.ML,€R017J-FL.ML,€R019B-AC.ML,€R019C-FL.ML,€R019D-AC.ML,€R024A-AC.ML,€ÌR025B-FL.ML,€R029B-AC.ML,€R031B-FL.ML,€R031C-FL.ML,€ÌÌòòRule€€€7:óóÐ	;²	 ÐR005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R007A-AC.ML,€R008A-AC.ML,€R010B-FL.ML,€ÌR011A-AC.ML,€R011E-FL.ML,€R013A-AC.ML,€R014A-AC.ML,€R017C-AC.ML,€R017F-FL.ML,€ÌR017G-AC.ML,€R017H-FL.ML,€R019A-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€ÌR025A-AC.ML,€R027A-AC.ML,€R027B-AC.ML,€R027C-FL.ML,€R031A-AC.ML,€R031B-FL.ML,€ÌÌòòRule€€€8:óóÐ	~	 ÐR005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006B-FL.ML,€R006C-FL.ML,€R007A-AC.ML,€ÌR008A-AC.ML,€R010A-AC.ML,€R010B-FL.ML,€R011A-AC.ML,€R011B-FL.ML,€R013A-AC.ML,€ÌR015B-FL.ML,€R017A-AC.ML,€R017B-FL.ML,€R017C-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€ÌR017G-AC.ML,€R017H-FL.ML,€R017I-FL.ML,€R017K-FL.ML,€R018A-AC.ML,€R019A-AC.ML,€ÌR019B-AC.ML,€R019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€ÌR020D-AC.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R025A-AC.ML,€R027A-AC.ML,€ÌR027B-AC.ML,€R027C-FL.ML,€R027D-FL.ML,€R028A-AC.ML,€R029A-AC.ML,€R029B-AC.ML,€ÌR029C-FL.ML,€R030A-AC.ML,€R034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R035A-AC.ML,€ÌR038A-AC.ML,€R039A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€ÌR044B-FL.ML,€R045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R048A-AC.ML,€ÌR049A-AC.ML,€R049B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€€9:óóÐ	A¸ ÐR002A-FL.ML,€R003A-FL.ML,€R005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006A-AC.ML,€ÌR006B-FL.ML,€R006C-FL.ML,€R007A-AC.ML,€R008A-AC.ML,€R010A-AC.ML,€R010B-FL.ML,€ÌR011A-AC.ML,€R011B-FL.ML,€R011C-FL.ML,€R011D-FL.ML,€R011E-FL.ML,€R012A-AC.ML,€ÌR012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€R013B-FL.ML,€R014A-AC.ML,€R015A-AC.ML,€ÌR015B-FL.ML,€R015C-FL.ML,€R016A-AC.ML,€R016B-AC.ML,€R017A-AC.ML,€R017B-FL.ML,€ÌR017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€ÌR017I-FL.ML,€R017J-FL.ML,€R017K-FL.ML,€R018A-AC.ML,€R019A-AC.ML,€R019B-AC.ML,€ÌR019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€ÌR021A-AC.ML,€R021B-FL.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R024A-AC.ML,€ÌR025A-AC.ML,€R025B-FL.ML,€R026A-FL.ML,€R026B-FL.ML,€R027A-AC.ML,€R027B-AC.ML,€ÌR027C-FL.ML,€R027D-FL.ML,€R028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R029A-AC.ML,€ÌR029B-AC.ML,€R029C-FL.ML,€R029D-FL.ML,€R030A-AC.ML,€R031A-AC.ML,€R031B-FL.ML,€ÌR031C-FL.ML,€R034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R035A-AC.ML,€R036A-AC.ML,€ÌR038A-AC.ML,€R039A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€ÌR044B-FL.ML,€R045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R048A-AC.ML,€ÌR049A-AC.ML,€R049B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€R100A-FL.ML,€ÌÌòòRule€€10:óóÐ	¥". ÐR005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006B-FL.ML,€R006C-FL.ML,€R007A-AC.ML,€ÌR008A-AC.ML,€R010A-AC.ML,€R010B-FL.ML,€R011A-AC.ML,€R013A-AC.ML,€R014A-AC.ML,€ÌR015B-FL.ML,€R016B-AC.ML,€R017A-AC.ML,€R017B-FL.ML,€R017C-AC.ML,€R017D-AC.ML,€ÌR017E-FL.ML,€R017F-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€R017I-FL.ML,€R017K-FL.ML,€ÌR018A-AC.ML,€R019A-AC.ML,€R019B-AC.ML,€R019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€ÌR020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€R021A-AC.ML,€R022A-AC.ML,€R022B-AC.ML,€ÌR022C-FL.ML,€R025A-AC.ML,€R027A-AC.ML,€R027B-AC.ML,€R027C-FL.ML,€R027D-FL.ML,€ÌR028A-AC.ML,€R028B-AC.ML,€R029A-AC.ML,€R029B-AC.ML,€R029C-FL.ML,€R030A-AC.ML,€ÌR031A-AC.ML,€R031B-FL.ML,€R031C-FL.ML,€R039A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€ÌR043B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€R100A-FL.ML,€ÌÌòòRule€€11:óóÐ	=*´$: ÐR011A-AC.ML,€R011B-FL.ML,€R011D-FL.ML,€R011E-FL.ML,€R014A-AC.ML,€R016B-AC.ML,€ÌR017K-FL.ML,€R020A-AC.ML,€R025B-FL.ML,€R048A-AC.ML,€R049A-AC.ML,€R049B-FL.ML,€ÌÌòòRule€€12:óóÐ	Å,<'> ÐR012A-AC.ML,€R012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€R031A-AC.ML,€R031B-FL.ML,€ÌÌòòRule€€13:óóÐ	«.")A ÐR013A-AC.ML,€R013B-FL.ML,€R031A-AC.ML,€R031B-FL.ML,€ÌÌòòÐ		‘0+D ÐRule€€14:óóÐ	‰ ÐR008A-AC.ML,€R011E-FL.ML,€R014A-AC.ML,€R015A-AC.ML,€R015B-FL.ML,€R015C-FL.ML,€ÌR016A-AC.ML,€R016B-AC.ML,€R017A-AC.ML,€R017B-FL.ML,€R017C-AC.ML,€R017D-AC.ML,€ÌR017E-FL.ML,€R017F-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€R017I-FL.ML,€R017J-FL.ML,€ÌR017K-FL.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R022A-AC.ML,€R022B-AC.ML,€ÌR022C-FL.ML,€R027A-AC.ML,€R027B-AC.ML,€R027C-FL.ML,€R027D-FL.ML,€R028B-AC.ML,€ÌR034C-AC.ML,€R036A-AC.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€15:óóÐ	™
 ÐR008A-AC.ML,€R011E-FL.ML,€R012A-AC.ML,€R012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€ÌR014A-AC.ML,€R015A-AC.ML,€R015B-FL.ML,€R015C-FL.ML,€R016A-AC.ML,€R016B-AC.ML,€ÌR017A-AC.ML,€R017B-FL.ML,€R017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€ÌR017G-AC.ML,€R017H-FL.ML,€R017I-FL.ML,€R017J-FL.ML,€R017K-FL.ML,€R020A-AC.ML,€ÌR020B-FL.ML,€R020C-FL.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R027A-AC.ML,€ÌR027B-AC.ML,€R027C-FL.ML,€R027D-FL.ML,€R028B-AC.ML,€R031A-AC.ML,€R031B-FL.ML,€ÌR034C-AC.ML,€R036A-AC.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€16:óóÐ	KÂ
 ÐR008A-AC.ML,€R011E-FL.ML,€R012A-AC.ML,€R012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€ÌR014A-AC.ML,€R015A-AC.ML,€R015B-FL.ML,€R015C-FL.ML,€R016A-AC.ML,€R016B-AC.ML,€ÌR017A-AC.ML,€R017B-FL.ML,€R017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€ÌR017G-AC.ML,€R017H-FL.ML,€R017I-FL.ML,€R017J-FL.ML,€R017K-FL.ML,€R020A-AC.ML,€ÌR020B-FL.ML,€R020C-FL.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R027A-AC.ML,€ÌR027B-AC.ML,€R027C-FL.ML,€R027D-FL.ML,€R028B-AC.ML,€R031A-AC.ML,€R031B-FL.ML,€ÌR034C-AC.ML,€R036A-AC.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€17:óóÐ	ýt ÐR002A-FL.ML,€R003A-FL.ML,€R005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006A-AC.ML,€ÌR006B-FL.ML,€R006C-FL.ML,€R007A-AC.ML,€R008A-AC.ML,€R010A-AC.ML,€R010B-FL.ML,€ÌR011A-AC.ML,€R011B-FL.ML,€R011C-FL.ML,€R011D-FL.ML,€R011E-FL.ML,€R012A-AC.ML,€ÌR012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€R013B-FL.ML,€R014A-AC.ML,€R015A-AC.ML,€ÌR015B-FL.ML,€R015C-FL.ML,€R016A-AC.ML,€R016B-AC.ML,€R017A-AC.ML,€R017B-FL.ML,€ÌR017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€ÌR017I-FL.ML,€R017J-FL.ML,€R017K-FL.ML,€R018A-AC.ML,€R019A-AC.ML,€R019B-AC.ML,€ÌR019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€ÌR021A-AC.ML,€R021B-FL.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R024A-AC.ML,€ÌR025A-AC.ML,€R025B-FL.ML,€R026A-FL.ML,€R026B-FL.ML,€R027A-AC.ML,€R027B-AC.ML,€ÌR027C-FL.ML,€R027D-FL.ML,€R028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R029A-AC.ML,€ÌR029B-AC.ML,€R029C-FL.ML,€R029D-FL.ML,€R030A-AC.ML,€R031A-AC.ML,€R031B-FL.ML,€ÌR031C-FL.ML,€R034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R035A-AC.ML,€R036A-AC.ML,€ÌR038A-AC.ML,€R039A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€ÌR044B-FL.ML,€R045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R048A-AC.ML,€ÌR049A-AC.ML,€R049B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€R100A-FL.ML,€ÌÌòòRule€€18:óóÐ	a!Ø, ÐR018A-AC.ML,€R028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R028D-FL.ML,€R029A-AC.ML,€ÌR048A-AC.ML,€R049A-AC.ML,€R049B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€19:óóÐ	é#`0 ÐR006C-FL.ML,€R012C-FL.ML,€R013B-FL.ML,€R019A-AC.ML,€R019B-AC.ML,€R019C-FL.ML,€ÌR019D-AC.ML,€R025B-FL.ML,€R029A-AC.ML,€R029B-AC.ML,€R029C-FL.ML,€R029D-FL.ML,€ÌR029E-AC.ML,€R030A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€ÌÌòòRule€€20:óóÐ	'Š!5 ÐR020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€ÌÌòòRule€€21:óóÐ	ù(p#8 ÐR012A-AC.ML,€R012B-FL.ML,€R013A-AC.ML,€R021A-AC.ML,€R021B-FL.ML,€R031A-AC.ML,€ÌR031B-FL.ML,€R031C-FL.ML,€R032A-AC.ML,€R041A-AC.ML,€R044A-AC.ML,€R044B-FL.ML,€ÌR052A-AC.ML,€ÌÌòòRule€€22:óóÐ	#,š&= ÐR022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R024A-AC.ML,€ÌÌòòRule€€24:óóÐ		.€(@ ÐR017D-AC.ML,€R017I-FL.ML,€R024A-AC.ML,€ÌÌòòRule€€25:óóÐ	ï/f*C ÐR017D-AC.ML,€R017G-AC.ML,€R017I-FL.ML,€R024A-AC.ML,€R025B-FL.ML,€Ð	‘0+D ЇòòRule€€26:óóÐ	‰ ÐR002A-FL.ML,€R003A-FL.ML,€R005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006A-AC.ML,€ÌR006B-FL.ML,€R006C-FL.ML,€R007A-AC.ML,€R008A-AC.ML,€R010A-AC.ML,€R010B-FL.ML,€ÌR011A-AC.ML,€R011B-FL.ML,€R011C-FL.ML,€R011D-FL.ML,€R011E-FL.ML,€R012A-AC.ML,€ÌR012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€R013B-FL.ML,€R014A-AC.ML,€R015A-AC.ML,€ÌR015B-FL.ML,€R015C-FL.ML,€R016A-AC.ML,€R016B-AC.ML,€R017A-AC.ML,€R017B-FL.ML,€ÌR017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€ÌR017I-FL.ML,€R017J-FL.ML,€R017K-FL.ML,€R018A-AC.ML,€R019A-AC.ML,€R019B-AC.ML,€ÌR019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€ÌR021A-AC.ML,€R021B-FL.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R024A-AC.ML,€ÌR025A-AC.ML,€R025B-FL.ML,€R026A-FL.ML,€R026B-FL.ML,€R027A-AC.ML,€R027B-AC.ML,€ÌR027C-FL.ML,€R028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R029A-AC.ML,€R029B-AC.ML,€ÌR029C-FL.ML,€R029D-FL.ML,€R030A-AC.ML,€R031A-AC.ML,€R031B-FL.ML,€R031C-FL.ML,€ÌR034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R035A-AC.ML,€R036A-AC.ML,€R038A-AC.ML,€ÌR039A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€ÌR045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R048A-AC.ML,€R049A-AC.ML,€ÌR049B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€R100A-FL.ML,€ÌÌòòRule€€27:óóÐ	íd ÐR020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R027A-AC.ML,€R027D-FL.ML,€ÌÌòòRule€€28:óóÐ	ÓJ
 ÐR018A-AC.ML,€R028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R028D-FL.ML,€R029A-AC.ML,€ÌR048A-AC.ML,€R049A-AC.ML,€R049B-FL.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€29:óóÐ	[Ò ÐR006C-FL.ML,€R012C-FL.ML,€R013B-FL.ML,€R019A-AC.ML,€R019B-AC.ML,€R019C-FL.ML,€ÌR019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€R025B-FL.ML,€ÌR029A-AC.ML,€R029B-AC.ML,€R029C-FL.ML,€R029D-FL.ML,€R029E-AC.ML,€R030A-AC.ML,€ÌR041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€ÌÌòòRule€€30:óóÐ	'ž ÐR006C-FL.ML,€R012C-FL.ML,€R013B-FL.ML,€R019A-AC.ML,€R019B-AC.ML,€R019C-FL.ML,€ÌR019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€R029A-AC.ML,€ÌR029B-AC.ML,€R029C-FL.ML,€R029D-FL.ML,€R029E-AC.ML,€R030A-AC.ML,€R041A-AC.ML,€ÌR043A-AC.ML,€R043B-FL.ML,€ÌÌòòRule€€31:óóÐ	ój% ÐR012A-AC.ML,€R012B-FL.ML,€R013A-AC.ML,€R021A-AC.ML,€R021B-FL.ML,€R031A-AC.ML,€ÌR031B-FL.ML,€R031C-FL.ML,€R032A-AC.ML,€R041A-AC.ML,€R044A-AC.ML,€R044B-FL.ML,€ÌR052A-AC.ML,€ÌÌòòRule€€32:óóÐ	 ”* ÐR032A-AC.ML,€ÌÌòòRule€€33:óóÐ	"z- ÐR036A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€ÌÌòòRule€€34:óóÐ	é#`0 ÐR027A-AC.ML,€R027B-AC.ML,€R027C-FL.ML,€R031A-AC.ML,€R031B-FL.ML,€R034B-AC.ML,€ÌÌòòRule€€35:óóÐ	Ï%F 3 ÐR002A-FL.ML,€R003A-FL.ML,€R005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006A-AC.ML,€ÌR006B-FL.ML,€R006C-FL.ML,€R007A-AC.ML,€R008A-AC.ML,€R010A-AC.ML,€R010B-FL.ML,€ÌR011A-AC.ML,€R011B-FL.ML,€R011C-FL.ML,€R011D-FL.ML,€R011E-FL.ML,€R012A-AC.ML,€ÌR012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€R013B-FL.ML,€R014A-AC.ML,€R015A-AC.ML,€ÌR015B-FL.ML,€R015C-FL.ML,€R016A-AC.ML,€R016B-AC.ML,€R017A-AC.ML,€R017B-FL.ML,€ÌR017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€ÌR017I-FL.ML,€R017J-FL.ML,€R017K-FL.ML,€R018A-AC.ML,€R019A-AC.ML,€R019B-AC.ML,€ÌR019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€ÌR021A-AC.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R024A-AC.ML,€R025A-AC.ML,€ÌR025B-FL.ML,€R026B-FL.ML,€R027A-AC.ML,€R027B-AC.ML,€R027C-FL.ML,€R027D-FL.ML,€ÌR028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R028D-FL.ML,€R029A-AC.ML,€R029B-AC.ML,€ÌR029C-FL.ML,€R029D-FL.ML,€R030A-AC.ML,€R031A-AC.ML,€R031B-FL.ML,€R031C-FL.ML,€ÌR034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R035A-AC.ML,€R036A-AC.ML,€R038A-AC.ML,€ÌR039A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€ÌR045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R048A-AC.ML,€R049A-AC.ML,€ÌR049B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€R100A-FL.ML,€ÌÐ	‘0+D ÐòòRule€€36:óóÐ	‰ ÐR015A-AC.ML,€R015C-FL.ML,€R016A-AC.ML,€R027D-FL.ML,€R031A-AC.ML,€R034A-AC.ML,€ÌR034C-AC.ML,€R036A-AC.ML,€R044B-FL.ML,€ÌÌòòRule€€37:óóÐ	ˆ ÐR012A-AC.ML,€R012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€R021B-FL.ML,€ÌÌòòRule€€38:óóÐ	÷	n ÐR008A-AC.ML,€R017G-AC.ML,€R017H-FL.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€ÌR027D-FL.ML,€R031A-AC.ML,€R034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R036A-AC.ML,€ÌR038A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€ÌR045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€ÌÌòòRule€€39:óóÐ	Ã
:
 ÐR020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R027D-FL.ML,€R039A-AC.ML,€ÌÌòòRule€€40:óóÐ	© 
 ÐR008A-AC.ML,€R038A-AC.ML,€R041A-AC.ML,€R044B-FL.ML,€R045A-AC.ML,€R045B-FL.ML,€ÌÌòòRule€€41:óóÐ	 ÐR008A-AC.ML,€R017G-AC.ML,€R017H-FL.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€ÌR027D-FL.ML,€R031A-AC.ML,€R034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R036A-AC.ML,€ÌR038A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€ÌR045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€ÌÌòòRule€€42:óóÐ	[Ò ÐR002A-FL.ML,€R003A-FL.ML,€R005A-AC.ML,€R005B-FL.ML,€R005C-FL.ML,€R006A-AC.ML,€ÌR006B-FL.ML,€R006C-FL.ML,€R007A-AC.ML,€R008A-AC.ML,€R010A-AC.ML,€R010B-FL.ML,€ÌR011A-AC.ML,€R011B-FL.ML,€R011C-FL.ML,€R011D-FL.ML,€R011E-FL.ML,€R012A-AC.ML,€ÌR012B-FL.ML,€R012C-FL.ML,€R013A-AC.ML,€R013B-FL.ML,€R014A-AC.ML,€R015A-AC.ML,€ÌR015B-FL.ML,€R015C-FL.ML,€R016A-AC.ML,€R016B-AC.ML,€R017A-AC.ML,€R017B-FL.ML,€ÌR017C-AC.ML,€R017D-AC.ML,€R017E-FL.ML,€R017F-FL.ML,€R017G-AC.ML,€R017H-FL.ML,€ÌR017I-FL.ML,€R017J-FL.ML,€R017K-FL.ML,€R018A-AC.ML,€R019A-AC.ML,€R019B-AC.ML,€ÌR019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€ÌR021A-AC.ML,€R022A-AC.ML,€R022B-AC.ML,€R022C-FL.ML,€R024A-AC.ML,€R025A-AC.ML,€ÌR025B-FL.ML,€R026B-FL.ML,€R027A-AC.ML,€R027B-AC.ML,€R027C-FL.ML,€R027D-FL.ML,€ÌR028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R028D-FL.ML,€R029A-AC.ML,€R029B-AC.ML,€ÌR029C-FL.ML,€R029D-FL.ML,€R030A-AC.ML,€R031A-AC.ML,€R031B-FL.ML,€R031C-FL.ML,€ÌR034A-AC.ML,€R034B-AC.ML,€R034C-AC.ML,€R035A-AC.ML,€R036A-AC.ML,€R038A-AC.ML,€ÌR039A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€ÌR045A-AC.ML,€R045B-FL.ML,€R046A-AC.ML,€R046B-FL.ML,€R048A-AC.ML,€R049A-AC.ML,€ÌR049B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€R100A-FL.ML,€ÌÌòòRule€€43:óóÐ	¿ 6+ ÐR020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R027D-FL.ML,€R031A-AC.ML,€R031B-FL.ML,€ÌR036A-AC.ML,€R041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€ÌÌòòRule€€44:óóÐ	G#¾/ ÐR021B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€ÌÌòòRule€€45:óóÐ	-%¤2 ÐR002A-FL.ML,€R003A-FL.ML,€R011C-FL.ML,€R017A-AC.ML,€R017J-FL.ML,€R017K-FL.ML,€ÌR018A-AC.ML,€R026A-FL.ML,€R028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R029A-AC.ML,€ÌR029D-FL.ML,€R030A-AC.ML,€R031A-AC.ML,€R043B-FL.ML,€R045A-AC.ML,€R045B-FL.ML,€ÌR046B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€46:óóÐ	ù(p#8 ÐR039A-AC.ML,€R046A-AC.ML,€R046B-FL.ML,€ÌÌòòRule€€47:óóÐ	ß*V%; ÐR002A-FL.ML,€R003A-FL.ML,€R011D-FL.ML,€R011E-FL.ML,€R016B-AC.ML,€R017A-AC.ML,€ÌR017J-FL.ML,€R017K-FL.ML,€R028A-AC.ML,€R028B-AC.ML,€R029A-AC.ML,€R029B-AC.ML,€ÌR031B-FL.ML,€R031C-FL.ML,€R049A-AC.ML,€R049B-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€ÌR052A-AC.ML,€ÌÌòòRule€€48:óóÐ	«.")A ÐR002A-FL.ML,€R003A-FL.ML,€R011A-AC.ML,€R011B-FL.ML,€R019A-AC.ML,€R028A-AC.ML,€ÌR028B-AC.ML,€R029A-AC.ML,€R030A-AC.ML,€R031A-AC.ML,€R032A-AC.ML,€R041A-AC.ML,€ÌÐ		‘0+D ÐR043A-AC.ML,€R043B-FL.ML,€R048A-AC.ML,€R049A-AC.ML,€R049B-FL.ML,€R050A-AC.ML,€ÌR050B-FL.ML,€ÌÌòòRule€€49:óóÐ	oæ ÐR002A-FL.ML,€R003A-FL.ML,€R011A-AC.ML,€R011B-FL.ML,€R011C-FL.ML,€R014A-AC.ML,€ÌR018A-AC.ML,€R019A-AC.ML,€R019B-AC.ML,€R019C-FL.ML,€R019D-AC.ML,€R020A-AC.ML,€ÌR020B-FL.ML,€R020C-FL.ML,€R020D-AC.ML,€R021A-AC.ML,€R021B-FL.ML,€R025B-FL.ML,€ÌR026A-FL.ML,€R028A-AC.ML,€R028B-AC.ML,€R028C-AC.ML,€R028D-FL.ML,€R029A-AC.ML,€ÌR029B-AC.ML,€R029D-FL.ML,€R029E-AC.ML,€R030A-AC.ML,€R031A-AC.ML,€R032A-AC.ML,€ÌR041A-AC.ML,€R043A-AC.ML,€R043B-FL.ML,€R044A-AC.ML,€R044B-FL.ML,€R045A-AC.ML,€ÌR045B-FL.ML,€R046B-FL.ML,€R048A-AC.ML,€R049A-AC.ML,€R049B-FL.ML,€R050A-AC.ML,€ÌR050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€50:óóÐ	Ã
:
 ÐR002A-FL.ML,€R003A-FL.ML,€R011A-AC.ML,€R011E-FL.ML,€R017A-AC.ML,€R017K-FL.ML,€ÌR019C-FL.ML,€R028B-AC.ML,€R050A-AC.ML,€R050B-FL.ML,€R052A-AC.ML,€ÌÌòòRule€€51:óóÐ	KÂ
 ÐR011A-AC.ML,€R020A-AC.ML,€R020B-FL.ML,€R020C-FL.ML,€R050A-AC.ML,€R050B-FL.ML,€ÌÌòòRule€€52:óóÐ	1¨ ÐR002A-FL.ML,€R003A-FL.ML,€R011A-AC.ML,€R011B-FL.ML,€R019A-AC.ML,€R028A-AC.ML,€ÌR028B-AC.ML,€R029A-AC.ML,€R030A-AC.ML,€R031A-AC.ML,€R032A-AC.ML,€R041A-AC.ML,€ÌR043A-AC.ML,€R043B-FL.ML,€R048A-AC.ML,€R049A-AC.ML,€R049B-FL.ML,€ÌÌÔ#†2ÂHN
ÂÂMÂfƜ#ÔÔ#†2%'Î%
Â2ÂHN§œ#ÔÌÐ		H¿ ÐòòÔ‡2»Pt»%2%'ÎÔB.€Test€results€from€four€SML€implementationsóóÔ#†2%'Î%»2»PtÃí#ÔÐ	‰ Ðß8€-()
°°xd8ßÐ	Á8 ÐÌÌÌÌThe€test€suite€was€used€on€the€following€SML€implementationsÌÌà0º	àEdinburgh€Standard€ML,€Version€4.1.0,€December€13,€1991€usingÏEDML3864€V044Ð
º	ö!º	ö! ÐÌà0º	àMicro€ML€of€Umea,€Version€0.1,€September€24,€1991Ð
º	ö!º	ö! ÐÌà0º	àMoscow€SML€by€Sergei€Romanenko,€Version€0.04b,€August€1994Ð
º	ö!º	ö! ÐÌà0º	àMoscow€SML€by€Sergei€Romanenko,€Version€1.00,€August€1994Ð
º	ö!º	ö! ÐÌà0º	àStandard€ML€of€New€Jersey,€Version€0.93,€February€15,€1993Ð
º	ö!º	ö! ÐÌà0º	àStandard€ML€of€New€Jersey,€Version€0.93,€port€no.€2€of€May€1994,€forÏOS/2.€Ð
º	ö!º	ö! ÐÌThe€results€of€the€testing€of€these€SML€implementations€can€be€seen€below.€TheÏlist€of€programs€that€were€elaborated€(and€evaluated)€with€results€different€thanÏthose€expected€contains€both€AC€and€FL€programs.€AC€programs€appear€in€theÏlist€if€they€did€not€elaborate€correctly.€FL€programs€appear€in€the€list€if€they€didÏindeed€elaborate€even€though€they€should€not.€The€same€is€true€for€the€list€ofÏprograms€that€elaborated€differently€than€expected€causing€cryptic€errorÏmessages.€However,€the€test€suite€programs€listed€in€this€category€elaboratedÏdifferently€than€expected€causing€a€cryptic€error€message.€An€example€of€aÏcryptic€error€message€is:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡TÂfÂ
Â2ÂHNÔCan't€unify:€int*boolÐ	—"  ÐWith:€€€€€€€€int*bool*realÌÌIn€expression:€val€z€=€(12,(true,3.3))€:€int*bool*real;ÌÔ#†2ÂHN
ÂÂTÂfÑó#ÔÔ#†2%'Î%
Â2ÂHN²ó#ÔÌImplying€that€Ô‡2ÂHN
Â%2%'ÎÔÔ‡YÂfÂ
Â2ÂHNÔ(true,3.3)Ô#†2ÂHN
ÂÂYÂfâô#ÔÔ#†2%'Î%
Â2ÂHNÃô#Ԁhas€type€bool.Ð	&ƒ % ÐÌÌòòEdinburgh€Standard€ML,€Version€4.1.0,€December€13,€1991óóÐ	Ó(J#( ÐÌThe€following€programs€were€elaborated€differently€than€expected:ÌÌÒ4@X@X@X@bö!bö!4ÒÔ‡2ÂHN
Â%2%'ÎÔÔ‡NÂfÂ
Â2ÂHNÔD005A„AC.MLÐ	Œ,', ÐD005B„FL.MLÌD005C„FL.MLÌÌM001A„AC.MLÌR002A„FL.MLÌÐ	X0Ï*2 ÐR003A„FL.MLÌR011C„FL.MLÌR011D„FL.MLÌR011E„FL.MLÌR017J„FL.MLÌR017K„FL.MLÌÐ	X0Ï*8 ÐR021b„FL.MLÌR031C„FL.MLÌR038A„AC.MLÌR100A„FL.MLÌÌS002A„FL.MLÌÐ	X0Ï*> ÐS002B„FL.MLÌS002C„FL.MLÌS002F„FL.MLÌÔ#†2ÂHN
ÂÂNÂf`ö#ÔÔ#†2%'Î%
Â2ÂHNAö#ÔñR
ñÐ
r.é(A ÐñR
ñÐ
r.é(A ÐÒAbö!bö!@X@X@X@bE
öAÒòòMicro€ML€of€Umea,€Version€0.1,€September€24,€1991óóÐ	‰ ÐÌNote€that€Micro€ML€of€Umea€does€not€support€records.€All€programs€listed€belowÏas€failing€because€of€the€use€of€records€are€marked€with€an€asterisk€(*).€WhenÏcompiling€the€test€programs,€constructors€were€shown€in€another€order€thanÏthey€appeared€in€the€files.€An€example€of€a€file,€where€the€order€was€changed€isÏR029A„AC.ML.ÌÌThe€following€programs€were€elaborated€differently€than€expected:ÌÌÒ4@X@X@X@bö!bö!4ÒÔ‡2ÂHN
Â%2%'ÎÔÔ‡OÂfÂ
Â2ÂHNÔD001A„AC.MLÐ	ÐG	
 ÐD002A„AC.MLÌD004A„AC.MLÌD005A„AC.MLÌD005B„FL.MLÌD005C„FL.MLÌÌM001A„AC.ML€*Ð	>µ
 ÐM001B„FL.ML€*ÌM003A„FL.MLÌÌR011C„FL.MLÌR011D„FL.MLÌR011E„FL.MLÌR017D„AC.MLÌR017G„AC.MLÐ	>µ
 ÐR017H„FL.MLÌR017J„FL.MLÌR017K„FL.MLÌR019C„FL.MLÌR020B„FL.MLÌR024A„AC.MLÌR032A„AC.MLÌR034B„AC.MLÐ	>µ
 ÐR038A„AC.ML€*ÌÌS002F„FL.MLÌS002G„FL.MLÌÔ#†2ÂHN
ÂÂOÂf ú#ÔÔ#†2%'Î%
Â2ÂHNú#ÔñR
ñÐ
XÏ# ÐñR
ñÐ
XÏ# ÐÒAbö!bö!@X@X@X@bEMúAÒThe€following€programs€were€elaborated€differently€than€expected€causingÏcryptic€error€messages:ÌÌÒ4@X@X@X@bö!bö!4ÒÔ‡2ÂHN
Â%2%'ÎÔÔ‡PÂfÂ
Â2ÂHNÔD006C„FL.MLÐ	›& ÐD006D„FL.MLÌD006E„FL.MLÌÌR002A„FL.MLÌR003A„FL.MLÌR005A„AC.ML€*ÌR005B„FL.ML€*Ð		€- ÐR005C„FL.ML€*ÌR008A„AC.ML€*ÌR010B„FL.ML€*ÌR031B„FL.MLÌR031C„FL.MLÌR041A„AC.ML€*ÌR043A„AC.ML€*ÌR043B„FL.ML€*Ð		€4 ÐR044A„AC.ML€*ÌR044B„FL.ML€*ÌR045A„AC.ML€*ÌR045B„FL.ML€*ÌR046A„AC.ML€*ÌR046B„FL.ML€*ÌR048A„AC.ML€*ÌR049A„AC.ML€*Ð		€; ÐR049B„FL.ML€*ÌR052A„AC.ML€*ÌR100A„FL.MLÌÌS001B„FL.ML€*ÌS001C„FL.ML€*ÌS001D„FL.ML€*ÌÔ#†2ÂHN
ÂÂPÂf¶ý#ÔÔ#†2%'Î%
Â2ÂHN—ý#ÔñR
ñÐ
	€B ÐñR
ñÐ
	€B ÐÒAbö!bö!@X@X@X@bEcýAÒÌòòMoscow€SML€by€Sergei€Romanenko,€Version€0.04b,€August€1994óóÐ	ÐGC ÐÌThe€following€programs€failed:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡QÂfÂ
Â2ÂHNÔR027B„AC.MLÔ#†2ÂHN
ÂÂQÂf#ÔÔ#†2%'Î%
Â2ÂHNá#ÔÐ	‰"G ÐÌThe€following€programs€caused€a€cryptic€error€messages:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡RÂfÂ
Â2ÂHNÔR005C„FL.MLÐ	ò%i K ÐR011B„FL.MLÌÔ#†2ÂHN
ÂÂRÂfÞ#ÔÔ#†2%'Î%
Â2ÂHN¿#ÔÌÌòòMoscow€SML€by€Sergei€Romanenko,€Version€1.00,€August€1994óóÐ	)‡#O ÐÌThe€following€program€caused€a€cryptic€error€message:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡SÂfÂ
Â2ÂHNÔR011B„FL.MLÔ#†2ÂHN
ÂÂSÂf#ÔÔ#†2%'Î%
Â2ÂHNý#ÔÐ	É,@'S ÐÌÐ		X.Ï(U ÐòòStandard€ML€of€New€Jersey,€Version€0.93,€February€15,€1993óóÐ	‰ ÐÌThe€following€program€was€not€evaluated€correctly:ÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡`ÂfÂ
Â2ÂHNÔD001A„AC.MLÐ	B	¹ ÐÔ#†2ÂHN
ÂÂ`Âf`#ÔÔ#†2%'Î%
Â2ÂHNA#ÔÌIn€the€following€declarationÌÌÔ‡2ÂHN
Â%2%'ÎÔÔ‡aÂfÂ
Â2ÂHNÔlocalÐ	«" Ѐ€exception€A;̀€exception€B€=€A;Ìiǹ€val€test5€=€1€=€(case€B€of€A€=>€1€|€B€=>€2€|€_€=>€3);Ìend;ÌÔ#†a%Tý%ÂaÂf#ÔÔ#†2%'Î%%a%Tý##ÔÌtest5€was€evaluated€to€false.€The€reason€is€that€the€compiler€did€not€match€theÏexception€B€with€the€exception€A.€This€does€not€comply€with€rule€139€[page€54].ÏHowever,€this€rule€is€part€of€the€dynamic€semantics€for€the€Core€and€it€is€notÏtested€thoroughly€in€this€test€suite.ÌÌÌòòStandard€ML€of€New€Jersey,€Version€0.93,€port€no.€2€of€May€1994,€OS/2óóÐ	òi ÐÌThis€compiler€behaved€exactly€like€the€UNIX€version€of€SML€of€New€Jersey.ÌÌ

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