Николай Иваныч ([info]nivanych) wrote,
@ 2008-11-07 14:29:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Entry tags:category theory

Конструктивная теория категорий не очень конструктивна? И типа того. Непричёсанные мысли.
Все (из тех, что я видел) теории категорий,
которые назывались конструктивными, лично я
такими бы не назвал, разве только формально,
раз уж изложили их внутри конструктивной логики.


Возьму всем знакомый и близкий по духу
пример предела -- произведение.
Повторю классическое определение.
Произведение a и b -- это объект,
обозначаемый (a,b), со стрелками-проекциями
pia : (a,b) -> a
pib : (a,b) -> b
и чтобы для любого объекта c с двумя стрелками
f : c -> a
g : c -> b
существовала, и притом одна стрелка ku : c -> (a,b)
чтобы диаграмма, из всех этих стрелок нарисованная,
была коммутативна, то есть, чтобы
pia o ku = f
pib o ku = g
(Зачем так расписывал? Ну раз уж написал, удалять не буду.)
Написать про пределы, что-ли... не буду, и так многа букаф.

Ну и в такой вот логике, если у нас есть произведение,
мы можем рассуждать, что для каждого c есть единственная ku,
и более того, в логике предикатов можем про правилу E
оперировать этим самым ku, как будто оно реально существует.

Теперь посмотрим "конструктивное" определение.
Там (a,b) задаётся вместе со способом построения
дял любого c единственной стрелки ku.
Да, спобоб построения и всё такое -- конструктивно.
Но как, имея объекты a и b, построить их произведение,
если даже ты точно знаешь, что оно существует?...

Иначе говоря, для близких сердцу категорий, в которых
существуют близкие сердцу пределы (или же вообще все конечные)
придётся строить совсем другую конструктивную теорию категорий.
Только такая теория будет полезна для народного хозяйства,
так как в той "конструктивной" непонятно, как построить даже простейшие
(ко)пределы типа (ко)произведений или даже терминального объекта.

Значит, есть практическая необходимость ограничения
на категории, с которыми предполагается вести практическую
(реально -- далеко не только) программистскую работу.
Должны существовать некоторые конкретные (ко)пределы --
конечные (ко)произведения и терминальный-начальный объекты
точно нужны, без экспонент тоже ну никак не обойтись.

Напомню, что при этих условиях категория уже становится
конечно-полной (finitely complete) и более того, даже
конечно-кополной (finitely cocomplete), а (по определению)
это значит, что в ней существуют любые конечные (ко)пределы,
и в частности, такие замечательные вещи, как
equalizer'ы и pullback'и (кстати, как по-русски?).

Нужен ли классификатор подобъектов?

Конечно-полные-кополные категории с экспонентами --
это уже довольно-таки много информации о категории.
Если говорить о конструкциях, то есть, о чём-то типа
языка программирования, то в зависимости от базы,
на которой стороится язык, как правило, легко доказывается,
существует ли там классификатор подобъектов или нет.

Иначе -- если категория уже зафиксирована, то классификатор
нельзя ввести дополнительно, так как если он не существует,
то получаем противоречивую теорию, а если существует,
то единственен с точностью до изоформизма.

Подустал я чего-то.
Не раскрыто много вопросов...
Как будут приходить в голову, буду писать.
А они будут приходить, обязательно.

Добавлю, посмотрите вот это --
Easy Categories for Programmers
http://docs.google.com/View?docid=dc7rg5cv_24ftbwjrgm




(24 comments) - (Post a new comment)


[info]ivan_ghandhi
2008-11-07 03:38 pm UTC (link)
"Но как, имея объекты a и b, построить их произведение,
если даже ты точно знаешь, что оно существует?..." - очень занятно звучит.

Если точно знаешь, что существует, так и бери это самое сушествующее. Знание - сила.

Для категорий не надо даже конструктивности. Достаточно интуиционизма. Если категория - внутренняя категория какого-то топоса, то предел же будет существовать когда имеется определённый морфизм. Вот этот морфизм и задаёт предел. Или он имеется в категории, и мы умеем его применить к точке, или он существует только гипотетически, и о нём сказать ничего нельзя.

Интересно, конечно, сравнить отношения, скажем, конструктивной категории множеств с идеалистической, в которой всё есть. Но это два разных топоса, и вряд ли существует между ними невырожденный геометрический морфизм. Разные логики.

Edited at 2008-11-07 03:39 pm UTC

(Reply to this) (Thread)


