Я читаю о теории зависимых типов в онлайн-книге « Теория гомотопических типов» .
В разделе 1.3 главы « Теория типов» вводится понятие иерархии вселенных : , где
каждая вселенная является элементом следующей вселенной . Более того, мы предполагаем, что наши вселенные являются кумулятивными, то есть все элементы вселенной также являются элементами вселенной .
Тем не менее, когда я смотрю на правила формирования для различных типов в приложении A, на первый взгляд, если вселенная появляется над планкой в качестве предпосылки, та же самая вселенная появляется ниже. Например, для правила формирования видов побочных продуктов:
Итак, мой вопрос: зачем нужна иерархия? При каких обстоятельствах вам нужно прыгать со вселенной на одну высшую в иерархии? Мне действительно не очевидно, как при любой комбинации вы можете получить тип , которого нет в . Более подробно: правила формирования в разделах приложения A.2.4, A.2.5, A.2.6, A.2.7, A.2.8, A.2.9, A.2.10, A.3.2, либо упоминают в предпосылке и суждении, или только в суждении.
Книга также намекает на то, что существует формальный способ назначения вселенных:
Если есть какие-либо сомнения относительно правильности аргумента, способ проверить его состоит в том, чтобы попытаться последовательно назначить уровни всем появляющимся в нем юниверсам.
Каков процесс последовательного присвоения уровней?
приведет к парадоксу Рассела . Избегание парадокса Рассела явно упоминается в книге (стр. 24). Также более подробно рассматриваются страницы 54, 55, в которых используются «вселенные в стиле Рассела», а не «вселенные в стиле Тарского». Поэтому на очень высоком уровне я считаю само собой разумеющимся, что теория хочет избежать парадокса. К сожалению, у меня нет опыта, чтобы понять это напрямую. В этом вопросе я хочу узнать лишь о том, как получить некоторые примеры вещей в а не в для и может быть чем-то еще, что дает мне ощущение за то, как работают иерархии.
Ответы:
Вопрос, при каких обстоятельствах нам нужно перепрыгнуть со вселенной на одну высшую в иерархии, является хорошим. Наличие иерархии и умение лазать по ней очень важно. Вам нужно перепрыгивать уровни, когда вы хотите рассматривать юниверс как тип или как часть типа. Например, чтобы определить функции (независимого) типа вы должны показать, что находится во вселенной. Но это не может быть или какая-то меньшая вселенная. Так что же нам делать? Чтобы справиться с этой проблемой (без использования непонятного ), нам нужно вскочить во вселенную. Правило, которое позволяет нам сделать этот переход, является -Intro
источник
Я немного исправлю ответ Мартина, чтобы объяснить, откуда берется совокупность (правило, которое гласит, что и влекут за собой ). Предположим, у нас есть и мы хотим присвоить тип . Правило формирования для таково: (Если является сокращением для то вышеприведенное правило может быть получено из правила формирования дляX:Ui i≤j X:Uj A:U42 A→U99 →
Мы могли бы избавиться от накопления, но тогда правила стали бы более сложными. Например, формирование будет читать или В любом случае теория типов имеет много тонких вариаций, и кажется, что заставить их всех играть вместе приятно быть немного искусства.→
источник