Московский государственный индустриальный университет
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3331 / 379 | Оценка: 4.17 / 3.79 | Длительность: 24:17:00
Специальности: Программист
Лекция 3:

Высказывания и предикаты

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >

Семантика предикатов

В предыдущей секции мы разобрались с синтаксисом языка предикатов. Теперь нужно обсудить семантику этого языка, то есть придать смысл каждой из цепочек, ему принадлежащих. Иными словами, нам необходимо придать смысл каждому из предикатов. Сделаем это в три этапа, рассмотрев сначала простейшие предикаты T и F, затем константные предикаты, а уж затем определим значение произвольного высказывания.

Определение 3.10. Предикат F имеет значение False ( Ложь ), а предикат Tзначение True ( Истина ).

Определение 3.11. Назовем предикат константным, если в нем не содержится ни одного идентификатора. Значение любого такого предиката находится с помощью таблицы истинности 3.2 и дерева вывода для него.

Таблица 3.2. Таблица истинности
\ b \ c \ !{} b \ b \lor c \ b \lors c \ b \land c \ b \lands c \ b \limp c \ b = c
T T F T T T T T T
T F F T T F F F F
F T T T T F F T F
F F T F F F F T T

Рассмотрим, например, константный предикат ((F\lor T) \Rightarrow F
). Изобразим дерево вывода для него и будем, двигаясь снизу вверх, заменять результаты операций в соответствии с таблицей истинности, пока не дойдем до самого корня дерева. Это последнее значение и будет считаться значением предиката (см. рис. 3.2).


Рис. 3.2.

Для задания семантики предиката, содержащего переменные, нам необходимо следующее определение состояния.

Определение 3.12. Состояние s — это отображение из множества идентификаторов в множество { T, F }. Пространство состояний переменных программы — это прямое произведение множеств состояний всех переменных программы.

Теперь можно дать определение значения любого предиката в заданном состоянии.

Определение 3.13. Значение предиката e в состоянии s (записывается как e(s) или s(e) ) совпадает со значением константного предиката, который получается из предиката e заменой всех идентификаторов на их значения в состоянии s.

Предикат ((a \lor T) \Rightarrow b ), например, в состоянии s=\{(a,T),
(b,F)\} имеет значение F, ибо именно таково значение константного предиката ((T \lor T) \Rightarrow F ).

Из таблицы истинности следует, что операции дизъюнкции \lor и условного Или \lors, а также конъюнкции \land и условного И \lands попарно эквивалентны. Это действительно так, но только до тех пор, пока мы остаемся в рамках действия определения 3.12. Для нужд описания реального мира, однако, полезно его несколько ослабить и разрешить некоторым переменным оставаться неопределенными.

Определение 3.14. Состояние s в расширенном смыслеотображение из множества идентификаторов в множество { T, F, U }, где символ U означает неопределенное (undefined) значение.

Большинство предикатов не имеют определенного значения в таком состоянии, в котором не определены некоторые из переменных, входящих в него. В частности, операции !, \lor, \land, \Rightarrow и = дают результат U, если хотя бы один из операндов имеет значение U. Совершенно другая ситуация с условными операторами. Для них справедлива таблица истинности 3.3.

Таблица 3.3. Таблица истинности для условных операторов
b T T F F T F U U U
c T F T F U U T F U
b || c T T T F T U T U U
b&&c T F F F U F U U U
Таблица 3.4. Таблица истинности предиката ((a \lor b) = (b \lor a))
\ a \ b \ (a \lor b) \ (b \lor a) \ ((a \lor b) = (b \lor a))
F F F F T
T F T T T
F T T T T
T T T T T

Среди огромного множества всех предикатов особую роль играют те из них, которые всегда являются истинными, как, например ((!(!a))=a).

Определение 3.15. Предикат называется тавтологией, если он истинен во всех состояниях, в которых он определен.

Один из простейших способов доказать, что предикат является тавтологией, — это вычислить его значения во всех возможных состояниях. Таблица 4 является доказательством того факта, что предикат ((a \lor b) = (b \lor a))тавтология.

Определение 3.16. Высказывания e1 и e2 эквивалентны, если предикат e1=e2 является тавтологией.

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

Предложение 3.2. Законы коммутативности:

((e_1\land e_2) = (e_2\land e_1));
((e_1\lor e_2) = (e_2\lor e_1));
((e_1=e_2) = (e_2=e_1)).

Предложение 3.3. Законы ассоциативности:

((e_1\land (e_2\land e_3)) = ((e_1\land e_2)\land e_3));
((e_1\lor (e_2\lor e_3)) = ((e_1\lor e_2)\lor e_3));
(e_1 \lands (e_2 \lands e_3)) =
((e_1 \lands e_2) \lands e_3));
((e_1 \lors (e_2 \lors e_3)) = ((e_1 \lors e_2) \lors e_3)).

Предложение 3.4. Законы дистрибутивности:

((e_1\land (e_2\lor e_3)) = ((e_1\land e_2)\lor (e_1\land
e_3)));
((e_1\lor (e_2\land e_3)) = ((e_1\lor e_2)\land (e_1\lor e_3)));
((e_1 \lands (e_2 \lors e_3)) =
((e_1 \lands e_2) \lors (e_1 \lands e_3)));
((e_1 \lors (e_2 \lands e_3)) =
((e_1 \lors e_2) \lands (e_1 \lors e_3))).

Предложение 3.5.Законы де Моргана:

((!(e_1\land e_2)) = ((! e_1) \lor (! e_2)));
((!(e_1\lor e_2)) = ((! e_1) \land (! e_2)));
((!(e_1 \lands e_2)) = ((! e_1) \lors (!e_2)));
((!(e_1 \lors e_2)) = ((! e_1) \lands (! e_2))).

Предложение 3.6. Закон отрицания:

((!(!e)) = e).

Предложение 3.7. Законы исключенного третьего:

(e \lor \, (! e) = T) ;

(e \lors (! e) = T), если e определено.

Предложение 3.8. Законы противоречия:

(e \land \, (! e) = F) ;

(e \lands (! e) = F), если e определено.

Предложение 3.9. Закон импликации:

((e_1 \Rightarrow e_2) = ((! e_1) \lor  e_2)).

Предложение 3.10. Закон равенства:

((e_1 = e_2)= ((e_1 \Rightarrow e_2)\land (e_2 \Rightarrow e_1))).

Предложение 3.11. Законы упрощения дизъюнкции:

((e\lor e) = e);
((e\lor T)  = T);
((e\lor F)  = e);
((e_1\lor (e_1\land e_2)) = e_1).

Предложение 3.12. Законы упрощения конъюнкции:

((e\land e) = e);
((e\land T)  = e);
((e\land F)  = F);
((e_1\land (e_1\lor e_2)) = e_1).

Предложение 3.13. Законы упрощения условного Или:

((e \lors e) = e) ;

((e \lors T)  = T), если e определено;

((e \lors F)  = e) ;

((e_1 \lors (e_1 \lands e_2)) = e_1).

Предложение 3.14. Законы упрощения условного И:

((e \lands e) = e) ;

((e \lands T)  = e) ;

((e \lands F)  = F), если e определено;

((e_1 \lands (e_1 \lors e_2)) = e_1).

Предложение 3.15. Закон тождества:

(e = e).
< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Анастасия Халудорова
Анастасия Халудорова
екатерина яковлева
екатерина яковлева