[info]nivanych
2008-11-07 03:58 pm UTC (link)
> Если точно знаешь, что существует,
> так и бери это самое сушествующее.

Ну так, собственно, я о том же.
Это запросто сделать именно из-за
никакой структуры стрелок.

> то предел же будет существовать
> когда имеется определённый морфизм

Ну да.
А вместе с пределом пачка равенств.

Как-то нечётко я задал интонации.
В следующий раз исправлюсь.
Да, и надо было на жавовые категории ссылку дать.
Ща, исправлю.

(Reply to this) (Parent)(Thread)


[info]nivanych
2008-11-07 04:01 pm UTC (link)
> Если точно знаешь, что существует,
> так и бери это самое сушествующее.

Я хотел об этом написать, но забыл.
Про "не совсем конструктивную" я имел ввиду,
что многие привычные объекты в ней
строятся очень некрасиво.
Ну короче, это начало агитации за топосы.

(Reply to this) (Parent)(Thread)


[info]migmit.vox.com
2008-11-09 06:26 am UTC (link)
А зачем за них агитировать?

(Reply to this) (Parent)(Thread)


[info]nivanych
2008-11-09 11:44 am UTC (link)
Достаточно общая абстракция,
имеющая родство с теориями типов,
интуитивно обобщающая многие
привычные вещи, то есть,
имеющая "интуитивную семантику".
В то же время описывает
довольно многие вещи.

(Reply to this) (Parent)(Thread)


[info]migmit.vox.com
2008-11-09 02:01 pm UTC (link)
Но одновременно с этим - чрезмерно сильная вещь. Грубо говоря, если есть мономорфизм X\to Y, то классифицирующий его морфизм Y\to\Omega, конечно, тоже существует - но запросто может оказаться невычислимым.

(Reply to this) (Parent)(Thread)


[info]nivanych
2008-11-09 02:49 pm UTC (link)
> Но одновременно с этим - чрезмерно сильная вещь.

Пожалуй.
Но как минимум, это уже какие-то "полезные" рамки.
То есть, вполне полезно рассматривать довольно-таки
многие вещи, как частные случаи топосов, а так же,
рассмотреть топосы (и вообще категории) на
всяких разных неклассических логиках.

Не имею возможности (способности) достаточно
кратко и убедительно выразить мою мотивацию,
поэтому, пока что, сошлюсь на авторитеты --
J.Lambek и P.J.Scott ;-)

(Reply to this) (Parent)


[info]nivanych
2008-11-10 12:43 pm UTC (link)
> но запросто может оказаться невычислимым

Алгоритмически это сложно даже в
конечных множествах со много элементами.
Хотя и разрешимо путём полного перебора.
Умение сконструировать по мономорфизму
его классифицирующий морфизм -- почти что
умение автоматически доказывать теоремы!

Обычно требуется найти объекты теории,
которые удовлетворяют некоторому условию.
Если говорить про программирование, то этого хватает.
Работают же как-то Agda-Coq'и, и вполне удобно?

(Reply to this) (Parent)(Thread)


[info]migmit.vox.com
2008-11-10 12:52 pm UTC (link)
> Обычно требуется найти объекты теории, которые удовлетворяют некоторому условию.

Вообще говоря, это невозможно.

> Работают же как-то Agda-Coq'и, и вполне удобно?

Но не в тех случаях, когда "вообще говоря".

(Reply to this) (Parent)(Thread)


[info]nivanych
2008-11-10 01:27 pm UTC (link)
Собственно, я про то, что разговор
о "мощности" топосов свёлся к невозможности
автоматически доказывать теоремы.
Ладно хоть проверка типов возможна.
Но и тут ньюансов много...

(Reply to this) (Parent)


[info]nivanych
2008-11-07 04:21 pm UTC (link)
> сравнить отношения, скажем,
> конструктивной категории множеств
> с идеалистической, в которой всё есть.

> вряд ли существует между ними
> невырожденный геометрический морфизм.
> Разные логики.

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

"Хороший" геометрический морфизм врядли существует.
Но если их всунуть в какой-то общий топос,
то может быть, что-то можно посравнивать ещё.

(Reply to this) (Parent)(Thread)


[info]ivan_ghandhi
2008-11-07 04:58 pm UTC (link)
Насчёт общего топоса: это не выглядит вероятным. Есть же известный пример топоса, не имеющего базового булева топоса. Пары из (Setf, Set) со стрелками из первого множества во второе. Это топос, но вот такой вот специфический. Пример из Джонстона.

(Reply to this) (Parent)(Thread)


