Введение в лямбда-исчисление — КиберПедия 

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Введение в лямбда-исчисление

2018-01-03 904
Введение в лямбда-исчисление 0.00 из 5.00 0 оценок
Заказать работу

 

В 1941 году в своей статье “исчисление функций” американский математик Алонсо Черч предложил достаточно простой формализм для описания частично рекурсивных функций[1], а также высказал знаменитый тезис Черча, одной из формулировок которого является следующая: любая функция, вычислимая интуитивно, эквивалентна некоторой частично рекурсивной функции. При этом следует понимать, что, несмотря на слово “интуитивно”, описание алгоритма должно быть однозначным и не должно требовать от исполняющего его домысливания этого алгоритма, под интуитивным вычислением понимается лишь представление о том, что алгоритм вычисления действительно существует. Существует также деление тезиса Черча на “слабую” и “ сильную” формулировки, последняя из которых утверждает априори эквивалентность всех определений вычислимости. Тезис Черча не был, да и не может быть доказан в виду нестрогой формулировки, однако с тех пор никому так и не удалось его опровергнуть.

Чистое лямбда-исчисление является формальной теорией, в которой существуют лишь три конструкции – переменные, определения и применения функций. В чистом лямбда-исчислении изучаются редукции, причём теория не содержит никаких дополнительных выражений, за исключением альфа и бета-редукций. Существует также лямбда-эта теория, где дополнительно рассматривается эта-редукция.

Лямбда-исчисление очень удобно для определения вычислимости. Например, Тьюринг показал, что вычислимость в терминах машины Тьюринга эквивалентна собственно возможности лямбда-описания системы. Клин доказал, что эта возможность описания также эквивалентна рекурсивности Гёделя-Гербрандта. Таким образом, если задача сформулирована с помощью лямбда-исчисления, то она имеет решение за конечное время[2].

 

Лямбда-исчисление оперирует следующими основными понятиями – лямбда-выражение, редукция и редекс. Лямбда-выражение – специального вида выражение, синтаксис которого с помощью формул Бэкуса-Наура можно записать так:

M::= x | (M1 M2) | (lx.M)

 

Где x – переменная, (M1 M2) – применение функции M1 к аргументу M2

(lx.M) – абстракция (определение функции с параметром x и телом M).

В качестве примера приведём лямбда-выражение (lx. x*x) 10. Данное выражение означает применение функции возведения в квадрат к числу 10. Такая формула называется термом. Результатом редукции этого терма, очевидно, явится число 100. В чистом лямбда-исчислении рассматриваются только переменные, абстракции и применения, оно не рассматривает никаких привязок к конкретным предметным областям. Поэтому приведённый пример (lx. x*x) 10 не может считаться чистым лямбда-термом, так как содержит в себе арифметические знаки. В прикладном лямбда-исчислении допустимы константы, которые могут быть не только числовыми, но также и именами объектов и функций. Когда говорят о лямбда-исчислении, обычно имеют в виду именно прикладное лямбда-исчисление.

 

Для лямбда-термов вводится понятие бета-эквивалентности. M =b N. Для приведённого выше примера можно сказать, что (lx. x*x) 10=b10*10. В более общем виде это записывается так:

 

(lx.M) N =bR

Упрощённо говоря, бета-эквивалентность означает, что левая и правая части выражения имеют одно и то же значение.

 

Одним из синтаксических соглашений лямбда-исчисления является то, что применение функции имеет более высокий приоритет, нежели абстракция, поэтому (lx.x y) должно рассматриваться как (lx.(x y)), т.е. определение функции x как применение x к переменной y. Также в лямбда-выражениях иногда раскрывают скобки, например, ((x y) z) можно представить как x y z, а (x (y z)) как x (y z). При отсутствии функций применения группируются слева направо. Также выражения, содержащие несколько вложенных абстракций могут быть преобразованы к одной абстракции, например, выражение lx. ly. lz.M, может быть записано как lxyz.M

 

Вхождение переменной x сразу за символом l в lx.M называется связывающим вхождением или просто связыванием x. Все вхождения x в (lx.M) называются связанными в области этого связывания. Все не связанные вхождения переменных в терм являются свободными. Каждое вхождение переменной может быть либо связанным, либо свободным (не может быть и тем и другим). Надо иметь в виду, что переменная является свободной в терме, если хотя бы в одном из подтермов она является свободной, например, (lx.y) (ly.y) переменная y является свободной.

 

