Параметрические доказательства в Агде

Чтение этого ответа побудило меня попытаться построить, а затем доказать каноническую форму полиморфных контейнерных функций. Конструкция была простой, но доказательство ставит меня в тупик. Ниже приведена упрощенная версия того, как я пытался написать доказательство.

Упрощенная версия доказывает, что достаточно полиморфные функции из-за параметризации не могут изменять свое поведение только в зависимости от выбора параметра. Допустим, у нас есть функции двух аргументов, одного фиксированного типа и одного параметрического:

PolyFun : Set → Set _
PolyFun A = ∀ {X : Set} → A → X → A

собственность, которую я хотел бы доказать:

open import Relation.Binary.PropositionalEquality

parametricity : ∀ {A X Y} → (f : PolyFun A) → ∀ a x y → f {X} a x ≡ f {Y} a y
parametricity f a x y = {!!}

Можно ли утверждать подобные заявления изнутри Агды?

1 ответ

Нет, в Agda нет принципа параметричности (пока! [1]).

Однако вы можете использовать эти комбинаторы, чтобы построить тип соответствующей свободной теоремы и постулировать ее:

http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Libraries.LightweightFreeTheorems

[1] http://www.cse.chalmers.se/~mouling/share/PresheafModelParametericTT.pdf

Другие вопросы по тегам