Тверді програми теорії категорій у TCS?


103

Я вивчив декілька біт теорії категорій. Це, безумовно, інший спосіб погляду на речі. (Дуже приблизний підсумок для тих, хто цього не бачив. Теорія категорій дає способи вираження всіх видів математичної поведінки виключно з точки зору функціональних зв'язків між об'єктами. Наприклад, такі речі, як декартовий продукт двох множин, повністю визначені в термінах як з нею поводяться інші функції, а не з точки зору того, які елементи є членами набору.)

Я маю певне розуміння того, що теорія категорій корисна на мовах / логіці програмування ("Теорія Б"), і мені цікаво, скільки алгоритмів та складності ("Теорія А") може отримати користь. Це може допомогти мені зійти з місця, хоча, якщо я знаю деякі тверді застосування теорії категорій в Теорії Б. (я вже неявно припускаю, що в Теорії А додатків досі не знайдено, але якщо у вас є деякі з них, це навіть краще для мене!)

Під твердим застосуванням я маю на увазі:

(1) Застосування настільки сильно залежить від теорії категорій, що досягти цього дуже важко без використання техніки.

(2) Додаток посилається на щонайменше одну нетривіальну теорему теорії категорій (наприклад, лема Йонеди).

Цілком можливо, що (1) передбачає (2), але я хочу переконатися, що це "реальні" програми.

У той час як у мене є деяка історія "Теорії В", минуло певний час, тому будь-яка деаргонізація була б дуже вдячна.

(Залежно від того, які відповіді я отримаю, я можу перетворити це питання на вікі спільноти пізніше. Але мені дуже хочеться гарних додатків з хорошими поясненнями, тому, мабуть, соромно не нагороджувати відповідачів (-ів) чимось.)

Відповіді:


79

Я можу придумати один випадок, коли теорія категорій була безпосередньо «застосована» для вирішення відкритої проблеми в мовах програмування: Торстен Альтенкірх, Пітер Діб'єр, Мартін Хофманн і Філ Скотт, «Нормалізація шляхом оцінки типізованого обчислення лямбда з копродуктами» . З їх конспекту: "Ми вирішуємо проблему рішення для просто набраного лямбдального обчислення із сильними бінарними сумами, що рівнозначно задачі слова для вільних декартових закритих категорій із двійковими копродуктами. Наш метод заснований на семантичній техніці, відомій як" нормалізація оцінкою "і включає перетворюючи інтерпретацію синтаксису на відповідну модель снопа і з цього витягуючи відповідні унікальні нормальні форми ".

В цілому, я думаю, що теорія категорій зазвичай не застосовується для доведення глибоких теорем в мовах програмування (яких не так багато), а натомість пропонує концептуальні рамки, які часто корисні (наприклад, у вищезгаданому, ідея (перед) снопової семантики).

Важливим історичним прикладом є припущення Евгеніо Моджі про те, що поняття монади (яке є основним і всюдисущим у теорії категорій) може бути використане як частина семантичного пояснення побічних ефектів у мовах програмування (наприклад, держава, недетермінізм). Це також надихнуло на деяке роздуми щодо синтаксису мов програмування, наприклад, що веде безпосередньо до "класу монадів" в Haskell (використовується для інкапсуляції ефектів).

Зовсім недавно (минуле десятиліття) це пояснення ефектів монардів було переглянуте з погляду старого зв’язку (встановленого теоретиками категорій у 60-х роках) між монадами та алгебраїчними теоріями: див. Мартіна Гіленда та Джона Паула , "Категорія Теоретичне розуміння універсальної алгебри: теорії і монарди Ловевера" . Ідея полягає в тому, що монадичний погляд на ефекти сумісний з (дещо привабливішим) алгебраїчним видом ефектів, де ефекти (наприклад, зберігати) можна пояснити з точки зору операцій (наприклад, "пошук" та "оновлення") і пов'язані рівняння (наприклад, idempotency оновлення). Існує нещодавній документ з паперу про цей зв'язок Пола-Андре Мельєса: "Умова Segal відповідає обчислювальним ефектам", яка також в значній мірі покладається на ідеї, що виходять із "теорії вищої категорії" (наприклад, поняття "структура Йонеди" як способу організації передчасної семантики).

Інший, пов'язаний клас прикладів, походить з лінійної логіки . Незабаром після його введення Жаном-Івом Жираром у 80-х (з метою кращого розуміння конструктивної логіки) були встановлені міцні зв’язки з теорією категорій. Деякі пояснення цього зв'язку див. У статті Джона Бееса та Майка Стая "Фізика, топологія, логіка та обчислення: камінь Розетта" .

Нарешті, ця відповідь була б неповною без посилання на ілюмінаційний блог sigfpe "Сусідство нескінченності" . Зокрема, ви можете перевірити "Часткове впорядкування певної теорії категорій, застосованої до Haskell" .


3
Привіт Ноам, я думаю, що після цієї чудової відповіді, ваш представник досить високий, щоб додати посилання!
Суреш Венкат

Я зіткнувся з тією ж проблемою, що і новачок. Я просто чекав, коли моя відповідь проголосується, потім я посилаюсь на посилання. Ви могли б зробити те саме ...
Андрій Бауер

10
Дякую! Вибачте за обмеження гіперпосилання ... хотілося б, щоб був спосіб сказати системі "yo, я Noam Zeilberger, я законний"
Ryan Williams

додали посилання! Так, це цілком розумна політика, яка просто перешкоджає іноді.
Ноам Зейльбергер

46

Квантове обчислення

Один дуже цікавий напрямок - це застосування різних моноїдних категорій для квантових обчислень. Дехто може стверджувати, що це теж фізика, але роботу виконують люди у відділах інформатики. Ранній документ у цій галузі - категорична семантика квантових протоколів Самсона Абрамського та Боба Коке; багато останніх робіт Абрамського та Коека та інших продовжують працювати в цьому напрямку.

У цьому документі роботи квантові протоколи аксіоматизовані як (певні види) компактних закритих категорій. Такі категорії мають прекрасну графічну мову з точки зору рядкових (та стрічкових) діаграм. Рівняння в категорії відповідають певним рухам струн, таким як випрямлення заплутаної, але не вузликової струни, що в свою чергу відповідає чомусь значущому в квантовій механіці, наприклад, квантовій телепортації.

Категоричний підхід пропонує високологічний логічний вигляд того, що зазвичай передбачає обчислення дуже низького рівня.

Теорія систем

FF

Графічні перетворення

G1,G2Pe1:PG1e2:PG2G1G2G1G2P

(L,K,R)LRKl:KLr:KRLKRKdKDdlGdk

Мови програмування (через MathOverflow)

У розробці мов програмування та теорії мови програмування було багато застосувань теорії категорій. Обширні відповіді можна знайти на MathOverflow. https://mathoverflow.net/questions/3721/programming-languages-based-on-category-theory ) https://mathoverflow.net/questions/4235/reling-category-theory-to-programming-language-theory .

Біографи - обчислення процесів

Нарешті, є біграни Мілнера , загальна основа для опису та міркувань щодо систем взаємодіючих агентів. Це можна розглядати як загальну основу для міркувань про алгебри процесу та їх структурні та поведінкові теорії. Підхід також базується на натисканнях.


35

Я вже неявно припускаю, що поки що не знайдено додатків у Теорії А, але якщо у вас є деякі з них, це для мене ще краще!

  • Я розумію, що теорія видів Джояла використовується досить широко в численній комбінаториці, як узагальнення породжуючих функцій, що додатково підказує вам, як переставляти речі на додаток до того, скільки їх існує.

  • Піппенгер застосував кам'яну подвійність для співвідношення звичайних мов та різновидів напівгруп. Jeandel ввів топологічні автомати, що застосовують ці ідеї, щоб дати уніфіковані рахунки (і докази!) Для квантових, імовірнісних та звичайних автоматів.

  • Роланд Бекхаус дав абстрактні характеристики жадібних алгоритмів за допомогою зв'язків Галуа з тропічним семінаром.

У набагато більш спекулятивній думці Ноам згадав про моделі снопа. Вони абстрактно характеризують синтаксичну техніку логічних відносин, що, мабуть, є одним із найпотужніших прийомів у семантиці. Ми здебільшого використовуємо їх для доказу результатів невиразності та послідовності, але це має бути цікаво теоретикам складності, оскільки це приємний приклад практичної неприродної (у розумінні Разборова / Рудича) методики доказування. (Однак логічні відносини зазвичай дуже ретельно розроблені для того, щоб гарантувати їх релятивізацію - ми, як дизайнери мови, хочемо запевнити програмістів, що виклики функцій - це чорні поля!)

EDIT: Я продовжуватимуть спекуляції на прохання Райана. Як я розумію, природний доказ - це приблизно один із напрямків спроб визначити індуктивну інваріантну структуру ланцюга, залежно від різних розумних умов. Подібні ідеї (не дивно) досить поширені і в мовах програмування, коли ви намагаєтеся визначити інваріант, що індуктивно підтримується терміном лямбда-числення (наприклад, для підтвердження безпеки типу). 1

ABABA

ABAB. Зауважимо, що не існує єдиного індуктивного інваріанта - ми визначаємо ціле сімейство інваріантів шляхом рекурсії по структурі вхідних даних і використовуємо інші засоби, щоб показати, що всі терміни лежать в межах цих інваріантів. Теоретично це теорія значно сильнішої техніки, і саме тому вона дозволяє доводити результати послідовності.

Зв'язок із снопами виникає через те, що нам часто потрібно міркувати про відкриті терміни (тобто терміни з вільними змінними), і тому нам потрібно розрізняти застрявання через помилки та застрявання через необхідність зменшення змінної. Снопи виникають при розгляді скорочення лямбда-числення як визначення морфізмів категорії, термінами яких є об'єкти (тобто частковий порядок, індукований скороченням), а потім розгляду функцій з цієї категорії на множини (тобто предикати). Жан Гальєр написав кілька приємних робіт про це на початку 2000-х, але я сумніваюся, що вони читаються, якщо ви вже не засвоїли неабияку кількість лямбда-числення.


