I ein Beispielprogramm sah den auf 0 jeden Wert in einem Array setzt:Schleifeninvariante einfache while-Schleife
int a[n]; int i = 0;
while(i < n) {
a[i] = 0;
i++;
}
Es wird gesagt, dass ein Teil der Schleife invariant 0<=i<n
ist. Nachdem die Schleife beendet ist, wird jedoch gleich n sein. Korrigiere ich, dass dies nicht Teil der Schleifeninvariante ist? Wenn ja, mit was soll es ersetzt werden? Die vollständige Invariante war For All j (0<= j < i --> a[i] = 0) & 0 <= i < n)
Die vollständige Schleifeninvariante ist normalerweise nach einer Schleife falsch. Manchmal ist das Erreichen dieses Zustands der Punkt der Schleife. Manchmal, wie hier, gilt ein Teil der Schleifeninvariante auch unmittelbar nach der Schleife, wo dies der Punkt ist. –