¬íysrjava.util.LinkedList )S]J`ˆ"xpwsrLOGIC.ObjectSaved^¬Ï‚×tLnometLjava/lang/String;LsavetLLOGIC/ObjectList;xptcanaissrLOGIC.ObjectList¢Õª7 ³žIdefaultrenameNumberL channelListtLjava/util/List;L contractListq~L instanceListq~LprocessosAuxiliaresq~LtypeListq~xpsq~wsr LOGIC.Channel‡p^9MÙ0FLflagq~Lnameq~Ltypeq~xpptrdsq~wsrLOGIC.Datatype€lT\\ Ldatatypeq~xr LOGIC.Type [ÍKÖàÀLnomeq~Ltipoq~xpt Directiontdatatypesq~wsrLOGIC.DatatypeElementEoЯŸ èÚLnameq~Ltypeq~xptreqtsq~tackq~xsrLOGIC.IntervalType;Å×ï‚çàŒImaxImimxq~tValuet intervaloxsq~ ptwrtsq~wq~q~xsq~ ptwritesq~wsq~tCellIdq~q~q~xsq~ ptreadsq~wq~%q~q~xsq~ ptinputsq~wq~xsq~ ptoutputsq~wq~xsq~ ptwrt_isq~wq~%q~q~xsq~ ptrd_isq~wq~%q~q~xxsq~wxsq~wxq~sq~wq~q~q~%xsq~tcontractsq~sq~wsq~ tintrdsq~wsq~t Directiontdatatypesq~wsq~treqtsq~tackq~Gxsq~tValuet intervaloxsq~ q~>twrtsq~wq~Aq~Jxsq~ ptwritesq~wsq~tCellIdq~Lq~Aq~Jxsq~ ptreadsq~wq~Sq~Aq~Jxsq~ ptinputsq~wq~Jxsq~ ptoutputsq~wq~Jxsq~ tcctwrt_isq~wq~Sq~Aq~Jxsq~ q~_trd_isq~wq~Sq~Aq~Jxxsq~wsrLOGIC.Contract±é"~ d¡O ZflagLbehaviorq~Lchannelq~Leventsq~Linq~Lnameq~Loutq~L protocolostLjava/util/LinkedList;Ltypeq~xpt@Cell = wrt.req?x -> wrt.ack.x -> rd.req?dumb -> rd.ack!x -> Cellsq~wq~Mq~=q~^q~bxsq~w srLOGIC.EventChannel wÇ¢?ËäLchanneltLLOGIC/Channel;Leventoq~Lsufixoq~xpq~Mtwrt.reqt.reqsq~lq~=trd.reqt.reqsq~lq~Mtwrt.ackt.acksq~lq~=trd.ackt.acksq~lq~^twrt_i.1t.1sq~lq~^twrt_i.2t.2sq~lq~^twrt_i.2t.2sq~lq~btrd_i.1t.1sq~lq~^twrt_i.2t.2xsq~wq~nq~qxtCellsq~wq~tq~wxsq~wxsq~wxxsq~wxq~Gsq~wq~Aq~Jq~Sxsq~t teste dalaysq~sq~wsq~ tintrdsq~wsq~t Directiontdatatypesq~wsq~treqtsq~tackq~žxsq~tValuet intervaloxsq~ q~•twrtsq~wq~˜q~¡xsq~ ptwritesq~wsq~tCellIdq~£q~˜q~¡xsq~ ptreadsq~wq~ªq~˜q~¡xsq~ ptinputsq~wq~¡xsq~ ptoutputsq~wq~¡xsq~ tcctwrt_isq~wq~ªq~˜q~¡xsq~ q~¶trd_isq~wq~ªq~˜q~¡xxsq~wsq~ft@Cell = wrt.req?x -> wrt.ack.x -> rd.req?dumb -> rd.ack!x -> Cellsq~wq~¤q~”q~µq~¹xsq~wsq~lq~µtwrt_i.1t.1xsq~wsq~lq~¤twrt.reqt.reqsq~lq~”trd.reqt.reqxtCellsq~wsq~lq~¤twrt.ackt.acksq~lq~”trd.ackt.ackxsq~wsrLOGIC.Protocolsx¡gLcChannelq~Lcanalq~mL dualProtocolq~Lprotocolq~xptwrt_i.1q~µtq~×xsq~wxxsq~wxq~žsq~wq~˜q~¡q~ªxsq~tcellsq~sq~wsq~ tintrdsq~wsq~t Directiontdatatypesq~wsq~treqtsq~tackq~éxsq~tValuet intervaloxsq~ q~àtwrtsq~wq~ãq~ìxsq~ ptwritesq~wsq~tCellIdq~îq~ãq~ìxsq~ ptreadsq~wq~õq~ãq~ìxsq~ ptinputsq~wq~ìxsq~ ptoutputsq~wq~ìxsq~ tcctwrt_isq~wq~õq~ãq~ìxsq~ q~trd_isq~wq~õq~ãq~ìxxsq~wsq~ft@Cell = wrt.req?x -> wrt.ack.x -> rd.req?dumb -> rd.ack!x -> Cellsq~wq~ïq~ßq~q~xsq~wsq~lq~twrt_i.2t.2sq~lq~twrt_i.3t.3sq~lq~trd_i.1t.1sq~lq~trd_i.2t.2sq~lq~trd_i.3t.3xsq~wsq~lq~ïtwrt.reqt.reqsq~lq~ßtrd.reqt.reqxtCellsq~wsq~lq~ïtwrt.ackt.acksq~lq~ßtrd.ackt.ackxsq~wsq~Ôtwrt_i.1q~tq~-sq~Ôtwrt_i.2q~tq~0sq~Ôtwrt_i.3q~q~0q~0sq~Ôtrd_i.1q~q~0q~0sq~Ôtrd_i.2q~q~0q~0sq~Ôtrd_i.3q~q~0q~0xsq~wxxsq~wxq~ésq~wq~ãq~ìq~õxsq~tCellCsq~sq~wsq~ tintrdsq~wsq~t Directiontdatatypesq~wsq~treqtsq~tackq~Jxsq~tValuet intervaloxsq~ q~Atwrtsq~wq~Dq~Mxsq~ tintwritesq~wsq~tCellIdq~Oq~Dq~Mxsq~ q~Ttreadsq~wq~Wq~Dq~Mxsq~ q~Ttinputsq~wq~Mxsq~ touttoutputsq~wq~Mxsq~ tcctwrt_isq~wq~Wq~Dq~Mxsq~ q~dtrd_isq~wq~Wq~Dq~Mxxsq~wsq~ft@Cell = wrt.req?x -> wrt.ack.x -> rd.req?dumb -> rd.ack!x -> Cellsq~wq~Pq~@q~cq~gxsq~wsq~lq~@trdtsq~lq~Ptwrtq~qxsq~wsq~lq~Ptwrt.reqt.reqsq~lq~@trd.reqt.reqxtCellsq~wsq~lq~Ptwrt.ackt.acksq~lq~@trd.ackt.ackxsq~wsq~Ôtrdq~@tDUAL_PROT_CELL(rd)t PROT_CELL(rd)sq~Ôtwrtq~PtDUAL_PROT_CELL(wrt)tPROT_CELL(wrt)xsq~wxxsq~wxt PROT_CELL(e) = |~| v2:Value @ e.req?v1 -> e.ack.v2 -> PROT_CELL(e) DUAL_PROT_CELL(e) = |~| v1:Value @ e.req.v1 -> e.ack?v2 -> DUAL_PROT_CELL(e) PROT_CTRL(e) = |~| v1:Value @ e.req.v1 -> e.ack?v2 -> PROT_CTRL(e) DUAL_PROT_CTRL(e) = |~| v2:Value @ e.req?v1 -> e.ack.v2 -> DUAL_PROT_CTRL(e)sq~wq~Dq~Mq~Wxsq~tcontratControllersq~sq~wsq~ tintrdsq~wsq~t Directiontdatatypesq~wsq~treqtsq~tackq~žxsq~tValuet intervaloxsq~ q~•twrtsq~wq~˜q~¡xsq~ tintwritesq~wsq~tCellIdq~£q~˜q~¡xsq~ q~¨treadsq~wq~«q~˜q~¡xsq~ q~¨tinputsq~wq~¡xsq~ touttoutputsq~wq~¡xsq~ tcctwrt_isq~wq~«q~˜q~¡xsq~ q~¸trd_isq~wq~«q~˜q~¡xxsq~wsq~ft@Cell = wrt.req?x -> wrt.ack.x -> rd.req?dumb -> rd.ack!x -> Cellsq~wq~¤q~”q~·q~»xsq~wsq~lq~”trdtsq~lq~¤twrtq~Åxsq~wsq~lq~¤twrt.reqt.reqsq~lq~”trd.reqt.reqxtCellsq~wsq~lq~¤twrt.ackt.acksq~lq~”trd.ackt.ackxsq~wsq~Ôtrdq~”tDUAL_PROT_CELL(rd)t PROT_CELL(rd)sq~Ôtwrtq~¤tDUAL_PROT_CELL(wrt)tPROT_CELL(wrt)xsq~wxsq~ftªmaxbuff = 4 maxring = maxbuff - 1 Controller = let ControllerState(cache,size,top,bot) = InputController(cache,size,top,bot) [] OutputController(cache,size,top,bot) InputController(cache,size,top,bot) = size < maxbuff & input?x -> (size == 0 & ControllerState(x,1,top,bot) [] size > 0 & write.top.req!x -> write.top.ack?dumb -> ControllerState(cache,size+1,(top%maxring)+1,bot)) OutputController(cache,size,top,bot) = size > 0 & output!cache -> (size > 1 & -- A requisição de leitura não ser uma "escolha externa (via input on dumb)" para que o processo seja Strong Output Decisive -- read.bot.req?dumb -> read.bot.ack?x -> ControllerState(x,size-1,top,(bot%maxring)+1) (|~| dumb:Value @ read.bot.req.dumb -> read.bot.ack?x -> ControllerState(x,size-1,top,(bot%maxring)+1)) [] size == 1 & ControllerState(cache,0,top,bot)) within -- The initial value of the cache is irrelevant, since the size is 0. ControllerState(0,0,1,1) sq~wq~°q~³q~§q~­xsq~wsq~lq~°tinputtsq~lq~³toutputq~çsq~lq~§t write.1.ackt.1.acksq~lq~§t write.2.ackt.2.acksq~lq~§t write.3.ackt.3.acksq~lq~­t read.1.ackt.1.acksq~lq~­t read.2.ackt.2.acksq~lq~­t read.3.ackt.3.acksq~lq~§t write.1.reqt.1.reqsq~lq~§t write.2.reqt.2.reqsq~lq~§t write.3.reqt.3.reqsq~lq~­t read.1.reqt.1.reqsq~lq~­t read.2.reqt.2.reqsq~lq~­t read.3.reqt.3.reqsq~lq~§twrite.1t.1sq~lq~§twrite.2t.2sq~lq~§twrite.3t.3sq~lq~­tread.1t.1sq~lq~­tread.2t.2sq~lq~­tread.3t.3xsq~wq~åq~êq~íq~ðq~óq~öq~ùxt Controllersq~wq~èq~üq~ÿq~q~q~q~ xsq~wsq~Ôtwrite.1q~§tDUAL_PROT_CTRL(write.1)tPROT_CTRL(write.1)sq~Ôtwrite.2q~§tDUAL_PROT_CTRL(write.2)tPROT_CTRL(write.2)sq~Ôtwrite.3q~§tDUAL_PROT_CTRL(write.3)tPROT_CTRL(write.3)sq~Ôtread.1q~­tDUAL_PROT_CTRL(read.1)tPROT_CTRL(read.1)sq~Ôtread.2q~­tDUAL_PROT_CTRL(read.2)tPROT_CTRL(read.2)sq~Ôtread.3q~­tDUAL_PROT_CTRL(read.3)tPROT_CTRL(read.3)xsq~wxxsq~wxt PROT_CELL(e) = |~| v2:Value @ e.req?v1 -> e.ack.v2 -> PROT_CELL(e) DUAL_PROT_CELL(e) = |~| v1:Value @ e.req.v1 -> e.ack?v2 -> DUAL_PROT_CELL(e) PROT_CTRL(e) = |~| v1:Value @ e.req.v1 -> e.ack?v2 -> PROT_CTRL(e) DUAL_PROT_CTRL(e) = |~| v2:Value @ e.req?v1 -> e.ack.v2 -> DUAL_PROT_CTRL(e)sq~wq~˜q~¡q~«xx