Kategori teorisi (altkümesi) ile ilişkisel cebir arasında bir izomorfizm var mı?


12

Büyük veri perspektifinden geliyor. Temel olarak, birçok çerçeve (Apache Spark gibi), Functor / Monad benzeri arayüzler sağlayarak ilişkisel işlemlerin eksikliğini "telafi eder" ve kedilerden SQL dönüşümlerine (Slick in Scala) benzer bir hareket vardır. Örneğin, Kategori Teorisinin uygulamalarında zip + map(multiply) (Spark'ın MLib'i zaten var ElementwiseProduct) olarak düşünülebilen, SQL perspektifinden vektörlerin element bazında çarpımı için doğal birleşmeye (indekslerde tekrarlama olmadığı varsayılırsa) ihtiyacımız var.

Basitçe söylemek gerekirse (aşağıdaki örnekler Scala'dadır):

  • atıfta bulunulan birleştirme alt kutusu, pratik functor (sıralı koleksiyon) olarak düşünülebilir ve bu da bize şunu verir zip: List(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). Dahası, bazı önişlemleri varsayarak ( groupByoperatör veya sadece sureksiyon veya genel olarak - bir epimorfizm) varsayalım.

  • diğer birleşimler ve seçimler monad olarak düşünülebilir. Örneğin WHERE, sadece: List(1,2,2,4).flatMap(x => if (x < 3) List(x) else List.empty)->List(1,2,2,4).filter(_ < 3)

  • verilerin kendisi sadece ADT'dir (GADT de mi?), bu da basit bir Set kategorisine benziyor (veya daha genel olarak konuşursak - Kartezyen kapalı), bu yüzden Set tabanlı işlemleri (Curry- Howard-Lambek'in kendisi) ve aynı zamanda RENAME(en azından uygulamada) gibi operasyonlar .

  • toplama karşılık fold/reduce(katamorfizma)

Yani, sorduğum şey, kategori teorisi ile (bütün) ilişkisel cebir arasında bir izomorfizm kurabilir miyiz? Çalışırsa, kategorilerin tam olarak hangi "altkümesi" relalgebra ile izomorfiktir?

Mantık-kediler-lambda için Curry-Howard-Lambek yazışmaları gibi resmi çözümler daha kesinken , kendi varsayımlarımın oldukça geniş olduğunu görebilirsiniz - bu yüzden, aslında, başarılı bir çalışmaya (doğrudan bir ilişki gösteren) referans istiyorum ) daha fazla örnekle Scala / Haskell.

Düzenleme : kabul edilen cevap beni bir monad (özellikle FALSE etkili bir şekilde başlatan boş bir değer kullanarak) birleştirme ve koşulları temsil çok ileri gitti düşündüm, geri çekilmeleri en azından SQL relalgebra alt kümesi için yeterli olduğunu düşünüyorum. Monadlar, Relalgebra'nın bir parçası olmayan GROUP BY gibi daha üst düzey (yuvalama) şeyler için daha iyidir.

Yanıtlar:


13

Açıklayacağım biraz Jargon ile Curry-Howard-Lambek yazışmasını ifade edeyim. Lambek, ürünleri ile basit yazılan lambda hesabının, kartezyen kapalı bir kategorinin iç dili olduğunu gösterdi . Kartezyen kapalı bir kategorinin ne olduğunu açıklamayacağım, ancak zor olmasa da, yukarıdaki ifadenin söylediği şey bilmenize gerek yok! (Ya da bildiğiniz gibi, ürünlerle basitçe yazılan lambda hesabının ne olduğunu biliyorsanız.) Bazı tip teorisi / mantığın bir kategorinin iç dili / mantığı olması 1 anlamına gelir). kategorinin dilin yapısını koruyacak şekilde (aslında sağlamlık durumu) ve2) ve "esasen" kartezyen kapanmadan doğan tüm yapı bu dil (bir bütünlük koşulu) açısından konuşulabilir.

{x|x=x}. Her ilişkisel cebir ifadesi mantıksal olarak ilişkisel hesaplamadaki bir alandan bağımsız sorguya eşdeğerdir .

Bunu bir kenara bırakırsak, iç mantığı (esasen bir iç dilin sınıflandırılmış veya kanıtla ilgisiz bir biçimi olan) kategoriler , klasik FOL için sezgisel FOL ve Boole kategorileri olan Heyting kategorileridir . (Categorified / geçirmez ilgili versiyonları tarafından açıklanan hyperdoctrines . Ayrıca çok alakalı pretoposes çeşitli türlerdeki.) Not, FOL, ilişkisel analiz ve ilişkisel cebir anlamına değil toplama desteklemelidir. (Ayrıca bir Datalog sorgusunu temsil etmek için gerekli özyinelemeyi de desteklemezler .)GROUP BYve toplama, yüksek dereceli mantığa (HOL) ve iç içe ilişkisel analize (NRC) yol açan ilişki değerli sütunlara izin vermektir . İlişki değerli sütunlarımız olduğunda, toplama işlemi yalnızca başka bir "skaler" operatör olarak resmileştirilebilir.

Örnekleriniz, monadik bir meta dilin sorgular için iyi bir dil olduğuna işaret ediyor. Monad Anlayışları: Sorguların Çok Yönlü Temsili ( PDF ) makalesi bunu iyi açıklamaktadır. Daha kapsamlı ve modern bir görünüm, Ryan Wisnesky'nin, David Spivak'ın sorunuzun herhangi bir yorumuyla oldukça alakalı görünen çalışmalarıyla ilgili, Kategorik Türlere Sahip İşlevsel Bir Sorgu Dili ( PDF ) olan doktora tezidir . (Daha tarihsel bir şekilde gitmek istiyorsanız , Fonksiyonel bir Sorgu Sistemi olan Kleisli vardı .) Aslında, monadik meta-dil, iç içe geçmiş sorgular için iyi bir dildir.ilişkisel analiz. Wisnesky , NRC'yi temel dili sınırlı nicelik belirteçleri olan sezgisel bir set teorisine benzeyen Mitchell-Bénabou dili olan temel bir topos açısından formüle eder . Wisnesky'nin amacı için, bunun yerine klasik bir mantığı olacak bir Boole toposunu kullanıyor . Bu dil, (çekirdek) SQL veya Datalog'dan çok daha güçlüdür. Sonlu kümeler kategorisinin bir (Boolean) topos oluşturduğunu belirtmek gerekir .


1
Doğrudan ilgili olmasa da, topoi ve HOL'den bahsettiğiniz göz önüne alındığında, daha yüksek bir grupoid ve / veya homotopi yorumlarını görmek güzel olurdu.
dk14
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.