Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Logic.doc
Скачиваний:
233
Добавлен:
05.03.2016
Размер:
5.67 Mб
Скачать

§ 3. Истинностные значения формул

Истинность или ложность элементарных высказываний оставляется на совести той области знания, к которой они относятся. Логика позволяет по заданным истинностным значениям элементарных высказываний вычислять истинностные значения построенных из них сложных высказываний.

Прежде, чем переходить к формальным рассуждениям, введём следующие соглашения: вместо значения истина будем писать 1, а вместо значения ложь – 0. Интерпретацией формулы A(x1 , … , xn) назовём любой набор = (1 ; … ; n) значений переменных x1 = 1 , … , xn = n (i {0, 1}, 1 i n).

Теперь любой формуле исчисления высказываний A(x1 , … , xn) от пропозициональных переменных x1 , … , xn можно присвоить истинностное значение A() = A(1 , … , n ) {0, 1} при данной интерпретации = (1 ; … ; n) по следующим правилам:

(И1): если A(x1 , … , xn) – одна из пропозициональных переменных x1 , … , xn , то её истинностное значение уже определено: в случае A(x1 , … , xn) = xi полагаем A() = i ;

(И2): если A(x1 , … , xn) = (B(x1 , … , xn) C(x1 , … , xn)) или A(x1 , … , xn) = = , где – одна из логических связок , , , (т.е. формула A(x1 , … , xn) получена из более простых формул B(x1 , … , xn) и C(x1 , … , xn) с помощью одной из конструкций правила образования формул (Ф2)), а значения B() = B(1 , … , n ) и C() = С(1 , … , n ) уже вычислены, то истинностное значение A() = A(1 , … , n ) приписывается с помощью следующих аксиом логических связок:

B()

C()

()

(B() C())

(B() C())

(B() C())

(B() C())

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

Следует подчеркнуть, что законы вычисления этих логических связок являются именно аксиомами – они принимаются на веру. Часть из них согласуется со здравым смыслом и интуитивными описаниями значения логических связок. Некоторые значения менее очевидны, и осознание необходимости их использования нуждается в дополнительных аргументах, которые рождаются только в результате работы мысли.

Наиболее трудна для понимания аксиома вычисления импликации, в частности, нуждается в дополнительных аргументах тот факт, что при ложной посылке B() значение импликации всегда истинно. По смыслу логическая связка импликация означает следование, выводимость. Таким образом, нужно понять, почему из ложного утверждения выводится любое другое. В связи с этим невозможно не упомянуть случай, произошедший с Бертраном Расселом – известным специалистом по математической логике XX в. Он читал лекцию для философов, когда один из них попросил объяснить, почему из ложного утверждения можно вывести всё, что угодно ? Тогда Рассел для примера доказал, что из утверждения 22 = 5 следует, что он – Папа Римский. Вот это остроумное доказательство:

22 = 5, 2+2 = 2+3, 2 = 3, 1+1 = 2+1, 1 = 2,

Рассел и Папа Римский – их двое, но 2 = 1, так что они – одно лицо, ч.т.д.

Отметим ещё, что значение импликации огромно: любое научное утверждение формулируется в импликативном виде, т.е. в виде импликации A B. Например, теорема Пифагора “сумма квадратов катетов равна квадрату гипотенузы” на самом деле означает следующее: если ABCтреугольник с прямым углом C, то AB2 = AC2 + BC2. Точно так же формулируются и утверждения других наук: в них всегда должна присутствовать посылка А и заключение В, а само утверждение означает истинность импликации A B. Если посылка А истинна, то истинность импликации означает истинность заключения В. Если же посылка ложна, то импликация всё равно истинна. Поэтому, если вдруг выяснилось, что В ложно, это ещё не значит, что нарушен закон той или иной науки, просто, возможно, посылка А стала ложной, а импликация всё равно истинна.

Как с помощью сформулированных аксиом вычислить значение любой формулы при заданных значениях её пропозициональных переменных ? Значение формулы вычисляется последовательно, начиная со значений пропозициональных переменных в соответствии с построением самой формулы по правилу (Ф2) с применением на каждом шаге описанных выше аксиом.

Примеры: 1. Вычислить значение формулы ( b) при a = 1, b = 0.

