Булева алгебра

advertisement
Алгебра логики высказываний
Основные понятия
Исходным понятием логики высказываний является простое высказывание. Это
понятие не определяется через другие понятия, так как является базовым. Под высказыванием обычно понимают всякое повествовательно предположение, утверждающее что-либо
о чем-либо. Если смысл, содержащийся в высказывании, соответствует действительности,
то высказывание называют истинным. В противном случае – ложным.
Обычно элементарные высказывания обозначают строчными буквами латинского
алфавита a, b, c, x, y …, которые также являются логическими переменными. Истинные
значения обозначаются буквой И или 1, а ложные – Л или 0.
Из элементарных высказываний можно составить более сложные с помощью логических связок , , , , , называемых соответственно отрицание, логическое и (конъюнкция), логическое или (дизъюнкция), логическое следствие (импликация), эквивалентность и круглых скобок (, ). Семантику логических связок можно представить с помощью
таблицы истинности. В левой части этой таблицы перечисляются все возможные комбинации значений логических переменных. В правой части – соответствующие им значения
новых выражений, полученных из переменных и связок.
Х
у
х
х у
х у
х у
х  у
0
0
1
0
0
1
1
0
1
1
0
1
1
0
1
0
0
0
1
0
0
1
1
0
1
1
1
1
Связки имеют следующий приоритет:     . Приоритет операций, представленных логическими связками можно изменить с помощью скобок. Высказывания, построенные с помощью простых высказываний, связок и скобок, называют правильно построенными формулами или сокращённо формулами.
Замечательным свойством логики высказываний является то, что ее семантика
близка к соответствующим высказываниям на естественном языке. Так, например семантика формул содержащих связки  и  практически совпадает со смыслом фраз содержащих слова «не» и «и». Однако имеются и некоторые различия. Так формула х  у несколько шире, чем русское «х или у». Выражение «х или у» по смыслу ближе к формуле х  у
 х  у. Еще больше различий между семантикой формулы х  у в логике высказываний
и выражению «из х следует у». В русском языке это выражение истинно, если истинны х и
у, т.е. предложение русского языка по смыслу совпадает с формулой х  у. Логическое
следствие истинно также, если х и у ложны или х ложна, а у истинна. Логическую формулу х  у следует интерпретировать на естественном языке так: «Если х истинна, то у тоже
истинна, а остальное неизвестно».
Для любой формулы также можно построить таблицу истинности. Например, для
формулы таблица истинности будет выглядеть следующим образом:
х
у
х
xу
 х  ( x  у)
 x  ( x  у)   x
0
0
1
1
1
1
0
1
1
1
1
1
1
0
0
0
0
1
1
1
0
0
0
1
Очевидно, что если формула содержит n переменных, то в таблице истинности будет содержаться 2n строк. В приведенном примере формула содержит 2 переменные и 22 =
4 строки. Кроме того, данная формула истинна на любом наборе значений своих перемен1
ных. Такие формулы называются тождественно истинными или тавтологиями. В противоположной ситуации, формула является тождественно ложной или невыполнимой.
Если две разные формулы принимают одинаковые значения на любом наборе значений
переменных, то такие формулы называют равносильными. Равносильные формулы будем
обозначать знаком равенства =.
Законы алгебры логики
В логике высказываний известно много общезначимых формул, которые также
называются законами логики высказываний. Основными законами являются следующие:
 законы идемпотентности:
o xx=x
o xx=x
 x1=x
 x1=1
 x0=0
 x0=x
 x   x = 0 – закон противоречия
 x   x = 1 – закон исключения третьего
   x = x – закон снятия двойного отрицания
 законы поглощения
o x  (y  x) = x
o x  (y  x) = x
Доказательство этих и последующих законов элементарно осуществляется с помощью построения таблиц истинности или простейших логических рассуждений.
Следующая группа законов представляет взаимосвязь между логическими операциями:
 (x  y) = (x  y)  (y  x)
 xy=xy
 законы Де Моргана
o  (y  x) =  y   x
o  (y  x) =  y   x
Замечательным следствием приведенных выше законов является следующий факт.
Любую логическую формулу можно заменить равносильной ей, но содержащую только
две логические операции: конъюнкцию или отрицание или дизъюнкцию или отрицание.
Дальнейшее исключение логических операций, очевидно, невозможно, то есть приведенные пары представляют минимальный базис для построения правильно построенных
формул. Однако существует операция, с помощью которой можно представить любую логическую связку. Эта операция получила название «штрих Шеффера» и определяется следующим образом:
х
у
х|у
0
0
1
0
1
1
1
0
1
1
1
0
На основании этого определения можно ввести следующие законы, выражающие
взаимосвязь операции «штрих Шеффера» и других логических связок:
 x= x|x
 x  y = (x | y) | (x | y)
2
Также следует отметить, что x | y =  (x  y).
К основным законам алгебры логики также относятся следующие:
 коммутативные законы
o хy=yх
o хy=yх
 дистрибутивные законы
o х  (y  z) = (х  y)  (х  z)
o х  (y  z) = (х  y)  (х  z)
 ассоциативные законы
