本文へ移動
世界と暮らしの疑問を整理する知識ポータル
圏論入門

関手は、構造を壊さず別の世界へ移す翻訳である 圏論の橋渡しを支える二つの条件

公開日 / 更新日

圏論で「関手」という言葉に出会うと、二つの世界の要素を対応させる一覧表のようなものを想像しやすいかもしれません。しかし、対象AをF(A)へ、対象BをF(B)へ移すだけでは、関手になりません。AとBの間にどのような射があり、それらをどの順に合成できるのか。その関係まで崩さずに運んで、初めて圏から圏への翻訳になります。

翻訳という比喩が役立つのは、単語を置き換えるだけでは文章の意味が保たれないからです。語順や文法を無視すれば、対訳表は作れても、論理の通った文章にはなりません。関手も同じように、対象という「名詞」だけでなく、射と合成という「文法」を移します。そのため、集合と群、空間と代数、型とプログラムのように姿の違う世界の間でも、構造を比較できるのです。

対象だけの対応では関手にならない

二つの圏CとDがあるとします。Cの各対象に対してDの対象を一つ選ぶだけなら、集合どうしの素朴な対応と大きく変わりません。圏を圏らしくしているのは、対象の名簿ではなく、対象を結ぶ射と、その射をつなぐ合成です。対象だけを移して射を捨てれば、どの対象からどこへ進めたのか、二つの操作がどう連結していたのかが分からなくなります。

たとえば、駅を対象、直通路線を射と考えてみましょう。東京駅を別の交通網のT駅に、大阪駅をO駅に対応させても、東京から大阪へ向かう路線がどの路線へ移るのかを定めなければ、交通網の翻訳にはなりません。さらに、東京から名古屋、名古屋から大阪という乗り継ぎが、移した先でも同じ順序で接続できる必要があります。

ここで守るべきなのは、駅舎の形や乗客数まで同じにすることではありません。圏として注目しているのは、出発点と到着点、何もしない移動、接続可能な経路です。「構造を壊さない」とは、元の対象が持つあらゆる性質を保存するという意味ではなく、圏が備える射と合成の仕組みを保存することなのです。

射まで移して初めて保たれる圏の構造

関手Fは、圏Cの対象Aを圏Dの対象F(A)へ移します。同時に、Cの射 f: A → B を、Dの射 F(f): F(A) → F(B) へ送ります。fの出発点がA、到着点がBなら、移した射の出発点と到着点も、それぞれF(A)とF(B)でなければなりません。

この条件は控えめに見えますが、勝手な対応をかなり強く制限します。AをF(A)へ、BをF(B)へ移しておきながら、fだけをF(B)からF(A)への射にしてしまえば、矢印の向きが反転します。別の無関係な対象へ向かわせても、元の接続関係は消えてしまうでしょう。対象と射は別々に選ぶのではなく、端点が合う一組として移す必要があります。

圏論では、対象の中身を詳しく調べなくても、どの射が入り、どの射が出ていくかによって対象の振る舞いを捉えます。だからこそ、射を移す規則は付け足しではありません。対象をどう翻訳したかの意味を支える、本体の半分に当たります。

恒等射と合成を守る二つの条件

対象と射を対応させても、まだ関手の条件は尽くされていません。第一に、各対象Aの恒等射 idA は、移した対象F(A)の恒等射 idF(A) へ送られます。式では F(idA) = idF(A)。元の世界で「何もしない」操作は、移した先でも何もしない操作であり続けます。

第二に、射 f: A → Bg: B → C を合成できるなら、先に合成してからFで移しても、fとgを別々に移してから合成しても、結果が一致しなければなりません。すなわち、F(g ∘ f) = F(g) ∘ F(f) です。圏の骨格をなす「つなげられる操作」としての合成は、別の圏へ移しても保たれるのです。

対象と射を一緒に移し、合成を保つ関手
圏 C

AfBgC

AからCへの合成射 g ∘ f

F
圏 D

F(A)F(f)F(B)F(g)F(C)

F(A)からF(C)への合成射 F(g) ∘ F(f)

F(g ∘ f)=F(g) ∘ F(f)

上の等式により、Cで二段階だった経路は、Dでも同じ順序の二段階として再現されます。関手が運ぶのは点の対応ではなく、経路を組み立てる規則です。

