Resumption-Based Categorical Geometry of Interaction for ...kmuroya/talks/bsc.pdf ·...

Post on 12-Oct-2020

2 views 0 download

Transcript of Resumption-Based Categorical Geometry of Interaction for ...kmuroya/talks/bsc.pdf ·...

1

Resumption-Based Categorical

Geometry of Interaction for Effects

室屋晃子 (蓮尾研究室)

2014年2月12日

2

Resumption-Based Categorical

Geometry of Interaction for Effects

室屋晃子 (蓮尾研究室)

2014年2月12日

Naohiko Hoshino, Koko Muroya, Ichiro Hasuo,

Memoryful Geometry of Interaction:From Coalgebraic Components fo Algebraic Effects,

submitted to LICS '14

3

目的

プログラムを

ステートマシンに

変換する

● 高階関数型プログラミング● 計算効果つき

非決定的、確率的、量子

L I Rq/0 q/0 q/1 q/1

● sequential machine● stream transducer● Mealy machine

4

目的

プログラムを

ステートマシンに

変換する

←for effects

←resumption-based

←categorical Geometry

 of Interaction

● 高階関数型プログラミング● 計算効果つき

非決定的、確率的、量子

L I Rq/0 q/0 q/1 q/1

5

ステートマシンへの変換例

非決定的な選択

6

ステートマシンへの変換例

I

λf. (f 1)+1

λf. f 0

λx. x

L I Rq/n0 q/n0 q/n1

q/n1

7

