See DBC but in summary:
- State the preconditions, i.e. what has to true before operation
- Describe operation
- If the preconditions were met, we promise the postcondition is met.
pre: { x >= 0 } calculate y which is the sqrt(x) post: { y * y = x and y >= 0 }