Provide a step-by-step partial correctness proof for the following.
Justify each step with one of the three rules below, or ``algebraic
fact'' if the conclusion is algebraically true and involves no
assertions.
{ z = xi }
z := z * x;
i := i + 1;
{ z = xi }
1. z = xi implies z * x = xi + 1
(algebraic fact)
2. { z = xi }
{ z * x = xi + 1 }
(consequence: 1)
3. { z * x = xi + 1 }
z := z * x;
{ z = xi + 1 }
(assignment)
4. { z = xi }
z := z * x;
{ z = xi + 1 }
(sequence: 3, 4)
5. { z = xi + 1 }
i := i + 1;
{ z = xi }
(assignment)
6. { z = xi }
z := z * x;
i := i + 1;
{ z = xi }
(sequence: 4, 5)