先行研究 [Hasuo & Hoshino, LICS'11]

プログラムを

パイプに

変換する

● 高階関数型プログラミング● 計算効果つき

非決定的、確率的、量子

categorical Geometry of Interaction[Abramsky, Haghverdi & Scott, MSCS'02]

realizability[Longley, PhD thesis]

8

: 確率的

: 非決定的

: 計算効果なし

先行研究 [Hasuo & Hoshino, LICS'11]

パイプ = 関数 + 計算効果

f

A

B

モナド

a0 a1 a2 ...

b0 b1 b2 ...

9

: 確率的

: 非決定的

: 計算効果なし

先行研究 [Hasuo & Hoshino, LICS'11]

パイプ = 関数 + 計算効果

モナド

a0 a1 a2 ...

b0 b1 b2 ...

f

A

B

10

: 確率的

: 非決定的

: 計算効果なし

先行研究 [Hasuo & Hoshino, LICS'11]

パイプ = 関数 + 計算効果

モナド

a0 a1 a2 ...

b0 b1 b2 ...

f

A

B

11

: 確率的

: 非決定的

: 計算効果なし

先行研究 [Hasuo & Hoshino, LICS'11]

パイプ = 関数 + 計算効果

モナド

a0 a1 a2 ...

b0 b1 b2 ...

0.1 0.20.5

f

A

B

12

パイプへの変換例

λx. xλf. f 0

適用→パイプの相互接続

評価→トークンの動き

   パイプ間のやりとり

13

パイプへの変換例

λx. xλf. f 0

適用→パイプの相互接続

評価→トークンの動き

   パイプ間のやりとり

λf. f 0 λx. x

ask: f

ask: x

ans: x = 0

ans: f 0 = 0

ans: 0

14

パイプへの変換例

λx. xλf. f 0

適用→パイプの相互接続

評価→トークンの動き

   パイプ間のやりとり

λf. f 0 λx. x

ask: f

ask: x

ans: x = 0

ans: f 0 = 0

ans: 0

15

パイプへの変換例

λx. xλf. f 0

適用→パイプの相互接続

評価→トークンの動き

   パイプ間のやりとり

λf. f 0 λx. x

ask: f

ask: x

ans: x = 0

ans: f 0 = 0

ans: 0

16

パイプへの変換例

λx. xλf. f 0

適用→パイプの相互接続

評価→トークンの動き

   パイプ間のやりとり

λf. f 0 λx. x

ask: f

ask: x

ans: x = 0

ans: f 0 = 0

ans: 0

17

パイプへの変換例

λx. xλf. f 0

適用→パイプの相互接続

評価→トークンの動き

   パイプ間のやりとり

λf. f 0 λx. x

ask: f

ask: x

ans: x = 0

ans: f 0 = 0

ans: 0

18

パイプへの変換例

λx. xλf. f 0

適用→パイプの相互接続

評価→トークンの動き

   パイプ間のやりとり

λf. f 0 λx. x

ask: f

ask: x

ans: x = 0

ans: f 0 = 0

ans: 0

19

パイプへの変換例

λx. xλf. f 0

適用→パイプの相互接続

評価→トークンの動き

   パイプ間のやりとり

λf. f 0 λx. x

ask: f

ask: x

ans: x = 0

ans: f 0 = 0

ans: 0cf. ゲーム意味論

[Abramsky, Jagadeesan & Malacaria, '00][Hyland & Ong, '00]

20

パイプへの変換例

21

パイプへの変換例

22

パイプへの変換例

23

パイプへの変換例

⊕ λf. (f 1)+1λf. f 0 λx. x

24

パイプへの変換例

⊕ λf. (f 1)+1λf. f 0 λx. x

25

パイプへの変換例

⊕ λf. (f 1)+1λf. f 0 λx. x

26

パイプへの変換例

⊕ λf. (f 1)+1λf. f 0 λx. x

ans: f 0 = 0

27

パイプへの変換例

⊕ λf. (f 1)+1λf. f 0 λx. x

ans: f 0 = 0

28

パイプへの変換例

⊕ λf. (f 1)+1λf. f 0 λx. x

ans: 1

29

パイプへの変換例

⊕ λf. (f 1)+1λf. f 0 λx. x

ans: 1

「記憶」が必要 「記憶」が必要

30

「記憶」の実現

プログラム +「記憶」

パイプ +「記憶」

31

「記憶」の実現

プログラム +「記憶」→ 継続渡し形式

パイプ +「記憶」→ ステートマシン

[Hasuo & Hoshino, LICS'11]

[Abramsky, Haghverdi & Scott, MSCS'02] で説明

32

「記憶」の実現

プログラム +「記憶」→ 継続渡し形式

パイプ +「記憶」→ ステートマシン

[Hasuo & Hoshino, LICS'11]

[Abramsky, Haghverdi & Scott, MSCS'02] で説明

今回の成果:

ステートマシンの具体的構成を与える

→ 計算効果つき高階プログラムの変換の

  一般的フレームワーク

今回の成果:

ステートマシンの具体的構成を与える

→ 計算効果つき高階プログラムの変換の

  一般的フレームワーク

33

: 確率的

: 非決定的

: 計算効果なし

「記憶」の埋め込み

ステートマシン = パイプ + 内部状態

cx

A

B

モナド

34

ステートマシンへの変換例

I

λf. (f 1)+1

λf. f 0

λx. x

L I R

35

ステートマシンへの変換例

I

λf. (f 1)+1

λf. f 0

λx. x

L I R

2項演算子 ↓

ステートマシン上の2項演算

36

ステートマシンへの変換例

L

λf. (f 1)+1

λf. f 0

λx. x

L I R

2項演算子 ↓

ステートマシン上の2項演算

37

ステートマシンへの変換例

R

λf. (f 1)+1

λf. f 0

λx. x

L I R

2項演算子 ↓

ステートマシン上の2項演算

38

ステートマシンへの変換例

I

λf. (f 1)+1

λf. f 0

λx. x

L I R

39

今回の成果

プログラムをステートマシンに変換する

一般的フレームワーク

● 高階関数型プログラミング● 計算効果つき

40

今回の成果

プログラムをステートマシンに変換する

一般的フレームワーク

1.計算効果をモデルする

an algebraic operation α on a monad

2.ステートマシンを modular に構成する

3.ステートマシンによる表示的意味論を与える

a category on resumptions

● 高階関数型プログラミング● 計算効果つき

41

今回の成果

プログラムをステートマシンに変換する

一般的フレームワーク

1.計算効果をモデルする

an algebraic operation α on a monad

2.ステートマシンを modular に構成する

3.ステートマシンによる表示的意味論を与える

a category on resumptions

● 高階関数型プログラミング● 計算効果つき

投稿版

卒論

42

今後の展望

具体的な計算効果に対する応用● 非決定的計算、確率的計算● 量子計算

関連手法との比較● Geometry of Synthesis [Ghica, ICFP'11 など]

高階関数型のプログラムを論理回路に変換する

[Hasuo & Hoshino, LICS'11]の簡略化?

「記憶」の埋め込み?