рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Ламбда - исчисление

Ламбда - исчисление - раздел Философия, Глава 1. Основы теории множеств Значение Ламбда-Исчисления  ...

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

 

Ламбда-исчисление было изобретено Алонсом Чёрчем около 1930 г. Чёрч первоначально строил l-исчисление как часть общей системы функций, которая должна стать основанием математики. Но из-за найденных парадоксов эта система оказалась противоречивой. Книга Чёрча [2] содержит непротиворечивую подтеорию его первоначальной системы, имеющую дело только с функциональной частью. Эта теория и есть l-исчисление.

Ламбда-исчисление - это безтиповая теория, рассматривающая функции как правила, а не как графики. В противоположность подходу (вводимому функции как множество пар, состоящих из аргумента и значения) более старое понятие определяет функцию как процесс перехода от аргумента к значению. С первой точки зрения x2-4 и (x+2)(x-2) - разные обозначения одной и той же функции; со второй точки зрения это разные функции.

Функции как правила рассматриваются в полной общности. Например, мы можем считать, что функции заданы определениями на обычном русском языке и применяются к аргументам также описанным по-русски. Также мы можем рассматривать функции заданными программами и применяемые к другим программам. В обоих случаях перед нами безтиповая структура, где объекты изучения являются одновременно и функциями и аргументами. Это отправная точка безтипового l-исчисления. В частности, функция может применяться к самой себе.

Ламбда-исчисление представляет класс (частичных) функций (l-определимые функции), который в точности характеризует неформальное понятие эффективной вычислимости. Другими словами, l-исчисления, наряду с другими подходами формализует понятие алгоритма [7, с. 143-146].

Ламбда-исчисление стало объектом особенно пристального внимания в информатике после того, как выяснилось, что оно представляет собой удобную теоретическую модель современного функционального программирования [32].

Большинство функциональных языков программирования, например, Лисп, используют l-исчисление в качестве промежуточного кода, в который можно транслировать исходную программу. Функциональные языки "улучшают" нотацию l-исчисления в прагматическом смысле, но при этом, в какой-то мере, теряется элегантность и простота последнего.

Изучение и понимание многих сложных ситуаций в программировании, например, таких, как автоаппликативность (самоприменимость) или авторепликативность (самовоспроизводство), сильно облегчается, если уже имеется опыт работы в l-исчислении, где выделены в чистом виде основные идеи и трудности.

 

Ламбда-выражения и их вычисление

Что значит "функция 5x3+2"? Если кто-то хочет быть точным, он вводит по этому поводу функциональный символ, например f, и говорит: "функция f : Ñ à Ñ, определенная соотношением f(x) = 5x3+2". При этом очевидно, что переменную x можно здесь, не меняя смысла, заменить на другую переменную y. Ламбда-запись устраняет произвольность в выборе f в качестве функционального символа. Она предлагает вместо f выражение "lx. 5x3+2".

Кроме того, обычная запись f(x) может обозначать как имя функции f, так и вызов функции с аргументом x. Для более строгого подхода это необходимо различать. В ламбда-обозначениях вызов функции с аргументом x выглядит как (lx. 5x3+2)x.

