AlgStr / Библиотека / ЛЕКЦИИ / POSIBNIK / Верификация
.DOCЛогические спецификации или введение в верификацию программы
Верификация программ осуществляется на основе анализа ее текста. Проводится на основе формул полной коректности. Формула коректности включает в себя предикаты P и Q, а между ними находится сегмент верификационной программы P{S1, ... ,Sn}Q.
P - называется предусловием;
Q - называется постусловием.
Если перед выполнением последовательных операций предикат P выполняется, то гарантируется и выполнение предиката Q, т.е. (FALSE =>P) = TRUE
Пример:
TRUE
{x := 0; y := 1}
y > x
1 > 0 - TRUE
Аксиома для оператора присваивания
Пусть Р есть любой предикат, а е - это выражение свободное от побочных эффектов, тогда если Р истинно после присваивания x := e, то Р с е подставленным во все свободные выражения х перед этими присваиваниями, должен быть истинен.
P[e -> x] {x := e}P
Пример:
x > n {x := x + 1} x > n + 1
x > n => x + 1 > n + 1
x > n => x > n
TRUE
Способы доказательства. Методы прохода вперед и назад.
Метод рохода назад приводит к получению предусловия, т.е. выполнения его достаточно для получения результата и его включает в себя любое достаточное предусловие.
Метод прохода вперед сводится к тому, что двигаясь от предусловия мы доказываем самое сильное постусловие, т.е. оно включает и требуемое нами постусловие.
P{ S }Q
Аксиома последовательного выполнения.
Если P{ А }Q и Q{ B }R, то выполняется P{ A;B }R
Пример:
(0 < x < 1) {x := 1/x + y; x := x + 1} (x > y + 2)
(0 < x < 1) {x := 1/x + y} (x + 1 > y + 2)
(0 < x < 1) {x := 1/x + y} (x > y + 1)
Обозначим n = y + 1.
(0 < x < 1) {x := 1/x + y} (x > n)
( x > n) {x := x + 1} (x > n + 1) => TRUE
Аксиома ветвления.
Если некоторое условие В не имеет побочных эффектов, то доказательства
P{ if B then S1 else S2}Q
эквивалентно доказательству пары
P&B{ S1 }Q и P&ØB{ S2 }Q
Пример:
(x > 0)&(y = 0)
{while Ø(y = x) do y := y + 1}
(y = x)