値値値値値値値値値値値値値 値値値値値値値値値値 値値値値値値値値値 値値値値値値値値値値 値値値
Feb 03, 2016
値渡しのゲームの圏における深さ優先戦略について
産業技術総合研究所システム検証研究ラボ
松岡聡
ゲーム意味論とは (歴史)
• もともとは線型論理の意味論(Blass, Abramsky & Jagadeesan)
•高階のプログラミング言語についての意味論(Abramsky一派、 Hyland & Ong)
値渡しゲームの圏 CBV
• 本田と吉田による• Hyland & Ong のポインター・名前渡しゲームの圏の変種
値渡しゲームの圏の重要性
• C言語は値渡しである• ソフトウェア検証に応用を持つ1階のプログラムならばプログラムを正確に意味を保存しつつオートマトンに変換できる
• 合成で閉じている (プログラムモジュールごとに検証可能)
例int succ(int x) {
return x+1;
}
私はsuccにいる
私 敵
int nを渡す
私
n をもらって n+1を返す
値渡しゲームの圏における意味
例2
int foo (int bar(int)) {return succ(bar(5));
}
fooにいる
私 敵
barにいる
私
bar(5)
を返す
値渡しゲームの圏における意味
5 を敵に渡す
敵 私
succ(bar(5))を返す
アリーナ(ゲーム盤)
nat= ω
例
nat->nat =
nat
nat
nat=>natここで nat=>natは singleton
{*}
アリーナ (ゲーム盤)
((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
ポラリティ
((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
プルーフネット
((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
戦略 τ(その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
戦略 τ(その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
戦略 τ(その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
戦略 τ(その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
別のアリーナ(ゲーム盤)
((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
例
ポラリティ
((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
例
プルーフ・ネット
((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
戦略 σ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
戦略 σ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
戦略 σ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
戦略 σ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
戦略 σ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
戦略 σ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
ゲームのプレー
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と τ によるプレー
いままでわかったこと
• pλ(-)を使った戦略は通常の値渡しの戦略であるが、 pλ’(-) を使った戦略も、ある種の値渡しの戦略に対応している