Инварианты петли с перерывами

Я пытаюсь понять, как инварианты цикла взаимодействуют с разрывами. CLRS 3e (pg19) описывает инвариант цикла как требующий, чтобы

Если он равен true до итерации цикла, он остается истинным до следующей итерации.

Итак, учитывая следующий тривиальный цикл

for i = 1 to 5
    if i == 3 then break

Было бы справедливо сказать, что i < 4 является инвариантным свойством цикла? Аргументом является то, что, поскольку цикл завершается в операторе break, после нарушения этого свойства не происходит итераций.

1 ответ

Да, это будет инвариант, именно по той причине, которую вы упомянули. Является ли это полезным инвариантом - это отдельный вопрос, который зависит от того, что вы пытаетесь доказать.

Другие вопросы по тегам