Соответствие Карри — Ховарда: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Содержимое удалено Содержимое добавлено
Pilot Ang (обсуждение | вклад) Нет описания правки |
м Унификация {{нпX}}×3 |
||
Строка 1:
'''Соответствие Карри — Ховарда''' (''изоморфизм Карри — Ховарда'', {{lang-en|formulæ-as-types interpretation}}) — наблюдаемая структурная эквивалентность между [[Математическое доказательство|математическими доказательствами]] и [[Компьютерная программа|программами]], которая может быть формализована в виде [[изоморфизм]]а между логическими системами и типизированными исчислениями.
[[Хаскелл Карри]]<ref name="CurryFeys58" /> и {{Не переведено|
Соответствие Карри — Ховарда в современном представлении не ограничивается какой-то одной логикой или системой типов. Например, [[логика высказываний]] соответствует [[Просто типизированное лямбда-исчисление|простому типизированному λ-исчислению]], {{не переведено|
В рамках изоморфизма Карри — Ховарда следующие структурные элементы рассматриваются как эквивалентные:
Строка 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]] и {{Не переведено|
== Примечания ==
|