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
圏論はどこが面白いの?
Search
Natsu Ozawa
November 27, 2021
Programming
0
68
圏論はどこが面白いの?
すごくなりたいがくせいLT Vol.14のための資料です
Natsu Ozawa
November 27, 2021
Tweet
Share
More Decks by Natsu Ozawa
See All by Natsu Ozawa
0の0乗
natsuozawa
0
45
15分で検索エンジニアになる
natsuozawa
0
250
Other Decks in Programming
See All in Programming
PHPはいつから死んでいるかの調査
chiroruxx
2
420
Ruby Pattern Matching
bkuhlmann
0
930
DMMプラットフォームがTiDB Cloudを採用した背景
pospome
9
4.2k
try! Swift Tokyo 初参加報告LT
hinakko2
0
240
Tailwind CSSを本気でカスタマイズする方法
fsubal
14
5.5k
Git Rebase
bkuhlmann
11
1.6k
Deep Dive into React Stream/Serialize
mugi_uno
3
690
Netty Chicago Java User Group 2024-04-17
sullis
0
200
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
6
430
Domain-Driven Transformation
hschwentner
2
1.5k
GitHub Copilotのススメ
marcy731
1
230
使ってみよう Azure AI Document Intelligence
kosmosebi
2
360
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
504
110k
Design by the Numbers
sachag
274
18k
Making the Leap to Tech Lead
cromwellryan
125
8.5k
Rails Girls Zürich Keynote
gr2m
91
13k
Typedesign – Prime Four
hannesfritz
36
2.1k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
26
2.3k
How STYLIGHT went responsive
nonsquared
92
4.8k
Designing with Data
zakiwarfel
96
4.8k
Testing 201, or: Great Expectations
jmmastey
30
6.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
358
22k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Transcript
圏論はどこが面白いの? Natsu Ozawa
自己紹介 • Computer Science @ エジンバラ大学(UK) • 9月から渡英!
今はまっているもの 圏論(Category Theory)
今はまっているもの
カリー=ハワード同型対応
圏論の目的 構造と構造の関係を抽象化する!
圏論の目的 数学 論理学 情報学 哲学 圏論
圏の定義 圏(category)Cとは、以下の組 • 対象(object) 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, … • 射(morphism)
𝑓𝑓: a → b, g: b → c, … a b c f g
圏のルール(1) • 射の合成(composition) 𝑔𝑔 ∘ 𝑓𝑓: 𝑎𝑎 → 𝑐𝑐 a
b c f g 𝒈𝒈 ∘ 𝒇𝒇
圏のルール(2) • 結合律(associativity) (ℎ ∘ 𝑔𝑔) ∘ 𝑓𝑓 = ℎ
∘ (𝑔𝑔 ∘ 𝑓𝑓) a b c f g 𝒈𝒈 ∘ 𝒇𝒇 d h 𝒉𝒉 ∘ 𝒈𝒈 𝒉𝒉 ∘ 𝒈𝒈 ∘ 𝒇𝒇
圏のルール(3) • 恒等射(identity) 𝑖𝑖𝑖𝑖𝑎𝑎 : 𝑎𝑎 → 𝑎𝑎, 𝑓𝑓 ∘
𝑖𝑖𝑖𝑖𝑎𝑎 = 𝑓𝑓 = 𝑖𝑖𝑖𝑖𝑏𝑏 ∘ 𝑓𝑓 a b f 𝒊𝒊𝒊𝒊𝒂𝒂 𝒊𝒊𝒊𝒊𝒃𝒃
圏の例(1) 集合全体の圏:Sets • 対象=集合 0,1 , 1 , ∅, ℝ,
… • 射=写像 𝑓𝑓 𝑥𝑥 = 𝑥𝑥 + 1, 𝑔𝑔 𝑥𝑥 = 𝑥𝑥 𝑚𝑚𝑚𝑚𝑚𝑚 2 ℝ ℝ {0,1} f g
圏の例(2) プログラミング言語の型全体の圏:Types • 対象=型 Bool, Int, Float, … • 射=関数
f x = x + 1, g x = isOdd x Float Float Bool f g
他の抽象的構造との比較 • 群、位相空間なども物事を一般化した構造 • 圏はもっと包括的 • 例:群は圏でもある • 対象:適当に1つ定める、射:台集合の要素、合成:二項演算 •
例:群全体の圏も存在する • 対象:群、射:群の準同型、合成:準同型の合成 • 圏論では抽象的構造間の関係を取り扱う(後述)
関手の定義 • 構造を維持する圏と圏の対応 圏Cから圏Dへの関手 (functor)𝐹𝐹: 𝐶𝐶 → 𝐷𝐷は • Cの各対象をDの対象に対応
• Cの各射をDの射に対応 a b f 𝒊𝒊𝒊𝒊𝒂𝒂 𝒊𝒊𝒊𝒊𝒃𝒃 a’ b’ f’ 𝒊𝒊𝒊𝒊𝒂𝒂𝒂 𝒊𝒊𝒊𝒊𝒃𝒃𝒃 C D
関手のルール • 𝐹𝐹(𝑓𝑓: 𝑎𝑎 → 𝑏𝑏)はF a → F(b) •
𝐹𝐹 𝑔𝑔 ∘ 𝑓𝑓 = 𝐹𝐹(𝑔𝑔) ∘ 𝐹𝐹(𝑓𝑓) • 𝐹𝐹 𝑖𝑖𝑖𝑖𝑎𝑎 = 𝑖𝑖𝑖𝑖𝐹𝐹(𝑎𝑎) 準同型みたい!! a b f 𝒊𝒊𝒊𝒊𝒂𝒂 𝒊𝒊𝒊𝒊𝒃𝒃 a’ b’ f’ 𝒊𝒊𝒊𝒊𝒂𝒂𝒂 𝒊𝒊𝒊𝒊𝒃𝒃𝒃 C D
積の概念の一般化 a, bの積とは • 𝑎𝑎, 𝑏𝑏への射を持つ対象であり、 • 𝑎𝑎, 𝑏𝑏への射を持つ全ての対象cに 対して
• 𝑝𝑝𝑝𝑝𝐴𝐴 ∘ 𝑚𝑚 = 𝑓𝑓, 𝑝𝑝𝑝𝑝𝐵𝐵 ∘ 𝑚𝑚 = 𝑔𝑔を満たす • 射m: 𝑐𝑐 → 𝑎𝑎 × 𝑏𝑏が一つだけ存在す る a c b f 𝒑𝒑𝒑𝒑𝑩𝑩 𝒂𝒂 × 𝒃𝒃 𝒑𝒑𝒑𝒑𝑨𝑨 g m
積の例 Setsでは直積 TypesではPair/tuple a c b f snd (a, b)
fst g m
SetsとTypesの同型対応 Sets Types {0,1} Bool 𝕫𝕫 Int 𝐴𝐴 × 𝐵𝐵
(A, B) ∅ HaskellのVoid {1} (), Javaのvoid 写像 関数 … … Sets Types
まとめ • 圏論は構造を抽象化して、それらの関係を表す言語 • 特に、積などの概念を一般化することができる • 関手が規定される、2つの関係なさそうな構造が似ている!と 示せるところが面白い
圏論を学ぼう! • Category Theory for Programmersは日本語に翻訳されてるらしい (友達曰く) • 他にも難しい本なら沢山あるよ
ボーナス • 集合論にはラッセルのパラドックスにより無限という概念に限 りがあった • 集合全体の集合は作ることができるのか?つまり、集合はそれ自体を 要素として含むことができるのか? • 受け入れると矛盾に繋がる •
圏論は無限という概念の拡張がしやすい • (小さい)圏全体の圏:Cat • 対象:圏、射:関手 • 関手圏 • 対象:関手、射:自然変換 • 続く
ありがとうございました