この二条件があるため、三本、四本と続く長い合成も自動的に保たれます。途中のまとまり方は結合律によって変えられ、何もしない段階は恒等射として挟めます。関手は個々の部品だけでなく、部品から大きな構成を作る方法まで別世界へ運ぶのです。

群から集合へ情報を減らす忘却関手

関手は、元の対象が持つ情報をすべて保存する必要はありません。その典型が、群の圏から集合の圏への「忘却関手」です。群は、要素の集合に演算、単位元、逆元などの構造を加えたものですが、忘却関手は群を、その台にある集合へ移します。群準同型は、同じ要素対応を持つ通常の関数へ送られます。

「忘却」という名の通り、移した先では群の演算が見えなくなります。それでも関手であるのは、恒等な群準同型が恒等関数になり、群準同型の合成が関数の合成としてそのまま残るからです。捨てられるのは群という対象の追加構造であって、射をつなぐ圏の文法ではありません。

この例は、「構造を保つ」という表現の範囲をよく示します。関手は必ずしも情報保存装置ではなく、詳細を落として輪郭だけを取り出すこともあります。何を忘れ、何が残るのかを明示できるからこそ、複雑な対象をより単純な世界で調べられるわけです。

空間の形を代数へ運ぶホモロジー

情報を減らすことが、かえって本質を見えやすくする例もあります。位相空間は、引き伸ばしたり曲げたりしても変わらない形の性質を扱う対象です。ところが、空間をそのまま比較するのは難しい場合があります。そこでホモロジーは、空間からアーベル群のような代数的対象を作り、穴の存在など空間の特徴を計算可能な形へ移します。

重要なのは、各空間に群を割り当てるだけではない点です。空間の間の連続写像には、対応する群準同型が割り当てられます。連続写像を二つ合成したとき、そこから得られる群準同型も同じ順序で合成されるため、空間側の変換関係が代数側で失われません。

円と円板を数式の記号へ単純に置き換えているのではありません。空間を変形する過程まで代数へ運び、その過程どうしの連結を保っています。図形の問題を代数の計算へ持ち込めるのは、結果の一覧だけでなく、変換の一貫性が関手によって保証されるためなのです。

リスト全体へ関数を持ち上げるFunctor

プログラミングでは、ある型Aから型Bへの関数 f: A → B があっても、Aの値を並べたリストへfを直接適用することはできません。必要なのは、リストの各要素へfを適用し、Bのリストを返す操作です。関数型プログラミングでよく使われる map は、fを List(A) → List(B) という関数へ持ち上げます。

ここでは、型AをList(A)へ移し、関数fをmap(f)へ移したと考えられます。恒等関数をmapすれば、リストは変わりません。また、fのあとにgを適用する合成関数を一度にmapしても、先にfをリスト全体へ適用し、その結果へgを適用しても同じです。HaskellのFunctor則として知られる二条件は、関手が恒等射と合成を保つ条件に対応します。

ただし、実際のプログラミング言語に現れるすべての計算を、素朴な集合と関数の圏だけで説明できるわけではありません。停止しない計算や副作用をどう扱うかによって、適切な圏の選び方も変わります。それでも、「中身の関数を、構造を持つ文脈全体の関数へ持ち上げる」という見方は、圏論と型付きプログラミングを結ぶ確かな接点です。

証明と意味を結ぶ論理の翻訳

論理でも、命題を対象、証明や推論を射として扱う圏を考えられます。PからQへの証明とQからRへの証明をつなげれば、PからRへの証明になるという構図です。一方、論理式に集合などの数学的な意味を与える意味論の側にも、対象と射の体系があります。

このとき関手は、構文の世界にある命題や証明を、意味の世界にある対象や写像へ移す役割を担えます。推論を合成してから意味を与えた場合と、それぞれの推論に意味を与えてから写像を合成した場合が一致するなら、複雑な証明の意味を部分ごとに組み立てられます。証明の書き方と、その証明が表す数学的内容が、勝手にずれない仕組みです。

圏論が論理を一つの思想へ還元するわけではありません。どの論理体系を対象にし、何を射とし、どの意味論へ移すかによって、使う圏も関手も異なります。橋渡しを可能にするのは、「論理と数学は同じだ」という大づかみな主張ではなく、合成と恒等射を保つ厳密な翻訳なのです。

