このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

2次元の圏のための記号法

一般的な高次圏、つまりn-圏は難しくて歯が立ちません。せめて n = 2 の場合、2次元の圏くらいは扱ってみたいな、と思います。

内容:

  1. 圏の圏とDOTN
  2. 2-圏と二重圏
  3. 計算ができない

圏の圏とDOTN

圏の圏Catは2次元の圏の典型的例です。Catでの計算をするために、僕はDOTNという自前の記法を使っています。DOTNの目的と方針は:

  1. 左から右へと、目線のバックトラックなしで読み下せる。
  2. イタリック体や上付き・下付き添字を使わず、プレーンテキストとして書ける。

一番目の特徴はDiagrammatic-Order、2番目の特徴はText Notationなので、Diagrammatic-Order Text Notation です。

書体による区別は使わないので、代わりに次の約束をします。

  • 圏は、英字大文字 A, B, C など
  • 圏の対象は、英字小文字 a, b, c など
  • 圏の射は、英字小文字 f, g, h など
  • 関手は、英字大文字 F, G, H など
  • 自然変換は、ギリシャ文字小文字 α, β, γ など

「結合」が4種類あります。

  • 射の結合
  • 関手の結合
  • 自然変換の縦結合
  • 自然変換の横結合

当初(http://www.chimaira.org/docs/DOTN.htm)は、4種の結合を全部別な記号で区別してました。それをマトリックスで書くと:

f;g F;;G
α|β α*β

α|β が縦結合、α*β が横結合です。F;;G は結局 F;G に落ち着いて、実際は3種になりました。

f;g F;G
α|β α*β

3種でも多いので、α|β は α;β でもいいんじゃないか、と思います。そうなると:

f;g F;G
α;β α*β

これで問題はないのですが、気になる点が出てきました。α::F⇒G:C→D、γ:J⇒K:D→E のとき、αとγの横結合が:

  • α*γ::F;J⇒G;K:C→E

となりますが、これは、α*γ::F*J⇒G*K :C→E と同じ記号(星印)になって欲しいのです。それで、関手の結合を F*G に変更したのがDOTN二号です。

f;g F*G
α;β α*β

2-圏と二重圏

圏の圏Catは2-圏の例です。2次元の圏の一般的なものは双圏で、2-圏は双圏を単純化したものです。

圏の圏Catの対象(0-セル)は圏なので、内部に対象や射を持ちます。一般的な2-圏の対象はもはや内部構造を持たない単なる“点”なので、2-圏の計算で使う結合は3種類になります。1-セルの結合、2-セルの縦結合、2-セルの横結合です。

F*G
α;β α*β

2次元の圏には、双圏や2-圏とは別な形のものがあります。二重圏double category)です。二重圏は、次の構成要素を持ちます。

  1. 0-セル(対象)
  2. 縦1-セル(縦射)
  3. 横1-セル(横射)
  4. 2-セル

「結合」は4種類あります。

  1. 縦1-セルの結合
  2. 横1-セルの結合
  3. 2-セルの縦結合
  4. 2-セルの横結合

二重圏は過去にもけっこう話題にしています。

二重圏は圏の圏ではありませんが、DOTNの約束を流用して、縦1-セルをf, gなど、横1-セルをF, Gなどで表し、結合の記号も流用すると:

f;g F*G
α;β α*β

僕が考える二重圏は、横1-セルがプログラムを表し、2-セルがプログラムのあいだの模倣関係を表すものです。そして、横1-セルの結合(横結合)は、プログラムの順次結合です。順次結合だと、記号はどうしても「;」を使いたくなります。そうなると:

f|g F;G
α|β α;β

この記法では、横結合は次元によらず「;」、縦結合は次元によらず「|」です。

計算ができない

n-圏は概念的にも難しいですが、具体的計算もままならないです。演算の対象となるモノ(セル)の種類が多く、演算(結合)も何種類もあります。これらを区別する方法(例えば書体)も使える記号も数に限りがあります。記号・記法をオーバーロードして使い回すしかなく、そうなると多義性・曖昧性で混乱しがちです。

n-圏の計算ができるプログラミング言語があればいいのですが、合理的で使いやすい構文がイメージすらできませんね。あー、難しい。