Что программа делает со счётом
Возьмём знакомое вычитание единицы. Оно не трогает всю ленту — только правый хвост.
Хвостовые нули превращаются в единицы. Первая справа единица превращается в ноль. Всё левее не меняется.
Считаем изменение: потеряли t нулей (те, что стали единицами), приобрели один (та единица, что стала нулём).
Отсюда инвариант: нулей после = z − t + 1, где z — нулей было, t — хвостовых нулей.
На нашем сквозном примере: z = 4, t = 3, значит после работы нулей 4 − 3 + 1 = 2. Прогон подтверждает: 2.