Я смотрю на Hoare Logic, и у меня возникают проблемы с пониманием метода поиска инварианта цикла.Hoare Logic Loop Invariant
Может кто-нибудь объяснить метод, используемый для вычисления инварианта цикла?
И что должно содержать инвариант цикла, чтобы быть «полезным»?
Я дело только с простыми примерами, находя инварианты и доказательства частичной и полной коррекции в примерах, как:
{ i ≥ 0 } while i > 0 do i := i−1 { i = 0 }
Очень неформальное объяснение формальной вещи :). Инварианты не сохраняются в начале и в конце, но они должны удерживаться после каждого утверждения программы, пока входные данные удовлетворяют предварительным условиям. Логика Hoare основана на простых программных схемах, конкретная реализация langauge не имеет большого значения. –
Хех, спасибо за комментарий :) В моем образовании термин «инвариант» был брошен вокруг много, без формального объяснения того, что это было - я, по-видимому, взял некоторые неправильные идеи. –
Я думаю, что когда дело доходит до Hoare Logic, инвариант вроде бы брошен без каких-либо хороших объяснений ... – nunopolonia