Loop invariant - i programmering - ett logiskt uttryck som är sant efter varje pass av loopkroppen (efter exekveringen av den fasta operatorn ) och före starten av loopen, beroende på de variabler som ändras i loopkroppen. [1] Invarianter används i teorin om programverifiering för att bevisa riktigheten av resultatet som erhålls med en cyklisk algoritm.
En loopinvariant är ett matematiskt uttryck (vanligtvis en likhet) som oundvikligen inkluderar åtminstone några variabler vars värden ändras från en iteration av loopen till nästa. Invarianten är konstruerad på ett sådant sätt att den är sann omedelbart före starten av slingexekveringen (innan den första iterationen går in) och efter var och en av dess iterationer. Dessutom, om invarianten innehåller variabler som bara definieras i cykeln (till exempel cykelräknaren fori Pascal eller Ada ), för att gå in i cykeln tas de i beaktande med de värden som de kommer att få vid tidpunkten för initiering.
Proceduren för att bevisa cykelns funktionsduglighet med hjälp av en invariant är följande:
Invarianter används också vid design och optimering av cykliska algoritmer . Till exempel, för att säkerställa att den optimerade slingan förblir korrekt, räcker det att bevisa att slinginvarianten inte kränks och att slingavslutningsvillkoret är uppnåeligt.