Почему работа Шёнфинкеля по устранению «связанных переменных» в логике так важна?


15

AFAIK, Первое доказательство использования функций высшего порядка восходит к статье Шенфинкеля 1924 года: «О строительных блоках математической логики», где он позволил передавать функции в качестве аргументов другим функциям.

Это кажется интересным. Тем не менее, все, что я читал о его работе (и о расширении Карри), похоже, намекает на одну вещь в той или иной форме: [функции более высокого порядка] ... это устраняет необходимость в связанных переменных ...

То, что я не смог обернуть вокруг себя, - что в этом такого? Почему логики и математики того времени заботятся об этом? И заботимся ли мы как теоретики об этом сегодня? Почему это было «новаторским» способом избавиться от связанных переменных и какое влияние это оказало (или оказывает) на вычисления (теоретически), какими мы их знаем?

PS: я знаю о том, как его работа проложила путь к -calculus и влиянию "it" на вычисления и функциональное программирование в целом. Мой вопрос в основном касается времени «до» создания -calculus и «после» статьи Шенфинкеля. Тот факт, что карри независимо подобрал эту линию работы, которая позже была известна как «комбинаторная логика», также намекает на важность работы Шенфинкеля.λλ


2
Бумага Шенфинкеля может быть найдена здесь .
Мартин Бергер

Ответы:


17

TL; DR. Метаматематика связывания является тонкой : они кажутся тривиальными, но это не так - независимо от того, имеете ли вы дело с (более высокого порядка) логикой или 𝜆-исчислением. Они настолько тонки, что связывающие представления образуют открытую область исследований с конкуренцией ( проблема POPLmark ) несколько лет назад. В этой области люди даже шутят о сложности подходов к связыванию.

Так что, если вы заботитесь о метаматематике (а большинство математиков не заботятся), вам нужно разобраться с связыванием. Но многие математики могут спокойно относиться к формализации связывания, как если бы это была «фундаментальная» проблема.

Другое дело, что связывание было единственной «новой» проблемой в языках с функциями более высокого порядка, потому что теория языков со связыванием - это просто алгебра (для констант) + связывание. «Основы языков программирования» Митчелла на самом деле представляют вещи в таком порядке и довольно поучительно.

Мне известно о том, как его работа проложила путь для λ-исчисления и как влияет «оно» на вычисления и функциональное программирование в целом. Мой вопрос в основном касается времени «до» создания λ-исчисления и «после» статьи Шенфинкеля.

Должно быть, я что-то упустил, но это замечание, похоже, не имеет значения. Связывание в логике высшего порядка и связывание в λ-исчислении кажутся такими же трудными, поэтому, пока люди заботятся о логике высшего порядка, им приходится иметь дело с связыванием. Я смещен с помощью доказательств теоремы Карри-Говарда, основанных на изоморфизме, которые реализуют логику, просто реализуя теорию типов (где типы - это формулы, а программы - проверочные термины), так что я просто один раз имею дело с привязкой.

С другой стороны, IIRC, в то время действительно мало кто заботился о работе Шенфинкеля - отчасти из-за того, как он (не) публиковал ее - бумаги были в основном написаны коллегами на основе проведенного им исследования (см. Здесь , стр. 4) ; Затем Карри заново открыл теорию самостоятельно.

Предостережение: я не историк, а аспирант по PL, поэтому у меня современный (и, надеюсь, точный) взгляд на тему.

РЕДАКТИРОВАТЬ:

Почему привязка тонкая, немного конкретнее

У этого есть два аспекта - во-первых, реализовать это сложно. Во-вторых, метаматематика - это математика манипулирования доказательствами: эта манипуляция, как правило, автоматическая, то есть это алгоритм - так что, по сути, вы сталкиваетесь со всеми трудностями реализации, а также с доказательствами о них. Ниже я привожу примеры. Примеры имеют современную перспективу - они о фактически формализованных доказательствах. Тем не менее, некоторые трудности будут распространяться на точные ручные доказательства - если вы не обманываете детали.

Это показывает, что Шенфинкель просто дал первое решение этой проблемы, но это было далеко не окончательно.

Реализация это тонко из-за затенения

