Loop invariant - în programare - o expresie logică care este adevărată după fiecare trecere a corpului buclei (după execuția operatorului fix ) și înainte de începerea buclei, în funcție de variabilele care se modifică în corpul buclei. [1] Invarianții sunt utilizați în teoria verificării programelor pentru a demonstra corectitudinea rezultatului obținut printr-un algoritm ciclic.
Un invariant de buclă este o expresie matematică (de obicei o egalitate) care include inevitabil cel puțin unele variabile ale căror valori se schimbă de la o iterație a buclei la următoarea. Invariantul este construit în așa fel încât să fie adevărat imediat înainte de începerea execuției buclei (înainte de a intra în prima iterație) și după fiecare dintre iterațiile sale. Mai mult, dacă invariantul include variabile definite doar în interiorul ciclului (de exemplu, contorul de ciclu forîn Pascal sau Ada ), atunci pentru a intra în ciclu sunt luate în considerare cu valorile pe care le vor primi în momentul inițializării.
Procedura de demonstrare a operabilității ciclului cu ajutorul unui invariant este următoarea:
Invarianții sunt, de asemenea, utilizați în proiectarea și optimizarea algoritmilor ciclici . De exemplu, pentru a vă asigura că bucla optimizată rămâne corectă, este suficient să demonstrați că invariantul buclei nu este încălcat și că condiția de terminare a buclei este realizabilă.