- •Построение доказательств в логике высказываний
- •Аксиоматический метод
- •Принцип резолюций
- •Метод Вонга
- •Метод натурального исчисления
- •Задания на практическую работу по логике высказываний
- •Решения
- •Примеры решения задач
- •С помощью средств предыдущего примера доказать клаузу:
- •Составить легенды для приведенных ниже четырех клауз.
- •Операции над предикатами и кванторами
- •Построение доказательств в логике предикатов
- •Задания на практическую работу по логике предикатов
- •Разбор решений задач по логике предикатов
Операции над предикатами и кванторами
Предикат— это функциональное высказывание, а высказывание — предикатная константа.логика предикатов— это расширение логики высказываний за счет использования предикатов в роли логических функций. Эти функции несколько отличаются от функций, которые мы использовали в логике Буля. Булева функцияоднородна, т.е. для нее область значений функции и область изменения аргументов по типу одна и та же —логическая(либоистина, либоложь). Для предикатов же область значений функции —логическая, а область изменений аргументов —предметная. Таким образом, эта функция —неоднородна. Приведем примеры предикатных функций. Пусть имеется ряд простых высказываний:
Р1 = «Иван читает Достоевского»,
Р2 = «Петр читает Достоевского»,
……………………………………..
Рn= «Степан читает Достоевского».
Вместо высказываний Р1, Р2,... , Рnмы могли бы ввестиодноместный предикатР(х), для которого переменная х принимала бы значения из предметной обл; типа —
х = {Иван, Петр, ... , Степан},
а сама предикатная функция передавалась бы словами:
Р(х) = « х читает Достоевского».
Теперь изменим исходный ряд высказываний на другой:
Р1 = «Иван читает Достоевского»,
Р2 = «Петр читает Толстого»,
…………………………………
Рn= «Степан читает Чехова».
Здесь можно было бы ввести уже двухместный предикат—
Р(х, у) = « х читает у »
с дополнительной предметной областью —
у= {Достоевский, Толстой, ... , Чехов}.
Введем трехместный предикатР(х, у,z), который означает, что
« х есть сумма у и z».
Допустим, в процессе вычислений переменная х приняла конкретное значение, равное 5. Тогда трехместный предикат превратится в двухместный:
Р(5, у, z) = Р’(у,z) = « 5 есть сумма у иz».
При х = 5 и у = 3 получим одноместный предикат:
Р(5, 3, z) = Р'(3,z) = Р"(z) - « 5 есть сумма 3 иz».
Наконец, если добавить условие z= 2 , то исходный предикат становитсянулъместным предикатом (константой или высказыванием), который в данном случае принимает истинное значение:
Р1 = Р(5, 3, 2) = « 5 есть сумма 3 и 2 » = 1.
Но могло случиться, что z= 1 тогда имели бы ложное высказывание:
Р0 = Р(5, 3, 1) = « 5 есть сумма 3 и 1 » = 0.
Таким образом, при замещении переменной xiпредметной постоянной аi, происходит превращениеn-местного предикатаP(x1,...,xi,..., хn) в (n— 1)-местный —P(x1,..., аi,...,xn). Приписав конкретные значения всем аргументам предикатной функции —P(a1,...,ai,...,an), мы тем самым получаем предикатную константу, к которой применимы все законы логики высказываний.
Функциональная природа предиката влечет за собой введение еще одного понятия — квантора. Роль его выясним на следующих двух примерах:
1) «Все люди смертны. Сократ человек. Следовательно, Сократ смертен.»
2) «Некоторые люди гениальны. Сократ человек. Следовательно, Сократ гениален.»
Во втором примере хорошо чувствуется ложность заключения, поскольку интуитивно мы понимаем, что Сократ мог и не попасть в число гениальных людей.
Итак, ключевыми словами в наших примерах являются «все» и «некоторые». Когда какое-нибудь правило распространяется на всех индивидуумов, оно, естественно, распространяется и на Сократа. Когда же правило касается только некоторых, оно может оказаться в отношении Сократа как раз и неверным.
Термин «все х» обозначается в логике предикатови называется квантором общности (символесть перевернутая буква А, которая является начальной буквой английского словаAll— «все»). Термин «некоторыех» или «существует хотя бы одно значениех» обозначается черези называется квантором существования (символесть перевернутая буква Е, являющаяся первой буквой английского словаExist— «существовать»).
Выставляя кванторы перед предикатами, мы как бы усиливаем или ослабляем их действие. Так, выражение
означает «для всех без исключения х изХсвойствоРистинно», а выражение
означает «существует по крайней мере одно значение хизХ, для которого свойствоРистинно». Мы не будем использовать так называемые свободные переменные, т.е. не будем рассматривать предикатные функции, аргументы которых не связаны ни квантором общности , ни квантором существования . Сказать «для всеххсвойство Р истинно» — это все равно, что сказать «конъюнкция всех значений предикатной функции равна единице»:
Квантор существования означает дизъюнкцию всех значений предикатной функции:
Оба квантора можно отрицать и выражать один через другой на основе закона де Моргана:
Отсюда
Пример. Пусть предикат Р(х)означает, что «хявляется простым числом». Когдахбудет пробегать ряд натуральных чисел —.
P(1)=0,P(2)=1, Р(3) = 1, Р(4) = 0, Р(5) = 1, Р(6) = 0, Р(7) = 1, …
-- не верно, что все натуральные числа – простые, т.е. найдется натуральное число, которое не является простым --
-- нет ни одного натурального числа, которое было бы простым, т.е. все натуральные числа не являются простыми числами --
Пусть предметная область предиката Р(х) состоит всего из двух конкрет] значений а и b. Учитывая, что
Ух Р(х) = Р(а) & Р(А), Зх Р(х) = Р(а) vP(ft) ,
составим табл. 1.25, из которой непосредственно вытекают три элементар] клаузы:
Вместо Р(я) в последних выражениях можно было бы взять Р(й) — семантика клауз от этого не изменится, а она такова: если выражение «для всех х свойство Р выполняется» является истинным, то для конкретного значения х, равного а, это свойство тоже будет выполняться. Первая клауза является предикатной формой выражения аксиомы порядка:
V* Р(*) = Р(а), Р(*)=>Р(а).
Таблица 1.25
Р(а) |
Р(А) |
VJT Р(х) |
3JTP(jr) |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
Действие ее продемонстрируем на уже знакомом нам примере, который сейчас мы сформулируем более отчетливо:
Для всех х справедливо правило: если х — человек, то х смертен. Сократ человек. Следовательно, Сократ смертен.
Введем два предиката:
А(дг) = «х — человек» и В(л') = «х смертен».
Примем также, что а = «Сократ». Составим клаузу, соответствующую нашей легенде:
V* (А(х) -> В(*)), А(Й) => В(й) .
Для ее доказательства достаточно перенести вторую посылку вправо за знак метаимпликапии, чтобы клауза сразу же удовлетворяла аксиоме порядка в предикатной форме:
V* (А(лг) -> В(х)) => А(Й) -> В(я) .
Ясно, что второй пример с заключением о гениальности Сократа является ложным выводом, поскольку приводит к клаузе, противоречащей аксиоме порядка:
3JC(А(х) -> В(д-)) => А(й) -> В(«) .
Справедливы законы
x(А(x) & В(x)) =xА(x) &xВ (x) ,
x(А(x)vВ(x)) =xА(x)vxВ(x) .
Если в предыдущих клаузах поменять кванторы на противоположные, то придется эквивалентность изменить на импликацию
x((А x) & В(x)) =>xА(x) &xВ(x)
xА(x)vxВ(x) =>x(А(x)vB(x)) .
Чтобы показать, что импликация в обратную сторону не верна, достаточно привести пример. Пусть A(x)=«х – четное число»,B(x)=«х – нечетное число».
В логике предикатов, как и в логике высказываний или логике Буля, действует принцип двойственности. Клауза останется в силе, если ее посылки и заключения поменять местами, но при этом одновременно произвести замену:
на,на, л наv,vна л, 0 на 1, 1 на 0.
Установленное свойство кванторов в отношении дизъюнкции отражается на импликации, поскольку она может быть выражена через дизъюнкцию. Поэтому справедливы следующие выражения;
х(А(х) ->B(х)) =хА(х) ->хВ(х) ,
хА(х) ->хВ(х) =>х(А(х) -> В(х)) .
Чтобы сохранить отношение эквивалентности при вынесении за скобки квантора при конъюнкции и кванторапри дизъюнкции, когда даны два различных предиката, прибегают к введению дополнительной переменной, например:
хА(х) &хВ(х) =хА(х) &уB(у) =ху (А(х) & В (у))
Аналогично поступают в других случаях:
хА(х)vхВ(х) =х y(A(х)vВ (y)) ,
хА(х) ->хВ(х) =хy(А(х) -> В(у)) ,
хА(х)vхВ(х) =х y(А(х)vВ (у)) = yх(А(х)vВ (у))
Последний пример показывает, что кванторы иможно переставлять местами, если они независимы (в данном случае они относятся к независимым одноместным предикатам).
Рассмотрим всевозможные комбинации кванторов при двухместных предикатах. С помощью законов коммутативности и ассоциативности для конъюнкции и дизъюнкции доказывается справедливость двух тождеств:
xyР(x,у) =y xР(x,у) ,xуР(x,у) =у xР(x,у} ,
т.е. одинаковые кванторы при двухместных предикатах можно переставлять местами. Но перестановка кванторов иподчинена только отношению порядка:
хyР(х,y) =>y хР(х,y) .
В обратную сторону импликация неверна.
Положим: х-- шляпа,y-- человек. Р(х,y) – «шляпа пришлась человеку впору».
Истинными являются следующие клаузы:
|
хyР(х,y) =>х yР(х,y) |
|
хyР(х,y) =>х yР(х,y) |
|
хyР(х,y) =>х yР(х,y) |
|
хyР(х,y) =>х yР(х,y) |
|
хyР(х,y) =>х yР(х,y) |
|
хyР(х,y) =>yхР(х,y) |
|
хyР(х,y) =>х Р(х,х) |
|
х Р(х,х) =>х yР(х,y) |
|
хyР(х,y) => Р(a,b) |
|
Р(a,b) =>х yР(х,y) |
|
yР(a,y) =>yхР(х,y) |
|
yР(a,y) =>х yР(х,y) |
|
хР(х,b) => y хР(х,y) |
|
хР(х,b) => х yР(х,y) |
|
х yР(х,y) => yР(a,y) |
|
y хР(х,y) => yР(a,y) |
|
х yР(х,y) => хР(х,b) |
|
yхР(х,y) => хР(х,b) |
Таблица 1.2
P{e, a) |
P(e. ti) |
P(*. a) |
P{A, b) |
VVP |
3VP |
V3P |
33 P |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
о |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
o" |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
о |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Пять первых клауз из приведенного списка являются для нас сейчас особен] важными, так как они дают ключ к пониманию процедуры составления исти ных клауз для многоместных предикатов с любым числом кванторов. Эту прои дуру схематично можно пояснить следующим образом. Для одноместных пред катов справедливы три клаузы:
VP=>VP,VP=> ЗР, ЗР => ЗР , Клауза
ЗР^ VP
является ошибочной. Для двухместных предикатов будут верны уже девять кла; четыре из которых являются тождествами, а пять других как раз и возглавля: приведенный список:
V(VP) =>V(VP),V(VP)rr> 3(VP), 3(VP) => 3(VP),V(VP) =>V(3P),V(VP) => 3(3P), 3(VP) => 3(3P),V(3P) ^>V(3P),V(3P) => 3(3P), 3(3P) => 3(3P).
Клаузы-тождества не следует отбрасывать, если мы хотим построить следующий ряд для трехместных предикатов, например:
v(WP) => 3(wP), v(V3P) => 3(V3P).
Зная процедуру построения правильных клауз, легко распознать истинность клауз, в частности:
3VV3VP=> 33V33P- истинная, 33V3VP=> 3VV33P- ложная.
Соседние одинаковые кванторы в многоместных предикатах можно переставлять в любом направлении; что же касается различных кванторов, то здесь допустима лишь перестановка, описанная клаузой 6 в вышеприведенном списке:
... Зи W... Р(... , и,V, ...) => ...VrЗи ... Р(... , и,v, ...) .
Одинаковые кванторы могут быть объединены по схеме, продиктованной
клаузами 7 и 8:
... V«W... Р(... , и,v, ...) => ...VH... Р(... , и, и, ...) , ... 3v... Р(... ,v,v, ...) => ... Зи 3v... Р(... , и,v, ...) .
Законы конкретизации, представленные в списке следующими десятью клаузами (с 8 по 18) и являющиеся производными от первых шести клауз, естественно, распространяются и на многоместные предикаты.
В отношении дизъюнкции и конъюнкции двух многоместных предикатов действуют примерно те же законы эквивалентности, что и для одноместных. Если все кванторы соответствуют операции, то введение дополнительных переменных необязательно, например:
VjcVj- (А(х, у) л В(х, у)) *V* \?у А(*, у) лV*V> В(*, у) . Во всех остальных случаях необходимо вводить переменные:YJCЗу Уг ЗиVvVw(A(jc, у,z)vВ(и,v, и>)) = =VxЗуVzA(x, у,z)vЗйVvVwВ(н,v,w) .
Формализм теории предикатов, конечно, будет неполным без рассмотрения операции отрицания многоместных предикатов. Для понимания существа дела достаточно привести одно доказательство для двухместного предиката:
3* VyР(х, у) = Зх (Р(*, а) л Р(дг, и)) =V* (Р(х, а) л Р(х, Ъ)} =
- V*Vj> Р(х, у) = (Р(а, «)vР(а, Ь)) л (Р(А, а)vР(й, *)) -VjcЗу Р(х, у) .
Отсюда вытекает простое правило перемещения символа отрицания слева направо для многоместных предикатов, например:
VV3V3P = 3V3V3P = 333V3P = 33VV3P = 33V33P = 33V3VP .
Таким образом, чтобы произвести полное отрицание многоместного предиката с кванторами, необходимо прибегнуть к замене:
Зс^ V, РоР.
Процедура составления истинных клауз из предикатов с кванторами, описанная в предыдущем подразделе, позволяет построить булеан из кванторов (рис. 1.20).
VV3
33V
3VV
Булеан — это очень распространенный математический объект. Так, если кванторном булеане все символы Vзаменить на 0 и 3 — на 1, то получим булеа на 0,1 - векторах (рис. 1.21). Если дано множество из элементов — а, Ь, с, то всеeiподмножества образуют точно такой же булеан (рис. 1.22). Наконец, приведе пример из арифметики: делители числа 30 образуют аналогичный булеэ (рис. 1.23).
Булеан есть частично упорядоченное множество, на котором действуют заю ны логики множеств. Чтобы раскрыть его свойства, введем несколько определ1
НИИ.
Множество элементов любой природы называется линейно-упорядоченны. если любые два его элемента я и и связаны отношением порядка — либо а => либо b=> а. Множество называется частично упорядоченным, если имеютсяiкрайней мере два несопоставимых элемента, на которые не распространяется о ношение порядка.
Верхней границей подмножества QсRназывают такой элемент г еR, что д. всехqЕQсправедливо отношение порядкаq=> г. Нижней границей подмножес ваQсRназывают такой элемент г' еR, что для всехqеQсправедливо отнош ние г' =>q. Наименьшая верхняя граница называется супремумом (supQ), а наиб лъшая нижняя граница — инфимумом (infQ). Помимо супремума и инфимул-вводятся понятия точной верхней грани и точной нижней грани, которые мог
совпадать или не совпадать, соответственно, с супремумом и инфимумом. Точную верхнюю грань двух элементов обозначим через дизъюнкцию в vb, точную нижнюю грань — через конъюнкцию дли. Тогда в общем случае будем иметь:
a v b => sup (a, b) , inf(a, b) => а л Ь .
Множество Rназывается решеткой, если каждая пара его элементов обязательно имеет один супремум и один инфимум. МножествоVV,V3, 3Vи 33 (рис. 1.24) образует решетку, так как удовлетворяет указанному требованию, например:
sup (V3, 33) = 33, sup (V3, 3V) = 33, /n/(V3, 33) = V3, /n/(V3, 3V) = VV,
Множество a,b,c,d(рис. 1.25) не образует решетки, так как а иbимеют два инфимума и ни одного супремума, элементы с иdимеют два супремума и ни одного инфимума.
Решетка называется булевой или булеаном, если ее элементы удовлетворяют законам булевой логики — коммутативности, ассоциативности, дистрибутивности, нуля и единицы. Для кванторных решеток все четыре закона выполняются:
VV3vV3V=V3VvVV3 ,
(V3V v 3VV) v 33V = V3V v (3VV v 33V) ,
(VV3 л 3VV) v V3V = (VV3 v V3V) л (3VV v V3V) ,
V3Vv333 в 333,V3Vл 333 =V3V,
V3VvVVV=V3V,V3VлVVV-VVV.
Поскольку в кванторном булеане предполагаются только положительные предикаты, т.е. отсутствуют обратные элементы, типа V3V, то и в законе для нуля и единицы отсутствуют равенства, отражающие взаимное дополнение элементов. Однако вместоVVVи 333 можно взять полностью нулевой и единичный векторы, тогда уже все законы нуля и единицы будут выполняться, например:
V3VP v 3V3P = 1, V3VP л 3V3P = 0 .
Если для кванторов справедливы аксиомы логики множеств, то на них должны распространиться и все выводимые из них тождества, например, закон де Моргана'.
V3V v 3VV = V3VA3VV .
зэ
V3
3V
Аксиома порядка, которая может быть выражена клаузами:
VV3, 3VV => VV3, 33V => VV3; 33V, ...
также имеет место в логике предикатов. На первый взгляд выражения типа
VV3 =>VV3 л 3V3,VV3vЗУЗ => 3V3
противоречат аксиоме порядка. Однако подобные клаузы всегда заменимы то: дествами, поэтому ихможно представить аксиомой порядка. Тождества возник ют для линейно-упорядоченных элементов, каковыми и являются элементы У-
иЗУЗ:
sup(VV3, 3V3) =VV3v3V3 = 3V3,m/(VV3, 3V3) =VV3 л 3V3 =VV3.
Несопоставимые же элементы, к которым относятся, например, элементы V3; 3VV, уже не будут описываться тождествами, атолько отношением порядка:
V33 v 3VV => sup (V33, 3VV), in/(V33, 3VV) => V33 л 3VV. Так как
sup(V33, 3VV) = 333, /«/(V33, 3VV) =VVV,
в логике предикатов будут возникать совершенно специфические клаузы, не СЕ дящиеся к аксиоме порядка, типа —
V33 v 3VV => 333 , VVV => V33 л 3VV.
Рассматривая булеаны, нельзя не упомянуть о законе четырехполюсни. Действие его продемонстрируем сначала на числовом булеане делителей чи< 30 (см. рис. 1.23). Если наибольший общий делитель (НОД) двух чисел в и и ofзначить конъюнкцией (ял Ь), а наименьшее общее кратное (НОК) — через ди: юнкцию (avи), то в отношении этих двух арифметических понятий будут дей вовать все четыре закона булевой логики. Убедимся в справедливости законаiстрибутивно сти:
(а л Ь) vс = (avс) л (bvс);
при л=6,*=10ис=5получим:(6л10)у5 = (бу5)л(10у5),или 2v5 = 30AlO,t10 = 10. Но из арифметики известен закон: произведение любых двух чиселpaiпроизведению их НОД и НОК:ab=(avb}- (а л А). В частности, 6 • 10 = (6v1 • (6 л 10)-30-2.
Этот арифметический закон является прямым следствием булеановой стр туры делителей чисел. Подобный закон имеет место в любом булеане (х< смысл операций в нем может существенно меняться) и называется он зако> четырехполюсника. Четыре полюса, соответствующие числам 6,10, 2 и 30, взя1; на булеане подмножеств (рис. 1.22), связаны соотношением:
{и, Ъ] Ф {а, с] = {{а, Ь] и {а, с}} ® {{a,b}n{а, с}}.
Под символом Ф понимается прямое сложение множеств, при котором повтор* щиеся элементы не удаляются. В результате получим:
!я. и. а. с] - {а. 6, с} Ф {а}.
Закон четырехполюсника выполняется и для 0,1-векторов (рис. 1.21). Роль прямого сложения здесь заменяется на обыкновенное сложение единиц:
(111) + (001) = ((Oil)v(101)) + ((011) л (101)); 3 + 1=4. Число единиц в 0,1 -векторе а будем называть его модулем или длиной и обозначать] а\. Из табл. 1.25 и табл. 1.26 выпишем в символической форме модули предикатных векторов:
|Р(а)| = Р(*)| =2, 3 =3, 33 =15, V3
v=1;
= 9, 3V= 7,VV
1.
Р(А, /и)
Нетрудно убедиться в справедливости закона четырехполюсника для двухмерного предикатного булеана:
VV
V3v3V
V3A3V; 15 + 1 = 11 + 5 =
Таблица истинности для трехместных предикатов будет уже состоять из 256 строк. Чтобы определить модули 0,1-векторов кванторного булеана, таблицу истинности можно и не строить, но провести тщательный комбинаторный анализ. В итоге получим:
= 49, VV3 =81,
= 207, VV3 =225,
= 255, P(k,m,n) =128.
Кванторный булеан 3-го порядка наложен на векторный булеан 256-го порядка, причем его нижняя точка совпадает не с нулевым вектором, а с вектором первого уровня (00...01), верхняя же точка лежит на предпоследнем уровне (01... 11). Таким образом, кванторный булеан оказывается немного развернутым относительно векторного булеана. Тем не менее, закон четырехполюсника для него тоже выполняется, в частности:
3VV |
= 31, |
V3V |
33V |
= 175, |
3V3 |
VVV |
~~ -*•! |
333 |
VV3
V3V
VV3 v V3V
VV3 AV3V
81 +49 = 105 + 25 = 130.
Вообще, величина модуля вектора а является важной собственной характеристикой клауз, например:
3VV
=*>
V3V v 33V
VV3 v V3V
V33
31=>151;
105 => 225
и тождеств, например: 57 = 57 для закона дистрибутивности:
(VV3 л 3VV)vV3V
(VV3vV3V) л (3VVvV3V) |.
С помощью модулей можно осуществлять частичную проверку правильности логических действий, хотя в случае многоместных предикатов для такого контроля понадобится уже компьютер, -поскольку величина модулей даже для четырехместных предикатов исчисляется сотнями тысяч:
V333 + 3V33 = 65 025 + 63 135 = 128 160.