Summary
The programmer who calls a function ensures that the precondition is valid.
The programmer who writes a function can bank on the precondition being true when the function begins execution.
The programmer who writes a function ensures that the postcondition is true when the function finishes executing.