Инварианты петли с перерывами
Я пытаюсь понять, как инварианты цикла взаимодействуют с разрывами. CLRS 3e (pg19) описывает инвариант цикла как требующий, чтобы
Если он равен true до итерации цикла, он остается истинным до следующей итерации.
Итак, учитывая следующий тривиальный цикл
for i = 1 to 5
if i == 3 then break
Было бы справедливо сказать, что i < 4 является инвариантным свойством цикла? Аргументом является то, что, поскольку цикл завершается в операторе break, после нарушения этого свойства не происходит итераций.
1 ответ
Да, это будет инвариант, именно по той причине, которую вы упомянули. Является ли это полезным инвариантом - это отдельный вопрос, который зависит от того, что вы пытаетесь доказать.