Формула ( b) построена из формул и b путём применением конструкции (A B) правила (Ф2). Поэтому вначале нужно вычислить значения формул и b, а затем применить аксиому вычисления дизъюнкции. Значение b = 0 дано, а значение формулы вычисляется из заданного значения формулы a по аксиоме значения отрицания: = 0. Таким образом, по аксиоме значения дизъюнкции получаем в итоге ( b) = (0 0) = 0.

Следует отметить, что при других наборах значений переменных значение этой же формулы может быть другим. Например, если a = 0 = b, то = 1и ( b) = (1 0) = 1.

2. Вычислить значение формулы ( c) при a = 1, b = 1, c = 0 .

Опишем процесс построения формулы по правилу (Ф2), одновременно вычисляя на каждом шаге истинностные значения получаемых формул при заданных значениях пропозициональных переменных: a = 1, b = 1, c = 0, (a b) = 1, = 0, ( c) = (0 0) = 1. Таким образом, искомое значение равно 1.

Для a = 0, b = 0, с = 0 получим (a b) = (0 0) = 0, = 1, ( c) = (1 0) = 0.

Предыдущие примеры показывают, что значение формулы зависит от конкретного набора её пропозициональных переменных, т.е. от конкретной интерпретации формулы: при разных интерпретациях значения формулы могут быть различными. Поэтому говорить об истинности или ложности формулы, не указывая интерпретации, бессмысленно.

x1

xn

A(x1 , … , xn )

1

n

A(1 , , n )

На практике обычно заранее неизвестно, какие именно значения принимают пропозициональные переменные. Поэтому для нахождения всех истинностных значений формулы A(x1 , … , xn ) строят её таблицу истинности, т.е. таблицу указанного слева вида, которая имеет (как будет показано ниже) 2n строк, каждая из которых в первых n столбцах содержит конкретные значения 1 , … , n пропозициональных переменных x1 , … , xn , в последующих столбцах – вычисленные промежуточные значения более простых формул, из которых строится рассматриваемая формула, а в последнем столбце – значение формулы A(x1 , … , xn ) при интерпретации = (1 ; … ; n) . При этом в первых n столбцах таблицы истинности должны быть ровно по одному разу перечислены все возможные наборы значений пропозицииональных переменных x1 , … , xn .

Примеры: 1. Строим таблицы истинности формул b и .

a

b

b

a

b

a b

b a

0

0

1

1

0

0

1

0

1

0

0

0

1

1

1

0

1

1

0

0

1

0

1

0

0

0

1

0

0

1

1

0

0

1

1

0

1

1

1

1

0

1

0

0

a

b

c

1

2

3

4

5

6

0

0

0

0

0

0

0

0

1

0

0

1

0

1

1

1

1

1

0

1

0

0

0

0

1

0

1

0

1

1

0

1

1

1

1

1

1

0

0

0

0

1

0

0

1

1

0

1

0

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1


2. Построим таблицу истинности для формулы ((a b) c) ((a c) (b c)).

В ней цифрами обозначены формулы: 1 = (a b), 2 = (1 c), 3 = (a c), 4 = (b c), 5 = (3 4), 6 = 2 5. Такие сокращения удобны для построения таблиц истинности громоздких формул. Использованные в обозначениях числа определяют и порядок вычислений.

Для того чтобы успешно строить таблицы истинности формул, нужно иметь алгоритм перечисления всех возможных наборов значений n её пропозициональных переменных x1 , … , xn . Можно воспользоваться, например, двоичной системой счисления: каждая интерпретация = (1 ; … ; n ) отождествляется с двоичным числом изn двоичных цифр 1 , … , n {0, 1}, которое в десятичном виде выглядит как 12n–1 + … + n20. Наименьшее число 0 = 0 … 02 = = 02n–1+…+020 соответствует интерпретации = (0 ; … ; 0 ), а наибольшее 1 … 12 = 12n–1+…+120 = 2n–1+2n–2+…+2+1 = = 2n – 1 (по формуле суммирования геометрической прогрессии) – интерпретации = (1 ; … ; 1). Поэтому для перечисления всех интер­претаций достаточно исполь­зовать двоичные

0

2

10

2

10

2

10

2

0

00000

8

01000

16

10000

24

11000

1

00001

9

01001

17

10001

25

11001

2

00010

10

01010

18

10010

26

11010

3

00011

11

01011

19

10011

27

11011

4

00100

12

01100

20

10100