o х  (y  z) = (х  y)  z
o х  (y  z) = (х  y)  z
Еще одним важным законом алгебры логики является закон двойственности.
Пусть формула A содержит только операции конъюнкции, дизъюнкции и отрицания. Для
операции конъюнкции двойственной считается дизъюнкция, а для дизъюнкции – конъюнкция. Тогда по определению формулы A и A* называются двойственными, если формула A* получается из A путем замены в ней каждой операции на двойственную. Например,
для формулы (х  y)  z двойственной формулой будет (х  y)  z. Для двойственных формул справедлива следующая теорема: если формулы A и B равносильны, то равносильны и
двойственные им формулы, то есть A* = B*. Данную теорему оставим без доказательства.
С помощью законов логики можно осуществлять равносильные преобразования.
Такие преобразования используются для доказательств, приведения формул к заданному
виду, упрощения формул.
Под сложностью формул обычно понимается количество символов, используемых
для ее записи. То есть формула α проще формулы , если α содержит меньше букв и логических операций. Например, для формулы ( (x  y)  x  y)  y можно записать следующую цепочку преобразований, приводящих ее к более простому виду:
( (x  y)  x  y)  y = (x  y  x  y)  y = (x  y)  y = y.
Функции алгебры логики
Значение формулы алгебры логики полностью зависит от значений входящих в нее
высказываний. Поэтому такая формула может считаться функцией входящих в нее элементарных высказываний. Например, (x  y)   z является функцией f(x, y, z). Естественно, значения этой функции и входящих в нее элементов могут принимать значения
истина или ложь. Тождественно истинные или тождественно ложные функции представляют собой константы.
Каждую функцию алгебры логики можно записать в виде формулы или представить таблицей истинности. Как уже было отмечено выше, таблица истинности для n переменных содержит 2n строк. Следовательно, каждая функция алгебры логики принимает 2n
значений, состоящих из 0 или 1. Общее же число наборов значений, состоящих из 0 и 1,
n
длины 2n равно 22 . В частности, число различных функций от одной переменной равно
четырем.
х
f1(x) f2(x) f3(x) F4(x)
0
1
1
0
0
1
1
0
1
0
Из этой таблицы следует, что две функции являются константами f1(x) = 1 и – f2(x)
= x, а остальные f3(x) =  x и f4(x) = 0.
3
Представление произвольной логической функции в виде формулы алгебры логики
Пусть с помощью таблицы истинности задана произвольная функция алгебры логики n переменных F(x1, x2, …, xn). Рассмотрим формулу:
F(1, 1, …, 1)  x1  x2  …  xn 
 F(1, 1, …, 1, 0)  x1  x2  …  xn-1   xn 
(1)
 F(1, 1, …, 0, 1)  x1  x2  …   xn-1  xn 
 F(0, 0, …, 0)   x1   x2  …   xn
которая составлена следующим образом: каждое слагаемое этой логической суммы
представляет собой конъюнкцию, в которой первый член является значением функции F при некоторых определенных значениях ее переменных, остальные же члены
конъюнкции представляют собой сами переменные или их отрицания. При этом под
знаком отрицания находятся те и только те переменные, которые в первом члене
конъюнкции имеют значение 0.
Ясно, что формула (1) полностью определяет функцию F. Иначе говоря, значения функции F и формулы (1) совпадают на всех наборах значений переменных xi.
Например, если x1 принимает значение 0, а остальные переменные принимают значение 1, то функция F принимает значение F(0, 1, 1, …, 1). При этом логическое
слагаемое F(0, 1, …, 1)   x1  x2  …  xn = F(0, 1, …, 1)   0  1  …  1, входящее в
формулу (1), принимает также значение F(0, l,..., l), а все остальные логические слагаемые формулы (1) имеют значение 0. Действительно, в них знаки отрицания перед переменными распределяются иначе, чем в рассмотренном слагаемом. Таким образом,
при подстановке вместо переменных тех же значений в конъюнкцию войдет символ 0 без
знака отрицания, а символ 1 под знаком отрицания. В таком случае один из членов конъюнкции будет иметь значение 0, и поэтому вся конъюнкция также будет иметь значение 0.
В связи с этим на основании закона x  0 = x значением формулы (1) является F(0, l,..., l).
Ясно, что вид формулы (1) может быть значительно упрощен, если в ней отбросить
те логические слагаемые, в которых первый член конъюнкции имеет значение 0 (и, следовательно, вся конъюнкция имеет значение 0). Если же в логическом слагаемом первый член
конъюнкции (то есть определенное значение функции F) имеет значение 1, то, пользуясь
законом 1  х = x, этот член конъюнкции можно не выписывать.
Таким образом, в результате получается формула (1), которая содержит только элементарные переменные высказывания и обладает следующими свойствами:
 каждое логическое слагаемое формулы содержит все переменные, входящие в
функцию F(x1, x2, …, xn),
 все логические слагаемые формулы различны,
 ни одно логическое слагаемое формулы не содержит одновременно переменную и ее
отрицание,
 ни одно логическое слагаемое формулы не содержит одну и ту же переменную дважды,
Перечисленные свойства будем называть свойствами совершенства или, коротко,
свойствами. Из приведенных рассуждений видно, что каждой не тождественно ложной
функции соответствует единственная формула указанного вида.
Если функция F(x1, x2, …, xn) задана таблицей истинности, то соответствующая ей
формула алгебры логики может быть получена просто. Действительно, для каждого набора
значений переменных, на котором функция F(x1, x2, …, xn) принимает значение 1, записывается конъюнкция элементарных переменных высказываний, взяв за член конъюнкции хk,
если значение xk на указанном наборе значений переменных функции F есть 1 и  х, если значение xk есть 0. Дизъюнкция всех записанных конъюнкций и будет искомой формулой.
4
Пусть, например, функция F(x1, x2, x3) имеет следующую таблицу истинности:
x1
X2
x3
F(x1, x2, x3)
0
0
0
1
0
0
1
0
0
1
0
1
0
1
1
0
1
0
0
0
1
0
1
1
1
1
0
1
1
1
1
0
Для наборов значений переменных (1, 1, 0), (1,0,1), (0,1,0), (0, 0, 0), на которых
функция принимает значение 1, запишем конъюнкции x1  x2   x3, x1   x2  x3,  x1  x2
  x3,  x1   x2   x3. а искомая формула, обладающая свойствами совершенства, будет иметь вид:
