Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
5分でわかる Curry–Howard 同型対応
Search
Susisu
May 28, 2017
Programming
1.2k
0
Share
5分でわかる Curry–Howard 同型対応
5分で伝えることが無茶だとわかりました
https://connpass.com/event/54292/
Susisu
May 28, 2017
More Decks by Susisu
See All by Susisu
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.5k
Go で言うところのアレは TypeScript で言うとコレ / Kyoto.なんか #7
susisu
7
2.7k
君だけのオリジナル async / await を作ろう / TSKaigi 2025
susisu
19
15k
null or undefined
susisu
25
7.9k
Mackerel のフロントエンドフレームワーク移行 序章 / Hatena Engineer Seminar #13
susisu
0
2.3k
スクリーンショット撮影のために Puppeteer を操る / Kyoto.js 16
susisu
0
980
BuckleScript 使ってみた
susisu
0
420
Atom パッケージ開発のすゝめ
susisu
1
2.3k
ジェネレータを有効活用し隊 / Kyoto.js 11 LT
susisu
2
2.3k
Other Decks in Programming
See All in Programming
エージェンティックRAGにAWSで入門しよう!
har1101
7
1.1k
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.9k
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
920
AIとRubyの静的型付け
ukin0k0
0
540
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
230
dRuby over BLE
makicamel
2
320
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
140
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
450
さぁV100、メモリをお食べ・・・
nilpe
0
130
Featured
See All Featured
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.6k
Writing Fast Ruby
sferik
630
63k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
530
Being A Developer After 40
akosma
91
590k
Become a Pro
speakerdeck
PRO
31
6k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
Transcript
Ͱ Θ ͔ Δ C u r
r y – H o w a rd ಉ ܕ ର Ԡ 2 0 1 7 - 0 5 - 2 8 ୈ 6 ճ O U CC LT ձ
͓ લ ୭ ͩ susisu / @susisu2413 • JavaScript
• Haskell • きんいろモザ イク
͢͜ͱ ୯७ܕ͖ϥϜμܭࢉ ࣗવԋ៷ʢ໋ཧʣ Curry–HowardಉܕରԠ System
F ͤͳ͍͜ͱʢ࣌ؒతʹʣ w ϥϜμܭࢉͷৄࡉ w ड़ޠཧ w ݹయཧͱ؍ओٛཧ
୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ
୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ w
ϥϜμܭࢉʜ୯७ͳϓϩάϥϛϯάݴޠΈ͍ͨͳͷ w ม w ؔ w ؔద༻ͷͭͷΈ w ؔܕϓϩάϥϛϯάͷཧతͳج൫ w ୯७ܕ͖ϥϜμܭࢉͦΕʹܕΛ͚ͭͨͷͷɺ ࠷؆୯ͳͷ
୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ t
::= -- ߲ x -- ม λx: T. t -- λநʢؔʣ t t -- ؔద༻ T ::= -- ܕ X -- ܕม T → T -- ؔͷܕ
୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ w
ܕ͚نଇ࣍ͷΑ͏ͳܗͰॻ͘ ʮલఏ͕ͯ͢Γཱͭͱ͖ɺ݁Γཱͭʯ w લఏ݁࣍ͷΑ͏ͳܗࣜ ʮจ຺ΓͷԼͰɺ߲ tTͱ͍͏ܕΛͭʯ ৈଥ (0 ڎΤࣣ) ٗ ` t : T
୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ x
: A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B
ࣗ વ ԋ ៷
ࣗ વ ԋ ៷ w ཧֶͷܗࣜମܥͷͻͱͭ w ཧతʹਖ਼໋͍͠ʢఆཧʣ จ຺ʹΑΒͣ߃ʹਅͳ໋ w
ܗࣜମܥͦͷΑ͏ͳఆཧΛಋͨ͘Ίͷͷ w ͳΜ͔ࣗવͬΆ͍ʢਓ͕ؒߦ͏ਪʹࣅ͍ͯΔʣ w ͜ͷεϥΠυͰ໋ཧͷൣғΈߟ͑·͢
ࣗ વ ԋ ៷ P ::= -- ໋ X --
໋ม P → P -- ཧแؚʮͳΒʯ P ∧ P -- ཧੵʮ͔ͭʯ P ∨ P -- ཧʮ·ͨʯ ¬P -- ൱ఆ
ࣗ વ ԋ ៷ w ಋग़نଇ࣍ͷΑ͏ͳܗͰॻ͘ ʮલఏ͕ͯ͢Γཱͭͱ͖ɺ݁Γཱͭʯ w લఏ݁࣍ͷΑ͏ͳܗࣜ ʮจ຺ΓͷԼͰɺP߃ʹਅʯ
ৈଥ (0 ڎΤࣣ) ٗ ` P
ࣗ વ ԋ ៷ A 2 ` A , A
` B ` A ! B ` A ! B ` A ` B
ࣗ વ ԋ ៷ A 2 ` A , A
` B ` A ! B ` A ! B ` A ` B x : A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B ୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ
ࣗ વ ԋ ៷ A 2 ` A , A
` B ` A ! B ` A ! B ` A ` B x : A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B ୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ ໋㱻ܕ
ࣗ વ ԋ ៷ A 2 ` A , A
` B ` A ! B ` A ! B ` A ` B x : A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B ୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ Curry–Howard ಉܕରԠ
ࣗ વ ԋ ៷ A 2 ` A , A
` B ` A ! B ` A ! B ` A ` B x : A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B ୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ ͱΜ͔ͭDJ
C u r r y – H o w a
rd ಉ ܕ ର Ԡ ଞͷཧԋࢉࢠʹؔͯ͠ରԠΛߟ͑Δ͜ͱͰ͖Δ ࣗ વ ԋ ៷ ୯ ७ ܕ ͖ ϥϜ μ ܭ ࢉ ໋ ܕ ఆ ཧ ߲ ͕ ଘ ࡏ ͢ Δ ܕ ཧ แ ؚ → ؔ ͷ ܕ →
C u r r y – H o w a
rd ಉ ܕ ର Ԡ ϥϜμܭࢉͰɺ͋Δܕͷ߲͕ଘࡏ͢Δ͜ͱΛࣔ͢ ରԠ͢Δ໋ʢఆཧʣͷূ໌ → ূ໌ࢧԉγεςϜʢ$PRͳͲʣ ϥϜμܭࢉͷ߲ʢϓϩάϥϜʣΛॻ͘ ίϯϐϡʔλʔ͕ܕΛ֬ೝ ఆཧ͕ূ໌Ͱ͖ͨ
Sy s t e m F
Sy s t e m F w ֊ͷܕ͖ϥϜμܭࢉ ୯७ܕ͖ϥϜμܭࢉ ܕʹؔ͢Δந
w ໋ཧͷൣғΛશͯΧόʔͰ͖Δ ܕʹؔ͢ΔநͰཧԋࢉࢠΛΤϯίʔυՄೳ
Sy s t e m F t ::= -- ߲
x -- ม λx: T. t -- λநʢؔʣ t t -- ؔద༻ ΛX. t -- ܕʹؔ͢Δநʢؔʣ t [T] -- ܕͷద༻ T ::= -- ܕ X -- ܕม T → T -- ௨ৗͷؔͷܕ ∀X. T -- શশྔԽ͞Εͨܕ
Sy s t e m F , X ` t
: A ` ⇤X. t : 8X. A ` t : 8X. A ` t [B] : [X 7! B]A
Sy s t e m F ֤छཧԋࢉࢠͷΤϯίʔυҎԼͷͱ͓Γ A ^ B
⌘ 8X. ((A ! B ! X) ! X) ! X A _ B ⌘ 8X. ((A ! X) ! (B ! X) ! X) ! X ? ⌘ 8X. X ¬A ⌘ A ! ? 9X. A ⌘ 8Y. (8X. A ! Y ) ! Y
Sy s t e m F w ূ໌ࢧԉγεςϜͬΆ͍ͷΛ࣮ͯ͠Έͨ IUUQTHJUIVCDPNTVTJTVTZTUFNGKTJNQM w
σϞʢ͕࣌ؒ͋ΕʣʢͨͿΜ࣌ؒͳ͍ʣ
· ͱ Ί
· ͱ Ί w Curry–HowardಉܕରԠཧֶͱϓϩάϥϜͷؒͷ ରԠؔ w System FΛ࣮͢Δͷָ͔ͬͨ͠ʢंྠͷ࠶ൃ໌ʣ ࣗ
વ ԋ ៷ ܕ ͖ ϥϜ μ ܭ ࢉ ໋ ܕ ఆ ཧ ߲ ͕ ଘ ࡏ ͢ Δ ܕ
λ→ λ2 λω λ ω λP λPω λP2 λC
λ→ λ2 λω λ ω λP λPω λP2 λC ୯७ܕ͖ϥϜμܭࢉ
System F System Fω (Haskell) CoC (Coq)
λ→ λ2 λω λ ω λP λPω λP2 λC ୯७ܕ͖ϥϜμܭࢉ
System F System Fω (Haskell) CoC (Coq) :zenzenyowai:
ࢀ ߟ จ ݙ • ஜେֶͷܭࢉཧֶͷߨٛࢿྉ http://www.cs.tsukuba.ac.jp/~kam/complogic/ • ޒेཛྷ ३,
ϓϩάϥϛϯάݴޠͷجૅ֓೦, αΠΤϯε ࣾ, 2011 • B. C. Pierce, Types and Programming Languages, The MIT press, 2002 ʢຊޠ༁͋Δʣ