Соответствие Карри — Ховарда: различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
м Унификация {{нпX}}×3
Строка 1:
'''Соответствие Карри — Ховарда''' (''изоморфизм Карри — Ховарда'', {{lang-en|formulæ-as-types interpretation}}) — наблюдаемая структурная эквивалентность между [[Математическое доказательство|математическими доказательствами]] и [[Компьютерная программа|программами]], которая может быть формализована в виде [[изоморфизм]]а между логическими системами и типизированными исчислениями.
 
[[Хаскелл Карри]]<ref name="CurryFeys58" /> и {{Не переведено|есть=:en:William Alvin Howard|надо=Ховард, Уильям|текст=Уильям Ховард|en|William Alvin Howard}}<ref name="Howard69" /> заметили, что построение [[Конструктивная математика|конструктивного доказательства]] похоже на описание вычислений, а высказывания конструктивной логики по своей структуре схожи с типами вычисляемых выражений — программ для [[Вычислительная машина|вычислительной машины]]. Ранние проявления этой связи — {{iw|интерпретация Брауэра — Гейтинга — Колмогорова||en|Brouwer–Heyting–Kolmogorov interpretation}} (1925), задающая семантику [[Интуиционистская логика|интуиционистской логики]] через вычисления доказательств, и теория {{iw|реализуемость|реализуемости|en|Realizability}} [[Клини, Стивен Коул|Клини]] (1945).
 
Соответствие Карри — Ховарда в современном представлении не ограничивается какой-то одной логикой или системой типов. Например, [[логика высказываний]] соответствует [[Просто типизированное лямбда-исчисление|простому типизированному λ-исчислению]], {{не переведено|есть=:en:Second-order propositional logic|надо=Логика высказываний второго порядка|текст=логика высказываний второго порядка|en|Second-order propositional logic}} — [[Система F|полиморфному λ-исчислению]], [[исчисление предикатов]] — [[Зависимые типы|λ-исчислению с зависимыми типами]].
 
В рамках изоморфизма Карри — Ховарда следующие структурные элементы рассматриваются как эквивалентные:
Строка 33:
Простейшим примером соответствия Карри — Ховарда может служить [[изоморфизм]] между простым типизированным λ-исчислением и фрагментом [[Интуиционизм|интуиционистской логики высказываний]], включающим только [[Импликация|импликацию]]. Например, тип <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]] и {{Не переведено|есть=:Epigram||en:|Epigram (programming language)|надо=Epigram}}.
 
== Примечания ==