Step0: Initial code - how to prove correct from PRE- to POST-condition?
int factorial(int x) {
int f, y;
// PRE-CONDITION: x >= 0
y = 1;
f = 1;
while (y <= x) {
f = f * y;
y = y + 1;
} // end while
// POST-CONDITION: f = x!
return f;
}