úÎq dæÉ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ ©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈ-class of protocols for channel communication portable experimentalmik@konecny.aow.cz %Union of answers from all protocols. %Union of queries from all protocols. /This type is used to identify protocols eg for ? the creation of new channels or for dynamic type checking. ; It consists of an example query and an example answer. /A class grouping types of queries and answers. MEach instance has to define dynamic type checking of answers agains queries. Ntest whether the answer makes sense for a given query (dynamic type checking) error message !any danger of over 2^29 queries?  ÉÊËÌ     communication events portable experimentalmik@konecny.aow.cz 5Data to be logged with every query and answer event. %query originator, receiver of answer #query target, the one who answered  Í 'processes and channels within networks portable experimentalmik@konecny.aow.cz !"#$ !"#$ÎÏ !"#$ !"#$!"#$+an abstraction of channels within networks portable experimentalmik@konecny.aow.cz%&6create a new channel that is then given to processes $a logger to use by the new channel #name of channel responder process  channel id 7used to determine the embedded instance of QAProtocol  the channel's input and output sockets '6A channel type, as it is presented to the processes, < consists of an input socket and an output socket types. 7Each socket type has a unique protocol associated with 4 it. Whenever the protocol can be determined at ; compile time, we use the sIn and sOut types, otherwise 1 we use the sInAnyProt and sOutAnyProt types. > Elements of sInAnyProt and sOutAnyProt can be dynamically 7 cast to elements of sIn and sOut once the protocol 1 can be deduced by the Haskell type checker. (/place where function used; for error messages )/place where function used; for error messages */place where function used; for error messages +/place where function used; for error messages ,,Register a new query on the given socket.  Return the new query's id. 5This is a version using a statically typed protocol. initiator query socket 6the query to the initiator that this query reacts to socket to send query to the query data 7query ID to be able to match the answers with queries -,Register a new query on the given socket.  Return the new query's id. 6This is a version using a dynamically typed protocol. /place where function used; for error messages initiator query socket 6the query to the initiator that this query reacts to socket to send query to the query data 7query ID to be able to match the answers with queries .8Wait until the given socket has at least one new query. [ When there is at least one, return the earliest one and set its status to pending. 0This function uses a statically typed protocol. output socket to wait on /@Wait until one of the given sockets has at least one new query. = When there is at least one, return the earliest one ' and set its status to pending. 4This is function uses a dynamically typed protocol. output sockets to wait on 0=Send the provided answer to the given socket as an answer to + the query with the given query ID. 5This is a version using a statically typed protocol. should the answer be cached? 1=Send the provided answer to the given socket as an answer to + the query with the given query ID. 6This is a version using a dynamically typed protocol. /place where function used; for error messages should the answer be cached? 27Wait for an answer to a query with the given query ID. initiator query socket 7the query to the initiator that this query reacted to 3GWait for an answer to one of several queries with the given query IDs. initiator query socket Athe query to the initiator that all of these queries reacted to %&'()*+,-./0123'()*+,-./0123%&%&&' ()*+,-./0123()*+,-./0123'processes and channels within networks portable experimentalmik@konecny.aow.cz4$Explicit representation of a process' action, able to distinguish H between answering and making a query or pausing one internal thread : until the internal state (TV) has met some condition. 1This is useful for producing highly customisable  templates for processes G as Haskell functions whose parameters are functions that determine R what the process should do as a response to some external or internal events.  See for example 5Control.ERNet.Blocks.Basic.passThroughStatefulProcess. 56789:;9All data that define a process, including its behaviour. K Each executing process is instantiated from one of these descriptions. <=undeployed process name >5On deployment, a process either expands itself using D the provided callback function and does not use the  sockets at all 5OR it uses the sockets and never calls the expansion  callback. ?@A(input socket channel types and numbers )output socket channel types and numbers internal processes and their in/out channel numbers 456789:;<=>?@A;<=>?@:984765A476556789:;<=>?@<=>?@A.Abstraction of a distributed network manager. portable experimentalmik@konecny.aow.czB"A globally unique name as a URL.  eg ernet:localhost:4176/miks-ivp-solver-master  ernet-local:/ivp-solver-master  ernet-mpi:/ivp-solver-master -The port 4176 was unassigned when checked on  http: www.iana.org assignments port-numbers  on 2nd November 2008. C4A name given to a ditributed node by a programmer. DEFG(a manager that will deploy the process a process to be deployed; / it cannot have input channels HGRun a process together with some queries on one of its output sockets. (a process to be deployed and enquired; * it cannot have input sockets @the output socket in the above process to use, numbered from 0 !type of the above output socket 6Dialogue action that makes queries into this channel. H The parameter is a query function that waits for the answer  and returns it. 7whether or not to wait until the dialogue is finished BCDEFGHDEFGCBHBCDEFGEFGH(datatype for dynamic typing of channels portable experimentalmik@konecny.aow.cz,IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst,IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst,ikjfhglmdebcn^a`_Z]\[opUYXWVQTSRqrMPONILKJst,ILKJJKLMPONNOPQTSRRSTUYXWVVWXYZ]\[[\]^a`__`abccdeefhgghikjjklmnopqrst(generic processes and process templates portable experimentalmik@konecny.aow.cz u,A generic stateless process with no inputs. process identifier (string) function to answer queries result channel type vKA generic process with no inputs that answers using a ChTChanges protocol. process identifier (string) =function to answer queries (without the ChTChanges wrapper) result channel type w+A generic stateful process with no inputs. process identifier (string) 0function to answer queries and transform state initial state result channel type x1A process with one input and one output socket. O Upon receiving a query or an answer related to a previously received query, F the process uses the provided functions to decide whether to answer Q the query, make a new query or wait until the state meets a certain condition. S When the condition is met, the event (query or answer) in question is processed % again using the same function. FSeveral simpler processes are defined as specialisations of this one. ,what to do with a query + forward or reply 4what to do with an answer - another query or reply initial state argument channel type result channel type yCA simple process that passes on a translated version of each query J to another process and translates the answers before passing them back. should use channel cache? query translator answer translator argument channel type result channel type z?A simple process that either responds with no further queries F or passes on a translated version of the query to another process, E and then passing back a translated version of the answer received. should use channel cache? (if True, query should NOT be passed on ,responder to use if not passing queries on #translator for queries to pass on translator for passed answers input channel type output channel type {PA process passing on information without modification, except for improving the , convergence rate in successive queries. 9Each query may refer to a previous query. When it does, 1 the query will not be answered until either: E the answer has improved sufficiently since last time one was given R the number of queries made in response to this query has reached the given limit 2Currently supports only single-threaded querying. process identifier (string) :function to judge whether the improvement is good enough 9maximum number of attempts to reach desired improvement number channel type |)A trivial passthrough process that only: " reduces prec by 1 in all queries ? ensures that the granularity of all answers is raised to prec should use channel cache? in, out channel type 9sample answer (without QAIxA) to identify protocol type }<A process that passes on a translated version of each query L to one or both of another 2 channels. When the other channel(s) answer, I it analyses the answer(s) and decides whether to send other queries or  answer its original query. ,what to do with a query + forward or reply 4what to do with an answer - another query or reply initial state argument channels types result channel type ~CA simple process that passes on a translated version of each query J to another process and translates the answers before passing them back. should use channel cache? query translator answer translator argument channels types result channel type uvwxyz{|}~ uvwyzx}~{| uvwxyz{|}~ /processes with purely synchronisation effects portable experimentalmik@konecny.aow.cz2This process joins information from two channels (step, val) B in such a way that it acts as a splitter of responsibilities F for its multi-threaded failure-enabled result channel as follows:  The stepC channel provides the timing and effort information for responses.  The val7 channel provides values without significant blocking. CWhile the process is waiting for a response from the step channel, : any queries are put on hold until the response comes. ? If the step channel responds with indication of failure, then 0 all pending queries are answered as failed. D If the step channel responds with ok, then all the pending queries : are forwarded to the value channel and answered asap. > No new queries are accepted during such forwarding stage. process identifier (string) value input channel type Hexample answer on value channel to help compiler work out the protocol €9This process provides two channels (primary, secondary) ; split off from one source channel. The primary channel = is a clean forward of the source channel. The secondary L channel can use a slightly different protocol than the primary channel. DAny query on the secondary channel will be blocked until a matching L query is received and processed on the primary channel. (The user must M supply a function that decides whether or not the queries are matching.) <Whenever a query is being answered on the primary channel, : all queries pending on the secondary channel that are 8 matching this one will be replied at the same time H using the an answer derived from the answer on the primary channel. process identifier (string)  primary and input channel type secondary channel type <decision whether a secondary query matches a primary query 5translation of primary answer to a secondary answer GThis process provides multiple copies of one single-threaded channel. +merges splits a channel into two channels B - primary channel and secondary channel. The primary channel ? is a clean forward of the original channel. The secondary L channel can use a slightly different protocol than the primary channel. DAny query on the secondary channel will be blocked until a matching L query is received and processed on the primary channel. (The user must M supply a function that decides whether or not the queries are matching.) <Whenever a query is being answered on the primary channel, : all queries pending on the secondary channel that are 8 matching this one will be replied at the same time H using the an answer derived from the answer on the primary channel. process identifier (string) type of all channels number of channels to serve Hexample answer on value channel to help compiler work out the protocol ‚This process acts as a switch1 for a group of channels, forwarding information < from one of two groups of source channels. The special switch channel 0 indicates whether to use one or the other. should use channel cache? process identifier (string) switched output channel types ƒ,This process acts as a simple pass-through 2 + it decreases the effort index of each query . except for a query with effort index zero & it asks a special value provider. 2 It can cope with several queries in parallel. process identifier (string) type shared by all channels (sample answer to help the type checker „1This process acts as a simple pass-through + it B remembers its last answer and provides it on another channel. ? It initialises its memory from a special value provider. process identifier (string) type shared by all channels (sample answer to help the type checker €‚ƒ„€‚ƒ„€‚ƒ„ +protocols for communicating real functions portable experimentalmik@konecny.aow.cz…†‡ˆ‰Š‹ŒŽ‘/Construct an answer about a function, assuming ) they will not ask about a subdomain. ’,Construct an answer about a function, given ( as a Haskell real -> real function. “…†‡ˆ‰Š‹ŒŽ‘’“ÐÑÒŒŽ‰‹Š‘’‡ˆ…†“…††‡ˆˆ‰‹ŠŠ‹ŒŽŽ‘’“ *protocols for communicating a real number portable experimentalmik@konecny.aow.cz ”•–—˜™1Construct an answer to a query for a real number A using the default real number protocol with an effort index. š1Construct an answer to a query for a real number E using the default real number protocol without any effort index. ›9Construct an answer to a query for a list a real numbers 2 using the list protocol with an effort index. œ9Construct an answer to a query for a list a real numbers 6 using the list protocol without any effort index. "Make a query and wait for answer 4 on a real number input socket with the standard  (index -> approx) protocol. initiator query channel ”•–—˜™š›œ –—”•˜™š›œ ”••–——˜™š›œ (basic processes for function enclosures portable experimentalmik@konecny.aow.cz žIA pass-through process for first order real functions with effort index * that is almost equal to the identity. It restricts the function'#s graph at certain given intervals  to the given boxes. should use channel cache? *sample approximation to aid typechecking >below this threshold precision do not pass the query through 3 if it can be answered via the bounds /one bounding box for each order of derivative ŸEA simple integrator process for first-order linear domain functions 5 with effort index using the default integration  of the Ó instance. process identifier (string) result channel type *sample approximation to aid typechecking  MAn intersecting and improvement measuring stateful integrator process using  default intersecting & measuring integration of the  Ó instance. process identifier (string) *sample approximation to aid typechecking ¡RApply a function transformer ((R^m->R^n) -> (R^m->R^n)) to a function (R^m->R^n). process identifier (string) *sample approximation to aid typechecking ¢6A process joining two functions for adjacent domains ) to one function on the joint domain. 6Each query is split accordingly to two queries on the 5 two halves of the bisected domain, respectively. process identifier (string) *sample approximation to aid typechecking £LA process splitting a function into two based on a bisection of the domain. JA query for either half of the function results in a query for the whole. X The whole function is then cached to answer an analogous query for the second half. < Only one such result is cached (always the last one). process identifier (string) *sample approximation to aid typechecking ¤NA process passing on information about a real function, trying to improve the , convergence rate in successive queries. 9Each query may refer to a previous query. When it does, 1 the query will not be answered until either: X the information about the function has improved by the desired amount since last time R the number of queries made in response to this query has reached the given limit process identifier (string) desired ratio of improvement 9maximum number of attempts to reach desired improvement *sample approximation to aid typechecking ¥FA process passing on information about the values of a real function  at its domain endpoints. Protocols are wrapped in ChannelComm.ChTChanges 0 in order to be able to communicate failure. process identifier (string) *sample approximation to aid typechecking ¦FA process passing on information about the values of a real function  over a fixed domain. Protocols are wrapped in ChannelComm.ChTChanges 0 in order to be able to communicate failure. process identifier (string) )domain over which to search for maximum *sample approximation to aid typechecking žŸ ¡¢£¤¥¦ žŸ ¡¢£¤¥¦ žŸ ¡¢£¤¥¦ 4basic processes for processing reals via intervals portable experimentalmik@konecny.aow.cz§LA process passing on information about a real number, trying to improve the , convergence rate in successive queries. 9Each query may refer to a previous query. When it does, 1 the query will not be answered until either: V the information about the number has improved by the desired amount since last time R the number of queries made in response to this query has reached the given limit process identifier (string) desired ratio of improvement 9maximum number of attempts to reach desired improvement *sample approximation to aid typechecking ¨UA process passing on information about a list of real numbers, trying to improve the , convergence rate in successive queries. 9Each query may refer to a previous query. When it does, 1 the query will not be answered until either: U the information about the tuple has improved by the desired amount since last time R the number of queries made in response to this query has reached the given limit process identifier (string) desired ratio of improvement 9maximum number of attempts to reach desired improvement *sample approximation to aid typechecking §¨§¨§¨#real protocol using LFTs as digits portable experimentalmik@konecny.aow.cz%ÔÕÖשQA multi-dimensional linear fractional transformation with integer coefficients. ª«¬Pthe first Bool indicates whether or not the term is in the numerator of the LFT ­®¯°±²³´µ¶·¸¹º"Interpret the LFT digits as LFTs. ØÙ»9A process communicating a real number to a single client " incrementally digit by digit. the number to represent; F intersection of this sequence has to converge to a singleton ¼CA process that receives a real number incrementally digit by digit S and makes it available to multiple clients incrementally or non-incrementally. ½8Constructor for a 0-ary LFT with integer coefficients. ¾8Constructor for a unary LFT with integer coefficients. Ú¿9Constructor for a binary LFT with integer coefficients. ÛÀ8Work out what interval is the image of the lft when all ' variables are given the value [0,oo]. : The returned interval may be slightly bigger than the ; exact image due to rounding but it always contains the  whole exact image. ÜLike  lftTensorInfo# but assuming the lft is constant. ÝLike  lftTensorInfo but assuming the lft is unary. ÁÂ=Compose two unary LFTs, ie substituting one into the other. Ã4Compose two LFTs, ie substituting one into another " using one of its variables. ©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂ÷¸µ¶­´³²±°¯®º¹»¼©ª«¬½¾¿ÀÁ骫¬ª«¬­´³²±°¯®®¯°±²³´µ¶¶·¸¸¹º»¼½¾¿ÀÁÂÃcommunication events portable experimentalmik@konecny.aow.czÄÄÄÄ+logger implementation using an STM channel portable experimentalmik@konecny.aow.czÅÞÅÅÅ!channel implementation using STM portable experimentalmik@konecny.aow.czßàáâ?This number indicates how many times this query has been made / and answers not picked up yet. 3When 0, this QAstate and the corresponding answer T can be removed from the channel state unless the answer is cached. ãäå*unique query Id to use for the next query æ)queries that have not been picked up yet ç@queries that are being served or whose answers have been cached èIindex to queries that are being served or whose answers have been cached éZanswers that have not been picked up yet or have been cached + indicator whether to cache êÆëìíîï(rank within its answering process (0..) Ç-Union of channel types over instances of the ChannelComm.QERrotocol class. (existential type) ðñòóôfor logging events #name of channel responder process  channel id 7used to determine the embedded instance of QAProtocol õ/place where function used; for error messages ö/place where function used; for error messages ÷ÆÇÆÇÆÇ4manager implementation using local threads and STM portable experimentalmik@konecny.aow.czÈøùÈÈÈú !"#$%&'()*+,-./0,123456789:;<=>?@ABCDEEFGHIJKLM,NOPQRSTUVWXYZ[Y\]^_`abcdeefghhiijkjlmlnopqrstuvwxyz{|}~€ ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ ‹  Ž   ‘ ’ “ ” • • – – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ §¨¨©ª«¬­®¯°±²³³´´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊË Ì Í ÎÏÐÑÒÒÓÔÕÖרÙÚÁÛÛÜÝÞÞßàáâãäÂåæçèÃéêëìíîïÄðñAERN-Net-0.2.1.1"Control.ERNet.Foundations.ProtocolControl.ERNet.Foundations.Event&Control.ERNet.Foundations.Event.Logger!Control.ERNet.Foundations.Channel!Control.ERNet.Foundations.Process!Control.ERNet.Foundations.Manager6Control.ERNet.Foundations.Protocol.StandardCombinatorsControl.ERNet.Blocks.Basic"Control.ERNet.Blocks.Control.Basic%Control.ERNet.Blocks.RnToRm.Protocols#Control.ERNet.Blocks.Real.Protocols!Control.ERNet.Blocks.RnToRm.BasicControl.ERNet.Blocks.Real.BasicControl.ERNet.Blocks.Real.LFT*Control.ERNet.Foundations.Event.JavaScript%Control.ERNet.Deployment.Local.Logger&Control.ERNet.Deployment.Local.Channel&Control.ERNet.Deployment.Local.ManagerQANatAQANatQQABoolQQAUnitAQAUnitQ AnswerAnyProt QueryAnyProt ChannelType QAProtocolqaMatch qaaSetMinGranQueryId ERNetEventERNetEvAnsReceivedERNetEvAnsMade ernetevAnsERNetEvQryReceivedERNetEvQryMade ernetevTime ernetevQryId ernetevFromIdernetevFromQryId ernetevToId ernetevQryLoggernewaddEvent emptyAndDoemptyAndGetEventsChannelForSchedulerChannelcastIncastOutcastInIO castOutIO makeQuerymakeQueryAnyProt waitForQuerywaitForQueryMulti answerQueryanswerQueryAnyProt waitForAnswerwaitForAnswerMultiERProcessActionERProcessActionAnswerERProcessActionQueryERProcessActionRetryWhenERProcessExpandCallbackERProcessDeploy ERProcessName ERProcess erprocName erprocDeployerprocInputTypeserprocOutputTypes subnetProcess ManagerID ManagerNameManagerconnectNeighbour runProcess runDialogueQAProdA QAProdABoth QAProdASecond QAProdAFirstQAProdQ QAProdQBoth QAProdQSecond QAProdQFirstQAListA QAListALength QAListASingleQAListQ QAListQLength QAListQPrefix QAListQSingleQAListQAllHomog QAChangesAQAChangesAGivenUpQAChangesASame QAChangesANew QAChangesQQAChangesQWhenNewQAChangesQIfNewQAIxAQAIxQQAMaybeAQAMaybeAIsNothingQAMaybeQQAMaybeQIsNothingchTMaybemakeAnswerMaybechTIx chTChanges firstJustchTListmakeAnswerListchTProdmakeAnswerProdconstantProcessconstantChangedProcessconstantStatefulProcesspassThroughStatefulProcesspassThroughProcessmaybePassThroughProcess rateProcess precProcess passThroughBinaryStatefulProcesspassThroughBinaryProcessjoinStepValProcessbiasedSplitSyncProcesssplitSyncProcessswitchMultiProcessimproverIxSimpleProcessimproverNoIxSimpleProcessQAFn2AQAFn2APtQAFn2QQAFn2QPtQAFn1AQAFn1APtQAFn1QQAFn1QPt QAFn1QDom QAFn1QAllchTFn1makeAnswerFn1NoIxmakeAnswerFn1ByBoxesNoIxchTFn2QARealAQARealQchTReal makeAnswerRmakeAnswerRNoIx makeAnswerRsmakeAnswerRsNoIx querySyncRboundingProcessintegrateFAProcessintegrateIsectMeasureFAProcessapplyFieldProcessjoinFADomProcesssplitFADomProcess rateFnProcessgetEndpointValsProcessmaxOverDomProcess rateRProcess rateRsProcess LFTTensor lftTNSrank lftTNScoeffsLFTDigit LFT_SG_NEG LFT_SG_POS LFT_SG_INF LFT_SG_ZERLFT_RLFT_MLFT_L QALFTRealA QALFTRealQ chTLFTReallftDigit2TensorlftRealNumberIncremProcesslftRealNumberBufferForkProcesslftConst lftMatrixlftTensorBinary lftTensorInfolftTensorIsPositivelftTensorComposeUnarylftTensorCompose constructJS LoggerLocal ChannelLocalChannelLocalAnyProt ManagerLocalqaMatchDefaultMessagechTUnitchTBoolchTNatshowNQputLogWhileRunningputCompleteLogreplyFn replyFnNoIx replyFn2FnAERN-RnToRm-0.5.0.1Data.Number.ER.RnToRm.Approx ERFnDomApprox ExtInterval extIntervalL extIntervalRlftDigits2Tensor lftDigitsInfo lftTensorIdrefinesRAExtIntlftTensorInfoConstlftTensorInfoUnaryQAStateqaStQry qaStWaiting ChannelState chStNextIdchStQueriesNewchStQueriesCachechStQueriesIndex chStAnswers ChannelNamechTVchLogger chDestinationchIDchanyCHchanyChT makeChName newChannel castChannel castChannelIOchannelCastErrordeployProcesses