Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КН Лекции 1-9

.pdf
Скачиваний:
16
Добавлен:
23.02.2015
Размер:
2.64 Mб
Скачать

Теорема 9. Следующие высказывания тождественно истинны:

1)

А А

(тавтология)

2)

(А В) (А & С В & С)

(монотонность конъюнкции)

3)

(А В) (А С В С)

(монотонность дизъюнкции)

4)А (В А)

5)И

6)А И&А

7)xi Р(х1, x2, …, xi , … xn) Р(х1, x2, …, xi , …, xn).

Первые 6 формул проверяются с помощью таблицы истинности; последняя формула – это следствие из теоремы 7.

Упражнение. Докажите тождественную истинность высказываний:

1)

(А В) & (B C) (A C)

 

(доказательная цепочка)

2)

(A B) & (A C) (A B&C)

(разбор случаев в заключении)

3)

(A C) & (B C) (A B C)

(разбор случаев в посылке)

4)

( A Л) (И А)

(доказательство от противного)

5)

(А В) (А&С В)

(введение конъюнкта)

Согласно теореме 5 в каждую из этих формул можно вместо высказываний подставить любые предикаты и у нас получится тождественно истинная формула. Такие формулы называют общезначимыми. Ведь их истинность, как мы видим, не зависит от того, какие объекты мы собираемся изучать. Заметим, что отождествление свободных переменных, специализация и связывание свободной переменной любым квантором также дает общезначимую формулу.

Определение. Пусть Ф – некоторое множество аксиом. Формула F называется выводимой из аксиом Ф, если существует такая последовательность формул F1, F2, …, Fn, для которой Fn совпадает с F, а каждая формула в цепочке является либо общезначимой формулой, либо аксиомой из Ф, либо получается из аксиомы отождествлением свободных переменных, их специализацией или связыванием квантором, либо получена из формулы с меньшим номером по правилу вывода.

Выводимость формулы F из Ф будем записывать Ф |– F.

Теорема 10.

а) Если Ф |– F и Ф |– G, то Ф |– F & G,

б) Если Ф |– F или Ф |– G, то Ф |– F G.

Доказательство.

а) Пусть F1, F2, …, Fn – вывод для F, а G1, G2, …, Gk – вывод для G. Строим последовательность F1, F2, …, Fn, G1, G2, …, Gk и дополняем общезначимыми

формулами

Fn (И Fn),

(И Fn) (И & Gk Fn & Gk),

Gk И & Gk.

Наконец, дополняем эту последовательность формулами

ИFn,

И& Gk Fn & Gk,

И& Gk, Fn & Gk,

Покажем, что это вывод. Нам достаточно убедится, что четыре последних формулы удовлетворяют определению выводимости. Первая из них получается применением правила вывода к паре Fn и Fn (И Fn),

вторая – к паре И Fn и (И Fn) (И & Gk Fn & Gk), третья – к паре Gk и Gk И & Gk,

четвертая – к паре И & Gk и И & Gk Fn & Gk.

Последняя формула в последовательности это и есть F & G. Пункт б) докажите самостоятельно.

Алгоритмический анализ. Лекция 3.

Логика предикатов

§ 8. Аксиоматический метод (продолжение)

Напомним основные определения.

Аксиомы – утверждения, истинность которых нам дается изначально и не требует доказательства.

Правило вывода или modus ponens (MP): если истинны F1 и F1 F2, тогда формула F2 тоже является истинной.

Определение. Пусть Ф – некоторое множество аксиом. Формула F называется выводимой из аксиом Ф, (записывается Ф |– F) если существует такая последовательность формул F1, F2, …, Fn, для которой Fn совпадает с F, а каждая формула в цепочке является либо общезначимой формулой, либо аксиомой из Ф, либо получается из аксиомы отождествлением свободных переменных, их специализацией или связыванием квантором, либо получена из формулы с меньшим номером по правилу вывода.

Пример.

 

Покажем, что {F G, G H} |– F H.

 

1)

(G H) → [F →(G H)]

общезначимая формула

2)

G H

гипотеза

3)

F →(G H)

MP(1, 2)

4)

[F → (G H)] → [(F G) → (F H)]

общезначимая формула

5)

(F G) → (F H)

MP(3, 4)

6)

F G

гипотеза

7)

F H

MP(5, 6)

Теорема 11 (теорема дедукции).

Пусть Ф – множество аксиом, F – формула. Для любой формулы G она выводима из Ф {F} тогда и только тогда, когда формула F G выводима из Ф.

т.е. Ф {F} |– G Ф |– F G

Доказательство:

