Можно ли получить свободные теоремы как пропозициональные равенства?

«Свободные теоремы» в смысле статьи Уодлера «Теоремы бесплатно!» уравнения о некоторых значениях выводятся только на основе их типа. Так что, например,

f : {A : Set} → List A → List A

автоматически удовлетворяет

f . map g = map g . f

Тогда могу ли я получить термин Agda следующего типа:

(f : {A : Set} → List A → List A) {B C : Set} (g : B → C) (xs : List B)
  → f (map g xs) ≡ map g (f xs)

или если да/если нет, могу ли я сделать что-то более/менее общее?

Мне известно о существовании библиотеки облегченных бесплатных теорем но я не думаю, что он делает то, что я хочу (а если и делает, то я не понимаю его достаточно хорошо, чтобы сделать это).

(Пример использования: у меня есть функтор F : Set → Set, и я хотел бы доказать, что полиморфная функция F A × F B → F (A × B) автоматически является естественным преобразованием.)


person Ben Millwood    schedule 13.07.2014    source источник
comment
Лучше подходит для сайтов по компьютерным наукам.   -  person PM 77-1    schedule 13.07.2014
comment
Я не согласен — это вопрос о том, что конкретно достижимо в Агде сегодня, а не о том, что возможно абстрактно или теоретически.   -  person Ben Millwood    schedule 13.07.2014
comment
Все хотят получить бесплатные теоремы из Интернета. Вот что убило бизнес публикации теорем. ;(   -  person Hot Licks    schedule 13.07.2014


Ответы (2)


Нет, теория типов, на которой построен Agda, недостаточно сильна, чтобы доказать это. Для этого потребуется функция, называемая «внутренняя параметричность», см. работу Гильхема:

Это позволит вам, например, доказать, что все обитатели «(A : Set) → A → A» равны (полиморфной) функции идентичности. Насколько я знаю, это еще не реализовано ни на одном языке.

person Jesper    schedule 13.07.2014

Шанталь Келлер и Марк Лассон разработали тактику для Кока, генерирующую отношение параметричности, соответствующее (закрытому) типу, и доказывающее, что обитатели этого типа удовлетворяют сгенерированному отношению. Более подробную информацию об этой работе можно найти на веб-сайте Келлера.

Теперь, в случае с Агдой, теоретически возможно проделать ту же работу, реализуя тактику в чистом Агде, используя технику, называемую отражением.

person gallais    schedule 13.07.2014
comment
Ваш комментарий об Агде, кажется, противоречит другому ответу — вы уверены, что это возможно? - person Ben Millwood; 13.07.2014
comment
Coq также не усваивает параметричность: это тактика, которая выполняет свою работу. Точно так же ни Agda, ни Coq не имеют fold функций для своих индуктивных типов, но вы можете написать тактику, создающую эти итераторы автоматически. Это верно, потому что (и это метатеорема, как и параметричность), учитывая ограничения в их системах типов, вы знаете, что каждый индуктивный тип имеет начальную алгебру. - person gallais; 14.07.2014