[info]nivanych
2008-11-08 09:21 am UTC (link)
Буду знать...
Наверное, пора уже не только проглядывать,
а уже и начинать читать Джонстона...

(Reply to this) (Parent)


[info]nivanych
2008-11-08 10:11 am UTC (link)
Для сравнения их необязательно пихать в топос.
Можно в какую-нибудь и другую категорию...
Правда, будет меньше возможностей сравнивать.

(Reply to this) (Parent)


[info]nivanych
2008-11-08 09:47 am UTC (link)
> Достаточно интуиционизма.

Получается, для конструктивной теории категорий
более, чем достаточно интуиционистской логики
1-го порядка (!) с равенством?

(Reply to this) (Parent)


[info]beroal
2008-11-08 05:13 pm UTC (link)
Но как, имея объекты a и b, построить их произведение,
если даже ты точно знаешь, что оно существует?...


Построить с помощью Inductive в Coq или data в Haskell. То есть с помощью алгебраических типов данных. Алгебраические типы данных ведут родословную от алгебраических функторов. Алгебраический функтор есть формула из категориальных произведений и сумм. Круг замкнулся. :-)

Я представлял, что «конструктором» являются аксиомы. Аксиома, утверждающая существовании некоторой вещи, генерирует эту вещь. Будь эта вещь множеством или категориальным произведением или противоположным или нейтральным элементом группы.

equalizer'ы и pullback'и (кстати, как по-русски?).
уравнитель и (декартов квадрат или обратный образ)

(Reply to this) (Thread)


[info]nivanych
2008-11-09 03:37 pm UTC (link)
В общем, ступил, конечно.
До сих пор каша в голове с категориями,
основанными на разных логиках.
Но я же предупредил, что внутри непричёсанное.
Надо было "дыбром" пометить, что-ли ;-)

Но неудобно с Coq'овой работать, всё равно неудобно.
Да и сетоиды мне не нравится, всё равно не нравятся ;-)

> уравнитель и (декартов квадрат или обратный образ)

Pullback совсем не "декартов квадрат".
А "обратный образ" -- тоже как-то не то.

> Алгебраические типы данных

Часто с ними проще работать,
представляя их, как функторы.

> ведут родословную от алгебраических функторов.

Но это совсем не обязательно.

> Я представлял, что «конструктором» являются аксиомы.
> Аксиома, утверждающая существовании некоторой вещи, генерирует эту вещь.
> Будь эта вещь множеством или категориальным произведением
> или противоположным или нейтральным элементом группы.

В случае с категориями это довольно несложно
именно из-за никакой структуры стрелок.

Есть один ньюанс, вместе с построением объекта
нужно строить пачку равенств, в общем случае
с пределами это и правда пачка ;-)

Но случай с классификатором подобъектов
мне как-то пока не до конца понятен.
И непонятно, почему с пределами понятно,
а с классификатором подобъектов -- не очень.
Вроде бы, если для твоей теории ты доказал,
что у тебя существует классификатор подобъектов,
ну и бери его, просто введи \Omega
вместе с соответствующими мормизмами.
Ну и для каждого мономорфизма просто
дай абстрактную стрелку классификатора
и пачку равенств ;-) Но что-то гложет.
А если в твоей категории нет классификатора,
то так его вводить нельзя, получишь противоречие.

Видимо, путаница с категориями на базе разных логик
у меня возникла от того, что не представил некое
интуитивное метапространство этих самых логик...

Для категорий вообще можно сделать интуитивистскую логику
первого порядка с равенством, и как теория типов,
она будет крайне проста (можно сделать один тип -- морфизм).
Но 1-й порядок неудобен на практике.
Для топосов ещё как-то, но для категорий вообще -- неудобен.
Ну и кроме того, я не уверен, что всё им можно описать.
Например, сложности с понятием подобъекта.
Это (вроде) как-то описывается 1-м порядком,
но неудобно, и таких случаев может возникнуть куча.

Вот и думаю подыскать (интуиционистскую) теорию 2-го порядка попроще,
забабахать туда равенство и попробовать поописывать что-то известное.
Во всяком случае, теория может быть значительно проще Coq'овой.
Потом посмотреть на категорию, которая включает и эту логику
и теорию категорий на ней, её тоже описать чем-то.
Потом на это всё сверху посмотреть. И так любое конечное число раз.
Пока сложно представить, что же это такое будет, но что-то интересное ;-) ;-)

(Reply to this) (Parent)(Thread)


