Неразрешимость задачи вывода типов в языке с зависимыми типами — различия между версиями
(→\lambda\Pi-исчисление: English terms) |
(→Задача вывода типов в \lambda\Pi-исчислении: More english) |
||
Строка 45: | Строка 45: | ||
=Задача вывода типов в <tex dpi = "180">\lambda\Pi</tex>-исчислении= | =Задача вывода типов в <tex dpi = "180">\lambda\Pi</tex>-исчислении= | ||
− | {{Определение|definition=Терм <tex>t</tex> типа <tex>T</tex> в контексте <tex>G</tex> называется '''объектом''' в <tex>\Gamma</tex>, если <tex>\Gamma \vdash T : \mathrm{Type}</tex>.}} | + | {{Определение|definition=Терм <tex>t</tex> типа <tex>T</tex> в контексте <tex>G</tex> называется '''объектом''' (англ. ''object'') в <tex>\Gamma</tex>, если <tex>\Gamma \vdash T : \mathrm{Type}</tex>.}} |
{{Утверждение|statement=Если терм <tex>t</tex> является объёктом в контексте <tex>\Gamma</tex>, то он является либо переменной, либо применением, либо абстракцией. Если он является применением <tex>t=(u\ v)</tex>, тогда оба терма <tex>u</tex> и <tex>v</tex> являются объектами в <tex>\Gamma</tex>, если он является абстракцией <tex>t=\lambda x : U . u</tex>, то тогда терм <tex>u</tex> является объектом в контексте <tex>\Gamma\left[x : U\right]</tex>.}} | {{Утверждение|statement=Если терм <tex>t</tex> является объёктом в контексте <tex>\Gamma</tex>, то он является либо переменной, либо применением, либо абстракцией. Если он является применением <tex>t=(u\ v)</tex>, тогда оба терма <tex>u</tex> и <tex>v</tex> являются объектами в <tex>\Gamma</tex>, если он является абстракцией <tex>t=\lambda x : U . u</tex>, то тогда терм <tex>u</tex> является объектом в контексте <tex>\Gamma\left[x : U\right]</tex>.}} | ||
− | {{Определение|definition=Множество '''чистых термов''' определяется грамматикой <tex>T ::= x \mid \left(T\ T\right) \mid \lambda x . T</tex>.}} | + | {{Определение|definition=Множество '''чистых термов''' (англ. ''pure terms'') определяется грамматикой <tex>T ::= x \mid \left(T\ T\right) \mid \lambda x . T</tex>.}} |
{{Определение|definition=Пусть <tex>t</tex> {{---}} объект в контексте <tex>\Gamma</tex>. '''Содержимое''' <tex>t</tex> (<tex>\left|t\right|</tex>) {{---}} это рекурсивно определённый чистый терм: | {{Определение|definition=Пусть <tex>t</tex> {{---}} объект в контексте <tex>\Gamma</tex>. '''Содержимое''' <tex>t</tex> (<tex>\left|t\right|</tex>) {{---}} это рекурсивно определённый чистый терм: |
Версия 21:58, 17 января 2017
Содержание
-исчисление
Определение: |
Множество термов (англ. term) рекурсивно определяется следующей грамматикой:
.
|
Пусть есть термы и и переменная . Записью обозначается терм, полученный заменой на в . Запись означает, что термы и -эквивалентны.
Определение: |
Контекст (англ. context) это список пар | , где — переменная, — терм.
Определение: |
Правила вывода для нашего исчисления:
где Терм , а — множество корректных грамматик. типизируется (англ. well-typed) в контексте , если существует такой терм , что . |
Отношение редуцируемости на типизируемых термах сильно нормализуемо и обладает ромбовидным свойством. Каждый типизируемый терм имеет единственную нормальную форму, два терма эквивалентны, если у них одинаковая нормальная форма.
Типизируемый в контексте
терм имеет единственный тип с точностью до эквивалентности.Определение: |
Нормальный терм , где это переменная или сорт, либо видСогласимся первым символом (англ. head symbol) называть в первом случае, и во втором. Первыми переменными (англ. top variables) будем называть переменные . | , типизируемый в контекте , имеет либо вид
Задача вывода типов в -исчислении
Определение: |
Терм | типа в контексте называется объектом (англ. object) в , если .
Утверждение: |
Если терм является объёктом в контексте , то он является либо переменной, либо применением, либо абстракцией. Если он является применением , тогда оба терма и являются объектами в , если он является абстракцией , то тогда терм является объектом в контексте . |
Определение: |
Множество чистых термов (англ. pure terms) определяется грамматикой | .
Определение: |
Пусть
| — объект в контексте . Содержимое ( ) — это рекурсивно определённый чистый терм:
Определение: |
Чистый терм | называется типизируемым в контексте , если существует терм , типизируемый в неком , являющимся расширением , что является объектом в и .
Типизация чистого терма в контексте это присвоение типов связанным переменным и некоторым свободным переменным, типов которых нет в . Если же контекст пустой, то типизация терма в нём будет являться присваиванием типов и связанным и свободным переменным.
Утверждение: |
Задача вывода типов в пустом контексте разрешима в -исчислении. |
Типизируемые в пустом контексте чистые термы | исчисления совпадают с типизируемыми выражениями просто типизированного -исчисления, а задача вывода типов в просто типизированном -исчислении разрешима.
Неразрешимость задачи вывода типов в -исчислении
Рассмотрим контекст
.
Определение: |
Пусть
| — слово двухсимвольного алфавита . Определим и следующим образом:
Утверждение: |
Рассмотрим проблему соответствий Поста для списков слов над двухсимвольным алфавитом и . Непустая последовательность является её решением тогда и только тогда, когда . |
Утверждение: |
Если это такой терм, что терм ( повторяется раз) типизируемый, и он является объектом в неком , то тогда терм типизируется в контексте , и его тип эквивалентен терму для какого-то терма типа в контексте . |
Индукция по | .
Утверждение: |
Пусть — такие нормальные термы, что — типизируемый терм, и его нормальная форма это . Тогда первый символ это либо первый символ , либо первая переменная . |
Пусть | — первый символ . Если не является первой переменной , то первый символ нормальной формы это тоже , значит, это первый символ .
Утверждение: |
Пусть — такой нормальный терм типа в контексте , что нормальная форма равна . Тогда терм является термом вида
для некой последовательности . |
Индукция по числу переменных в | .
Теорема: |
Задача проверки типизируемости чистого терма в заданном контексте неразрешима. |
Доказательство: |
Рассмотрим проблему соответствий Поста для списков слов над двухсимвольным алфавитом и . Построим такой чистый терм , что типизируем в тогда и только тогда, когда проблема соответствий поста имеет решение.
Предположим, что этот терм типизируем, и обозначим тип как . Терм типизируется и является объектом в , значит,, где это терм типа в .Тогда все переменные , связанные в термах , , и , имеют тип . Терм имеет тип , тогда из типизируемости терма мы получаем, что тип переменной имеет вид , и. Точно так же, из типизируемости терма получаем, что, значит, . Из типизируемости терма получаем. Наконец, из типизируемости терма получаем. Поскольку терм имеет тип , первый символ нормальной формы терма не может быть первой переменной , значит, это переменная , и мы получаем, что, где — некий терм типа . Получаем, что
Вторая эквивалентность показывает, что нормальная форма имеет вид
для некоторой последовательности . Третья эквивалентность показывает, что , и первая — что, то есть последовательность является решением проблемы Поста.И наоборот, если предположить, что проблема Поста имеет решение , то можно задать типы переменным , и :и тип всем остальным переменным терма , и получить такой типизируемый в терм , который является объектом и . |
См. также
Источники информации
- Gilles Dowek, The undecidability of typability in the Lambda-Pi-calculus