Неразрешимость задачи вывода типов в языке с зависимыми типами — различия между версиями
м (→Задача вывода типов в \lambda\Pi-исчислении) |
(→\lambda\Pi-исчисление: English terms) |
||
| Строка 1: | Строка 1: | ||
=<tex dpi = "180">\lambda\Pi</tex>-исчисление= | =<tex dpi = "180">\lambda\Pi</tex>-исчисление= | ||
| − | {{Определение|definition=Множество '''термов''' рекурсивно определяется следующей грамматикой: | + | {{Определение|definition=Множество '''термов''' (англ. ''term'') рекурсивно определяется следующей грамматикой: |
<tex>\displaystyle T ::= \mathrm{Type} \mid \mathrm{Kind} \mid x \mid \left(T\ T\right) \mid \lambda x : T . T \mid \Pi x : T . T</tex>. | <tex>\displaystyle T ::= \mathrm{Type} \mid \mathrm{Kind} \mid x \mid \left(T\ T\right) \mid \lambda x : T . T \mid \Pi x : T . T</tex>. | ||
| − | Термы <tex>\mathrm{Type}</tex> и <tex>\mathrm{Kind}</tex> называются '''сортами''', <tex>x</tex> {{---}} '''переменными''', <tex>(t\ t')</tex> {{---}} '''применениями''', <tex>\lambda x : t . t'</tex> {{---}} '''абстракциями''', <tex>\Pi x : t . t'</tex> {{---}} '''произведениями'''. Обозначение <tex>t \rightarrow t'</tex> используется вместо <tex>\Pi x : t . t'</tex>, если <tex>x</tex> не входит свободно в <tex>t'</tex>.}} | + | * Термы <tex>\mathrm{Type}</tex> и <tex>\mathrm{Kind}</tex> называются '''сортами''' (англ. ''sorts''), |
| + | * <tex>x</tex> {{---}} '''переменными''' (англ. ''variables''), | ||
| + | * <tex>(t\ t')</tex> {{---}} '''применениями''' (англ. ''applications''), | ||
| + | * <tex>\lambda x : t . t'</tex> {{---}} '''абстракциями''' (англ. ''abstractions''), | ||
| + | * <tex>\Pi x : t . t'</tex> {{---}} '''произведениями''' (англ. ''products''). | ||
| + | Обозначение <tex>t \rightarrow t'</tex> используется вместо <tex>\Pi x : t . t'</tex>, если <tex>x</tex> не входит свободно в <tex>t'</tex>.}} | ||
Пусть есть термы <tex>t</tex> и <tex>t'</tex> и переменная <tex>x</tex>. Записью <tex>t\left[x \leftarrow t'\right]</tex> обозначается терм, полученный заменой <tex>t'</tex> на <tex>t</tex> в <tex>x</tex>. Запись <tex>t =_\beta t'</tex> означает, что термы <tex>t</tex> и <tex>t'</tex> <tex>\beta</tex>-эквивалентны. | Пусть есть термы <tex>t</tex> и <tex>t'</tex> и переменная <tex>x</tex>. Записью <tex>t\left[x \leftarrow t'\right]</tex> обозначается терм, полученный заменой <tex>t'</tex> на <tex>t</tex> в <tex>x</tex>. Запись <tex>t =_\beta t'</tex> означает, что термы <tex>t</tex> и <tex>t'</tex> <tex>\beta</tex>-эквивалентны. | ||
| − | {{Определение|definition='''Контекст''' это список пар <tex>x : T</tex>, где <tex>x</tex> {{---}} переменная, <tex>T</tex> {{---}} терм.}} | + | {{Определение|definition='''Контекст''' (англ. ''context'') это список пар <tex>x : T</tex>, где <tex>x</tex> {{---}} переменная, <tex>T</tex> {{---}} терм.}} |
{{Определение|definition=Правила вывода для нашего исчисления: | {{Определение|definition=Правила вывода для нашего исчисления: | ||
| Строка 24: | Строка 29: | ||
где <tex>s ::= \mathrm{Type} \mid \mathrm{Kind}</tex>, а <tex>\mathrm{WF}</tex> {{---}} множество корректных грамматик. | где <tex>s ::= \mathrm{Type} \mid \mathrm{Kind}</tex>, а <tex>\mathrm{WF}</tex> {{---}} множество корректных грамматик. | ||
| − | Терм <tex>t</tex> '''типизируется''' в контексте <tex>\Gamma</tex>, если существует такой терм <tex>T</tex>, что <tex>\Gamma \vdash t : T</tex>.}} | + | Терм <tex>t</tex> '''типизируется''' (англ. ''well-typed'') в контексте <tex>\Gamma</tex>, если существует такой терм <tex>T</tex>, что <tex>\Gamma \vdash t : T</tex>.}} |
Отношение редуцируемости на типизируемых термах сильно нормализуемо и обладает ромбовидным свойством. Каждый типизируемый терм имеет единственную нормальную форму, два терма эквивалентны, если у них одинаковая нормальная форма. | Отношение редуцируемости на типизируемых термах сильно нормализуемо и обладает ромбовидным свойством. Каждый типизируемый терм имеет единственную нормальную форму, два терма эквивалентны, если у них одинаковая нормальная форма. | ||
| Строка 37: | Строка 42: | ||
<tex>\displaystyle t = \lambda x_1 : T_1 \ldots \lambda x_n : T_n . \Pi x : P . Q\text{.}</tex> | <tex>\displaystyle t = \lambda x_1 : T_1 \ldots \lambda x_n : T_n . \Pi x : P . Q\text{.}</tex> | ||
| − | Согласимся '''первым символом''' <tex>t</tex> называть <tex>x</tex> в первом случае, и <tex>\Pi</tex> во втором. '''Первыми переменными''' <tex>t</tex> будем называть переменные <tex>x_1, \ldots, x_n</tex>.}} | + | Согласимся '''первым символом''' (англ. ''head symbol'') <tex>t</tex> называть <tex>x</tex> в первом случае, и <tex>\Pi</tex> во втором. '''Первыми переменными''' (англ. ''top variables'') <tex>t</tex> будем называть переменные <tex>x_1, \ldots, x_n</tex>.}} |
=Задача вывода типов в <tex dpi = "180">\lambda\Pi</tex>-исчислении= | =Задача вывода типов в <tex dpi = "180">\lambda\Pi</tex>-исчислении= | ||
Версия 21:57, 17 января 2017
Содержание
-исчисление
| Определение: |
| Множество термов (англ. term) рекурсивно определяется следующей грамматикой:
.
|
Пусть есть термы и и переменная . Записью обозначается терм, полученный заменой на в . Запись означает, что термы и -эквивалентны.
| Определение: |
| Контекст (англ. context) это список пар , где — переменная, — терм. |
| Определение: |
| Правила вывода для нашего исчисления:
где , а — множество корректных грамматик. Терм типизируется (англ. well-typed) в контексте , если существует такой терм , что . |
Отношение редуцируемости на типизируемых термах сильно нормализуемо и обладает ромбовидным свойством. Каждый типизируемый терм имеет единственную нормальную форму, два терма эквивалентны, если у них одинаковая нормальная форма.
Типизируемый в контексте терм имеет единственный тип с точностью до эквивалентности.
| Определение: |
| Нормальный терм , типизируемый в контекте , имеет либо вид
, где это переменная или сорт, либо вид Согласимся первым символом (англ. head symbol) называть в первом случае, и во втором. Первыми переменными (англ. top variables) будем называть переменные . |
Задача вывода типов в -исчислении
| Определение: |
| Терм типа в контексте называется объектом в , если . |
| Утверждение: |
Если терм является объёктом в контексте , то он является либо переменной, либо применением, либо абстракцией. Если он является применением , тогда оба терма и являются объектами в , если он является абстракцией , то тогда терм является объектом в контексте . |
| Определение: |
| Множество чистых термов определяется грамматикой . |
| Определение: |
Пусть — объект в контексте . Содержимое () — это рекурсивно определённый чистый терм:
|
| Определение: |
| Чистый терм называется типизируемым в контексте , если существует терм , типизируемый в неком , являющимся расширением , что является объектом в и . |
Типизация чистого терма в контексте это присвоение типов связанным переменным и некоторым свободным переменным, типов которых нет в . Если же контекст пустой, то типизация терма в нём будет являться присваиванием типов и связанным и свободным переменным.
| Утверждение: |
Задача вывода типов в пустом контексте разрешима в -исчислении. |
| Типизируемые в пустом контексте чистые термы исчисления совпадают с типизируемыми выражениями просто типизированного -исчисления, а задача вывода типов в просто типизированном -исчислении разрешима. |
Неразрешимость задачи вывода типов в -исчислении
Рассмотрим контекст .
| Определение: |
Пусть — слово двухсимвольного алфавита . Определим и следующим образом:
|
| Утверждение: |
Рассмотрим проблему соответствий Поста для списков слов над двухсимвольным алфавитом и . Непустая последовательность является её решением тогда и только тогда, когда . |
| Утверждение: |
Если это такой терм, что терм ( повторяется раз) типизируемый, и он является объектом в неком , то тогда терм типизируется в контексте , и его тип эквивалентен терму для какого-то терма типа в контексте . |
| Индукция по . |
| Утверждение: |
Пусть — такие нормальные термы, что — типизируемый терм, и его нормальная форма это . Тогда первый символ это либо первый символ , либо первая переменная . |
| Пусть — первый символ . Если не является первой переменной , то первый символ нормальной формы это тоже , значит, это первый символ . |
| Утверждение: |
Пусть — такой нормальный терм типа в контексте , что нормальная форма равна . Тогда терм является термом вида
для некой последовательности . |
| Индукция по числу переменных в . |
| Теорема: |
Задача проверки типизируемости чистого терма в заданном контексте неразрешима. |
| Доказательство: |
|
Рассмотрим проблему соответствий Поста для списков слов над двухсимвольным алфавитом и . Построим такой чистый терм , что типизируем в тогда и только тогда, когда проблема соответствий поста имеет решение.
Предположим, что этот терм типизируем, и обозначим тип как . Терм типизируется и является объектом в , значит, , где это терм типа в . Тогда все переменные , связанные в термах , , и , имеют тип . Терм имеет тип , тогда из типизируемости терма мы получаем, что тип переменной имеет вид , и . Точно так же, из типизируемости терма получаем, что , значит, . Из типизируемости терма получаем . Наконец, из типизируемости терма получаем . Поскольку терм имеет тип , первый символ нормальной формы терма не может быть первой переменной , значит, это переменная , и мы получаем, что , где — некий терм типа . Получаем, что
Вторая эквивалентность показывает, что нормальная форма имеет вид
для некоторой последовательности . Третья эквивалентность показывает, что , и первая — что , то есть последовательность является решением проблемы Поста. И наоборот, если предположить, что проблема Поста имеет решение , то можно задать типы переменным , и : и тип всем остальным переменным терма , и получить такой типизируемый в терм , который является объектом и . |
См. также
Источники информации
- Gilles Dowek, The undecidability of typability in the Lambda-Pi-calculus