25
値値値値値値値値値値値値値 値値値値値値値値値値 値値値値値値値値値 値値値値値値値値値値 値値値

値渡しのゲームの圏における 深さ優先戦略について

  • Upload
    wilton

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

値渡しのゲームの圏における 深さ優先戦略について. 産業技術総合研究所 システム検証研究ラボ 松岡聡. ゲーム意味論とは ( 歴史). もともとは線型論理の意味論 (Blass, Abramsky & Jagadeesan) 高階のプログラミング言語についての意味論 (Abramsky 一派、 Hyland & Ong). 値渡しゲームの圏 CBV. 本田と吉田による Hyland & Ong のポインター・名前渡しゲームの圏の変種. 値渡しゲームの圏の重要性. C 言語は値渡しである ソフトウェア検証に応用を持つ - PowerPoint PPT Presentation

Citation preview

Page 1: 値渡しのゲームの圏における 深さ優先戦略について

値渡しのゲームの圏における深さ優先戦略について

産業技術総合研究所システム検証研究ラボ

松岡聡

Page 2: 値渡しのゲームの圏における 深さ優先戦略について

ゲーム意味論とは (歴史)

• もともとは線型論理の意味論(Blass, Abramsky & Jagadeesan)

•高階のプログラミング言語についての意味論(Abramsky一派、 Hyland & Ong)

Page 3: 値渡しのゲームの圏における 深さ優先戦略について

値渡しゲームの圏 CBV

• 本田と吉田による• Hyland & Ong のポインター・名前渡しゲームの圏の変種

Page 4: 値渡しのゲームの圏における 深さ優先戦略について

値渡しゲームの圏の重要性

• C言語は値渡しである• ソフトウェア検証に応用を持つ1階のプログラムならばプログラムを正確に意味を保存しつつオートマトンに変換できる

• 合成で閉じている (プログラムモジュールごとに検証可能)

Page 5: 値渡しのゲームの圏における 深さ優先戦略について

例int succ(int x) {

return x+1;

}

私はsuccにいる

私 敵

int nを渡す

n をもらって n+1を返す

値渡しゲームの圏における意味

Page 6: 値渡しのゲームの圏における 深さ優先戦略について

例2

int foo (int bar(int)) {return succ(bar(5));

}

fooにいる

私 敵

barにいる

bar(5)

を返す

値渡しゲームの圏における意味

5 を敵に渡す

敵 私

succ(bar(5))を返す

Page 7: 値渡しのゲームの圏における 深さ優先戦略について

アリーナ(ゲーム盤)

nat= ω

nat->nat =

nat

nat

nat=>natここで nat=>natは singleton

{*}

Page 8: 値渡しのゲームの圏における 深さ優先戦略について

アリーナ (ゲーム盤)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat

(nat=>nat)=>(nat=>nat)=>nat(nat=>nat)=>(nat=>nat)=>

nat=>nat

nat=>nat (nat=>nat)=>nat=>nat

nat

nat

nat=>nat nat=>n

at

(nat=>nat)=>nat

nat=>nat

natnat

nat

nat=>nat

nat

nat nat nat

natnat

