Неразрешимость задачи вывода типов в языке с зависимыми типами — различия между версиями
(Новый раздел) |
(→Неразрешимость задачи вывода типов в \lambda\Pi-исчислении) |
||
Строка 59: | Строка 59: | ||
=Неразрешимость задачи вывода типов в <tex dpi="180">\lambda\Pi</tex>-исчислении= | =Неразрешимость задачи вывода типов в <tex dpi="180">\lambda\Pi</tex>-исчислении= | ||
+ | |||
+ | Рассмотрим контекст | ||
+ | <tex>\Gamma=\left[T : \mathrm{Type}; a : T \rightarrow T; b : T \rightarrow T; c : T; d : T; P : T \rightarrow \mathrm{Type}; F : \Pi x : T.\left(\left(P x\right) \rightarrow T\right)\right]</tex>. | ||
+ | |||
+ | {{Определение|definition=Пусть <tex>\varphi</tex> {{---}} слово двухсимвольного алфавита <tex>\left\{A, B\right\}</tex>. Определим <tex>\hat{\varphi}</tex> и <tex>\tilde{\varphi}</tex> следующим образом: | ||
+ | * <tex>\hat{\varepsilon} = \lambda y : T . y</tex>; | ||
+ | * <tex>\hat{A\varphi} = \lambda y : T.\left(a \left(\hat{\varphi} y\right)\right)</tex>; | ||
+ | * <tex>\hat{B\varphi} = \lambda y : T.\left(b \left(\hat{\varphi} y\right)\right)</tex>; | ||
+ | * <tex>\tilde{\varphi}=\left|\hat{\varphi}\right|</tex>.}} | ||
+ | |||
+ | {{Утверждение|statement=Рассмотрим проблему соответствий Поста для списков слов над двухсимвольным алфавитом <tex>\left(\varphi_1, \ldots, \varphi_n\right)</tex> и <tex>\left(\psi_1, \ldots, \psi_n\right)</tex>. Непустая последовательность <tex>\left(i_1,\ldots,i_p\right)</tex> является её решением тогда и только тогда, когда <tex>(\hat{\varphi_{i_1}} (\ldots (\hat{\varphi_{i_p}} c)\ldots)) =_\beta (\hat{\psi_{i_1}} (\ldots (\hat{\psi_{i_p}} c)\ldots))</tex>.}} | ||
+ | |||
+ | {{Утверждение|statement=Если <tex>g</tex> это такой терм, что терм <tex>(g a \ldots a)</tex> (<tex>a</tex> повторяется <tex>n</tex> раз) типизируемый, и он является объектом в неком <tex>\Gamma\Delta</tex>, то тогда терм <tex>g</tex> типизируется в контексте <tex>\Gamma\Delta</tex>, и его тип эквивалентен терму <tex>\Pi x_1 : T \rightarrow T \ldots \Pi x_n : T \rightarrow T . (\beta x_1 \ldots x_n)</tex> для какого-то терма <tex>\beta</tex> типа <tex>(T \rightarrow T) \rightarrow \ldots \rightarrow (T \rightarrow T) \rightarrow \mathrm{Type}</tex> в контексте <tex>\Gamma\Delta</tex>. | ||
+ | |proof=Индукция по <tex>n</tex>.}} |
Версия 20:15, 17 января 2017
-исчисление
Определение: |
Множество термов рекурсивно определяется следующей грамматикой:
Термы . и называются сортами, — переменными, — применениями, — абстракциями, — произведениями. Обозначение используется вместо , если не входит свободно в . |
Пусть есть термы и и переменная . Записью обозначается терм, полученный заменой на в . Запись означает, что термы и -эквивалентны.
Определение: |
Контекст это список пар | , где — переменная, — терм.
Определение: |
Правила вывода для нашего исчисления:
где Терм , а — множество корректных грамматик. типизируется в контексте , если существует такой терм , что . |
Отношение редуцируемости на типизируемых термах сильно нормализуемо и обладает ромбовидным свойством. Каждый типизируемый терм имеет единственную нормальную форму, два терма эквивалентны, если у них одинаковая нормальная форма.
Типизируемый в контексте
терм имеет единственный тип с точностью до эквивалентности.Определение: |
Нормальный терм , где это переменная или сорт, либо видСогласимся первым символом называть в первом случае, и во втором. Первыми переменными будем называть переменные . | , типизируемый в контекте , имеет либо вид
Задача вывода типов в -исчислении
Определение: |
Терм | типа в контексте называется объектом в , если
Утверждение: |
Если терм является объёктом в контексте , то он является либо переменной, либо применением, либо абстракцией. Если он является применением , тогда оба терма и являются объектами в , если он является абстракцией , то тогда терм является объектом в контексте . |
Определение: |
Множество чистых термов определяется грамматикой | .
Определение: |
Пусть
| — объект в контексте . Содержимое ( ) — это рекурсивно определённый чистый терм:
Определение: |
Чистый терм | называется типизируемым в контексте , если существует терм , типизируемый в неком , являющимся расширением , что является объектом в и .
Типизация чистого терма в контексте это присвоение типов связанным переменным и некоторым свободным переменным, типов которых нет в . Если же контекст пустой, то типизация терма в нём будет являться присваиванием типов и связанным и свободным переменным.
Утверждение: |
Задача вывода типов в пустом контексте разрешима в -исчислении. |
Типизируемые в пустом контексте чистые термы | исчисления совпадают с типизируемыми выражениями просто типизированного -исчисления, а задача вывода типов в просто типизированном -исчислении разрешима.
Неразрешимость задачи вывода типов в -исчислении
Рассмотрим контекст
.
Определение: |
Пусть
| — слово двухсимвольного алфавита . Определим и следующим образом:
Утверждение: |
Рассмотрим проблему соответствий Поста для списков слов над двухсимвольным алфавитом и . Непустая последовательность является её решением тогда и только тогда, когда . |
Утверждение: |
Если это такой терм, что терм ( повторяется раз) типизируемый, и он является объектом в неком , то тогда терм типизируется в контексте , и его тип эквивалентен терму для какого-то терма типа в контексте . |
Индукция по | .