Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры МЛТА v.0.9.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
484 Кб
Скачать

61. Временные логики. Приложение временных логик к программированию.

Временные логики — модальные логики. Они строятся добавлением к логике высказываний новых законов, отражающих свойства времени.

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

— предусловие, — постусловие программы .

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

Программа называется тотально правильной по отношению к и , если она частично правильна по отношению к и , и обязательно завершает работу, если истинно. В этом случае используется запись .

Предусловие и постусловие связаны с конкретной задачей, которую требуется решить и для решения которой написана программа . Нужно доказать, что она правильна.

Проверка того, что программа действительно выполняет задачи, для решения которых она создавалась, - это задачи тестирования и верификации программы.

Для решения задачи верификации программы используются временные логики.

Основные идеи приложения временных логик к программированию сводятся к следующим двум положениям:

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

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

62

62. Алгоритмические логики. Принципы построения алгоритмической логики. Алгоритмическая логика Хоара.

Алгоритмические логики создавались с целью описания семантики языков программирования. Алгоритмические логики включают высказывания вида , читающиеся как «если до выполнения оператора S было выполнено , то после него будет ».

Опишем принципы построения алгоритмической логики .

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

Программа в состоит из операторов. Исходный оператор – присваивание х := е, где х – идентификатор, а е – выражение, составленное из идентификаторов и натуральных чисел.

Пусть состояние памяти после присваивания удовлетворяет условию А(х), где А – формула формальной арифметики. Тогда состояние, которое было до присвоения, опишем формулой А(х|е). иначе говоря, имеем высказывание .

Пусть два оператора , выполняются один за другим. Тогда этому соответствует логическая запись вида

.

Условный оператор – это конструкция

IF FI,

где - логические выражения, построенные из отношений при помощи логических связок; — последовательность операторов. Проверяются формулы при настоящем состоянии памяти. Если ни одна из не истина, то фиксируется ошибка. Если же некоторые истинны, то выбирается одна из них (неважно как) и выполняется последовательность операторов .

Если каждая из команд описана в логике как , то условный оператор описывается логической формулой IF FI{B}.

Циклам отвечает конструкция

DO OUT OD.

Выполняется оператор цикла следующим образом. Проверяются формулы при настоящем состоянии памяти. Если ни одна из них не истинна, то фиксируется ошибка. Если же некоторые истинны, то выбирается одна из них (неважно как). Если выбрана , то выполняется соответствующая последовательность операторов и выполнение цикла возобновляется. Если выбрана , то выполняется соответствующая последовательность операторов и выполнение цикла завершается.

Е сли каждая из команд описана в логике как , а как , то однократное выполнение цикла описывается логической формулой ├

и т.д. до бесконечности. Условие правильности k шагов цикла обозначим через . Цикл корректен, если

Но это бесконечно длинная формула. Она не является формулой языка . Появление таких формул — серьезная проблема для алгоритмических логик.

Основой для логики вывода правильных программ служат аксиомы Хоара (правила верификации). Они допускают интерпретации в терминах программных конструкций.

Сформулируем аксиомы Хоара, которые определяют предусловия как достаточные условия, гарантирующие, что исполнение соответствующего оператора при успешном завершении приведет к желаемым постусловиям.

1. аксиома присваивания: {k(х|е)}х := е{k}

2.

3.

4.

5. правило для условного оператора (краткая форма)

6. правило для условного оператора (краткая форма)

7. предусловия и постусловия цикла until (до) удовлетворяют правилу:

63, 64

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