Rifat, не стоит искать в программировании каких-то особых "инвариантов".

Инвариант - это уравнение, которое всегда выполняется.
С их помощью мы фиксируем свои предположения насчет некоторого объекта (системы).
Совокупность инвариантов по сути определяет идеальную модель системы.
Это позволяет нам:
1. Делать проверки - что система ведет себя так, как мы предполагаем.
2. Использовать инварианты как аксиомы в своих рассуждениях.


> -- Цитата:
> И если кто-то знает где можно почитать не про инвариант цикла, а про другие инварианты, то был бы благодарен за ссылку.
Попробуйте порассуждать самостоятельно.
Возьмите какой-нибудь простой объект. Например, кирпич.
Кирпич - это система из частиц (углубляться в сущность самих частиц не нужно)
Что делает кирпич кирпичом? Подумайте над этим.
Кирпич вообще говоря существует только в нашем воображении. Удивительно то, что большинство людей сходятся во мнении, что некоторый объект является кирпичом.
Как же так выходит?

Попробуйте зафиксировать ваше представление о кирпиче формально в виде уравнений.
У вас есть положения частиц в трехмерном пространстве. Их скорости и т.д.
Другими словами у вас есть переменные, которые можно связать уравнениями, чтобы получить кирпич.
Записав некоторый набор уравнений вы получите модель системы "кирпич".
Модель может быть очень грубой, но при этом достаточной, чтобы большинство людей согласилось, что это описание кирпича.

Так вот в программировании ровно то же самое. Вы создаете систему. У вас есть некоторая модель будущей системы в голове. Фиксируете эту модель в виде уравнений, и втыкаете в код проверки, что уравнения выполняются.
Цикл - это просто часть системы. Никаких особенных инвариантов там нет.
Да и вообще не стоит искать в слове "инвариант" скрытых смыслов. Их там нет.
Инварианты - это просто способ (один из...) формализации наших представлений о некотором явлении/объекте/системе.