2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Теория типов: возможные экземпляры в системе с полиморфизмом
Сообщение09.02.2016, 16:22 
Аватара пользователя


29/05/11
227
Красноармейск, Донецкая обл.
Добрый день

Рассматривается $\lambda$-исчисление с явным полиморфизмом (Рейнольдс).

Есть известное утверждение о том, что только $\mathrm{id} : \forall \alpha.\alpha\to\alpha$ обладает указанным типом, а для типа $\forall \alpha.\alpha\to(\alpha\to\alpha)$ существуют только $\mathrm{fst}=\Lambda\alpha\lambda x:\alpha.\lambda y:\alpha.x$ и \mathrm{snd}=$\Lambda\alpha\lambda x:\alpha.\lambda y:\alpha.y$.

Первое утверждение можно доказать неким косвенным образом, сославшись на теорему $$(\forall f:\forall \alpha.\alpha\to\alpha) (\forall \alpha)(\forall \beta) (\forall g:\alpha\to\beta) (f_\beta\circ g = g \circ f_\alpha),$$ положив $g=\lambda xy.x$ и применив принцип экстенсиональности.

Каким образом можно доказать второе утверждение?

Кроме этого, пусть система типов содержит в себе тип списка и соответствующие иму операции композиции/декомпозиции и свёртки. Можно ли как-то доказать, что любая функция с типом $\forall \alpha.[\alpha]\to\alpha$ представима в виде $\lambda l.El(n(\mathrm{length}\, l))$, где $Elm$ возвращает $m$-й элемент списка $l$, для некоторой функции $n:\mathbb{N}\to\mathbb{N}$?

Кто подобные вопросы рассматривал?

 Профиль  
                  
 
 Re: Теория типов: возможные экземпляры в системе с полиморфизмом
Сообщение09.02.2016, 17:46 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Это называется параметричность (parametricity). Ссылки: J. C. Reynolds "Types, Abstractions and Parametric Polymorphism", P. Wadler "Theorems for free!".

Mysterious Light в сообщении #1098138 писал(а):
Первое утверждение можно доказать неким косвенным образом, сославшись на теорему $$(\forall f:\forall \alpha.\alpha\to\alpha) (\forall \alpha)(\forall \beta) (\forall g:\alpha\to\beta) (f_\beta\circ g = g \circ f_\alpha),$$
Аналогично этой теореме, есть свободная теорема для $\forall \alpha. \alpha \to \alpha \to \alpha$: $$(\forall f:\forall \alpha.\alpha\to\alpha\to\alpha) (\forall \alpha) (\forall \beta) (\forall g\colon\alpha\to\beta) (\forall x, y \colon\alpha) (f_{\beta} (g x) (g y) = g (f_{\alpha} x y)).$$ Для того, чтобы вывести отсюда существование ровно двух функций, возьмем сначала $g = \operatorname{const} u$, получим $f u u = u$, а потом $\alpha = \mathbf{2}$. Есть два варианта функции $f_{\mathbf{2}}$ и с помощью произвольной $g$ они распространяются на два варианта полиморфной функции $f$.

Mysterious Light в сообщении #1098138 писал(а):
Кроме этого, пусть система типов содержит в себе тип списка и соответствующие иму операции композиции/декомпозиции и свёртки. Можно ли как-то доказать, что любая функция с типом $\forall \alpha.[\alpha]\to\alpha$ представима в виде $\lambda l.El(n(\mathrm{length}\, l))$, где $Elm$ возвращает $m$-й элемент списка $l$, для некоторой функции $n:\mathbb{N}\to\mathbb{N}$?
Тут нужен тип непустого списка, иначе неоткуда брать значение на пустом аргументе (обратите внимание на $[\mathbf{0}] \to \mathbf{0}$). Если рассматривать непустые списки, то можно свести случай к предыдущему: по функции $f \colon \forall \alpha. \alpha^{+} \to \alpha$ можно определить функции $f_{n, i} x y = f [x, \dots, x, y, x, \dots, x]$ (всего $n$ элементов в списке, на $i$-м месте $y$). Рассматривая их на типе $\mathbf{2}$, можно доказать, что ровно для одного $i$ это будет $\operatorname{snd}$.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group