Достаточность, т.е. утверждение, что если Ф |– F G, то Ф {F} |– G, очевидна. Докажем необходимость. Пусть

G1, G2, …, Gk, …, Gm = G −

(1)

вывод формулы G из множества формул Ф {F}. Требуется рассмотреть два варианта.

Вариант 1.

Если этот вывод не содержит формулы F, то это вывод из множества Ф.

Добавим в этом случае к (1) формулы G → (F → G) и F→ G. Первая из добавленных формул является аксиомой, вторая следует из непосредственно предшествующих формул по правилу MP. Расширенная двумя формулами последовательность (1) является выводом из Ф формулы F → G.

Вариант 2.

Будем считать, что (1) содержит формулу F. Преобразуем последовательность (1) следующим образом. К каждой из формул последовательности (1) в качестве посылки импликации добавим формулу F. Получим последовательность формул

F→G1, F→G2, …, F→Gk, …, F→Gm = F→G −

(2)

Последовательность (2) выводом из Ф, вообще говоря, не будет. Однако ее можно расширить до вывода из Ф. Для этого перед каждой из формул последовательности (2) запишем несколько формул. Какие из формул записывать перед формулой F→Gk зависит от «роли», которую формула Gk играет в выводе

(1). Относительно этой роли рассмотрим ряд случаев: Случай 1: Gk − аксиома или Gk принадлежит Ф.

Тогда непосредственно перед формулой F→Gk в последовательность (2) записываем формулы

1)Gk,

2)Gk → (F → Gk).

Первая – аксиома, вторая – общезначимая формула. Тогда формула F→Gk будет следовать из добавленных формул по правилу MP.

Случай 2: Gk = F.

В этом случае F → Gk = F → F имеем тавтологию.

Случай 3: Gk получается по правилу MP из формул Gi и Gm.

В этом случае одна из формул: или Gi, или Gm должна быть импликацией, посылкой которой является другая формула. Будем считать, что это формула Gm, т. е. Gm = Gi→Gk. Формулы Gi и Gm в последовательности (1) расположены раньше формулы Gk, поэтому в последовательности (2) формулы F→Gi и F→Gm уже «обоснованы». Для удобства изложения часть последовательности (2) изобразим в виде следующей схемы:

1)F → Gi,

2)F → (Gi → Gk),

3)[F → (Gi → Gk)] → [(F → Gi) → (F → Gk)],

4)(F → Gi) → (F → Gk),

5)F → Gk,

.

Здесь добавленные формулы обозначены как 3) и 4). Формула 3) является общезначимой формулой. Формула 4) следует из 2) и 3) по правилу MP. А формула 5) – следствие формул 1) и 4) по тому же правилу.

Случай 4: формула Gk получается из предыдущей формулы Gi по правилу обобщения. Это означает, что Gi = Gi(x) и Gk= ( y)Gi(y). Отметим, что переменная x не входит свободно в формулу F, так как F содержится в выводе (1).

Если формула F не содержит y в качестве свободной переменной, то ситуация довольно проста. Действительно, перед формулой F → Gk в последовательности

(2) добавим две формулы и, как и в третьем случае, для удобства изложения часть последовательности (2) изобразим в виде схемы:

1)F → Gi (x),

2)( y)(F → Gi (y)),

3)( y)(F → Gi (y)) → (F → ( y)Gi (y)),

4)F → Gk = F → ( y)Gi (y),

.

Здесь добавлены формулы 2) и 3). Формула 2) получается по правилу обобщения из формулы 1). Формула 3) является аксиомой. Итоговая формула 4) следует из 2) и 3) по правилу отделения.

Предположим теперь, что формула F содержит y в качестве свободной переменной. В этом случае последовательность (2) расширяем так, как показано на следующей схеме:

1) F → Gi (x),

2) ( z)(F → Gi (z)),

(переменная z не содержится в F →Gi (x))

3)( z)(F → Gi (z)) → (F → ( z)Gi (z)),

4)F → Gk = F → ( z)Gi (z),

5)( z)G(z) → G(u),

6)( y)[( z)G(z) → G(y)],

7)( y)[( z)G(z) → G(y)] → [( z)G(z) → ( y)G(y)],

8)( z)G(z) → ( y)G(y),

15) F → ( y)Gi (y) [формулы с 9 по 15 – формулы из примера перед теоремой с заменой G на ( z)Gi(z) и H на ( y)Gi(y)].

Обоснования фактически те же, что и для предыдущей схемы. Случай 4 полностью рассмотрен.

Следствие 3. Если для формул F и G и системы аксиом выполнено Ф |– F и

Ф {F} |– G, то Ф |– G.

