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
81
0
Share
圏論はどこが面白いの?
すごくなりたいがくせいLT Vol.14のための資料です
Natsu Ozawa
November 27, 2021
More Decks by Natsu Ozawa
See All by Natsu Ozawa
0の0乗
natsuozawa
0
57
15分で検索エンジニアになる
natsuozawa
0
320
Other Decks in Programming
See All in Programming
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
120
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.3k
Go_College_最終発表資料__外部公開用_.pdf
xe_pc23
0
120
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
500
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
190
Nuxt Server Components
wattanx
0
240
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
240
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
340
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
220
おれのAgentic Coding 2026/03
tsukasagr
1
130
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
310
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
840
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
95
Mind Mapping
helmedeiros
PRO
1
140
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
110
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
780
Designing for Performance
lara
611
70k
Leo the Paperboy
mayatellez
6
1.6k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Odyssey Design
rkendrick25
PRO
2
560
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
160
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
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 • 対象:圏、射:関手 • 関手圏 • 対象:関手、射:自然変換 • 続く
ありがとうございました