An invariant is a condition the program expects to remain true after an operation.

Assert Invariants

assert_invariants.cpp
#include <iostream>

int main() {
    int balance = 20;
    int withdrawal = ;

    int nextBalance = balance - withdrawal;
    bool invariantHolds = balance >= 0 && withdrawal >= 0 && nextBalance >= 0;

    std::cout << "balance=" << balance << std::endl;
    std::cout << "withdrawal=" << withdrawal << std::endl;
    std::cout << "nextBalance=" << nextBalance << std::endl;
    std::cout << "invariantHolds=" << invariantHolds << std::endl;
    return 0;
}
#include <iostream>

int main() {
    int balance = 20;
    int withdrawal = ;

    int nextBalance = balance - withdrawal;
    bool invariantHolds = balance >= 0 && withdrawal >= 0 && nextBalance >= 0;

    std::cout << "balance=" << balance << std::endl;
    std::cout << "withdrawal=" << withdrawal << std::endl;
    std::cout << "nextBalance=" << nextBalance << std::endl;
    std::cout << "invariantHolds=" << invariantHolds << std::endl;
    return 0;
}
#include <iostream>

int main() {
    int balance = 20;
    int withdrawal = ;

    int nextBalance = balance - withdrawal;
    bool invariantHolds = balance >= 0 && withdrawal >= 0 && nextBalance >= 0;

    std::cout << "balance=" << balance << std::endl;
    std::cout << "withdrawal=" << withdrawal << std::endl;
    std::cout << "nextBalance=" << nextBalance << std::endl;
    std::cout << "invariantHolds=" << invariantHolds << std::endl;
    return 0;
}
invariant Programs can report an invariant check without intentionally stopping execution.