(Литература)
Wadler, Philip. "Theorems for free!." Proceedings of the fourth international conference on Functional programming languages and computer architecture. ACM, 1989
Прочитал статью и возникли вопросы.
Прежде всего, параметрическая

в смысле Рейнольдса (или Жирара-Рейнольдса?) — это тоже самое, что

в

-кубе Барендрегта? То есть это такая же по-максимуму явная система типов, допускающая всяческую абстракцию терма по типу, и слабую (я не ошибся в названии? имел в виду наличие квантора только снаружи) вроде

, и сильную вроде

(квантор появился внутри)?
Рассмотрим несколько простых типов.

— это тип Истины. Типичный пример тому — идентичность

.
Утверждаем, что

, где вместо типа — неформальное отношение между типами. Для любого отношения

тогда

.

В частном случае, когда отношение является функцией, получается

Итак, получили бесплатную теорему

Можно ли из этой теоремы заключить, что в адекватной

-системе ничего, кроме идентичности, удовлетворять этой теореме не может?
Ещё: проекция

или K-комбинатор

, абстрагированные по

.
Применяя ту же схему, получим (в инфиксной форме записаны отношения, индексы типов опущены)
Для функций:

Это бесплатная теорема для K-комбинатора и по совместительству для двух проекций.
Достаточно ли этого, чтобы считать

независимым от

? Интуитивно мне кажется, что стоит опираться на частный случай

, в котором теорема принимает вид

, но я не знаю, как это лучше обыграть, чтоб было по-формальнее.
Эти вопросы были навеяны красивыми манипуляциями в статье над функциями reverse, map и fold. В частности, там показано, что

обязательно представима в виде композиции map и переупорядочивания:
