Preconditions and postconditions in programming