カテゴリー理論(のサブセット)と関係代数の間に同型はありますか?


12

ビッグデータの観点から来ています。基本的に、多くのフレームワーク(Apache Sparkなど)は、Functor / Monadのようなインターフェイスを提供することにより、リレーショナル操作の欠如を「補償」し、cats-to-SQL変換(ScalaのSlick)への同様の動きがあります。たとえば、SQLパースペクティブからの要素ごとのベクトルの乗算には、自然な結合(インデックスの繰り返しがないと仮定)が必要です。これは、カテゴリ理論のアプリケーションでzip + map(multiply) (SparkのMLibが既に持っているElementwiseProductと見なすことができます。

簡単に言うと(以下の例はScalaにあります):

  • 参加の参照サブケースは、その順番で私たちを与えるのApplicativeファンクタ(オーバー分別収集)、と考えることができますzipList(1,2,3).ap(List(2,4,8).map(a => (b: Int) => a * b))- > (List(1,2,3) zip List(2,4,8)).map(x => x._1 * x._2)。さらに、いくつかの前処理(groupBy演算子または単なる射影、または一般に-エピモーフィズム)を想定して、他の結合に誘導することができます。

  • 他の結合と選択はモナドと考えることができます。たとえば、WHERE次のとおりです。- List(1,2,2,4).flatMap(x => if (x < 3) List(x) else List.empty)>List(1,2,2,4).filter(_ < 3)

  • データ自体は単なるADT(GADTでもあります)であり、単純なSet-category(またはより一般的に言えば-デカルト閉)のように見えるため、Setベースの操作(カリーによるHoward-Lambek自体)およびRENAME(少なくとも実際には)同様の操作。

  • 集約はfold/reduce(カタモフィズム)に対応

だから、私が求めているのは、カテゴリ理論(のおそらくサブセット)と(全体の)関係代数の間の同型を構築できるか、または何かが明らかにされているということですか?それが機能する場合、カテゴリの正確な「サブセット」は正代数と同型ですか?

logic-cats-lambdaのCurry-Howard-Lambek対応のような正式なソリューションはより正確ですが、実際には、完成した研究への参照を求めています(直接的な関係を示しています) )Scala / Haskellでさらに例を示します。

編集:受け入れられた答えは、私がモナドとして結合と条件を表現しすぎていると考えさせました(特に事実上FALSEをインスタンス化する空の値を使用して)、少なくともSQLのrelalgebraサブセットについてはプルバックで十分だと思います。モナドは、GROUP BYのような高次(ネスト)のものに適しています。これは、代数の一部ではありません。

回答:


13

Curry-Howard-Lambekの対応を、少し説明する専門用語で明確にしましょう。Lambekは、製品を含む単純に型付けされたラムダ計算がデカルト閉カテゴリーの内部言語であることを示しました。デカルトの閉じたカテゴリーが何であるかを詳しく説明するつもりはありませんが、難しいことではありません。その代わりに、上記のステートメントはあなたが知る必要がないということです!(または、製品で単純に型付けされたラムダ計算が何であるかを知っていれば、あなたはすでに知っています。)いくつかの型理論/論理がカテゴリーの内部言語/論理であるということは、1)言語を構造に解釈できることを意味します(実際には健全性条件)言語の構造を維持する方法で、カテゴリ、および2)および「本質的に」デカルト閉包から生じるすべての構造は、この言語(完全性条件)の観点から説明できます。

関係代数は、本質的に1次論理であるタプルまたはドメイン関係計算と同等です。このステートメントはおおよそコッドの定理ですが、同様の定理はFOLと円筒代数についてTarskiによって数十年前に証明されました。ただし、少し微妙な点があります。リレーショナル計算のクエリはドメインに依存しないようにします。つまり、可能な値のドメインを拡大してもクエリの結果は変わりません。ドメインに依存しないリレーショナル計算クエリの例はです。すべての関係代数式は、ドメイン独立と論理的に同等です{バツバツ=バツ} リレーショナル計算のクエリ。

それはさておき、内部ロジック(本質的に内部言語の分類解除され形式または証明に無関係な形式である)のカテゴリは、直観主義FOLのヘイティングカテゴリおよび従来のFOLのブールカテゴリです。(categorified /プルーフ関連するバージョンがに記載されているhyperdoctrines。また非常に関連するpretoposes各種の)注、FOL、リレーショナル計算、およびリレーショナル代数がないことではない集約をサポート。(データログクエリを表すために必要な再帰もサポートしていません。)GROUP BYまた、集約は、関係値列を許可することで、高次論理(HOL)およびネストされた関係計算(NRC)につながります。関係値の列ができたら、集計を別の「スカラー」演算子として形式化できます。

あなたの例は、モナドのメタ言語がクエリにとって適切な言語であるという事実を示しています。論文Monad Comprehensions:A Versatile Representation of QueriesPDF)はこれをうまく綴ります。より包括的かつモダンな外観は、ライアンWisneskyの博士論文、あるカテゴリの種類と機能クエリ言語PDFに関連している)、デビッド・スピヴァクの仕事自体は、あなたの質問のいずれかの解釈にかなり関連すると思われます。(もっと歴史的にしたい場合は、Kleisli、機能クエリシステムがありました。)実際、モナドメタ言語は、ネストされたクエリの適切な言語です。リレーショナル計算。Wisneskyはの面でNRCを策定基本トポス内部言語であるミッチェル・Bénabou言語基本的に有界数量と直観主義集合論のように見えます。Wisneskyの目的のために、彼が使用していますブールトポス代わりに古典論理を持つことになります。ただし、この言語は(コア)SQLまたはDatalogよりもはるかに強力です。有限集合カテゴリが(ブール)トポスを形成することは注目に値します


1
直接関連しているわけではありませんが、トポイとHOLに言及していることを考えると、より高いグルーポイドおよび/またはホモトピーの解釈を見るのもいいでしょう。
dk14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.