圏論勉強会
第5回

@ワークスアプリケーションズ

中村晃一
2013年6月13日

謝辞

この勉強会の企画,会場設備の提供をして頂きました
㈱ ワークスアプリケーションズ様
にこの場をお借りして御礼申し上げます。

この会について

  • 圏論(category theory)を題材にいろんなことを学びます。
  • 分かり易さを重視して初歩的な例を多用します。
  • 関数型言語の経験がある方がより楽しめると思います。資料中では主にHaskellを使います。
  • 中高生も数人見ているらしいのでプログラミングと関係が浅い内容も取り上げます。
  • この資料はhttp://nineties.github.com/category-seminarに置いてあります。

第5回: 様々な射

分裂冪等射

先ほど述べた様にセクションとレトラクション$s: A\rightarrow B: r,\ r\circ s=1_A$を用いて $$ e = s\circ r $$ と定義すると $$ e\circ e = s\circ r\circ s\circ r = s\circ 1_A\circ r = s\circ r = e$$ なので$e$は冪等射となります。

このようにセクションとレトラクションで表される冪等射を分裂冪等射(split idempotent)と言います。

プログラミングの文脈での冪等性

列と連結からなるモノイドにおいて$[e]$が冪等射であるとします。すると, $$ \begin{aligned} & [a,b,\cdots,x,e,e,e,e,e,y,\cdots] \\ = &[a,b,\cdots,x,e,y,\cdots] \end{aligned} $$ です。これをプログラムの命令の列だと思うと,$e$は連続して実行しても一回だけ実行しても同じ命令を表します。

例えば「ボタンを連打しても一回押しても同じ処理」、「同じ変数への同じ値の書き込み」などです。

この様にある種の冗長性(redundancy)を扱う場面で冪等性が登場する事があります。

第5回はここで終わります

お疲れ様でした。
関数によって類別や選択,包含関係などの2つの集合の関係が表現される事を見ました。 圏論では全てを射で考えるので,このような射の解釈に親しむ事がとても大切です。

次回は積・余積などを始めとする普遍的な対象について,その構成方法について説明をします。