TCSのカテゴリー理論の堅実な応用?


103

私はいくつかのカテゴリー理論を学んでいます。それは確かに物事を見る別の方法です。(それを見たことがない人のための非常に大まかな要約:カテゴリー理論は、オブジェクト間の機能的関係の観点のみであらゆる種類の数学的行動を表現する方法を提供します。例えば、2セットのデカルト積のようなものは、セットのメンバーである要素の観点からではなく、他の関数がそれとともにどのように動作するか)

カテゴリ理論はプログラミング言語/ロジック(「理論B」)側で有用であるという漠然とした理解があり、どの程度のアルゴリズムと複雑さ(「理論A」)が役立つか疑問に思っています。しかし、理論Bのカテゴリ理論の確かな応用を知っていれば、それは私が着手するのに役立つかもしれません(理論Aにはこれまで見つかった応用はないことをすでに暗黙のうちに仮定していますが、それらのいくつかがあれば、それは私にとっては良い!)

「確実なアプリケーション」とは、次のことを意味します。

(1)アプリケーションはカテゴリ理論に強く依存しているため、機械を使用せずに達成することは非常に困難です。

(2)アプリケーションは、カテゴリー理論の少なくとも1つの非自明な定理(たとえば、米田の補題)を呼び出します。

(1)は(2)を暗示している可能性がありますが、これらが「実際の」アプリケーションであることを確認したいと思います。

「理論B」の背景はありますが、しばらく経っていますので、専門用語の削除は大歓迎です。

(回答の種類によっては、後でこの質問をコミュニティWikiに変えることもあります。しかし、説明が十分にある優れたアプリケーションが本当に欲しいので、回答者に何かに報酬を与えないのは残念に思えます。)

回答:


79

プログラミング言語の未解決の問題を解決するためにカテゴリー理論が直接「適用」された1つの例を考えることができます。ThorstenAltenkirch、Peter Dybjer、Martin Hofmann、Phil Scott、「型付けされたラムダ計算と共積の評価による正規化」です。要約から:「強力なバイナリ和を持つ単純に型付けされたラムダ計算の決定問題を解きます。これは、バイナリ副産物を持つ自由デカルト閉カテゴリの語問題と同等です。この方法は、「評価による正規化」として知られる意味論的手法に基づいており、構文の解釈を適切な束モデルに変換し、これから適切な一意の正規形を抽出します。」

ただし、一般的に、カテゴリ理論は通常、プログラミング言語の深い定理を証明するために適用されるのではなく(その多くはありません)、代わりに多くの場合に役立つ概念フレームワークを提供します(たとえば、上記の場合、 (pre)sheafセマンティクスのアイデア)。

重要な歴史的例は、モナドの概念(カテゴリ理論で基本的かつ遍在する)がプログラミング言語の副作用(たとえば、状態、非決定論)のセマンティックな説明の一部として使用できるというEugenio Moggiの提案です。これはまた、プログラミング言語の構文についてのいくつかの反映を促しました。たとえば、Haskellの「Monadタイプクラス」に直接つながる(エフェクトをカプセル化するために使用されます)。

最近(過去10年)、モナドに関する効果のこの説明は、モナドと代数理論の間の古いつながり(60年代にカテゴリ理論家によって確立された)の観点から再訪されました:マーティンハイランドとジョンパワーの、「普遍代数のカテゴリー理論的理解:ローヴェア理論とモナド」。効果の単項ビューは、効果の代数的ビュー(いくつかの点でより魅力的)と互換性があり、効果(例:ストア)は操作(例: "ルックアップ"および "更新")で説明できるおよび関連する方程式(たとえば、更新のべき等性)。ポールアンドレメリエスによるこの接続に関する最近の論文があります。「シーガル条件は計算効果に適合します」「上位カテゴリ理論」(たとえば、プレシーブセマンティクスを整理する方法としての「米田構造」の概念)からのアイデアにも大きく依存しています

別の関連するクラスの例は、線形論理に由来します。80年代にJean-Yves Girardが(建設的な論理をよりよく理解することを目的として)導入した直後に、カテゴリ理論への強固な関係が確立されました。この接続の説明については、John BaezとMike Stayの「Physics、Topology、Logic and Computation:A Rosetta Stone」を参照してください

最後に、この答えはsigfpeのブログ「A Neighborhood of infinity」を参照せずに不完全になります。特に、「Haskellに適用されるいくつかのカテゴリー理論の部分順序付け」を確認できます。


3
こんにちは、Noam、その素晴らしい答えの後、あなたの担当者はリンクを追加するのに十分高いと思います!
Suresh Venkat

私は初心者と同じ問題に直面しました。回答が投票されるのを待ってから、リンクを追加しました。同じことができます...
アンドレバウアー

10
ありがとう!システムに伝えるためにいくつかの方法があった望む...ハイパーリンクの制限については申し訳ありません「よ、私は合法的だ、ノーム・Zeilbergerだ」
ライアン・ウィリアムズ

リンクを追加しました!ええ、それは完全に合理的なポリシーです、時には邪魔するだけです。
ノアムツァイルバーガー

46

量子計算

非常に興味深い分野の1つは、量子計算へのさまざまなモノイドカテゴリの適用です。これも物理学であると主張する人もいますが、その作業はコンピューターサイエンス部門の人々によって行われています。この分野の初期の論文は、Samson AbramskyとBob Coeckeによる量子プロトコルのカテゴリーセマンティクスです。多くの最近の論文AbramskyCoeckeと他の人がこの方向で作業を続けます。

この一連の作業では、量子プロトコルは(特定の種類の)コンパクトな閉じたカテゴリとして公理化されています。このようなカテゴリには、文字列(およびリボン)ダイアグラムの観点から見た美しいグラフィカル言語があります。このカテゴリの方程式は、絡み合っているが結び目のないストリングをまっすぐにするなど、ストリングの特定の動きに対応しており、量子テレポーテーションなどの量子力学で意味のある何かに対応しています。

カテゴリカルアプローチは、通常非常に低レベルの計算に関係するものについて、高レベルで論理的なビューを提供します。

システムの理論

Coalgebraは、システム(ストリーム、オートマトン、遷移システム、確率システム)をモデル化するための一般的なフレームワークとして使用されています。その理論はカテゴリ理論に根ざしており、 -coalgebraの概念に基づいています。ここで、 は遷移システムの構造を記述するファンクターです。したがって、基礎となるファンクターによってシステムの種類は変わりますが、バイシミュレーションの概念など、理論の多くはすべてのファンクターに適用できます。カテゴリ理論はまた 、代数として記述されるシステムについて推論するためのモーダルロジックのモジュール構造を可能にします。FF

グラフ変換

グラフ変換は、カテゴリー理論の言語で非常にうまく表現できます。これにより、たとえば、モデル変換(UMLモデルなど)やその他の視覚的モデリングの定式化に用途が見つかりました。このアプローチは、グラフとグラフ準同型のカテゴリで行われます。第一に、押し出しは、接着構造として見ることができる2つのグラフを考える。グラフと2つの射型および は、2つのグラフに共通する部分を示します。はこれらの部分をし、と残りの部分を追加し、実際にはと 一緒に接着し P e 1P G 1 e 2P G 2 G 1 G 2 G 1 G 2 PG1,G2Pe1:PG1e2:PG2G1G2G1G2P

二重押し出しは、グラフの変換を説明するために使用されます。ルールはタプルで表されます 。ここで、はルールの前提条件を示し、はルールの事後条件を示し、はルールを適用するグラフの部分を示します。およびからのマップがあり、一方は元のグラフの一部と一致するために使用され、他方は結果のグラフを作成するために使用されます。は、グラフの削除する部分を示します。は、作成されるパーツを記述します。からコンテキスト へのマップL R K l K L r K R L K R K d K D d l G d k(L,K,R)LRKl:KLr:KRLKRKdKグラフを提供する必要があり、のプッシュアウト とマップは対象のグラフに等しくする必要があります。とのプッシュアウトにより 、変換を実行した結果が得られます。DdlGdk

プログラミング言語(MathOverflow経由)

プログラミング言語とプログラミング言語理論の設計には、カテゴリー理論の応用がたくさんあります。広範な答えはMathOverflowにあります。https://mathoverflow.net/questions/3721/programming-languages-based-on-category-theoryhttps://mathoverflow.net/questions/4235/relating-category-theory-to-programming-language-theory

Bigraphs-プロセス計算

最後に、相互作用するエージェントのシステムについて説明し、推論するための一般的なフレームワークであるMilnerのbigraphsがあります。それは、プロセス代数とその構造的および行動的理論について推論するための一般的なフレームワークとして見ることができます。このアプローチはプッシュアウトにも基づいています。


35

理論Aにこれまでに見つかったアプリケーションはないことをすでに暗黙的に仮定していますが、それらのいくつかがあれば、それは私にとってさらに良いことです!

  • 私の理解では、ジョイアルの種の理論は列挙型組み合わせ論で比較的広く使用されており、生成関数の一般化として、存在する数に加えて物事を並べ替える方法をさらに教えます。

  • Pippengerは、Stoneの双対性を適用して、通常の言語とさまざまな半グループを関連付けています。Jeandelは、これらのアイデアを適用して、量子オートマトン、確率オートマトン、および通常のオートマトンに統一されたアカウント(および証明!)を適用するトポロジーオートマトンを導入しました。

  • ローランドバックハウスは、トロピカルセミリングとのガロア接続を使用して、貪欲なアルゴリズムの抽象的な特性を与えました。

はるかに投機的な流れで、Noamは層モデルに言及しました。これらは、論理関係の構文手法を抽象的に特徴付けます。これは、おそらくセマンティクスで最も強力な手法の1つです。主にそれらを使用して表現不能性と一貫性の結果を証明しますが、複雑な理論家にとっては興味深い(Razborov / Rudichの意味での)実際的で非自然な証明手法の良い例です。(ただし、論理関係は通常、相対関係を保証するために非常に慎重に設計さています。言語設計者として、関数呼び出しがブラックボックスであることをプログラマに保証できるようにしたいです!)

編集:ライアンの要求に応じて推測を続けます。私が理解しているように、自然な証明は、さまざまな賢明な条件に応じて、回路の構造の帰納的不変式を定義しようとする線に沿ったものです。同様のアイデアは、(型安全性を証明するために)ラムダ計算で誘導的に維持される不変式を定義しようとする場合、プログラミング言語でも(当然のことながら)非常に一般的です。1

ABABA

ABAB。単一の帰納的不変量はないことに注意してください-入力の構造に対する再帰によって不変量のファミリー全体を定義し、他の手段を使用して、すべての項がこれらの不変量内にあることを示します。理論的には、これは非常に強力な手法であり、一貫性のある結果を証明できる理由です。

シーブへの接続は、オープンな用語(つまり、自由変数を持つ用語)についてしばしば推論する必要があるため、エラーのためにスタックするか、変数を減らす必要があるためにスタックするかを区別する必要があるという事実から生じます。シーブは、ラムダ計算の縮約を、用語がオブジェクトであるカテゴリーの射(つまり、縮約によって誘発される半順序)を定義し、このカテゴリーからファンクターを集合(つまり、述語)に定義することとして考えられます。Jean Gallierは2000年代初頭にこれについていくつかの素晴らしい論文を書きましたが、かなりの量のラムダ計算をすでに取り入れていない限り、読みやすいとは思いません。


1
Backhouseの論文を参照してください。彼はタイトルに「ガロアのつながり」に言及しているものをいくつか持っていますが、クイック検索では貪欲なアルゴリズムに関するものが明らかになりませんでした貪欲なアルゴリズムについて「本当に」どれが簡単にわかるか)。ありがとう!
ジョシュアグロチョウ

1
ジョシュアの質問に加えて、束モデルと論理関係が自然証明にどのように関係するかにも興味があります。
ライアンウィリアムズ