Русский математик Шейфинкель заметил, что не обязательно вводить функции более чем одной переменной [3]. Действительно, для функции, скажем от двух переменных, f(x,y) мы можем рассмотреть функцию gx с соотношением gx (y) = f(x,y), а затем f' с соотношением f'(x) = gx. Отсюда (f'(x))(y) = f(x,y). Позднее Карри [1] переоткрыл это свойство и поэтому сейчас сведение функций с несколькими переменными только к функциям одного переменного носит название карринг.

Ламбда-исчисление изучает функции и их аппликативное поведение (т. е. поведение относительно применения к аргументу). Поэтому применение (аппликация) функции к аргументу является исходной операцией l-исчисления. Функция f, примененная к аргументу a, обозначается через f a. Поэтому записи функции в виде lx . x^2+3 соответствует правило:

для любого a (lx . x^2 +3) (a) = a^2+3.

Выражение x + 2y можно считать как функцию от x (записывается lx.x+2y ) и как функцию от y (записывается ly. x +2y). Вызов (lx. x +2y )a приводит к значению a+2y, а вызов (ly. x +2y )a - к значению x+2a.

Запись ly.lx.E понимается как ly.(lx. E). Поэтому ((ly.lx. x+2y) a) b ® (lx. x+2a) b ® b+2a и ((lx.ly. x+2y) a) b ® (ly. a+2y) b ® a+2b.

Мы читаем символ l как “функция от” и точку (.) как “которая возвращает”.

Определение l-термов (l-выражений)

· Каждая переменная есть l-терм.

· Каждая константа есть l-терм.

· По любым l-термам M и N можно построить новый l-терм (MN) (обозначающий применение, или аппликацию, оператора M к аргументу N).

По любой переменной x и любому l-терму M можно построить новый l-терм (lx.M) (обозначающий функцию от x, определяемую l-термом M). Такая конструкция называется l-абстракция.

Набор констант произволен: целые числа, булевы константы, арифметические операции, булевы функции и т. п., причем для записи применения константы-оператора к операндам используется префиксная запись (так + 3 4 обозначает 3+4).

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

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

1. Переменная x оказывается свободной в выражении x.

2. Все x, имеющиеся в lx.M, являются связанными. Если кроме x в lx.M есть переменная y, то последняя будет свободной или связанной в зависимости от того, свободно она или связанна в M.

3. Переменная встречающаяся в термах M или N выражения (MN) будет связанной или свободной в общем терме в зависимости от того, свободна она или связанна в M или N. Свободные (связанные) переменные - это переменные, которые, по крайней мере, один раз появляются в терме в свободном (связанном) виде.

Мы отождествляем термы, отличающиеся только названием своих связанных переменных, например lx.x º ly.y.

Тело абстракции может быть любым допустимым l-выражением, и поэтому оно также может содержать другую абстракцию, например:

lx . ly . (x+y)*2

Это выражение читается как “функция от x, которая возвращает функцию от y, которая возвращает (x+y)*2”.

Используется соглашение: запись (...(((lx1.lx2....lxn.E)a1)a2)...an) кратко пишется как (lx1.lx2. ... lxn.E)a1a2 ...an.

Нам понадобится следующее определение подстановки. Для любых l-термов M, N и переменной x через [N/x]M обозначим результат подстановки N вместо каждого свободного вхождения x в M и замены всех ly в M таким образом, чтобы свободные переменные из N не стали связанными в [N/x]M. Более формально (мы употребляем запись M º N для обозначения того, что термы M и N совпадают):

а) [N/x]x º N;

b) [N/x]y º y, если переменная y не совпадает с x;

c) [N/x](PQ) º ([N/x]P [N/x]Q);

d) [N/x](lx.P) º lx.P;

e) [N/x](ly.P) º ly.[N/x]P, если y не имеет свободных вхождений в N и x имеет свободное вхождение в P;

f) [N/x](ly.P) º lz.[N/x]([z/y]P), если y имеет свободное вхождение в N и x имеет свободное вхождение в P и z - любая переменная, не имеющая свободных вхождений в N;

g) [N/x]t º t, если t является константой.

Следующие примеры пояснят суть определения. Пусть Mºly.yx.

Если N º vx, то [(vx)/x](ly.yx) º ly. [(vx)/x](yx) согласно (e)

º ly. y(vx) согласно (a).

Если N º yx, то [(yx)/x](ly.yx) º lz. [(yx)/x](zx) согласно (f)

º lz.z(yx) согласно (a).

Если бы пункт (f) в определении был опущен, то мы столкнулись бы со следующим нежелательным явлением. Хотя lv.x и ly.x обозначают одну и ту же функцию (константу, чье значение всегда есть x), после подстановки v вместо x они стали бы обозначать разные функции: [v/x](ly.x) º ly.v, [v/x](lv.x) º lv.v.

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

Константы являются самоопределенными,т. е. их невозможно преобразовать в более простые выражения. Если константа, обозначающая функцию (оператор), применяется к соответствующему числу операндов, то такой подтерм называется d-редексом, процесс применения функции называется d-сворачиванием, и в результате появляется новое ламбда-выражение.

Применение константной функции записывается в виде встроенных соответствующих d-правил , например

+ 1 3 ®d 4

Терм вида (lx.M)N называется b-редексом. (Он также обозначает применение оператора к входному значению.) Если b-редекс содержится в терме P и одно из его вхождений заменяется термом [N/x]M, то мы будем говорить, что происходит свертывание этого вхождение. Обозначение P®b Q означает, что P b-сворачивается к Q. Конечная последовательность d- или b-свертываний называется редукцией. Если из контекста ясно, было ли d-свертывание или же b-свертывание, то один шаг редукции обозначается просто знаком ® без индекса.

Пример 6.1. Редукция выражений (используемые редексы подчеркнуты):

1) (lf.lx.f 3x) (ly.lx.* x y) 0