x1  x2   x3  x1   x2  x3   x1  x2   x3   x1   x2   x3.
Дизъюнктивная нормальная форма и совершенная дизъюнктивная нормальная форма
Элементарной конъюнкцией n переменных называется конъюнкция переменных
или их отрицаний.
Дизъюнктивной нормальной формой (ДНФ) формулы А называется равносильная
ей формула, представляющая собой дизъюнкцию элементарных конъюнкций.
Для любой формулы алгебры логики путем равносильных преобразований можно
получить ее ДНФ, причем не единственную.
Например, для формулы А = х  (х  y) имеем:
А = х  ( х  y) = (х   х)  (х  y) = х  y, то есть
ДНФ А = (х   х)  (х  y) и
ДНФ А = х  y.
Среди многочисленных ДНФ А существует единственная ДНФ А, для которой выполняются перечисленные выше четыре свойства совершенства. Такая ДНФ А называется
совершенной дизъюнктивной нормальной формой формулы А (СДНФ А).
Как уже указывалось, СДНФ А может быть получена с помощью таблицы истинности.
Другой способ получения СДНФ формулы А основан на равносильных преобразованиях формулы и состоит в следующем:
1. путем равносильных преобразований формулы А получают одну из ДНФ А.
2. если в полученной ДНФ А входящая в нее элементарная конъюнкция В не содержит переменную xi, то, используя закон B  (xi   xi) = B, элементарную
конъюнкцию B заменяют на две элементарных конъюнкции (B  xi) и (B   xi),
каждая из которых содержит переменную xi.
3. если в ДНФ А входят две одинаковых элементарных конъюнкции В, то лишнюю
можно отбросить, пользуясь равносильностью В  В = В.
4. если некоторая элементарная конъюнкция В, входящая в ДНФ А, содержит переменную xi и ее отрицание  xi, то, на основании закона xi   xi = 0, В = 0 и В,
таким образом, можно исключить из ДНФ А, как нулевой член дизъюнкции.
5. если некоторая элементарная конъюнкция, входящая в ДНФ А, содержит переменную xi дважды, то одну переменную можно отбросить, пользуясь законом xi 
xi = xi .
5
Ясно, что после выполнения описанной процедуры будет получена СДНФ А.
Например, для формулы А = x  y  (x   y) ДНФ А = x  (x  y)  (y   y). Так как
элементарная конъюнкция В = х, входящая в ДНФ А, не содержит переменной у, то заменим ее на две элементарных конъюнкции (x  y) и (x   y), В результате получим
ДНФ А = x  y  x   y  x  y  y   y.
Так как теперь ДНФ А содержит две одинаковых элементарных конъюнкции x 
y, то отбросим лишнюю. В результате получим ДНФ A = x  y  x   y  y   y.
Так как элементарная конъюнкция y   y содержит переменную у и ее отрицание, то y   y = 0, и ее можно отбросить как нулевой член дизъюнкции.
Таким образом, получаем СДНФ А = x  y  x   y.
Конъюнктивная нормальная форма и совершенная конъюнктивная нормальная форма
Элементарной дизъюнкцией п переменных называется дизъюнкция переменных
или их отрицаний.
Конъюнктивной нормальной формой (КНФ) формулы А называется равносильная ей формула, представляющая собой конъюнкцию элементарных дизъюнкций.
Для любой формулы алгебры логики путем равносильных преобразований
можно получить ее КНФ, причем не единственную.
Например, для формулы А =  (х  у)  х  у имеем:
А = ( (х  у)  х  у)  (х  у   (х  у)) =
= (х  у  х  у)  ( (х  у)   (х  у)) =
= (х  х  у)  (х  у  у)  ( х   у   х)  (  х   у   у) , то есть
КНФ А = (х  х  у)  (х  у  у)  ( х   у   х)  (  х   у   у).
Но так как х  х = х, у  у = у,  х   х =  х,  у   у =  у, то
КНФ A = (х  у)  (х  у)  ( х   у)  (  х   у).
А так как (х  у)  (х  у) = х  у, ( х   у)  (  х   у) = (  х   у), то
КНФ A = (х  у)  (  х   у).
КНФ А называется совершенной конъюнктивной нормальной формой формулы А (СКНФ А), если для нее выполнены условия:
 Все элементарные дизъюнкции, входящие в КНФ А , различны.
 Все элементарные дизъюнкции, входящие в КНФ А, содержат все переменные.
 Каждая элементарная дизъюнкция, входящая в КНФ А, не содержит двух
одинаковых переменных.
 Каждая элементарная дизъюнкция, входящая в КНФ А, не содержит переменную и ее отрицание.
