ループ不変式が問題の正しさを証明するためのものであることは知っていますが、問題がどんなに些細なものであっても、どのようにループ不変式を作成するのかがよくわかりません。これが例です。誰かが私が考え出すために考慮すべきステップは何かを指摘できますか. ループ内で変化するすべての値が不変条件に含まれている必要があることはわかっています。この問題について教えてください。事後条件も見つける必要があります。説明は答えよりも価値があります。助けてください。
{M > 0 and N >= 0 }
a = M;
b = N;
k = 1;
while (b > 0) {
if (b % 2 == 0) {
a = a * a;
b = b / 2
} else {
b = b – 1;
k = k * a;
}
}
{ ? ? }