Доказательство.

По теореме дедукции Ф |– F G. Пусть F1, F2, …, Fn – цепочка вывода для F, а G1, G2, …, Gk – цепочка вывода для F G. Тогда последовательность F1, F2, …, Fn, G1, G2, …, Gk, G – вывод формулы G, поскольку она получается применением правила вывода к паре формул Fn и Gk.

Рассмотрим примеры доказательств.

Пусть имеется два предиката Р(х, у) и Q(x, y) и такая аксиома:

Р(х, у) & Р(y, x) Q(x, y).

Введем одноместный предикат М(х) := z Р(х, z). Докажем, что формула

M(х) & M(y) Q(x, y)

выводима из этой аксиомы. Т.е. в нашем случае Ф = {Р(х, у) & Р(y, x) Q(x, y)} (Конечно, можно было бы и не водить обозначение М для нового предиката, но хочется избежать громоздких записей.)

Берем Ф {M(х) & M(y)}. Строим вывод:

 

1)M(х) & M(y)

– аксиома,

2)M(х) Р(х, у)

– общезначима (свойство7);

3)(M(х) Р(х, у)) (M(х) & M(у) Р(х, у)) – общезначима (упражнение 5),

4)M(х) & M(у) Р(х, у)

– правило вывода;

5)Р(х, у)

– правило вывода,.

И еще один вывод:

 

1)

M(х) & M(y)

– аксиома,

2)

M(у) Р(у, х)

– общезначима (свойство7);

3)

(M(у) Р(х, у)) (M(х) & M(у) Р(у, х)) – общезначима (упражнение 5),

4)

M(х) & M(у) Р(у, х)

– правило вывода;

5)

Р(у, х)

– правило вывода.

Значит, Ф {M(х) & M(y)} |– Р(х, у) и Ф {M(х) & M(y)} |– Р(у, х). По теореме 10

Ф {M(х) & M(y)} |– Р(х, у) & Р(у, х). Понятно, что можно было написать прямой вывод формулы Р(х, у) & Р(у, х), но это удлинило бы его.

Поскольку Ф = {Р(х, у) & Р(y, x) Q(x, y)}, то применяя правило ввода получаем цепочку, приводящую к Q(x, y). Значит, Ф {M(х) & M(y)} |– Q(x, y). По теореме дедукции Ф |– M(х) & M(y) Q(x, y).

На то, что мы доказали надо смотреть как на схему получения разных фактов. Пусть на множестве целых неотрицательных чисел Р(х, у) означает, что число у нацело делится на х,

Q(х, у) означает, что числа х и у равны.

Аксиома означает, что если числа делятся друг на друга, то они равны. Ее истинность для множества натуральных чисел, наверно, сомнения не вызывает. Предикат M(х) истинен лишь для того числа х, который делит любое натуральное число. Ну, например, для 1.

Выведенная нами формула означает, что если найдутся два числа с таким свойством, то они равны! Т.е. такое число единственно.

Упражнения для самостоятельного решения:

1)Пусть теперь Р(х, у) означает, что число у нацело делится на х. Что означает предикат M(х) и что означает выведенная нами формула?

2)Пусть, наконец, Р(х, у) означает, что число х не превосходит у. Что тогда означает предикат M(х) и что означает выведенная нами формула?

Рассмотрим на множестве всех целых чисел уже встречавшийся нам предикат S(x, y, z), истинный только в том случае, когда число z равно сумме чисел х и у. Легко понять, что имеют место такие аксиомы:

S(у, х, z) S(х, у, z) и S(x, y, u) & S(x, y, w) Q(u, w).

Введем предикат Р(х, у) := S(x, y, у). Что означает этот предикат?

Тогда Р(х, у) & Р(у, х) – это S(x, y, у) & S(у, х, х).

Забудем, что означают эти предикаты и займемся формальными выводами.

Пусть Ф = {S(x, y, z) S(у, x, z), S(x, y, u) & S(x, y, w) Q(u, w)}. Выше мы уже фактически научились из выводимости формул А В и С D получать выводимость формулы А & С В & D. Это означает, что из данных аксиом выводима формула S(x, y, u) & S(у, х, w) S(x, y, u) & S(х, у, w). Отождествив переменные u с y и w с x, получаем, что выводима формула Р(х, у) & Р(у, х) S(x, y, у) & S(х, у, х). Такое же отождествление переменных дает выводимость формулы S(x, y, у) & S(x, y, х) Q(х, у).

Теперь для множества аксиом Ф {Р(х, у) & Р(у, х)} строим вывод:

1)Р(х, у) & Р(у, х),