® (lx.(ly.lx .*xy)3x) 0 - выбрали один из двух возможных редексов

® (ly.lx.*xy)3 0

® (lx.*x3)0

® *03

® 0

2) (lf.lx.f3x) (ly.lx.*xy) 0

® (lx. (ly.lx.*xy)3 x) 0 - выбрали один из двух возможных редексов

® (lx.(lx.*x3)x )0 - снова делаем произвольный выбор

® (lx.*x3)0

® *03

® 0

Использование констант и d-правил является излишним. Все необходимые константы (числа, встроенные функции и т. п.) можно реализовать, используя в качестве атомарных термов только переменные (так называемое чистое l-исчисление).

Нормальные формы

Говорят, что l-выражение находится в нормальной форме, если к нему нельзя применить никакое правило редукции. Другими словами, l-выражение - в нормальной форме, если оно не содержит редексов. Нормальная форма, таким образом, соответствует понятию конца вычислений в традиционном программировании. Отсюда немедленно вытекает наивная схема вычислений:

while существует хотя бы один редекс

do преобразовывать один из редексов

end
(выражение теперь в нормальной форме).

Различные варианты сворачивания в процессе редукции могут приводить к принципиально различным последствиям.

 

– Конец работы –

Эта тема принадлежит разделу:

Глава 1. Основы теории множеств

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Ламбда - исчисление

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Начальные понятия теории множеств
  Понятие множества является основным, неопределяемым понятием, поэтому мы можем его только пояснить, например, с помощью следующего псевдоопределения. Определение:

Интуитивный принцип объемности
Определение. Множества Aи B считаются равными, если они состоят из одних и тех же элементов. Записывают A=B, если A и B равны, и A

Отношения
Определение. Упорядоченная пара <x, y> интуитивно определяется как совокупность, состоящая из двух элементов x и y, расположенных в определенном порядке. Две пары <

Функции
Определим понятие "функция", следуя Дирихле. По сути дела при таком определении мы отождествляем функци

Эквивалентность
  Одним из самых важных типов отношений является отношение эквивалентности на множестве. Определение. Рефлексивное, симметричное и транзитивное отношение r н

Зачем мы изучаем математическую логику?
  Логика есть наука о законах и формах познающего мышления. Логика изучает мышление, но не всякое мышление, а лишь те мыслительные процессы, которые направлены на обнаружение и обосно

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

Логические связки
  Грамматическими средствами в разговорном языке из нескольких высказываний можно составить сложное (составное) высказывание. Например, с помощью союзов "и", "или"

Формулы логики высказываний
  Мы определим формальный язык для описания логики высказываний. Это описание чисто синтаксическое и оно не требует, чтобы формулы логики высказывания имели какую-то семантику (смысл)

Равносильность формул
  Пусть A и B - две формулы и {X1, X2,…, Xn} - множество всех выск

Определение.
· Формула называется выполнимой, если на некотором наборе распределения истинностных значений переменных она принимает значение И. · Формула называется тождественно-ложной ил

Нормальные формы формул
  Содержание этого параграфа изложим, следуя [24]. Будем рассматривать формулы, содержащие только логические операции &, Ú, Ø. Символы & и Ú назы

Разрешимость для логики высказываний
  Проблемой разрешимости для логики высказываний называют следующую проблему: существует ли алгоритм, который позволил бы для произвольной формулы в конечное число шагов определить, я

Абстрактное определение булевых алгебр
  Определение.Множество элементов B с заданным на нем двуместными операциями &Ugra

Модель исчисления высказываний
Пусть B - множество высказываний с обычными логическими операциями конъюнкции, дизъюнкции и отрицания и равенство высказываний интерпретируется как их равносильность. Во второй главе показ

Булевы функции. Теорема о нормальной булевой форме
  Рассмотрим еще одну модель булевой алгебры. Определение. Пусть M - произвольная булева алгебра с базисными операциями Ù, Ú, Ø. Рассмот

Определение.
Если булева алгебра M - двухэлементна (т. е. содержит только Ë и Î), то булевы функции называются двоичными функциями. Если в двухэлементной булевой алгебре элементы &Eum

Полные системы булевых функций
  Определение.Система функций {f1, f2,…, fn} называется полной, если любая булева функция может быть выражена через функции f