(((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat

nat

Page 9: 値渡しのゲームの圏における 深さ優先戦略について

ポラリティ

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat

(nat=>nat)=>(nat=>nat)=>nat(nat=>nat)=>(nat=>nat)=>

nat=>nat

nat=>nat (nat=>nat)=>nat=>nat

nat

nat

nat=>nat nat=>n

at

(nat=>nat)=>nat

nat=>nat

natnat

nat

nat=>nat

nat

nat nat nat

natnat

(((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat

nat

Page 10: 値渡しのゲームの圏における 深さ優先戦略について

プルーフネット

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat

(nat=>nat)=>(nat=>nat)=>nat(nat=>nat)=>(nat=>nat)=>

nat=>nat

nat=>nat(nat=>nat)=>nat=>nat

nat

nat

nat=>nat nat=>n

at

(nat=>nat)=>nat

nat=>nat

natnat

nat

nat=>nat

natnat

natnat

natnat

(((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat

nat

Page 11: 値渡しのゲームの圏における 深さ優先戦略について

戦略 τ(その1)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat(nat=>nat)=>(nat=>nat)=>

nat=>nat 3

nat=>nat 4

(nat=>nat)=>nat=>nat 5

nat 9

nat 10

nat=>nat 6 nat=>n

at

(nat=>nat)=>nat

nat=>nat

natnat

nat

nat=>nat 7

nat 11

nat 12

nat 13nat

8 natnat

(((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat 1

nat

Page 12: 値渡しのゲームの圏における 深さ優先戦略について

戦略 τ(その2)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat 14(nat=>nat)=>(nat=>nat)=>

nat=>nat 3

nat=>nat (nat=>nat)=>nat=>nat

nat

nat

nat=>nat nat=>nat

15

(nat=>nat)=>nat

nat=>nat

natnat

nat

nat=>nat

nat

nat nat nat

nat 16

nat 17

(((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat 1

nat

Page 13: 値渡しのゲームの圏における 深さ優先戦略について

戦略 τ(その3)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat 14(nat=>nat)=>(nat=>nat)=>

nat=>nat 3

nat=>nat (nat=>nat)=>nat=>nat

nat

nat

nat=>nat nat=>nat

15

(nat=>nat)=>nat 18

nat=>nat 19

natnat 20

nat 21

nat=>nat

nat

nat nat nat

nat nat

(((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat 1

nat

Page 14: 値渡しのゲームの圏における 深さ優先戦略について

戦略 τ(その4)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat 14(nat=>nat)=>(nat=>nat)=>

nat=>nat 3

nat=>nat (nat=>nat)=>nat=>nat

nat

nat

nat=>nat nat=>nat

15

(nat=>nat)=>nat 18

nat=>nat 19

nat 22

nat nat

nat=>nat

nat

nat nat nat

nat nat

(((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat 1

nat 23

Page 15: 値渡しのゲームの圏における 深さ優先戦略について

別のアリーナ(ゲーム盤)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat

(nat=>nat)=>(nat=>nat)=>nat

(nat=>nat)=>(nat=>nat)=>nat=>nat

nat=>nat

(nat=>nat)=>nat=>nat

nat

natnat=>nat

nat=>nat

(nat=>nat)=>nat

nat=>nat

natnat

nat

nat=>nat

natnat

natnat

natnat

Page 16: 値渡しのゲームの圏における 深さ優先戦略について

ポラリティ

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat

(nat=>nat)=>(nat=>nat)=>nat

(nat=>nat)=>(nat=>nat)=>nat=>nat

nat=>nat

(nat=>nat)=>nat=>nat

nat

natnat=>nat

nat=>nat

(nat=>nat)=>nat

nat=>nat

natnat

nat

nat=>nat

natnat

natnat

natnat

Page 17: 値渡しのゲームの圏における 深さ優先戦略について

プルーフ・ネット

((nat->nat)->(nat->nat)->nat->nat)->(nat->nat)->(nat->nat)->nat

(nat->nat)->(nat->nat)->nat

(nat->nat)->(nat->nat)->nat->nat

nat->nat

(nat->nat)->nat->nat

nat

natnat->nat

nat=>nat

(nat=>nat)=>nat

nat=>nat

natnat

nat

nat->natnat

natnat

nat

natnat

例3

Page 18: 値渡しのゲームの圏における 深さ優先戦略について

戦略 σ1(p λ(-)を使った)(その1)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat 14

(nat=>nat)=>(nat=>nat)=>nat=>nat 3

nat=>nat 4

(nat=>nat)=>nat=>nat

nat 9

nat 10 nat=>na

t

nat=>nat 15

(nat=>nat)=>nat 18

nat=>nat 19

natnat

nat

nat=>nat

natnat

natnat

nat 16

nat 17

Page 19: 値渡しのゲームの圏における 深さ優先戦略について

戦略 σ1(p λ(-)を使った)(その2)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat 14

(nat=>nat)=>(nat=>nat)=>nat=>nat 3

nat=>nat 4

(nat=>nat)=>nat=>nat 5

nat

nat nat=>nat 6

nat=>nat 15

(nat=>nat)=>nat 18

nat=>nat 19

natnat 20

nat 21

nat=>natnat 11

nat 12 natnat

nat nat

Page 20: 値渡しのゲームの圏における 深さ優先戦略について

戦略 σ1(p λ(-)を使った)(その3)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat 14

(nat=>nat)=>(nat=>nat)=>nat=>nat 3

nat=>nat 4

(nat=>nat)=>nat=>nat 5

nat

nat nat=>nat 6

nat=>nat 15

(nat=>nat)=>nat 18

nat=>nat 19

nat 22nat nat

nat=>nat 7

nat nat nat

13nat 8

nat nat

Page 21: 値渡しのゲームの圏における 深さ優先戦略について

戦略 σ2(p λ’(-)を使った)(その1)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat 14

(nat=>nat)=>(nat=>nat)=>nat=>nat 3

nat=>nat 4

(nat=>nat)=>nat=>nat

nat 9

nat 10 nat=>na

t

nat=>nat 15

(nat=>nat)=>nat

nat=>nat

natnat

nat

nat=>nat

natnat

natnat

nat 16

nat 17

Page 22: 値渡しのゲームの圏における 深さ優先戦略について

戦略 σ2(p λ’(-)を使った)(その2)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat 14

(nat=>nat)=>(nat=>nat)=>nat=>nat 3

nat=>nat 4

(nat=>nat)=>nat=>nat 5

nat

nat nat=>nat 6

nat=>nat 15

(nat=>nat)=>nat 18

nat=>nat 19

natnat 20

nat 21

nat=>nat

n at 11

nat 12

natnat

nat nat

Page 23: 値渡しのゲームの圏における 深さ優先戦略について

戦略 σ2(p λ’(-)を使った)(その3)

((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2

(nat=>nat)=>(nat=>nat)=>nat 14

(nat=>nat)=>(nat=>nat)=>nat=>nat 3

nat=>nat 4

(nat=>nat)=>nat=>nat 5

nat

nat nat=>nat 6

nat=>nat 15

(nat=>nat)=>nat 18

nat=>nat 19

nat 22 nat

nat

nat=>nat 7

n atnat nat

13nat 8

nat nat

Page 24: 値渡しのゲームの圏における 深さ優先戦略について

ゲームのプレー

1 2 3 14

15

18

19

4 5 6 7 8 9 16

17

10

11

20

21

12

13

22

23

1 2 3 14

15

4 5 18

19

6 7 8 9 16

17

10

11

20

21

12

13

22

23

σ1と τ によるプレー

σ2と τ によるプレー

Page 25: 値渡しのゲームの圏における 深さ優先戦略について

いままでわかったこと

• pλ(-)を使った戦略は通常の値渡しの戦略であるが、 pλ’(-) を使った戦略も、ある種の値渡しの戦略に対応している