В книге Hott, является ли большинство типов формирователей избыточными? И если так, то почему?


14

В главе 1 и Приложении A к книге Hott представлены несколько семейств примитивных типов (типы юниверсов, зависимые типы функций, типы зависимых пар, типы копроизведения, пустой тип, тип блока, тип натурального числа и типы идентификаторов), образующие основу для теории гомотопического типа.

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

ΠT:U.T

Я предполагаю, что другие типы также могут быть сконструированы аналогично тому, как они есть в чистом CC (т.е. просто выводят тип из индуктивной части определения).

Многие из этих типов явно делаются избыточными с помощью типов Inductive / W, которые представлены в главах 5 и 6. Но типы Inductive / W, по-видимому, являются необязательной частью теории, поскольку существуют открытые вопросы о том, как они взаимодействуют с HoTT (в минимум на момент выхода книги).

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

Был ли сделан этот выбор

  • по некоторым метатеоретическим причинам, о которых я не знаю?
  • по историческим причинам, чтобы теория типов выглядела как теории типов прошлого (которые не обязательно были основополагающими)?
  • для «юзабилити» компьютерных интерфейсов?
  • для некоторого преимущества в поиске доказательства, о котором я не знаю?

Аналогично: минимальная спецификация теории типов Мартина-Лёфа , /cs/82810/reduc-products-in-hott-to-church-scott-encodings/82891#82891


Они избыточны, но не так, как вы предлагаете. Вы должны спросить себя, для чего служит «минимальность фундамента»? И мы заботимся о цели?
— Андрей Бауэр

1
Я предполагаю, что техническая работа минимальна по соглашению, где вещи не должны быть минимальными, если это явно удобно или явно отмечено иначе. Книга даже придерживается этого в других местах, например, когда она определяет типы усечения (определенные правилами, но явно не минимальные). Например, если бы я увидел натс, определенный в терминах 0,1,10, преемника и операции мощности, я был бы сбит с толку, но я мог бы по крайней мере понять, почему это удобно для обозначения. Хотт - намного более сложная область изучения, и я хочу знать, упускаю ли я что-нибудь очевидное.
— user833970

1
Мне было бы очень интересно услышать о том, как они могут быть вредными. Должен ли я задать новый вопрос об этом?
— user833970

1
@AndrejBauer Я бы хотел знать, почему они тоже вредны. Мое рассуждение о том, что основополагающий язык должен быть минимальным, - это причина бритвы occam, это неоправданная дополнительная сложность. Зачем останавливаться на достигнутом? Почему бы не добавить также списки, строки, пары, тройки, векторы? Это кажется произвольным выбором, что их оправдывает? Редактировать: я только что заметил, что на этот вопрос есть ответы; но я оставлю этот комментарий здесь только для того, чтобы отметить, почему меня это тоже заинтересует.
— MaiaVictor

1
Я напишу в блоге.
— Андрей Бауэр

Ответы:


14

Позвольте мне объяснить, почему предложенная кодировка пустого типа не работает. Мы должны быть откровенными об уровнях вселенной, а не скрывать их под ковром.

Когда люди говорят «пустой тип», они могут иметь в виду одно из двух:

  1. Одного типа , который является пустым в отношении всех типов. Такой тип имеет правило исключения: для каждого п и типа семьи A : E → U п , существует отображение й н , : Е → .ENA:E→Unen,A:E→A

  2. Семейство типов , по одному для каждого уровня юниверса k , так что E k является «пустым типом U k ». Такой тип должен удовлетворять E к : U к , очевидно, а также: для каждого типа семьи A : E к → U к , существует отображение е к , : E к → A .EkkEkUkEk:UkA:Ek→Ukek,A:Ek→A

Без каких-либо оговорок, когда люди говорят «пустой тип», они ожидают первое значение выше.

Как мы можем получить ? Первая попытка может быть что-то вроде E = Π ( T : U )E но это как раз тот вид подметания, который создает путаницу. Мы должны записать явные уровни вселенной. Если мы напишем что-то вроде E k = Π ( T : U k )

E=Π(T:U).T
, то мы получим последовательность типов Е 0 , Е 1 , Е 2 , ... ,одному для каждого уровня к . Мы можем надеяться, что эта последовательность является пустым типом в указанном выше смысле, но это не так, потому что E k находится в U k + 1, но предполагается, что она находится в U k .
Ek=Π(T:Uk).T
E0,E1,E2,…kEkUk+1Uk

Еще одна попытка но теперь вы должны объяснить, что такое « Π n ». Вы можете испытать искушение сказать, что существует тип L вселенских уровней, и поэтому E = Π ( n : L )

E=Πn.Π(T:Un).T
ΠnL Вы сейчас попали в ловушку, потому что я спрошу: в какой вселенной живет E ? И в какой вселенной живет L ? Это не сработает.
E=Π(n:L).Π(T:Un).T
EL