1
Не могли б ви дати посилання на папірець? У нього в заголовку є декілька, що згадують про "зв'язок Галуа", але швидкий пошук очевидно не виявив, який саме стосується жадібних алгоритмів (і я не думаю, що я досить знайомий з областю, щоб проникнути деталі та малюнок легко, який з них є "справді" щодо жадібних алгоритмів). Дякую!
Джошуа Грохов

1
Поряд із запитанням Джошуа, мене також цікавить, як моделі снопів та логічні стосунки стосуються природних доказів.
Райан Вільямс

Re: Стоїть подвійний камінь, для більш захоплюючої недавньої роботи дивіться Майя Герке "Кам’яна подвійність та впізнавані мови через алгебру" ( math.ru.nl/~mgehrke/Ge09.pdf ) та Герке, Григор'єв та Пін "Топологічний підхід до розпізнавання "( math.ru.nl/~mgehrke/GGP10.pdf )
Ноам Зейльбергер

Re: Gallier, ви маєте на увазі кінець 90-х (як у sciencedirect.com/science/article/pii/0304397594002800 ?)
Blaisorblade

24

Прикладів багато, першим, що спадає на думку, є використання теорії категорій Алекса Сімпсона для доведення властивостей мов програмування, див., Наприклад, " Обчислювальна адекватність рекурсивних типів в моделях інтуїтивістської теорії множин ", "Анали чистої та прикладної логіки". , 130: 207-275, 2004. Незважаючи на те, що в заголовку зазначається теорія множин, техніка є категоріально-теоретичною. Дивіться домашню сторінку Алекса для отримання додаткових прикладів.


Дякую за відгуки, але зауважте, що я не запитував: "які результати були отримані, використовуючи теорію категорій, яку не можна отримати інакше?"
Райан Вільямс

Правда, ти цього не зробив. Я відредагував свою відповідь.
Андрій Бауер

11

Я думаю, ви задаєте два питання щодо застосовності, типу A та типу B окремо.

Як зазначаєте, існує багато предметних застосувань теорії категорій для тем типу B: семантика мов програмування (монади, декартові закриті категорії), логіка та доказовість (топої, різновиди лінійної логіки).

Однак, як видається, мало теоретичних застосувань до теорії А (алгоритми чи складність).

Існує певне використання в елементарних об'єктах, таких як опис категорій автоматів або комбінаторних об'єктів (графіки, послідовності, перестановки тощо). Але це, здається, не пояснює глибше розуміння теорії мови або алгоритмів.

Спекулятивно, це може бути невідповідність поточних стратегій теорії категорій та предметів теорії А:

  • Центральна стратегія теорії категорій стосується рівності (коли речі однакові і коли вони різні, і як вони співпадають між собою).

  • Для теорії складності основна стратегія - це скорочення та встановлення меж (можна вважати, що зменшення - це стріла, але я не думаю, що нічого, крім цієї поверхневої подібності, не вивчали).

  • Для алгоритмів немає іншої загальної стратегії, окрім спеціального розумного комбінаторного мислення. Для певних доменів я б очікував, що це може бути плідним дослідженням (алгоритми алгебр?), Але я цього ще не бачив.


2
виявляється, що скорочення пов'язані з категоричними реконструкціями інтерпретації Геделя Діалектика та семантикою лінійної логіки. Див. "Запитання та відповіді Андреаса Бласа - категорія, що виникає в лінійній логіці, теорії складності та теорії множин". math.lsa.umich.edu/~ablass/qa.pdf
Neel

3

Програми "TCS-A", які мені спадають на думку, - це комбінаторні види Джояла (узагальнення енергетичних рядів до функторів, щоб описати комбінаторні об'єкти, такі як дерева, набори, мультисети тощо) та формалізація криптографічних "ігор-стрибків" за допомогою реляційних, ймовірнісна логіка Хоара (Easycrypt, Certicrypt, робота Andreas Lochbihler). Хоча категорії не відображаються безпосередньо в останніх, вони сприяли розробці базової логіки (наприклад, монад).

PS: Оскільки моє ім’я згадувалося в першій відповіді: використання фібрацій групоїдів для виявлення невиправданості певної аксіоми в теорії типу Мартіна-Льофа Томасом Стрейхером і я також можна вважати "твердим" використанням теорії категорій (хоча і в логіці або "TCS-B").


3

Найновіша книга « Сім ескізів у композиційності» перелічує декілька застосувань теорії категорій в обчислювальній техніці та техніці. Помітний розділ про бази даних, де автори описують запити, поєднання, міграцію та еволюціонуючі бази даних на основі категоричної моделі. Автори взяли це далі і розробили мову категоричних запитів (CQL) та інтегроване середовище розробки (IDE) на основі своєї категоричної моделі баз даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.