再:石の双対性、よりエキサイティングな最近の作品については、Mai Gehrkeの「代数に対する石の双対性と認識可能な言語」(math.ru.nl/~mgehrke/Ge09.pdf)およびGehrke、GrigorieffおよびPinの「認識へのトポロジー的アプローチ」を参照「(math.ru.nl/~mgehrke/GGP10.pdf
ノーム・Zeilberger


24

多くの例が頭に浮かぶ最初のものがあり、存在するのアレックス・シンプソン『などを参照してください、プログラミング言語の性質を証明するために、カテゴリ論のの使用計算妥当性は、直観主義集合論のモデルにおける再帰的な型のため、』純正・応用・ロジックの史料は、 、130:207-275、2004。タイトルが集合論に言及していても、この手法はカテゴリー理論です。その他の例については、Alexのホームページをご覧ください。


refsに感謝しますが、「他の方法では得られないカテゴリ理論を使用して得られた結果は何ですか?」
ライアンウィリアムズ

確かに、あなたはしませんでした。回答を編集しました。
アンドレイバウアー

11

タイプAとタイプBを別々に適用可能性について2つの質問をしていると思います。

お気付きのように、タイプBトピックへのカテゴリ理論の多くの実質的なアプリケーションがあります:プログラミング言語のセマンティクス(モナド、デカルト閉カテゴリ)、論理と証明可能性(トポイ、線形論理の多様性)。

ただし、理論A(アルゴリズムまたは複雑さ)への実質的な応用はほとんどないようです。

オートマトンまたはコンビナトリアルオブジェクト(グラフ、シーケンス、順列など)のカテゴリの記述など、基本オブジェクトにはいくつかの用途があります。しかし、これらは言語理論またはアルゴリズムのより深い理解を説明していないようです。

投機的には、カテゴリー理論と理論Aの主題の現在の戦略の不一致である可能性があります。

  • カテゴリ理論の中心的な戦略は、平等を扱うことです(物事が同じである場合、異なる場合、および相互にマッピングする方法)。

  • 複雑性理論の場合、主要な戦略は縮小と境界の設定です(縮小は矢印のようなものと考えられますが、この表面的な類似性を超えるものは研究されていないと思います)。

  • アルゴリズムについては、アドホックな巧妙な組み合わせ思考以外に包括的な戦略はありません。特定のドメインについては、実りの多い探索(代数のアルゴリズム?)があると期待していますが、まだ見ていません。


2
削減は、ゲーデルの弁証法解釈のカテゴリカル再構成と線形論理のセマンティクスに関連していることがわかります。アンドレアス・ブラスの「質問と回答-線形論理、複雑性理論、集合論で生まれたカテゴリー」を参照してください。math.lsa.umich.edu/~ablass/qa.pdf
ニールクリシュナ

3

私の頭に浮かぶ「TCS-A」アプリケーションは、ジョイアルのコンビナトリアル種(ツリー、セット、マルチセットなどのコンビナトリアルオブジェクトを記述するためのファンクターへのべき級数の一般化)とリレーショナルを使用した暗号化「ゲームホッピング」の形式化です。確率的ホア論理(Easycrypt、Certicrypt、Andreas Lochbihlerの作品)。カテゴリは後者には直接表示されませんが、基礎となるロジック(モナドなど)の開発に役立ちました。

PS:私の名前が最初の答えで言及されたので:トーマス・ストライヒャーと私によるマーティン・ロフの型理論における特定の公理の非導出性を示すためのグループイドの振動の使用は、カテゴリー理論の「堅実な」使用と考えることもできますロジックまたは「TCS-B」)。


3

より最近の本「Seven Sketches in Compositionality」は、コンピューターサイエンスおよびエンジニアリングにおけるカテゴリー理論のいくつかのアプリケーションをリストしています。著者がカテゴリモデルに基づいてデータベースのクエリ、結合、移行、および進化を説明するデータベースに関する章に注目してください。著者はこれをさらに進めて、データベースのカテゴリモデルに基づいてカテゴリクエリ言語(CQL)と統合開発環境(IDE)を開発しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.