250 likes | 358 Views
値渡しのゲームの圏における 深さ優先戦略について. 産業技術総合研究所 システム検証研究ラボ 松岡聡. ゲーム意味論とは ( 歴史). もともとは線型論理の意味論 (Blass, Abramsky & Jagadeesan) 高階のプログラミング言語についての意味論 (Abramsky 一派、 Hyland & Ong). 値渡しゲームの圏 CBV. 本田と吉田による Hyland & Ong のポインター・名前渡しゲームの圏の変種. 値渡しゲームの圏の重要性. C 言語は値渡しである ソフトウェア検証に応用を持つ
E N D
値渡しのゲームの圏における深さ優先戦略について値渡しのゲームの圏における深さ優先戦略について 産業技術総合研究所 システム検証研究ラボ 松岡聡
ゲーム意味論とは(歴史) • もともとは線型論理の意味論 (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)); } 値渡しゲームの圏における意味 私 敵 私 敵 私 barにいる 5を敵に渡す succ(bar(5))を返す fooにいる 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 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=>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)=>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=>nat)=>(nat=>nat)=>(nat=>nat)=>nat (((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat
戦略τ(その1) nat nat 13 nat 12 nat nat nat 8 nat nat 10 nat 11 nat=>nat nat nat=>nat 7 nat 9 (nat=>nat)=>nat nat=>nat 6 nat=>nat (nat=>nat)=>nat=>nat 5 nat=>nat 4 (nat=>nat)=>(nat=>nat)=>nat nat (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2 (((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat 1
戦略τ(その2) nat nat nat nat nat nat nat 17 nat nat nat=>nat nat 16 nat=>nat nat (nat=>nat)=>nat nat=>nat nat=>nat 15 (nat=>nat)=>nat=>nat nat=>nat (nat=>nat)=>(nat=>nat)=>nat 14 nat (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2 (((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat 1
戦略τ(その3) nat 21 nat nat nat 20 nat nat nat nat nat nat=>nat 19 nat nat=>nat nat (nat=>nat)=>nat 18 nat=>nat nat=>nat 15 (nat=>nat)=>nat=>nat nat=>nat (nat=>nat)=>(nat=>nat)=>nat 14 nat (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2 (((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat 1
戦略τ(その4) nat nat nat nat nat 22 nat nat nat nat nat=>nat 19 nat nat=>nat nat (nat=>nat)=>nat 18 nat=>nat nat=>nat 15 (nat=>nat)=>nat=>nat nat=>nat (nat=>nat)=>(nat=>nat)=>nat 14 nat 23 (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2 (((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat)=>nat 1
別のアリーナ(ゲーム盤) 例 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=>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=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat
プルーフ・ネット 例 3 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->nat)->(nat->nat)->nat
戦略σ1(pλ(-)を使った)(その1) nat nat nat nat nat nat nat=>nat nat 10 nat nat=>nat 19 nat=>nat nat 17 nat 9 nat 16 (nat=>nat)=>nat 18 (nat=>nat)=>nat=>nat nat=>nat 15 nat=>nat 4 (nat=>nat)=>(nat=>nat)=>nat 14 (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2
戦略σ1(pλ(-)を使った)(その2) nat nat 12 nat 21 nat nat 11 nat 20 nat=>nat nat nat nat=>nat 19 nat=>nat 6 nat nat nat (nat=>nat)=>nat 18 (nat=>nat)=>nat=>nat 5 nat=>nat 15 nat=>nat 4 (nat=>nat)=>(nat=>nat)=>nat 14 (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2
戦略σ1(pλ(-)を使った)(その3) nat 13 nat nat nat8 nat nat nat 22 nat=>nat 7 nat nat=>nat 19 nat=>nat 6 nat nat nat (nat=>nat)=>nat 18 (nat=>nat)=>nat=>nat 5 nat=>nat 15 nat=>nat 4 (nat=>nat)=>(nat=>nat)=>nat 14 (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2
戦略σ2(pλ’(-)を使った)(その1) nat nat nat nat nat nat nat=>nat nat 10 nat nat=>nat nat=>nat nat 17 nat 9 nat 16 (nat=>nat)=>nat (nat=>nat)=>nat=>nat nat=>nat 15 nat=>nat 4 (nat=>nat)=>(nat=>nat)=>nat 14 (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2
戦略σ2(pλ’(-)を使った)(その2) nat nat 12 nat 21 nat nat11 nat20 nat=>nat nat nat nat=>nat19 nat=>nat 6 nat nat nat (nat=>nat)=>nat 18 (nat=>nat)=>nat=>nat 5 nat=>nat 15 nat=>nat 4 (nat=>nat)=>(nat=>nat)=>nat 14 (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2
戦略σ2(pλ’(-)を使った)(その3) nat 13 nat nat nat 8 nat nat nat 22 nat=>nat 7 nat nat=>nat 19 nat=>nat 6 nat nat nat (nat=>nat)=>nat 18 (nat=>nat)=>nat=>nat 5 nat=>nat 15 nat=>nat 4 (nat=>nat)=>(nat=>nat)=>nat 14 (nat=>nat)=>(nat=>nat)=>nat=>nat 3 ((nat=>nat)=>(nat=>nat)=>nat=>nat)=>(nat=>nat)=>(nat=>nat)=>nat 2
ゲームのプレー σ1とτによるプレー σ2とτによるプレー
いままでわかったこと • pλ(-)を使った戦略は通常の値渡しの戦略であるが、pλ’(-) を使った戦略も、ある種の値渡しの戦略に対応している