Неразрешимость задачи вывода типов в языке с зависимыми типами — различия между версиями
(Новый раздел) |
(→Типизируемость в \lambda\Pi-исчислении) |
||
Строка 40: | Строка 40: | ||
=Типизируемость в <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>}} | ||
+ | |||
+ | {{Утверждение|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=Пусть <tex>t</tex> {{---}} объект в контексте <tex>\Gamma</tex>. '''Содержимое''' <tex>t</tex> (<tex>\left|t\right|</tex>) {{---}} это рекурсивно определённый чистый терм: | ||
+ | |||
+ | * <tex>\left|x\right| = x</tex>; | ||
+ | * <tex>\left|\left(tt'\right)\right| = \left(\left|t\right|\left|t'\right|\right) </tex>; | ||
+ | * <tex>\left|\lambda x : U . t\right| = \lambda x . \left|t\right|</tex>.}} | ||
+ | |||
+ | {{Определение|definition=Чистый терм <tex>t</tex> называется '''типизируемым''' в контексте <tex>\Gamma</tex>, если существует терм <tex>t'</tex>, типизируемый в неком <tex>\Gamma\Delta</tex>, являющимся расширением <tex>\Gamma</tex>, что <tex>t'</tex> является объектом в <tex>\Gamma\Delta</tex> и <tex>t=\left|t'\right|</tex>.}} | ||
+ | |||
+ | Типизация чистого терма в контексте <tex>\Gamma</tex> это присвоение типов связанным переменным и некоторым свободным переменным, типов которых нет в <tex>\Gamma</tex>. Если же контекст <tex>\Gamma</tex> пустой, то типизация терма в нём будет являться присваиванием типов и связанным и свободным переменным. | ||
+ | |||
+ | {{Утверждение|statement=Задача вывода типов в пустом контексте разрешима в <tex>\lambda\Pi</tex>-исчислении.|proof=Типизируемые в пустом контексте чистые термы <tex>\lambda\Pi</tex> исчисления совпадают с типизируемыми выражениями просто типизированного <tex>\lambda</tex>-исчисления, а задача вывода типов в просто типизированном <tex>\lambda</tex>-исчислении разрешима.}} |
Версия 19:30, 17 января 2017
-исчисление
Определение: |
Множество термов рекурсивно определяется следующей грамматикой:
Термы . и называются сортами, — переменными, — применениями, — абстракциями, — произведениями. Обозначение используется вместо , если не входит свободно в . |
Пусть есть термы и и переменная . Записью обозначается терм, полученный заменой на в . Запись означает, что термы и -эквивалентны.
Определение: |
Контекст это список пар | , где — переменная, — терм.
Определение: |
Правила вывода для нашего исчисления:
где Терм . типизируется в контексте , если существует такой терм , что . |
Отношение редуцируемости на типизируемых термах сильно нормализуемо и обладает ромбовидным свойством. Каждый типизируемый терм имеет единственную нормальную форму, два терма эквивалентны, если у них одинаковая нормальная форма.
Типизируемый в контексте
терм имеет единственный тип с точностью до эквивалентности.Определение: |
Нормальный терм , где это переменная или сорт, либо видСогласимся первым символом называть в первом случае, и во втором. Первыми переменными будем называть переменные . | , типизируемый в контекте , имеет либо вид
Типизируемость в -исчислении
Определение: |
Терм | типа в контексте называется объектом в , если
Утверждение: |
Если терм является объёктом в контексте , то он является либо переменной, либо применением, либо абстракцией. Если он является применением , тогда оба терма и являются объектами в , если он является абстракцией , то тогда терм является объектом в контексте . |
Определение: |
Множество чистых термов определяется грамматикой | .
Определение: |
Пусть
| — объект в контексте . Содержимое ( ) — это рекурсивно определённый чистый терм:
Определение: |
Чистый терм | называется типизируемым в контексте , если существует терм , типизируемый в неком , являющимся расширением , что является объектом в и .
Типизация чистого терма в контексте это присвоение типов связанным переменным и некоторым свободным переменным, типов которых нет в . Если же контекст пустой, то типизация терма в нём будет являться присваиванием типов и связанным и свободным переменным.
Утверждение: |
Задача вывода типов в пустом контексте разрешима в -исчислении. |
Типизируемые в пустом контексте чистые термы | исчисления совпадают с типизируемыми выражениями просто типизированного -исчисления, а задача вывода типов в просто типизированном -исчислении разрешима.