2)Р(х, у) & Р(у, х) S(x, y, у) & S(х, у, х),

3)S(x, y, у) & S(х, у, х),

4)S(x, y,у) & S(x, y, х) Q(х, у),

5)Q(х, у).

По теореме дедукции Ф |– Р(х, у) & Р(у, х) Q(x, y). Но мы уже доказали, что

Ф {Р(х, у) & Р(у, х) Q(x, y)} |– M(х) & M(y) Q(x, y).

Тогда по следствию 3 имеем Ф |– M(х) & M(y) Q(x, y).

А теперь посмотрим, что это означает при нашей интерпретации предикатов. Предикат M(х) истинен только для нейтрального элемента по сложению (в данном случае 0). Значит, мы доказали, что нейтральный элемент единствен.

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

Какой же вывод общий вывод можно сделать?

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

Алгоритмический анализ. Лекция 4.

λ-исчисление

§ 1. Исторические факты

Лямбда-исчисление – это бестиповая теория, рассматривающая функции как правила, а не как графики. Это делается, чтобы подчеркнуть их вычислительные аспекты. Получаем бестиповую структуру, где объекты являются одновременно и функциями, и аргументами.

Создатели лямбда-исчисления и теории комбинаторной логики преследовали две цели.

1.Разработать общую теорию функций, охватывающую, например, формульные преобразования.

2.Расширить эту теорию, введя в нее логические понятия, дающие основания логике и (частично)

математике.

В 1924 г. советский математик Моисей Исакович Шейнфинкель (Moses Schonfinkel) разработал простую теорию функций, которая фактически являлась исчислением объектов-функций – теорию комбинаторной логики. Она решала первую из этих задач и предвосхитила появление лямбдаисчисления. Позднее Хаскел Карри заново создал

комбинаторную логику.

В 1934 г. Алонзо Черч (Church)

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

В 60-х годах Х. Барендрегтом (H. Barendregt) были детально описаны синтаксис и семантика лямбда-исчисления.

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

В 60-х годах Дж. Бэкусом (John Backus) были созданы основы формализации синтаксиса языков программирования посредством специального математического языка. Позднее П. Науром (Peter Naur) этот язык был доработан, в результате чего возникла математическая нотация, известная и сегодня под названием "форм Бэкуса-Наура", или, сокращенно, БНФ.

Данная нотация была специально разработана с целью формализации синтаксиса языка программирования БНФ и сегодня являются теоретически адекватным и практически применимым средством формализации синтаксиса языков программирования.

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

§2. Основные понятия λ-исчисления

Вфундаментальном трехтомном труде «Начала математики» (Principia Mathematica), авторы – величайшие философы и математики XX столетия Бертран Рассел и Альфред Норт Уайтхед использовали специфическую форму записи для функций. Например, функция в

привычном «школьном» виде: f(x) = x + 3 имела у них запись x ^ + 3. Алонзо Черча, автора λ-исчисления, такая форма записи функций не

устроила, он хотел более ярко выраженного «операторного» характера и решил использовать следующую форму записи: ^x. x + 3

Витоге, получилось выражение в λ-исчислении λx.+ x 3

Вλ-исчислении используются две ключевые формы записи – для выражений и функций. Первые принято представлять строго в

префиксной форме (обратной польской), используя скобки только для необходимой группировки, например, традиционно sin(x) в λ-исчислении записывается просто как sin x, x + 4 становится + 4 x, а более сложное sin(x) + 4 приобретает следующий вид: + (sin x) 4.

Функция записывается в форме, на самом деле весьма похожей на запись функций в традиционных, императивных языках программирования. Например, функция λx. + 4 x весьма похожа на C- функцию int add4(int x) { return x+4; }, но с некоторыми нюансами. Вопервых, здесь используется операторный синтаксис описания «параметров» – λимя_переменной, во-вторых, для отделения выражения от описания параметров используется символ «.», в-третьих, в λ- исчислении функция не имеет имени.

Основной объект изучения в λ-исчислении – это множества лямбдатермов.

Определение. Множество Λ лямбда-термов индуктивно определяется следующим образом:

1.x Λ;

2.M Λ (λx.M) Λ;

3.M, N Λ (M N) Λ

Другими словами, на бесконечном множестве имен переменных, λ-

выражение является результатом следующего правила

BNF

подстановки:

 

<expr> := <name> | <function> | <application> <function> := (λ <name>.<expr>) <application> := (<expr> <expr>)

Внешние скобки не пишутся.

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

Пример.

λx.x простейшая функция, выдающая свой аргумент; скобки опущены, поскольку это не вызывает неоднозначности.