范畴论(子集)和关系代数之间是否存在同构?


12

它来自大数据角度。基本上,许多框架(如Apache Spark)通过提供类似Functor / Monad的接口来“补偿”缺乏关系操作,并且向cats到SQL的转换也有类似的趋势(Scala中的Slick)。例如,我们需要自然联接(假设索引上没有重复),以便从SQL角度对向量进行元素zip + map(multiply) 逐次乘法,这ElementwiseProduct在类别理论的应用程序中可以被视为(但Spark的MLib已经拥有

简单地说(以下示例在Scala中):

  • 引用的join子案例可以看作是应用函子(在有序集合上),这反过来又给我们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算符或仅仅是外推,或者通常是一种同形),我们可以将其引入其他联接。

  • 其他联接和选择可以认为是monad。例如,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类别(或更笼统地说-笛卡尔封闭),因此(我想)它应该涵盖基于Set的操作(由于Curry- Howard-Lambek本身)以及类似的操作RENAME(至少在实践中如此)。

  • 聚集对应于fold/reduce(变形)

所以,我要问的是,我们可以在类别理论(也许是子类别理论)和(整个)关系代数之间建立同构吗?还是有发现的东西?如果可行,类别的什么同构子集与relalgebra同构?

您会看到我自己的假设是相当广泛的,而诸如逻辑-猫-lambda的Curry-Howard-Lambek对应之类的形式化解则更为精确-因此,实际上,我要求参考已完成的研究(该研究表明了直接的关系),以及Scala / Haskell中的更多示例。

编辑:接受的答案使我认为我将连接和条件表示为monad太过分了(尤其是使用有效实例化FALSE的空值),我认为回调至少应足以满足SQL的relegebra子集。Monad更适合诸如GROUP BY的高阶(嵌套)内容,这不是relalgebra的一部分。

Answers:


13

让我用一些专业术语来明确表达Curry-Howard-Lambek的对应关系。Lambek表明,带乘积的简单Lambda演算是笛卡尔封闭类别的内部语言。我不会说出笛卡尔封闭类别是什么,尽管这并不难,但是上面的声明说的是您不需要知道!(或者,您已经知道,如果您知道简单乘积的lambda演算是什么。)对于某种类型理论/逻辑来说,类别的内部语言/逻辑意味着1)我们可以将语言解释为结构以保留语言结构(实际上是健全性条件)的方式来分类,并且2)和“基本上”,笛卡尔封闭引起的所有结构都可以用这种语言(完整性条件)来讨论。

{xx=x}。每个关系代数表达式在逻辑上都等同于关系演算中与域无关的查询。

把该一边,其类别内部逻辑(其本质上是一个decategorified或内部语言证明无关的形式)了Heyting类别为直觉FOL和布尔类别古典FOL。(该categorified /证明相关的版本被描述hyperdoctrines。也非常相关的是pretoposes各种不爽。)注意,即FOL,关系运算和关系代数就不能支持聚合。(它们也不支持表示Datalog查询所必需的递归。)一种方法GROUP BY聚合是为了允许关系值列导致高阶逻辑(HOL)和嵌套关系演算(NRC)。一旦有了关系值列,聚合就可以被形式化为另一个“标量”运算符。

您的示例指出了一个事实,即一元元语言是一种不错的查询语言。论文《Monad理解:多功能的查询表示法》PDF)很好地说明了这一点。Ryan Wisnesky的博士学位论文是一种更全面,更现代的外观,它是一种具有分类类型的功能查询语言PDF),它与David Spivak的作品有关,该作品本身似乎与您对问题的任何解释都非常相关。(如果您想了解更多历史信息,可以使用功能查询系统Kleisli。)实际上,单子元语言是一种用于嵌套查询的体面语言。关系演算。Wisnesky用基本主题的形式来表达NRC,该主题的内部语言是Mitchell-Bénabou语言,基本上看起来像是带有限定词的直觉集合论。出于Wisnesky的目的,他使用了一个布尔型topos,它将具有经典的逻辑。这种语言比(核心)SQL或数据日志强大得多。值得注意的是有限类别形成一个(Boolean)topos


1
尽管没有直接关系,但是鉴于您提到了topoi和HOL,也很高兴看到更高的类群和/或同伦解释。
dk14
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.