Можно доказать, что каждая не тождественно истинная формула имеет единственную СКНФ.
Один из способов получения СКНФ состоит в использовании таблицы истинности
для формулы  А. Действительно, получив с помощью таблицы истинности СДНФ  А,
мы получим СКНФ А, взяв отрицание  (СДНФ  А), то есть СКНФ А =  (СДНФ  А).
Другой способ получения СКНФ, использующий равносильные преобразования,
состоит в следующем:
1. Путем равносильных преобразований формулы А получают одну из КНФ А.
2. Если в полученной КНФ А входящая в нее элементарная дизъюнкция В не содержит переменную хi, то, используя закон В  (xi   xi) = В, элементарную
6
дизъюнкцию В заменяют на две элементарные дизъюнкции В  xi и В   xi,
каждая из которых содержит переменную xi.
3. Если в КНФ А входят две одинаковых элементарных дизъюнкции В, то лишнюю
можно отбросить, пользуясь законом В  В = В.
4. Если некоторая элементарная дизъюнкция, входящая в КНФ А, содержит переменную xi дважды, то лишнюю можно отбросить, пользуясь законом xi  xi = xi.
5. Если некоторая элементарная дизъюнкция, входящая в КНФ А, содержит переменную xi, и ее отрицание, то xi   xi = 1 и, следовательно, вся элементарная
дизъюнкция имеет значение 1, а поэтому ее можно отбросить, как истинный
член конъюнкции.
Ясно, что после описанной процедуры будет получена СКНФ А. Например, для
формулы А = x  y  (x   y) КНФ А = x  (y  (x   y)) = (x  y)  (x  x   y). Так
как обе элементарные дизъюнкции содержат все переменные (x и y), то первое и второе
условие СКНФ выполнены. Элементарная дизъюнкция x  x   y содержит переменную х дважды, но x  x = x, поэтому КНФ А = (x  y)  (x   y); причем, ни одна из
элементарных дизъюнкций не содержит переменную и ее отрицание. Значит, все условия СКНФ выполнены, и, следовательно, СКНФ А = (x  y)  (x   y).
Минимизация булевых функций. Карты Карно
Сложность логической функции, как уже было отмечено выше, определяется сложностью ее аналитической записи. Минимальной формой логической функции на некотором
множестве фиксированных операций (базисе) можно считать такую, которая содержит минимальное число суперпозиций функций базиса, допуская и скобки. Однако построить эффективный
алгоритм такой минимизации с получением минимальной скобочной формы трудно.
Более простой задачей минимизации является нахождение минимальная ДНФ функции.
Для этой задачи существуют простые эффективные алгоритмы. Один из них основан на применении карт Карно.
Карта Карно – это двумерная табличная форма представления булевой функции, позволяющая в наглядной графической форме легко отыскать минимальные ДНФ логических функций. Каждой клетке в таблице сопоставляется дизъюнкт СДНФ минимизируемой функции, причем так, что любым осям симметрии таблицы соответствуют зоны, взаимно инверсные по какойлибо переменной. Такое расположение клеток в таблице позволяет легко определить склеивающиеся термы СДНФ (отличающиеся знаком инверсии только одной переменной): они располагаются в таблице симметрично. Например, следующая карта Карно построена для импликации двух
переменных х  у. В ячейки карты вписываются значения из таблицы истинности функции, при этом, если перед соответствующей переменной стоит знак отрицания, то в таблице истинности выбирается строка с ложным значением данной переменной, иначе – с
истинным значением.
y
y
x
1
0
x
1
1
Все четыре клетки соответствуют всем возможным конъюнкциям СДНФ функции
2 переменных. Единичные значения функции показывают те дизъюнкты, которые присутствуют в СДНФ этой функции. Расположения элементов в картах Карно функции 2 пере7
менных таково, что в один конъюнкт эта переменная входит без отрицания, а в другой – с
отрицанием. Алгоритм поиска минимальной ДНФ по карте Карно основан на выявлении
на карте минимального количества максимальных квадратов или прямоугольников со сторонами, равными степени двойки, так, чтобы они состояли только из ячеек, содержащих
единицы. Для приведенной карты Карно единичные значения покрывают ячейки с координатами  х и у, соответственно искомая минимальная ДНФ будет  х  у.
Рассмотрим другую логическую функцию f =  p  q  r  q  (p  r). Знаком
 обозначается операция сложения по модулю 2 или «исключающее или» (XOR –
eXclusive OR), которая определяется следующим образом:
х
0
0
1
1
ху
0
1
1
0
у
0
1
0
1
Таблица истинности для данной формулы имеет следующий вид:
p
0
0
0
0
1
1
1
1
q
0
0
1
1
0
0
1
1
r
0
1
0
1
0
1
0
1
f
1
1
1
0
0
0
1
0
Карта Карно для функции трех переменных должна содержать, очевидно, 8
ячеек. Подобную карту можно изобразить следующим образом:
q
q
1
0
0
0
1
0
1
1

p

p
r
r
r
Для этой карты Карно единичные значения присутствуют в ячейках с координатами q   r и  q   p, соответственно минимальная ДНФ будет q   r   q   p.
В силу симметрии карт Карно при построении прямоугольников возможно
объединение ячеек, находящихся в крайних позициях, так как при ином расположении координат строк или столбцов (переменных без отрицания и с отрицанием)
крайние ячейки окажутся внутри карты. Следующие две карты Карно эквивалентны
(местами поменялись координаты r и  r) и на них указано корректное объединение
ячеек в прямоугольные области:
8
q
0
0
1
p
1
0
0
1
p

1
r
r

p

p
q
q
0
1
1
0
0
1
1
0

q
r
r
r
r
Карты Карно также удобны и для минимизации не полностью определенных
функций. Например, пусть объявлена функция, у которой не определено часть значений:
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
f
1
1
1
0
1
-
При построении карты Карно для этой функции неопределенные значения
можно заменить любыми – 0 или 1. Таким образом, выявляя на карте Карно прямоугольники из единиц, можно использовать ячейки, не содержащие значений.
y
y
1
-
-
0
1
1
1
-

x