可換図式を別世界でも保つ関手

圏Cで、AからDへ至る二つの経路が同じ射になるとします。一方はBを経由し、もう一方はCを経由するものの、合成の結果は等しい。この関係を表すのが可換図式です。関手Fを適用すると、二つの経路を構成するすべての対象と射が圏Dへ移ります。

関手は合成を保ち、等しい射は等しい射へ送るので、移した二経路の合成も一致します。つまり、可換だった図式は移した先でも可換です。個々の矢印の対応を確かめるだけでなく、「別々の手順が同じ結果になる」という関係まで保存されます。

この性質があるため、ある分野で成立した構成や証明を、別の表現へ安全に持ち込めます。座標を変えても同じ計算が成立する、図形を代数化しても経路の一致が残る、プログラムの部品を文脈へ持ち上げても合成順序が崩れない。分野ごとに中身は違っても、関手が守っているのは同じ整合性です。

情報を失う関手と戻せる翻訳の違い

「翻訳」と聞くと、元の文章へ戻せる一対一の変換を思い浮かべるかもしれません。しかし、関手は可逆である必要がなく、異なる対象や射を同じものへ送る場合さえあります。すべての対象を一つの対象へ、すべての射をその恒等射へ送る定値関手も、条件を満たす正当な関手です。

忘却関手も、一般には失った演算を元の集合だけから復元できません。同じ集合の上に異なる群構造を置けるため、集合へ移した時点で区別が消えるからです。関手が存在することと、二つの圏が同じ情報を持つことは別問題になります。

二つの世界が圏論的に同じだと主張するには、通常は「圏同値」のような、関手より強い条件が必要です。関手は橋ではあっても、その橋が双方向か、情報を完全に保つか、別の経路で戻れるかまでは保証しません。この区別を押さえると、圏論を分野横断の万能な同一視として誤解せずに済みます。

関手の合成が築く圏と圏の長い橋

関手どうしもまた、合成の対象です。Fが圏Cから圏Dへの関手、Gが圏Dから圏Eへの関手なら、対象と射をまずFで移し、続いてGで移すことで、CからEへの関手 G ∘ F が得られます。どちらも恒等射と合成を保つので、二段階に延びても翻訳の一貫性は崩れません。

各圏には、何も変えず同じ圏へ戻す恒等関手があります。関手の合成には結合律があり、恒等関手は合成の単位です。ここには、すでに見た圏の構造がもう一度現れます。集合論上の大きさを適切に制限すれば、圏を対象、関手を射とする一つの圏として扱えるのです。

この階層性によって、局所的な翻訳を組み合わせ、数学の複数分野にまたがる長い経路を設計できます。空間から代数へ、代数から別の計算可能な表現へと移す場合でも、一段ごとの関手が構造を保てば、全体も関手として扱えます。巨大な翻訳を一度に発明せず、小さな橋を接続して遠くまで届かせられるわけです。

橋渡しの本質は対応ではなく整合性

関手の定義は、対象を対象へ、射を射へ送り、恒等射と合成を保つことです。短い定義ですが、その中心にあるのは「何と何が似ているか」ではありません。ある世界で可能だった変換が別世界でどう再現され、複数の変換をつないだ結果まで一致するかという問いです。

忘却関手は情報を減らし、ホモロジーは空間の特徴を代数へ運び、Functorは要素に対する関数をリストなどの文脈へ持ち上げます。論理では、証明の合成と意味の合成を結びます。どの例にも共通するのは、対象の外見ではなく、射が作る関係の網と、その組み立て方が保たれることです。

圏論が数学・論理・プログラミングの間に橋を架けられるのは、異なる世界を同じものだと言い張るからではありません。違いを残したまま、何を保存すれば一貫した翻訳になるのかを明示するからです。関手が見せるのは、共通点の雰囲気ではなく、別の言葉へ移しても崩れない構造。その厳密さが、遠く離れた分野を同じ舞台で比較する力になります。

参考資料

圏論 圏論の中心概念 圏論入門 数学の考え方 科学・技術のしくみ

圏論の中心概念の記事

現在のテーマに近い記事