vi0, пример инварианта - проверка выхода за границы массива. В некоторых ЯП и runtime этот ивариант - встроен.
Еще пример. На некоторых собесах задают задачу - проверить корректность вложенных скобок.
Пример корректных
(((( () () ))))
Пример некорректных
())
Можно тут взять следующий ивариант. Если скобка открылась - то считаем +1 к некой переменной.
Если закрылась - то считаем -1. Если в теле цикла мы вышли ниже нуля - то ошибка вложенных скобок.
Ивариантом в нашем случае является НЕ-ОТРИЦАТЕЛЬНОСТЬ счетчика скобок.
+В конце можно проверить на ноль. Но это уже пост-вариант.
Инварианты очень леко толкать в математике. Берете просто любую формулу и как только видите
квадратный корень - то сразу говорите что под корнем - не отрицательное. Это инвариант.
Ну и модульные тесты и еще раз тесты. Утверждения (asserts). Контракты.