Рыбин Сергей Витальевич
ВЫСКАЗЫВАНИЯ И ПРЕДИКАТЫ
ВВЕДЕНИЕ
Математическая логика - это наука о правильных математических рассуждениях. Впервые правила рассуждений исследовал и систематизировал великий греческий учёный Аристотель (ученик Платона, воспитатель Александра Македонского). Однако как наука математическая логика сложилась лишь в середине XIX века, когда английский математик Джордж Буль ввел в рассмотрение логические связки и разработал логику высказываний.
ПОНЯТИЕ ВЫСКАЗЫВАНИЯ
Высказыванием будем называть повествовательное предложение, о котором можно сказать истинно оно или ложно.
Пример 1.
Рассмотрим следующие предложения.
A. «Число 8 делится на 4».
B. «Число 8 - четное».
C. «Если число 8 делится на 4, то оно четное».
D. «Булки растут на деревьях».
E. «Который час?».
Первые три предложения являются истинными высказываниями, четвертое -ложное высказывание, а пятое предложение вообще не является высказыванием.
В логике высказываний интересуются не содержанием, а истинностью или ложностью высказываний. Истинные и ложные значения будем обозначать соответственно И (1) и Л (0).
Высказывания будем обозначать большими латинскими буквами (иногда с индексами), например X, У, Z12.
Проанализируем рассмотренные в примере 1 высказывания с точки зрения их «внутреннего строения». Высказывания А, В и D можно назвать простыми, а, например, высказывание С («если А то В») - составным, полученным из простых высказываний А и В. Этот пример показывает способ построения составных (сложных) высказываний из простых. Эти способы будем называть операциями над высказываниями. В качестве основных выделим пять операций.
Пусть X и У некоторые высказывания. Тогда высказывания:
• «X и У» называется конъюнкцией высказываний X и У;
• «X или У» называется дизъюнкцией высказываний X и У;
• «не X» называется отрицанием высказывания X;
• «если X, то У называется импликацией высказываний X и У»;
• «X тогда и только тогда, когда У» называется эквива-ленцией высказываний X и У.
Например, высказывание С из примера 1 является импликацией высказываний А и В.
Введем следующие обозначения для операций над высказываниями: л - конъюнкция, V - дизъюнкция, 0 - отрицание, ^ -
Таблица 1. Таблица истинности связок.
X У X л У X V У 0Х X ^ У X о У
0 0 0 0 1 1 1
0 1 0 1 1 1 0
1 0 0 1 0 0 0
1 1 1 1 0 1 1
импликация, о - эквиваленция. Символы л, V, 0, о называются логическими связками.
Таблица 1 определяет, какие значения принимают высказывания, полученные с помощью этих операций, если исходные высказывания X и У принимают значения 0 или 1. Такая таблица называется таблицей истинности.
Более точно, данная таблица содержит пять таблиц истинности, по одной для каждой из связок. Эти пять таблиц для удобства объединены в одну.
Для операций V и ^ введенные значения требуют дополнительных пояснений. В русском языке союз «или» имеет два значения: разделительное - или то, или другое, но не оба вместе, например «Пан или пропал», что равносильно «Или пан, или пропал»; соединительное - или то, или другое, или оба вместе. Как видно из приведенной таблицы, союз «или» мы будем понимать в соединительном смысле.
Таблица истинности для импликации построена на основе принципов логики Аристотеля:
- из лжи следует все, что угодно (см. первую и вторую строки таблицу 1);
- истина не нуждается в обосновании (вторая и четвертая строки таблицы 1).
Пример 2.
Если число N кратно 4, то число N кратно 2. Эта импликация истинна при любом натуральном N. Например, при N = 8 это определяет четвертая строка таблицы 1, при N = 2 - вторая строка, а при N = 5 - первая.
ФОРМУЛЫ ЛОГИКИ ВЫСКАЗЫВАНИЙ
С помощью логических операций можно строить не только конкретные высказывания, но и выражения, которые имеют только форму высказывания, а конкретное содержание в них можно вкладывать любое. Такие выражения называются пропозициональными (высказывательными)1 формулами. Дадим точное определение.
Определение 2.
Символы истины 1 и лжи 0 называются логическими константами (или в дальнейшем просто константами).
Логическими переменными (в дальнейшем просто переменными) называются буквы X, У, ^ ... с индексами и без них, значениями которых могут быть 1 или 0.
Формулами логики вы1сказы1ваний называются:
1) логические переменные и константы;
2) выражения вида (К) л (О), (К) V (О), 0(К), ,(К) ^ (О), (К) о (О), где ^ и в - формулы логики высказываний.
Замечание.
Определение 1 относится к так называемым индуктивным определениям. Такие определения вводят сначала базовые объекты (в нашем случае это введенные в первом пункте логические переменные и константы), а затем способы конструирования новых объектов из уже полученных (в нашем случае это заданные во втором пункте возможности применения логических операций).
Из определения 1 следует, что формулы логики высказываний имеют внешнее сходство с буквенными выражениями эле-
1 Другие названия этого понятия: пропозициональные переменные, атомарные формулы1 или атомы1 логики вы1сказы1ваний.
ментарной алгебры. Они содержат конечное число переменных, то есть элементарных формул, левых и правых скобок, знаков логических операций и констант 1 и 0.
Пример 3.
Рассмотрим выражение ((X) л (7) ^ (—( г))). Явля- . ется ли оно формулой?
Проведем синтаксический анализ данного выражения на основе определения 2. Буквы X, У, Z - переменные в силу первого пункта определения 2. Применяя второй пункт, получаем: выражение (X) л (7) - формула, (—(2)) - формула, следовательно, исходное выражение -также формула.
Если следовать строго определению 2, в формуле надо писать много скобок. Это неудобно для восприятия формулы. Чтобы уменьшить количество скобок примем следующие соглашения:
1) внешние скобки в формуле можно опускать;
2) внутренние скобки в формуле можно опускать с учетом приоритета (силы связывания) для связок.
Будем считать, что 0 имеет наивысший приоритет, затем в порядке уменьшения приоритета следуют связки л, V, ^, и самый маленький приоритет имеет связка о. Связки одного старшинства применяются в порядке их следования слева направо.
Пример 4.
Используя эти соглашения, формулу из предыдущего примера можно записать в виде X л 7 ^ 02.
Очевидно, что совсем без скобок обойтись нельзя. Действительно, в формулах X л (7 V 2) и X л 7 V 2 различные порядки выполнения действий.
Формулу Е, в которую входят переменные X1,X2,...,Xn, будем обозначать Г (1,X2,...,Xn). Более того, будем пользо-
ваться последним обозначением, даже если некоторые из переменных отсутствуют в записи формулы Е, то есть являются фиктивными переменными.
Благодаря введению фиктивных переменных, можно считать, что наборы переменных у двух формул логики высказываний совпадают.
Задание 1.
Уровень 1. Проведите синтаксический анализ выражения (X л 7 л 2). Является
ли оно формулой?
Уровень 2. Напишите программу, которая по заданному выражению выдает все возможные формулы, которые можно получить различной расстановкой скобок (с учетом приоритетов логических связок) в этом тексте. Например, для выражения X л 7 ^ —7 л 2 на входе, на выходе можно получить:
X л (7 ^—7) л 2, (X л 7 ) л 2, X л 7 ^—(7 л 2),...
Уровень 3. Разработать алгоритм синтаксического анализа выражения, который решает следующую задачу: по тексту дает ответ на вопрос, является текст формулой логики высказываний или нет.
Можно ли решить эту задачу за один просмотр текста?
Определение формулы позволяет определять соответствие формулы синтаксису логики высказываний (проводить синтаксический анализ). Введем понятие значе-
ния (смысла) формулы, то есть семантику логики высказываний.
Рассмотрим формулу К (Xl, X 2,..., Xn). Если задать значения всех входящих в формулу переменных,
X1 = «,X2 =«2,. .,Xn = ап, а, = 0, Ь (1.1)
то, используя таблицу истинности (таблица 1), можно вычислить значение всей формулы на этом наборе:
к(а,«2,...,ап) = ь, Ь= о, 1.
В этом случае говорят, что задана интерпретация формулы ¥ на наборе (1.1). Такие наборы из нулей и единиц называются булевыми наборами.
Таким образом, чтобы определить значение формулы, нужно задать ее интерпретацию на всех возможных булевых наборах значений входящих в нее переменных.
Задание 2.
Уровень 1. Показать, что число различных булевых наборов формулы от п переменных равно 2п.
Каждый булевый набор а = (а,а2,...,ап) можно интерпретировать как двоичную запись некоторого натурального числа
Таблица 2.
X1 X 2 к ((1, X,..., X)
0 0 0 0 К (0,0,...,0,0)
0 0 0 1 К (0,0,...,0,1)
... ... ... ... ...
1 1 1 0 К (1,1,...,1,0)
1 1 1 1 К (1,1,...,1,1)
Ы(а) = 2п « + 2п 2а2 + ••• + 2ап-1 +ап.
Число N (а) будем называть номером набора.
Условимся в дальнейшем упорядочивать булевы наборы в лексикографическом порядке, то есть в порядке возрастания номеров наборов. Таким образом, семантическое значение формулы логики высказываний К(X,X2,...,Xn) можно задать следующей таблицей (таблица 2).
Эта таблица называется таблицей истинности для формулы ¥. Каждая строка таблицы 2 соответствует интерпретации формулы ¥ на данном булевом наборе.
Формула ¥ называется тождественно истинной или тавтологией, если она принимает только единичные значения. Если формула ¥ принимает только значение 0, то она называется тождественно ложной или противоречием.
Задание 3.
Уровень 1.
а) Показать, что число различных таблиц истинности для формул от п переменных равно 2п.
б) Пусть формула не содержит никаких логических символов, кроме связок о и 0.
Доказать, что формула является тавтологией тогда и только тогда, когда каждая переменная входит в формулу четное число раз.
Уровень 2. Напишите программу, которая по заданной формуле строит ее таблицу истинности.
Пример 51.
Браун, Джонсон и Смит обвиняются в подделке сведений о доходах. Они дают под присягой следующие показания:
1. Браун: Джонсон виновен, а Смит не виновен.
2. Джонсон: Если Браун виновен, то виновен и Смит.
3. Смит: Я не виновен, но хотя бы один из них виновен.
1 Эта задача носит название задачи Кислера.
Требуется ответить на вопрос: совместимы ли показания всех троих?
Ответим на вопрос, поставленный в задаче Кислера. Введем следующие обозначения: В - Браун виновен, J - Джонсон виновен, 5 - Смит виновен. Запишем показания свидетелей в виде формул. Имеем
1. Браун: 3 л—Б.
2. Джонсон: В ^ £.
3. Смит: —Б л (В V 3).
Составим совместную таблицу истинности для всех свидетельских показаний (таблица 3).
Совместны ли показания? Этот вопрос уточняется так: можно ли придать переменным В, J, Б такие логические значения, чтобы соответствующие формулы были истинными. Из таблицы 3 находим, что показания совместны при В = 0, J = 1, Б = 0 (третья строка таблицы). Таким образом, доказано, что если принять гипотезу об истинности всех показаний, то виновные найдены: —В, 3, —Б.
ПОНЯТИЕ ПРЕДИКАТА
Выразительные возможности языка логики высказываний очень ограничены. С ее помощью невозможно проанализировать внутреннюю структуру даже очень простых рассуждений. Рассмотрим, например, два умозаключения.
• Любой человек смертен, Сократ — человек, следовательно, Сократ смертен.
• Крокодилы не летают, Луна — головка швейцарского сыра, следовательно, сборная России выиграет чемпионат мира по футболу.
С точки зрения логики высказываний, оба этих текста представляются одной и той же формулой: X л 7 ^ 2.
Первое высказывание представляется строгим логическим выводом, второе же не соответствует никакому здравому смыслу.
Эти примеры подтверждают наш тезис о том, что в логике высказываний не рассматривается внутреннее содержание простейших высказываний (атомарных формул). Мы не имеем возможности «влезть» внутрь элементарного высказывания.
Рассмотрим расширение логики высказываний, которое называется логикой предикатов.
В естественной речи часто встречаются сложные высказывания, истинность которых может изменяться при изменении объектов, о которых идет речь, хотя форма самого высказывания остается прежней. Например, высказывание у кошки четыре ноги истинно, у слона четыре ноги тоже истинно, а высказывание у человека четыре ноги - ложно. Все эти высказывания
Таблица 3.
Задание 4.
Уровень 1.
Рассмотреть другую модель дополнительной гипотезы в задаче Кислера: невиновный говорит правду, а виновный - неизвестно что.
В 3 Б 3 л— Б В ^ Б — Б л (В V 3)
0 0 0 0 1 0
0 0 1 0 1 0
0 1 0 1 1 1
0 1 1 0 1 0
1 0 0 0 0 1
1 0 1 0 1 0
1 1 0 1 0 1
1 1 1 0 1 0
имеют одну форму у объекта х четыре ноги, где х - некоторый объект. Такое переменное высказывание, истинностное значение которого зависит от параметра, и называется предикатом. Таким образом, предикат есть функция, определенная на некотором множестве параметров и со значениями в {0, 1}. Такой подход естественным образом можно обобщить для случая п параметров.
Дадим формальное определение.
Определение 3.
Пусть М - произвольное непустое множество. Тогда п-местным предикатом1 Р(х1,к,хп) называется функция Р : Мп ® {0,1}, которая каждому упорядоченному набору («,..., ап) элементов из множества М сопоставляет конкретное высказывание, обозначаемое Р («,..., ап).
Само множество М называется предметны м множеством, а аргументы х1 ,к хп е М - предметными переменными.
Можно считать, что высказывание это нульместный предикат, то есть предикат, в котором нет переменных для замены.
Пример 6.
Пусть предметное множество М есть класс млекопитающих. Рассмотрим одноместный предикат Р(х): у х четыре ноги. Тогда
Р(слон) = 1, Р(кошка) = 1, Р(человек) = 0.
Пусть М - множество натуральных чисел. Рассмотрим двухместный предикат О(х,у): х<у. Тогда, например, О(1,3) = 1,
о(8,5) = 0.
Логические связки, введенные в логике высказываний, позволяют строить из предикатов новые сложные предикаты. Эти операции вводятся очевидным образом согласно таблице 1. Приведем в качестве примера определение конъюнкции предикатов.
Предикат Я (х^..., хп) называется конъюнкцией предикатов Р(х^...,хп) и
Q (х1,..., хп), заданных на предметном множестве М, если на любом наборе значений предметных переменных («, к, ап) е М
я (а ,к,«п ) =р (а ,к,«п )л 2 («,...«).
Для предикатов вводятся две новые по сравнению с логикой высказываний операции. Называются они квантором2 общности
и квантором существования.
1 От лат. praedicatum - сказанное.
2 От лат. quantum - сколько.
3 От англ. АН.
4 От англ. Exist.
Пусть Р(х1,к,хп,у) - предикат, заданный на предметном множестве М. Выражение ("у )Р (х^..., хп, у) (читается: для всякого у вытолняется Р(,...,хп,у)) есть предикат < (х1,к, хп), полученный из предиката Р навешиванием квантора общности на переменную у.
2 (а1,к,ап ) =1 о Р (а,к,ап, р) =1 для любого Ь е М
Выражение ($у)Р (х^..., хп, у) (читается: существует у такой, что вытолняется Р (х1,к, хп, у)) есть предикат Я (х1,к хп), полученный из предиката Р навешиванием квантора существования на переменную у.
Я (а,к,ап ) =1 о Р (а1,к,ап, р) =1 для некоторого ре М.
Операцию навешивания квантора3 " или квантора4 $ на переменную х называют еще квантификацией переменной х.
Пример 7.
Используя предикат О (x, у) и предметное множество М из предыдущего примера, запишем следующие предикаты
R( x) = ("у )О( x, У ), W( у) = ^ )О( x, У).
Тогда Я(x) = 0 для всех x е M, а W(1) = 0, W(у) = 1 м для всех у > 1.
ФОРМУЛЫ ЛОГИКИ ПРЕДИКАТОВ
Введем теперь понятие формулы логики предикатов. Сделаем это так же, как и в логике высказываний, индуктивным способом, то есть сначала введем понятие атомарной формулы, а затем формулы.
В отличие от логики высказываний, где переменные (атомарные формулы) не анализируются, атомарная формула для логики предикатов имеет структуру.
Нам потребуются понятия сигнатуры и терма.
Определение 4.
Сигнатурой называется множество Е = ЕР и!р и!с, где ЕР = {^}.е1 - множество функциональных символов (функторов); Ер =\Р]}. } - множество предикатных
символов; Ес = {ск}ек - множество предметных констант (нульместных символов функций).
В определении сигнатуры можно оставить два множества ЕР и Ер, считая, что
Ес £ Ер .
Замечание.
Проводя аналогию с объектно-ориентированным программированием, можно считать, что введение сигнатуры аналогично заданию базового класса с шаблонами методов. В дальнейшем будем предполагать, что сигнатура Е фиксирована.
Определим понятие терма данной сигнатуры. Термы играют роль переменных в логике предикатов.
Определение 5.
Термом называется
- переменная или предметная константа;
- выражение f (t1,..., ), где г^..., ^ -термы, а / - функциональный символ.
Термы служат для задания объектов предметного множества.
Пример 8.
Пусть
Ер = {сестра (х),друг(х),приятель(х,у)}, Ес = {Ольга, Иван, Петр, Мария}
Тогда выражения сестра (Иван), друг (Ольга), приятель (Мария, Петр) есть термы данной сигнатуры.
Задание 5.
Уровень 1. Определите, какие из следующих выражений являются термами сигнатуры последнего примера:
a) сестра(Ольга),
b) приятель(Иван),
c) друг(Мария, Петр),
ё) сестра(Елена).
Уровень 2. Для сигнатуры из последнего примера 8 написать программу синтаксического анализа текста, которая дает ответ на вопрос, является текст термом сигнатуры или нет.
Уровень 3. Разработать такой алгоритм для произвольной сигнатуры.
Перейдем к определению формулы логики предикатов.
Определение 6. Атомарной формулой называется выражение вида
Р (t1,•••, гп ), где t1,..., гп - термы, а Р - символ предиката.
Формулой логики предикатов называется
a) атомарная формула,
b) выражения вида Р л О, Р V О, —О, Р ^ О, , Р о О, ("у )Р, ($у )О, где Е и в - формулы логики предикатов, переменная уеМ.
Формулы Б и О в двух последних выражениях называются областью действия квантора по переменной у.
Вхождение переменной в формулу называется связанным, если переменная стоит непосредственно за квантором или входит в область действия квантора по этой переменной. В противном случае вхождение называется свободным.
Переменная называется свободной переменной формулы, если существует хотя бы одно свободное вхождение переменной в формулу, и связанной переменной формулы, если имеется связанное вхождение.
Формула называется замкнутой формулой или предложением, если любое вхождение переменной в формулу является связанным.
К соглашениям о скобках и приоритете операций, принятом в логике высказываний, добавим следующее: кванторы имеют одинаковый приоритет, который больше приоритета всех связок.
Пример 9.
Рассмотрим формулу (Эх)б(X,у) ^ (/(X,у))л("2)Р(2)).
Первое вхождение переменной х связано, второе - свободно. Все вхождения переменной у свободны, вхождение переменной г - связано.
Формула ("х)(Р(х) ^ х) лЯ(х)) является предложением, так как все вхождения переменной связанные.
Задание 6.
Уровень 2. Написать программу, которая для произвольной формулы логики предикатов на входе, определяет и классифицирует все вхождения переменных данной формулы. Например, для первой формулы из последнего примера 9 протокол работы может выглядеть так (см. таблицу 4).
Уровень 3. Разработать алгоритм синтаксического анализа выражения, который решает следующую задачу: по тексту дает ответ на вопрос, является текст формулой логики предикатов или нет.
СЕМАНТИКА ЛОГИКИ ПРЕДИКАТОВ
Формула логики предикатов есть только абстрактная схема высказывания. Введем понятие значения (смысла) формулы, то есть семантику логики предикатов. В логике высказываний это было сделано с помощью интерпретации переменных логическими значениями 0, 1. Используем аналогичный подход для формул логики предикатов.
Определение 7.
Интерпретацией сигнатуры1 (или просто интерпретацией) на непустом предметном множестве М называется отображение, которое:
а) каждой предметной константе с е Ес ставит в соответствие выделенный элемент из предметного множества М;
Таблица 4.
Переменная х х У У 2
Номер вхождения первое второе первое второе первое
Статус вхождения связано свободно свободно свободно связано
b) каждому символу п -местной функции f еЕР ставит в соответствие конкретную п-местную функцию, определенную на множестве М;
c) каждому символу п-местного предиката Р еЕР ставит в соответствие фиксированный п-местный предикат, заданный на множестве М.
В результате любая формула логики предикатов Е получает в соответствие конкретный предикат, местность которого равна числу свободных переменных формулы Е.
Замечание.
Проводя очередную аналогию с объектно-ориентированным программированием, можно считать, что интерпретация сигнатуры на предметном множестве аналогична созданию класса, дочернего по отношению к базовому (сигнатура).
Пример 10.
Возьмем в качестве предметного множества множество натуральных чисел. Рассмотрим следующую интерпретацию:
Б(^у,г): x + у = г, Р(^у,г): xy = г.
Формула Р ( x) = ("у )Б( x, у, у ) истинна в М только при х = 0.
Формула Q (x) = ("у )Р( ^ у, у) истинна в М только при х = 1.
Формула
Я^, у) = ("г )("и )(Б (^ г, и) ^ Б (у, г, и)) истинна в М только при х = у.
Задание 7.
Уровень 1. Пусть М множество точек, прямых и плоскостей трехмерного ев-
клидова пространства, а Р( x), Ь( x), Р (x) и В( x, у) следующие предикаты:
Р(x): x - точка, Ь(х): х - прямая, Е (х): х - плоскость, В( х, у): х е у. Записать следующие формулы:
a) через две различные точки можно провести единственную прямую;
b) через три точки, не лежащие на одной прямой, можно провести единственную плоскость.
Проиллюстрируем использование выразительных возможностей языка логики предикатов.
Пример 11.
Рассмотрим задачу перевода на язык логики предикатов следующего рассуждения.
Любой радикал является сторонником общественного прогресса. Некоторые консерваторы недолюбливают всех сторонников общественного прогресса. Значит, некоторые консерваторы недолюбливают всех радикалов.
Выберем сигнатуру:
Я (х) : х - радикал,
Р (х) : х - сторонник общественного прогресса, К(х) : х - консерватор, Ь(х; у) : х недолюбливает у.
Тогда рассуждение запишется в виде следующей последовательности формул
Р =(" )(Я( x) ^ Р( x)),.
Р2 = (3x)(К(x) л ("у)(Р(у) ^ Ь(x,у))),
Рз = (3x)(((x) л ("у)(Я(у) ^ Цx,у))).
Литература
1. Мендельсон Э. Введение в математическую логику. М.: Наука, 1984.
2. Новиков Ф. А. Дискретная математика для программистов. СПб.: Питер, 2005.
3. Смаллиан Р. М. «Принцесса или тигр?» М.: Мир, 1985.
Рыбин Сергей Витальевич, кандидат физико-математических наук, доцент кафедры ВМ-2 СПбГЭТУ (ЛЭТИ).
© Наши авторы, 2005. Оигаи*Ьогз: 2005.