Это называется параметричность (parametricity). Ссылки:
J. C. Reynolds "Types, Abstractions and Parametric Polymorphism",
P. Wadler "Theorems for free!".
Первое утверждение можно доказать неким косвенным образом, сославшись на теорему
Аналогично этой теореме, есть свободная теорема для
:
Для того, чтобы вывести отсюда существование ровно двух функций, возьмем сначала
, получим
, а потом
. Есть два варианта функции
и с помощью произвольной
они распространяются на два варианта полиморфной функции
.
Кроме этого, пусть система типов содержит в себе тип списка и соответствующие иму операции композиции/декомпозиции и свёртки. Можно ли как-то доказать, что любая функция с типом
представима в виде
, где
возвращает
-й элемент списка
, для некоторой функции
?
Тут нужен тип непустого списка, иначе неоткуда брать значение на пустом аргументе (обратите внимание на
). Если рассматривать непустые списки, то можно свести случай к предыдущему: по функции
можно определить функции
(всего
элементов в списке, на
-м месте
). Рассматривая их на типе
, можно доказать, что ровно для одного
это будет
.