Применение функции может рассматриваться как подстановка значения, к которому она применяется, во все вхождения аргумента в тело функции. Например, (lx.x+5*x*x) m может рассматриваться как m+m*m2. Подстановка терма. Подстановка терма N вместо переменной x в терме M записывается как

{N/x} M и определяется следующими правилами:

 

1. Если свободные переменные в N не имеют связанных вхождений в M, то терм {N/x}M получается заменой всех свободных вхождений x в M на N

2. Если же существует такая переменная y, которая свободна в N и связана в M, то все связанные вхождения y в M заменяются на некоторую новую переменную z. Так продолжается до тех пор, пока не станет возможным применение предыдущего правила

 

Можно привести следующие примеры подстановок:

 

{u/x} x = u {u/x} (x x) = (u u) {u/x} (x y) = (u y) {u/x} (x u) = (u u) {(lx.x)/x} x = (lx.x) {u/x} y = y {u/x} (y z) = (y z) {u/x} (ly.y) = (ly.y) {u/x} (lx.x) = (lx.x) {(lx.x)/x} y = y {u/x}(lu.x) = {u/x}(lz.x) = (lz.u) {u/x}(lu.u) = {u/x}(lz.z) = (lz.z)

 

Точное определение подстановки таково:

 

{N/x} x = N

{N/x} y = y y¹x

{N/x}(P Q) = {N/x} P {N/x} Q

{N/x}(lx.P) = lx.P

{N/x}(ly.P) = ly.{N/x}P y¹x, yÏfree(N)

{N/x}(ly.P) = lz.{N/x}{z/y}P y¹x, zÏfree(N) zÏfree(P)

где под free(X) понимается множество свободных переменных терма X.

 

В основе лямбда-исчисления лежат также две аксиомы – альфа и бета.

 

(lx.M) N =b {N/x}M (бета - аксиома)

(lx.M) =blz.{z/x}M (альфа - аксиома или аксиома переименования)

 

Бета-аксиома утверждает бета-эквивалентность исходного терма и терма, полученного в результате подстановки. Альфа-аксиома утверждает бета-эквивалентность исходного терма и терма, в котором некоторая переменная заменена на другую, не являющуюся свободной в исходном терме. Фактически, альфа-аксиома просто позволяет переименовать переменные некоторого терма для избежания, например, конфликта имён. На основе этих аксиом доказываются следующие свойства лямбда-термов:

 

M =bM Свойство идемпотентности
M =bN Þ N =bM Свойство коммутативности
M =bN, N =bP Þ M =bP Свойство транзистивности
A =bB, C =bD Þ A C =bB D Свойства конгруэнтности
M =bN Þ lx.M =blx.N

 

Считается, что подстановка приводит терм к более простому виду. Поэтому вместе с бета-эквивалентностью вводят понятие бета-редукции (lx.M) N Þb{N/x} M. Редексом называется применение абстракции к аргументу (lx.M) N.

С понятием редекса тесно связана теорема Черча-Россера. Если ~ - отношение, то пусть ~* означает его конечно-транзитивное замыкание. Пусть X à Y означает, что X редуцируется в Y. Обозначим X cnv Y <=> X à Y или Y à X. Тогда X cnv* Y => существует такое N, что X à* N и Y à* N

Следствием этой теоремы является ромбическое свойство. Оно гласит, что если выражение A может быть редуцировано либо к B, либо к C, то всегда существует такое выражение D, к которому могут быть редуцированы и B, и C.

Если к терму нельзя применить бета-редукцию, то говорят, что он находится в нормальной форме. Например, (lx.M) N – не в нормальной форме, а x или lx.x x – в нормальной форме. Некоторые термы нельзя свести к нормальной форме. В качестве примера можно привести терм (lx.x x) (lx.x x). Другие выражения в зависимости от стратегии вычисления могут давать или не давать результата, например, (ly.0)((lx.x x)(lx.x x)). Существует два основных метода получения нормальной формы - вызов по значению, когда сначала производится подстановка в самых внутренних редексах, и вызов по необходимости, когда сначала производится подстановка в самом внешнем редексе (слева). Если нормальная форма достижима, то она всегда может быть получена стратегией вызова по необходимости, однако вызов по значению обычно требует меньше редукций.


Поделиться с друзьями:

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.018 с.