28

11100

5

00101

13

01101

21

10101

29

11101

6

00110

14

01110

22

10110

30

11110

7

00111

15

01111

23

10111

31

11111

коды чисел от 0 до 2n – 1, которые приве­дены в таблице (n = 5).

Здесь использована пя­тиразрядная двоичная запись чисел, но незначащие нули по мере необходимости можно отбросить так же, как это сделано в приводимых ниже примерах перечисления интерпретаций для n = 1, 2, 3, 4.

Примеры: n = 1: ,n =2: ,n = 3: ,n = 4:

Теорема (о правиле перечисления интерпретаций). В таблице, построенной путём выписывания n-значных двоичных кодов всех чисел от 0 до 2n – 1, перечисляются ровно по одному разу всевозможные наборы значений n пропозициональных переменных.

Доказательство. Как было отмечено, каждой интерпретации = (1 ; … ; n ) соответствует двоичное число изn двоичных цифр 1 , … , n , которое находится в диапазоне от 0 до 2n – 1. При этом разным интерпретациям будут отвечать и разные числа: если = (1 ; … ; n ) (1 ; … ; n) = , то . Кроме того, в результате такого сопоставления будут перечислены без пропусковвсе двоичные числа от 0 до 2n – 1 : число появится при рассмотрении интерпретации = (1 ; … ; n ).

Теорема доказана.

Следствие (о количестве наборов из нулей и единиц длины n). Количество всевозможных наборов длины n из нулей и единиц равно 2n . Столько же и строк в любой таблице истинности формулы от n переменных.

Доказательство очевидно, т.к. количество всевозможных наборов длины n из нулей и единиц равно количеству всевозможных интерпретаций для n пропозициональных переменных, которое (ввиду доказанной теоремы) равно количеству чисел от 0 до 2n – 1, т.е. 2n. Следствие доказано.

Следствие (о количестве подмножеств n-элементного множества). Любое n-эле­ментное множество содержит 2n подмножеств.

Доказательство. Пусть дано множество A = {a1 , … , an }. Каждому его подмножеству X A сопоставим набор (1 ; … ; n ) из нулей и единиц длины n, полностью определяющий это подмножество. Для этого положим i = 1, если ai X, и i = 0, если ai X (1 i n). Кстати, именно такой способ интерпретации множеств реализуется в некоторых языках программирования.

Примеры: Для множества A = {a1 , a2 , a3 } подмножеству Х = {a1 , a3} будет соответствовать набор (1; 0; 1), а подмножеству Х = {a2 } – набор (0; 1; 0). Пустому подмножеству (не содержащему элементов) будет сопоставлен набор (0; 0; 0), а всему множеству А – набор (1; 1; 1).

Легко понять, что по любому набору (1 ; … ; n ) из нулей и единиц длины n однозначно восстанавливается соответствующее ему подмножество: именно в множестве X нужно собрать все те элементы ai , для которых i = 1 (1 i n). Поэтому подмножеств в n-элементном множестве будет столько, сколько существует наборов из нулей и единиц длины n, т.е. 2n. Следствие доказано.

Пример. Перечислим все подмножества 4-элементного множества.

Будем перечислять подмножества, выписывая соответствующие им наборы нулей и единиц, построенные по двоичным числам из диапазона от 0 до 24 = 16:

набор

подмножество

набор

подмножество

0

(0; 0; 0; 0)

8

(1; 0; 0; 0)

{a1 }

1

(0; 0; 0; 1)

{a4 }

9

(1; 0; 0; 1)

{a1 , a4 }

2

(0; 0; 1; 0)

{a3 }

10

(1; 0; 1; 0)

{a1 , a3 }

3

(0; 0; 1; 1)

{a3 , a4 }

11

(1; 0; 1; 1)

{a1 , a3 , a4 }

4

(0; 1; 0; 0)

{a2 }

12

(1; 1; 0; 0)

{a1 , a2 }

5

(0; 1; 0; 1)

{a2 , a4 }

13

(1; 1; 0; 1)

{a1 , a2 , a4 }

6

(0; 1; 1; 0)

{a2 , a3 }

14

(1; 1; 1; 0)

{a1 , a2 , a3 }

7

(0; 1; 1; 1)

{a2 , a3 , a4 }

15

(1; 1; 1; 1)

{a1 , a2 , a3 , a4 }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]