Русская Википедия:Соответствие Карри — Ховарда

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

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

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

Соответствие Карри — Ховарда в современном представлении не ограничивается какой-то одной логикой или системой типов. Например, логика высказываний соответствует простому типизированному λ-исчислению, en (Second-order propositional logic) — полиморфному λ-исчислению, исчисление предикатов — λ-исчислению с зависимыми типами.

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

Логические системы Языки программирования
Высказывание Тип
Доказательство высказывания <math>P</math> Терм (выражение) типа <math>P</math>
Утверждение <math>P</math> доказуемо Тип <math>P</math> обитаем
Импликация <math>P \Rightarrow Q</math> Функциональный тип <math>P \rightarrow Q</math>
Конъюнкция <math>P \land Q</math> Тип произведения (пары) <math>P \times Q</math>
Дизъюнкция <math>P \lor Q</math> Тип суммы (размеченного объединения) <math>P + Q</math>
Истинная формула Единичный тип
Ложная формула Пустой тип (<math>\bot</math>)
Квантор всеобщности <math>\forall</math> Тип зависимого произведения (<math>\Pi</math>-тип)
Квантор существования <math>\exists</math> Тип зависимой суммы (<math>\Sigma</math>-тип)

Простейшим примером соответствия Карри — Ховарда может служить изоморфизм между простым типизированным λ-исчислением и фрагментом интуиционистской логики высказываний, включающим только импликацию. Например, тип <math>(P \rightarrow Q \rightarrow R) \rightarrow (P \rightarrow Q) \rightarrow P \rightarrow R</math> в простом типизированном лямбда-исчислении соответствует высказыванию <math>(P \Rightarrow (Q \Rightarrow R)) \Rightarrow ((P \Rightarrow Q) \Rightarrow (P \Rightarrow R))</math> логики высказываний. Для доказательства этого высказывания необходимо сконструировать терм указанного типа (если это удаётся сделать, то про тип говорят, что он обитаем или населён), в данном случае можно предъявить нужный терм: <math>\lambda f g x \rightarrow f x (g x)</math>, и это значит, что тавтология <math>(P \Rightarrow (Q \Rightarrow R)) \Rightarrow ((P \Rightarrow Q) \Rightarrow (P \Rightarrow R))</math> доказана.

Использование изоморфизма Карри — Ховарда позволило создать целый класс функциональных языков программирования, среда выполнения которых одновременно является системой автоматического доказательства, таких как Coq, Agda и [[|en]] (Epigram (programming language)).

Примечания

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

Литература

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