[info]beroal
2008-11-10 09:44 am UTC (link)
Pullback совсем не "декартов квадрат".
А "обратный образ" -- тоже как-то не то.


Склерозом пока не страдаю. :-)
Букур И.,Деляну А. Введение в теорию категорий и функторов. — М.:Мир, 1972. Глава 2, § 1, С. 41-42.
Гольдблатт Р. Топосы. Категорный анализ логики: Пер. с англ. — М.: Мир, 1983. — 488 с. Глава 3, § 3.13.
Также Википедия: Pullback.

(Reply to this) (Parent)(Thread)


[info]nivanych
2008-11-10 10:33 am UTC (link)
Книжек этих у меня нет.
Я так и не понял, как перевести "pullback"...
Обратный образ? Образ чего?
Ща попробую посмотреть у Цаленко и Шульгейфера.
Сходу найти не получилось, а перечитывать сейчас неохота.
Лядно, оставим. Буду писать pullback, люди поймут ;-)

(Reply to this) (Parent)


[info]nivanych
2008-11-10 12:16 pm UTC (link)
Пасиб.
Да, таки "обратный образ пары морфизмов".
В таком виде название более-менее понятно.

Голдблатта посмотрел немного, понравилось.
Очень жалею, что не достал его тогда,
когда начинал изучать эти вещи.

(Reply to this) (Parent)(Thread)


[info]beroal
2008-11-12 11:16 am UTC (link)
обратный образ пары морфизмов

Вообще-то не пары морфизмов. Обратный образ подмножества. Есть объекты odom, ocod, osub и морфизмы m:odom→ocod, minc:osub→ocod. osub⊆ocod и minc является включением или инъекцией osub в ocod. minc и osub задают подмножество, а pullback вычисляет обратный образ этого подмножества по функции m. И ещё pullback вычисляет ограничение m. Это, конечно, частный случай pullback-а. Типо историческая справка. :-)

(Reply to this) (Parent)(Thread)


[info]nivanych
2008-11-12 11:50 am UTC (link)
Это у Goldblatt'а написано ;-)
А вообще, мне понравилось.
Всё просто, и хоть пока нового не встретил,
только небольшие уточнения старого, но нравится.

(Reply to this) (Parent)


[info]beroal
2008-11-11 08:11 am UTC (link)
Я в этом не шарю, но хотел узнать одно: это будет отличаться от (добавить в Coq аксиому экстенсионального равенства)? Setoid-ы — не единственный путь.

Загадка: допустим, у нас есть функция, которая возвращает определение другой функции в виде синтаксического дерева. Тогда экстенсиональное равенство функций приведёт к противоречию… :-)

(Reply to this) (Parent)(Thread)


[info]nivanych
2008-11-11 09:21 am UTC (link)
Экстенсиональное равенство тут не нужно.
Тем более, что я хочу конструктивную теорию,
и мне обязательно иметь алоритм проверки типов.

Самое простое объяснение категории для алгебраистов --
полугруппа с левыми и правыми единицами.
На самом деле, если в любую полугруппу без единиц
тупо "индуктивно" их добавить, противоречия не будет.
Поэтому можно даже сказать, что категория -- это полугруппа.
От этого даже вполне можно отталкиваться (вроде, и отталкиваются?).

Для того, чтобы уже кое-чего описывать, достаточно иметь
интуиционистскую теорию 1-го порядка, и как ты догадываешься,
базовые типы тут получаются совсем простые.
Но без higher order многое невозможно, и как минимум, неудобно.
Например, вещи типа подобъекта, и кстати, отчасти, именно
эту проблему и решает топос (классификатор).

Поэтому, 1-й порядок практически можно
использовать только в топосе, да и то,
я подозреваю, что будет крайне неудобно.

С высокими порядками уже получается вещь,
по сложности (простоте) сравнимая с Henk.

А загадки никакой нет, про экстенсиональное равенство
давно было известно, что оно нехорошее во многих проявлениях.
Если без него, то достатоно (руками) повыводить типы.
В чём-то эта загадка родственна тому, что я могу сгенерировать
на языке со strong normalization асм-код типа jmp на себя.


Не загадка, но тоже проведу начало мысленного экперимента.
Представь себе какой-нибудь языка с простейшим синтаксисом,
внутри не очень сложное расширение просто-типа-лямбды,
например, с индуктивными типами, достаточными для описания
деревьев выражений этого языка, и способностью писать макросы.
Короче, почти что лисп, только база не-Тьюринг-полная.
Будет ли это dependent-higher-order?

(Reply to this) (Parent)


(24 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…