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
0
1.1k
5分でわかる Curry–Howard 同型対応
5分で伝えることが無茶だとわかりました
https://connpass.com/event/54292/
Susisu
May 28, 2017
Tweet
Share
More Decks by Susisu
See All by Susisu
Go で言うところのアレは TypeScript で言うとコレ / Kyoto.なんか #7
susisu
7
2.5k
君だけのオリジナル async / await を作ろう / TSKaigi 2025
susisu
19
15k
null or undefined
susisu
25
7.7k
Mackerel のフロントエンドフレームワーク移行 序章 / Hatena Engineer Seminar #13
susisu
0
2.2k
スクリーンショット撮影のために Puppeteer を操る / Kyoto.js 16
susisu
0
910
BuckleScript 使ってみた
susisu
0
360
Atom パッケージ開発のすゝめ
susisu
1
2.2k
ジェネレータを有効活用し隊 / Kyoto.js 11 LT
susisu
2
2.2k
遅延評価と健康
susisu
0
630
Other Decks in Programming
See All in Programming
CSC509 Lecture 07
javiergs
PRO
0
260
Tangible Code
chobishiba
2
100
マイベストのシンプルなデータ基盤の話 - Googleスイートとのつき合い方 / mybest-simple-data-architecture-google-nized
snhryt
0
130
Amazon ECS Managed Instances が リリースされた!キャッチアップしよう!! / Let's catch up Amazon ECS Managed Instances
cocoeyes02
0
130
HTTPじゃ遅すぎる! SwitchBotを自作ハブで動かして学ぶBLE通信
occhi
0
200
3年ぶりにコードを書いた元CTOが Claude Codeと30分でMVPを作った話
maikokojima
0
760
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
itokoh0405
0
2.8k
TransformerからMCPまで(現代AIを理解するための羅針盤)
mickey_kubo
7
6k
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
350
ボトムアップの生成AI活用を推進する社内AIエージェント開発
aku11i
0
1.5k
CSC305 Lecture 14
javiergs
PRO
0
220
モテるデスク環境
mozumasu
3
1.4k
Featured
See All Featured
For a Future-Friendly Web
brad_frost
180
10k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Docker and Python
trallard
46
3.6k
The Pragmatic Product Professional
lauravandoore
36
7k
Scaling GitHub
holman
463
140k
RailsConf 2023
tenderlove
30
1.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Visualization
eitanlees
150
16k
Git: the NoSQL Database
bkeepers
PRO
431
66k
A designer walks into a library…
pauljervisheath
209
24k
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 ʢຊޠ༁͋Δʣ