Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / ЛЕКЦИИ / POSIBNIK / Виды и методы абстракции.DOC
Скачиваний:
36
Добавлен:
23.03.2015
Размер:
90.62 Кб
Скачать

Логические спецификации. Понятие инварианта цикла. Проектирование цикла при помощи инварианта. Доказательство конечности цикла.

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

Логические С. Определяют некоторую операцию с помощью формул полной корректности: {P} A {Q}. P – предусловие, Q –постусловие. Каждая такая ф-ла включает в себя два предиката –предусл-е и постусл-е , а также сегмент пр-мы. Эта ф-ла означает: если св-во Р изначально верно и если выполняется А, то св-во Q становится верным после этого выполнения. Имеют большое значение для верификации программ. Аксиомы: 1)для операторов присваивания – для того, чтобы Р было верным после выполнения x:=E (где Е - выражение), достаточно, чтобы P[E->x] (т.е. св-во Р после замены всех вхождений х на Е было верным предельно).{P[E->x]}x:=E{P}. 2)Аксиома для последовательного выполнения: если {P}A{Q} и {Q}B{R} то {P}A; B{R}.

3)Аксиома для альтернативы: если {P и C}A{Q} и {P и не C}В{Q} то {P} если С то А иначе В{Q}. 4)Аксиома для цикла: true ПОКА а)ПОКА С ПОВТОРЯТЬ А{не С}, б)если {P и C}A{P} то ПОКА С ПОВТОРЯТЬ А{P}. Если Р инвариантно по отношению к действию А, т.е. если выполнение А оставляет {P} истинным при исходно верном {P}, во всяком случае когда С верно, то {P} тоже инвариантно по отношению к циклу. {P} наз. инвариантом цикла. Играет огромную роль при проектировании циклов, а значит и при построении программы систематическими методами. Цикл ПОКА определён: a)условием окончания {C}, б)инвариантом цикла {P}, в)действием А. Инвариант часто предстаёт в форме «такая-то переменная имеет в качестве значения такую-то величину». Следоват., позволяет накладывать постоянное условие на многократно выполняющиеся действия. Кроме этого для цикла (если он не бесконечен), надо доказать, что он закончится за конечное число шагов. Для этого надо для каждого цикла выделить некоторую связанную с циклом целую неотрицат. величину m, зависящую от переменных программы и называемую управляющей величиной (или функцией декремента) и показать, что каждое выполнение цикла уменьшает её, по крайней мере, на единицу.

Проектирование циклов при помощи инварианта. Например, имеется утверждение x>0 y=0 {while  (y=x) do y:=y+1 } y=x, x,y – целые.

Доказать это утверждение старыми методами невозможно, нужны новые методы. Предположим следующее: 1)Предусловие гарантирует выполнение условия y<=x. 2)Выполнение тела цикла увеличивает y. 3)Так как между x и y конечное число значений, то наступит такой момент, что y=x. 4)Программа закончится, как только x=y.

Такой метод рассуждения аналогичен методу математической индукции в математике. В этом случае возможен выбор гипотезы индукции. Для программы гипотеза индукции называется инвариантом цикла. Инвариант должен удовлетворять условиям: 1)Инвариант истинен перед первым выполнением цикла. 2)Вычисление предиката В не нарушает инвариант. 3)Выполнение тела цикла не меняет инвариант. 4)Нарушение условия В и условие инварианта – из них должно следовать выполнение условия Q. 5)Цикл завершается за конечное число шагов.

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

Проектирование цикла: Дано P{while B do S}Q. 1)Продумать стратегию решения зедачи. Найти Inv, 2)найти В, 3)найти начальное значение параметров цикла из условия истинности инварианта, 4)найти S, 5)найти ф-лу для m и доказать, что при выполнении тела цикла m уменьшается по крайней мере на 1.

Соседние файлы в папке POSIBNIK