x
z
z
z
Для данного примера минимальная ДНФ равна y   x.
9
Решение логических задач средствами алгебры логики
Суть применения методов алгебры логики к решению логических задач состоит в
том, что, имея конкретные условия логической задачи, стараются записать их в виде формулы алгебры логики. В дальнейшем путем построения таблицы истинности или равносильных преобразований упрощают полученную формулу. Наконец, простейший вид
формулы, как правило, приводит к ответу на все вопросы задачи.
В качестве примера рассмотрим одну из элементарных логических задач. По подозрению в совершенном преступлении задержали Брауна, Джона и Смита. Один из них был
уважаемым в городе стариком, другой был малоизвестным чиновником, третий – известным мошенником. В процессе следствия старик говорил правду, мошенник лгал, а третий
задержанный в одном случае говорил правду, а в другом – ложь. Вот, что они утверждали:
Браун: «Я совершил это. Джон не виноват».
Джон: «Браун не виноват. Преступление совершил Смит».
Смит: «Я не виноват, виновен Браун».
Необходимо определить имена старика, мошенника и чиновника и кто из них виноват, если известно, что преступник один.
Решение этой задачи начинается с введения обозначений: буквами Б, Д и С обозначим высказывания: «виноват Браун», «виноват Джон» и «виноват Смит» соответственно.
Тогда утверждения, высказанные задержанными, можно записать в виде конъюнкций:
Б   Д,  Б  С, Б   С,
из которых, по условию задачи, две ложны, а одна истинна. Поэтому будет истинной формула
L = (Б   Д)  ( Б  С)  (Б   С).
Таблица истинности этой формулы имеет вид:
Б
Д
С
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
БД БС БС
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
1
0
0
0
0
1
0
0
0
L
0
1
0
1
1
1
1
0
Из таблицы видно, что формула L истинна в пяти из восьми случаев. Случай, представленный в пятой строке, следует исключить из рассмотрения, так как здесь оказываются истинными две конъюнкции, а это противоречит условию задачи. В строках 4, 6 и 7
оказываются истинными по два высказывания: Д и С, Б и С, Б и Д, соответственно, что
также противоречит условию задачи. Следовательно, справедлив случай 7, то есть преступник – Смит. Он – известный мошенник, и оба его высказывания ложны: Б   С  0.
При этом высказывания Б и Д ложны. Значит, истинна пара высказываний Джона, а у Брауна первое высказывание ложно, а второе истинно. Отсюда ясно, что Джон – уважаемый в
городе старик, а Браун – Малоизвестный чиновник.
10
Исчисление высказываний
Для определения значения логических формул можно воспользоваться таблицами истинности. Однако, построение таблицы истинности не всегда возможно или удобно. Например, в силу ее значительной размерности для большого числа переменных. Поэтому,
наряду с таблицами истинности пользуются и другими, аналитическими способами вычисления значений логических формул.
Логическим исчислением или просто исчислением называют четверку, которая включает в
себя:
 Алфавит (совокупность используемых символов);
 Синтаксические правила построения формул в алфавите;
 Аксиомы (общезначимые формулы или тождественно истинные формулы);
 Правила вывода по аксиомам производных формул или теорем.
