Неразрешимость задачи вывода типов в языке с зависимыми типами — различия между версиями
(Определение исчисления) |
(<tex> вместо <math>) |
||
Строка 1: | Строка 1: | ||
− | =< | + | =<tex dpi = "180">\lambda\Pi</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>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>x : T</tex>, где <tex>x</tex> {{---}} переменная, <tex>T</tex> {{---}} терм. |
Правила вывода для нашего исчисления: | Правила вывода для нашего исчисления: | ||
− | < | + | <tex> |
\displaystyle | \displaystyle | ||
\frac{}{\left[ \right] \text{ well-formed}} \text{,} \vspace{3mm} \\ | \frac{}{\left[ \right] \text{ well-formed}} \text{,} \vspace{3mm} \\ | ||
Строка 22: | Строка 22: | ||
\frac{\Gamma \vdash t : \Pi x : T . T' \qquad \Gamma \vdash t' : T}{\Gamma \vdash \left(t t'\right) : T'\left[x \leftarrow t'\right]} \text{,} \vspace{3mm} \\ | \frac{\Gamma \vdash t : \Pi x : T . T' \qquad \Gamma \vdash t' : T}{\Gamma \vdash \left(t t'\right) : T'\left[x \leftarrow t'\right]} \text{,} \vspace{3mm} \\ | ||
\frac{\Gamma \vdash T : s \qquad \Gamma \vdash T' : s \qquad \Gamma \vdash t : T \qquad T =_\beta T'}{\Gamma \vdash t : T'} \text{;} | \frac{\Gamma \vdash T : s \qquad \Gamma \vdash T' : s \qquad \Gamma \vdash t : T \qquad T =_\beta T'}{\Gamma \vdash t : T'} \text{;} | ||
− | </ | + | </tex> |
− | где < | + | где <tex>s ::= \mathrm{Type} \mid \mathrm{Kind}</tex>. |
− | Терм < | + | Терм <tex>t</tex> ''типизируется'' в контексте <tex>\Gamma</tex>, если существует такой терм <tex>T</tex>, что <tex>\Gamma \vdash t : T</tex>. |
Отношение редуцируемости на типизируемых термах сильно нормализуемо и обладает ромбовидным свойством. Каждый типизируемый терм имеет единственную нормальную форму, два терма эквивалентны, если у них одинаковая нормальная форма. | Отношение редуцируемости на типизируемых термах сильно нормализуемо и обладает ромбовидным свойством. Каждый типизируемый терм имеет единственную нормальную форму, два терма эквивалентны, если у них одинаковая нормальная форма. | ||
− | Типизируемый в контексте < | + | Типизируемый в контексте <tex>\Gamma</tex> терм <tex>t</tex> имеет единственный тип с точностью до эквивалентности. |
− | Нормальный терм < | + | Нормальный терм <tex>t</tex>, типизируемый в контекте <tex>\Gamma</tex>, имеет либо вид |
− | < | + | <tex>\displaystyle t = \lambda x_1 : T_1 \ldots \lambda x_n : T_n . \left(x c_1 \ldots c_n\right)</tex>, |
− | где < | + | где <tex>x</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>. |
Версия 18:41, 17 января 2017
-исчисление
Множество термов рекурсивно определяется следующей грамматикой:
.
Термы
и называются сортами, — переменными, — применениями, — абстракциями, — произведениями. Обозначение используется вместо , если не входит свободно в .Пусть есть термы
и и переменная . Записью обозначается терм, полученный заменой на в . Запись означает, что термы и -эквивалентны.Контекст это список пар
, где — переменная, — терм.Правила вывода для нашего исчисления:
где
.Терм
типизируется в контексте , если существует такой терм , что .Отношение редуцируемости на типизируемых термах сильно нормализуемо и обладает ромбовидным свойством. Каждый типизируемый терм имеет единственную нормальную форму, два терма эквивалентны, если у них одинаковая нормальная форма.
Типизируемый в контексте
терм имеет единственный тип с точностью до эквивалентности.Нормальный терм
, типизируемый в контекте , имеет либо вид,
где
это переменная или сорт, либо вид
Согласимся первым символом
называть в первом случае, и во втором. Первыми переменными будем называть переменные .