Это называется параметричность (parametricity). Ссылки:
J. C. Reynolds "Types, Abstractions and Parametric Polymorphism",
P. Wadler "Theorems for free!".
Первое утверждение можно доказать неким косвенным образом, сославшись на теорему

Аналогично этой теореме, есть свободная теорема для

:

Для того, чтобы вывести отсюда существование ровно двух функций, возьмем сначала

, получим

, а потом

. Есть два варианта функции

и с помощью произвольной

они распространяются на два варианта полиморфной функции

.
Кроме этого, пусть система типов содержит в себе тип списка и соответствующие иму операции композиции/декомпозиции и свёртки. Можно ли как-то доказать, что любая функция с типом
![$\forall \alpha.[\alpha]\to\alpha$ $\forall \alpha.[\alpha]\to\alpha$](https://dxdy-04.korotkov.co.uk/f/b/b/7/bb788ce0ca9bec934f2811f40c7cfca282.png)
представима в виде

, где

возвращает

-й элемент списка

, для некоторой функции

?
Тут нужен тип непустого списка, иначе неоткуда брать значение на пустом аргументе (обратите внимание на
![$[\mathbf{0}] \to \mathbf{0}$ $[\mathbf{0}] \to \mathbf{0}$](https://dxdy-02.korotkov.co.uk/f/9/9/7/99786825fe1c40893679a7b481a086d982.png)
). Если рассматривать непустые списки, то можно свести случай к предыдущему: по функции

можно определить функции
![$f_{n, i} x y = f [x, \dots, x, y, x, \dots, x]$ $f_{n, i} x y = f [x, \dots, x, y, x, \dots, x]$](https://dxdy-03.korotkov.co.uk/f/a/3/e/a3e185929973886c9de72d8e5c28aaba82.png)
(всего

элементов в списке, на

-м месте

). Рассматривая их на типе

, можно доказать, что ровно для одного

это будет

.