Основное назначение исчисления высказываний – доказательство истинности формул на
основании аксиом или других истинных формул. Для этого вводятся специальные правила
вывода вида α ├ , где α называется условием,  – следствием, которые позволяют по истинности α заключить об истинности . Если в условии или следствии несколько формул,
то они записываются через запятую. Если из истинности всех формул, входящих в условие, следует истинность всех формул входящих в следствие, правило называют состоятельным. Доказательство состоятельности можно осуществить через построение таблицы
истинности, где в строках перечислены все модели условия. Если всем этим условиям соответствуют истинные следствия, то правило состоятельно.
Классическое исчисление высказываний
Исчислением высказываний называют исчисление, в котором в качестве алфавита взят алфавит логики высказываний, в качестве синтаксических правил – синтаксические правила
логики высказываний, в качестве аксиом – некоторое множество общезначимых формул, а
в качестве правил – правила Modus ponens и правило подстановки.
В классическом исчислении высказываний приняты следующие аксиомы:
1. α  (  α),
2. (α  (  γ))  (( α  )  (α  γ)),
3. (α  )  α,
4. (α  )  ,
5. α  (α  ),
6.   (α  ),
7. (α  )  ((α  γ)  (α  (  γ)),
8. (α  γ)  ((  γ)  ((α  )  γ)),
9. (α  )  (  α),
10. α  α,
11
11. α  α.
Классическое исчисление высказываний использует два правила вывода:
 Modus ponens. Из истинности условия импликации и истинности самой импликации следует истинность следствия импликации: α, α├ .
 Правило одновременной подстановки. Из формулы α(р), где р – переменная, выводима формула α(R), где R – формула, получаемая заменой в α(р) каждого вхождения переменной р на формулу R: α (р) ├ α (R). В общем случае будем обозначать
подстановку (x1,…, xn  α1,…, αn).
Таким образом, доказуемой формулой называется всякая формула, которая или является
аксиомой, или получается из доказуемых формул с помощью правил подстановки и Modus Ponens.
Натуральное исчисление высказываний
При практическом решении задач удобнее пользоваться не законами логики, а правилами
из заменяющими. В натуральном исчислении высказываний помимо правил Modus ponens
и подстановки используют следующие:
 Исключение конъюнкта. Из истинности конъюнкции следует истинность любого ее
конъюнкта:
α1  α2  …  αn ├ αi.
 Введение конъюнкции. Из списка истинных формул следует истинность их конъюнкции:
α1, α2, …, αn ├ α1  α2  …  αn.
 Введение дизъюнкции. Из истинности формулы следует истинность ее дизъюнкции
с любыми другими формулами:
α1 ├ α1  α2  …  αn.
 Исключение двойного отрицания. Из истинности двойного отрицания формулы
следует истинность ее самой:
α ├ α.
 Простая резолюция (удаление дизъюнкта). Из истинности дизъюнкции и отрицания одного из ее дизъюнктов следует истинность формулы после удаления этого
дизъюнкта:
α  ,  ├ α.
 Резолюция. Из истинности двух дизъюнкций, одна из которых содержит дизъюнкт,
а другая его отрицание следует формула, являющаяся дизъюнкцией исходных
формул после удаления этого дизъюнкта:
α  ,   γ ├ α  γ.
Понятие выводимости
Пусть имеется конечная совокупность формул H = {A1, A2 ,…, An}. Говорят, что формула
B выводима из совокупности H (можно записать как B├ H), если:
1. либо B H,
2. либо B – доказуемая формула исчисления высказываний,
3. либо B получается по правилу Modus ponens из формул C и C  B, которые выводимы из совокупности H.
12
Примеры
Рассмотрим, как можно установить доказуемость формул, используя правило подстановки
и правило Modus ponens.
Доказать A  A  A
1. Возьмем аксиому (α  γ)  ((  γ)  ((α  )  γ)) и сделаем в ней подстановку
(α, γ,   A, A, A). Получим: (A  A)  ((A  A)  ((A  A)  A));
2. Докажем выводимость A  A:
a. Возьмем аксиому (α  (  γ))  (( α  )  (α  γ)) и сделаем в ней
подстановку (α, γ,   x, y, x). Получим: (x  (y  x))  ((x  y)  (x  x));
b. Из аксиомы x  (y  x) и правила Modus ponens имеем: (x  y)  (x  x);
c. Выполним подстановку (y  x). Получим: (x  x)  (x  x);
d. Из аксиомы x  x и правила Modus ponens имеем: x  x;
3. Из формулы x  x и правила Modus ponens имеем: (A  A)  ((A  A)  A);
4. Аналогично: (A  A)  A;
Формула доказана.
13
Логика предикатов
В алгебре логики высказываний собственно высказывания рассматриваются как неразделимые целые и только лишь с точки зрения их истинности или ложности. Стуктура высказываний или их содержание не рассматриваются. Другим недостатком логики высказываний является ее многословность – даже для описания простых ситуаций требуется значительное количество логических переменных и формул.
Главная идея логики предикатов заключается во взаимнооднозначном сопоставлении
каждого уникального объекта с индивидуальной объектной константой, обозначаемой
именем объекта, а класс однотипных объектов – с объектной переменной, значением которой являются объектные константы.
Например, рассмотрим высказывание «7 – простое число». Эту фразу в логике высказываний можно представить с помощью логической переменной, предположим a. Для того,
чтобы представить на языке логики другое высказывание «13 – простое число» понадобится другая переменная. Таким образом, для описания простых чисел нам понадобится
столько логических переменных, сколько существует простых чисел. На языке логики
предикатов эта фраза может быть представлена так: простое_число(7). А весь набор подобных фраз: простое_число(значение). В данном примере простое_число – это предикатный символ, 7 – объектная константа, а значение – объектная переменная.
Предикатом называют высказывательную функцию, определенную на множестве наборов значений объектных переменных. Эта функция может принимать только два значения:
Истина или Ложь, называемые истинностными значениями. Предикаты могут быть одноместными, если аргумент один, или многоместными – если аргументов несколько. Отношения между объектами среды, также как и в логике высказываний, представляются в
виде предложений (формул), состоящих из переменных, констант, связок, скобок, а также
функций, предикатов и кванторов.
Объектные константы
Объектная константа или просто константа взаимнооднозначно сопоставляется в процессе интерпретации с каким-либо одним объектом и обозначается строкой символов,
начинающихся с прописной буквы.
Объектные переменные
Объектные переменные или просто переменные обозначаются строкой, начинающейся со
строчной буквы. Областью значений каждой переменной является множество констант, в
общем случае бесконечное.
Функции
Если некоторый объект в точности соответствует множеству других, то используют функции. Например, если объектами являются двоичные цифры и десятичные цифры, то лю14
бому двоичному можно однозначно сопоставить десятичное, и выразить это сопоставление в виде функции преобразование_2_в_10(x, y, z), где x, y, z – двоичные числа, а значение функции – десятичное. Выражение преобразование_2_в_10 называют функциональным символом. Функция в логике предикатов не предполагает обязательного наличия алгоритма вычисления ее значения по аргументам. Она лишь задает с помощью констант и
переменных определенное отношение между объектами, соответствующими ее аргументам, и каким-то одним объектом.
Термы
Константы, переменные и функции являются темами. Как именно выбирать термы для
представления знаний – решать разработчику. Рассмотрим, например, среду, состоящую
из объектов птицы и крылья. Пусть, также, нам известно, что птицы имеют крылья. Введем константы, обозначающие конкретных птиц: Воробей, Синица, Голубь, и константу
Крылья. Введем переменную х, определенную на множестве птиц. Функциональный символ имеет ставит во взаимно однозначное соответствие любой птице объект крылья.
Функция имеет (х) задаёт отношение между объектом крылья и какой-либо птицей х. Если х = Воробей, то имеет (Воробей) = Крылья. Функция может и не содержать аргументов, то есть иметь один функциональный символ. Термы, не содержащие аргументов, то
есть константы, переменные и функции без аргументов называют элементарными термами.
Предикатный символ
Как и в случае с функцией предикаты начинаются с предикатного символа и следующими
за ним в скобках упорядоченного набора переменных или констант, соответствующих
объектам, которые находятся в поименованном отношении. С помощью предикатов задаются произвольные отношения между объектами, если аргументов несколько. Если аргумент только один, то предикат описывает свойство объекта, заданного аргументом. Так,
например, если два человека Маша и Саша являются братом и сестрой, то это отношение
может быть выражено с помощью предиката брат_сестра (Маша, Саша). Предикат может принимать значение Истинно или Ложь. Если предикат Истинен, то отношение имеет место, иначе – не имеет. Отношение между птицами и крыльями также может быть выражено с помощью предиката. Пусть предикат крылья(х) Истинен, если х имеет крылья,
тогда при х = Воробей конструкция крылья(Воробей) будет представлять знания о том, что
у Воробья есть крылья.
Атомы
Выражение предикатный_символ (терм, терм, …, терм) называют атомом. Атом представляет предикат. Особо выделяется атом, предикатным символом которого является
знак равенства, а аргументами два терма. Этот атом можно было бы представить как равны (терм, терм) или = (терм, терм), но, как правило, его записывают в обычной инфиксной форме терм = терм. Этот атом истинен, когда значения обоих термов совпадают.
Атомы без знака отрицания или со знаком отрицания называют литералами.
Кванторы
15
Когда возникает необходимость выразить какие-либо свойства, общие для целого множества объектов, используют кванторы. В логике предикатов таких кванторов два: , .
Квантор общности . Смысл квантора общности совпадает с выражением естественного
языка «для всех». То есть, если имеется некоторое знание, применимое для любого объекта определённого типа, то вместо перечисления всех таких объектов можно использовать
квантор общности. Например, тот факт, что для успешной учебы студенту необходимо
вовремя получать зачеты можно выразить следующим образом:
 (x) студент(x)  вовремя_сдает_зачеты(x)  успешно_учится(x).
Квантор существования . Если возникает необходимость выразить знание об отдельном объекте из какой-либо совокупности, используют квантор существования. Квантор
существования произносится на естественном языке как «существует». Например, на любом факультете университета учится хотя бы один отличник. Эта фраза на языке предикатов выглядит следующим образом:
 (x) факультет(x)   (y) учится(y, x)  отличник(y).
Взаимосвязь между кванторами. Считают, то квантор связывает переменные, которые
записываются за знаком квантора в скобках. Поэтому их называют связанными. Переменные же, которые ни один квантор не связывает, называют свободными. Взаимосвязь
между кванторами существования и общности можно легко выразить с помощью связки
отрицания  и она основана на следующем соображении: если про любой объект из совокупности можно сказать, что он не обладает заданным свойством, то не существует объекта, обладающего этим свойством. Например, очевидно, что «у любой лошади нет крыльев, значит, не существует лошади, у которой есть крылья». Обозначим любую переменную символом х, а любую формулу, содержащую эту переменную – Р(х), тогда справедливы следующие законы:
 (х)  Р(х)    (х) Р(х),
  (х) Р(х)   (х)  Р(х),
 (х) Р(х)    (х)  Р(х),
  (х)  Р(х)   (х) Р(х).
Равенство
Равенство является атомом особого типа Терм = Терм или =(Терм, Терм). Равенство означает, что оба терма в атоме соответствуют одному и тому же объекту. Не следует путать
предикат равенства с операцией присваивания. В следующей таблице раскрыт смысл равенства для различных термов, где X, Y обозначают константы, x, y – переменные, а F(x) –
функция:
X=Y
x=Y
x=y
X = F(Y)
X = F(y)
x = F(Y)
x = F(y)
Истинно, если константы именуют один и тот же объект
Истинно, если значение переменной равно константе
Истинно, если значения переменных совпадают
Истинно, если значение функции совпадает с константой
Истинно, если значение функции совпадает со значением переменной
16
Аксиомы, теоремы, факты и цели
В логике высказываний были введены понятия интерпретация, общезначимость, модель
и выводимость. Аналогичные понятия есть и в логике предикатов. Аксиомами называют
такие формулы, для которых среда является моделью при всех интерпретациях, или формулы, которые истинны при любых значениях входящих в них переменных. Аксиомы, являющиеся литералами (атомы с отрицанием или без), все аргументы которых константы,
называют фактами. Аксиомы не являющиеся фактами называют правилами. Основная
задача в логике предикатов – вывод на основании истинных фактов и правил целевых
формул, называемых теоремами.
Переход от естественного языка к языку логики предикатов
Рассмотрим пример. Предположим, что наши знания о птицах выражены в виде следующих предложений:
 Если существо имеет крылья, то это существо – птица.
 Если существо летает и несет яйца, то это существо – птица.
Для представления знаний на языке логики предикатов следует выполнить следующие
шаги:
1. Выявить, что во фразе является объектом, который необходимо сопоставить с константой или переменной. Если речь идет о конкретном объекте, то вводится константа, если же упоминается целый класс объектов, то используют переменную.
2. Определить свойства объектов. Сопоставить свойствам предикатные символы.
3. С помощью логических связок сформировать формулы констант, переменных и
предикатов, соответствующих объектам и их свойствам.
Таким образом, на языке логики предикатов эти знания могут быть выражены в виде формул:
 имеет_крылья(существо)  птица(существо)
 летает(существо)  несет_яйца(существо)  птица(существо)
В данном примере использованы одноместные предикаты, имеющие по одному аргументу. Но предикаты могут быть также и многоместными, то есть иметь несколько аргументов. В случае многоместных предикатов предикатный символ может рассматриваться как
некоторое общее свойство объектов, соответствующих аргументам, либо как отношение, в
котором эти объекты находятся.
Предваренная нормальная форма
Формула логики предикатов имеет нормальную форму, если она содержит только операции конъюнкции, дизъюнкции и кванторы, а операция отрицания отнесена к элементарным отрицаниям. Очевидно, что, используя равносильные преобразования, можно каждую формулу логики предикатов привести к нормальной форме.
Среди нормальных форм особо важное значение имеет так называемая предваренная нормальная форма. В такой форме кванторы либо отсутствуют, либо они используются после
17
всех операций алгебры логики и записываются перед формулой, то есть эта форма имеет
вид:
(x1) (x2) … (xn) A(x1, x2, …, xm), n  m,
где под символом  понимается один из кванторов:  или .
Существует теорема утверждающая, что любая формула логики предикатов может быть
приведена к предваренной нормальной форме.
Примеры
Одной из задач логики предикатов является поиск областей истинности предикатов –
множества значений аргументов, на которых предикат принимает истинные значения.
Пусть, к примеру, даны предикаты: P(x): «x – четное число» и Q(x): «x кратно 3», определенные на множестве натуральных чисел N. Областями истинности P(x) и Q(x) соответственно являются IP = {2, 4, 6, …, 2n…}, IQ = {3, 6, 9, …, 3n…}. Найдем области истинности для следующих предикатов:
1. P(x)  Q(x): множеством истинности конъюнкции будет пересечение множеств истинности конъюнктов – IPQ = IP  IQ = {6, 12, …, 6n…}
2. P(x)  Q(x): множеством истинности дизъюнкции будет объединение множеств истинности дизъюнктов – IPQ = IP  IQ = {2, 3, 4, 6, …, 2n , 3n…}
3. P(x): множеством истинности отрицания будет исключение множества истинности предиката из множества его определения – IP = N \ IP = {1, 3, 5, …, 2n - 1,…}
4. P(x)  Q(x): множеством истинности импликации (логического следствия) будет
объединение множества истинности отрицания первого дизъюнкта и множества
истинности второго дизъюнкта (так как a  b =  a  b) – IPQ = IP  IQ = {1, 3, 5,
…, 2n - 1,…}  {3, 6, 9, …, 3n…}
Следующий пример показывает, как с помощью логики предикатов можно отыскать
утверждение, противоположное заданному, или, иначе говоря, отрицание заданной формулы. Найдем отрицание формулы (x) (y) R(x, y)  L(x, y):
 ((x) (y) R(x, y)  L(x, y)) = (x)  ((y) R(x, y)  L(x, y)) =
= (x) (y) (R(x, y)  L(x, y)) = (x) (y) (R(x, y)  L(x, y)) =
= (x) (y) (R(x, y)  L(x, y)).
Следующий пример относится к доказательству общезначимости, выполнимости или невыполнимости утверждений.
Докажем общезначимость формулы A = (x) (P(x)  Q(x))   (x) (P(x)  (x) Q(x)).
Считая, что формула A определена на любой области определения проведем равносильные преобразования:
A = (x) (P(x)  Q(x))  (x) (P(x)  (x) Q(x)) =
во второй части импликации изменяем квантор
в соответствии с законами взаимосвязи между кванторами
= (x) (P(x)  Q(x))  (x)  (P(x)  (x) Q(x)) =
переносим квантор общности в начало формулы,
т.к. квантор одинаково связывает обе части импликации
= (x) [(P(x)  Q(x))   (P(x)  (x) Q(x))] =
на основании закона x  y =  x  y
= (x) [ (P(x)   Q(x))   (P(x)  (x) Q(x))] =
= (x) [ ( P(x)   Q(x))   (P(x)  (x) Q(x))] =
18
вносим отрицание «под скобки»,
применяя законы Де Моргана
= (x) [(P(x)  Q(x))   P(x)  (x) Q(x)] =
= (x) [(P(x)  Q(x))   P(x)  (x)  Q(x)] =
применяем дистрибутивный закон
и закон x   x = 1
= (x) [(P(x)   P(x))  (Q(x)   P(x))  (x)  Q(x)] =
= (x) [(1  (Q(x)   P(x)))  (x)  Q(x)] =
на основании закона x  1 = x
= (x) [Q(x)   P(x)  (x)  Q(x)] =
= (x) [Q(x)  (x)  Q(x)   P(x)] =
= (x) [(x) (Q(x)   Q(x))   P(x)] =
наконец, по закону x  1 = 1, имеем
= (x) [1   P(x)] = 1.
Исчисление предикатов
Выше были рассмотрены исчисления логики высказываний, в частности классическое исчисление. Любое логическое исчисление должно включать:
 Алфавит (совокупность используемых символов)
 Синтаксические правила построения формул
 Аксиомы (общезначимые формулы)
 Правила вывода производных формул по аксиомам.
Рассмотрим отличия исчисления предикатов первого порядка от исчислений высказываний. Аксиомы исчисления высказываний преобразуются в аксиомы исчисления предикатов путем замены α  α(х), то есть логическая переменная α заменяется предикатом α(х).
Кроме того, вводятся две новые аксиомы:
 (х) α(х)  α(у),
α (у)   (х) α(х).
Множество правил вывода включает:
Правило Modus Ponens,
и правила введения кванторов
α   ├ α   (х) (х),
α   ├  (х) α (х)  .
Существуют также и неклассические исчисления предикатов первого порядка. Они могут
строиться на дополнении множества аксиом специфическими для данной предметной области общезначимыми формулами. Также могу использоваться следующие правила вывода:
Исключение квантора общности  (х) α(х) ├ α(х | А),
Исключение квантора существования  (х) α (х) ├ α(х | А),
Введение квантора существования α (А) ├  (х) α(х | А).
Здесь α(х) – произвольная формула логики предикатов, имеющая связанную квантором
переменную х, α(х | А) – формула α(х), в которой все вхождения переменной х заменены на
константу А.
19
Download