nextupprevious
Next:2.3.4 Метод промежуточных утверждений
Up:2.3 Доказательство свойств программ
Previous:2.3.2 Внешняя спецификация программы


2.3.3 Утверждения как множества состояний

Спецификация программы содержит два утверждения: утверждение дано, которое описывает состояние входного файла Input до исполнения программы, и утверждение получить, которое описывает содержимое выходного файла Output после завершения выполнения программы, если выполнение программы началось в состоянии, удовлетворяющем дано. Заметим, что в ней ничего не сказано о выполнении программы, начинающем в состоянии, не удовлетворяющем дано. Если программа должна работать со всеми начальными состояниями, например печатая сообщения об ошибках при ошибочных входных данных, то эти случаи должны образовывать часть ее спецификации.

Конечно же, при спецификации больших и сложных программ таким способом могут возникнуть трудности, и чтобы справится с ними можно использовать менее формальные, словесные утверждения дано и получить. Вместе с тем понятно, что можно рассматривать утверждения не только о начальных и конечных состояниях программы, но и утверждения, связанные с произвольной точкой программы и описывающие те состояния ВМ, которые содержат данную точку программы. Например, для ВМ с двумя переменными X и Y два состояния {(X,2),(Y,3)} и {(X,2),(Y,4)} описывает следующее утверждение о значениях переменных X и Y:

(X=2)&((Y=3)or(Y=4)).

Утверждение вообще и логическое выражение в частности выражает, или описывает, множество состояний, в котором оно истинно. Так, пустое множество, не содержащее состояний вообще, представимо логическим выражением false, поскольку false не истинно ни в одном состоянии. Множество всех состояний представимо логическим выражением true, поскольку true истинно во всех состояниях.

Говорят, что утверждение $\alpha$слабее$\beta$ (а утверждение $\beta$ сильнее, чем утверждение$\alpha$), если $\alpha$ является следствием $\beta$ (т.е. истинна импликация $\beta \rightarrow \alpha$). Более сильное высказывание сильнее ограничивает комбинации значений переменных, описываемых им, а более слабое -- слабее. В терминах множеств состояний $\alpha$ слабее, чем $\beta$, если оно "менее ограничительно": множество состояний, описанное $\alpha$, содержит по меньшей мере те состояния, которые описывает $\beta$, а возможно, еще и другие. Слабейшее утверждение -- это true (или любая другая тавтология): оно представляет множество всех состояний; сильнейшее утверждение -- это false: оно представляет пустое множество.
 

Next:2.3.4 Метод промежуточных утверждений Up:2.3 Доказательство свойств программ
Previous:2.3.2 Внешняя спецификация программы


© В.Н. Касьянов, Е.В.Касьянова, 2004