ME Q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP Safe-InferedQR6STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~QRQRNone$The internal simulator state The :- of the component currently under evaluation The A of the node containing the component currently under evaluation .The set of nodes comprising the entire system "Unlimited supply of unique values RThe internal monad of the simulator is currently a simple state-monad wrapping IO 5Nodes represent computing entities in the simulator, 4 and host the OS components and application threads Globally Unique ID of the node Meta-data describing the node <Lookup table of OS components running on the node, key: the 9, value: unique : &Map of component contexts, key is the : Node-local memory ]Meta-data describing the functionaly of the computing node, currently just a singleton type. +Events send to components by the simulator "Event send every simulation round 3Event send when a component is about to be removed -Event send when a component is first created 1A message send by a node: the first field is the ; of the sending node, the second field the message content <A message send another component: the field argument is the :5 of the sender, the second field the message content !Status of a running component "%Component is busy doing computations #(Component is waiting for a message from :", will continue with computation (b ->   a) once received $Component is doing nothing *)Key: senderId; Value: number of messages ++Key: receiverId: Value: number of messages ,1Context of a running component in the simulator. AWe need rank-2 types because we need to make a single collection H of several component contexts, each having their own type representing  their internal state. /Status of the component 0 State internal to the component 1:. of the component that created this component 21Message waiting to be processed by the component 3Trace message buffer 4.Statistical information regarding a component 5+Type class that defines every OS component 6-The minimal internal state of your component 7>A function returning the unique global name of your component 86The function defining the behaviour of your component =  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./0123456789:;:95678,-./01234%&'()*+!$#"      !$#"%&'()*+,-./0123456789: Safe-Infered;"ID of the node you want to update Update function <"ID of the node you want to update Update function =>Recipient component ID Actual message Node containing the component ?@AB;<=>?@AB;<?=>@AB;<=>?@AB Safe-Infered C2Register a component interface with the simulator DCreate a new component E'Synchronously invoke another component FInvoke another component, don't wait for a response G!Yield to the simulator scheduler H'Get the component id of your component IFGet the node id of of the node your component is currently running on JCreate a new node KWrite memory of local node LRead memory of local node M Return the :5 of the component that created the current component NGet the unique : of a certain component CD&Node to create component on, leave to  to create on current node %ComponentId to set as parent, set to  to use own ComponentId !Name of the registered component : of the created component ECaller, leave  to set to current module Callee  Argument Response from recipient FCaller, leave  to set to current module Callee  Argument Call returns immediately GHIJNodeId of the created node K!Node you want to write on, leave  to set to current node Address to write Value to write L Node you want to look on, leave  to set to current node Address to read MN Node you want to look on, leave  to set to current node *Name of the component you are looking for   ComponentID if the component is found,  otherwise OPCDEFGHIJKLMNOPCDEFGHIJKLMNOP Safe-InferedsSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  5678:CDEFGHIJKLMNOP :5678 CDEFGHIJKLMNOP      !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVTUWTUXTUYTUZTU[TU\TU]TU^T_`T_aT_bT_cT_dT_eT_fTghTgiTgjTgkTglTgmTUnTUoTUpTUqTUrTUsTUtTUuTUvTUwTUxTUyTUzTU{TU|TU}TU~TUTUTUTUTUTUTUTUTUTgTUTUTUTT SoOSiM-0.1 SoOSiM.TypesSoOSiM.SimulatorSoOSiM SoOSiM.UtilSoOSiM.SimMonadStateContainerSCSimStatecurrentComponent currentNodenodes uniqueSupply componentMapSimMonadRequestOrYieldYieldRequestSimMrunSimMNodenodeIdnodeInfonodeComponentLookupnodeComponents nodeMemorynodeComponentOrderNodeInfoNodeIdComponentInputTick Deinitialize InitializeNodeMsg ComponentMsgComponentStatusRunning WaitingForMsgIdle SimMetaData cyclesRunning cyclesWaiting cyclesIdling msgsReceivedmsgsSendComponentContextCC componentId currentStatuscomponentStatecreator msgBuffer traceMsgs simMetaDataComponentIface initState componentNamecomponentBehaviour ComponentName ComponentId modifyNode modifyNodeM componentNodeupdateMsgBufferincrSendCounterupdateTraceBufferexecStep execStepSmallregisterComponentcreateComponentinvoke invokeNoWaityieldgetComponentId getNodeId createNode writeMemory readMemorycomponentCreatorcomponentLookuprunIOtraceMsg adjustForce mapAccumLMbaseData.Typeable.InternalTypeable Typeable1 Typeable2 Typeable3 Typeable4 Typeable5 Typeable6 Typeable7TypeRep Data.Dynamic dynTypeRepdynAppdynApply fromDynamicfromDyntoDynDynamic Data.Typeablegcast2gcast1gcastmkTyCon typeRepKey TypeRepKey showsTypeReptypeOf6DefaulttypeOf5DefaulttypeOf4DefaulttypeOf3DefaulttypeOf2DefaulttypeOf1Default typeOfDefault tyConString typeRepArgs typeRepTyConmkTyCon3mkAppTy funResultTy splitTyConAppmkFunTy tyConName tyConModule tyConPackagetypeOf1typeOf2typeOf3typeOf4typeOf5typeOf6typeOf7cast mkTyConAppTyContypeOf$fMonadUniqueStateT$fFunctorRequestOrYield Data.MaybeNothingJust ghc-7.4.1Unique mkTcOccUnique mkTvOccUniquemkDataOccUniquemkVarOccUniquemkCostCentreUniquemkRegClassUniquemkRegPairUniquemkRegSubUniquemkRegSingleUniquemkPseudoUniqueHmkPseudoUniqueEmkPseudoUniqueDmkBuiltinUniqueinitTyVarUniquemkPArrDataConUniquemkPreludeMiscIdUniquemkPrimOpIdUniquemkTupleDataConUniquemkPreludeDataConUniquemkTupleTyConUniquemkPreludeTyConUniquemkPreludeClassUniquemkAlphaTyVarUnique pprUniquehasKey unpkUniquemkUnique newTagUnique deriveUnique incrUnique getKeyFastIntgetKeymkUniqueGrimily getUnique Uniquable