Upgrade to Pro — share decks privately, control downloads, hide ads and more …

π計算

ytakano
November 30, 2017

 π計算

π計算のまとめ

ytakano

November 30, 2017
Tweet

More Decks by ytakano

Other Decks in Programming

Transcript

  1. シンタックス 3 ::= ¯ cx x Λνϟωϧ c ʹૹ৴ c(x)

    νϟωϧ c ͔Β x ΁σʔλΛड৴ ΠϯλϥΫγϣϯແ͠ P, Q ::= 0 ۭϓϩηε .P લॲཧ෇͖ϓϩηε P|Q P ͱ Q ͷฒߦ߹੒ P + Q P ͱ Q ͷඇܾఆతબ୒ ( c)P P தʹείʔϓ੍͕ݶ͞Εͨ৽نνϟωϧ c if x = y then P ৚݅෇͖࣮ߦʢϚονʣ if x = y then P ৚݅෇͖࣮ߦʢΞϯϚονʣ A(y1, . . . , yn) ϓϩηεݺͼग़͠ ::= A(xi, . . . , xn) P ϓϩηεఆٛ
  2. α変換 • 束縛変数の名前を変換しても等価となる • ただし、名前変換後の束縛変数は、既存の⾃由変数を新たに束縛しないと きに変換可能 • 例 6 YΛZʹม׵ͯ͠΋ҙຯ͸ಉ͡

    YΛCʹม׵͢Δͱɺطଘͷࣗ༝ม਺CΛ৽ͨʹ ଋറͯ͠͠·͍ɺҙຯ͕มΘͬͯ͘Δʂ ޡྫ a(x).¯ bx.0 ม׵ a(y).¯ by.0 a(x).¯ bx.0 ม׵ a(b).¯ bb.0
  3. 簡約 • チャネルの送受信で簡約していく • (表記としてP{x0 /y0 , …, xn /yn

    }と⾔う表記を⽤いる。
 これは、P中の⾃由変数xi をyi (0 ≦ i ≦ n)で置換するという意味) • 例 7 ʢԿ΋ೖྗແ͠Ͱ؆໿͞ΕΔͨΊɺ໼ҹͷ্ʹНͱදهʣ a(x).P|¯ ab.Q P{x/b}|Q
  4. |と+の可換モノイド的性質 9 P|Q Q|P P + Q Q + P

    (P|Q) P|(Q|P) (P + Q) + R P + (Q + R) P|0 P P + P P
  5. スコープ拡張規則 10 ( x)0 0 ( x)(P|Q) P|( x)Q if

    x / fn(P) ( x)(P + Q) P + ( x)Q if x / fn(P) ( x)if u = v then P if u = v then ( x)P if x / {u, v} ( x)if u = v then P if u = v then ( x)P if x / {u, v} ( x)( y)P ( y)( x)P
  6. スコープ拡張規則を⽤いた簡約の例(1/2) • a(x).P|(νb)ab.Q という式を考える • b ∉ fn(a(x).P) であるため(b ∉

    fn(P)と仮定)、(νb)(a(x).P|ab.Q)と変換可能 • よって、(νb)(P{x/b}|Q) と簡約される 11
  7. 同⼀チャネルでの複数受信 • 同じチャネルで複数受信している場合は、⼀つだけ実⾏される 13 P =!a(x), Q = ¯ ay

    ͷͱ͖ P|Q ͸ҎԼͷΑ͏ʹ؆໿͞ΕΔ P|Q =!a(x)|¯ ay (a(x)|!a(x))|¯ ay (a(x)|¯ ay)!a(x) 0|!a(x) !a(x) = P !P P|!P Ͱ͋ΔͨΊ
  8. 多引数π計算 (Polyadic π-calculus) • 単引数π計算(monadic π-calculus) • これまで説明したπ計算 • チャネルへ同時に1つの値しか送信できない

    • 多引数π計算 • チャネルへ同時に複数の値を送信可能 • 以下の定義を、単引数π計算の定義へ追加 14 ::= ¯ c x0, . . . , xn x0, . . . , xn Λνϟωϧ c ʹૹ৴ c(x0, . . . , xn) νϟωϧ c ͔Β x0, . . . , xn ΁σʔλΛड৴
  9. 多引数π計算から単引数π計算への変換 • 多引数の送信と受信は、プライベートチャネルを⽤いた単引数π計算へ変 換可能 • 送信 • 受信 15 ¯

    c x0, . . . , xn ͸ ( d)¯ cd. ¯ dx0. · · · . ¯ dxn ͱม׵Մೳ c(x0, . . . , xn) ͸ c(d).d(x0). · · · .d(xn) ͱม׵Մೳ
  10. 多引数から単引数π計算への変換の補⾜ 単純な変換ができない理由 16 ¯ c x0, . . . ,

    xn ͔Β ¯ cx0.¯ cx1. · · · .¯ c.xn ͱ୯७ʹม׵͢Δͱ͏·͍͔͘ͳ͍৔߹͕͋Δɻྫ͑͹ ¯ c x, y |c(z, w)|c(z, w) c(x, y) Λ୯७ʹม׵͢Δͱ ¯ cx.¯ cy|c(z).c(w)|c(z).c(w) ¯ cy|c(w)|c(z).c(w) c(w)|c(w) ͱͳΔՄೳੑ͕͋Γɺҙຯ͕มΘͬͯ͘ΔՄೳੑ͕͋Δɻ
  11. π計算の操作的意味論 18 PREFIX .P P MATCH P P P +

    Q P STRUCT P P P Q Q Q P Q MISMATCH P P x = y if x = y then P P SUM P P P + Q P PAR P P bn( ) fn(Q) = P|Q P |Q COM P a(x) P Q ¯ au Q P|Q P {x/u}|Q RES P P x / ( x)P ( x)P
  12. 推論規則を⽤いた、簡約の証明例(1/3) 19 a(b).¯ bc.0 a(u).¯ uc.0 a(u).¯ uc.0 a(u) ¯

    uc.0 PREFIX ¯ uc.0 ¯ uc.0 a(b).¯ bc.0 a(u) ¯ uc.0 STRUCT a(b).¯ bc.0 a(u) ¯ uc.0 ͷূ໌ਤ
  13. 推論規則を⽤いた、簡約の証明例(2/3) 20 a(x).P a(x) P PREFIX (a(x).P)|Q a(x) P|Q PAR

    ¯ au.R ¯ au R PREFIX ((a(x).P)|Q)|¯ au.R (P|Q){x/u}|R COM ((a(x).P)|Q)|¯ au.R (P|Q){x/u}|R ͷূ໌ਤ PAR規則により、Q中に⾃由な変数xが現れないことが 保証されているため、COM規則が適⽤可能
  14. 推論規則を⽤いた、簡約の証明例(3/3) 21 ( x)(a(b).P|¯ ac.Q) ( x)(P{b/c}|Q) ͷূ໌ਤ a(b).P a(b)

    P PREFIX ¯ ac.Q ¯ ac Q PREFIX a(b).P|¯ ac.Q P{b/c}|Q COM ( x)(a(b).P|¯ ac.Q) ( x)(P{b/c}|Q) RES (ࣜ 1)
  15. RES規則の考察 • αがa(b)かabのとき、(νx)a(b).Pと(νx)ab.Pはどう簡約されるか? • a≠x、b≠xのときのみRES規則が適⽤可能 • a=xのとき • (νx)a(b).P =

    (νx)x(b).P ≡ 0 (新規チャネルxへ送信してくる⼈はいない) • (νx)ab.P = (νx)xb.P ≡ 0 (新規チャネルxを待ち受けている⼈はいない) • b=xのとき(ただし、a≠x) • (νx)a(b).P = (νx)a(x).Pのとき、(νx)のxは使われない。つまり • (νx)ab = (νx)ax.Pは、そのままの意味。新規チャネルxを作成し、チャネルaへ送信。 22 ( x)P x / fn(P) P ɻ
  16. 新規チャネルxを既存チャネルaに送信する場合 • (νx)ax.Qは、a(b).P|(νx)ax.Qとなるとき、(νx)(P{b/x}|Q)と簡約される • すなわち、 23 (ࣜ 2) (ࣜ 1)

    ( x)(a(b).P|¯ ax.Q) ( x)(P{b/x}|Q) a(b).P|( x)¯ ax.Q ( x)(P{b/x}|Q) STRUCT x / fn(P) {a} a(b).P|( x)¯ ax.Q ( x)(a(b).P|¯ ax.Q) (ࣜ 2)
  17. a(b).P|(νx)ax.Qから(νx)(P{b/x}|Q)への簡約の 完全な証明図(前ページの完全版) 24 x / fn(P) {a} a(b).P|( x)¯ ax.Q

    ( x)(a(b).P|¯ ax.Q) a(b).P a(b) P PREFIX ¯ ax.Q ¯ ax Q PREFIX a(b).P|¯ ax.Q P{b/x}|Q COM ( x)(a(b).P|¯ ax.Q) ( x)(P{b/x}|Q) RES a(b).P|( x)¯ ax.Q ( x)(P{b/x}|Q) STRUCT
  18. 新規チャネル送信のための追加規則 25 (ただし、これらは必須な規則ではなく、あくまでもオプショナル) ͜͜Ͱɺ ¯ a x ͸νϟωϧ a ʹ৽نνϟωϧ

    x Λૹ৴͢Δ͜ͱΛҙຯ͢Δɻ ͳ͓ɺ fn(¯ a x) = {a}, bn(¯ a x) = {x} ͱͳΔɻ OPEN P ¯ ax P a = x ( x)P ¯ a x P RCOM P a(x) P Q ¯ a u Q u / fn(P) P|Q ( u)(P {x/u}|Q )
  19. OPENとRCOM規則を⽤いた a(b).P|(νx)ax.Qの証明 26 a(b).P a(b) P PREFIX ¯ ax.Q ¯

    ax Q PREFIX, a = x ( x)¯ ax.Q ¯ a x Q OPEN a(b).P|( x)¯ ax.Q ( x)(P{b/x}|Q) RCOM
  20. 双模倣性の例 29 α γ β システムB β γ β γ

    システムA α α 等価 α γ β システムC α ⾮等価 システムAとBは、イベントαの後、イベントβとγの両⽅を受理可能 システムAとBは、外部観測的には区別できない。ブラックボックステ ストでは違いがわからない。 システムCは、イベントαの後、イベントβとγの⽚⽅のみ受理可能
  21. 強双模倣性 (Strong Bisimilarity) • π計算では、以下の強模倣性の定義により、プロセスの同値性を定義する 30 ରশͳೋ߲ؔ܎ R ͕ҎԼΛΈͨ͢ͱ͖ʹɺϓϩηε P

    ͱ Q ͸ڧ૒໛฿Ͱ͋Δͱ͍͏ɻ P R Q P P ͜͜Ͱɺ bn( ) ͸৽نͰ͋Δʢ͢ͳΘͪɺ bn( ) (fn(P) fn(Q) = ) ͷͱ͖ɺ 1. = a(x) ͳΒ͹ɺ Q : Q a(x) Q u : P {x/u} R Q {x/u} ͱͳΔɻ 2. ͕ೖྗͰͳ͍ͳΒ͹ɺ Q : Q Q P R Q ͱͳΔɻ
  22. 双模倣性:例1 33 P ͷՄೳͳભҠ͸ҎԼͱͳΔɻ P a ¯ b ¯ b

    0 P ¯ b a a 0 Ұํ Q ͸ҎԼͷભҠ͔͠ͱΕͳ͍ɻ Q a ¯ b ¯ b 0 ͕ͨͬͯ͠ɺ P Q ͔ͭɺ P ˙ Q ͱͳΔɻ P = a|¯ b Q = a.¯ b
  23. 双模倣性:例2 34 P = a|¯ b Q = a.¯ b

    + ¯ b.a P ͷՄೳͳભҠ͸ҎԼͱͳΔɻ P a ¯ b ¯ b 0 P ¯ b a a 0 Q ͷՄೳͳભҠ΋ಉ༷ʹҎԼͱͳΔɻ Q a ¯ b ¯ b 0 Q ¯ b a a 0 ͕ͨͬͯ͠ɺ P Q ͔ͭ P ˙ Q ͱͳΔɻ
  24. 双模倣性:例3 35 P = a(u) Q = a(x).( v)¯ vu

    P a(u) 0 ͱͳΔ͕ Q ͸͜ΕΛγϛϡϨʔτͰ͖ͳ͍ɻ ͳͥͳΒ u ͸ࣗ༝ͳม਺ͷͨΊ x Λ u ʹ ม׵Ͱ͖ͳ͍ͨΊɻ ͕ͨͬͯ͠ P Q ͱͳΔɻ Ұํ P ˙ Q ͱͳΔɻ ͳͥͳΒ bn(a(u)) (fn(P) fn(Q)) = {u} = Ͱ͋Γɺ a(u) ͸ߟྀ͠ͳͯ͘ྑ͍ͨΊɻ ʢڧ૒໛฿ੑͷఆٛΑΓʣ
  25. 双模倣性:例4 36 P1 = a(x).P + a(x).0 P2 = a(x).P

    + a(x).0 + a(x).if x = u then P P1 ͸ x ͷ஋ʹؔΘΒͣҎԼͷભҠΛͱΔɻ P1 a(x) P P1 a(x) 0 P2 ͸ҎԼͷભҠͱͳΔɻ P2 a(x) P P2 a(x) 0 P2 a(x) if x = u then P ͜͜Ͱɺ3 ͭΊͷભҠ͸ x ʹґଘͯ͠ҎԼͷΑ͏ʹͳΔɻ P2 a(y=u) 0 (if y = u then P ͷͨΊ) P2 a(x=u) P (if u = u then P ͷͨΊ) ͜ΕΒͷભҠ͸ P1 ͰγϛϡϨʔτՄೳͳͨΊ P1 P2 ͱͳΔɻ
  26. 双模倣性:例4の続き 37 P1 = a(x).P + a(x).0 P2 = a(x).P

    + a(x).0 + a(x).if x = u then P Ұํ P ˙ 0 ͷͱ͖ P1 ˙ P2 ͱͳΔɻͳͥͳΒɺ P2 a(x) if x = u then P ͸ P1 ʹΑͬͯɺ͢΂ͯͷ୅ೖ {x/u} ΛγϛϡϨʔτͰ͖ͳ͍ͨΊͰ͋Δɻ ͕ͨͬͯ͠ P1 P2 ͔ͭ P1 ˙ P2 Ͱ͋Δɻ
  27. 強双模倣性から得られる等価式 38 STR If P Q then P = Q

    CG1 If P = Q then ¯ au.P = ¯ au.Q .P = .Q P + R = Q + R P|R = Q|R ( x)P = ( x)Q CG2 If P{x/y} = Q{x/y} for all y fn(P, Q, x) then a(x).P = a(x).Q S P + P = P M1 (if x = x then P) = P M2 (if x = y then P) = 0 if x = y MM1 (if x = x then P) = 0 MM2 (if x = y then P) = P if x = y R1 ( x) .P = .( x)P if x / R2 ( x) .P = 0 if = ¯ xy or = x(y) R3 ( x)(P + Q) = ( x)P + ( x)Q Parrow, J. (2001). An Introduction of the π calculus. In Bergs, Poise, Smolka (Eds.), Handbook of Process Algebra. Elsevier.
  28. 強合同性の例 40 P = a|¯ b Q = a.¯ b

    + ¯ b.a + if a = b then P ͱ Q ͸ڧ߹ಉͰ͋Δɻ ͳͥͳΒɺ୅ೖ {a/b} ͱ {b/a} ΛؚΉશͯͷ୅ೖ ʹ͍ͭͯ P ˙ Q Ͱ͋ΔͨΊɻ
  29. 強合同性から得られる等価式 41 STR If P Q then P = Q

    CG “=” is preserved by all operators S P + P = P MM1 (if x = x then P) = 0 GM1 (if M then P) = (if N then P) if M N GM2 (if x = y then P + if x = y then P) = P GM3 (if M then (P + Q)) = (if M then P + if M then Q) GM4 (if M then .P) = (if M then ( .if M then P)) if bn( ) / M GM5 (if x = y then .P) = (if x = y then ( {y/x}).P) GM6 (( x)if x = y then P) = 0 if x = y R1 ( x) .P = .( x)P if x / R2 ( x) .P = 0 if = ¯ xy or = x(y) R3 ( x)(P + Q) = ( x)P + ( x)Q Parrow, J. (2001). An Introduction of the π calculus. In Bergs, Poise, Smolka (Eds.), Handbook of Process Algebra. Elsevier.
  30. π計算の例:セマフォ 42 Sem(r) ¯ r Get(r) r Rel(r) ¯ r

    ϓϩηε P ͱ Q ͷഉଞ࣮ߦ͸ҎԼͷΑ͏ʹهड़Մೳɻ ( r)(Sem(r)|!Get(r).P.Rel(r)|!Get(r).Q.Rel(r)) ͨͩ͠ r ͸৽نม਺Ͱ͋Δ (r / fn(P) fn(Q))
  31. π計算の例:⾷事する哲学者問題 43 Phil(l, r) !l.r.(¯ l|¯ r) Chopstick(c) ¯ c

    ೋਓͷ఩ֶऀͷ৔߹͸ҎԼͷΑ͏ʹهड़Մೳɻ Phil(c0, c1)|Phil(c1, c0)|Chopstick(c0)|Chopstick(c1)