Ovaj program ima dve petlje, jednu za drugom. Jedna mogućnost je da se pretpostavi šta bi mogle biti korisne invarijante petlji i da se onda dokaže da one to zaista jesu. Druga mogućnost, koju ćemo razmotriti u nastavku, je uvođenje brojača u petlje i izvođenje invarijanti na osnovu tih brojača. Neka je n brojač za prvu i neka je m brojač za drugu petlju.
Sada je pseudokod programa:
{x ≥ 0, y > 0}
q = 0;
r = x;
z1 = y;
z2 = 1;
n = 0;
Tačka N:{invarijanta prve petlje}
while (z1 < r) do
begin
z1 = 2 * z1;
z2 = 2 * z2;
n = n + 1;
{invarijanta prve petlje}
end
if(z1 ≤ r)
begin
r = r - z1;
q = q + z2;
end
m = 0;
Tačka M:{invarijanta druge petlje}
while (z2 ≠ 1) do
begin
z1 = z1 / 2;
z2 = z2 / 2;
m = m + 1;
if(z1 ≤ r)
begin
r = r - z1;
q = q + z2;
end
{invarijanta druge petlje}
end
{x = q * y + r, 0 ≤ r < y}
Izvedimo invarijante ovih petlji.
Naredna: Izvođenje prve invarijante Gore: Hardverdsko celobrojno deljenje Prethodna: Pseudokod programa Sadržaj