Разрешимость вывода типов и проверки типов в MLTT

9
  1. В « Интуиционистской теории типов: предиктивная часть» Мартина-Лёфа доказано, что проверка типовa:Aразрешимо при условииaбудучи в первую очередь типизируемым , доказывая теорему нормализации для замкнутых типизируемых членов. С другой стороны, я видел, что во многих местах (Википедия, Нордстрем и т. Д.) Написано, что проверка типов в (интенсиональном) MLTT разрешима; они неявно ограничивают типизируемые термины?

  2. Известно ли что-нибудь о разрешимости вывода типов или проверки типов в интенсиональном MLTT, если мы не ограничиваемся типизируемыми терминами? Например, возможно, существует процесс принятия решения, который распознает нетипизируемые термины, скажем, путем нормализации к форме, которая не соответствует ни одному из конструкторов, или показывая, что нет непериодической последовательности сокращений для любого нетипизируемого термина.

    Я не смог найти много в литературе.

Джош Чен
источник

Ответы:

9

Конечно, проблема решения

Учитывая (предварительно) срок a Есть ли тип A такой, что a:A выводится в MLTT?

Иногда написано a : ?(и называется проблемой вывода типа ) разрешима, то есть не имеет значения,aхорошо напечатан или нет, чтобы получить ответ. Действительно, все средства проверки на основе MLTT реализуют некоторую версию этого алгоритма решения!

Очевидно, проблема в непустом контексте (Γa : ?) также разрешима, обычно вам нужно решить последнее, чтобы решить первое.

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

В результате нормализация хорошо типизированных членов является необходимым условием для решения проблемы вывода типов.

Вы можете проверить Нордстрем, Петерссон и Смит для вступления.


Я не знаю какого-либо общего описания алгоритма вывода типов для нормализации теорий типов, хотя Поллак дает довольно хороший обзор (хотя уровень техники улучшился) в проверке типов в системах чистого типа .

Коди
источник
Как насчет подтипов (термины, обозначающие тип)? Возможно, стоит уточнить и их статус.
Андрей Бауэр
Спасибо, Коди, ты имеешь в виду алгоритмы проверки типов, реализованные такими ассистентами, как ALF и Coq? Насколько я понимаю, это алгоритмы для конкретных вариантов MLTT, на которых они основаны (CIC для Coq, что-то еще для ALF), но мне неясно, как их можно использовать для проверки типа конкретного MLTT '73. В частности, если иерархия вселенной или другие различия в деталях могут что-то изменить ...
Джош Чен
...Or are the algorithms general enough to cover these differences? I am having trouble finding results in such generality; all I seem to be turning up in my literature search are very specific results, often particularly tailored to the underlying theory of some proof assistant.
Josh Chen
1
@JoshChen алгоритмы по своей сути очень общие, так как они включают в себя поиск по типу, чередующийся с шагами нормализации на хорошо типизированных терминах, как объяснил Андрей. К сожалению, я не знаю общего описания алгоритма, хотя я добавлю частичную ссылку на мой ответ.
Коди
1
@JoshChen Они не уточняют, но они могут ссылаться на логические типы для терминов в стиле «карри», для которых вывод неразрешим. Я вхожу
Cody
8

Я хотел бы дополнить ответ Коди общим наблюдением, передающим мое понимание того, почему работают алгоритмы проверки типов.

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

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

Андрей Бауэр
источник