$30 off During Our Annual Pro Sale. View Details »

π計算

ytakano
November 30, 2017

 π計算

π計算のまとめ

ytakano

November 30, 2017
Tweet

More Decks by ytakano

Other Decks in Programming

Transcript

  1. π計算(π-calculus)
    ⾼野 祐輝
    情報通信研究機構 サイバーセキュリティ研究室

    View Slide

  2. 並⾏計算モデル
    • (λ計算:並⾏計算じゃないけど、基礎的なモデル)
    • π計算:プロセス代数ベースの、⾮常にシンプルな並⾏計算モデル
    • アクターモデル:チャネルの無い並⾏計算モデル
    • Join計算:化学反応プロセスのように並⾏計算を記述
    • Ambient計算:階層的な構造を持つ計算モデル。モビリティを記述可能
    2

    View Slide

  3. シンタックス
    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 ϓϩηεఆٛ

    View Slide

  4. 束縛変数と⾃由変数
    • 束縛変数
    • ⼊⼒プレフィックスa(x).Pは、P中のxを束縛(P中のxは束縛変数)
    • 新規チャネル(νx)Pは、P中のxを束縛する(P中のxは束縛変数)
    • ⾃由変数
    • 送信プレフィックスax.Pは、P中のxを束縛しない(P中のxは⾃由変数)
    4

    View Slide

  5. 束縛変数と⾃由変数の集合
    • P中にある束縛変数の集合を、bn(P)と表記(bnはbounded nameの略)
    • 例:bn(a(x).0)={x}、bn(ax)=∅
    • P中にある⾃由変数の集合を、fn(P)と表記(fnはfree nameの略)
    • 例:fn(a(x).0)={a}、fn(ax)={a, x}
    5

    View Slide

  6. α変換
    • 束縛変数の名前を変換しても等価となる
    • ただし、名前変換後の束縛変数は、既存の⾃由変数を新たに束縛しないと
    きに変換可能
    • 例
    6
    YΛZʹม׵ͯ͠΋ҙຯ͸ಉ͡
    YΛCʹม׵͢Δͱɺطଘͷࣗ༝ม਺CΛ৽ͨʹ
    ଋറͯ͠͠·͍ɺҙຯ͕มΘͬͯ͘Δʂ
    ޡྫ
    a(x).¯
    bx.0
    ม׵
    a(y).¯
    by.0
    a(x).¯
    bx.0
    ม׵
    a(b).¯
    bb.0

    View Slide

  7. 簡約
    • チャネルの送受信で簡約していく
    • (表記としてP{x0
    /y0
    , …, xn
    /yn
    }と⾔う表記を⽤いる。

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

    View Slide

  8. ⼆項演算をもつ代数の性質
    • 演算◦について
    • 亜群:◦は⼆項演算
    • 半群:◦は、結合則を満たす⼆項演算
    • モノイド:◦は、単位元をもち結合則を満たす⼆項演算

    さらに、演算が可換であるときは可換モノイドという
    • 群:◦は、単位元をもち結合則を満たす⼆項演算で、各要素が逆元を持つ
    8

    View Slide

  9. |と+の可換モノイド的性質
    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

    View Slide

  10. スコープ拡張規則
    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

    View Slide

  11. スコープ拡張規則を⽤いた簡約の例(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

    View Slide

  12. スコープ拡張規則を⽤いた簡約の例(2/2)
    • a(x).P|(νb)ab.Q かつb ∈ fn(P)、という式を考える
    • そのままではスコープ拡張規則を適⽤できないため、(νb)ab.Qをα変換し、
    (νbʼ)abʼ.Qを得る。ただし、bʼ ∉ fn(P)とする。
    • あとは同様に、(νbʼ)(a(x).P|abʼ.Q)を得て、(νbʼ)(P{x/bʼ}|Q) と簡約される
    12

    View Slide

  13. 同⼀チャネルでの複数受信
    • 同じチャネルで複数受信している場合は、⼀つだけ実⾏される
    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 Ͱ͋ΔͨΊ

    View Slide

  14. 多引数π計算
    (Polyadic π-calculus)
    • 単引数π計算(monadic π-calculus)
    • これまで説明したπ計算
    • チャネルへ同時に1つの値しか送信できない
    • 多引数π計算
    • チャネルへ同時に複数の値を送信可能
    • 以下の定義を、単引数π計算の定義へ追加
    14
    ::= ¯
    c x0, . . . , xn x0, . . . , xn
    Λνϟωϧ c ʹૹ৴
    c(x0, . . . , xn) νϟωϧ c ͔Β x0, . . . , xn
    ΁σʔλΛड৴

    View Slide

  15. 多引数π計算から単引数π計算への変換
    • 多引数の送信と受信は、プライベートチャネルを⽤いた単引数π計算へ変
    換可能
    • 送信
    • 受信
    15
    ¯
    c x0, . . . , xn
    ͸ ( d)¯
    cd. ¯
    dx0. · · · . ¯
    dxn
    ͱม׵Մೳ
    c(x0, . . . , xn) ͸ c(d).d(x0). · · · .d(xn) ͱม׵Մೳ

    View Slide

  16. 多引数から単引数π計算への変換の補⾜
    単純な変換ができない理由
    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)
    ͱͳΔՄೳੑ͕͋Γɺҙຯ͕มΘͬͯ͘ΔՄೳੑ͕͋Δɻ

    View Slide

  17. プロセスの遷移
    • π計算のプロセスの遷移はラベル付き状態遷移系で表現される
    • 例
    17
    P Q
    ¯
    ax.P ¯
    ax
    P
    .P P
    a(b).¯
    bc.0 ¯
    au
    ¯
    uc.0 ¯
    uc
    0

    View Slide

  18. π計算の操作的意味論
    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

    View Slide

  19. 推論規則を⽤いた、簡約の証明例(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 ͷূ໌ਤ

    View Slide

  20. 推論規則を⽤いた、簡約の証明例(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規則が適⽤可能

    View Slide

  21. 推論規則を⽤いた、簡約の証明例(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)

    View Slide

  22. 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
    ɻ

    View Slide

  23. 新規チャネル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)

    View Slide

  24. 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

    View Slide

  25. 新規チャネル送信のための追加規則
    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 )

    View Slide

  26. 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

    View Slide

  27. 意味的に同じとは
    • ある⼆つのプロセスが、意味的に同じとは厳密に表すとどう定義するか
    • ⼆つのプロセスが、相互に動作をシミュレートできるときに、双模倣性を
    もつと定義(意味的に同じ)
    27

    View Slide

  28. 双模倣(Bisimulation)
    • 同じ遷移をたどることの出来るプロセス同⼠は双模倣であるという
    • すなわち、あるプロセスPとQが双模倣であるとは、ある対称な⼆項関係Rに
    おいて、以下が成り⽴つことをいう

    28
    P R Q P P Q : Q Q P R Q

    View Slide

  29. 双模倣性の例
    29
    α γ
    β
    システムB
    β
    γ
    β
    γ
    システムA
    α
    α
    等価
    α
    γ
    β
    システムC
    α
    ⾮等価
    システムAとBは、イベントαの後、イベントβとγの両⽅を受理可能
    システムAとBは、外部観測的には区別できない。ブラックボックステ
    ストでは違いがわからない。
    システムCは、イベントαの後、イベントβとγの⽚⽅のみ受理可能

    View Slide

  30. 強双模倣性
    (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 ͱͳΔɻ

    View Slide

  31. 双模倣性と強双模倣性の関係
    31
    双模倣性かつ
    強双模倣性
    強双模倣性
    双模倣性
    模倣性無し
    2つのプロセスがあったとき、上記集合のいづれかに分類される

    View Slide

  32. 表記
    32
    1ͱ2͕૒໛฿ੑͰ͋Δ
    1ͱ2͕૒໛฿ੑͰͳ͍
    1ͱ2͕ڧ૒໛฿ੑͰ͋Δ
    1ͱ2͕ڧ૒໛฿ੑͰͳ͍
    νϟωϧB͔Βड৴ͯ͠1Λ࣮ߦ
    BͰड৴ͨ͠σʔλ͸ར༻͠ͳ͍ʣ
    νϟωϧCʹૹ৴ͯ͠1Λ࣮ߦ
    ʢCʹૹ৴͢Δσʔλ͸ԿͰ΋ྑ͍ʣ
    P Q
    P Q
    P ˙ Q
    P ˙ Q
    a.P
    ¯
    b.P

    View Slide

  33. 双模倣性:例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

    View Slide

  34. 双模倣性:例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 ͱͳΔɻ

    View Slide

  35. 双模倣性:例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) ͸ߟྀ͠ͳͯ͘ྑ͍ͨΊɻ
    ʢڧ૒໛฿ੑͷఆٛΑΓʣ

    View Slide

  36. 双模倣性:例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
    ͱͳΔɻ

    View Slide

  37. 双模倣性:例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
    Ͱ͋Δɻ

    View Slide

  38. 強双模倣性から得られる等価式
    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.

    View Slide

  39. 強合同性
    (strongly congruent)
    39
    ͢΂ͯͷ୅ೖ ʹରͯ͠ P ˙ Q Ͱ͋Δͱ͖ P ͱ Q ͸ڧ߹ಉͰ͋Δͱ͍͏ɻ

    View Slide

  40. 強合同性の例
    40
    P = a|¯
    b
    Q = a.¯
    b + ¯
    b.a + if a = b then
    P ͱ Q ͸ڧ߹ಉͰ͋Δɻ
    ͳͥͳΒɺ୅ೖ {a/b} ͱ {b/a} ΛؚΉશͯͷ୅ೖ ʹ͍ͭͯ P ˙ Q Ͱ͋ΔͨΊɻ

    View Slide

  41. 強合同性から得られる等価式
    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.

    View Slide

  42. π計算の例:セマフォ
    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))

    View Slide

  43. π計算の例:⾷事する哲学者問題
    43
    Phil(l, r) !l.r.(¯
    l|¯
    r)
    Chopstick(c) ¯
    c
    ೋਓͷ఩ֶऀͷ৔߹͸ҎԼͷΑ͏ʹهड़Մೳɻ
    Phil(c0, c1)|Phil(c1, c0)|Chopstick(c0)|Chopstick(c1)

    View Slide

  44. まとめ
    • π計算について説明
    • 変数について(束縛変数、⾃由変数、α変換)
    • 簡約について
    • 操作的意味論
    • プロセスの等価性(双模倣性、強双模倣性、強合同性)
    44

    View Slide

  45. EOF
    45

    View Slide