Основная проблема в реализации - это слежка. Обычно нельзя использовать одно и то же имя для разных связанных переменных. Но вы не можете избежать этого в лямбда-исчислении, хотя бы потому, что функции (и связанные с ними переменные) дублируются: сводится к . Это еще не проблема, но, начиная с вы и затем : теперь вам нужно разобраться с затенением. Вы можете избежать этого за счет усложнения правила бета-сокращения.(λf.f 1+f 2)(λx.x)(λИкс,Икс) 1+(λИкс,Икс) 2(λеИкс,е(еИкс)) (λграммY,грамм Y) Z( λ y . ( λ g y . g y ) y ) z(λграммY,грамм Y) (λграммY,грамм Y) Z(λY,(λграммY,грамм Y) Y)  Z

Если у вас есть разные переменные с одинаковым именем, вам также нужно предотвратить захват. Простейший пример захвата - это применение функции (вернуть первый аргумент) не должен давать (тождественная функция), но (постоянная функция).y λ y . y λ y . YλИксY,ИксYλY,YλY',Y

Хуже всего то, что контрпримеры к наивным алгоритмам сложно построить, когда вы уже знаете проблему, не говоря уже о том, когда вы этого не знаете. Ошибки в почти правильных алгоритмах часто остаются незамеченными годами. Я слышал, что даже хорошие студенты, как правило, не могут придумать (самостоятельно) правильное определение замены, избегающей захвата. На самом деле, аспиранты (включая меня) и профессора не освобождаются от этой проблемы.

Это одна из причин, почему некоторые (в том числе один из лучших учебников по языкам программирования « Типы и языки программирования » Бенджамина Пирса) рекомендуют безымянное представление (не совсем комбинаторную логику, хотя она и используется, а скорее индексы де Бруйина).

Доказательства об этом неуловимы

Оказывается, что доказательства привязки не проще, чем реализация, как упоминалось выше. Конечно, существуют правильные алгоритмы, и доказательства о них существуют - но без продвинутых механизмов, для каждого языка, использующего связывание, вам нужно повторять доказательства, и эти доказательства просто очень большие и раздражающие, если вы используете определения для связывания на ручке и бумаге. ,

В качестве примера алгоритмов , участвующих в метаматематике, рассмотрим теорему дедукции в логике, что позволяет сочиняет доказательство предполагающей и доказательство , чтобы получить доказательство . Для того, чтобы доказать , что теорема, вы на самом деле демонстрируют алгоритм , который работает на синтаксисе двух доказательств , участвующих и производит синтаксис для доказательства . Этот алгоритм должен иметь дело с привязкой.A A B BВAAВВ

Затем я посмотрел мой лучший пример того, «что пойдет не так, если вы попытаетесь формализовать стандартное определение». Рассел О'Коннор (который находится на этом сайте) формализовал первую теорему Гёделя о неполноте в Coq (доказатель теорем упомянутого выше типа) - и эта теорема включает логику (со всеми соответствующими алгоритмами) в другой логике (с синтаксисом первая логика закодирована как числа). Он использовал определения, которые используются на бумаге, и формализовал их напрямую. Ищите «подстановка» или «переменная» и подсчитывайте, как часто они появляются в связи с проблемами, чтобы получить впечатление. http://r6.ca/Goedel/goedel1.html

Я никогда не использую эти определения в своей работе, но у каждого альтернативного подхода есть свои недостатки.


Я смещена с помощью доказательства теорем Карри-Говарда-изоморфизма на основе, так что я просто иметь дело с обязательным после - Не могли бы вы уточнить , что вы имеете в виду?
PhD

3
Вы говорите, что это тонко, но никогда не говорите, что именно делает это так, и зачем заботиться об этом, если вы являетесь метаматетиком? Это перспектива, которую я ищу.
PhD

На ваш первый комментарий: я сделал явную связь с Карри-Говардом, но мне придется отослать вас к Википедии или другому вопросу. Я согласен с вашим вторым комментарием; Я разработаю для людей, незнакомых с лямбда-исчислением.
Blaisorblade

@PhD: Надеюсь, то, что я добавил, немного поможет, хотя и не заменяет хорошую лекцию по этому материалу (и, к сожалению, материал, который я перебрал, обычно распространяется среди множества других материалов, связанных с PPL).
Blaisorblade

1
Благодаря тонну! Это было действительно полезно. Эта ссылка также может вас заинтересовать: home.uchicago.edu/~wwtx/Varfreelogic_revised.pdf - логика первого порядка без связанных переменных.
PhD
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.