Чи існує ізоморфізм між (підмножиною) теорії категорій та реляційною алгеброю?


12

Це відбувається з точки зору великих даних. В основному, багато фреймворків (наприклад, Apache Spark) "компенсують" відсутність реляційних операцій, забезпечуючи інтерфейси, подібні до Functor / Monad, і відбувається подібний рух до перетворень котів у SQL (Slick in Scala). Наприклад, нам потрібне природне з'єднання (якщо не бути повторів на індексах) для zip + map(multiply) стильовогоElementwiseProduct множення векторів з точки зору SQL, яке можна вважати (але MLib Spark вже має ) у додатках Theory Theory.

Простіше кажучи (наступні приклади є у Scala):

  • Посилання на підряд приєднання може розглядатися як прикладний функтор (над відсортованою колекцією), що, у свою чергу, дає нам 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). Більше того, ми можемо спонукати це до деяких інших приєднань, припускаючи деяку попередню обробку ( 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 (або, взагалі кажучи, закриту декартом), тому вона повинна (я вважаю) охоплювати операції на основі набору (завдяки Curry- Сам Говард-Ламбек), а також такі операції, як RENAME(принаймні, на практиці).

  • агрегація відповідає fold/reduce(катаморфізм)

Отже, що я запитую, чи можна побудувати ізоморфізм між (можливо, підмножиною) теорії категорій та (цілою) реляційною алгеброю чи щось не розкрито? Якщо це працює, яке саме «підмножина» категорій є ізоморфним відносному рефлегебрі?

Ви бачите, що мої власні припущення є досить широкими, тоді як формальні рішення, такі як листування Керрі-Говарда-Ламбека для логіки-котів-лямбда, є більш точними - тому насправді я прошу посилання на виконане дослідження (яке показує прямий зв’язок ) з більшою кількістю прикладів у Scala / Haskell.

Редагувати : прийнята відповідь змусила мене думати, що я зайшов занадто далеко, представляючи приєднання та умови як монада (особливо, використовуючи порожнє значення, яке фактично створює FALSE), я вважаю, що відсилок повинно вистачити хоча б для підмножини релегебри SQL. Монади краще для вищого порядку (гніздування), таких як GROUP BY, яка не входить до релагебри.

Відповіді:


13

Дозвольте сформулювати листування Кері-Говарда-Ламбека з трохи жаргону, який я поясню. Ламбек показав, що просто набране лямбда-числення з продуктами - це внутрішня мова декартової закритої категорії. Я не збираюся пояснювати, що таке декартова закрита категорія, хоча це не важко, натомість те, що сказано вище, говорить, що вам не потрібно знати! (Або що ви вже знаєте, якщо ви знаєте, що таке просто набране лямбда-числення з продуктами.) Для деяких типів теорії / логіки бути внутрішньою мовою / логікою категорії означає 1), що ми можемо інтерпретувати мову в структурі на категорія таким чином, що зберігає структуру мови (фактично умова звучності), і2) і «по суті» про всю структуру, що виникає внаслідок декартового закриття, можна говорити з точки зору цієї мови (умова повноти).

{хх=х}. Кожен вираз реляційної алгебри логічно еквівалентний запиту незалежного домену в реляційному обчисленні.

Відставляючи це, категорії, внутрішня логіка (яка по суті є декатегоризованою або доказово невідповідною формою внутрішньої мови), є категоріями Хейтінга для інтуїтивістських FOL і булевих категорій для класичного FOL. (У відповідних категоризованих / доказових версіях описані гіпердоктрини . Також дуже актуальними є припуски різного роду.) Зауважте, що FOL, реляційне числення та реляційна алгебра не підтримують агрегацію. (Вони також не підтримують рекурсію, необхідну для представлення запиту Datalog .) Один підхід доGROUP BYа агрегація полягає в тому, щоб допускати стовпці, що оцінюються відношеннями, що призводить до логіки вищого порядку (HOL) та вкладеного реляційного числення (NRC). Після того, як у нас з'являться стовпці, що оцінюються по відношенню, агрегація може бути формалізована як просто ще один "скалярний" оператор.

Ваші приклади вказують на те, що монадійна мета мова є гідною мовою для запитів. Цей документ добре описаний у статті " Означення монади": універсальне представлення запитів ( PDF ). Більш вичерпний і сучасний погляд - це кандидатська дисертація Райана Віснеського - Функціональна мова запиту з категоріальними типами ( PDF ), що стосується роботи Девіда Співака, яка сама по собі видається досить актуальною для будь-якої інтерпретації вашого питання. (Якщо ви хочете піти більш історично, то була функція Kleisli, функціональна система запитів .) Насправді монадична мета-мова є гідною мовою для запитів у вкладенійреляційне числення. Віснеський формулює NRC з точки зору елементарного топосу , внутрішньою мовою якого є мова Мітчелла-Бенабу, що в основному виглядає як інтуїтивістська теорія множин з обмеженими кванторами. З метою Віснеського він використовує булевий топос, який натомість матиме класичну логіку. Ця мова є набагато потужнішою, ніж (core) SQL або Datalog. Варто зазначити, що категорія кінцевих множин утворює (булевий) топос .


1
Хоча це не пов’язано безпосередньо, але враховуючи, що ви згадали топої та HOL, було б добре побачити і більш високу групоподібну та / або гомотопічну інтерпретацію.
dk14
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.