В теории языков программирования и теории доказательств соответствие Карри–Ховарда — это прямая связь между компьютерными программами и математическими доказательствами . Оно также известно как изоморфизм или эквивалентность Карри–Ховарда , или интерпретация доказательств-как-программ и предложений -или формул-как-типов .
Это обобщение синтаксической аналогии между системами формальной логики и вычислительными исчислениями, впервые обнаруженной американским математиком Хаскеллом Карри и логиком Уильямом Элвином Говардом . [1] Именно связь между логикой и вычислениями обычно приписывается Карри и Говарду, хотя эта идея связана с операционной интерпретацией интуиционистской логики, данной в различных формулировках Л. Э. Дж. Брауэром , Арендом Гейтингом и Андреем Колмогоровым (см. Интерпретация Брауэра–Гейтинга–Колмогорова ) [2] и Стивеном Клини (см. Реализуемость ). Связь была расширена и теперь включает теорию категорий как трехстороннее соответствие Карри–Говарда–Ламбека . [3] [4] [5]
Начало переписки Карри и Ховарда кроется в нескольких наблюдениях:
Соответствие Карри–Ховарда — это наблюдение, что существует изоморфизм между системами доказательств и моделями вычислений. Это утверждение, что эти два семейства формализмов можно считать идентичными.
Если абстрагироваться от особенностей любого формализма, то возникает следующее обобщение: доказательство — это программа, а доказываемая ею формула — это тип программы . Более неформально это можно рассматривать как аналогию , которая утверждает, что возвращаемый тип функции (т. е. тип значений, возвращаемых функцией) аналогичен логической теореме, при условии, что гипотезы соответствуют типам значений аргументов, переданных функции; и что программа для вычисления этой функции аналогична доказательству этой теоремы. Это устанавливает форму логического программирования на строгом фундаменте: доказательства могут быть представлены как программы, и особенно как лямбда-термы , или доказательства могут быть запущены .
Соответствие стало отправной точкой большого спектра новых исследований после его открытия, что привело, в частности, к новому классу формальных систем, разработанных для работы как в качестве системы доказательств , так и в качестве типизированного функционального языка программирования . Сюда входят интуиционистская теория типов Мартина-Лёфа и исчисление конструкций Коканда , два исчисления, в которых доказательства являются обычными объектами дискурса и в которых можно устанавливать свойства доказательств так же, как и свойств любой программы. Эту область исследований обычно называют современной теорией типов .
Такие типизированные лямбда-исчисления, полученные из парадигмы Карри–Ховарда, привели к появлению программного обеспечения, такого как Coq , в котором доказательства, рассматриваемые как программы, могут быть формализованы, проверены и запущены.
Обратное направление — использовать программу для извлечения доказательства , учитывая его правильность — область исследований, тесно связанная с кодом, содержащим доказательство . Это осуществимо только в том случае, если язык программирования , на котором написана программа, очень богато типизирован: разработка таких систем типов была частично мотивирована желанием сделать соответствие Карри–Ховарда практически значимым.
Переписка Карри–Ховарда также подняла новые вопросы относительно вычислительного содержания концепций доказательства, которые не были охвачены оригинальными работами Карри и Ховарда. В частности, было показано, что классическая логика соответствует способности манипулировать продолжением программ и симметрией секвенциального исчисления для выражения дуальности между двумя стратегиями оценки, известными как вызов по имени и вызов по значению.
Из-за возможности написания незавершающихся программ, Тьюринг-полные модели вычислений (такие как языки с произвольными рекурсивными функциями ) должны интерпретироваться с осторожностью, поскольку наивное применение соответствия приводит к непоследовательной логике. Лучший способ работы с произвольными вычислениями с логической точки зрения все еще является активно обсуждаемым исследовательским вопросом, но один популярный подход основан на использовании монад для разделения доказуемо завершающегося от потенциально незавершающегося кода (подход, который также обобщается на гораздо более богатые модели вычислений, [9] и сам по себе связан с модальной логикой естественным расширением изоморфизма Карри-Ховарда [ext 1] ). Более радикальный подход, пропагандируемый полным функциональным программированием , заключается в устранении неограниченной рекурсии (и отказе от полноты по Тьюрингу , хотя все еще сохраняя высокую вычислительную сложность), используя более контролируемую корекурсию везде, где на самом деле желательно незавершающееся поведение.
В более общей формулировке соответствие Карри–Ховарда — это соответствие между формальными исчислениями доказательств и системами типов для моделей вычислений . В частности, оно распадается на два соответствия. Одно на уровне формул и типов , которое не зависит от того, какая конкретная система доказательств или модель вычислений рассматривается, и одно на уровне доказательств и программ , которое на этот раз специфично для конкретного выбора рассматриваемой системы доказательств и модели вычислений.
На уровне формул и типов соответствие говорит, что импликация ведет себя так же, как тип функции, конъюнкция — как тип «произведения» (это может называться кортежем, структурой, списком или каким-либо другим термином в зависимости от языка), дизъюнкция — как тип суммы (этот тип может называться объединением), ложная формула — как пустой тип, а истинная формула — как тип единицы (единственным членом которого является нулевой объект). Квантификаторы соответствуют зависимому функциональному пространству или произведениям (в зависимости от ситуации). Это суммировано в следующей таблице:
На уровне систем доказательств и моделей вычислений соответствие в основном показывает идентичность структуры, во-первых, между некоторыми частными формулировками систем, известных как система вывода в стиле Гильберта и комбинаторная логика , и, во-вторых, между некоторыми частными формулировками систем, известных как естественная дедукция и лямбда-исчисление .
Между системой натурального вывода и лямбда-исчислением существуют следующие соответствия:
В начале это было простое замечание в книге Карри и Фейса 1958 года по комбинаторной логике: простейшие типы для основных комбинаторов K и S комбинаторной логики удивительным образом соответствовали соответствующим схемам аксиом α → ( β → α ) и ( α → ( β → γ )) → (( α → β ) → ( α → γ )), используемым в системах вывода в стиле Гильберта . По этой причине эти схемы теперь часто называют аксиомами K и S. Примеры программ, рассматриваемых как доказательства в логике в стиле Гильберта, приведены ниже.
Если ограничиться импликационным интуиционистским фрагментом, то простой способ формализовать логику в стиле Гильберта заключается в следующем. Пусть Γ — конечный набор формул, рассматриваемых как гипотезы. Тогда δ выводима из Γ, обозначаемая Γ ⊢ δ, в следующих случаях:
Это можно формализовать с помощью правил вывода , как в левом столбце следующей таблицы.
Типизированную комбинаторную логику можно сформулировать с использованием похожего синтаксиса: пусть Γ будет конечным набором переменных, аннотированных их типами. Термин T (также аннотированный своим типом) будет зависеть от этих переменных [Γ ⊢ T: δ ], когда:
Определенные здесь правила генерации приведены в правом столбце ниже. Замечание Карри просто утверждает, что оба столбца находятся во взаимно-однозначном соответствии. Ограничение соответствия интуиционистской логикой означает, что некоторые классические тавтологии , такие как закон Пирса (( α → β ) → α ) → α , исключаются из соответствия.
Рассматривая это на более абстрактном уровне, соответствие можно переформулировать так, как показано в следующей таблице. В частности, теорема о дедукции, характерная для логики в стиле Гильберта, соответствует процессу устранения абстракции комбинаторной логики.
Благодаря соответствию результаты комбинаторной логики могут быть перенесены в логику Гильберта и наоборот. Например, понятие сокращения терминов в комбинаторной логике может быть перенесено в логику Гильберта, и это дает способ канонического преобразования доказательств в другие доказательства того же утверждения. Можно также перенести понятие нормальных терминов в понятие нормальных доказательств, выражая, что гипотезы аксиом никогда не должны быть полностью отделены (поскольку в противном случае может произойти упрощение).
Наоборот, недоказуемость закона Пирса в интуиционистской логике может быть перенесена обратно в комбинаторную логику: не существует типизированного термина комбинаторной логики, который типизируется с помощью типа
Результаты о полноте некоторых наборов комбинаторов или аксиом также могут быть переданы. Например, тот факт, что комбинатор X составляет одноточечную основу (экстенсиональной) комбинаторной логики, подразумевает, что схема с одной аксиомой
который является основным типом X , является адекватной заменой комбинации схем аксиом
После того, как Карри подчеркнул синтаксическое соответствие между интуиционистским выводом в стиле Гильберта и типизированной комбинаторной логикой , Говард в 1969 году явно сформулировал синтаксическую аналогию между программами просто типизированного лямбда-исчисления и доказательствами естественной дедукции . Ниже левая часть формализует интуиционистский импликативный естественный вывод как исчисление секвенций (использование секвенций является стандартным при обсуждении изоморфизма Карри–Говарда, поскольку позволяет более четко сформулировать правила вывода) с неявным ослаблением, а правая часть показывает правила типизации лямбда-исчисления . В левой части Γ, Γ 1 и Γ 2 обозначают упорядоченные последовательности формул, тогда как в правой части они обозначают последовательности именованных (т. е. типизированных) формул со всеми разными именами.
Перефразируя соответствие, доказательство Γ ⊢ α означает наличие программы, которая, учитывая значения с типами, перечисленными в Γ, производит объект типа α . Аксиома/гипотеза соответствует введению новой переменной с новым, неограниченным типом, правило → I соответствует абстракции функции, а правило → E соответствует применению функции. Обратите внимание, что соответствие не является точным, если контекст Γ рассматривается как набор формул, например, λ-термы λ x .λ y . x и λ x .λ y . y типа α → α → α не будут различаться в соответствии. Примеры приведены ниже.
Говард показал, что соответствие распространяется на другие связки логики и другие конструкции просто типизированного лямбда-исчисления. Рассматриваемое на абстрактном уровне соответствие может быть суммировано, как показано в следующей таблице. В частности, оно также показывает, что понятие нормальных форм в лямбда-исчислении соответствует понятию Правитца о нормальной дедукции в естественной дедукции , из чего следует, что алгоритмы для проблемы заселения типов могут быть превращены в алгоритмы для решения интуиционистской доказуемости.
Соответствие Говарда естественным образом распространяется на другие расширения естественной дедукции и простого типизированного лямбда-исчисления . Вот неполный список:
Во времена Карри, а также во времена Говарда соответствие доказательств-как-программ касалось только интуиционистской логики , т. е. логики, в которой, в частности, закон Пирса не был выводим. Расширение соответствия до закона Пирса и, следовательно, до классической логики стало ясно из работы Гриффина по типизации операторов, которые захватывают контекст оценки выполнения данной программы, так что этот контекст оценки может быть позже переустановлен. Базовое соответствие в стиле Карри–Говарда для классической логики приведено ниже. Обратите внимание на соответствие между трансляцией двойного отрицания, используемой для отображения классических доказательств в интуиционистскую логику, и трансляцией в стиле продолжения-передачи, используемой для отображения лямбда-терминов, включающих управление, в чистые лямбда-термины. Более конкретно, трансляции в стиле продолжения-передачи вызова по имени относятся к трансляции двойного отрицания Колмогорова , а трансляции в стиле продолжения-передачи вызова по значению относятся к своего рода трансляции двойного отрицания, предложенной Куродой.
Более тонкое соответствие Карри–Ховарда существует для классической логики, если определить классическую логику не добавлением аксиомы, такой как закон Пирса , а допущением нескольких заключений в секвенциях. В случае классической естественной дедукции существует соответствие доказательства-как-программы с типизированными программами λμ-исчисления Париго .
Соответствие доказательств как программ может быть установлено для формализма, известного как секвенциальное исчисление Генцена , но это не соответствие с четко определенной ранее существовавшей моделью вычислений, как это было для выводов в стиле Гильберта и естественных выводов.
Последовательное исчисление характеризуется наличием левых правил введения, правых правил введения и правила сечения, которое может быть устранено. Структура последовательного исчисления относится к исчислению, структура которого близка к структуре некоторых абстрактных машин . Неформальное соответствие следующее:
NG de Bruijn использовал лямбда-нотацию для представления доказательств программы проверки теорем Automath и представлял предложения как «категории» их доказательств. Это было в конце 1960-х годов, в то же время, когда Говард написал свою рукопись; де Брейн, вероятно, не знал о работе Говарда и установил соответствие независимо (Sørensen & Urzyczyn [1998] 2006, стр. 98–99). Некоторые исследователи склонны использовать термин соответствие Карри–Говарда–де Брейна вместо соответствия Карри–Говарда.
Интерпретация BHK интерпретирует интуиционистские доказательства как функции, но не определяет класс функций, релевантных для интерпретации. Если взять лямбда-исчисление для этого класса функций, то интерпретация BHK говорит то же самое, что и соответствие Говарда между естественной дедукцией и лямбда-исчислением.
Рекурсивная реализуемость Клини разбивает доказательства интуиционистской арифметики на пару рекурсивной функции и доказательства формулы, выражающей, что рекурсивная функция «реализует», т.е. правильно реализует дизъюнкции и кванторы существования исходной формулы, так что формула становится истинной.
Модифицированная реализуемость Крейзеля применяется к интуиционистской логике предикатов высшего порядка и показывает, что просто типизированный лямбда-терм, индуктивно извлеченный из доказательства, реализует исходную формулу. В случае пропозициональной логики это совпадает с утверждением Говарда: извлеченный лямбда-терм является самим доказательством (рассматриваемым как нетипизированный лямбда-терм), а утверждение реализуемости является парафразом того факта, что извлеченный лямбда-терм имеет тип, который означает формула (рассматриваемый как тип).
Интерпретация диалектики Гёделя реализует (расширение) интуиционистской арифметики с вычислимыми функциями. Связь с лямбда-исчислением неясна, даже в случае естественной дедукции.
Иоахим Ламбек показал в начале 1970-х годов, что доказательства интуиционистской пропозициональной логики и комбинаторы типизированной комбинаторной логики имеют общую эквациональную теорию, теорию декартовых замкнутых категорий . Выражение соответствие Карри–Ховарда–Ламбека теперь используется некоторыми людьми [ кем? ] для обозначения отношений между интуиционистской логикой, типизированным лямбда-исчислением и декартовыми замкнутыми категориями. При этом соответствии объекты декартово-замкнутой категории могут интерпретироваться как предложения (типы), а морфизмы — как выводы, отображающие набор предположений ( контекст типизации ) в допустимый консеквент (хорошо типизированный термин). [12]
Соответствие Ламбека является соответствием эквациональных теорий, абстрагируясь от динамики вычислений, таких как бета-редукция и нормализация терминов, и не является выражением синтаксической идентичности структур, как это имеет место для каждого из соответствий Карри и Говарда: т. е. структура хорошо определенного морфизма в декартово-замкнутой категории не сопоставима со структурой доказательства соответствующего суждения ни в логике Гильберта, ни в естественной дедукции. Например, невозможно утверждать или доказать, что морфизм является нормализующим, установить теорему типа Чёрча-Россера или говорить о "сильно нормализующей" декартово-замкнутой категории. Чтобы прояснить это различие, ниже перефразируется базовая синтаксическая структура декартово-замкнутых категорий.
Объекты (предложения/типы) включают
Морфизмы (выводы/термины) включают
Эквивалентно аннотациям выше, хорошо определенные морфизмы (типизированные термины) в любой декартово-замкнутой категории могут быть построены в соответствии со следующими правилами типизации . Обычная нотация категориального морфизма заменяется нотацией контекста типизации .
Личность:
Состав:
Тип объекта ( конечный объект ):
Декартово произведение:
Левая и правая проекция:
Наконец, уравнения категории имеют вид
Из этих уравнений следуют следующие законы:
Теперь существует t такое, что тогда и только тогда доказуемо в импликационной интуиционистской логике.
Благодаря соответствию Карри–Ховарда типизированное выражение, тип которого соответствует логической формуле, аналогично доказательству этой формулы. Вот примеры.
В качестве примера рассмотрим доказательство теоремы α → α . В лямбда-исчислении это тип функции тождества I = λ x . x , а в комбинаторной логике функция тождества получается путем применения S = λ fgx . fx ( gx ) дважды к K = λ xy . x . То есть, I = (( S K ) K ) . В качестве описания доказательства это говорит о том, что для доказательства α → α можно использовать следующие шаги :
В целом процедура заключается в том, что всякий раз, когда программа содержит приложение формы ( P Q ), необходимо выполнить следующие шаги:
В качестве более сложного примера рассмотрим теорему, соответствующую функции B. Тип B — ( β → α ) → ( γ → β ) → γ → α . B эквивалентно ( S ( K S ) K ). Это наша дорожная карта для доказательства теоремы ( β → α ) → ( γ → β ) → γ → α .
Первый шаг — построить ( K S ). Чтобы сделать антецедент аксиомы K похожим на аксиому S , положим α равным ( α → β → γ ) → ( α → β ) → α → γ , а β равным δ (чтобы избежать столкновений переменных):
Поскольку антецедент здесь — просто S , консеквент можно отделить с помощью Modus Ponens:
Это теорема, которая соответствует типу ( K S ). Теперь применим S к этому выражению. Взяв S следующим образом
положим α = δ , β = α → β → γ и γ = ( α → β ) → α → γ , что даст
и затем отделить следствие:
Это формула для типа ( S ( K S )). Частный случай этой теоремы имеет δ = ( β → γ ) :
Эту последнюю формулу необходимо применить к K. Специализируем K снова, на этот раз заменив α на ( β → γ ) и β на α :
Это то же самое, что и антецедент предыдущей формулы, поэтому, отсоединяя консеквент:
Поменяв местами имена переменных α и γ, мы получаем
что и оставалось доказать.
Диаграмма ниже дает доказательство ( β → α ) → ( γ → β ) → γ → α естественным выводом и показывает, как его можно интерпретировать как λ-выражение λ a .λ b .λ g .( a ( b g )) типа ( β → α ) → ( γ → β ) → γ → α .
a:β → α, b:γ → β, g:γ ⊢ b : γ → β a:β → α, b:γ → β, g:γ ⊢ g : γ—————————————————————————————————————————————————— ————————————————————————————————————————————————— ———a:β → α, b:γ → β, g:γ ⊢ a: β → α a:β → α, b:γ → β, g:γ ⊢ bg : β————————————————————————————————————————————————— —————————————————————— a:β → α, b:γ → β, g:γ ⊢ a (bg) : α ———————————————————————————————————— а:β → α, b:γ → β ⊢ λ g. а (бг) : γ → α ———————————————————————————————————————— а:β → α ⊢ λ б. λ г. а (бг) : (γ → β) → γ → α ———————————————————————————————————— ⊢ λ а. λ б. λ г. a (bg) : (β → α) → (γ → β) → γ → α
Недавно изоморфизм был предложен как способ определения разбиения пространства поиска в генетическом программировании . [13] Метод индексирует наборы генотипов (деревья программ, созданные системой GP) с помощью их изоморфного доказательства Карри-Ховарда (называемого видом).
Как отметил директор по исследованиям INRIA Бернард Ланг, [14] переписка Карри-Ховарда представляет собой аргумент против патентоспособности программного обеспечения: поскольку алгоритмы являются математическими доказательствами, патентоспособность первых подразумевала бы патентоспособность вторых. Теорема может быть частной собственностью; математик должен был бы платить за ее использование и доверять компании, которая ее продает, но держит свое доказательство в секрете и отказывается от ответственности за любые ошибки.
Перечисленные здесь соответствия идут гораздо дальше и глубже. Например, декартовы замкнутые категории обобщаются замкнутыми моноидальными категориями . Внутренний язык этих категорий — это линейная система типов (соответствующая линейной логике ), которая обобщает просто типизированное лямбда-исчисление как внутренний язык декартовых замкнутых категорий. Более того, можно показать, что они соответствуют кобордизмам , [15] которые играют важную роль в теории струн .
Расширенный набор эквивалентностей также исследуется в теории гомотопических типов . Здесь теория типов расширяется аксиомой унивалентности («эквивалентность эквивалентна равенству»), которая позволяет использовать теорию гомотопических типов в качестве основы для всей математики (включая теорию множеств и классическую логику, предоставляя новые способы обсуждения аксиомы выбора и многого другого). То есть, соответствие Карри–Ховарда, что доказательства являются элементами обитаемых типов, обобщается до понятия гомотопической эквивалентности доказательств (как путей в пространстве, причем тип тождества или тип равенства теории типов интерпретируется как путь). [16]
{{cite book}}
: CS1 maint: postscript (link)