Каково использование Пределов и Колимитов Теории Категории в каждодневных проблемах?

9

Мне интересно узнать, как мы можем использовать концепции пределов и колимитов в задачах моделирования в повседневной жизни? Может быть, кто-нибудь может привести примеры разработки программного обеспечения? Или опишите интуитивно в целом, для каких задач моделирования мы можем использовать эти понятия? Спасибо.

user221678
источник
1
Везде, где используется эта библиотека, hackage.haskell.org/package/data-category-0.5.1/docs/…
Чад Брюбейкер
3
Который , к сожалению , нет нигде, AFAICT ...
Сьерд Висшера
1
Проверьте главу по теории категорий в справочнике логики в CS.
Каве

Ответы:

7

Возьмем некоторые отношения , . Пусть , - проекции с областями, ограниченными отношениями , . Тогда откат , является объединением и в смысле SQL.р0A0×A1р1A1×A2π1:р0A1π0:р1A1р0р1π0π1р0р1

beroal
источник
5

Хорошим примером является Tate et al. Генерация оптимизации компилятора из Proofs . Он использует откаты и выпады как обобщенные объединения и пересечения в категориях, где стрелки - это замены (IIRC).

Росс Тэйт утверждает (на веб-странице бумаги), что детали были ошеломляющими без абстракции, предоставляемой теорией категорий. Лично я хотел бы представить в качестве «внушающих доказательств» (если могут быть какие-либо доказательства такого утверждения) диаграммы (6) и (7) в их документе - они выглядят достаточно сложными в схематической форме. Позвольте мне процитировать их комментарии в строке.

Некоторые спрашивают нас, почему мы вообще абстрагировали нашу методику доказательства и почему в качестве абстракции мы использовали теорию категорий. Однако сначала мы разработали абстрактный алгоритм, используя теорию категорий, а затем использовали его, чтобы выяснить, как решить нашу конкретную проблему. Мы застряли с конкретной проблемой, перегружены деталями и переменными, и любое решение, которое мы могли придумать, казалось произвольным. Чтобы отразить и упростить, мы решили сформулировать наш вопрос категорически. Это привело к диаграмме источников и приемников, поэтому мы просто использовали отжимания и откаты, чтобы склеить вещи. Самая большая проблема заключалась в том, чтобы придумать завершение выжимания, а не использовать существующую стандартную концепцию. Категориальную формулировку было легко определить и аргументировать. После этого мы создали экземпляры абстрактных процессов,

Мы на самом деле находили этот процесс абстрагирования к теории категорий, когда мы застряли, довольно плодотворным. Мало того, что это решает нашу конкретную проблему, мы получаем лучшее понимание нашей собственной проблемы, а также абстрактное решение, которое можно легко адаптировать к другим приложениям. Таким образом, наш опыт показывает, что теория категорий может быть полезна при построении реальных алгоритмов, а также полезна в качестве основы для формализации. Нам было бы интересно узнать о других подобных событиях, положительных или отрицательных.

Blaisorblade
источник
4

В книге Спивака на странице 192 он приводит пример использования колимитов для создания транзитных карт . Кроме того, в его Приложении 5.2.1.2 обсуждается применение патчей, подобных Liquibase, к схеме базы данных с течением времени, а затем использование colimits для универсального анализа старых и новых данных.

Чад Brewbaker
источник
4

Широкая область применения - преобразования графов (применяются в модельно-ориентированной инженерии). Два соответствующих документа (приведены со ссылками на Google Scholar):

РЕДАКТИРОВАТЬ: опять же, (часть) основная идея заключается в том, что толчки действуют как союз с некоторым клеем. Это позволяет определить «правила перезаписи» для графиков - вы сопоставляете левую часть с графиком, а затем приклеиваете правую часть к (остальной части) графика соответствующим образом. Боюсь, я не могу добавить детали, потому что я никогда не получал больше, чем интуиция.

Blaisorblade
источник
Лучшее объяснение в этом ответе Дэйва Кларка: cstheory.stackexchange.com/a/947/989
Blaisorblade