Переключательные элементы
Пусть имеется "черный ящик" - некоторое устройство, внутренняя структура которого нас не интересует, а известно лишь, что оно имеет n упорядоченных "входов" (например, занумеров

Формулы логики предикатов
  Существуют такие виды логических рассуждений, которые нельзя формализовать на языке логики высказываний. Вот примеры таких рассуждений: 1. Каждый любит сам себя. Значит, ко

Интерпретации
  Формулы имеют смысл только тогда, когда имеется какая-нибудь интерпретация входящих в нее символов. Определение. Под интерпретацией мы будем понимат

Выполнимость и общезначимость
Определение.Формула A выполнима в данной интерпретации, если существует такой набор <a1, a2,…, an>, aiÎM, значений св

Формальные аксиоматические теории
Формальная теория представляет собой множество чисто абстрактных объектов (не связанных с внешним миром), в которой представлены

Исчисление высказываний
  Оказывается множество тавтологий логики высказываний можно описать в рамках простой формальной аксиоматической теории - исчисления высказываний. Определим исчисление высказ

Теорема 5.2
1. Любая аксиома в исчислении высказываний является тавтологией. 2. Любая теорема в исчислении высказываний является тавтологией. Доказательство. То, что каждая аксиома A1-A3 явля

Исчисление предикатов
  Исчисление предикатов - это аксиоматическая теория, символами которой являются, по существу, те же символы, что и в логике предикатов: 1) символы предметных переменных: x

Теорема 5.4
1. Аксиомы исчисления предикатов - общезначимые формулы. 2. Формула, получающаяся из общезначимых формулы по любому из правил вывода 1-4, является общезначимой. 3. Любая доказуема

Логический вывод
  Терпеть не могу логики. Она всегда банальна и нередко убедительна. Оскар Уайльд   Формальная математика основывается на аксиоматическом методе. Внача

Метод резолюций
  Логическое программирование является, пожалуй, наиболее впечатляющим примером применения идей и методов математической логики (точнее, одного из ее разделов - теории логического выв

Неполнота математики
  Таким образом, показано, что класс всех теорем исчисления предикатов совпадает с классом общезначимых формул. На этом примере мы видим силу формального аксиоматического метода. Но н

Понятие алгоритма и неформальная вычислимость
  В этом разделе будет уточнено понятие алгоритма. Кроме того, будут даны строгие математические понятия, которые формализуют представление о том, что некоторые функции поддаются вычи

Определения
Этот подход к формализации понятия алгоритма принадлежит Гёделю и Клини (1936). Основная идея Гёделя сос

Машины Тьюринга
  Рассмотрим еще один способ определения вычислимых функций, следуя в изложении [29, стр. 12-14]. Ф

Тезис Чёрча
  За последние 60 лет было предложено много различных математических уточнений интуитивного понятия алгоритма. Три из этих подхода мы разобрали. Перечислим некоторые другие альтернати

Некоторые алгоритмически неразрешимые проблемы
  Определение. Предикат M(x) называется разрешимым, если его характеристическая функция, задаваемая формулой cM(x

Сложность алгоритмов
  Применение математики во многих приложениях, требует как правило, использования различных алгоритмов. Для решения многих задач не трудно придумать комбинаторные алгоритмы, сводящиес

NP-трудные и NP-полные задачи
  Различные задачи, относящие к классу NP являются эквивалентными относительно некоторого отношения, которое мы сейчас определим. Определение. Задача Q по

Трехзначная система Я. Лукасевича
Эта пропозиционная логика была построена Я. Лукасевичем в 1920 году [34]. Лукасевич обозначил «истину» за «1», «ложь» за «0» и ввел третье значение – «нейтрально» - ½. Основными функциями им

Логика Гейтинга
  Из закона исключенного терьего в двузначной логике выводятся: 1. ØØх É х 2. х É ØØх Гейтинг создал трехзначную пропозицио

Трехзначная система Бочвара Д.А.
  Система создавалась Бочваром Д.А. [36] для разрешения парадоксов классической математической логики методом формального доказательства бессмысленности определенных высказываний. Нап

К - значная логика Поста Е.Л.
  Логика Поста [37] является обобщением частного случая – двузначной логики, когда К=2. Действительно, по Посту значения истинности принимают значения 1, 2,…,К (при К ³ 2 и К – к

Цели и задачи дисициплины
Цели преподавания дисциплины является ознакомление студентов с основами математической логики, теории алгоритмов с методами оценки сложности алгоритмов и построения эффективных алгоритмов.

Наименование тем
  Введение   История развития математической логики и теории алгоритмов. Математическая логика и основания математики. Теория алгоритмов и принципиальные возмож

КОНТРОЛЬНАЯ № 2
Вариант 1   1. Записать составные высказывания в виде формул, употребляя высказывательные переменные для обозначения простых высказываний: "Для того, чтобы x бы

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги