田原設備

2026/07/14 23:15

田原設備

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

このテキストでは、Tambara モジュールに関連付けられた profunctor オプティクスを通じてトラバーサルオプティクスがどのように表現されるかを説明しています。中心的な洞察は、オプティクスがモノイダル作用と Tambara モジュールの交点に位置し、Tannakian 再構成理論との関連性を持っていることです。Mateusz Stroiński の論文「Module categories, internal bimodules and Tambara modules」に従い、Tambara モジュールは双圏(proarrow equipment)における水平矢印として扱われます。その指導的なスローガンは、「Tambara モジュールはモノイダルフルンクターに対して、profunctors はフルンクターのようになる」というものです。

豊潤化された圏論的設定において、Tambara モジュールは actegories(0-cell)間の接続役を果たし、1-cell は余 end を通じて合成される Tambara モジュールで、2-cell は自然変換によって構成される双圏を形成します。この枠組みでは、モノイダルフルンクターに沿った Tambara モジュールの持ち上げと制限を通じて、追加の 2-cell を定義することで proarrow equipment が拡張されます。Endo-Tambara モジュールは、profunctor 合成をテンソル積、ホム関数を単位とするモノイダル双圏を与えます。

実用的には Haskell の場合、Tambara モジュールはモノイダル圏内の左作用の互換性を表す typeclass としてモデル化されることができます。オプティクスは可表な profunctors に対する自由な Tambara モジュールとして定義され、Yoneda 簡約を通じて導出可能です。余関手のようなアジュンクションの活用(特に右副関手)と Yoneda 簡約を組み合わせることで、構造を積分する効果的に機能させながら、乗法オプティクスと加法オプティクスの実装を効率よく導出でき、車輪の再発明なしに実現できます。したがって、トラバーサルにおいて使用される多項式関手から構築された抽象は、直積とカリーアのアジュンクションを通じて具体的に Haskell コードとして直接変換されます。この仕事は理論的な圏論を実用的な関数型プログラミングと統合し、次世代のデータ操作ライブラリのための堅牢な基盤を提供します。

本文

タムバラ・モジュールと Optics の圏論的再構成

元々、Haskell の Optics(光学的ビュー)を理解する過程で圏論の世界に魅了されました。当初は van Laarhoven 表現や Kmett の Tambara モジュールについて戸惑っていましたが、Yoneda 補題と対話を通じて徐々に理解を深め、Oxford University で開催された「適用圏論(Applied Category Theory)」アドジャント・スクールのTravel Optics課題に挑み、教授(Profunctor)に関する進展を論文として発表することができました。

核心となる概念の関係

Optics は以下の数学的構造の交点に位置しています。

  • モノイダル作用
  • Tambara モジュール

これらには以下のような双対関係が存在します。数学者が「Tannakian reconstruction(タンナキアン再構成)」と呼ぶ考え方に関連しており、ある代数対象をそのすべての表現全体の集合から復元する操作に対応します。

キャッチフレーズ

Tambara モジュールはモノイダル関手に対して、Profunctor は通常の関手に対するものである

この双圏(double category)的な枠組みの主な利点は、それを**enriched categories(増幅圏)**に対して即座に適用可能な点にあります。


1. モノイダル関手の簡略化

厳密な定義よりも直感的理解を優先し、対象に関する制約を省いた簡略化された版本を用います。

  • alpha'
    alpha
    の逆写像です。
  • 結合可能であり、その合成もまたモノイダル関手となります。
    • Haskell の型チェッカーを助けるため、型指定(type application)が行われています。

2. Tambara モジュールの定義

Tambara モジュールとは、モノイダル圏の作用に対して不変な Profunctor です。

  • 性質: 2 つの対象が関係を持つ限り、それらに同一の対象で「掛ける(モノイダル積)」操作を行っても関係を保持します。
  • 構造: 以下の自然変換を備えたプロファンクターです。
-- b と c については自然性 (Natural)
-- a については準自然性 (Dinatural)
-- 厳密には結合子や単位写像を除いた形をとります
  • 表現例:
    Type
    クラスとして記述できます。
    • ここでは圏作用の左側への作用に焦点を当てていますが、右側または双方を定義するのは容易です。
    • 簡略化のためには、両方の引数に対して同一的作用を使用しています(より一般的情形では 2 つ独立した
      actegory
      が存在します)。

具体的な例:Hom 関手

最も単純な例は ホム関手 です。作用のバイファンクター性を利用して記述されます。

  • Tambara モジュールを構成するものもまた圏であり、作用を保つ自然変換が射として振る舞います。
  • 合成操作: 通常のプロファンクターに対するコエンド(coend)を用いた合成は、Tambara モジュールにも適用できます。
    • 合成の結果もまた Tambara モジュールです。

ビ圏(Bi-category)の構成

これらをまとめると以下の階層構造が得られます。

  1. 0-セル:
    actegory
    (圏作用)
  2. 1-セル: コエンドによる合成を持つ Tambara モジュール
  3. 2-セル: それら間の自然変換

さらに、単一の圏内で作用する終内 Tambara モジュール(endo-Tambara modules)については、プロファンクター的合成をテンソル積とみなし、ホム関手を単位として取り扱うモノイダルビ圏を構成します。


3. Tambara 装備(Equipment)

以前検討した双圏(圏=0-セル、プロファンクター=水平射、関手=垂直射など)は、**Proarrow Equipment(プロアロー・装備)**でもあります。

同様の構成が以下のように存在します:

  • 0-セル:
    actegory
  • 水平 1-セル: Tambara モジュール
  • 垂直 1-セル: モノイダル関手

引き上げ(Lifting)の定義

2-セルを形成するためには、Tambara モジュールをモノイダル関手の対により引き上げられる必要があります。

P
の引き上げは以下のプロファンクターと定義されます:

-- プレースホルダーを用いた表記: a => b x P c
-- Haskell での表現
  • 構造写像: 合成によって定義されます。
    • 2 つ目の矢印は、モノイダル関手の構造写像(可逆性を持つ)を
      act2
      へ引き上げます。
  • 左作用の選択:
    type application
    を用いて適切な左作用を選択します。

2-セルとは:

P
から
Q
への引き上げへの自然変換です。

伴侶(Companion)と共伴体(Conjoint)

f がモノイダル関手であれば、表現可能なプロファンクターは自動的に Tambara モジュールとなります(恒等関手は自明な意味でモノイダル)。

  • 以下の図式の関係が成り立ちます。
  • 単位セルおよび余単位セル: 比較的容易に定義可能です。

4. 自由な Tambara と Optics の統合

Tambara から Profunctor へ向けて、作用を忘却する忘却関手が存在します。この関手には左側伴手があります。

  • 任意のプロファンクター
    P
    に対して、以下のコエンドによって自由な Tambara モジュールが生成されます。
  • Haskell ではこれを**存在型(existential data type)**としてモデル化します。
-- 存在型を用いたモデル化

Yoneda 還元との関わり

Optics は、代表可能プロファンクター

P
に対して作用する自由な Tambara モジュールとして定義できます。実際、Yoneda 還元を適用すると以下の関係が成り立ちます:

-- Haskell での実装イメージ
  • これにより得られる型は、さらに Yoneda 還元により同相写像で以下と等価です。

5. モノイダル作用の内部化

モノイダル作用を関手

F
として見た場合、それが右伴手(right adjoint)を持つならば、Catにおいて内包化(internalize)できます。

  • 作用を「掛け算」と解釈すれば、この伴束関係はカリー化(currying)に類似しています。
  • 右伴手は内部ホム関手の役割を果たします。

Haskell では以下のようなタイプクラスを定義できます:

-- 伴束関係を有効にするタイプクラス定義イメージ

この伴束関係をうまく利用して、乗法的 Opticsを簡素化できます。

  • Yoneda 還元(つまり「A に関する積分」)を用いると、これは以下の形式に変換されます:
  • 加法的 Optics: 積圏のホム集合を生み出すために、余和に対する右伴手を利用します。

トラベル(Traversal)への応用

両方のトリックは、多項式関手によって生成される**トラベル(Traversal)**という種類の Optics を簡素化する際に使用されています。

  • F A
    : 自然数で索引付けられた対象の族であり、畳込みによってモノイダル構造を備えています。
  • A^B
    A^C
    : べき集合(power)を表します。

まず余和に対する伴束関係を適用し、次にカリー化に対する伴束関係を適用することで、トラベルの式を得ます。この結果は、Haskell においてべき集合をリストに置き換えることで図示できます。


6. 内部モノイド(Internal Monoid)

終内ホム

Hom(A, A)
Catにおいて自動的にモノイドとなります。

  • 乗法の定義:
    • 右辺は伴束関係の余単位写像を 2 回適用することで実現可能です。

Haskell では、以下のように実装します。

-- 1. モノイダル圏内で内部化されたモノイドを定義
-- 2. Hom A A がそのインスタンスであることを示す
  • ここで伴束関係の余単位は
    eval
    関数として機能します。

[参照] このブログ投稿用の Haskell コードはこちらで入手可能です。

同じ日のほかのニュース

一覧に戻る →