Loop invariant - i programmering - et logisk udtryk , der er sandt efter hver passage af loop-kroppen (efter udførelsen af den faste operator ) og før starten af loopen, afhængigt af de variabler, der ændres i loop-kroppen. [1] Invarianter bruges i teorien om programverifikation for at bevise rigtigheden af resultatet opnået af en cyklisk algoritme.
En sløjfe-invariant er et matematisk udtryk (normalt en lighed), der uundgåeligt inkluderer i det mindste nogle variabler, hvis værdier ændres fra en iteration af sløjfen til den næste. Invarianten er konstrueret på en sådan måde, at den er sand umiddelbart før starten af loop-udførelsen (før den første iteration) og efter hver af dens iterationer. Desuden, hvis invarianten inkluderer variabler, der kun er defineret inde i cyklussen (for eksempel cyklustælleren fori Pascal eller Ada ), så tages de i betragtning for at indtaste cyklussen med de værdier, som de vil modtage på initialiseringstidspunktet.
Proceduren for at bevise cyklussens funktionsdygtighed ved hjælp af en invariant er som følger:
Invarianter bruges også i design og optimering af cykliske algoritmer . For for eksempel at sikre, at den optimerede sløjfe forbliver korrekt, er det nok at bevise, at sløjfe-invarianten ikke er overtrådt, og at sløjfetermineringsbetingelsen er opnåelig.