Я много читал о системах типов и тому подобное, и я примерно понимаю, почему они были введены (чтобы разрешить парадокс Рассела). Я также примерно понимаю их практическую значимость в языках программирования и системах доказательства. Однако я не совсем уверен, что мое интуитивное представление о типе является правильным.
У меня вопрос, действительно ли утверждение, что типы - это предложения?
Другими словами, утверждение «n является натуральным числом» соответствует утверждению «n имеет тип« натуральное число »», означающее, что все алгебраические правила, которые включают натуральные числа, выполняются для n. (То есть, с другой стороны, алгебраические правила - это утверждения. Те утверждения, которые верны для натуральных чисел, верны и для n.)
Значит ли это, что математический объект может иметь более одного типа?
Кроме того, я знаю, что наборы не эквивалентны типам, потому что вы не можете иметь набор всех наборов. Могу ли я утверждать, что если набор - это математический объект, похожий на число или функцию , тип - это разновидность метаматематического объекта, а по той же логике тип - это метаматематический объект? (в том смысле, что каждая мета указывает на более высокий уровень абстракции ...)
Есть ли какая-то связь с теорией категорий?
источник
Ответы:
Ключевая роль типов заключается в разделении объектов, представляющих интерес, на различные вселенные, а не на рассмотрение всего, что существует в одной вселенной. Изначально типы создавались так, чтобы избежать парадоксов, но, как вы знаете, они имеют множество других применений. Типы предоставляют способ классификации или стратификации объектов (см. Запись в блоге ).
Некоторые работают с лозунгом, согласно которому предложения являются типами , поэтому ваша интуиция, безусловно, служит вам хорошо, хотя есть работа, такая как « Предложения как [Типы » »Стива Аводи и Андрея Бауэра, которая утверждает иначе, а именно, что у каждого типа есть ассоциированное предложение. Различие проводится потому, что типы имеют вычислительное содержание, а предложения - нет.
Объект может иметь более одного типа из-за подтипирования и приведения типов .
Типы обычно организованы в иерархию, где виды играют роль типа типов, но я бы не сказал, что типы являются метаматематическими. Все происходит на одном уровне - это особенно актуально при работе с зависимыми типами .
Существует очень сильная связь между типами и теорией категорий. Действительно, Боб Харпер (цитирует Ламбека) говорит, что логика, языки (где находятся типы) и категории образуют святую троицу . Цитирование:
Чтобы увидеть связь между теорией категорий, вам следует обратиться к переписке Карри-Ховарда, чтобы увидеть связь между языками логики и языков программирования (типы являются предложениями) и декартовыми закрытыми категориями .
источник