UB:U→UΠ(X:U)B(X)UUΠ(X:U)XU

Могут быть организованы непредсказуемые вселенные. Однако известная теорема Тьерри Коканда (если я не ошибаюсь) показывает, что наличие двух непредсказуемых вселенных, одна из которых содержится в другой, приводит к противоречию.

Мораль этой истории такова: просто аксиоматизируйте пустой тип напрямую и перестаньте кодировать вещи.


Это убедительная аргументация для аксиоматизации пустого типа, но мне все еще любопытно обосновать аксиоматизацию всех этих более тяжелых вещей.
— MaiaVictor

@MaiaVictor: в отличие от чего?
— Андрей Бауэр

Сожалею? Я просто имею в виду, что вы убедительно обосновали, почему стоит аксиоматизировать пустой тип, в частности. Но OP также спросил о других вещах: «типы юниверсов, зависимые типы функций, типы зависимых пар, типы копроизведения, пустой тип, тип модуля, тип натурального числа и типы идентификаторов» (которые, как я полагаю, также являются примитивами системы, предложенной в HoTT книга). (Я, очевидно, не прошу вас всех оправдывать, просто проявляю мой интерес.)
— MaiaVictor

1=∏X:U(X→X)

@IngoBlechschmidt интересно узнать, какие проблемы! Это выглядит хорошо для меня ...
— MaiaVictor

15

Вы задаете несколько вопросов, которые похожи, но различны.

  1. Почему книга HoTT не использует церковные кодировки для типов данных?

    Церковные кодировки не работают в теории типов Мартина-Лёфа по двум причинам.

    nk<n

    Во-вторых, даже если вы определили типы данных, такие как натуральные числа, с кодировками Церкви, чтобы делать доказательства с этими типами, вам нужны принципы индукции, чтобы доказать что-то о них. Чтобы вывести принципы индукции для церковных кодировок, вам нужно использовать аргумент, основанный на параметричности Рейнольдса, и вопрос о том, как включить принципы параметричности в теорию типов, до сих пор не решен полностью. (Современное состояние - статья Нейпса, Веццози и Devriese ICFP 2017 « Параметрические квантификаторы для теории зависимых типов» - обратите внимание, что это хорошо после того, как книга HoTT была написана!)

  2. Далее вы спрашиваете, почему фундамент не минимален. Это на самом деле одна из отличительных социологических особенностей теоретико-типовых оснований - теоретики типов рассматривают наличие небольшого набора правил как техническое удобство, без особого фундаментального значения. Гораздо важнее иметь правильный набор правил, а не наименьший набор правил.

    Мы разрабатываем теории типов, которые будут использоваться математиками и программистами, и очень и очень важно, чтобы доказательства, сделанные в рамках теории типов, были теми, которые математики и программисты считают правильными. Это объясняется тем, что аргументы, которые математики обычно рассматривают как имеющие хороший стиль, обычно структурированы с использованием ключевых алгебраических и геометрических принципов области исследования. Если вам приходится использовать сложные кодировки, большая часть структуры теряется или затеняется.

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


Спасибо за этот ответ! Мне нужно прочитать эту статью (и вашу), и это может иметь больше смысла. Но я думал, что иерархия юниверсов была разработана так, чтобы выглядело так, как будто вы можете делать предикативные вещи: например, (λA: U.λa: Aa) (ΠA: UA → A) будет десагарно (λA: Un + 1.λa: Аа) (П А : Un.A → А). Я действительно думаю, что это странный выбор редакции - не объяснять это, каждая книга по логике, которую я знаю, указывает на несколько более минимальных кодировок, таких как CNF, DNF, NAND и так далее. И любой, кто привык к теории множеств, ожидает «естественного» кодирования Натса, чтобы продемонстрировать теорию. Но это могут быть просто мои классические предубеждения.
— user833970

это должно быть "непредсказуемым" в моем последнем комментарии
— user833970

∏(T:Un).TUnUn+1Un

Возможно, я неправильно понимаю что-то о вселенских иерархиях. Я думал, что нас никогда не волнует, в каком конкретном юниверсе находится тип, только то, что номера юниверсов могут быть назначены, когда мы хотим проверить доказательство. Технически, ΠT: UT - это семейство типов, индексированных по юниверсам. Также как полиморфная идентичность - это семейство типов, индексируемых по вселенным. Но разве у нас нет той же проблемы с полиморфной идентичностью? Я был бы очень признателен, если бы вы расширили последние 2 предложения, я не думаю, что понимаю.
— user833970

Когда вы говорите, что у него нет правильных свойств исключения, вы имеете в виду, что после установления юниверса в высших вселенных есть типы, которые не могут быть непосредственно синтезированы термином termT: Un.T?
— user833970
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.