Соответствие Карри — Ховарда

Материал из testwiki
Перейти к навигации Перейти к поиску

Соответствие Карри — Ховарда (изоморфизм Карри — Ховарда, Шаблон:Lang-en) — наблюдаемая структурная эквивалентность между математическими доказательствами и программами, которая может быть формализована в виде изоморфизма между логическими системами и типизированными исчислениями.

Хаскелл Карри[1] и Шаблон:Не переведено[2] заметили, что построение конструктивного доказательства похоже на описание вычислений, а высказывания конструктивной логики по своей структуре схожи с типами вычисляемых выражений — программ для вычислительной машины. Ранние проявления этой связи — Шаблон:Iw (1925), задающая семантику интуиционистской логики через вычисления доказательств, и теория Шаблон:Iw Клини (1945).

Соответствие Карри — Ховарда в современном представлении не ограничивается какой-то одной логикой или системой типов. Например, логика высказываний соответствует простому типизированному λ-исчислению, Шаблон:Не переведено — полиморфному λ-исчислению, исчисление предикатов — λ-исчислению с зависимыми типами.

В рамках изоморфизма Карри — Ховарда следующие структурные элементы рассматриваются как эквивалентные:

Логические системы Языки программирования
Высказывание Тип
Доказательство высказывания P Терм (выражение) типа P
Утверждение P доказуемо Тип P обитаем
Импликация PQ Функциональный тип PQ
Конъюнкция PQ Тип произведения (пары) P×Q
Дизъюнкция PQ Тип суммы (размеченного объединения) P+Q
Истинная формула Единичный тип
Ложная формула Пустой тип ()
Квантор всеобщности Тип зависимого произведения (Π-тип)
Квантор существования Тип зависимой суммы (Σ-тип)

Простейшим примером соответствия Карри — Ховарда может служить изоморфизм между простым типизированным λ-исчислением и фрагментом интуиционистской логики высказываний, включающим только импликацию. Например, тип (PQR)(PQ)PR в простом типизированном лямбда-исчислении соответствует высказыванию (P(QR))((PQ)(PR)) логики высказываний. Для доказательства этого высказывания необходимо сконструировать терм указанного типа (если это удаётся сделать, то про тип говорят, что он обитаем или населён), в данном случае можно предъявить нужный терм: λfgxfx(gx), и это значит, что тавтология (P(QR))((PQ)(PR)) доказана.

Использование изоморфизма Карри — Ховарда позволило создать целый класс функциональных языков программирования, среда выполнения которых одновременно является системой автоматического доказательства, таких как Coq, Agda и Шаблон:Не переведено.

Примечания

Шаблон:Примечания

Литература

  1. Ошибка цитирования Неверный тег <ref>; для сносок CurryFeys58 не указан текст
  2. Ошибка цитирования Неверный тег <ref>; для сносок Howard69 не указан текст