Что такое Axiom K?

Я заметил, что обсуждение "Axiom K" появляется чаще всего с HoTT. Я считаю, что это связано с сопоставлением шаблонов. Я удивлен, что не могу найти ссылку в TAPL, ATTAPL или PFPL.

  • Что такое Axiom K?
  • Используется ли это для сопоставления шаблонов ML-стиля, как в SML (или просто зависимое сопоставление шаблонов)?
  • Какая подходящая ссылка для Axiom K?

Ответы

Ответ 1

Аксиома K также называется принципом единственности доказательств тождества и является аксиомой о природе тождественного типа в теории типа типа Мартина-Лёфа. Этот тип не существует (и на самом деле не может быть определен) в более простых типах, таких как система F, поэтому, вероятно, это причина, по которой вы не сталкивались с этим в упомянутых вами книгах.

Тип идентификации записывается как Id(A,x,y) или также x = y и кодирует свойство, что x и y равны (в соответствии с соответствием Карри-Говарда). Существует один базовый способ дать доказательство типа идентичности, а это refl : Id(A,x,x), т.е. Доказательство того, что x равно самому себе.

При исследовании типа идентичности в тезисе Томас Штрейхер представил новый выпрямитель для типа идентичности, который он назвал K (в качестве следующей буквы в алфавите после J, стандартный выпрямитель для типа идентичности). В нем утверждается, что любое доказательство равенства p равенства x = x само по себе равно тривиальному доказательству refl. Отсюда следует, что любые два доказательства p и q любого уравнения x = y равны, поэтому альтернативное имя "уникальность доказательств тождества". Примечательно то, что он доказал, что это не вытекает из стандартных правил теории типов. Я рекомендую прочитать статью Dan Licata на блоге теории гомотопического типа, если вы хотите понять, почему нет, он объясняет это намного лучше, чем я мог.

Чтобы ответить на вторую часть вашего вопроса: сопоставление шаблонов ML-стиля не связано с K, поскольку ML не имеет типа идентификации и, следовательно, не может даже сформулировать аксиому K. С другой стороны, K требуется для зависимого сопоставления шаблонов, введенного Тьерри Коквандом в "Согласование шаблонов с зависимыми типами (1992)". Причиной этого является то, что очень легко доказать K путем сопоставления шаблонов на конструкторе refl тождественного типа:

K : (p : x = x) -> p = refl
K refl = refl

Фактически, Конор Макбрайд показал в своем тезисе ( "В зависимости от типизированных функциональных программ и их доказательств (2000)" ), что K - единственное, что зависимое сопоставление шаблонов действительно добавляет к теории зависимых типов.

Мой интерес к этому вопросу заключается в том, чтобы точно понять, почему зависимое сопоставление шаблонов требует K и как его можно ограничить, чтобы его больше не было. Результатом стала статья и новая реализация опции --without-K в Agda. Основная идея заключается в том, что алгоритм унификации, используемый для анализа случаев во время зависимого сопоставления шаблонов, не должен удалять уравнения формы x = x, потому что для этого требуется К. Я рекомендую вам прочитать (введение) статьи, если вы хотите знать больше.