Доказательство, написанное в виде функциональной программы |
---|
plus_comm = fun n m : nat => nat_ind ( fun n0 : nat => n0 + m = m + n0 ) ( plus_n_0 m ) ( fun ( y : nat ) ( H : y + m = m + y ) => eq_ind ( S ( m + y )) ( весело n0 : nat => S ( y + m ) = n0 ) ( f_equal S H ) ( m + S y ) ( plus_n_Sm m y )) n : forall n m : nat , n + m = m + n |
Доказательство коммутативности сложения натуральных чисел в помощнике по доказательству Coq . nat_ind означает математическую индукцию , eq_ind замену равенства и f_equal взятие одной и той же функции с обеих сторон равенства. Ссылки на более ранние теоремы показывают и . |
В теории языков программирования и теории доказательств соответствие Карри-Ховарда (также известное как изоморфизм или эквивалентность Карри-Ховарда , или интерпретация доказательств-как-программ и пропозиций или формул-как-типов ) представляет собой прямую связь между компьютерными программами . и математические доказательства .
Это обобщение синтаксической аналогии между системами формальной логики и вычислительных исчислений, впервые обнаруженной американским математиком Хаскеллом Карри и логиком Уильямом Элвином Ховардом . [1] Именно связь между логикой и вычислениями обычно приписывают Карри и Ховарду, хотя эта идея связана с операциональной интерпретацией интуиционистской логики , данной в различных формулировках Л. Дж. Брауэром , Арендом Хейтингом и Андреем Колмогоровым (см. –интерпретация Колмогорова ) [2] и Стивена Клини(см. Реализуемость ). Отношения были расширены, чтобы включить теорию категорий как трехстороннее соответствие Карри-Ховарда-Ламбека .
Начало переписки Карри-Ховарда лежит в нескольких наблюдениях:
Другими словами, соответствие Карри-Ховарда — это наблюдение, что два семейства, казалось бы, несвязанных формализмов — а именно, системы доказательств, с одной стороны, и модели вычислений, с другой — на самом деле являются математическими объектами одного и того же типа.
Если абстрагироваться от особенностей того и другого формализма, то возникает следующее обобщение: доказательство есть программа, а формула, которую оно доказывает, есть тип программы . Более неформально это можно рассматривать как аналогию , утверждающую, что возвращаемый тип функции (т. е. тип значений, возвращаемых функцией) аналогичен логической теореме с учетом гипотез, соответствующих типам переданных значений аргументов. к функции; и что программа для вычисления этой функции аналогична доказательству этой теоремы. Это устанавливает форму логического программирования на строгой основе: доказательства могут быть представлены в виде программ, особенно в виде лямбда-термов , или доказательства могут бытьбежать .
Соответствие стало отправной точкой большого спектра новых исследований после его открытия, что привело, в частности, к новому классу формальных систем, предназначенных для работы как системы доказательства, так и как типизированный язык функционального программирования . Это включает в себя интуиционистскую теорию типов Мартина-Лёфа и исчисление конструкций Коканда , два исчисления, в которых доказательства являются регулярными объектами дискурса и в которых можно сформулировать свойства доказательств так же, как и любой программы. Эту область исследований обычно называют современной теорией типов .
Такие типизированные лямбда-исчисления , полученные из парадигмы Карри-Ховарда, привели к созданию программного обеспечения, такого как Coq , в котором доказательства, рассматриваемые как программы, могут быть формализованы, проверены и запущены.
Обратное направление — использовать программу для извлечения доказательства с учетом его правильности — область исследований, тесно связанная с кодом, содержащим доказательство . Это возможно только в том случае, если язык программирования, для которого написана программа, имеет очень богатую типизацию: разработка таких систем типов была частично мотивирована желанием сделать соответствие Карри-Ховарда практически актуальным.
Переписка Карри-Ховарда также подняла новые вопросы, касающиеся вычислительного содержания концепций доказательства, которые не были охвачены оригинальными работами Карри и Ховарда. В частности, было показано, что классическая логика соответствует способности манипулировать продолжением программ и симметрии последовательного исчисления , чтобы выразить двойственность между двумя стратегиями оценки , известными как вызов по имени и вызов по значению.
Можно предположить, что соответствие Карри-Ховарда приведет к существенному объединению математической логики и фундаментальной компьютерной науки:
Логика в стиле Гильберта и естественная дедукция — всего лишь два вида систем доказательства в большом семействе формализмов. Альтернативные синтаксисы включают исчисление секвенций , сети доказательств , исчисление структур и т. д . Если принять соответствие Карри-Ховарда как общий принцип, согласно которому любая система доказательств скрывает модель вычислений, теорию лежащей в основе нетипизированной вычислительной структуры этих видов доказательств. система должна быть возможной. Тогда возникает естественный вопрос: можно ли сказать что-нибудь математически интересное об этих лежащих в основе вычислительных исчислениях.
И наоборот, комбинаторная логика и просто типизированное лямбда-исчисление — не единственные модели вычислений . Линейная логика Жирара была разработана на основе тонкого анализа использования ресурсов в некоторых моделях лямбда-исчисления; существует ли типизированная версия машины Тьюринга, которая будет вести себя как система доказательств? Типизированные языки ассемблера являются таким экземпляром «низкоуровневых» моделей вычислений, которые несут типы.
Из-за возможности написания не завершающих программ полные по Тьюрингу модели вычислений (например, языки с произвольными рекурсивными функциями ) следует интерпретировать с осторожностью, поскольку наивное применение соответствия приводит к противоречивой логике. Лучший способ работы с произвольными вычислениями с логической точки зрения все еще активно обсуждается исследовательским вопросом, но один из популярных подходов основан на использовании монад для отделения доказуемо завершающегося кода от потенциально не завершающего кода (подход, который также обобщает гораздо более богатые возможности). модели вычислений, [6] и сам связан с модальной логикой естественным расширением изоморфизма Карри-Ховарда [ext 1]). Более радикальный подход, пропагандируемый тотальным функциональным программированием , заключается в устранении неограниченной рекурсии (и отказе от полноты по Тьюрингу , хотя и при сохранении высокой вычислительной сложности) с использованием более контролируемой корекурсии везде, где на самом деле желательно нетерминирующее поведение.
В более общей формулировке соответствие Карри-Ховарда — это соответствие между исчислениями формальных доказательств и системами типов для моделей вычислений . В частности, оно распадается на два соответствия. Один на уровне формул и типов , который не зависит от того, какая конкретная система доказательств или модель вычислений рассматривается, и один на уровне доказательств и программ , который на этот раз специфичен для конкретного выбора системы доказательств и модели вычислений. обдуманный.
На уровне формул и типов соответствие говорит, что импликация ведет себя так же, как тип функции, конъюнкция как тип «произведение» (это может называться кортежем, структурой, списком или каким-либо другим термином в зависимости от языка). ), дизъюнкция как тип суммы (этот тип можно назвать объединением), ложная формула как пустой тип и истинная формула как одноэлементный тип (единственным членом которого является нулевой объект). Квантификаторы соответствуют зависимому функциональному пространству или продуктам (в зависимости от обстоятельств). Это обобщено в следующей таблице:
Логическая сторона | Сторона программирования |
---|---|
универсальная количественная оценка | обобщенный тип продукта (тип Π) |
экзистенциальная квантификация | тип обобщенной суммы (тип Σ) |
значение | тип функции |
соединение | Тип продукта |
дизъюнкция | тип суммы |
истинная формула | тип блока |
ложная формула | нижний тип |
На уровне систем доказательств и моделей вычислений соответствие в основном показывает идентичность структуры, во-первых, между некоторыми частными формулировками систем, известных как гильбертовская система вывода и комбинаторная логика , и, во-вторых, между некоторыми частными формулировками известных систем. как естественная дедукция и лямбда-исчисление .
Логическая сторона | Сторона программирования |
---|---|
Система вывода в стиле Гильберта | система типов для комбинаторной логики |
естественная дедукция | система типов для лямбда-исчисления |
Между системой естественного вывода и лямбда-исчислением существуют следующие соответствия:
Логическая сторона | Сторона программирования |
---|---|
гипотезы | свободные переменные |
устранение импликации ( modus ponens ) | применение |
введение импликации | абстракция |
Вначале это было простое замечание в книге Карри и Фейса по комбинаторной логике 1958 года: простейшие типы базовых комбинаторов K и S комбинаторной логики удивительно соответствовали соответствующим схемам аксиом α → ( β → α ) и ( α → ( β → γ )) → (( α → β ) → ( α → γ )) используется в системах вывода в гильбертовом стиле . По этой причине эти схемы теперь часто называют аксиомами K и S. Примеры программ, рассматриваемых как доказательства в логике в стиле Гильберта, приведены ниже .
Если ограничиться импликационным интуиционистским фрагментом, простой способ формализовать логику в стиле Гильберта состоит в следующем. Пусть Г — конечный набор формул, рассматриваемых как гипотезы. Тогда δ выводится из Γ, обозначая Γ ⊢ δ, в следующих случаях:
Это можно формализовать с помощью правил вывода , как в левом столбце следующей таблицы.
Типизированная комбинаторная логика может быть сформулирована с использованием аналогичного синтаксиса: пусть Γ будет конечным набором переменных, аннотированных их типами. Терм T (также аннотированный своим типом) будет зависеть от этих переменных [Γ ⊢ T: δ ], когда:
Определенные здесь правила генерации приведены в правой колонке ниже. В замечании Карри просто говорится, что оба столбца находятся во взаимно однозначном соответствии. Ограничение соответствия интуиционистской логикой означает, что некоторые классические тавтологии , такие как закон Пирса (( α → β ) → α ) → α , исключаются из соответствия.
Интуиционистская импликационная логика в стиле Гильберта | Просто типизированная комбинаторная логика |
---|---|
На более абстрактном уровне соответствие можно переформулировать, как показано в следующей таблице. В частности, теорема дедукции, характерная для логики в стиле Гильберта, соответствует процессу устранения абстракции комбинаторной логики.
Логическая сторона | Сторона программирования |
---|---|
предположение | Переменная |
аксиомы | комбинаторы |
модус поненс | применение |
теорема дедукции | устранение абстракции |
Благодаря соответствию результаты из комбинаторной логики могут быть перенесены в логику в стиле Гильберта и наоборот. Например, понятие редукции терминов в комбинаторной логике может быть перенесено в логику в стиле Гильберта, и оно обеспечивает способ канонического преобразования доказательств в другие доказательства одного и того же утверждения. Можно также перенести понятие нормальных термов на понятие нормальных доказательств, выразив, что гипотезы аксиом никогда не должны быть полностью обособленными (поскольку в противном случае может произойти упрощение).
И наоборот, недоказуемость в интуиционистской логике закона Пирса может быть перенесена обратно в комбинаторную логику: в комбинаторной логике нет типизированного терма, типизированного с типом
Также могут быть перенесены результаты о полноте некоторых наборов комбинаторов или аксиом. Например, тот факт, что комбинатор X составляет одноточечный базис (экстенсиональной) комбинаторной логики, подразумевает, что схема единой аксиомы
которая является основным типом X , является адекватной заменой комбинации схем аксиом
После того , как Карри подчеркнул синтаксическое соответствие между дедукцией в стиле Гильберта и комбинаторной логикой , Ховард в 1969 году сделал явной синтаксическую аналогию между программами просто типизированного лямбда-исчисления и доказательствами естественной дедукции . Ниже левая часть формализует интуиционистскую импликативную естественную дедукцию как исчисление секвенций (использование секвенций стандартно при обсуждении изоморфизма Карри–Ховарда, поскольку позволяет более четко сформулировать правила дедукции) с неявным ослаблением и правым Сторона -hand показывает правила ввода лямбда-исчисления . В левой части Γ, Γ 1и Γ 2 обозначают упорядоченные последовательности формул, а в правой части — последовательности именованных (т. е. типизированных) формул с разными именами.
Интуиционистская импликация естественная дедукция | Правила назначения типа лямбда-исчисления |
---|---|
Перефразируя соответствие, доказательство Γ ⊢ α означает наличие программы, которая по заданным значениям типов, перечисленных в Γ, производит объект типа α . Аксиома соответствует введению новой переменной нового неограниченного типа, правило → I соответствует абстракции функции, а правило → E соответствует применению функции. Заметим, что соответствие не является точным, если в качестве контекста Γ взять множество формул, таких как, например, λ-термы λ x .λ y . х и λ х .λ y . y типа α → α →α не будет выделен в соответствии. Примеры приведены ниже .
Ховард показал, что соответствие распространяется на другие связки логики и другие конструкции просто типизированного лямбда-исчисления. На абстрактном уровне соответствие можно резюмировать, как показано в следующей таблице. В частности, это также показывает, что понятие нормальных форм в лямбда-исчислении соответствует понятию Правитца о нормальном выводе в естественном выводе , из которого следует, что алгоритмы для задачи обитания типа могут быть превращены в алгоритмы решения интуиционистской доказуемости.
Логическая сторона | Сторона программирования |
---|---|
аксиома | Переменная |
правило введения | конструктор |
правило исключения | деструктор |
нормальная дедукция | нормальная форма |
нормализация отчислений | слабая нормализация |
доказуемость | тип проблемы проживания |
интуиционистская тавтология | жилой тип |
Соответствие Ховарда естественным образом распространяется на другие расширения естественной дедукции и просто типизированное лямбда-исчисление . Вот неполный список:
Во времена Карри, а также во времена Ховарда соответствие доказательств как программ касалось только интуиционистской логики , т. е. логики, в которой, в частности, не выводился закон Пирса . Расширение соответствия закону Пирса и, следовательно, классической логике стало ясно из работы Гриффина над операторами типизации, которые фиксируют контекст оценки выполнения данной программы, чтобы этот контекст оценки можно было позже переустановить. Основное соответствие в стиле Карри – Ховарда для классической логики приведено ниже. Обратите внимание на соответствие между переводом с двойным отрицанием , используемым для сопоставления классических доказательств с интуиционистской логикой, и стилем передачи продолжения .перевод, используемый для сопоставления лямбда-терминов, включающих управление, с чистыми лямбда-терминами. В частности, переводы в стиле передачи продолжения по имени относятся к колмогоровскому переводу с двойным отрицанием, а переводы в стиле передачи продолжения по значению относятся к своего рода переводу с двойным отрицанием, принадлежащему Куроде.
Логическая сторона | Сторона программирования |
---|---|
Закон Пирса : (( α → β ) → α ) → α | вызов с текущим продолжением |
перевод с двойным отрицанием | перевод в стиле продолжения-перехода |
Для классической логики существует более точное соответствие Карри-Ховарда, если классическую логику определить не путем добавления аксиомы, такой как закон Пирса , а путем разрешения нескольких выводов в последовательностях. В случае классической естественной дедукции существует соответствие доказательств как программ типизированным программам λµ -исчисления Париго .
Соответствие доказательства как программы может быть установлено для формализма, известного как исчисление последовательностей Генцена , но это не соответствие с четко определенной ранее существовавшей моделью вычислений, как это было для гильбертовского стиля и естественных выводов.
Исчисление секвенций характеризуется наличием правил введения слева, правила введения справа и правила разреза, которое можно исключить. Структура исчисления секвенций относится к исчислению, структура которого близка к структуре некоторых абстрактных машин . Неофициальная переписка выглядит следующим образом:
Логическая сторона | Сторона программирования |
---|---|
устранение сокращения | редукция в виде абстрактной машины |
правильные правила знакомства | конструкторы кода |
левые правила знакомства | конструкторы оценочных стеков |
приоритет правой стороны при устранении разрезов | сокращение числа обращений по имени |
приоритет левой стороны при исключении разрезов | сокращение вызовов по значению |
NG de Bruijn использовал лямбда-нотацию для представления доказательств автомата проверки теорем и представлял предложения как «категории» их доказательств. Это было в конце 1960-х, в то же время, когда Ховард написал свою рукопись; де Брюйн, вероятно, не знал о работе Ховарда и независимо изложил переписку (Sørensen & Urzyczyn [1998] 2006, стр. 98–99). Некоторые исследователи склонны использовать термин «соответствие Карри-Ховарда-де Брейна» вместо соответствия Карри-Ховарда.
Интерпретация BHK интерпретирует интуиционистские доказательства как функции, но не определяет класс функций, релевантных для интерпретации. Если принять лямбда-исчисление за этот класс функций, то интерпретация БНК говорит о том же, что и соответствие Говарда между естественной дедукцией и лямбда-исчислением.
Рекурсивная реализуемость Клини разделяет доказательства интуиционистской арифметики на пару рекурсивной функции и доказательства формулы, выражающей, что рекурсивная функция «реализует», т. е. правильно конкретизирует дизъюнкции и кванторы существования исходной формулы, так что формула принимает вид истинный.
Модифицированная реализуемость Крайзеля применима к интуиционистской логике предикатов высшего порядка и показывает, что просто типизированный лямбда-член , индуктивно извлеченный из доказательства, реализует исходную формулу. В случае пропозициональной логики это совпадает с утверждением Ховарда: извлеченный лямбда-терм является самим доказательством (рассматриваемым как нетипизированный лямбда-терм), а утверждение о реализуемости является парафразом того факта, что извлеченный лямбда-терм имеет тип, который формула означает (рассматривается как тип).
Интерпретация диалектики Гёделя реализует (расширение) интуиционистскую арифметику с вычислимыми функциями . Связь с лямбда-исчислением неясна даже в случае естественного вывода.
Иоахим Ламбек показал в начале 1970-х годов, что доказательства интуиционистской логики высказываний и комбинаторы типизированной комбинаторной логики имеют общую эквациональную теорию, которая является теорией декартовых замкнутых категорий .. Выражение соответствия Карри-Ховарда-Ламбека теперь используется некоторыми людьми для обозначения трехстороннего изоморфизма между интуиционистской логикой, типизированным лямбда-исчислением и декартовскими замкнутыми категориями, при этом объекты интерпретируются как типы или предложения, а морфизмы - как термины или доказательства. Соответствие работает на эквациональном уровне и не является выражением синтаксической идентичности структур, как это имеет место для каждого из соответствий Карри и Ховарда: т. е. структура четко определенного морфизма в декартово-замкнутой категории не сравнима с структура доказательства соответствующего суждения либо в логике в стиле Гильберта, либо в естественной дедукции. Чтобы прояснить это различие, основная синтаксическая структура картезианских закрытых категорий перефразируется ниже.
Объекты (типы) определяются
Морфизмы (термы) определяются
Четко определенные морфизмы (типизированные термины) определяются следующими правилами типизации (в которых обычное обозначение категорического морфизма заменено обозначением секвенциального исчисления ).
Личность:
Сочинение:
Тип объекта ( конечный объект ):
Декартово произведение:
Левая и правая проекция:
Каррирование :
Применение :
Наконец, уравнения категории
Из этих уравнений следуют следующие -законы:
Теперь существует t такое, что тогда и только тогда доказуемо в импликационной интуиционистской логике.
Благодаря соответствию Карри-Ховарда типизированное выражение, тип которого соответствует логической формуле, аналогично доказательству этой формулы. Вот примеры.
В качестве примера рассмотрим доказательство теоремы α → α . В лямбда-исчислении это тип тождественной функции I = λ x . x , а в комбинаторной логике функция тождества получается применением S = λ fgx . fx ( gx ) дважды до K знак равно λ xy . х . То есть 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) : α ——————————————————————————————————— a:β → α, b:γ → β ⊢ λ g. а (бг) : γ → α —————————————————————————————————————— а:β → α ⊢ λ б. λ г. a (bg) : (γ → β) -> γ → α ——————————————————————————————————— ⊢ λ а. λ б. λ г. a (bg) : (β → α) -> (γ → β) -> γ → α
Недавно изоморфизм был предложен как способ определения разделения пространства поиска в генетическом программировании . [9] Метод индексирует наборы генотипов (программные деревья, созданные системой GP) по их изоморфному доказательству Карри-Ховарда (называемому видом).
Как отмечает директор по исследованиям INRIA Бернард Ланг, [10] переписка Карри-Ховарда представляет собой аргумент против патентоспособности программного обеспечения: поскольку алгоритмы являются математическими доказательствами, патентоспособность первого будет подразумевать патентоспособность второго. Теорема может быть частной собственностью; математику пришлось бы платить за его использование и доверять компании, которая его продает, но держит свои доказательства в секрете и не несет ответственности за любые ошибки.
Перечисленные здесь соответствия идут намного дальше и глубже. Например, декартовы замкнутые категории обобщаются замкнутыми моноидальными категориями . Внутренним языком этих категорий является система линейных типов (соответствующая линейной логике ), которая обобщает просто типизированное лямбда-исчисление как внутренний язык декартовых замкнутых категорий. Более того, можно показать, что они соответствуют кобордизмам [11] , которые играют жизненно важную роль в теории струн .
Расширенный набор эквивалентностей также исследуется в теории гомотопических типов , которая стала очень активной областью исследований примерно в 2013 году и по состоянию на 2018 год [update]остается таковой. [12] Здесь теория типов расширяется аксиомой однолистности («эквивалентность эквивалентна равенству»), которая позволяет использовать гомотопическую теорию типов в качестве основы для всей математики (включая теорию множеств и классическую логику, предоставляя новые способы обсуждения аксиома выбора и многое другое). То есть соответствие Карри–Ховарда о том, что доказательства являются элементами обитаемых типов, обобщается на понятие гомотопической эквивалентности доказательств (как путей в пространстве,тождественный тип или тип равенства теории типов, интерпретируемый как путь). [13]
Эта статья включает в себя список общих ссылок , но он остается в значительной степени непроверенным, поскольку в нем недостаточно соответствующих встроенных ссылок . ( апрель 2010 г. ) |
{{cite book}}
: CS1 maint: постскриптум ( ссылка )В Wikibook Haskell есть страница на тему: Изоморфизм Карри – Ховарда. |