Формула корректности
Формула корректности
Пусть А - это некоторая операция (оператор или тело программы). Формула корректности (correctness formula) - это выражение в форме:
{P} A {Q}
Формула выражает свойство, которое может быть или не быть истинным:
Смысл формулы корректности {P} A {Q}
Любое выполнение А, начинающееся в состоянии, где P истинно, завершится и в заключительном состоянии будет истинно Q.
Формула корректности, называемая также триадой Хоара, - математическое понятие, а не программистская конструкция. Она не является частью языка программирования и введена для того, чтобы выражать свойства программных элементов. В этой формуле А, как было сказано, обозначает операцию, P и Q - свойства вовлекаемых в рассмотрение сущностей, называемые утверждениями (точный смысл этого термина будет определен ниже). Утверждение P называется предусловием, а Q - постусловием.
С этого момента обсуждение корректности ПО будет связываться не с программным элементом А, а с триадой, содержащей этот элемент А, предусловие P и постусловие Q. Единственной целью становится установление того, что триада Хоара {P} A {Q} выполняется (истинна).
Вот пример выполняемой тривиальной формулы, в которой полагается, что x имеет тип integer:
{x>=9} x:= x+5 {x>=13}
Число 13 в постусловии не опечатка. Предполагая корректную реализацию целочисленной арифметики, данная формула действительно выполняется. Если предусловие x>=9 выполняется перед присваиванием, то x>=13 будет истинным по завершении оператора присваивания. Конечно, можно утверждать более интересную вещь: при заданном предусловии сильнейшим, насколько это возможно, будет постусловие x>=14. В свою очередь, при заданном постусловии x>=13 слабейшим предусловием будет x>=8. Из выполняемой формулы корректности всегда можно породить новые выполняемые формулы, ослабляя постусловие или усиливая предусловие. Займемся теперь выяснением того, что означают термины "сильнее" и "слабее" в пред- и постусловиях.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Ключевая формула продаж
Ключевая формула продаж Чтобы лучше понять формулу продаж интернет-магазина, которая содержит все указанные компоненты и расставляет все по своим местам, нужно знать, что прибыль – это:маржа (М) х объем продаж,где:M – процент прибыли от себестоимости вашей
Проверка корректности тела
Проверка корректности тела При проверке трехмерного тела команду редактирования SOLIDEDIT следует вызывать из падающего меню Modify ? Solid Editing ? Check либо щелчком на пиктограмме Check на плавающей панели инструментов Solid Editing. В команде используются ключи Body, Check и выдаются следующие
Проверка корректности тела
Проверка корректности тела При проверке трехмерного тела команду редактирования SOLIDEDIT следует вызывать из падающего меню Modify ? Solid Editing ? Check либо щелчком на пиктограмме Check на плавающей панели инструментов Solid Editing. В команде используются ключи Body, Check и выдаются следующие
Проверка корректности тела
Проверка корректности тела При проверке трехмерного тела команду редактирования SOLIDEDIT следует вызывать из падающего меню Modify ? Solid Editing ? Check либо щелчком на пиктограмме Check плавающей панели инструментов Solid Editing. В команде используются ключи Body, Check и выдаются следующие
О корректности ПО
О корректности ПО Зададимся вопросом, что означает утверждение - программный элемент корректен? Наблюдения и рассуждения, отвечающие на это вопрос, могут показаться тривиальными. Но, как заметил один известный ученый, таковы все научные результаты, - они начинаются с
Ингредиенты доказательства корректности цикла
Ингредиенты доказательства корректности цикла Простой пример вычисления максимума массива иллюстрирует общую схему циклических вычислений, применимую ко многим ситуациям. Вы определяете, что решением некоторой проблемы является элемент, принадлежащий n-мерной
Голубятня: Толстовский эксперимент или золотая формула успеха Сергей Голубицкий
Голубятня: Толстовский эксперимент или золотая формула успеха Сергей Голубицкий Опубликовано 02 июля 2013 ABBYY сильно напоминает мне самого себя :) В смысле, что компании, как и мне, импонирует роль первопроходца: прийти куда-то первым, выложиться по
Asus Striker II Formula: Вторая формула
Asus Striker II Formula: Вторая формула Автор: Виктор Некрасов+отличная производительность, высокое качество дизайна и сборки-проблемы с двухканальной памятью, цена великовата (выше 350 долларов)Оригинальная материнская плата Asus Striker Extreme была пос троена на базе чипсета nForce 680i SLI.