Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕОРИЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ.doc
Скачиваний:
186
Добавлен:
01.04.2015
Размер:
2.27 Mб
Скачать

Аксиоматическая семантика

Аксиоматическая семантикабыла создана в процессе разработки метода доказательства правильности программ. Данный метод распространяет на программы область применения исчисления предикатов. Семантику каждой синтаксической конструкции языка можно определить как некий набор аксиом или правил вывода, который можно использовать для вывода результатов выполнения этой конструкции. Чтобы понять смысл всей программы (то есть разобраться, что и как она делает), эти аксиомы и правила вывода следует использовать так же, как при доказательстве обычных математических теорем. В предположении, что значения входных переменных удовлетворяют некоторым ограничениям, аксиомы и правила вывода могут быть использованы для получения (вывода) ограничений на значения других переменных после выполнения каждого оператора программы. В конце концов, когда программа выполнена, мы получаем доказательство того, что вычисленные результаты удовлетворяют необходимым ограничениям на их значения относительно входных значений. То есть, доказано, что выходные данные представляют значения соответствующей функции, вычисленной по значениям входных данных.

Такие доказательства показывают, что программа выполняет вычисления, описанные ее спецификацией. В доказательстве каждый оператор программы сопровождается предшествующим и последующим логическими выражениями, устанавливающими ограничения на переменные в программе. Эти выражения используются для определения смысла оператора вместо полного описания состояния абстрактной машины (как в операционной семантике).

2.1.2.1. Краткое введение в исчисление высказываний

Аксиоматическая семантика основана на математической логике. Будем называть предикат, помещенный в программу высказыванием(иногда употребляют терминутверждение).Высказывание, непосредственно предшествующее оператору программы, описывает ограничения, наложенные на переменные в данном месте программы. Высказывание, следующее непосредственно за оператором программы, описывает новые ограничения на те же (а возможно, и другие) переменные после выполнения оператора.

Обычно термин высказываниеиспользуется для логических переменных, принимающих одно из двух значенийFиТ, которые представляют понятия «ложь» и «истина». На значениях типа «логический» определены пять операций: отрицание: (NOTb), конъюнкция: (bANDс), дизъюнкция: (bORс), импликация: (bс), равенство: (b = с). Высказывания строятся по следующим правилам.

1.FиТ– высказывания.

2.Идентификаторы (непустая последовательность букв и цифр, начинающаяся с буквы) являются высказываниями.

3.Если b– высказывание, то (NOT b) высказывание.

4.Если bис– высказывания, то (bOR с), (bANDс), (b = с), (bс) – также высказывания.

Вычисление постоянных высказываний, содержащих в качестве операндов только константы, имеет три определяемых структурой высказывания Eслучая:Eбез операций,Eс одной операцией,Eс более чем одной операцией.

1.Значение ТестьТ, значениеFестьF.

2.Значения (NOTb), (bANDс), (bORс), (bс), (b = с), гдеbис– константыFиТв любой комбинации, определяются по таблице, называемойтаблицей истинности.

b

c

NOTb

b ANDс

b ORс

b с

b = с

F

F

T

F

F

T

T

F

T

T

F

T

T

F

T

F

F

F

T

F

F

T

T

F

T

T

T

T

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

Состояниеs– это функция из множества идентификаторов в множество значенийFиТ. Высказывание E определено в состоянии s, если каждый идентификатор изEвстречается вs.s(E) – значениеEв состоянииs– получаемое заменой всех вхождений идентификаторовbв высказываниеEна их значенияs(b) и вычислением получившегося постоянного высказывания.

Тавтология – высказывание, истинное в любом состоянии, в котором оно определено.

Высказывание выражает, или описывает, множество состояний, в котором оно истинно.

Правила старшинства операций:

1.Последовательность одноименных операций вычисляется слева направо.

2.Порядок вычислений различных между собой и смежных в записи высказывания операций определяется списком: NOT, AND, OR, , =.

Вычисление высказываний редко бывает самоцелью. Чаще необходимо манипулировать ими, чтобы вывести «эквивалентные», но более простые высказывания.

Высказывания Е1иЕ2эквивалентны, если и только еслиЕ1 = Е2есть тавтология. ЗдесьЕ1Е2эквивалентность.

1. Законы коммутативности: (Е1Е2) = (Е2Е1),- обозначает операции = ,AND, OR.

2. Законы ассоциативности: (Е1Е2)Е3=Е1(Е2Е3),- обозначает операцииAND, OR.

3. Законы дистрибутивности: (Е1Е2)Е3= (Е1Е3)(Е2 Е3),и- обозначают операцииAND, OR.

4. Законы де Моргана:NOT(Е1Е2) =NOTЕ1NOT Е1),и- обозначают операцииAND, OR.

5. Закон отрицания:NOT (NOT Е1) =Е1.

6. Закон исключенного третьего:Е1ORNOTЕ1 = Т.

7. Закон противоречия:Е1ANDNOTЕ1 = F.

8. Закон импликации: : (Е1Е2) =NOTЕ1ORЕ2.

9. Закон равенства: (Е1 = Е2) = (Е1Е2)AND (Е2 Е1).

10.Законы упрощения OR:Е1 ORЕ1 = Е1, Е1 OR(Е1 ANDЕ2) =Е1,Е1 ORТ = Т, Е1ORF = Е1.

11.Законы упрощения AND:Е1 ANDЕ1 = Е1, Е1 AND(Е1 ORЕ2) =Е1,Е1 ANDТ = Е1, Е1 ANDF = F.

12.Закон тождестваЕ1 = Е1.

Для вычисления высказываний используют правила подстановки и транзитивности.

Правило постановки: Еслие1 = е2– эквивалентность, аЕ(х) – высказывание, записанное как функция от одного из своих идентификаторовх. ТогдаЕ(е1) =Е(е2) иЕ(е2) =Е(е1) эквивалентности.

Правило транзитивности: Еслие1 = е2ие2 = е3– эквивалентности, тое1 = е3- эквивалентности.

Для формулирования развернутых высказываний используются кванторы.

Квантор существования (i: mi<n:Ei).

Квантор всеобщности (i: m i < n: Ei) = NOT (i: m i < n: NOT Ei)

Множество значений, удовлетворяющих mi<n, называетсяобластью значений квантифицированной переменнойi.

Вхождение идентификатора i в предикат называетсясвязанным, если оно находится в области действия квантораiилиi, исвободнымв противном случае.

В одном и том же выражении один и тот же идентификатор не может быть как связанным, так и свободным и идентификатор не может быть связан двумя различными кванторами.