Обращаясь к правилу while для полной корректности , WP, кажется, говорит мне, что достаточно просто найти вариант цикла, который строго уменьшается, чтобы доказать завершение.Я не могу с этим согласиться, потому что я что-то упускаю или правило неверное.Рассмотрим
int i = 1000;
while(true) i--;
, в котором значение переменной i
является строго убывающим вариантом цикла, но цикл, конечно, не заканчивается.
Конечно, в правиле должно быть дополнительное предусловиечто-то вроде i <0 → ¬B </em> (где B - это состояние цикла в схеме аксиомы), так что условие цикла в конечном итоге «ловит» вариант цикла и завершается.
Или я что-то пропустил?