process-example - ichiro-satoh.jpichiro-satoh.jp/lectures/model/2018/process-example.pdf · Ichiro...
Transcript of process-example - ichiro-satoh.jpichiro-satoh.jp/lectures/model/2018/process-example.pdf · Ichiro...
Ichiro Satoh
i\¹´¿Lk·À°¯i\�jq�
%Z8&.XY;
�b�x
Ichiro Satoh
·À°¯i\�¢¥jq
n Ã/į³¸���¥�_�R����¥� |�u�ÃT��PÄ�US���·À°¯i\���jq
n ��� ��o���¤}W����u���oô±Ä���¥��}W���
n ¨©½ÁÃ�Åu�¡�NÄ�V|R�/c�¦¥�^�¥
n s��������¨©½Á�]2�+��'!��#�
n ¯³¸* ·À°¯i\�jq��¥
n �ż¬�|�*yO(
Ichiro Satoh
jq�
Match = strike.0def
VM = coin.coffee.VMdef
Clock = tick.Clockdef
Light = turnOn.turnoff.Light def
Ichiro Satoh
w=�NÃChoice OperatorÄ
n E�B¡�1§d�
n P � Q�·À°¯3�£��P+Q ·À°¯3n P+Q�����
n �P�C���¨©½Á§/c�¦� P+Q�P���>¥a��s�Ê�C���¨©½Á§/c�¦�P+Q�Ê���>¥a�
VM = coin.(button1.coffee.VM + buton2.tea.VM)
tea
coffee
Ichiro Satoh
Example
CM = coin.coffee.CMdef
CS = coin.coffee.CSdef
CS | CM
Ichiro Satoh
ExampleCM CS
coin
coffeecoffee
coin
pubCM | CS
CS|CM|CS’
CM CS
coin
coffeecoffee
coin
pub
CS’
coin
coffee pub
Ichiro Satoh
jq�
n u�·Àµ«¿
n r��(S)����(R)�u�²º¶¿(C)
S = send.ÃS’ | TÄS’ = dataS.start.(acks.S+timeout.S’)
T = start.timeout.T
C = dataS.(dataR.C+τ.C) + ackR.(ackS.C+τ.C)
R = dataR.ackR.receive.R
Ichiro Satoh
`�l)H��
Ichiro Satoh
jq�
n u�·Àµ«¿
n r��(S)����(R)�u�²º¶¿(C)
S = send.S’S’ = dataS.start.(ackS.stop.S+timeout.S’)
T = start.(timeout.T+stop.T)
C = dataS.(dataR.C+τ.C) + ackR.(ackS.C+τ.C)
R = dataR.ackR.receive.R
Ichiro Satoh
0{
n ?�9$k�5��3§0{
S|T|C|R = send.S’ | start.(timeout.T+stop.T) |
dataS.(dataR.C+τ.C) + ackR.(ackS.C+τ.C) | dataR.ackR.receive.R
→ dataS.start.(ackS.stop.S+timeout.S’) | start.(timeout.T+stop.T) | dataS.(dataR.C+τ.C) + ackR.(ackS.C+τ.C) | dataR.ackR.receive.R (�A)
send
Ichiro Satoh
0{
→ start.(ackS.stop.S+timeout.S’) | start.(timeout.T+stop.T) | dataR.C+τ.C | dataR.ackR.receive.R
→ ackS.stop.S+timeout.S’ | timeout.T+stop.T | dataR.C+τ.C | dataR.ackR.receive.R
���0{��¤�¥ (�B)
→ ackS.stop.S+timeout.S’ | timeout.T+stop.T | C | ackR.receive.R
τ(dataS)
τ(start)
τ(dataR)
Ichiro Satoh
0{
→ ackS.stop.S+timeout.S’ | timeout.T+stop.T | dataS.(dataR.C+τ.C) + ackR.(ackS.C+τ.C) | ackR.receive.R
→ ackS.stop.S+timeout.S’ | timeout.T+stop.T | ackS.C+τ.C | receive.R
→ ackS.stop.S+timeout.S’ | timeout.T+stop.T | ackS.C+τ.C | R
���0{��¥ (�C)
→ stop.S+timeout.S’ | timeout.T+stop.T | C | R
→ S | T | C | R
τ(ackR)
receive
τ(ackS)
τ(stop)
Ichiro Satoh
0{
→ ackS.stop.S+timeout.S’ | timeout.T+stop.T | dataR.C+τ.C | dataR.ackR.receive.R
→ ackS.stop.S+timeout.S’ | timeout.T+stop.T | C | dataR.ackR.receive.R
→ S’ | T | C | dataR.ackR.receive.R
= dataS.start.(ackS.stop.S+timeout.S’) | start.(timeout.T+stop.T) | dataS.(dataR.C+τ.C) + ackR.(ackS.C+τ.C) | dataR.ackR.receive.R Ã�A�"�Ä
τ
τ(timeout)
(�B)
Ichiro Satoh
→ ackS.stop.S+timeout.S’ | timeout.T+stop.T | ackS.C+τ.C | R
���0{��¥
→ stop.S+timeout.S’ | timeout.T+stop.T | C | R→ S | T | C | R
���
→ ackS.stop.S+timeout.S’ | timeout.T+stop.T | C | R→ S’ | T | C | R
τ(ackS)
τ(send)
0{
τ
τ(timeout)
(�C)
Ichiro Satoh
Alternating Bit Protocol
Sender ReceiverTrans
Ack
send0send1
trans0trans1
reply0reply1
ack0ack1
accept deliver
Sender,Receiver�0,1�M:§ ��T<�£Q�¥M:���§���¥�M:§�p��¥
�DM: Sender=0, Receiver=1
t��u�n����I,¡fe���� ��7��¥u���_
Ichiro Satoh
ABP�jq(Sender,Receiver)
Ichiro Satoh
ABP�jq(Trans,Ack)
Ichiro Satoh
AR�9$��
n Ã�G�[�7,·À°¯�Fv§d�K\-Ä
CCS K\- |,\},0,.,{ +a[�7 4�G�[��hJ[��hJ!"�³¯µ[�
CSP K\- },\;|||,||,,,,,{ aSTOPa®[�7 ,@~!9$k
��¨·À²Å[�7§[3~!�����£ÈÌË�L6��
ÆÇÉ (Baeten, Bergstra 1986)
zg�7mÅ!"7 QP = ��� ][][ QCPC =·Àª¾¸�¹®»Â¿7