Download - [(F#における)Modus Ponens と Cut]

Transcript
Page 1: [(F#における)Modus Ponens と Cut]

[(F#における)Modus Ponensと Cut ]

Nobuhisa Koizumi

Page 2: [(F#における)Modus Ponens と Cut]

Profile

• ハイパーK泉さん

• 近況:ピーナッツ

Page 3: [(F#における)Modus Ponens と Cut]

[(F#における)Modus Ponensと Cut ]

Nobuhisa Koizumi

Page 4: [(F#における)Modus Ponens と Cut]

Modus Ponens

Page 5: [(F#における)Modus Ponens と Cut]

Modus Ponens

A → A → B → B

A A → B

B

A → (A → B) → B

(A → B) → B

※ A ⋀ A → B → B

Page 6: [(F#における)Modus Ponens と Cut]

Modus Ponens

A → A → B → B

> 1 |> (fun x -> (x, x)) ;;val it : int * int = (1, 1)

Page 7: [(F#における)Modus Ponens と Cut]

Modus Ponens

A → A → B → B

> 1 |> (fun x -> (x, x)) ;;val it : int * int = (1, 1)

> ( |> ) ;;val it : ('a -> ('a -> 'b) -> 'b) = <fun:it@21-2>

Page 8: [(F#における)Modus Ponens と Cut]

[(F#における)Modus Ponensと Cut ]

Nobuhisa Koizumi

Page 9: [(F#における)Modus Ponens と Cut]

Cut

Γ → Δ, 𝐴 𝐴, Π → ∑

Γ, Π → Δ,∑

Page 10: [(F#における)Modus Ponens と Cut]

Cut

(A → B) → B → C → (A → C)

A A → B

B

(B → C) → (A → C)

※ A → B ⋀ B → C → (A → C)

Γ → Δ, 𝐴 𝐴, Π → ∑

Γ, Π → Δ,∑

B → C

C

A → C

(A → B) → (B → C) → (A → C)

Page 11: [(F#における)Modus Ponens と Cut]

Cut

(A → B) → B → C → (A → C)

> (1, 2) |> (fst >> float) ;;val it : float = 1.0

Page 12: [(F#における)Modus Ponens と Cut]

Cut

(A → B) → B → C → (A → C)

> (1, 2) |> (fst >> float) ;;val it : float = 1.0

> ( >> ) ;;val it : (('a -> 'b) -> ('b -> 'c) -> 'a -> 'c) = <fun:it@30-5>

Page 13: [(F#における)Modus Ponens と Cut]

カリー・ハワード同型対応(Curry–Howard isomorphism)

命題論理 ↔ 型付きラムダ計算

Page 14: [(F#における)Modus Ponens と Cut]

“37221” 事件

Page 15: [(F#における)Modus Ponens と Cut]

F# 37221

Page 16: [(F#における)Modus Ponens と Cut]

F# 37221

ダメ!ゼッタイ!

Page 17: [(F#における)Modus Ponens と Cut]

[(F#における)Modus Ponensと Cut ]

Nobuhisa Koizumi

おしまい