EXAMPLE (end)

EXAMPLE (continued)

The following predicates are all loop invariants:

L21: {input1 = div * y + x}
L22: {x >= 0}
L23: {y = input2}

Finally, we verify the segment,

{input1>0 and input2>0}
read(x); read(y);
div := 0;
{input1 = div * y + x;
x >= 0;
y = input2;}

This completes the correctness proof.