Correct Answer.

We consider the body of the program's only while-statement
      z = z + a;
      a = a + 1;

To see whether 2z = (a - 1)a is an invariant for the while-statement, we place it as a postcondition at the bottom of the loop-body and push it upwards through that body to determine the weakest precondition that guarantees 2z = (a - 1)a to hold after the execution of the loop's body:

2(z + a) = ((a + 1) - 1)(a + 1) Weakest Precondition
z = z + a;
2z = ((a + 1) - 1)(a + 1) Assignment
a = a + 1;
2z = (a - 1)a Assignment



Back to Question.
Next Question.