Inter-OfficeMemorandumToCedarInterestDateOctober12,1982FromPaulRovnerLocationPaloAltoSubjectTheCedarRuntimeTypeSystemOrganizationPARC/CSLXEROXFiledon:[Indigo]<Cedar>Documentation>RTTypes.tiogaINTRODUCTIONTheCedarruntimetypesystemprovidesproceduresforexaminingarbitraryCedarvaluesandTYPEsatruntimeandforcreatingnewvaluesandmodifyingvariables.Usingitsinterfaces,onecanwriteaprogramthatdealswithanygivenCedarvalueorTYPEwithoutanticipatingthespecificTYPEwhentheprogramiswritten.Thenaturalclientforsuchfeaturesinaprogrammingsystemthatemploystypecheckingatcompiletimeisthedebugger.TheprimarymotivationforthecurrentimplementationwastoprovideafoundationfortheCedardebugger,basedontheconceptsoftheCedarAbstractMachineforinterpretingvaluesandtypes.ThekeyconceptsoftheCedarAbstractMachineforthepurposeofthismemoarethatatypecarrieswithitasetofoperationsandthatavariablecarrieswithititstype.Foramorecompletetreatmentoftheseandrelatedissues,see,on[Ivy],<Lampson>CedarAM.press,<Morris>SAM.pressand<Rovner>RTT>AMFundamentals.press.Thecurrentimplementationistooslowtobeusedeffectivelybyclientprogramsasasubstitutefortruepolymorphisminthelanguage,butissuitableforexaminingandchangingvariablesinteractivelywiththeCedardebugger.Itisourintentiontoimprovetheimplementation(butretainthespiritofitsdefinition)whenthelanguageispreparedtodealadequatelywithpolymorphism.Weexpectthatitwillthenbemorenaturalforrun-of-the-millCedarprogramstomakeuseoftheseorsimilarfacilities.TheimplementationoftheruntimetypesystemisincludedintheCedarbootfiles.TheinterfacesreferencedinthismemoareRTBasic,RTTBridge,RTTRemoteBridge,RTTypesandRTSymbols.TheseareexportedbyRTT.bcd,whichisacomponentofCedarCore.bcd.Allfilesthatconstitutetheruntimetypesystemareaccessiblevia[Indigo]<Cedar>Top>Runtime.df.1.0ConceptsandPerspectiveCedarisastrongly-typedlanguage.Everyvariable(includingonesthatareimmutableaftercompile-time)hasanassociatedbundleofinformationthatcanbeusedtodeterminethemeaningofthebitsofitsvalue.IntheCedarAbstractMachineformulation,thisbundleiscalledaType.EachTypecorrespondstoaCedarTYPE,andisrepresentedatruntimeasaninstanceofRTBasic.Type(formoredetailabouttheCedarruntimesystemsee[Indigo]<Cedar>Documentation>Runtime.tioga).FortheCedartypesystem,itisconvenienttocategorizeTypesbywhatwecalltheirClass.Forexample,thisisusefulfordecidinghowtodisplayavalueofagivenType.1���pÓÆÔaÔÓ≠ qÓÆÔ_trÓnÔ_tÓÜqÓ#ÔÔ_trÓ+ØÔ_tÓ0˝Ó3:qÓÆÔ\˘rÓnÔ\˘ÓìqÓ#ÔÔ\˘rÓ+ØÔ\˘Ó.…qÓÆÔZ~rÓnÔZ~ÓFÓ^Ó!Ó$£qÓ+ØÔZ~rÓ3oÔZ~sÓ{ÔRÓrÓÆÔIÓLÓÃ*ÓÆÔDÓoÔAõÓMÓlÓ©ÓøÓ#@Ó(÷ Ó/„Ó2&Ó8⁄Ó>ÖÓB£ÓFÿÓoÔ?ÛÓ@Ó¯ÓNÓ%Ó ÇÓ%ÿÓ(ÂÓ-3Ó0 Ó6¿ Ó<ÚÓAÓC ÓoÔ>LÓ(Ó¿ÓK�ÓÅÓÓ!¯Ó%ÉÓ(´Ó+XÓ/Ó3?Ó6ˆÓ8∆Ó=�ÓBÓoÔ<•ÓœÓπÓÊÓõÓ ˙Ó&âÓ'ıÓoÔ:*ÓfÓ8ÓÓtÓ ≈Ó&Ó'›�Ó)& Ó1ÿÓ6rÓ9`Ó>ÏÓBÓGˆÓoÔ8ÇÓ∫ÓÙÓsÓÁÓ"\Ó%HÓ*í Ó1ãÓ3›Ó6PÓ;. ÓE!ÓG‡ÓoÔ6€Ó£�Óˆ Ó&ÓçÓ"Ó&WÓ,·Ó0ÏÓ3Ó5§Ó;iÓ=KÓ?‘ÓDÓoÔ54Ó Ó]Ó›Ó#Ó%¬ÓoÔ2πÓFÓ€ÓuÓ-ÓãÓ"¢Ó(Ó-ÀÓ0Ó2eÓ7ßÓ9_Ó;ˇÓ@7ÓBâÓEV�ÓFÓoÔ1Ó¥ÓπÓ˘�Ó ÓÓ∏ Ó#PÓ%ÚÓ(™�Ó)æÓ.flÓ3$Ó6)Ó7iÓ9.Ó<ÄÓ?�Ó@)ÓCßÓoÔ/jÓøÓëÓ4Ó"Ó'±Ó-Ó0…Ó3ÈÓ8ãÓoÔ-√ÓÀÓÉ!ÓoÔ+HÓ<Ó˙ Ó ÕÓ"-Ó$åÓ'•Ó)HÓ+-Ó.^ Ó4ÍÓ6€Ó:êÓ@óÓB:�ÓCX ÓoÔ)†Ó…Ó…ÓÓ”Ó"OÓ(äÓ+(Ó,∞Ó1„Ó4=Ó;Ó=€ÓC‘ÓoÔ'˘ÓAÓkÓ⁄Ó!Ó'sÓ(˙Ó*uÓ-Ó2¸Ó4∫Ó:7Ó<¶ ÓFîÓoÔ&RÓßÓSÓ'Ó,ÓS Ó%cÓ)dÓ,Ó2!Ó3ŸÓ9˜Ó;ÚÓ?7 ÓFtÓoÔ$™ÓÊÓlÓπÓ"ÑÓ#÷Ó&~Ó)†Ó+çÓ/Ó3ÃÓ6Ó?gÓC|ÓoÔ#ÓÓ“ÓGÓ�ÓâÓMÓ"“ ÓoÔ àÓ# Ó›ÓrÓ≠Ó$¿Ó'´Ó,Ó-IÓ2ÀÓ4UÓ6êÓ:ÑÓ=êÓ@±ÓCe ÓoÔ‡ ÓflÓ9ÓÜÓ!jÓ$iÓ* Ó3<Ó@/ÓFÿÓoÔ9 Ó;Ó2ÓzÓ#+Ó%Ó+EÓ/HÓ0®�Ó1«Ó8‰Ó:í ÓDYÓF°ÓoÔíÓ= ÓÓfiÓ Ó#%Ó'†Ó)Ù Ó04Ó2qÓÆÔÓÍÓËÓ† ÓoÔúÓ¥ÓM�Ó£ Ó›Ó&(Ó*KÓ/Æ Ó6iÓ9≈Ó<¿Ó?AÓFSÓoÔÙÓÓ9Ón Ó$ Ó) Ó+ Ó2⁄Ó5ÓÓ8æÓ:ÙÓ>uÓ@hÓG/ÓoÔMÓ.ÓÓëÓXÓ6Ó 5Ó$\Ó&PÓ(’Ó-Ó2±Ó8áÓ@èÓCVÓH#ÓoÔ¶Óg�tÓíÔ¶�ÓyÔ¶rÓÔ¶�ÓÙÔ¶tÓhÔ¶�ÓOÔ¶rÓ rÔ¶�Ó! Ô¶ Ó(Ó)√�Ó*ÓÓ/Ó3çÓ6FÓ7≤ Ó?Ó@∑ÓEÔÓGûÓoÔ˛ÓôuÓ/Ô˛�ÓÔ˛tÓNÔ˛�Ó4Ô˛rÓ"3Ô˛�Ó"¨Ô˛Ó%∆Ó*6Ó.fiÓ3ùÓ6ŸÓ;ŒÓA‚ÓG:ÓoÔW,ÓoÔ‹Ó+ÓõÓƒÓ‰Ó »Ó"/Ó#´ Ó*∑Ó,v Ó2ÛÓ7Ó9Ó<äÓ>¬ÓA]tÓDµÔ‹�ÓE»Ô‹rÓH≥Ô‹�ÓoÔ 5ÓÓÏÓçÓ˘Ó Ó"NÓ'fiÓ*‚Ó,ëÓ1C�Ó2mÓ6Ó7–�Ó8˙Ó<ÆvÓ)»Ôˆ�ˇ������� ��������TVm$‹������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������EveryCedarvariablethatcanaffecttheoutcomeofacomputationcanbeviewedasacomponentoftheCedarAbstractMachine.WecalladescriptionofsuchaCedarvariableaTypedVariable.WeusethetermStatusforthemutabilitypropertyofTypedVariables.ATypedVariabledescribes:theTypeofitsvaluewhetherthevalueisaconstant(i.e.immutableaftercompile-time)ifso,theactualbitsofthevalue(statusconst)ifnot,theaddressesofthememorycellsthatcontainthebitsofthevalueandwhetherthevariablemaybechanged(statusreadOnlyormutable)Notethatframes(bothlocalandglobal)areviewedasTypedVariablesintheCedarAbstractMachine.Asyouwillseebelow,theimplementationprovidesproceduresfordealingwithframesandcontrollinks.Aclientoftheruntimetypesystemapproachesitviathe"Bridge"interfaces(RTTBridgeandRTTRemoteBridge)fromeitheralocalorremoteCedarworldwithoneofthefollowing:aREFaLONGPOINTERandaRTBasic.TypeanATOMaROPEaPrincOps.FrameHandleaPrincOps.GlobalFrameHandleaPROCANYRETURNSANYanERRORANYRETURNSANYForREFs,LONGPOINTERs,FrameHandlesandGlobalFrameHandles,proceduresexistforcreatingTypedVariablesthatdescribethereferents.ForATOMs,ROPEs,PROCsandERRORs,proceduresexistforcreatingTypedVariablesthathavethespecifiedvalues.ProceduresoftheRTTypesinterfaceallowonetoexamineandmodifycomponentsofTypedVariablesandexaminethestructureofCedar/MesaTYPEs.Generally,theRTTypesproceduresareuniformlyapplicablebothtoTV'sforelementsofthelocalworldandTV'sforelementsofaremoteworld.Theonlyexceptiontothisinthecurrentimplementationistherestrictionthatassignment(viaRTTypes.Assign)ofaREF-containingvaluetoaTVinaremoteworldisnotallowed.2.0TheClassesofTypesType:TYPE=RTBasic.Type;RTTypes.Class:TYPE={definition,--e.g.TypeClass[CODE[T]]whereT:TYPE=...--cardinal,longCardinal,integer,longInteger,real,character,--basicatom,rope,list,ref,pointer,longPointer,descriptor,longDescriptor,basePointer,relativePointer--address--procedure,signal,error,program,port,--transfer--enumerated,subrange,union,sequence,record,structure,array,2��rÓoÔb)ÓAÓ5ÓGÓÒÓ!XÓ$ˇÓ';Ó,±Ó.F�Ó/K Ó7!Ó9àÓ;UÓ?ÿÓAa�ÓBgÓoÔ`ÇÓ≈Ó¡ÓuÓåÓ&0Ó)WÓ,�Ó.E Ó5ÙÓ8IÓ<�Ó=›ÓBíÓHe�tÓoÔ^⁄rÓËÔ^⁄�Ó”Ô^⁄ÓlÓÓ"_tÓ%¥Ô^⁄�Ó&±Ô^⁄rÓ*ıÔ^⁄�Ó+nÔ^⁄Ó-AÓ/Ø Ó6WÓ<�Ó=»ÓH�ÓoÔ]3Óæ Ó1ÔZ¨ÓêÓÓ“Ó¨Ó1ÔX$ÓÓfiÓàÓÛ�Ó Ó%åÓ(AÓ/'Ó2cÓÚÔUùÓÎÓJÓMÓ ÔÓ"®Ó%Ó(±tÓ-ÔUù�Ó-›ÔUùrÓ0ˇÔUù�ÓÚÔSÓìÓÈÓ ÛÓ"£Ó$˘Ó*]Ó-cÓ0(Ó4˛Ó7TÓ9ÌÓ;úÓ=ÚÓAìÓDAÓÚÔQnÓRÓàÓåÓ!}Ó&ÏtÓ+<ÔQn�Ó+·ÔQnrÓ2QÔQn�Ó3 ÔQn�tÓ4ÔQn�Ó5_ÔQnrÓ9ˆÔQn�ÓoÔNÁÓ˜Ó◊ÓcÓ*Ó!ÇÓ$KÓ(˘Ó+^Ó0Ó1÷ Ó;ªÓ=zÓ?ÎÓDÓoÔM?ÓYÓKÓ„ÓpÓ§Ó"ÎÓ%, Ó.ÏÓ4\ Ó;DÓ=cÓBÓEÓoÔKòÓ&ÓŸÓoÔI�ÓÓÀÓåÓÛÓ1Ó!IÓ%à Ó,˚Ó.YÓ0ûÓ3Ó8› Ó? ÓFÿÓoÔGiÓÿÓ?Ó#+�Ó$UÓ'õÓ)_Ó.Ó2Ó6 Ó9%Ó;—Ó=äÓ?È Ó1ÔD‚�vÓZÔD‚�ÓXÔD‚rÓ1ÔBZ�vÓZÔBZ�Ó,ÔBZÓ’rÓwÔBZ�ÓÔBZÓ!/�wÓ"XÔBZ�Ó##ÔBZvÓ&ˆÔBZ�Ó'”ÔBZÓ1Ô?”ÓMrÓ1Ô=L�vÓZÔ=L�ÓXÔ=LÓ1Ô:ƒ�Ó{Ó1Ô8=�Ó{rÓ1Ô5µ�vÓZÔ5µ�ÓBÔ5µÓ’Ó<Ó"aÓ1Ô3.ÓMÓƒÓ+Ó$PrÓoÔ0¶vÓ)Ô0¶�Ó&Ô0¶rÓflÔ0¶�ÓcÔ0¶�vÓNÔ0¶�ÓÔ0¶Ó◊rÓ ÙÔ0¶�Ó!xÔ0¶�vÓ"cÔ0¶�Ó#5Ô0¶ rÓ*ÙÔ0¶�Ó,Ô0¶vÓ.–Ô0¶�Ó/‰Ô0¶rÓ;èÔ0¶�Ó<Ô0¶�Ó<˛ ÓDÓGRÓoÔ.ˇÓá Ó<Ó ÎÓ&/Ó(p Ó.XvÓ0ÂÔ.ˇ�Ó1◊Ô.ˇÓ6kÓ;√rÓ?πÔ.ˇ�Ó@£Ô.ˇvÓC;Ô.ˇ�ÓD"Ô.ˇrÓH.Ô.ˇ�ÓH≤Ô.ˇ�ÓoÔ-X ÓÜÓ«ÓÓ![ Ó+?Ó.Ó1tÓ3„Ó9ØÓ>E ÓEfÓG/ÓoÔ+∞ÓEÓ√ÓDÓ »Ó"OÓ'†Ó*/Ó.≈ Ó6JÓ7€ ÓAáÓDÓoÔ* ÓœÓåÓE Ó!2ÓoÔ'Ç Ó0ÓôÓü Ó%ØÓ(Ó.Ä Ó5Ó8\Ó:Ó=cÓ?©ÓEmÓG/ÓoÔ%⁄Ó≥ÓùÓRÓñÓ—Ó$äÓ&A�Ó'iÓ,Ó0OÓ3%Ó6=Ó<pÓ>Ó@ºÓBhÓD≈ÓoÔ$3 Ó{ÓÓ† Ó$DÓ'@ Ó.~Ó1bÓ<HÓ>.�Ó?Ñ ÓoÔ"åÓÓ«�ÓÒÓZÓ�Ó2ÓŸÓ#≈Ó%1Ó'¶ÓÆÔ ÓÍÓ¬ÓÓ8tÓoÔ}ÓÒÓ9�uÓÔ}�ÓÔ}tÓ;Ô}�Ó "Ô}uÓoÔıtÓ‘Ôı�ÓÁÔıÓœÓ�ÓÛÔH�Ó˚Ôö xÓOÔö�Ó»Ôö�Ó∆ÓFÓ*sÓ.VÓ0;Ó4�Ó6drtÓÄÔÌ�Ó\ÔÌÓ_Ó"ÄÓ(ôÓ1 Ó5ë rÓ=ôÔÌ�Ó>ÔÌtÓÄÔ?�Ó\Ô?Ó ÓNÓÜÓ ìÓ&∂Ó/¸ Ó8rrtÓâÔí�ÓÖÔí ÓHrÓ&˘Ôí�Ó'rÔí tÓÄÔ‰�ÓgÔ‰ÓÎÓ3Ó#÷Ó*·rÓ.’Ô‰�Ó/NÔ‰ tÓÄÔ7�Ó\Ô7 ÓytÓ¸Ô â�Ó„Ô âÓ˜Ó˚Ô‹Óº Ó˚Ô .vÓ)»Ôˆ��������é��������TVm$È��������������������������������������������������������������������������������������������������������������������������������������������������������������countedZone,uncountedZone,nil,--e.g.TypeClass[TVType[NIL]]unspecified,process,type,opaque,any,--e.g.TypeClass[Range[CODE[REFANY]]]globalFrame,localFrame--frame--};3.0MutabilitystatusofTypedVariablesRTTypes.Status:TYPE={mutable,readOnly,const};4.0The"Bridge"interfaces:ConversionbetweenCedarvaluesandTypedVariables4.1TypesandconstantsdefinedinRTTRemoteBridgeWorld:TYPE=WorldVM.World;RemoteRef:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,ref:WorldVM.Address];nilRemoteRef:RemoteRef=[world:NIL,ref:0,worldIncarnation:0];RemotePointer:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,ptr:WorldVM.Address];nilRemotePointer:RemotePointer=[world:NIL,ptr:0,worldIncarnation:0];RemoteFrameHandle:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,fh:WorldVM.ShortAddress];nilRemoteFrameHandle:RemoteFrameHandle=[world:NIL,fh:0,worldIncarnation:0];RemoteGlobalFrameHandle:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,gfh:WorldVM.ShortAddress];nilRemoteGlobalFrameHandle:RemoteGlobalFrameHandle=[world:NIL,gfh:0,worldIncarnation:0];RemotePD:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,pd:UNSPECIFIED];nilRemotePD:RemotePD=[world:NIL,pd:0,worldIncarnation:0];RemoteSED:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,sed:UNSPECIFIED];nilRemoteSED:RemoteSED=[world:NIL,sed:0,worldIncarnation:0];4.2HowtoacquireaTypedVariablefromaCedarvalue3��tÓ˚Ôb>Ó_ Ó˚Ô`çrÓ¬Ô`ç�Ó;Ô`ç�Ó9Ó¬tÓÄÔ^›�ÓgÔ^› Ó˚Ô],Ó˚Ô[|Ó˚ÔYÃÓ˚ÔXxÓÔX�ÓîÔX�ÓëÓÓ+nrtÓÄÔVk�Ó\ÔVk Óv rÓ$zÔVk�Ó$ÛÔVktÓÛÔTªrÓÆÔR.ÓÍ ÓØÓÜÓ? uÓoÔO°tÓ‘ÔO°�Ó—ÔO°ÓÓ«�Ó ´Ó(8Ó/«rÓÆÔMÓÍÓ¬Óì Ó6 Ó%~Ó*ÏÓ/Ó32Ó5Í ÓoÔJÜÓ¨Ó∏ÓpÓcÓ#cÓ%yÓ1ÔG˘rÓÂÔG˘�qÓ‚ÔG˘�ÓõÔG˘rÓ9ÔG˘�ÓÔG˘ yÓ1ÔElrÓ”ÔEl�qÓ–ÔEl�ÓâÔElrÓ'ÔEl�qÓÔEl�Ó‡ÔElrÓ#>ÔCºÓ(Ó,U�Ó-‚�Ó#√ÔBqÓ.˜ÔB�Ó/∞ÔBÓ2ÕrÓ9ÔB�Ó#√Ô@[Ó&cÓµÔ>´ÓÓ#c�Ó%HqÓ*Ô>´�Ó*¯Ô>´rÓ,Ô>´�Ó,¯Ô>´Ó/ôÓ1%Ó<ZyÓ1Ô<rÓ%Ô<�qÓ#Ô<�Ó‹Ô<rÓzÔ<�qÓ!_Ô<�Ó"3Ô<rÓ#>Ô:nÓ(Ó,U�Ó-‚�Ó#√Ô8ΩqÓ.˜Ô8Ω�Ó/∞Ô8ΩÓ2ÕrÓ9Ô8Ω�Ó#√Ô7 Ó&zÓµÔ5\Ó6Ó'±�Ó)ñqÓ._Ô5\�Ó/GÔ5\rÓ0jÔ5\�Ó1GÔ5\Ó3˛Ó5ãÓ@¿yÓ1Ô2œrÓ⁄Ô2œ�qÓ◊Ô2œ�Ó êÔ2œrÓ#.Ô2œ�qÓ%Ô2œ�Ó%ÁÔ2œrÓ#>Ô1Ó(Ó,U�Ó-‚�Ó#√Ô/oqÓ.˜Ô/o�Ó/∞Ô/oÓ2ÕrÓ9Ô/o�Ó#√Ô-æÓ&ÓµÔ,Ó"#Ó!-Ô*^�Ó#qÓ'⁄Ô*^�Ó(√Ô*^rÓ)ÊÔ*^�Ó*¬Ô*^Ó-�Ó.çÓ9¬yÓ1Ô'—rÓ"–Ô'—�qÓ#ÕÔ'—�Ó$ÜÔ'—rÓ'$Ô'—�qÓ) Ô'—�Ó)›Ô'—rÓ#>Ô& Ó(Ó,U�Ó-‚�Ó#√Ô$pqÓ.˜Ô$p�Ó/∞Ô$pÓ2ÕrÓ9Ô$p�Ó#√Ô"øÓ&±ÓµÔ!Ó&;Ó!-Ô_�Ó#qÓ'⁄Ô_�Ó(√Ô_rÓ)ÊÔ_�Ó*¬Ô_Ó-±Ó/>Ó:ryÓ1Ô“rÓºÔ“�qÓ∫Ô“�ÓsÔ“rÓÔ“�qÓˆÔ“�Ó Ô“rÓ#>Ô!Ó(Ó,U�Ó-‚�Ó#√ÔqqÓ.˜Ôq�Ó/∞ÔqÓ2ÕrÓ9Ôq�Ó#√Ô¡qÓ&NÔ¡�Ó'4Ô¡ rÓ.Ô¡�Ó.vÔ¡�ÓµÔÓÿÓ"ı�Ó$⁄qÓ)¢Ô�Ó*äÔrÓ+≠Ô�Ó,äÔÓ/Ó0¢Ó;◊yÓ1ÔÉrÓôÔÉ�qÓñÔÉ�ÓPÔÉrÓÓÔÉ�qÓ”ÔÉ�Ó ßÔÉrÓ#>Ô”Ó(Ó,U�Ó-‚�Ó#√Ô"qÓ.˜Ô"�Ó/∞Ô"Ó2ÕrÓ9Ô"�Ó#√ÔrqÓ&±Ôr�Ó'ñÔr rÓ.uÔr�Ó.ŸÔr�ÓµÔ¬ÓµÓ$Æ�Ó&ìqÓ+[Ô¬�Ó,DÔ¬rÓ-gÔ¬�Ó.CÔ¬Ó12Ó2øÓ=ÛÓoÔ 5Ó¨Ó Ó∑Óó�Ó¿Ó&Ó)v�Ó*†Ó.∏vÓ)»Ô��������`��������TVm$ ������������������������������������������������������������������������������������������������������������������������������������������(a)FromalocalCedarREF(RTTBridge)TVForReferent:PROC[ref:REFANY,status:Status_mutable]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheCedarvaluethatisthereferentofref.TVForReadOnlyReferent:PROC[ref:REFREADONLYANY]RETURNS[TypedVariable];ThisyieldsaTypedVariable,statusreadOnly,thatrepresentstheCedarvaluethatisthereferentofref.(b)FromaremoteCedarREF(RTTRemoteBridge)TVForRemoteReferent:PROC[remoteRef:RTTRemoteBridge.RemoteRef,status:Status_mutable]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheCedarvaluethatisthereferentofref.(c)FromotherlocalCedarvalues(RTTBridge)TVForATOM:PROC[atom:ATOM]RETURNS[TypedVariable--atom--];TVForROPE:PROC[rope:Rope.ROPE]RETURNS[TypedVariable--rope--];--useTVToNametogettheROPEbackTVForProc:PROC[proc:PROCANYRETURNSANY]RETURNS[TypedVariable--procedure--];TVForSignal:PROC[signal:ERRORANYRETURNSANY]RETURNS[TypedVariable--signal,error--];TheseyieldTypedVariablesthatdescribetheindicatedprocedureorsignaldescriptor.TheClassofsuchaTypedVariableiseitherprocedure,signal,orerror.(NOTE:TheoperationsbelowandtheTypedVariablestheyproduceareunsafe)TVForPointerReferent:PROC[ptr:LONGPOINTER,type:Type,status:Status_mutable]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentsthereferentofthespecifiedpointer.ThespecifiedTypeisacceptedasthevariable'sType.TVForFHReferent:PROC[fh:PrincOps.FrameHandle,evalStack:WordSequence_NIL]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheindicatedlocalframe.ThestructureofnestedblocksandtheirlocalvariableswillbedeterminedfromthePCthatisstoredintheframe.BEWARE.ThisisUNSAFE.ReferencetothisTypedVariableafterthespecifiedframeisnolongervalidwillleadtomanifestationsofstrangeandwondrousphenomena(RTTypesfunctionsthatdealwithframevaluesvalidatethemwhereverpossible,butaccidentscanstillhappen.)TVForGFHReferent:PROC[gfh:PrincOps.GlobalFrameHandle]4���rÓ1Ôb!ÓMÓ"�ÓLÓíÓ ™Ó$ tÓÚÔ_õ Ó Ó([Ó+¶Ó/≈Ó5DÓ:v�Ó<ÓÔ]ÓrÓ¥Ô[iÓ√Ó£�Ó¡Ó)Ó+» Ó2?Ó4ìÓ8üÓ<>Ó?Ó@aÓBµÓG÷tÓ¥ÔY¬rÓ√ÔY¬�tÓÚÔW<Ó'tÓ/OÓ2öÓ;-ÓÔUèrÓ¥ÔS ÓÔÓ¸�Ó G Ó*tÓ.ÔS �Ó.≠ÔS rÓ4öÔS �Ó5òÔS Ó8á Ó?+ÓA¨ÓEÂÓ¥ÔQbÓÇÓÓÓMÓ#ytÓ%2ÔQb�Ó%◊ÔQbrÓ'BÔQb�Ó1ÔN›ÓoÓD�ÓmÓÓ"-Ó%âtÓÚÔLWÓ%ÛuÓ3BÔLW�Ó4ÔLWtÓ>ÔLW�Ó?ÔLWÓ'ÔJ´Ó,˛Ó20�Ó3ºÓÔH˛rÓ¥ÔFxÓ√Ó£�Ó¡Ó)Ó+» Ó2?Ó4ìÓ8üÓ<>Ó?Ó@aÓBµÓG÷tÓ¥ÔD—rÓ√ÔD—�Ó1ÔBLÓCÓÓ∑Ó˝Ó#Ó'C tÓÚÔ?∆ Óê Ó'ÏÓÔ>ÓÚÔ;î Ó6 Ó'E ÓÔ9ÁrxÓÔ8:�ÓñÔ8:�ÓîÓÙÓ%jÓ'Ó)OÓ+õÓ0tÓÚÔ5µ Óî Ó&£Ó+\Ó/Ó6mÓÔ4$ÓÚÔ1ÉÓ±Ó(»Ó.ZÓ2�Ó9kÓÔ/÷Ó1qrÓ¥Ô-QÓ%Ó˚ Ó*=Ó-{Ó3MÓ6Ó<ÓCqÓE§Ó¥Ô+© ÓßÓ!ØÓ%qÓ'YÓ*∫�Ó,Ó5ëÓ7,vÓ;HÔ+©�Ó<Ô+©rÓAÈÔ+©�vÓBıÔ+©�ÓC•Ô+©rÓFøÔ+©�ÓGÀÔ+©vÓ¥Ô*rÓÿÔ*�ÓÚÔ'|ÓnÓF Ó#ÙÓ(Ó*∏Ó- Ó6ÎÓ9˚Ó?TÓA®tÓÚÔ$˜Ó~Ô#JÓdÓ"¸Ó*\Ó.ÜÓ3Ó8àÓ=∫�Ó?EÓÔ!ùrÓ¥ÔÓ€Ó”�Ó Ó)eÓ,@ Ó2œÓ5;Ó:tÓ<:Ó>¶ÓDnÓ¥ÔqÓåÓ HÓ#–Ó%<Ó*„Ó,ëÓ.Ò Ó5tÓÚÔÎÓ"nuÓ)ØÔÎ�Ó*zÔÎtÓ/cÔÎ�Ó0JÔÎ Ó$hÔ> Ó,zÓ7Ò�Ó9}ÓÔírÓ¥ÔÓ¨Ów�ÓÓ(¨Ó+Y Ó1∫Ó3¯Ó9 Ó<ÔÓAÓC“Ó¥ÔeÓsÓ…Ó"Ó$—Ó(Ó+jÓ1+Ó3‹Ó5” Ó="Ó@êÓBıÓEOÓH#Ó¥ÔæÓøÓUÓúÓ#“Ó*æÓ-¿Ó/Ó5∂Ó< Ó=∑Ó@@Ó¥ÔÓ˚ÓgÓ#.Ó'1Ó(®Ó*ªÓ/ Ó2}Ó54Ó8:Ó9Ù ÓCÓD—Ó¥ÔoÓKÓ ÄÓ'’Ó.+Ó4 Ó6∑Ó9èÓ<äÓ@`ÓDnÓ¥Ô»Ó=Ó!/Ó&…Ó)JÓ/3Ó1æÓ4_tÓÚÔ BÓ#ÅuÓ+ûÔ B�Ó,hÔ BtÓ1RÔ B�Ó2dÔ BvÓ)»Ôˆ��������A��������TVm$⁄������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheindicatedglobalframe.(d)FromotherremoteCedarvalues(RTTRemoteBridge)TVForRemotePointerReferent:PROC[remotePointer:RemotePointer,type:Type,status:Status_mutable]RETURNS[TypedVariable];TVForRemoteFHReferent:PROC[remoteFrameHandle:RemoteFrameHandle,evalStack:WordSequence_NIL]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheindicatedlocalframe.ThestructureofnestedblocksandtheirlocalvariableswillbedeterminedfromthePCthatisstoredintheframe.BEWARE.ThisisUNSAFE.ReferencetothisTypedVariableafterthespecifiedframeisnolongervalidwillleadtomanifestationsofstrangeandwondrousphenomena(RTTypesfunctionsthatdealwithframevaluesvalidatethemwhereverpossible,butaccidentscanstillhappen.)TVForRemoteGFHReferent:PROC[remoteGlobalFrameHandle:RemoteGlobalFrameHandle]RETURNS[TypedVariable];TVForRemotePD:PROC[remotePD:RemotePD]RETURNS[TypedVariable--procedure--];TVForRemoteSED:PROC[remoteSED:RemoteSED]RETURNS[TypedVariable--signal,error--];4.3HowtoacquirealocalCedarvaluefromaTypedVariable(RTTBridge)RefFromTV:PROC[tv:TypedVariable]RETURNS[REFANY];Ifpossible,thisreturnstheREFthatpointstothevaluerepresentedbytv.ThisraisesInternalTViftvisembedded,NotMutableifTVStatus[tv]#mutable.SomeRefFromTV:PROC[tv:TypedVariable]RETURNS[REFANY];LikeRefFromTV,butcreatesacopyofthespecifiedvalueincollectiblestorageandreturnsaREFtothecopyinsteadofraisinganerror.ReadOnlyRefFromTV:PROC[tv:TypedVariable]RETURNS[REFREADONLYANY];Ifpossible,thisreturnsaREADONLYREFthatpointstothevaluerepresentedbytv.ThisraisesInternalTViftvisembedded.PointerFromTV:PROC[tv:TypedVariable]RETURNS[LONGPOINTER];TVToATOM:PROC[tv:TypedVariable]RETURNS[ATOM];TVToProc:PROC[tv:TypedVariable]RETURNS[PROCANYRETURNSANY];TVToSignal:PROC[tv:TypedVariable]RETURNS[ERRORANYRETURNSANY];ThesereturnthevaluerepresentedbythespecifiedTypedVariable.IftvisNIL,they5��tÓÔb rÓ¥Ô_õÓŒÓ∫�Ó„Ó)2Ó, Ó2ÉÓ4‚Ó:÷Ó>˘Ó1Ô]ÓoÓDÓ„Ó äÓ$¢Ó(–tÓÚÔZêÓ+0Ó;J Ó+üÔX„Ó/…Ó+üÔW7Ó1Ó6P�Ó7‹ÓÔUäÓÚÔSÓ5*ÓÚÔQ^Ó)ÔO± Ó1Ó<ï�Ó> ÓÔNrÓ¥ÔKÓ¨Ów�ÓÓ(¨Ó+Y Ó1∫Ó3¯Ó9 Ó<ÔÓAÓC“Ó¥ÔIÿÓsÓ…Ó"Ó$—Ó(Ó+jÓ1+Ó3‹Ó5” Ó="Ó@êÓBıÓEOÓH#Ó¥ÔH0ÓøÓUÓúÓ#“Ó*æÓ-¿Ó/Ó5∂Ó< Ó=∑Ó@@Ó¥ÔFâÓ˚ÓgÓ#.Ó'1Ó(®Ó*ªÓ/ Ó2}Ó54Ó8:Ó9Ù ÓCÓD—Ó¥ÔD‚ÓKÓ ÄÓ'’Ó.+Ó4 Ó6∑Ó9èÓ<äÓ@`ÓDnÓ¥ÔC:Ó=Ó!/Ó&…Ó)JÓ/3Ó1æÓ4_tÓÚÔ@µÓ•Ô?Ó4¨Ó Ô=\ÓÚÔ:÷ Ó!æ Ó.™Ó Ô9*$ÓÚÔ6§Ó"óÓ0\ Ó Ô4¯Ó0irÓoÔ/ÌÓ¨Ó Ó∑Óó�Ó¿Ó Ó$Ó'»Ó+/�Ó,YÓ5® tÓ1Ô-g Ó5Ó"a Ó-¯ Ó8√rÓÚÔ*‚ÓaÓÁÓuÓ#Ó%aÓ(©Ó+dÓ/tÓ1Ó3[Ó6Ò Ó>HtÓ@0Ô*‚�Ó@øÔ*‚�rÓAêÔ*‚�ÓB…Ô*‚ÓE–ÓÚÔ): ÓtÓoÔ):�Ó˛Ô):�rÓSÔ):�Ó∂Ô):�Ó æÓ'— Ó/£Ó1Ó8Á�Ó:ÃtÓ1Ô&µ Ó3Ó&_ Ó1ˆ Ó<¡rÓÚÔ$/Ó- Ó sÓ#�Ó'í�Ó(»Ó,%Ó-ÍÓ0UÓ6Ó9“Ó;ã ÓBÓFÿÓÚÔ"àÓ•�ÓœÓ+ÓŸÓ"9Ó%ãÓ*>Ó+˜Ó0fÓ2WtÓ1Ô Ó")Ó)U ÓPÔV Ó!Ó)ØrÓÚÔ—ÓÖÓ/Ó·Ó#§�Ó$fiÓ-±Ó1Ó3¸Ó80Ó9ÓÓ<^Ó@ ÓGìtÓÚÔ)rÓRÔ)�Ó≤Ô)ÓÃÓã Ó%ßtÓ'Ô)�Ó'óÔ)�rÓ(ÏÔ)�Ó)OÔ)�Ó*XtÓ1Ô§ ÓˇÓ%+ Ó0¬Ó<⁄Ó1ÔÓ*Ó"U Ó-Ï Ó1ÔôÓ.Ó!Y ÓPÔÏÓ"âÓ&0Ó-öÓ1Ôg ÓKÓ"v ÓPÔ∫Ó#bÓ'Ó.srÓÚÔ 5ÓıÓ$ÓÑÓ#. Ó*ôÓ,ïÓ.ıÓ4≤ Ó>fivÓ@`Ô 5�Ó@ŒÔ 5�rÓBÔ 5�ÓBfÔ 5�vÓCpÔ 5�ÓDmÔ 5rÓE¢Ô 5�ÓFÔ 5vÓ)»Ô˝�ˇ�������P��������TVm$ö������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������returnnullsignalorprocedurevalues.FHFromTV:PROC[tv:TypedVariable]RETURNS[PrincOps.FrameHandle];GFHFromTV:PROC[tv:TypedVariable]RETURNS[PrincOps.GlobalFrameHandle];ThesereturnanappropriatekindofpointertothevaluerepresentedbythespecifiedTypedVariable.TVToLC:PROC[tv:TypedVariable]RETURNS[LONGCARDINAL];TVToInteger:PROC[tv:TypedVariable]RETURNS[INTEGER];TVToLI:PROC[tv:TypedVariable]RETURNS[LONGINTEGER];TVToCardinal:PROC[tv:TypedVariable]RETURNS[CARDINAL];TVToCharacter:PROC[tv:TypedVariable]RETURNS[CHARACTER];TVToReal:PROC[tv:TypedVariable]RETURNS[REAL];TheseproceduresPUNthespecifiedvalueintothespecifiedCedarbasicTYPE.TheyraiseRangeFaultifthesizeofthespecifiedTypedVariableisinappropriate.4.4HowtoacquirearemoteCedarvaluefromaTypedVariable(RTTRemoteBridge)RemoteRefFromTV:PROC[tv:TypedVariable]RETURNS[RemoteRef];RemotePointerFromTV:PROC[tv:TypedVariable]RETURNS[RemotePointer];RemoteFHFromTV:PROC[tv:TypedVariable]RETURNS[RemoteFrameHandle];RemoteGFHFromTV:PROC[tv:TypedVariable]RETURNS[RemoteGlobalFrameHandle];TVToRemotePD:PROC[tv:TypedVariable--procedure,program--]RETURNS[RemotePD];TVToRemoteSED:PROC[tv:TypedVariable]RETURNS[RemoteSED];4.5RemotenesspropertiesofTypedVariables(RTTRemoteBridge)IsRemote:PROC[tv:TypedVariable]RETURNS[BOOLEAN];GetWorld:PROC[tv:TypedVariable]RETURNS[World];GetWorldIncarnation:PROC[tv:TypedVariable]RETURNS[LONGCARDINAL];4.6RTTBridgefacilitiesofinterestonlytoWizardsThefollowingstuffisforusebyWizards.Ifyouneedit,chancesaregoodyou'redoingsomethingwrongWordSequence:TYPE=REFWordSequenceRecord;WordSequenceRecord:TYPE=RECORD[s:SEQUENCEsize:NATOFWORD];TVToWordSequence:PROC[tv:TypedVariable]RETURNS[s:WordSequence];ThisisusefulforTypedVariableswithsize>Size[CODE[LONGINTEGER]].ItwillproducewhatamountstoanuninterpretedbitstringforanyTypedVariable.Loophole:PROC[tv:TypedVariable,type:Type,tag:TypedVariable_NIL]RETURNS[TypedVariable];OctalRead:PROC[tv:TypedVariable,offset:INT]6���rÓÚÔb)Ó!Ó˘Ó‰Ó!®Ó(+tÓ1Ô_§Ó±Ó!› Ó-tuÓ4ÙÔ_§�Ó5æÔ_§tÓ:®Ô_§�Ó;éÔ_§Ó1Ô] ÓƒÓ"Ô ÓPÔ[tuÓ–Ô[t�ÓõÔ[ttÓ#ÑÔ[t�Ó$óÔ[trÓÚÔXÔÓ¯Ó*Ó Ó&ÇÓ)∂Ó+sÓ0?Ó1ÒÓ4UÓ8 Ó?pÓApÓC”ÓÚÔWH tÓ1ÔT√Ó√ÓÓ Ó+ÖÓ7ù Ó1ÔSÓ˚Ó#' Ó.æÓ1ÔQkÓ)ÓT Ó*ÎÓ7Ó1ÔOøÓÏÓ$ Ó/ØÓ1ÔN ÓÓ%A Ó0ÿÓ1ÔLgÓÓ!- Ó,ƒ rÓÚÔI‚ÓÌ ÓÌÓ#~Ó%÷Ó+ãÓ/-Ó1ˇÓ4WÓ:Ó>ÓAâÓFÓÚÔH;Ó- Ó¢Ó!Ó#bÓ&Ó'«Ó*&Ó/‚Ó91Ó:ù ÓoÔE∂Ó¨Ó Ó∑Óó�Ó¿Ó!hÓ%ÄÓ))Ó,ê�Ó-∫Ó7 tÓ1ÔC1Ó ©Ó'‘ Ó3kÓ1Ô@≠Ó#NÓ*U Ó5«Ó1Ô>(Ó+xÓ=¯ Ó1Ô<ÅÓ1Ô9¸Ó!8Ó(c ÓHÔ8P!Ó1Ô5ÃÓWÓ%ÉÓ9Ö ÓHÔ4Ó1Ô1õ Ó0Ó&\ Ó1ÛrÓoÔ/Ó¨ ÓL ÓƒÓ!} Ó+PtÓ1Ô,íÓÎÓ! Ó,ÆÓ1Ô* ÓÎÓ! Ó,ÆÓ1Ô'âÓ%Ó/ Ó=vÓ1Ô%· rÓoÔ#]Ó¨ÓÛ ÓVÓ Ó$ÓÓ(Ó)∑Ó1Ô ÿÓÓ?ÓÇÓ �Ó"OÓ$÷Ó&„tÓ+∂Ô ÿ�rÓ,≈Ô ÿ�Ó-IÔ ÿ�Ó.YÓ1"Ó4ëÓ6QÓ;zÓ=flÓAcÓEÆÓ1Ô1Ó‘tÓ9Ô¨Ó(Ó#q�Ó%TÓ(üÓ9Ô�ÓÔTÓ!K�Ó#/Ó+¬Ó4Ó7ıÓ;zÓ>Ó1ÔœÓ!«Ó(Ú ÓPÔ# Óû rÓÚÔüÓ'ÓÆÓ‚Ó : Ó*)Ó-_Ó<e ÓEQÓF‰ÓÚÔ˜ÓKÓ®Ó#8Ó$ÊÓ&◊Ó/wÓ1îÓ5jÓ7ßÓ:H tÓ1ÔsÓ¥Ó ‡ Ó,VÓ0ÄÓ5Ó8FÓCC�ÓDœÓHÔ«Ó1Ô B Ó¶Ó!— Ó-HÓ2zvÓ)»Ô˝��������w��������TVm$/����������������������������������������RETURNS[CARDINAL];BytePC:PROC[tv:TypedVariable--localFrame--]RETURNS[PrincOps.BytePC];IsStarted:PROC[tv:TypedVariable--globalFrame--]RETURNS[BOOL];IsCopied:PROC[tv:TypedVariable--globalFrame--]RETURNS[BOOL];TVHead:PROC[tv:TypedVariable]RETURNS[TVHeadType];TVHeadType:TYPE={constant,remoteConstant,reference,remoteReference,copiedRemoteObject,pointer,remotePointer,gfh,remoteGFH,fh,remoteFH,notTVRecord};SetTVFromLC:PROC[tv:TypedVariable,lc:LONGCARDINAL];Thisfunctioncanchangethevalueofamutablenon-ref-containingTypedVariable.ARangeFaultcanoccuriftheentirelongcardinalvaluewillnotfitinthefielddescribedbytv.SetTVFromLI:PROC[tv:TypedVariable,li:LONGINTEGER];ThisisthesameasSetTVFromLC,exceptthatitusessignedoperationstodeterminewhetherthevalueisinrange.5.0BasicoperationsonTypedVariablesfromtheRTTypesinterfaceTVType:PROC[tv:TypedVariable]RETURNS[Type];TVStatus:PROC[tv:TypedVariable]RETURNS[Status];TVSize:PROC[tv:TypedVariable]RETURNS[words:INT];Thisreturnsthenumberofwordsofstorageforthevaluedescribedbytv.Copy:PROC[tv:TypedVariable]RETURNS[TypedVariable];Assign:PROC[lhs,rhs:TypedVariable];IflhsismutableandthetypesoftheTypedVariablesareequivalent,thevalueofrhsbecomesthevalueoflhs.TVEq:PROC[tv1,tv2:TypedVariable]RETURNS[BOOL];ThisistrueifbothTypedVariablespointtoexactlythesamebits;i.e.,ifassignmenttoonewouldchangethevalueseenbytheother.TVEqual:PROC[tv1,tv2:TypedVariable]RETURNS[BOOL];Thisistrueifbothvalues,takenasuninterpretedbitstrings,arethesamelengthandareequal.6.0BasicoperationsonTypesfromtheRTTypesinterfaceSize:PROC[type:Type,length:CARDINAL--sequenceonly,numberofelements--_0]RETURNS[words:CARDINAL--maxforunions--];SizereturnsthenumberofwordsofstorageforavalueofthespecifiedType.Seetherecord,union,andsequencesectionsforspecialinterpretations.New:PROC[type:Type,status:Status_mutable,world:WorldVM.World_WorldVM.LocalWorld[],tag:TV_NIL]7��tÓHÔb Ó1Ô_úÓåÓ∑ÓHÔ]Ó1Ô[l Ó÷Ó!Ó7à Ó1ÔXËÓ}Ó ©Ó7s Ó1ÔVcÓ∏Ó„ Ó+zÓ9ÔSfl ÓEÓ!ç�Ó‰ÔR3 Ó ‡Ó-u Ó5|ÓhÔPáÓ)ãÓ/Ø Ó:˙ÓhÔN€ Ó"wÓ$ÈÓ,ÊÓ1ÔLWÓÓ$D Ó/∫Ó2Ó6ô rÓÚÔI“Ó#Ó¥Ó WÓ%Ó'åÓ+MÓ-�Ó.^Ó3ÕvÓ?|ÔI“�Ó@YÔI“rÓH≥ÔI“�ÓÚÔH+�vÓ≤ÔH+�ÓØÔH+rÓ∆ÔH+�ÓaÔH+Ó!ÖÓ%yÓ' Ó)†Ó-¿Ó1 Ó6ÉÓ:`Ó=?Ó?ÁÓAÍÓCÃÓF_ÓÚÔFÑÓvÓÔFÑ�ÓáÔFÑ�rÓ7ÔFÑ�tÓ1ÔD�ÓÓ#´ Ó/!Ó0˘Ó5ërÓÚÔA{ÓÓ{Ó‹Ó[vÓ! ÔA{�Ó!ÚÔA{ rÓ* ÔA{�Ó*ÈÔA{Ó/:Ó2 Ó3bÓ6]Ó:≠ ÓA]ÓC ÓÚÔ?‘Ó@Ó†Ó IÓ!µÓ#cÓÆÔ=PÓÍÓ~ Ó+Ó2 Ó%Ó(lÓ*ÃÓ0…tÓoÔ:ÀÓ’Ó Ó(ó ÓoÔ8GÓ˛Ó) Ó)¿ÓoÔ5√Ó\Óà Ó( Ó5rÓ1Ô3>ÓKÓ˛Ó]Ó!äÓ#CÓ'OÓ)Ó-ªÓ/¯Ó2WÓ6Ó<,tÓ>'Ô3>�Ó>∂Ô3>�rÓ?áÔ3>�tÓoÔ0∫ÓÓI Ó&‡ÓoÔ.6ÓQÓBÓ úrÓ1Ô+≤vÓŒÔ+≤�Ó&Ô+≤rÓGÔ+≤�Ó´Ô+≤�vÓŒÔ+≤�Ó¯Ô+≤rÓçÔ+≤�Ó3Ô+≤Ó `Ó"€Ó&äÓ(^vÓ*ŸÔ+≤�Ó+∂Ô+≤rÓ5`Ô+≤�Ó6Ô+≤Ó7œ Ó>ÒÓAkÓE0vÓGÔ+≤�ÓGâÔ+≤rÓ1Ô* ÓÀÓ+Ó‘vÓçÔ* �ÓÂÔ* rÓ!gÔ* �tÓoÔ'ÜÓÓ,Ó{ Ó+Ó2|rÓ1Ô%Ó?ÓüÓwÓÃÓ¸ Ó'ƒÓ+WÓ,˘Ó1äÓ3fiÓ7OÓ:^Ó<ÊÓ>; ÓEAÓF„Ó1Ô#ZÓ_ÓÓgÓ!Ó$*Ó&&Ó(ÖtÓoÔ ÷Ó@Ó]Ó!´ Ó-BÓ4≠rÓ1ÔRÓSÓ∆Ó≤ÓÓ_Ó"ÌÓ&µÓ(kÓ1Ó38Ó7ÚÓ:NÓ<µÓ@:ÓD|ÓG;Ó1Ô™ÓÆÔ&ÓÍÓ~ Ó+Ó2Ó?Ó"¶Ó%Ó+tÓoÔ¢Óx ÓqÓ ÙÓ&rrÓ."Ô¢�Ó.õÔ¢Ó4˝Ó8oÓ=õÓ?T tÓE~Ô¢�ÓFÜÔ¢ÓéÔˆ Ó ÉrÓ(3Ôˆ�Ó(¨ÔˆÓ,)Ó.ftÓ3PÔˆ�Ó3ÍÔˆ�vÓ1ÔqrÓâÔq�Ó ÔqÓYÓ÷Ó" Ó#˜Ó(!Ó)˜Ó.«Ó1"�Ó2iÓ60Ó8Ó:ÑvÓ@]Ôq�ÓA:ÔqrÓCÇÔq�ÓD|ÔqÓG/vÓ1Ô ÓPrÓ÷Ô �Ó|Ô vÓçÔ �Ó>Ô rÓ%PÔ �Ó%‘Ô Ó*qÓ,ÆÓ1*tÓoÔFÓé ÓàÓ*Ô öÓ©Ó!€�Ó#gÓ*ÔÓÓ;Ó'Ù�Ó)Ó*Ô BÓmÓ’�ÓavÓ)»Ôˆ�ˇ�������>��������TVm$ ��������������������������������������������������������������������������������������������������������������������������������RETURNS[TypedVariable];Newcreatesandreturnsaclearedobject.DefaultInitialValue:PROC[type:Type]RETURNS[TypedVariable];DefaultInitialValueisimplementedonlyfortypeswithconstantinitialization.Atpresentitisnotavailableforprocedureparameterandresultrecordtypes;useIndexToDefaultInitialValuetoexamineeachfield.IndexToDefaultInitialValue:PROC[type:Type--recordorstructure--,index:Index]RETURNS[TypedVariable];Returnsthedefaultinitialvaluefortheindex'thfieldoftype.ObviouslynotinallcasesequivalenttoDefaultInitialValue[IndexToType[type,index]].N.B.ThereareatpresentnooperationsforobtainingaTypedescribingadefinitionsmoduleproceduredefinition;oneinsteadnormallyobtainstheTypeofaspecificexportedimplementation.ThedefaultinitialvaluesthatoneobtainsfromthisTypewillbethoseoftheimplementation,whichmaydifferfromthoseoftheimporteddefinition.TypeClass:PROC[type:Type]RETURNS[Class];IsPainted:PROC[type:Type]RETURNS[BOOL];TRUEiftyperepresentsapaintedtype.7.0ApplicableoperationsforeachClassofTypeThissectioncontainsalistforeachClassofTypeoftheoperationsthatareapplicabletoTypedVariablesandTypesofthatClass.YouwillnotethatsomeoperationsareapplicabletomorethanoneClass.AruntimetestismadeforeachoperationtoverifythatitisapplicabletothegivenTypedVariableorType.RTTypes.TypeFaultisraisedifthistestfails.Index:TYPE=NAT;Thisisanumerictypethatisusedforindexinginsomeoftheproceduresbelow.Generally,thevalidindexrangefortheseis[1..n].definitionThisclassappearstoconfusenewusersoftheRTTypesinterface.ATypehasdefinitionasitsclassIFFitwasdefinedasanidentifierthatisequatedtosomeotherType,asinT:TYPE=RECORD[...Forexample,tv:TV_TVForReferent[NEW[T]];...IFTypeClass[TVType[tv]]#definitionTHENERROR;...IFTypeClass[UnderType[TVType[tv]]]#recordTHENERROR;TypeToName:PROC[type:Type,moduleName:REFRope.ROPE_NIL,fileName:REFRope.ROPE_NIL]RETURNS[Rope.ROPE];IfmoduleNameand/orfileNamearesupplied,TypeNameattemptstodiscoverthemoduleandfilenamesforthemoduleinwhichtypewasdefined.Ifthesuppliedtypehasnoname(e.g.,ananonymousprocedureparameter),NILisreturned.Ground:PROC[type:Type]RETURNS[Type];Thispeelsoffonelayerofdefintion.8��tÓáÔb vÓ1Ô_£rÓÅÔ_£�ÓÔ_£ÓÓøÓ!r�Ó"úÓ'ZtÓoÔ]%Ó∆ Ó&øÓ+bvÓ1ÔZßrÓ_ÔZß�Ó√ÔZß�Ó÷ Ó(3Ó+XÓ-†Ó1@Ó4fÓ9‡ÓB¥ÓDªÓ1ÔY�ÓöÓÓ¢Ó!pÓ$¡Ó,WÓ3ÌÓ7∑Ó<ñÓA˘ÓGtÓ1ÔWXrÓ%ƒÔWX�Ó&3ÔWX�Ó'rÓ,ÎÓ0tÓoÔT⁄Ó#| Ó,urÓ0~ÔT⁄�Ó0˜ÔT⁄�Ó1ıÓ6DÓ8 tÓ>4ÔT⁄�Ó?1ÔT⁄ÓDÓéÔS2rÓ1ÔP¥ÓeÓ¡ÓfÓ"OÓ%ıÓ(/vÓ*ãÔP¥�Ó*„ÔP¥rÓ.ÔP¥�Ó.`ÔP¥Ó0Ó3DvÓ4˘ÔP¥�Ó5gÔP¥rÓ7∞ÔP¥�Ó9 ÔP¥Ó?íÓBÓD/ÓFÓ1ÔO ÓflvÓéÔO�ÓãÔO$Ó3rÓ7àÔO�Ó1ÔLèÓßÓ„ÓpÓBÓ#OÓ%è Ó,vÓ.ÌÓ5E�vÓ6®ÔLè�Ó7ÖÔLèrÓ:ãÔLè�Ó;RÔLèÓA]�ÓB¿ Ó1ÔJÁÓ'Ó† Ó$[Ó&˝Ó+ßÓ1mÓ6-vÓ8ÉÔJÁ�Ó9_ÔJÁrÓ<"ÔJÁ�Ó<fiÔJÁ�Ó=“�Ó>ÚÓC”Ó1ÔI@Ó ÓÚÓ$™Ó(•Ó,„Ó/¿Ó2|Ó7TÓ:ÀvÓ=|ÔI@�Ó>XÔI@rÓA5ÔI@�ÓB2ÔI@ÓCÔÓEÓ1ÔGôÓÍÓIÓ ÄÓ$éÓ'íÓ+]Ó.ƒÓ2cÓ4Ó6{Ó<n tÓoÔE Ó Ó ÈÓ%åÓoÔBù Ó5 Ó .Ó$—Ó,;vÓ1Ô@rÓtÔ@�Ó◊Ô@�vÓ’Ô@�ÓCÔ@rÓÔ@�ÓìÔ@Ó!ë�Ó"ªÓ'±ÓÆÔ=°ÓÍ Ó€ ÓâÓ∆Ó!˜Ó%äÓ'CÓoÔ;#ÓΩÓçÓ$�ÓÅÓ ÚÓ#cÓ&«Ó*éÓ,zÓ06Ó2"Ó4µ Ó;óÓ>òÓA ÓG‡ÓoÔ9| ÓNÓÓ )Ó!ÓÓ$»Ó(æÓ+ŸÓ.êÓ1∂Ó4êÓ8. Ó>ËÓAG ÓG‡ÓoÔ7’ÓÓGÓÓ¸�ÓòÓ#flÓ&zÓ'ıÓ+ƒÓ.Ó1QÓ7äÓ9HÓ=CÓ@ ÓAÜÓC ÓoÔ6-ÓÓ}Ó1Ó ÄÓ"DwÓ&$Ô6-�Ó&ÔÔ6-rÓ+�Ô6-�Ó+ÁÔ6-Ó1ÆÓ3Ó7Ó8}Ó;Ó=™tÓoÔ3∞Ó_Ó®�ÓãrÓ1Ô12Ó1ÓÉ�ÓìÓ›Ó”Ó"àÓ#⁄Ó&¸Ó) Ó.´Ó0@Ó3πÓ5YÓ7û Ó>åÓB◊ Ó1Ô/äÓêÓ¯Ó¬ÓçÓ! Ó%SÓ&øxÓoÔ- rÓ1Ô*èÓDÓmÓqÓÓ$Ó'Ó*yÓ,*Ó.ÉÓ4y Ó:n�Ó;ÙÓ?uxÓA„Ô*è�ÓBìÔ*èrÓG·Ô*è�ÓHÜÔ*è�Ó1Ô(ÁÓÓ;ÓÓiÓÓ#Ó$√Ó&≥ Ó,¶Ó/tÓ0‡Ó6Ó7«Ó;ZÓ>˘ÓB⁄ÓDàzÓ‡Ô'?ÓhÓ†�ÓO rÓ1Ô%ñÓ‹zÓÚÔ#ÓRÓ⁄�ÓâÓÚÔ!oÓÚÔ«ÓzÓ*�Ó+∏ Ó4˛Ó96ÓÚÔÓÚÔuÓzÓ3O�Ó4˛Ó:ÊÓ?tÓ1Ô˜ Ó Ó%xÓÔN Ó)UuÓ,°ÔN�Ó-tÔNtÓ/ÌÔN�Ó0ıÔNÓ4l�Ó5¯ÓÔ¶Ó&_uÓ)™Ô¶�Ó*}Ô¶tÓ,ˆÔ¶�Ó-˛Ô¶Ó1u�Ó3ÓPÔ˝uÓ–Ô˝�Ó£Ô˝tÓ!Ô˝�Ó"$Ô˝rÓÚÔvÓàÔ�Ó≤ÔrÓëÔ�Ó 6ÔvÓ$LÔ�Ó$∫ÔrÓ*}Ô�Ó+"ÔÓ,‰vÓ2·Ô�Ó3ΩÔrÓ:QÔ�Ó:˜ÔÓ?ˆÓA∏ÓG/ÓÚÔÿÓÓ‚ÓhÓ#…Ó&#Ó(üÓ-ªÓ/ÖvÓ3∞Ôÿ�Ó4ÔÿrÓ7Ôÿ�Ó8ÔÿÓ9œÓ?‰ÓAÉÓCˇÓÚÔ0ÓÓwÓ}Ó =Ó#òÓ%àÓ,€Ó3^ Ó:≤Ó=ƒÓ?0tÓ1Ô≥Óu Ó!oÓ& rÓÚÔ 5ÓÓäÓºÓ hÓ#œÓ%à vÓ)»Ô��������"��������TVm$ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������UnderType:PUBLICPROC[type:Type]RETURNS[Type];Thisreturnsthefirstunderlyingnon-definitiontype.GroundStar:PUBLICPROC[type:Type]RETURNS[Type];Thisfindsthefirstnon-definitiontype,thenpeelsoffsubrangeorrelativeReflayerstoarriveatthe"ground"Type.cardinal,longCardinal,integer,longInteger,real,characterFirst,Last:PROC[type:Type]RETURNS[TypedVariable];Next:PROC[tv:TypedVariable]RETURNS[TypedVariable];Coerce:PROC[tv:TypedVariable,targetType:Type]RETURNS[TypedVariable];Seetheenumeratedsectionforacompletedescription.Coercionsbetweenintegersandcardinalsandtheirsubrangesaresupported.Nocoercionscurrentlyexistbetweenrealsorcharactersandanyothertypes,norarecoercionsto/fromlongnumerictypessupported,althoughthatwouldbeeasy.list,refRange:PROC[type:Type]RETURNS[Type];Thisreturnsthereferenttypeofthespecifiedreftype.Referent:PROC[ref:TypedVariable]RETURNS[TypedVariable];Thisisthedereferencingoperation.ReferentStatus:PROC[type:Type]RETURNS[Status];ThiswillreturnreadOnlyifthereftypeisREFREADONLY...,mutableotherwise.Coerce:PROC[tv:TypedVariable,targetType:Type]RETURNS[TypedVariable];CoercewillproduceaTypedVariable,statusreadOnly,ifappropriatetypeandrangetestsaresuccessful.ItwillproduceaTypedVariableforaREFANYfromaTypedVariableforsomeexplicitREFtype(i.e.,Widen).ItcanalsoproduceaTypedVariableforanexplicitREFtypefromaTypedVariableforaREFANYwhosecurrentreferentisofanacceptabletype(i.e.,Narrow).pointer,longPointerRange:PROC[type:Type]RETURNS[Type];Thisreturnsthereferenttypeofthespecifiedpointertype.Referent:PROC[ref:TypedVariable]RETURNS[TypedVariable];Thisisthedereferencingoperation.ReferentStatus:PROC[type:Type]RETURNS[Status];ThiswillreturnreadOnlyifthepointertypeis...POINTERTOREADONLY...,mutableotherwise.descriptor,longDescriptorRange:PROC[type:Type]RETURNS[Type];Thisreturnsthereferenttypeofthespecifieddescriptortype.ReferentStatus:PROC[type:Type]RETURNS[Status];9���tÓ1Ôb ÓÓ! Ó*Ó.≥ rÓÚÔ_£ÓÓøÓÓ!˜ Ó(Á Ó1ÙtÓ1Ô]& ÓÇÓ!Ö Ó*~Ó/! rÓÚÔZ©Ó!Ó©ÓÓ! Ó*,Ó-©Ó0‰Ó4wÓ6æÓ<∞Ó>à ÓE§ÓÚÔYÓ°ÓåÓ$ÓÑÓ$ÆxÓoÔVÖÓÓwÓ"PÓ)„Ó,ÚtÓ1ÔTÓáÓõ Ó#îÓ(7Ó1ÔQãÓqÓù Ó)4Ó1ÔOÓUÓÄ Ó*˜ Ó3œÓPÔMfrÓÚÔJÈÓ}xÓ—ÔJÈ�ÓlÔJÈrÓ!�ÔJÈ�Ó!ÖÔJÈÓ%íÓ'√�Ó(·Ó.æÓ6Ó<{xÓAfiÔJÈ�ÓBAÔJÈrÓE€ÔJÈ�ÓFÿÔJÈxÓÚÔIBrÓßÔIB�Ó›ÔIBÓ¬Ó!6Ó'ƒÓ*E Ó1ÛÓ4ÉÓ:∏Ó@√ÓD xÓÚÔGörÓ%ÔGö�Ó/ÔGöxÓÙÔGö�ÓèÔGörÓ[ÔGö�Ó eÔGöÓ#Ó%¿Ó)`Ó-NÓ/ŸÓ2.Ó88Ó={Ó@ñÓE˚ÓÚÔEÛ Ó√Ó!Ó$MÓ(|Ó*lxÓoÔCvÓtÓ1Ô@˘Ó∞ Ó ©Ó%L rÓÚÔ>|ÓÓøÓÓ$KÓ'[Ó)Ó+sÓ1/Ó3VtÓ1Ô;ˇÓrÓ!N Ó,ÂrÓÚÔ9ÇÓÓxÓÿÓ$v tÓ1Ô7Ó! Ó'Ó+ΩrÓÚÔ4àÓÓ∏vÓÊÔ4à�ÓkÔ4àrÓ%;Ô4à�Ó%ûÔ4à�Ó&úÓ(˚Ó+#Ó.3vÓ/ûÔ4à�Ó0úÔ4àÓ2ŸrÓ:ÉÔ4à�Ó:⁄Ô4àvÓ<fÔ4à�Ó=êÔ4àrÓB Ô4à�ÓB≈Ô4àtÓ1Ô2ÓUÓÄ Ó*˜ Ó3œÓPÔ0cvÓÚÔ-ÊrÓÔ-Ê�ÓÔ-ÊÓÀÓ"&�Ó#R Ó,˚Ó0‘Ó76Ó8ò Ó?˙ÓCÓEƒÓÚÔ,>Ó^Ó Ó"¯Ó$ÀÓ'“Ó-á�Ó/ Ó8∏Ó;Q�Ó<◊Ó@èÓD¢ÓHe�ÓÚÔ*óÓëÓ!Ó%Ó*%Ó-—Ó10Ó4éÓ:˛Ó<≈Ó?†ÓBºÓHe�ÓÚÔ(Ó4Ó eÓ"HÓ'Ó*^Ó-aÓ0ª�Ó1ÿÓ;Ó=J�Ó>gÓA∂ÓEaÓÚÔ'HÓºÓËÓ SÓ"Ó#˝ Ó*¨Ó-ºÓ0 xÓoÔ$ÀÓ] tÓ1Ô"NÓ∞ Ó ©Ó%L rÓÚÔ—ÓÓøÓÓ$KÓ'[Ó)Ó+sÓ1/Ó5¯tÓ1ÔTÓrÓ!N Ó,ÂrÓÚÔ◊ÓÓxÓÿÓ$v tÓ1ÔZÓ! Ó'Ó+ΩrÓÚÔ›ÓLÓ7vÓ¶Ô›�Ó *Ô›rÓ&:Ô›�Ó&ùÔ›�Ó'€Ó*zÓ/ÉÓ2“vÓ4~Ô›�Ó4·Ô›Ó6kÓ=MÓ@rÓG¨Ô›�ÓHÔ›vÓÚÔ6rÓñÔ6�ÓQÔ6xÓoÔπ ÓÛ tÓ1Ô<Ó∞ Ó ©Ó%L rÓÚÔøÓÓøÓÓ$KÓ'[Ó)Ó+sÓ1/ Ó7útÓ1Ô BÓ! Ó'Ó+ΩvÓ)»Ô��������M��������TVm$Ò��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ThiswillreturnreadOnlyifthedescriptortypeis...DESCRIPTORFORREADONLY...,mutableotherwise.Apply:PROC[tv:TypedVariable,arg:TypedVariable]RETURNS[TypedVariable];ThisreturnsaTypedVariableforthespecifiedelementofthespecifiedarray.NOTE:Applyfordescriptorsisnotimplementedyet.procedureDomain:PROC[type:Type]RETURNS[Type];Range:PROC[type:Type]RETURNS[Type];TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];StaticParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--proc--];--maybeNILGlobalParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--globalFrame--];signalDomain:PROC[type:Type]RETURNS[Type];Range:PROC[type:Type]RETURNS[Type];TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];GlobalParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--globalFrame--];errorDomain:PROC[type:Type]RETURNS[Type];TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];GlobalParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--globalFrame--];programDomain:PROC[type:Type]RETURNS[Type];Range:PROC[type:Type]RETURNS[Type];TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];portNospecialoperations(yet).enumeratedNameToIndex:PROC[type:Type,name:Rope.ROPE]RETURNS[Index];Therangeofindexis[1..NValues[type]].NameToIndexraisesBadNameIndexToName:PROC[type:Type,index:Index]RETURNS[Rope.ROPE];RaisesBadIndex.TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];First,Last:PROC[type:Type]RETURNS[TypedVariable];Next:PROC[tv:TypedVariable]RETURNS[TypedVariable];NextreturnsNILifthereisnosuccessortotv.NValues:PROC[type:Type]RETURNS[Index];Value:PROC[type:Type,index:Index]RETURNS[TypedVariable];ThisreturnsaTypedVariablefortheindex'thelementoftheenumeratedtype.The10���rÓÚÔb)Ó±ÓvÓ ‘Ôb)�Ó!XÔb)rÓ'ÕÔb)�Ó(1Ôb)�Ó)”Ó,◊ Ó3ËÓ7ùvÓ9≠Ôb)�Ó:Ôb)Ó;ˇ ÓF(ÓÚÔ`ÇrÓúÔ`Ç�ÓÙÔ`ÇvÓÔ`Ç�Ó©Ô`ÇrÓ$#Ô`Ç�Ó$flÔ`ÇtÓ1Ô]˝ÓWÓÉ Ó)˘Ó-S ÓHÔ\QrÓÚÔYÕÓÓ¬�ÓÌÓ'>Ó)|Ó+›Ó1öÓ6”Ó8çÓ:ÓÓ@´ÓDåÓÚÔX%Ó Ó] Ó"NÓ#∫Ó&/ Ó.ÅxÓoÔU°tÓ1ÔSÓñ Ó!èÓ&2 Ó1ÔQqÓ∞ Ó ©Ó%L Ó1ÔO≈Ó›Ó" Ó-†uÓ8∞ÔO≈�Ó9ÑÔO≈tÓ;˝ÔO≈�Ó=ÔO≈Ó1ÔNÓ=Ó#h ÓHÔLmrÓ'BÔLm�Ó'ªÔLmtÓ+…ÔLm�Ó,bÔLm�rÓ-„ÔLm�Ó.]ÔLm�Ó/ZÓ3ÀtÓ1ÔJ¡ÓüÓ#À ÓHÔIrÓ'BÔI�Ó'ªÔI tÓ0¶ÔI�Ó1@ÔI�xÓoÔFêtÓ1ÔDÓñ Ó!èÓ&2 Ó1ÔB`Ó∞ Ó ©Ó%L Ó1Ô@¥Ó›Ó" Ó-†uÓ8∞Ô@¥�Ó9ÑÔ@¥tÓ;˝Ô@¥�Ó=Ô@¥Ó1Ô?ÓüÓ#À ÓHÔ=\rÓ'BÔ=\�Ó'ªÔ=\ tÓ0¶Ô=\�Ó1@Ô=\�xÓoÔ:◊tÓ1Ô8SÓñ Ó!èÓ&2 Ó1Ô6ßÓ›Ó" Ó-†uÓ8∞Ô6ß�Ó9ÑÔ6ßtÓ;˝Ô6ß�Ó=Ô6ßÓ1Ô4˚ÓüÓ#À ÓHÔ3OrÓ'BÔ3O�Ó'ªÔ3O tÓ0¶Ô3O�Ó1@Ô3O�xÓoÔ0 tÓ1Ô.FÓñ Ó!èÓ&2 Ó1Ô,öÓ∞ Ó ©Ó%L Ó1Ô*ÓÓ›Ó" Ó-†uÓ8∞Ô*Ó�Ó9ÑÔ*ÓtÓ;˝Ô*Ó�Ó=Ô*ÓxÓoÔ(irÓ/Ô(iÓíÓ Ó$ªxÓoÔ% tÓ1Ô#aÓÌ Ó%ÊÓ*huÓ/MÔ#a�Ó0 Ô#atÓ2ôÔ#a�Ó3°Ô#aÓ7≤rÓÚÔ ‹Ó ÓïtÓNÔ ‹�ÓºÔ ‹rÓ!∫Ô ‹�Ó"Ô ‹�Ó#&Ó.;�vÓ/Ô ‹�Ó0Ô ‹ rÓ8ÖÔ ‹�Ó9 Ô ‹Ó<DtÓ1ÔXÓÌ Ó%ÊÓ*hÓ/MÓ4^uÓ;fiÔX�Ó<≤ÔXtÓ?+ÔX�Ó@3ÔXrÓÚÔ”Ó6tÓ1ÔOÓ›Ó" Ó-†uÓ8∞ÔO�Ó9ÑÔOtÓ;˝ÔO�Ó=ÔOÓ1ÔÀÓáÓõ Ó#îÓ(7Ó1ÔFÓqÓù Ó)4vÓÚÔ¬rÓcÔ¬�ÓÁÔ¬ÓÓ )Ó!äÓ%Ó&~Ó(ÖÓ.xtÓ0&Ô¬�Ó0µÔ¬�rÓ1ÜÔ¬�tÓ1Ô=Ó Ó" Ó&¨Ó1ÔπÓ7 Ó 0Ó$≤Ó)óÓ.®rÓÚÔ 5ÓÓ€�ÓÓ'oÓ)∫tÓ,'Ô 5�Ó,ïÔ 5rÓ0Ô 5�Ó0hÔ 5Ó20Ó7tÓ9;Ó;® ÓCBÓF∑vÓ)eÔ˝ˇ�������i��������TVm$ rangeofindexis[1..NValues[type]].Coerce:PROC[tv:TypedVariable,targetType:Type]RETURNS[TypedVariable];CoercedetermineswhethertargetTypeisequivalenttoTVType[tv]oroneifitssubranges,andwhetherthecurrentvalueoftvisintargetType'srange.Ifso,itreturnsareadOnlyTypedVariableforacopyoftv'svalue,coercedtothespecifiedtype.Ifnot,itraisesTypeFaultorRangeFault.IsMachineDependent:PROC[type:Type]RETURNS[BOOL];subrangeGround:PROC[type:Type]RETURNS[Type];Thispeelsoffonelayerofsubrange.GroundStar:PUBLICPROC[type:Type]RETURNS[Type];--peels'emalloffThisfindsthefirstnon-subrangetype.InRange:PROC[type:Type,groundTV:TypedVariable]RETURNS[BOOL];First,Last:PROC[type:Type]RETURNS[TypedVariable];RaisesRangeFaultifthespecifiedsubrangeisempty.Next:PROC[tv:TypedVariable]RETURNS[TypedVariable];NextreturnsNILifthereisnosuccessortotv.Coerce:PROC[tv:TypedVariable,targetType:Type]RETURNS[TypedVariable];Seetheenumeratedsectionforacompletedescription.Coercionsbetweenintegersandcardinalsandtheirsubrangesaresupported.Nocoercionscurrentlyexistbetweenrealsorcharactersandanyothertypes,norarecoercionsto/fromlongnumerictypessupported,althoughthatwouldbeeasy.unionIsMachineDependent:PROC[type:Type]RETURNS[BOOL];IndexToType:PROC[type:Type,index:Index]RETURNS[Type];Anupperboundontherangeofindexis[1..NComponents[type]](theremaybefewervariantsthanelementsofthetagtype).IndexToTyperaisesBadIndex.ItreturnstheTypeofthespecifiedvariant.Theresultingrecordtypeappearstocontainallofthecommonfieldsoftheoriginalunion-recordfollowedbyallofthefieldsoftheselectedvariant;itomitsthetagfield.Size[IndexToType[...]]returnsthesizeofthisparticularvariant.NameToIndex:PROC[type:Type,name:Rope.ROPE]RETURNS[Index];Thisreturnsthenameoftheselectedvariantarm.RaisesBadName.IndexToName:PROC[type:Type,index:Index]RETURNS[Rope.ROPE];RaisesBadIndex.Tag:PROC[tv:TypedVariable]RETURNS[TypedVariable--enumerated--];Variant:PROC[tv:TypedVariable]RETURNS[TypedVariable--record--];ThisreturnsaTypedVariableforthecurrentlyselectedvariant,asindicatedbythetag.Theresultingrecordcontainsallofthecommonfieldsoftheoriginalunion-record11��rÓÚÔb!ÓΩtÓvÔb!�Ó„Ôb!rÓ‚Ôb!�ÓEÔb!�Ó MÓ+c�tÓ1Ô_£ÓUÓÄ Ó*˜ Ó3œÓPÔ]˙vÓÚÔ[}rÓ]Ô[}�Ó$Ô[}Ó!§vÓ'2Ô[}�Ó'†Ô[}rÓ.⁄Ô[}�Ó/=Ô[}�Ó0Ü Ó7uvÓ9dÔ[}�Ó:AÔ[}rÓA#Ô[}�ÓAfiÔ[}�ÓC'ÓFÓG¥ÓÚÔY’ Ó÷Ó∏Ó$1Ó&ªÓ+ØÓ/ÉvÓ1gÔY’�Ó1’ÔY’�rÓ34ÔY’�Ó3òÔY’�Ó4ÀvÓ6§ÔY’�Ó7ÔY’ rÓ?JÔY’�Ó?ŒÔY’ÓDEÓEÚÓH9ÓÚÔX.Ó≥�vÓÍÔX.�ÓnÔX.Ó!LrÓ+ÔX.�Ó+èÔX.Ó-`�Ó.óÓ1˜vÓ3ΩÔX.�Ó4,ÔX.rÓ6ÅÔX.�Ó72ÔX.Ó:ëÓ?™ÓAfÓC”ÓÚÔVáÓfiÓ`Ó-ÓÉvÓ"BÔVá�Ó#ÔVárÓ)ÔVá�Ó)◊ÔVá�vÓ*flÔVá�Ó+›ÔVárÓ2<ÔVá�tÓ1ÔT Ó"U Ó+NÓ/Ò xÓoÔQãtÓ1ÔOÓu Ó!oÓ& rÓÚÔLêÓÓäÓºÓ hÓ#œÓ%àtÓ1ÔJ ÓÇÓ!Ö Ó*~Ó/! rÓ<AÔJ�Ó<ªÔJ�Ó=∏ÓA6ÓC‚ÓE“ÓÚÔGïÓÓÓfiÓ ∑Ó)UtÓ1ÔEÓ Ó" Ó&ãÓ.| Ó: Ó1ÔBöÓáÓõ Ó#îÓ(7rÓÚÔ@Ó6 Ó ´Ó"Ó$kÓ*'Ó0Ó1ptÓ1Ô=ûÓqÓù Ó)4vÓÚÔ;!rÓcÔ;!�ÓÁÔ;!ÓÓ )Ó!äÓ%Ó&~Ó(ÖÓ.xtÓ0&Ô;!�Ó0µÔ;!�rÓ1ÜÔ;!�tÓ1Ô8£ÓUÓÄ Ó*˜ Ó3œÓPÔ6˙rÓÚÔ4}Ó}xÓ—Ô4}�ÓlÔ4}rÓ!�Ô4}�Ó!ÖÔ4}Ó%íÓ'√�Ó(·Ó.æÓ6Ó<{xÓAfiÔ4}�ÓBAÔ4}rÓE€Ô4}�ÓFÿÔ4}xÓÚÔ2’rÓßÔ2’�Ó›Ô2’Ó¬Ó!6Ó'ƒÓ*E Ó1ÛÓ4ÉÓ:∏Ó@√ÓD xÓÚÔ1.rÓ%Ô1.�Ó/Ô1.xÓÙÔ1.�ÓèÔ1.rÓ[Ô1.�Ó eÔ1.Ó#Ó%¿Ó)`Ó-NÓ/ŸÓ2.Ó88Ó={Ó@ñÓE˚ÓÚÔ/á Ó√Ó!Ó$MÓ(|Ó*lxÓoÔ- tÓ1Ô*ãÓ"U Ó+NÓ/Ò Ó1Ô(Ói Ó%bÓ)‰Ó.…Ó3⁄ rÓÚÔ%êÓcÓÑÓ˝Ó"!Ó$ûÓ(ÜtÓ*]Ô%ê�Ó*ÀÔ%êrÓ.ÁÔ%ê�Ó/JÔ%ê�vÓ0pÔ%ê�Ó0ÍÔ%êrÓ@\Ô%ê�Ó@’Ô%êÓD|ÓGûÓÚÔ#ÈÓ§Ó¨Ó πÓ&\Ó'¸Ó*CÓ,svÓ0;Ô#È�Ó0ûÔ#È rÓ9Ô#È�Ó9ÜÔ#ÈvÓ<®Ô#È�Ó=õÔ#ÈrÓB∫Ô#È�ÓC}Ô#ÈÓD‹ÓÚÔ"BvÓ^Ô"B�Ó;Ô"BrÓÔ"B�ÓœÔ"B�ÓŸÓEÓ% Ó* Ó,ÚÓ2§Ó7�Ó:Ó?3Ó@ÓÓEŸÓG÷ÓÚÔ öÓwÓKÓ!%Ó#Ó%áÓ*∂Ó3Ó8‡Ó;Ó=Ó>ÛÓAxÓEQÓG/ÓÚÔÛÓ&ÓCÓ °Ó$hÓ&ŒÓ)vÓ,ÆÔÛ�Ó-ïÔÛrÓ;YÔÛ�Ó;fiÔÛÓ@ÓB{ÓE-ÓFÌÓÚÔL Ó(tÓ1ÔŒÓÌ Ó%ÊÓ*huÓ/MÔŒ�Ó0 ÔŒtÓ2ôÔŒ�Ó3°ÔŒÓ7≤rÓÚÔPÓÓøÓÓ"fiÓ$óÓ&˜Ó,#Ó0¿Ó4svÓ8∑ÔP�Ó9™ÔPrÓ>ıÔP�tÓ1Ô”ÓÌ Ó%ÊÓ*hÓ/MÓ4^uÓ;fiÔ”�Ó<≤Ô”tÓ?+Ô”�Ó@3Ô”rÓÚÔUvÓ6ÔU�Ó)ÔUrÓHÔU�tÓ1Ô◊ÓÃÓ¯ Ó(èrÓ:àÔ◊�Ó;Ô◊tÓCuÔ◊�ÓDÔ◊�Ó1ÔZÓkÓñ Ó+-rÓ='ÔZ�Ó=†ÔZtÓB◊ÔZ�ÓCqÔZ�rÓÚÔ‹Ó)Ó¯�vÓ>Ô‹�ÓÔ‹rÓ(Ô‹�Ó(èÔ‹Ó*oÓ,ÍÓ2‰Ó8-Ó==Ó?ÓEÓG/ÓÚÔ 5Ó‡ÓúÓ &Ó$ZÓ)°Ó+vÓ-Ó/WÓ4ÎÓ8ÑÓ:!Ó<eÓASvÓ)eÔˆˇ���������������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(variantrecord)followedbyallofthefieldsofthisvariant;itomitsthetagfield.TVSize[Variant[tv]]returnstheactualsizeofthisvariant.IsMachineDependent:PROC[type:Type]RETURNS[BOOL];Domain:PROC[type:Type]RETURNS[Type--enumerated--];sequenceIsMachineDependent:PROC[type:Type]RETURNS[BOOL];IsPacked:PROC[type:Type]RETURNS[BOOL];Domain:PROC[type:Type]RETURNS[Type];ThisreturnstheindexTypethatisassociatedwiththespecifiedsequenceType.TagType:PROC[type:Type]RETURNS[Type];EquivalenttoDomain[type]forsequencetypes.Range:PROC[type:Type]RETURNS[Type];ThisreturnstheelementTypethatisassociatedwiththespecifiedsequenceType.Apply:PROC[tv:TypedVariable,arg:TypedVariable]RETURNS[TypedVariable];ThisreturnsaTypedVariableforthespecifiedelementofthespecifiedsequence.Theelement'svaluemustbeintherangeFirst[TagType[TVType[tv]]]..Last[...]].Tag:PROC[tv:TypedVariable]RETURNS[tagTV:TypedVariable];ThisreturnsaTypedVariablefortheindex(tag)fieldofthesequence.ThecurrentimplementationpermintsonetoAssigntotagTV,butyoushouldn'tdoit.Length:PROC[tv:TypedVariable]RETURNS[TypedVariable];ThisreturnsareadOnlyTypedVariableforthelengthof(numberofelementsin)thespecifiedsequence,representedasalonginteger.ThevaluesreturnedbyTagandLengthwillbedifferentiftheTagTypehasanon-zerolowerbound.record,structureRecordsdifferfromstructuresonlyinthatrecordtypesareunique.Notworecordtypesareequivalent.Recordtypesaresaidtobepainted.Twostructuretypesareequivalentiftheirelementtypesareequivalent,intheorderofdeclaration.IncurrentCedar,theonlystructuretypesareprocedure(signal,error,program)argumentandresulttypes,implicitLISTcomponenttypes,andRECORDtypesthataredefinedinprogrammodules.Avariantrecordwillbereferredtohereasaunion-record:i.e.,arecordwhoselastcomponentisofauniontype.Arecordwhoselastcomponentisofasequencetypewillbereferredtoasasequence-record.SomeoftheoperationsontheserecordsapplytotheserecordtypesandtheirTypedVariables;othersapplydirectlytothesequenceoruniontypesandthierTypedVariables,asdescribedbelow.IsMachineDependent:PROC[type:Type]RETURNS[BOOL];NComponents:PROC[type:Type]RETURNS[Index];IndexToTV:PROC[tv:TypedVariable,index:Index]RETURNS[TypedVariable];Therangeofindexis[1..NComponents[TVType[tv]]].IndexToTVreturnstheindicatedcomponentoftherecordorstructureasaTypedVariable.12��rÓÚÔb!Ó5Ó,Ó$˛Ó''Ó)EÓ++Ó-∏Ó1öÓ3ÅÓ6PÓ;ìÓ=ÓAÓCëÓFvÓÚÔ`yrÓ" Ô`y�Ó"éÔ`yÓ&ºÓ)Ó-Ó/ Ó1ÉÓ4$tÓ1Ô]˚Ó"U Ó+NÓ/Ò Ó1Ô[~Óñ Ó!èÓ&2rÓ18Ô[~�Ó1±Ô[~tÓ:$Ô[~�Ó:æÔ[~�xÓoÔY�tÓ1ÔVÇÓ"U Ó+NÓ/Ò Ó1ÔTÓÀ Ó"ƒÓ'g Ó1ÔQáÓñ Ó!èÓ&2 rÓÚÔO ÓÓøÓvÓ"ÍÔO �Ó#∆ÔO rÓ&ìÔO �Ó'ÔO Ó)aÓ*Õ Ó19Ó4TÓ6¥Ó<ovÓBXÔO �ÓC5ÔO rÓE}ÔO �tÓ1ÔLãÓQ Ó"JÓ&Ì rÓÚÔJ Ó„vÓëÔJ �ÓéÔJ rÓ&ßÔJ �Ó' ÔJ Ó(‰Ó.ÕtÓ1ÔGèÓ∞ Ó ©Ó%L rÓÚÔEÓÓøÓvÓ$VÔE�Ó%3ÔErÓ'ˇÔE�Ó(nÔEÓ*ÕÓ,9 Ó2•Ó5¿Ó8 Ó=€vÓCƒÔE�ÓD°ÔErÓFÈÔE�tÓ1ÔBîÓWÓÉ Ó)˘Ó-S ÓPÔ@ÎrÓÚÔ>mÓ˜Óï�vÓ©Ô>m�ÓÜÔ>mrÓ'OÔ>m�Ó'»Ô>mÓ)wÓ+¡Ó1gÓ6âÓ8-Ó:wÓ@ÓF∑ÓÚÔ<∆ÓÓØÓ"Ó$Ó%∂Ó(vÓ+‡Ô<∆�Ó,≤Ô<∆&tÓ1Ô:HÓÃÓ¯ Ó(è Ó56rÓÚÔ7 ÓÓ’�vÓ Ô7 �ÓÁÔ7 rÓ'–Ô7 �Ó(IÔ7 Ó*Ó,ÉÓ0XÓ3üÓ6⁄Ó8ûÓ;ÓA‚ÓD≈ÓÚÔ6# Ó—Ó$åÓ'8vÓ(ÊÔ6#�Ó)ŸÔ6#rÓ-∫Ô6#�Ó.(Ô6#�vÓ/hÔ6#�Ó/÷Ô6#rÓ32Ô6#�Ó4Ô6#Ó6êÓ9GÓ?PÓAWtÓ1Ô3•ÓÓI Ó*‡rÓÚÔ1'Ó�Ó®�vÓ≈Ô1'�ÓJÔ1'Ó$rÓ-æÔ1'�Ó.7Ô1'Ó/ÔÓ2CÓ6pÓ8Ó=∑Ó?dÓEÓG/ÓÚÔ/ÄÓÃÓ!* Ó(±Ó*}�Ó+ƒÓ.˚Ó4ÆÓ7§Ó;ÔÓA®vÓC¡Ô/Ä�ÓDûÔ/ÄrÓFÿÔ/Ä�ÓG}Ô/ÄvÓÚÔ-ŸrÓÒÔ-Ÿ�ÓÔÔ-ŸÓúÓçÓ$3Ó%îvÓ'ÛÔ-Ÿ�Ó(–Ô-ŸrÓ.Ô-Ÿ�Ó.ÿÔ-ŸÓ0Ü�Ó1∞Ó7uÓ;?xÓoÔ+[ÓÎrÓ1Ô(›ÓòÓrÓË Ó%9Ó(bÓ*Ó,¸Ó1[Ó4˛Ó7aÓ<oÓ>·ÓAúÓE˚Ó1Ô'6Óî Ó™Ó éÓ$2Ó&ñÓ)~Ó+<xÓ-=Ô'6�Ó-ÌÔ'6rÓ1{Ô'6�Ó2fÔ'6Ó5õÓ;hÓ?ÓAo ÓH.Ó1Ô%éÓÇÓ¬Ó`Ó æ Ó'œÓ)áÓ+Ó/ØÓ1rÓ8ÂÓ:æÓ?ëÓDÓFuÓ1Ô#ÁÓÓ±ÓÓ$∑Ó)ãÓ-mÓ3åÓ9ŒÓ<ùÓ@ÄÓDÑÓ1Ô"@ÓœÓ˜Ó „Ó#õÓ*IÓ-›Ó0´Ó2ˇÓ7ˇÓ9≠Ó?<Ó1Ô¬�ÓÓ·ÓtÓ cÓ"òÓ(Ó*Ó-mÓ/_�Ó0ÃÓ9≈Ó<ù�Ó> ÓBùÓGÓ1ÔÓ^Ó–Óé�ÓæÓ!ªÓ%≤�Ó'DÓ+ôÓ/ÕÓ2SÓ9ÄÓ:ÚÓ<∞�Ó=‡ÓCŒÓF„Ó1ÔsÓFÓ¨ÓÓR�Ó†Ó)ÚÓ-ÏÓ/ Ó2N Ó9 Ó;KÓ>¯ÓCÒÓG‡Ó1ÔÃÓ®ÓÂÓfÓ Ó#@Ó-zÓ1ãÓ5DÓ:'Ó;√Ó>ÓCÊÓEòÓ1Ô%Ó≈Ó|Ó√Ó%ÔÓ'ùÓ-«tÓ1ÔßÓ"U Ó+NÓ/Ò Ó1Ô)Ó9 Ó&3Ó*’Ó1Ô´ Ó«Ó!Û Ó-iÓ2NÓPÔrÓÚÔ ÖÓ ÓïtÓNÔ Ö�ÓºÔ ÖrÓ!∫Ô Ö�Ó"Ô Ö�Ó#&vÓÚÔ‹Ó�rÓÖÔ‹�Ó+Ô‹Ó"DÓ%3Ó+∑Ó3oÓ5∏Ó8ßÓ=ÜÓ?⁄ÓF'ÓHe�ÓÚÔ 5 vÓ)eÔˆˇ������� ��������TVm$Á����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������IndexToType:PROC[type:Type,index:Index]RETURNS[Type];Hereindexisusedtoselectoneofthetypesofthecomponentsofarecordorstructure.IndexToName:PROC[type:Type,index:Index]RETURNS[Rope.ROPE];Hereindexisusedtoselectoneofthenamesofthecomponentsofarecordorstructure.NameToIndex:PROC[type:Type,name:Rope.ROPE]RETURNS[Index];NameToIndexreturnstheindexofthecomponentintherecordorstructuretypethathasthespecifiedname.NameToIndexraisesBadNameifthegiventypehasnocomponentwiththespecifiedname.VariableType:PROC[type:Type]RETURNS[v:Type,c:Class];Iftyperepresents:Aunion-record:cisunion,andvisthetypeoftheunioncomponent.Asequence-record:cissequence,andvisthetypeofthesequencecomponent.Anythingelse:cisnil,andvisundefined.VariableTypemakesitpossibletodeterminewhetherrecordsofthistypecontainanyelementswithvariablestructure.Ifcisunionorsequence,nisNComponents[type],andtvisaTypedVariablesuchthatTVType[tv]=type,thenIndexToType[type,n]yieldsv,andIndexToTV[tv]yieldsaTypedVariabledescribingtheunionorsequence,foruseinthefunctionsdescribedinthesectionsbelow.Size:PROC[type:Type,length:CARDINAL_0]RETURNS[CARDINAL];IfVariableType[type].class=union,Sizereturnsthesizeofthelargestvariant.IfVariableType[type].class=sequence,thecallermustsupplyaproposedlength,andSizereturnsthesizeofasequence-recordwhosesequencecontainslengthelements.arrayIsPacked:PROC[type:Type]RETURNS[BOOL];Domain:PROC[type:Type]RETURNS[Type];ThisreturnstheindexTypethatisassociatedwiththespecifiedarrayType.Range:PROC[type:Type]RETURNS[Type];ThisreturnstheelementTypethatisassociatedwiththespecifiedarrayType.Apply:PROC[tv:TypedVariable,arg:TypedVariable]RETURNS[TypedVariable];ThisreturnsaTypedVariableforthespecifiedelementofthespecifiedarray.countedZoneNospecialoperations(yet).uncountedZoneNospecialoperations(yet).nilThisisTypeClass[RTBasic.nullType].Nospecialoperations(yet).unspecifiedThisisTypeClass[Range[CODE[POINTERTOUNSPECIFIED]]].Nospecialoperations(yet).13��tÓ1Ôb Ói Ó%bÓ)‰Ó.…Ó3⁄ rÓÚÔ_õtÓüÔ_õ�Ó Ô_õrÓDÔ_õ�ÓßÔ_õ�ÓÈÓ"^Ó$FÓ(?Ó+$Ó-Ó/ØÓ3|Ó5nÓ8 Ó?ÌÓAfl�ÓCBÓG ÓÚÔ]Ù tÓ1Ô[oÓÌ Ó%ÊÓ*hÓ/MÓ4^uÓ;fiÔ[o�Ó<≤Ô[otÓ?+Ô[o�Ó@3Ô[orÓÚÔXÈtÓîÔXÈ�ÓÔXÈrÓ.ÔXÈ�ÓëÔXÈ�Ó»Ó"2Ó$Ó'˝Ó*◊Ó,æÓ/LÓ3æÓ5•Ó83 Ó@ÓAı�ÓCMÓG ÓÚÔWB tÓ1ÔTΩÓÌ Ó%ÊÓ*huÓ/MÔTΩ�Ó0 ÔTΩtÓ2ôÔTΩ�Ó3°ÔTΩÓ7≤vÓÚÔR7 rÓSÔR7�Ó◊ÔR7Ó"˘Ó%KÓ) Ó*µÓ-Ó4"Ó5√Ó8Ó<WÓ>ÓCæÓF¡ÓÚÔPêÓØÓVÓ YvÓ$∑ÔPê�Ó%µÔPê rÓ.mÔPê�Ó.ÒÔPêÓ2sÓ9*Ó:“Ó=yÓAuÓDÃÓGâÓÚÔNÈÓÓ5Ó!îÓ'PtÓ1ÔLcÓ¿ Ó%πÓ*\Ó1«Ó4.Ó8∞Ó:ârÓÚÔIfivÓtÔIfi�Ó‚ÔIfirÓØÔIfi�Ó3ÔIfi Ó¥ÔGY�Ó@tÓ!ıÔGY�rÓ#UÔGY{Ó$¡ÔGY�Ó%ìÔGYrÓ(_ÔGY�Ó)<ÔGYtÓ+ÛÔGY�rÓ-HÔGYÓ.¥Ó1Ó4$Ó5›Ó8<Ó<3 Ó¥ÔD‘�Ó4tÓ#ÕÔD‘�rÓ% ÔD‘{Ó&ÔD‘�Ó'0ÔD‘rÓ,ΩÔD‘�Ó-çÔD‘tÓ08ÔD‘�rÓ1ÄÔD‘Ó2flÓ52Ó85Ó9·Ó<4ÓB Ó¥ÔBNÓ«tÓ ˜ÔBN�rÓ"WÔBN{Ó#√ÔBN�Ó$ïÔBNrÓ%EÔBN�Ó&!ÔBNtÓ(ŸÔBN�rÓ*.ÔBNÓ+ö tÓÚÔ?…rÓ"Ô?…�Ó LÔ?…Ó#tÓ$‰Ó*@Ó,Ó2£Ó8Ó<¯Ó>ÀÓAÜÓDØÓÚÔ>"ÓìÓNÓ iÓ%† ÓÚÔ;útÓoÔ;ú�rÓ Ô;úÓ1Ó#Ó·tÓ%Ô;ú�rÓ&ÉÔ;úvÓ'ÍÔ;ú�Ó(ÁÔ;úrÓ4≥Ô;ú�Ó5ãÔ;útÓ8=Ô;ú�Ó8ÃÔ;ú�rÓ:Ô;ú�Ó:Ô;ú�Ó;Ç�vÓ<ßÔ;ú�Ó=ÑÔ;úrÓF]Ô;ú�ÓF·Ô;úÓÚÔ9ıvÓßÔ9ı�ÓÉÔ9ı rÓ"∏Ô9ı�Ó#{Ô9ıvÓ&áÔ9ı�Ó&ÍÔ9ırÓ4*Ô9ı�Ó4€Ô9ıtÓ7¸Ô9ı�rÓ8ÕÔ9ı�Ó9êvÓ<-Ô9ı�Ó<ëÔ9ırÓE£Ô9ı�ÓFTÔ9ıÓÚÔ8N�vÓÔ8N�ÓˆÔ8NrÓ—Ô8N�Ó òÔ8NÓ&gÓ(√Ó,∑Ó.xÓ4µÓ6Ó9bÓ; Ó=iÓCdÓÚÔ6¶Ó†Ó�Ó!tÓ1Ô4!Ó: Ó3Ó#µÓ)4Ó2oÓ4~rÓÚÔ1úvÓtÔ1ú�Ó\Ô1ú{Ó'åÔ1ú�Ó(^Ô1úrÓ+*Ô1ú�vÓ,Ô1ú�Ó,ÓÔ1úrÓ/AÔ1ú�Ó/∆Ô1úÓ3ÙÓ6TÓ8ˇÓ:∏Ó=ÓArÓÚÔ/vÓúÔ/�ÓÑÔ/{Ó'¥Ô/�Ó(eÔ/rÓ-ÚÔ/�Ó.˜Ô/Ó1Ó5\Ó8ÏÓ=Ö�Ó>◊ÓD˝ÓÚÔ-ovÓÔ-o�ÓÎÔ-orÓòÔ-o�ÓÔ-oÓ •Ó#_Ó&dÓ(w�Ó)˚Ó4ÇÓ9 Ó?LvÓE Ô-o�ÓEbÔ-orÓÚÔ+»xÓoÔ)CtÓ1Ô&ΩÓÀ Ó"ƒÓ'g Ó1Ô$8Óñ Ó!èÓ&2 rÓÚÔ!≥ÓÓøÓÓ"ÍÓ&rÓ)@Ó*¨ Ó1Ó43Ó6ìÓ<OÓ?◊tÓ1Ô-Ó∞ Ó ©Ó%L rÓÚÔ®ÓÓøÓÓ$VÓ'fiÓ*¨Ó, Ó2ÑÓ5üÓ7ˇÓ=ªÓACtÓ1Ô#ÓWÓÉ Ó)˘Ó-S ÓPÔvrÓÚÔÒÓÓø�ÓÈÓ'8Ó)uÓ+’Ó1ëÓ6»Ó8ÅÓ:‡Ó@úxÓoÔl rÓ}Ôl�ÓüÔl�ÓflÓ[ Ó% xÓoÔÁrÓ¯ÔÁ�ÓÔÁ�ÓZÓ÷ Ó&ÑxÓoÔarÓ/ÔaÓJÓµÓ.Ó0|Ó4˜ Ó;•xÓoÔ‹ rÓ°Ô‹�ÓàÔ‹ÓÓÍÓ3RÓ63ÓBOÓEÓoÔ 5 ÓvÓ)eÔ�������z��������TVm$��������������������������������������������������������������������������������������������������������������������processNospecialoperations(yet).typeTypedVariableshavingTypesinthisClassmaybefoundinglobalframeTypedVariables.Nospecialoperations(yet).opaqueNospecialoperations(yet).anyThisisTypeClass[Range[CODE[REFANY]]].Nospecialoperations(yet).globalFrameTVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];Globals:PROC[tv:TypedVariable]RETURNS[TypedVariable--record--];localFrameProcedure:PROC[tv:TypedVariable]RETURNS[TypedVariable--procedure--];ThisreturnsaTypedVariablefortheprocedurefortvthisisalocalframe.RaisesTypeFaultiftheframeisacatchframe.Signal:PROC[tv:TypedVariable]RETURNS[TypedVariable--signal--];ThisreturnsaTypedVariableforthesignalforwhichtvisacatchframe.RaisesTypeFaultiftheframeisnotacatchframe.Argument:PROC[tv:TypedVariable,index:Index]RETURNS[TypedVariable];ThisreturnsaTypedVariableforthespecifiedargumentoftheprocedurecallrepresentedbytv.Result:PROC[tv:TypedVariable,index:Index]RETURNS[TypedVariable];ThisreturnsaTypedVariableforthespecifiedresultoftheprocedurecallrepresentedbytv.EnclosingBody:PROC[tv:TypedVariable]RETURNS[TypedVariable--localFrame--];TVForFHReferentexaminesthelocalframe'sprogramcounter(PC)toproduceaTypedVariabledescribingtheinnermostblocksurroundingthePC.EachcallonEnclosingBodyproducesaTypedVariablerepresentingthesamelocalframe,butatthenextouterlevelofblocknesting.ThenuseLocalstoobtainaTypedVariabledescribingthelocalvariablesateachlevel.Iftvalreadyrepresentstheouterblock,EnclosingBodyreturnsNIL.IfEnclosingBodyisappliedtoatvrepresentingacatchframe,itmayreturnatvdescribingthelocalssurroundingthecatchphraseratherthanNIL;thisisduetodeficienciesinthesymboltable,anditshouldeventuallybecorrected.Locals:PROC[tv:TypedVariable]RETURNS[TypedVariable--record--];ThisreturnsaTypedVariableforastructuredescribingthelocalsinthelocalframeandattheblocklevelrepresentedbytv.GlobalParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--globalFrame--];ThisreturnsaTypedVariablefortheglobalframecorrespondingtotv'slocalframe.DynamicParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--normallyalocalFrame--];14��xÓoÔb!rÓ/Ôb!ÓíÓ Ó$ªxÓoÔ_£rÓ/Ô_£ Ó!Ó&wÓ+�Ó-*Ó0HÓ4XÓ7ÿÓ:EÓ>œÓ@˘ÓEòÓoÔ]¸ÓöÓ¸Ó x Ó'&xÓoÔ[rÓ Ô[�Ó/Ô[�ÓoÓÍ Ó!òxÓoÔYrÓ/ÔYÓJÓµÓ.0Ó3iÓ5ÀÓ:G Ó@ıxÓoÔVÑ tÓ1ÔTÓ›Ó" Ó-†uÓ8∞ÔT�Ó9ÑÔTtÓ;˝ÔT�Ó=ÔTÓ1ÔR^Ó°Óà Ó+crÓ=]ÔR^�Ó=÷ÔR^tÓC ÔR^�ÓCßÔR^�xÓoÔO· tÓ1ÔMd Ó±Ó!› ÓPÔKªrÓ(JÔKª�Ó(√ÔKªtÓ0.ÔKª�Ó0«ÔKª�rÓÚÔI>Ó*Ó˙�vÓAÔI>�ÓÔI>rÓ(ÔI>�Ó(ìÔI>Ó*tÓ,ÒÓ3ëtÓ5ÏÔI>�Ó6{ÔI>�rÓ7ÌÔI>�Ó8\ÔI>Ó:¨Ó<5�Ó=|Ó@flÓEKvÓÚÔGórÓÀÔGó�Ó.ÔGó�Ó,ÓãÓ#ÇÓ$Ó�Ó&Ó)≠tÓ1ÔEÓ•Ó– Ó*grÓ<aÔE�Ó<⁄ÔEtÓA≠ÔE�ÓBGÔE�rÓÚÔBúÓ9Ó�vÓpÔBú�ÓMÔBúrÓ(YÔBú�Ó(“ÔBúÓ*√Ó-OÓ1hÓ3“tÓ8 ÔBú�Ó8úÔBú�rÓ:ÔBú�Ó:ÅÔBú�Ó;∂�Ó= Ó@œÓEJvÓÚÔ@ırÓÀÔ@ı�Ó.Ô@ı�Ó,ÓãÓ#ÇÓ$ÓÓ'c�Ó(åÓ,"tÓ1Ô>xÓCÓ!o Ó,ÂÓ1 ÓPÔ<œrÓÚÔ:RÓoÓÖ�vÓÔ:R�ÓÔÔ:RrÓ)1Ô:R�Ó)™Ô:RÓ+—Ó.ìÓ4≤Ó;?Ó=[Ó@ÓGÓÚÔ8´ Ó]tÓXÔ8´�ÓÁÔ8´�rÓ∏Ô8´�tÓ1Ô6-Ó∆ÓÒ Ó*gÓ/LÓPÔ4ÖrÓÚÔ2Ó¸Óû�vÓ∑Ô2�ÓìÔ2rÓ'aÔ2�Ó'⁄Ô2Ó)éÓ+‹Ó1áÓ5BÓ6ÍÓ98Ó?™ÓB% ÓÚÔ0`tÓÓÔ0`�Ó}Ô0`�rÓNÔ0`�tÓ1Ô-„ Ó∫Ó$Ê ÓPÔ,:rÓ(JÔ,:�Ó(√Ô,:tÓ0—Ô,:�Ó1kÔ,:�vÓÚÔ)ΩrÓ Ô)Ω�Ó!ïÔ)ΩÓ')Ó)∆Ó-IÓ2XÓ8$Ó=aÓ@‰ÓBœÓHe�vÓÚÔ(rÓÂÔ(�Ó¨Ô(Ó%¥Ó(KÓ.¯Ó2Ô Ó:ÈÓ=ÓAÓD«ÓGâvÓÚÔ&orÓÔ&o�Ó·Ô&oÓ%��vÓ&3Ô&o�Ó'Ô&orÓ/˜Ô&o�Ó0{Ô&o Ó7ÿÓ:@Ó=∆ÓAÓEmÓGˆÓÚÔ$«ÓnÓöÓVÓ!∏Ó#çÓ'jÓ-<Ó0˜vÓ3âÔ$«�Ó4ZÔ$«rÓ8aÔ$«�Ó8–Ô$«�Ó:,Ó>ç�vÓ?‘Ô$«�Ó@∞Ô$«rÓÚÔ# ÓõÓÓ!bÓ'-Ó(÷Ó,Ó0ZtÓ1ÏÔ# �Ó2{Ô# �rÓ3‡Ô# �Ó4ÜÔ# Ó8ƒ Ó?WÓA«ÓEvvÓÚÔ!yrÓÔ!y�ÓñÔ!yvÓ#ƒÔ!y�Ó$¬Ô!yrÓ%˜Ô!y�ÓÚÔ˚vÓëÔ˚�ÓxÔ˚rÓ ÕÔ˚�Ó!0Ô˚�Ó"UÓ'\Ó)'�tÓ*mÔ˚�Ó*¸Ô˚�rÓ,nÔ˚�Ó,ÚÔ˚ Ó4b�Ó5©Ó9ZÓ=∆Ó?9ÓBYÓF•�ÓGÎÓÚÔT ÓƒÓ\Ó"` Ó*[Ó,ÙÓ0¬Ó5aÓ9®vÓ=ÔT�Ó>ÔTrÓ?9ÔT�Ó@pÔTÓCKÓDÓG‡ÓÚÔ≠ÓQÓˇÓ _Ó%'Ó(ÁÓ+ûÓ,ıÓ1q Ó8 Ó9˘ tÓ1Ô/Ó‹Ó Ó*ûrÓ<òÔ/�Ó=Ô/tÓBHÔ/�ÓB‚Ô/�rÓÚÔ≤ÓÓ‹�vÓÔ≤�ÓÒÔ≤rÓ'fiÔ≤�Ó(WÔ≤Ó*)�Ó+aÓ1, Ó7”Ó:AÓ>Ó?÷ÓBDÓEòÓÚÔÓ™ÓBÓ¢ÓaÓ"ß Ó*tÓ, Ô�Ó,úÔ�rÓ-mÔ�tÓ1ÔçÓüÓ#À ÓPÔÂrÓ(JÔÂ�Ó(√Ô tÓ1ÆÔÂ�Ó2HÔÂ�rÓÚÔhÓÓø�vÓÈÔh�Ó∆ÔhrÓ'§Ôh�Ó(ÔhÓ)‚Ó,AÓ0dÓ4ZÓ=QtÓ?�Ôh�Ó?éÔh�rÓ@_Ôh�Ó@∏Ôh�ÓA¿ÓEtÓ1ÔÍ ÓAÓ%m ÓPÔ BrÓ(JÔ B�Ó(√Ô BÓ/ �Ó06tÓ7ÀÔ B�Ó8eÔ B�vÓ)eÔˆˇ���������������TVm$2������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ThisreturnsaTypedVariablefortheframeofthecalleroftheframerepresentedbytv.ThiswillnormallybealocalFrameTypedVariable,butstrangethingshappenattherootofprocessesandwhenPORTsareused.Normally,therootlocalFrameofaprocessisaprogramTypedVariable.Morecanbesaidaboutallofthis,butthisisnottheplace.8.0ERRORsError:ERROR[reason:ErrorReason,msg:ROPE_NIL,type:Type_RTBasic.nullType,--usedwithTypeFault,IncompatibleTypesotherType:Type_RTBasic.nullType--usedwithIncompatibleTypes];ErrorReason:TYPE={noSymbols,--msghasmoduleNamenotImplemented,--mostlyDefaultInitialValuecasesincompatibleTypes,--raisedbyAssignrangeFault,--e.g.emptysubrange,ApplyboundschecknotMutable,--raisedby(e.g.)AssigninternalTV,--raisedby(e.g.)RefFromTVbadName,--raisedbyNameToIndexbadIndex,--raisedby(e.g.)IndexToTypetypeFault--generalapplicabilityviolation};9.0ExamplesTheexamplebelowcomesdirectlyfromoneofmytestprograms,andhasseveralstrangepropertiesanddependencies,noneofwhicharerelevanttoitsvaluehereasasourceofexamples.PrintTV:PROC[tv:RTTypes.TV,depth:CARDINAL_0]=BEGINOPENRTTypes;type:Type=TVType[tv];SELECTTypeClass[type]FROMunion=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aunion)Tag="];PrintTV[Tag[tv]];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["Variant="];PrintTV[Variant[tv],depth+1];};definition=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(adefinition)="];WriteString[TypeToName[type]];WriteLine[""];PrintTV[Coerce[tv,UnderType[type]],depth+1];};localFrame=>{pt:TV=Procedure[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;15���rÓÚÔb)ÓÓ¬�vÓÓÔb)�Ó Ôb)rÓ'™Ôb)�Ó($Ôb)Ó)ÈÓ,JÓ0BÓ1˝Ó4^Ó8Ó9ŒÓ</Ó@' ÓGìtÓÚÔ`ÇrÓRÔ`Ç�Ó;Ô`ÇÓbÓÓ"¯Ó$ı�Ó&, vÓ-`Ô`Ç�Ó.=Ô`ÇrÓ6óÔ`Ç�Ó7ÄÔ`ÇÓ:Ó>ŸÓBˇÓGˆÓÚÔ^⁄Ó\ÓTÓÓ"Ó$‡Ó(ûÓ-ÜÓ/‰Ó3ÅÓ:Ó<zÓ?r ÓF¢ÓHe�ÓÚÔ]3ÓºÓ�Ó>Ó!√ Ó+`Ó/Ó1óÓ3}Ó6LÓ:$Ó< Ó=πÓ@©ÓC ÓE∏ÓGÓÚÔ[åÓRÓÆÔVèÓÍÓxÔTqÓ•ÔT�Ó^ÔTrÓ£ÔRh�ÓÔRhÓŸÓ8ÔPøqÓîÔPø�ÓhÔPørÓÔPø�qÓ úÔPø�Ó!ÖÔPørÓ"®ÔPø�Ó8ÔOÓ¡ÓJ�Ó ◊xÓ,bÔO�Ó,‹ÔO�Ó-ŸÓ0ÍÓ3Ê Ó:∑rÓ8ÔMm ÓUÓ"›�Ó$jxÓ0¶ÔMm�Ó1ÔMm�Ó2Ó5.Ó8)rÓ/ÔKƒÓxÔJqÓˇÔJ�Ó∏ÔJrÓVÔJ�ÓflÔHs xÓ)üÔHs�Ó*ÔHs�Ó+Ó-ÂÓ0[ rÓÁÔF xÓ*0ÔF �Ó*©ÔF �Ó+ßÓ/ÔÓ;›rÓÁÔE!xÓ*ÔE!�Ó*}ÔE!�Ó+{Ó/gÓ1ArÓÁÔCx xÓ)RÔCx�Ó)ÀÔCx�Ó*…Ó-IÓ1DÓ7QÓ;<Ó?—rÓÁÔAœ xÓ)◊ÔAœ�Ó*QÔAœ�Ó+NÓ/:Ó1Ó4árÓÁÔ@& xÓ)·Ô@&�Ó*ZÔ@&�Ó+XÓ/DÓ1Ó4êrÓÁÔ>}xÓ*>Ô>}�Ó*∑Ô>}�Ó+µÓ/†Ó1z rÓÁÔ<‘xÓ*Ô<‘�Ó*áÔ<‘�Ó+ÖÓ/qÓ1KÓ4æ rÓÁÔ;+xÓ)HÔ;+�Ó)¡Ô;+�Ó*øÓ/ÄÓ7rÓcÔ9ÇÓÆÔ7ÓÍÓoÔ4ÜÓ~Ó.ÓrÓ ◊Ó&Ó)¢Ó,ÑÓ.tÓ1 Ó3ÕÓ:oÓ=]Ó@ ÓD—ÓoÔ2fl Ó-Ó*Ó"GÓ&�Ó'ˇÓ,SÓ.ÌÓ4uÓ6jÓ8ãÓ<{Ó?‹ÓA–�ÓC@ÓG÷ÓoÔ17yÓoÔ.πrÓYÔ.π�qÓWÔ.π�Ó˛Ô.πrÓzÔ.π�Ó›Ô.πÓ˙qÓ Ô.π�Ó!ÉÔ.π�rÓ"NÔ.π�Ó#+Ô.πqÓ'ëÔ.π�Ó(\Ô.πrÓ.2Ô.π�Ó/øÔ.πÓ1W�qÓoÔ-ÓårÓÔ-�Ó$Ô-ÓxÔ+gÓÓâ�Óo qÓxÔ(�ÓÔ(rÓ0Ô(�ÓÔ( qÓÔ(�Ó“Ô(rÓÄÔ&lÓwÓâÔ$ƒ�qÓæÔ$ƒ�ÓwÔ$ƒrÓ1Ô$ƒ�ÓîÔ$ƒqÓ ZÔ$ƒ�Ó!@Ô$ƒ�rÓ"ÜÔ$ƒ�Ó#ÁÔ$ƒqÓ,yÔ$ƒ�Ó-Ô$ƒ�rÓ-¿Ô$ƒ�qÓ.®Ô$ƒ�Ó/aÔ$ƒrÓ4IÔ$ƒ�ÓëÔ#Ó9Ó!©Ó$k�Ó&PÓëÔ!rqÓëÔ…�ÓKÔ…rÓÔ…�ÓhÔ…qÓ .Ô…�Ó!Ô…�rÓ"ZÔ…�Ó#ªÔ…qÓ,MÔ…�Ó,ÏÔ…�rÓ-îÔ…�qÓ.|Ô…�Ó/5Ô…rÓ4Ô…�ÓëÔ Ó �Ó"dÓëÔwÓÔÓ#›�Ó%¬ÓâÔŒÓÄÔ% ÓÀÓâÔ|�qÓæÔ|�ÓwÔ|rÓ1Ô|�ÓîÔ|qÓ ZÔ|�Ó!@Ô|�rÓ"ÜÔ|�Ó#ÁÔ|qÓ,yÔ|�Ó-Ô|�rÓ-¿Ô|�qÓ.®Ô|�Ó/aÔ|rÓ4IÔ|�ÓëÔ”Ó9 Ó#˝�Ó%‚ÓëÔ*ÓëÔÅ ÓëÔÿÓJÓ*∂Ó.£�Ó0àÓâÔ0ÓÄÔ á ÓßÓâÔfi�ÓæqÓÒÔfi�Ó™Ôfi�rÓflÔfi�ÓƒÔfi qÓëÔ 5�ÓKÔ 5rÓÔ 5�ÓhÔ 5qÓ .Ô 5�Ó!Ô 5�rÓ"ZÔ 5�Ó#ªÔ 5qÓ,MÔ 5�Ó,ÏÔ 5�rÓ-îÔ 5�qÓ.|Ô 5�Ó/5Ô 5rÓ4Ô 5�vÓ)eÔ˝���������������TVm$…������������������������������������������������������������������������������������������������WriteString["(alocalframefor"];IFTypeClass[TVType[pt]]=programTHEN{WriteString["theprogramnamed"];WriteString[TVToName[pt]];WriteLine[")"];RETURN};WriteString[TVToName[pt]];WriteLine["):"];IFEnclosingBody[tv]=NILTHEN{domainType:Type=Domain[TVType[pt]];rangeType:Type=Range[TVType[pt]];IFdomainType#RTTypesBasic.nullTypeTHEN{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["Arguments:"];FORi:CARDINALIN[1..NComponents[domainType]]DOTHROUGH[0..depth]DOWriteChar[Ascii.SP]ENDLOOP;WriteString[IndexToName[domainType,i]];WriteLine[":"];PrintTV[Argument[tv,i],depth+2];ENDLOOP};IFrangeType#RTTypesBasic.nullTypeTHEN{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["Results:"];FORi:CARDINALIN[1..NComponents[rangeType]]DOTHROUGH[0..depth]DOWriteChar[Ascii.SP]ENDLOOP;WriteString[IndexToName[rangeType,i]];WriteLine[":"];PrintTV[Result[tv,i],depth+2];ENDLOOP};THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["Locals:"];PrintTV[Locals[tv],depth+1]}ELSE{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["EnclosingBody:"];PrintTV[EnclosingBody[tv],depth+1]};};globalFrame=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aglobalframefor"];WriteString[TVToName[tv]];WriteLine["):"];PrintTV[Globals[tv],depth+1];};nil=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(novalue)"];};countedZone=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(acountedZone)"];};uncountedZone=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(anuncountedZone)"];16���rÓëÔb!Ó9Ó Ó$uÓ&≥qÓÔ`x�ÓÄÔ`x�rÓ£Ô`x�ÓäÔ`xÓ#Â�Ó%ÀqÓ+YÔ`x�Ó,Ô`xrÓÔ^œ�ÓTÓ!¡Ó'ZÓ+ÍÓ.Ó?fiqÓoÔ](rÓWÔ](�ÓÔ](�ÓëÔ[ÓëÔY÷Ó/qÓëÔX.�Ó˚ÔX.�rÓÔX.�ÓÔX.Ó h�qÓ"MÔX.�Ó#5ÔX.Ó$¬rÓÔVÖ�ÓJ Ó»Ó!P�Ó#5ÓÔT‹ ÓfÓÔ�Ó!‘qÓÔS4�ÓàÔS4�rÓ´ÔS4�ÓrÔS4ÓØ�Ó îqÓAÔQã�Ó˙ÔQãrÓÏÔQã�qÓúÔQãrÓ$ÔQã�Ó$sÔQãqÓ*9ÔQã�Ó+ÔQã�rÓ,eÔQã�Ó-∆ÔQãqÓ6XÔQã�Ó6˜ÔQã�rÓ7üÔQã�qÓ8ÜÔQã�Ó9?ÔQãrÓ>'ÔQã�ÓºÔO‚qÓºÔN:�ÓvÔN:rÓêÔN:�ÓÛÔN:�qÓÔN:�ÓªÔN:Ó#ërÓ%MÔN:�Ó%±ÔN:qÓcÔLë�ÓIÔLë�rqÓŒÔJË�ÓáÔJËrÓ!AÔJË�Ó!§ÔJËqÓ'TÔJË�Ó(:ÔJË�rÓ)ÄÔJË�Ó*·ÔJËqÓ3sÔJË�Ó4ÔJË�rÓ4∫ÔJË�qÓ5°ÔJË�Ó6[ÔJËrÓ;BÔJË�ÓŒÔI?#Ó3ÇÓŒÔGóÓ"ÚÓŒÔEÓÓ(kÓ*Ó-˚�Ó/·qÓIÔDE�ÓÔDErÓÍÔDE�Ó õÔDE�qÓÔBù�ÓàÔBù�rÓ´ÔBù�Ó/ÔBùÓz�Ó_qÓAÔ@Ù�Ó˙Ô@ÙrÓÏÔ@Ù�qÓúÔ@ÙrÓ$Ô@Ù�Ó$sÔ@ÙqÓ*9Ô@Ù�Ó+Ô@Ù�rÓ,eÔ@Ù�Ó-∆Ô@ÙqÓ6XÔ@Ù�Ó6˜Ô@Ù�rÓ7üÔ@Ù�qÓ8ÜÔ@Ù�Ó9?Ô@ÙrÓ>'Ô@Ù�ÓºÔ?KqÓºÔ=£�ÓvÔ=£rÓêÔ=£�ÓÛÔ=£�qÓÔ=£�ÓªÔ=£Ó#ërÓ%MÔ=£�Ó%±Ô=£qÓcÔ;˙�ÓIÔ;˙�rqÓŒÔ:Q�ÓáÔ:QrÓ!AÔ:Q�Ó!§Ô:QqÓ'TÔ:Q�Ó(:Ô:Q�rÓ)ÄÔ:Q�Ó*·Ô:QqÓ3sÔ:Q�Ó4Ô:Q�rÓ4∫Ô:Q�qÓ5°Ô:Q�Ó6[Ô:QrÓ;BÔ:Q�ÓŒÔ8®"Ó2MÓŒÔ7�Ó"ÚÓŒÔ5WÓ&.Ó'—Ó+ø�Ó-§qÓIÔ3Æ�ÓÔ3ÆrÓÍÔ3Æ�Ó õÔ3Æ�qÓÔ2�Ó◊Ô2rÓíÔ2�ÓıÔ2qÓ!ªÔ2�Ó"°Ô2�rÓ#ÁÔ2�Ó%HÔ2qÓ-⁄Ô2�Ó.yÔ2�rÓ/!Ô2�qÓ0Ô2�Ó0¬Ô2rÓ5©Ô2�ÓÔ0]ÓÔ.¥Ó ·Ó$œ�Ó&¥qÓëÔ-�ÓKÔ-rÓ∆Ô-�qÓ˚Ô-�Ó¥Ô-rÓnÔ-�Ó—Ô-qÓ$óÔ-�Ó%}Ô-�rÓ&√Ô-�Ó($Ô-qÓ0∂Ô-�Ó1VÔ-�rÓ1˝Ô-�qÓ2ÂÔ-�Ó3ûÔ-rÓ8ÜÔ-�Ó/Ô+cÓ/Ô)∫Ó(Ó+ı�Ó-⁄ÓâÔ(ÓÄÔ&i ÓÉÓâÔ$¿�qÓæÔ$¿�ÓwÔ$¿rÓ1Ô$¿�ÓîÔ$¿qÓ ZÔ$¿�Ó!@Ô$¿�rÓ"ÜÔ$¿�Ó#ÁÔ$¿qÓ,yÔ$¿�Ó-Ô$¿�rÓ-¿Ô$¿�qÓ.®Ô$¿�Ó/aÔ$¿rÓ4IÔ$¿�ÓëÔ#Ó9Ó![Ó%RÓ'èÓëÔ!oÓëÔ∆Ó/ÓëÔÓ &Ó$�Ó%¯ÓâÔtÓÔÃÓâÔ#�qÓæÔ#�ÓwÔ#rÓ1Ô#�ÓîÔ#qÓ ZÔ#�Ó!@Ô#�rÓ"ÜÔ#�Ó#ÁÔ#qÓ,yÔ#�Ó-Ô#�rÓ-¿Ô#�qÓ.®Ô#�Ó/aÔ#rÓ4IÔ#�ÓëÔz Ó8Ó![Ó Ô“ÓÄÔ) ÓWÓâÔÄ�qÓæÔÄ�ÓwÔÄrÓ1ÔÄ�ÓîÔÄqÓ ZÔÄ�Ó!@ÔÄ�rÓ"ÜÔÄ�Ó#ÁÔÄqÓ,yÔÄ�Ó-ÔÄ�rÓ-¿ÔÄ�qÓ.®ÔÄ�Ó/aÔÄrÓ4IÔÄ�ÓëÔÿÓ[Ó%'Ó Ô/ÓÄÔ ÜÓ‰ÓâÔ›�qÓæÔ›�ÓwÔ›rÓ1Ô›�ÓîÔ›qÓ ZÔ›�Ó!@Ô›�rÓ"ÜÔ›�Ó#ÁÔ›qÓ,yÔ›�Ó-Ô›�rÓ-¿Ô›�qÓ.®Ô›�Ó/aÔ›rÓ4IÔ›�ÓëÔ 5 Ó" Ó'{vÓ)eÔ˝�������„��������TVm$���������������������������};procedure=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aprocedurenamed"];WriteString[TVToName[tv]];WriteLine[")"];THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["Definedinthemodulenamed"];WriteLine[TVToName[GlobalParent[tv]]];THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["ItsDomain..."];IFDomain[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Domain[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["ItsRange..."];IFRange[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Range[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;};signal=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(asignalnamed"];WriteString[TVToName[tv]];WriteLine[")"];THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["ItsDomain..."];IFDomain[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Domain[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["ItsRange..."];IFRange[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Range[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;};error=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(anerrornamed"];WriteString[TVToName[tv]];WriteLine[")"];THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["ItsDomain..."];IFDomain[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Domain[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;};structure=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(astructure)"];FORi:CARDINALIN[1..NComponents[type]]DOTHROUGH[0..depth]DOWriteChar[Ascii.SP]ENDLOOP;WriteString[IndexToName[type,i]];17��rÓ Ôb!ÓÄÔ`xÓÓâÔ^œ�qÓæÔ^œ�ÓwÔ^œrÓ1Ô^œ�ÓîÔ^œqÓ ZÔ^œ�Ó!@Ô^œ�rÓ"ÜÔ^œ�Ó#ÁÔ^œqÓ,yÔ^œ�Ó-Ô^œ�rÓ-¿Ô^œ�qÓ.®Ô^œ�Ó/aÔ^œrÓ4IÔ^œ�ÓëÔ]'Ó9Ó#ºÓ(BÓëÔ[~ÓëÔY’qÓëÔX-�ÓKÔX-rÓÔX-�ÓhÔX-Óµ�Ó!öqÓ#2ÔX-�Ó$ÔX-�rÓ%^ÔX-�Ó&øÔX-qÓ/QÔX-�Ó/ÔX-�rÓ0òÔX-�qÓ1ÔX-�Ó28ÔX-rÓ7 ÔX-�ÓëÔVÑÓ ÓÓ"úÓ$˚Ó)˚Ó.ÇÓëÔT€&qÓëÔQä�ÓKÔQärÓÔQä�ÓhÔQäÓµ�Ó!öqÓ#2ÔQä�Ó$ÔQä�rÓ%^ÔQä�Ó&øÔQäqÓ/QÔQä�Ó/ÔQä�rÓ0òÔQä�qÓ1ÔQä�Ó28ÔQärÓ7 ÔQä�ÓëÔO·ÓëqÓëÔN8�Ó˚ÔN8�rÓÔN8�Ó=ÔN8 Ó»�Ó≠qÓ.iÔN8�Ó/"ÔN8rÓ2ÔN8�Ó3uÔN8Ó;AqÓÔLê�ÓœÔLêÓJrÓ◊ÔLê�ÓæÔLêÓ(Z�Ó*?qÓ/¸ÔLê�Ó0µÔLêrÓ3ßÔLê�Ó5ÔLê Ó;˜ÓA¥qÓÔJÁ�ÓœÔJÁÓJrÓ\ÔJÁ�qÓëÔI>�ÓKÔI>rÓÔI>�ÓhÔI>Óµ�Ó!öqÓ#2ÔI>�Ó$ÔI>�rÓ%^ÔI>�Ó&øÔI>qÓ/QÔI>�Ó/ÔI>�rÓ0òÔI>�qÓ1ÔI>�Ó28ÔI>rÓ7 ÔI>�ÓëÔGñÓë qÓëÔEÌ�Ó˚ÔEÌ�rÓÔEÌ�Ó'ÔEÌ Óø�Ó§qÓ-`ÔEÌ�Ó.ÔEÌrÓ1ÔEÌ�Ó2lÔEÌÓ:8qÓÔDD�ÓœÔDDÓJrÓ◊ÔDD�ÓæÔDDÓ'Q�Ó)6qÓ.ÛÔDD�Ó/¨ÔDDrÓ2ûÔDD�Ó3ˇÔDD Ó:ÔÓ@¨qÓÔBú�ÓœÔBúÓJrÓ\ÔBú�Ó Ô@ÛÓÄÔ?JÓlÓâÔ=¢�qÓæÔ=¢�ÓwÔ=¢rÓ1Ô=¢�ÓîÔ=¢qÓ ZÔ=¢�Ó!@Ô=¢�rÓ"ÜÔ=¢�Ó#ÁÔ=¢qÓ,yÔ=¢�Ó-Ô=¢�rÓ-¿Ô=¢�qÓ.®Ô=¢�Ó/aÔ=¢rÓ4IÔ=¢�ÓëÔ;˘Ó9Ó!$Ó%™ÓëÔ:PÓëÔ8®qÓëÔ6ˇ�ÓKÔ6ˇrÓÔ6ˇ�ÓhÔ6ˇÓµ�Ó!öqÓ#2Ô6ˇ�Ó$Ô6ˇ�rÓ%^Ô6ˇ�Ó&øÔ6ˇqÓ/QÔ6ˇ�Ó/Ô6ˇ�rÓ0òÔ6ˇ�qÓ1Ô6ˇ�Ó28Ô6ˇrÓ7 Ô6ˇ�ÓëÔ5VÓëqÓëÔ3Æ�Ó˚Ô3Æ�rÓÔ3Æ�Ó=Ô3Æ Ó»�Ó≠qÓ.iÔ3Æ�Ó/"Ô3ÆrÓ2Ô3Æ�Ó3uÔ3ÆÓ;AqÓÔ2�ÓœÔ2ÓJrÓ◊Ô2�ÓæÔ2Ó(Z�Ó*?qÓ/¸Ô2�Ó0µÔ2rÓ3ßÔ2�Ó5Ô2 Ó;˜ÓA¥qÓÔ0\�ÓœÔ0\ÓJrÓ\Ô0\�qÓëÔ.¥�ÓKÔ.¥rÓÔ.¥�ÓhÔ.¥Óµ�Ó!öqÓ#2Ô.¥�Ó$Ô.¥�rÓ%^Ô.¥�Ó&øÔ.¥qÓ/QÔ.¥�Ó/Ô.¥�rÓ0òÔ.¥�qÓ1Ô.¥�Ó28Ô.¥rÓ7 Ô.¥�ÓëÔ- Ó¥ qÓëÔ+b�Ó˚Ô+b�rÓÔ+b�Ó'Ô+b Óø�Ó§qÓ-`Ô+b�Ó.Ô+brÓ1Ô+b�Ó2lÔ+bÓ:8qÓÔ)∫�ÓœÔ)∫ÓJrÓ◊Ô)∫�ÓæÔ)∫Ó'Q�Ó)6qÓ.ÛÔ)∫�Ó/¨Ô)∫rÓ2ûÔ)∫�Ó3ˇÔ)∫ Ó:ÔÓ@¨qÓÔ(�ÓœÔ(ÓJrÓ\Ô(�ÓâÔ&hÓÄÔ$¿ÓÚÓâÔ#�qÓæÔ#�ÓwÔ#rÓ1Ô#�ÓîÔ#qÓ ZÔ#�Ó!@Ô#�rÓ"ÜÔ#�Ó#ÁÔ#qÓ,yÔ#�Ó-Ô#�rÓ-¿Ô#�qÓ.®Ô#�Ó/aÔ#rÓ4IÔ#�ÓëÔ!nÓˇÓ!qÓ%¯ÓëÔ∆ÓëÔqÓëÔt�ÓKÔtrÓÔt�ÓhÔtÓµ�Ó!öqÓ#2Ôt�Ó$Ôt�rÓ%^Ôt�Ó&øÔtqÓ/QÔt�Ó/Ôt�rÓ0òÔt�qÓ1Ôt�Ó28ÔtrÓ7 Ôt�ÓëÔÀÓëqÓëÔ#�Ó˚Ô#�rÓÔ#�Ó=Ô# Ó»�Ó≠qÓ.iÔ#�Ó/"Ô#rÓ2Ô#�Ó3uÔ#Ó;AqÓÔz�ÓœÔzÓJrÓ◊Ôz�ÓæÔzÓ(Z�Ó*?qÓ/¸Ôz�Ó0µÔzrÓ3ßÔz�Ó5Ôz Ó;˜ÓA¥qÓÔ—�ӜԗÓJrÓ\Ô—�ÓâÔ)ÓÄÔÄÓ=ÓâÔ◊�qÓæÔ◊�ÓwÔ◊rÓ1Ô◊�ÓîÔ◊qÓ ZÔ◊�Ó!@Ô◊�rÓ"ÜÔ◊�Ó#ÁÔ◊qÓ,yÔ◊�Ó-Ô◊�rÓ-¿Ô◊�qÓ.®Ô◊�Ó/aÔ◊rÓ4IÔ◊�ÓëÔ/Ó[qÓëÔ Ü�ÓKÔ ÜrÓeÔ Ü�Ó»Ô Ü�qÓ∆Ô Ü�ÓêÔ ÜÓfrÓ "Ô Ü�Ó ÜÔ ÜqÓ.ÃÔ Ü�Ó/±Ô Ü�rqÓöÔ›�ÓSÔ›rÓÔ›�ÓqÔ›qÓ!!Ô›�Ó"Ô›�rÓ#MÔ›�Ó$≠Ô›qÓ-@Ô›�Ó-flÔ›�rÓ.ÜÔ›�qÓ/nÔ›�Ó0'Ô›rÓ5Ô›�ÓöÔ 5Ó([vÓ)eÔˆˇ���������������TVm$Û��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WriteLine[":"];PrintTV[IndexToTV[tv,i],depth+2];ENDLOOP;};record=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(arecord)"];FORi:CARDINALIN[1..NComponents[type]]DOTHROUGH[0..depth]DOWriteChar[Ascii.SP]ENDLOOP;WriteString[IndexToName[type,i]];WriteLine[":"];PrintTV[IndexToTV[tv,i],depth+2];ENDLOOP;};ref=>{lc:LONGCARDINAL=TVToLC[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aref)="];IFlc=0THENWriteString["NIL"]ELSEWriteLongOctal[lc];WriteLine[""];--IFlc#0THENPrintTV[Referent[tv],depth+1];};list=>{lc:LONGCARDINAL=TVToLC[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(alist)="];IFlc=0THENWriteString["NIL"]ELSEWriteLongOctal[lc];WriteLine[""];IFlc#0THENPrintTV[Referent[tv],depth+1];};pointer=>{lc:LONGCARDINAL=TVToLC[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aPOINTER)="];IFlc=0THENWriteString["NIL"]ELSEWriteLongOctal[lc];WriteLine[""];};longPointer=>{lc:LONGCARDINAL=TVToLC[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aLONGPOINTER)="];IFlc=0THENWriteString["NIL"]ELSEWriteLongOctal[lc];WriteLine[""];};character=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aCHAR)='"];WriteChar[TVToCharacter[tv]];WriteLine[""]};cardinal=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aCARDINAL)="];WriteLongOctal[TVToLC[tv]];18���rÓöÔb!ÓæÓöÔ`xÓ#Ó$¬Ó(Ø�Ó*îqÓÔ^œ�ÓœÔ^œrÓ∑Ô^œ�ÓâÔ]'ÓÄÔ[~Ó–ÓâÔY’�qÓæÔY’�ÓwÔY’rÓ1ÔY’�ÓîÔY’qÓ ZÔY’�Ó!@ÔY’�rÓ"ÜÔY’�Ó#ÁÔY’qÓ,yÔY’�Ó-ÔY’�rÓ-¿ÔY’�qÓ.®ÔY’�Ó/aÔY’rÓ4IÔY’�ÓëÔX-Ó[ qÓëÔVÑ�ÓKÔVÑrÓeÔVÑ�Ó»ÔVÑ�qÓ∆ÔVÑ�ÓêÔVÑÓfrÓ "ÔVÑ�Ó ÜÔVÑqÓ.ÃÔVÑ�Ó/±ÔVÑ�rqÓöÔT€�ÓSÔT€rÓÔT€�ÓqÔT€qÓ!!ÔT€�Ó"ÔT€�rÓ#MÔT€�Ó$≠ÔT€qÓ-@ÔT€�Ó-flÔT€�rÓ.ÜÔT€�qÓ/nÔT€�Ó0'ÔT€rÓ5ÔT€�ÓöÔS3Ó([ÓöÔQäÓæÓöÔO·Ó#Ó$¬Ó(Ø�Ó*îqÓÔN8�ÓœÔN8rÓ∑ÔN8�ÓâÔLêÓÄÔJÁÓ®ÓâÔI>�ÓæqÓπÔI>�ÓrÔI>ÓèrÓ 0ÔI>�Ó"ÔI> qÓëÔGñ�ÓKÔGñrÓÔGñ�ÓhÔGñqÓ .ÔGñ�Ó!ÔGñ�rÓ"ZÔGñ�Ó#ªÔGñqÓ,MÔGñ�Ó,ÏÔGñ�rÓ-îÔGñ�qÓ.|ÔGñ�Ó/5ÔGñrÓ4ÔGñ�ÓëÔEÌÓ9ÓŸ�Ó!æqÓëÔDD�Ó˚ÔDD�rÓÔDD�ÓÅÔDD�Ó°�ÓÜ�qÓ∫ÔDD�ÓsÔDDrÓeÔDD�Ó∆ÔDDqÓ)êÔDD�Ó*IÔDDrÓ,ƒÔDD�Ó.%ÔDDÓëÔBú xÓoÔ@ÛÓÑÓÄÓ�ÓÁ�ÓÓ∏Ó,ºÓ0i�Ó2NrÓâÔ?JÓÄÔ=¢ÓæÓâÔ;˘�ÓæqÓπÔ;˘�ÓrÔ;˘ÓèrÓ 0Ô;˘�Ó"Ô;˘ qÓëÔ:P�ÓKÔ:PrÓÔ:P�ÓhÔ:PqÓ .Ô:P�Ó!Ô:P�rÓ"ZÔ:P�Ó#ªÔ:PqÓ,MÔ:P�Ó,ÏÔ:P�rÓ-îÔ:P�qÓ.|Ô:P�Ó/5Ô:PrÓ4Ô:P�ÓëÔ8®Ó9Ó�Ó!’qÓëÔ6ˇ�Ó˚Ô6ˇ�rÓÔ6ˇ�ÓÅÔ6ˇ�Ó°�ÓÜ�qÓ∫Ô6ˇ�ÓsÔ6ˇrÓeÔ6ˇ�Ó∆Ô6ˇqÓ)êÔ6ˇ�Ó*IÔ6ˇrÓ,ƒÔ6ˇ�Ó.%Ô6ˇÓëÔ5V qÓëÔ3Æ�Ó˚Ô3Æ�rÓÔ3Æ�ÓÅÔ3Æ�Ó°�ÓÜ�qÓ∫Ô3Æ�ÓsÔ3ÆrÓeÔ3Æ�Ó7Ô3ÆÓ*äÓ.w�Ó0]ÓâÔ2ÓÄÔ0\ÓIÓâÔ.¥�ÓæqÓπÔ.¥�ÓrÔ.¥ÓèrÓ 0Ô.¥�Ó"Ô.¥ qÓëÔ-�ÓKÔ-rÓÔ-�ÓhÔ-qÓ .Ô-�Ó!Ô-�rÓ"ZÔ-�Ó#ªÔ-qÓ,MÔ-�Ó,ÏÔ-�rÓ-îÔ-�qÓ.|Ô-�Ó/5Ô-rÓ4Ô-�ÓëÔ+bÓ9Ó$ö�Ó&qÓëÔ)∫�Ó˚Ô)∫�rÓÔ)∫�ÓÅÔ)∫�Ó°�ÓÜ�qÓ∫Ô)∫�ÓsÔ)∫rÓeÔ)∫�Ó∆Ô)∫qÓ)êÔ)∫�Ó*IÔ)∫rÓ,ƒÔ)∫�Ó.%Ô)∫ÓëÔ( ÓâÔ&hÓÄÔ$¿ ÓÈÓâÔ#�ÓæqÓπÔ#�ÓrÔ#ÓèrÓ 0Ô#�Ó"Ô# qÓëÔ!n�ÓKÔ!nrÓÔ!n�ÓhÔ!nqÓ .Ô!n�Ó!Ô!n�rÓ"ZÔ!n�Ó#ªÔ!nqÓ,MÔ!n�Ó,ÏÔ!n�rÓ-îÔ!n�qÓ.|Ô!n�Ó/5Ô!nrÓ4Ô!n�ÓëÔ∆Ó9Ó"Ó)f�Ó+KqÓëÔ�Ó˚Ô�rÓÔ�ÓÅÔ�Ó°�ÓÜ�qÓ∫Ô�ÓsÔrÓeÔ�Ó∆ÔqÓ)êÔ�Ó*IÔrÓ,ƒÔ�Ó.%ÔÓëÔt ÓâÔÀÓÄÔ#ÓiÓâÔz�qÓæÔz�ÓwÔzrÓ1Ôz�ÓîÔzqÓ ZÔz�Ó!@Ôz�rÓ"ÜÔz�Ó#ÁÔzqÓ,yÔz�Ó-Ôz�rÓ-¿Ôz�qÓ.®Ôz�Ó/aÔzrÓ4IÔz�ÓëÔ—Ó9Ó"e�Ó$JÓëÔ)ÓëÔÄÓâÔ◊ÓÄÔ/Ó¬ÓâÔ Ü�qÓæÔ Ü�ÓwÔ ÜrÓ1Ô Ü�ÓîÔ ÜqÓ ZÔ Ü�Ó!@Ô Ü�rÓ"ÜÔ Ü�Ó#ÁÔ ÜqÓ,yÔ Ü�Ó-Ô Ü�rÓ-¿Ô Ü�qÓ.®Ô Ü�Ó/aÔ ÜrÓ4IÔ Ü�ÓëÔ›Ó9Ó%˚�Ó'‡ÓëÔ 5vÓ)eÔ�������9��������TVm$����������������������������������������������������������������������������������������������������������������������������������������WriteLine[""]};longCardinal=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aLONGCARDINAL)="];WriteLongOctal[TVToLC[tv]];WriteLine[""]};unspecified=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(anUNSPECIFIED)="];WriteLongOctal[TVToLC[tv]];WriteLine[""]};type=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(ATYPE)"]};integer=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(anINTEGER,writtenasoctal)="];WriteLongOctal[TVToLC[tv]];WriteLine[""]};enumerated=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(anenumerationvalue)="];WriteString[TVToName[tv]];WriteLine[""]};array=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(anarray)"];FORsubscript:TV_First[Domain[type]],Next[subscript]UNTILsubscript=NILDOPrintTV[subscript,depth+1];PrintTV[Apply[tv,subscript],depth+2];ENDLOOP;};sequence=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(asequence).Length="];PrintTV[Length[tv],depth+2];--FORsubscript:TV_First[Domain[type]],Next[subscript]--UNTILTVToLC[subscript]=TVToLC[Length[tv]]DO--PrintTV[subscript,depth+1];--PrintTV[Apply[tv,subscript],depth+2];--ENDLOOP;};subrange=>PrintTV[Coerce[tv,Ground[TVType[tv]]],depth];opaque=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(opaque)"];};ENDCASE=>ERROR;19��rÓëÔb!ÓâÔ`xÓÄÔ^œÓªÓâÔ]%�qÓæÔ]%�ÓwÔ]%rÓ1Ô]%�ÓîÔ]%qÓ ZÔ]%�Ó!@Ô]%�rÓ"ÜÔ]%�Ó#ÁÔ]%qÓ,yÔ]%�Ó-Ô]%�rÓ-¿Ô]%�qÓ.®Ô]%�Ó/aÔ]%rÓ4IÔ]%�ÓëÔ[|Ó9Ó"Ó*«�Ó,¨ÓëÔY”ÓëÔX*ÓâÔVÅÓÄÔTÿ Ó ÓâÔS/�qÓæÔS/�ÓwÔS/rÓ1ÔS/�ÓîÔS/qÓ ZÔS/�Ó!@ÔS/�rÓ"ÜÔS/�Ó#ÁÔS/qÓ,yÔS/�Ó-ÔS/�rÓ-¿ÔS/�qÓ.®ÔS/�Ó/aÔS/rÓ4IÔS/�ÓëÔQÜÓˇÓ(≥�Ó*òÓëÔO›ÓëÔN4ÓâÔLãÓÄÔJ‚ÓêÓâÔI9�qÓæÔI9�ÓwÔI9rÓ1ÔI9�ÓîÔI9qÓ ZÔI9�Ó!@ÔI9�rÓ"ÜÔI9�Ó#ÁÔI9qÓ,yÔI9�Ó-ÔI9�rÓ-¿ÔI9�qÓ.®ÔI9�Ó/aÔI9rÓ4IÔI9�ÓëÔGêÓæÓâÔEÁÓÄÔD>ÓÓâÔBï�qÓæÔBï�ÓwÔBïrÓ1ÔBï�ÓîÔBïqÓ ZÔBï�Ó!@ÔBï�rÓ"ÜÔBï�Ó#ÁÔBïqÓ,yÔBï�Ó-ÔBï�rÓ-¿ÔBï�qÓ.®ÔBï�Ó/aÔBïrÓ4IÔBï�ÓëÔ@ÏÓˇÓ%lÓ*Ó+ÕÓ/ò�Ó1}ÓëÔ?CÓëÔ=ôÓâÔ;ÓÄÔ:G ÓÓâÔ8û�qÓæÔ8û�ÓwÔ8ûrÓ1Ô8û�ÓîÔ8ûqÓ ZÔ8û�Ó!@Ô8û�rÓ"ÜÔ8û�Ó#ÁÔ8ûqÓ,yÔ8û�Ó-Ô8û�rÓ-¿Ô8û�qÓ.®Ô8û�Ó/aÔ8ûrÓ4IÔ8û�ÓëÔ6ıÓˇ Ó&Ó*&�Ó,ÓëÔ5LÓëÔ3£ÓâÔ1˙ÓÄÔ0QÓÓâÔ.®�qÓæÔ.®�ÓwÔ.®rÓ1Ô.®�ÓîÔ.®qÓ ZÔ.®�Ó!@Ô.®�rÓ"ÜÔ.®�Ó#ÁÔ.®qÓ,yÔ.®�Ó-Ô.®�rÓ-¿Ô.®�qÓ.®Ô.®�Ó/aÔ.®rÓ4IÔ.®�ÓëÔ,ˇ Ó"qÓëÔ+V�ÓKÔ+VrÓeÔ+V�ÓÈÔ+VqÓ±Ô+V�ÓjÔ+V�rÓ Ô+V�Ó ñÔ+VÓ-qÓ6†Ô+V�Ó7ÖÔ+VrÓ:¥Ô+V�Ó;8Ô+VÓ@á�qÓBlÔ+V�ÓCTÔ+VÓD·rÓöÔ)≠Ó¸Ó#È�Ó%ŒÓöÔ(ÓŸ Ó&gÓ*U�Ó,:qÓÔ&[�ÓœÔ&[rÓ∑Ô&[�ÓâÔ$≤ÓÄÔ# ÓiÓâÔ!`�qÓæÔ!`�ÓwÔ!`rÓ1Ô!`�ÓîÔ!`qÓ ZÔ!`�Ó!@Ô!`�rÓ"ÜÔ!`�Ó#ÁÔ!`qÓ,yÔ!`�Ó-Ô!`�rÓ-¿Ô!`�qÓ.®Ô!`�Ó/aÔ!`rÓ4IÔ!`�ÓëÔ∑Ó[ Ó#Ó'“�Ó)∑ÓëÔÓƒÓ#±�Ó%ñxÓoÔdÓÑÓˆ ÓÓ ˙�Ó"gÓ.¡ÓoÔªÓïÓ∂Ó'ù�Ó)ÇÓ6aÓoÔÓçÓ “Ó$�Ó&dÓoÔiÓçÓ ö Ó&˝Ó*™�Ó,èÓoÔ¿ÓrÓâÔÓÄÔnÓ]ÓÚÓ%´Ó3=ÓÄÔ≈Ó`ÓâÔ�qÓæÔ�ÓwÔrÓ1Ô�ÓîÔqÓ ZÔ�Ó!@Ô�rÓ"ÜÔ�Ó#ÁÔqÓ,yÔ�Ó-Ô�rÓ-¿Ô�qÓ.®Ô�Ó/aÔrÓ4IÔ�ÓëÔ sÓâÔ qÓ¸Ô !�ÓµÔ !rÓ‰Ô !�ÓEÔ !�qÓyÔ !�Ó2Ô !rÓãÔ !�vÓ)eÔ���������������TVm$Q������������������������������������������������������������������END;20��qÓoÔbfrÓ˜Ôbf�vÓ)eÔ˝����������������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� HELVETICA�����������˛ü��� �GACHA����������������˛ü��� � TIMESROMAN����������˛ü���� TIMESROMAN����������˛ü���� HELVETICA������������˛Ê���� HELVETICA������������˛ü���� HELVETICA�����������˛Ê���� HELVETICA�����������˛ü����LOGO�����������������¸¥���� TIMESROMAN�����������˛ü���� TIMESROMAN�����������˛Ê����� TIMESROMAN����������˛Y��������������������������������������������������������������������������������������������������������������������������������������� �ñ��� ��O�����E�����Ñ�����Ω���%�����+��@���2� �‰���;��g���B������H� �fi���Q� �≥���Z��:���b� �’���k��0���r�� ���y� �ã���Ç��D���â��!���è��‰��ê�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������j/�ì��ë���ô”6S��ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ RTTypes.tioga����������������������������������������������������������������������12-Oct-82 13:40:51���������������������������������������������������������������������������������������������������������������������������������������������������������