はじめに
数学の圏論という分野に,モナドという概念があります.モナドはプログラミング,特に関数型言語と呼ばれる種類のプログラミング言語で,型をある文脈に包むための道具としてしばしば使われます.例えば,Listモナドならある型の配列を作るので「複数の値が存在する」という文脈,Optionモナドなら値があるならそれをそのまま返して,なければNone(nullではない!)という値を持つので「値があるかもしれないし,ないかもしれない」という文脈に包まれている,といった具合です.
プログラミングの話はそのうちすることにして,ここでは純粋に数学のモナドについて,閉包作用素の一般化になっているという話をしたいと思います.
おことわり:私の数学の本のほとんどが実家にあるため,参考文献はインターネットです.誤りを見つけた場合,お手数ですがXのDMか何かにお知らせいただけると幸いです.
閉包作用素
を位相空間とします.
Def. 部分集合の閉包とは,を含む最も小さい閉集合のことを言う.
閉包について定義から次の3つのことがわかります.
- 閉包を取る操作は,包含関係を保つ
- 閉包は元の集合よりも大きい
- 閉包は2回以上とっても1回取るのと変わらない
1つ目は背理法で示すことができます.2つ目と3つ目は明らかですね.これらのことから一般の冪集合上の閉包作用素を定義することができます.
Def. をの冪集合とする.の閉包作用素とは,写像で,条件
- (単調性)
- (拡張性)
- (冪等性)
を満たすものを言う.
位相空間の部分集合に対して閉包を取る操作は,閉包作用素になっていることがわかります.
閉包作用素は関手である
まず,冪集合と圏として見ましょう.冪集合は半順序集合なので,対象と射を次のように定めることができます.
- 対象: の部分集合(の要素)
- 射: もしなら,からへの射が存在する.
これを踏まえて閉包作用素を見ると,関手になっていることがわかります.対象の対応は写像そのものであり,射の対応は単調性が担っています.
そうすると,閉包作用素というものを特徴づけているのは,拡張性と冪等性だと言うことがわかります.これらはどちらも射に関する条件です. より一般的に,を圏とすると,閉包作用素は関手であり,次の条件を満たすもの,と理解することができます.
- に対し,射が存在する
- 対象とは同型である.すなわち,射とが存在して,を満たす.
要するに,関手と射の組があるわけですね.これらを使って,ついにモナドを定義することができます!
Def. 圏上のモナドとは,
- 関手
- 自然変換
- 自然変換
の組で,以下の可換図式
結合律:
左単位律:
右単位律:
を満たすもののことを言う.
(何やら可換図式がいますが)モナドを定義することができました!
終わりに
閉包作用素から,自然にモナドの定義が現れることを見ました.単調性がそのまま関手の射の対応になると言うところが個人的には好きです.
また,可換図式についてですが,これはモナドがモノイドと深く関連していることを示しています.これについてはまた別の機会に書こうと思います.
最後までお読みいただきありがとうございました.