Алгебра логики высказываний

Алгебра логики высказываний Основные понятия Исходным понятием логики высказываний является простое высказывание. Это понятие не определяется через другие понятия, так как является базовым. Под высказыванием обычно понимают всякое повествовательно предположение, утверждающее что-либо о чем-либо. Если смысл, содержащийся в высказывании, соответствует действительности, то высказывание называют истинным. В противном случае – ложным. Обычно элементарные высказывания обозначают строчными буквами латинского алфавита 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 строки. Кроме того, данная формула истинна на любом наборе значений своих переменных. Такие формулы называются тождественно истинными или тавтологиями. В противоположной ситуации, формула является тождественно ложной или невыполнимой. Если две разные формулы принимают одинаковые значения на любом наборе значений переменных, то такие формулы называют равносильными. Равносильные формулы будем обозначать знаком равенства =.^ Законы алгебры логики В логике высказываний известно много общезначимых формул, которые также называются законами логики высказываний. Основными законами являются следующие: законы идемпотентности:x  x = xx  x = xx  1 = xx  1 = 1x  0 = 0x  0 = xx   x = 0 – закон противоречияx   x = 1 – закон исключения третьего   x = x – закон снятия двойного отрицания законы поглощенияx  (y  x) = xx  (y  x) = x Доказательство этих и последующих законов элементарно осуществляется с помощью построения таблиц истинности или простейших логических рассуждений. Следующая группа законов представляет взаимосвязь между логическими операциями: (x  y) = (x  y)  (y  x)x  y =  x  y законы Де Моргана  (y  x) =  y   x  (y  x) =  y   x Замечательным следствием приведенных выше законов является следующий факт. Любую логическую формулу можно заменить равносильной ей, но содержащую только две логические операции: конъюнкцию или отрицание или дизъюнкцию или отрицание. Дальнейшее исключение логических операций, очевидно, невозможно, то есть приведенные пары представляют минимальный базис для построения правильно построенных формул. Однако существует операция, с помощью которой можно представить любую логическую связку. Эта операция получила название «штрих Шеффера» и определяется следующим образом: х у х | у 0 0 1 0 1 1 1 0 1 1 1 0 На основании этого определения можно ввести следующие законы, выражающие взаимосвязь операции «штрих Шеффера» и других логических связок: x = x | xx  y = (x | y) | (x | y) Также следует отметить, что x | y =  (x  y). К основным законам алгебры логики также относятся следующие: коммутативные законых  y = y  хх  y = y  х дистрибутивные законых  (y  z) = (х  y)  (х  z)х  (y  z) = (х  y)  (х  z) ассоциативные законых  (y  z) = (х  y)  zх  (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, длины 2n равно 22n. В частности, число различных функций от одной переменной равно четырем. х 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.^ Представление произвольной логической функции в виде формулы алгебры логики Пусть с помощью таблицы истинности задана произвольная функция алгебры логики 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. Дизъюнкция всех записан­ных конъюнкций и будет искомой формулой. Пусть, например, функция 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. Среди многочисленных ДНФ А существует единствен­ная ДНФ А, для которой выполняются перечисленные выше четыре свойства совершенства. Такая ДНФ А называется совершенной дизъюнктив­ной нормальной формой формулы А (СДНФ А). Как уже указывалось, СДНФ А может быть получе­на с помощью таблицы истинности. Другой способ получения СДНФ формулы ^ А основан на равносильных преобразованиях формулы и состоит в следующем: путем равносильных преобразований формулы А получают одну из ДНФ А. если в полученной ДНФ ^ А входящая в нее эле­ментарная конъюнкция В не содержит переменную xi, то, используя закон B  (xi   xi) = B, элемен­тарную конъюнкцию B заменяют на две элементарных конъюнкции (B  xi) и (B   xi), каждая из которых со­держит переменную xi. если в ДНФ А входят две одинаковых элементар­ных конъюнкции В, то лишнюю можно отбросить, пользу­ясь равносильностью В  В = В. если некоторая элементарная конъюнкция В, вхо­дящая в ДНФ А, содержит переменную xi и ее отрица­ние  xi, то, на основании закона xi   xi = 0, В = 0 и В, таким образом, можно исключить из ДНФ А, как нулевой член дизъюнкции. если некоторая элементарная конъюнкция, вхо­дящая в ДНФ А, содержит переменную xi дважды, то одну переменную можно отбросить, пользуясь законом xi  xi = xi. Ясно, что после выполнения описанной процедуры будет получена СДНФ А. Например, для формулы А = 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 = (х  у)  (  х   у). КНФ А называется совершенной конъюнктивной нормальной формой формулы А (СКНФ А), если для нее выполнены условия: Все элементарные дизъюнкции, входящие в КНФ А , различны. Все элементарные дизъюнкции, входящие в КНФ А, содержат все переменные. Каждая элементарная дизъюнкция, входящая в КНФ А, не содержит двух одинаковых переменных. Каждая элементарная дизъюнкция, входящая в КНФ А, не содержит переменную и ее отрицание. Можно доказать, что каждая не тождественно истин­ная формула имеет единственную СКНФ. Один из способов получения СКНФ состоит в исполь­зовании таблицы истинности для формулы  ^ А. Действительно, получив с помощью таблицы истин­ности СДНФ  А, мы получим СКНФ А, взяв отрицание  (СДНФ  А), то есть СКНФ А =  (СДНФ  А). Другой способ получения СКНФ, использующий рав­носильные преобразования, состоит в следующем: Путем равносильных преобразований формулы ^ А получают одну из КНФ А. Если в полученной КНФ А входящая в нее эле­ментарная дизъюнкция В не содержит переменную хi, то, используя закон В  (xi  xi) = В, элементар­ную дизъюнкцию В заменяют на две элементарные дизъ­юнкции В  xi и В   xi, каждая из которых содержит переменную xi. Если в КНФ А входят две одинаковых элементар­ных дизъюнкции В, то лишнюю можно отбросить, пользуясь законом В  В = В. Если некоторая элементарная дизъюнкция, вхо­дящая в КНФ А, содержит переменную xi дважды, то лишнюю можно отбросить, пользуясь законом xi  xi = xi. Если некоторая элементарная дизъюнкция, вхо­дящая в КНФ А, содержит переменную 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). ^ Минимизация булевых функций. Карты Карно Сложность логической функции, как уже было отмечено выше, определяется сложностью ее аналитической записи. Минимальной формой логической функции на некотором множестве фиксированных операций (базисе) можно считать та­кую, которая содержит минимальное число суперпозиций функций базиса, допус­кая и скобки. Однако построить эффективный алгоритм такой минимизации с по­лучением минимальной скобочной формы трудно. Более простой задачей минимизации является нахождение мини­мальная ДНФ функции. Для этой задачи существуют простые эффективные алгоритмы. Один из них основан на применении карт Карно.^ Карта Карно – это двумерная табличная форма представления булевой функции, позволяющая в наглядной графической форме легко отыскать минимальные ДНФ логических функций. Каждой клетке в таблице сопоставляется дизъюнкт СДНФ ми­нимизируемой функции, причем так, что любым осям симметрии таблицы соот­ветствуют зоны, взаимно инверсные по какой-либо переменной. Такое располо­жение клеток в таблице позволяет легко определить склеивающиеся термы СДНФ (отличающиеся знаком инверсии только одной переменной): они располагаются в таблице симметрично. Например, следующая карта Карно построена для импликации двух переменных х  у. В ячейки карты вписываются значения из таблицы истинности функции, при этом, если перед соответствующей переменной стоит знак отрицания, то в таблице истинности выбирается строка с ложным значением данной переменной, иначе – с истинным значением.Все четыре клетки соответствуют всем воз­можным конъюнкциям СДНФ функции 2 переменных. Единичные значения функ­ции показывают те дизъюнкты, которые присутствуют в СДНФ этой функции. Распо­ложения элементов в картах Карно функции 2 переменных таково, что в один конъюнкт эта переменная входит без отрицания, а в дру­гой – с отрицанием. Алгоритм поиска минимальной ДНФ по карте Карно основан на выявлении на карте минимального количества максимальных квадратов или прямоугольников со сторонами, равными степени двойки, так, чтобы они состояли только из ячеек, содержащих единицы. Для приведенной карты Карно единичные значения покрывают ячейки с координатами  х и у, соответственно искомая минимальная ДНФ будет  х  у. Рассмотрим другую логическую функцию f =  p  q  r  q  (p  r). Знаком  обозначается операция сложения по модулю 2 или «исключающее или» (XOR – eXclusive OR), которая определяется следующим образом: х у х  у 0 0 0 0 1 1 1 0 1 1 1 0 Таблица истинности для данной формулы имеет следующий вид: p q r f 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 Карта Карно для функции трех переменных должна содержать, очевидно, 8 ячеек. Подобную карту можно изобразить следующим образом:Для этой карты Карно единичные значения присутствуют в ячейках с координатами q   r и  q   p, соответственно минимальная ДНФ будет q   r   q   p. В силу симметрии карт Карно при построении прямоугольников возможно объединение ячеек, находящихся в крайних позициях, так как при ином расположении координат строк или столбцов (переменных без отрицания и с отрицанием) крайние ячейки окажутся внутри карты. Следующие две карты Карно эквивалентны (местами поменялись координаты r и  r) и на них указано корректное объединение ячеек в прямоугольные области:Карты Карно также удобны и для минимизации не полностью определенных функций. Например, пусть объявлена функция, у которой не определено часть значений: x y z f 0 0 0 – 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 – 1 1 0 1 1 1 1 – При построении карты Карно для этой функции неопределенные значения можно заменить любыми – 0 или 1. Таким образом, выявляя на карте Карно прямоугольники из единиц, можно использовать ячейки, не содержащие значений.Для данного примера минимальная ДНФ равна y   x.^ Решение логических задач средствами алгебры логики Суть применения методов алгебры логики к решению логических задач состоит в том, что, имея конкретные условия логической задачи, стараются записать их в виде формулы алгебры логики. В дальнейшем путем построения таблицы истинности или равносиль­ных преобразований упрощают полученную формулу. Наконец, простейший вид формулы, как правило, приводит к от­вету на все вопросы задачи. В качестве примера рассмотрим одну из элемен­тарных логических задач. По подозрению в совершенном преступле­нии задержали Брауна, Джона и Смита. Один из них был уважаемым в городе стариком, другой был малоиз­вестным чиновником, третий – известным мошенником. В процессе следствия старик говорил правду, мошенник лгал, а третий задержанный в одном случае говорил правду, а в другом – ложь. Вот, что они утверждали:^ Браун: «Я совершил это. Джон не виноват».Джон: «Браун не виноват. Преступление совершил Смит».Смит: «Я не виноват, виновен Браун». Необходимо определить имена старика, мошенника и чиновника и кто из них виноват, если известно, что преступник один. Решение этой задачи начинается с введения обозначений: буквами Б, Д и С обозначим высказывания: «виноват Браун», «виноват Джон» и «виноват Смит» соответст­венно. Тогда утверждения, высказанные задержанными, можно записать в виде конъюнкций: Б   Д,  Б  С, Б   С, из которых, по условию задачи, две ложны, а одна ис­тинна. Поэтому будет истинной формулаL = (Б   Д)  ( Б  С)  (Б   С). Таблица истинности этой формулы имеет вид: Б Д С Б   Д  Б  С Б   С L 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 Из таблицы видно, что формула L истинна в пяти из восьми случаев. Случай, представленный в пятой строке, следует ис­ключить из рассмотрения, так как здесь оказываются истинными две конъюнкции, а это противоречит усло­вию задачи. В строках 4, 6 и 7 оказываются истинными по два высказывания: Д и С, Б и С, Б и Д, соответственно, что также противоречит условию задачи. Следователь­но, справедлив случай 7, то есть преступник – Смит. Он – известный мошенник, и оба его высказывания лож­ны: Б   С  0. При этом высказывания Б и Д ложны. Значит, истинна пара высказываний Джона, а у Брауна первое высказывание ложно, а второе истинно. Отсюда ясно, что Джон – уважаемый в городе старик, а Браун – Малоизвестный чиновник.^ Исчисление высказываний Для определения значения логических формул можно воспользоваться таблицами истинности. Однако, построение таблицы истинности не всегда возможно или удобно. Например, в силу ее значительной размерности для большого числа переменных. Поэтому, наряду с таблицами истинности пользуются и другими, аналитическими способами вычисления значений логических формул.^ Логическим исчислением или просто исчислением называют четверку, которая включает в себя: Алфавит (совокупность используемых символов); Синтаксические правила построения формул в алфавите; Аксиомы (общезначимые формулы или тождественно истинные формулы); Правила вывода по аксиомам производных формул или теорем.Основное назначение исчисления высказываний – доказательство истинности формул на основании аксиом или других истинных формул. Для этого вводятся специальные правила вывода вида α ├ , где α называется условием,  – следствием, которые позволяют по истинности α заключить об истинности . Если в условии или следствии несколько формул, то они записываются через запятую. Если из истинности всех формул, входящих в условие, следует истинность всех формул входящих в следствие, правило называют состоятельным. Доказательство состоятельности можно осуществить через построение таблицы истинности, где в строках перечислены все модели условия. Если всем этим условиям соответствуют истинные следствия, то правило состоятельно.^ Классическое исчисление высказываний Исчислением высказываний называют исчисление, в котором в качестве алфавита взят алфавит логики высказываний, в качестве синтаксических правил – синтаксические правила логики высказываний, в качестве аксиом – некоторое множество общезначимых формул, а в качестве правил – правила Modus ponens и правило подстановки.В классическом исчислении высказываний приняты следующие аксиомы:α  (  α),(α  (  γ))  (( α  )  (α  γ)),(α  )  α,(α  )  ,α  (α  ),  (α  ),(α  )  ((α  γ)  (α  (  γ)),(α  γ)  ((  γ)  ((α  )  γ)),(α  )  (  α),α  α,α  α.Классическое исчисление высказываний использует два правила вывода: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), если: либо B H, либо B – доказуемая формула исчисления высказываний, либо B получается по правилу Modus ponens из формул C и C  B, которые выводимы из совокупности H.Примеры Рассмотрим, как можно установить доказуемость формул, используя правило подстановки и правило Modus ponens. Доказать A  A  A Возьмем аксиому (α  γ)  ((  γ)  ((α  )  γ)) и сделаем в ней подстановку (α, γ,   A, A, A). Получим: (A  A)  ((A  A)  ((A  A)  A)); Докажем выводимость A  A: Возьмем аксиому (α  (  γ))  (( α  )  (α  γ)) и сделаем в ней подстановку (α, γ,   x, y, x). Получим: (x  (y  x))  ((x  y)  (x  x)); Из аксиомы x  (y  x) и правила Modus ponens имеем: (x  y)  (x  x); Выполним подстановку (y  x). Получим: (x  x)  (x  x); Из аксиомы x  x и правила Modus ponens имеем: x  x; Из формулы x  x и правила Modus ponens имеем: (A  A)  ((A  A)  A); Аналогично: (A  A)  A; Формула доказана.^ Логика предикатов В алгебре логики высказываний собственно высказывания рассматриваются как неразделимые целые и только лишь с точки зрения их истинности или ложности. Стуктура высказываний или их содержание не рассматриваются. Другим недостатком логики высказываний является ее многословность – даже для описания простых ситуаций требуется значительное количество логических переменных и формул. Главная идея логики предикатов заключается во взаимнооднозначном сопоставлении каждого уникального объекта с индивидуальной объектной константой, обозначаемой именем объекта, а класс однотипных объектов – с объектной переменной, значением которой являются объектные константы. Например, рассмотрим высказывание «7 – простое число». Эту фразу в логике высказываний можно представить с помощью логической переменной, предположим a. Для того, чтобы представить на языке логики другое высказывание «13 – простое число» понадобится другая переменная. Таким образом, для описания простых чисел нам понадобится столько логических переменных, сколько существует простых чисел. На языке логики предикатов эта фраза может быть представлена так: простое_число(7). А весь набор подобных фраз: простое_число(значение). В данном примере простое_число – это предикатный символ, 7 – объектная константа, а значение – объектная переменная.Предикатом называют высказывательную функцию, определенную на множестве наборов значений объектных переменных. Эта функция может принимать только два значения: Истина или Ложь, называемые истинностными значениями. Предикаты могут быть одноместными, если аргумент один, или многоместными – если аргументов несколько. Отношения между объектами среды, также как и в логике высказываний, представляются в виде предложений (формул), состоящих из переменных, констант, связок, скобок, а также функций, предикатов и кванторов.^ Объектные константы Объектная константа или просто константа взаимнооднозначно сопоставляется в процессе интерпретации с каким-либо одним объектом и обозначается строкой символов, начинающихся с прописной буквы.^ Объектные переменные Объектные переменные или просто переменные обозначаются строкой, начинающейся со строчной буквы. Областью значений каждой переменной является множество констант, в общем случае бесконечное.Функции Если некоторый объект в точности соответствует множеству других, то используют функции. Например, если объектами являются двоичные цифры и десятичные цифры, то любому двоичному можно однозначно сопоставить десятичное, и выразить это сопоставление в виде функции преобразование_2_в_10(x, y, z), где x, y, z – двоичные числа, а значение функции – десятичное. Выражение преобразование_2_в_10 называют функциональным символом. Функция в логике предикатов не предполагает обязательного наличия алгоритма вычисления ее значения по аргументам. Она лишь задает с помощью констант и переменных определенное отношение между объектами, соответствующими ее аргументам, и каким-то одним объектом.Термы Константы, переменные и функции являются темами. Как именно выбирать термы для представления знаний – решать разработчику. Рассмотрим, например, среду, состоящую из объектов птицы и крылья. Пусть, также, нам известно, что птицы имеют крылья. Введем константы, обозначающие конкретных птиц: Воробей, Синица, Голубь, и константу Крылья. Введем переменную х, определенную на множестве птиц. Функциональный символ имеет ставит во взаимно однозначное соответствие любой птице объект крылья. Функция имеет (х) задаёт отношение между объектом крылья и какой-либо птицей х. Если х = Воробей, то имеет (Воробей) = Крылья. Функция может и не содержать аргументов, то есть иметь один функциональный символ. Термы, не содержащие аргументов, то есть константы, переменные и функции без аргументов называют элементарными термами. ^ Предикатный символ Как и в случае с функцией предикаты начинаются с предикатного символа и следующими за ним в скобках упорядоченного набора переменных или констант, соответствующих объектам, которые находятся в поименованном отношении. С помощью предикатов задаются произвольные отношения между объектами, если аргументов несколько. Если аргумент только один, то предикат описывает свойство объекта, заданного аргументом. Так, например, если два человека Маша и Саша являются братом и сестрой, то это отношение может быть выражено с помощью предиката брат_сестра (Маша, Саша). Предикат может принимать значение Истинно или Ложь. Если предикат Истинен, то отношение имеет место, иначе – не имеет. Отношение между птицами и крыльями также может быть выражено с помощью предиката. Пусть предикат крылья(х) Истинен, если х имеет крылья, тогда при х = Воробей конструкция крылья(Воробей) будет представлять знания о том, что у Воробья есть крылья.Атомы Выражение предикатный_символ (терм, терм, …, терм) называют атомом. Атом представляет предикат. Особо выделяется атом, предикатным символом которого является знак равенства, а аргументами два терма. Этот атом можно было бы представить как равны (терм, терм) или = (терм, терм), но, как правило, его записывают в обычной инфиксной форме терм = терм. Этот атом истинен, когда значения обоих термов совпадают. Атомы без знака отрицания ил