In Scheme, a post-condition typically is a statement of what a procedure should return. The user of a procedure is obligated to meet a procedure's pre-conditions when calling the procedure. The developer of a procedure should be able to assume that pre-conditions are met. If the user meets the pre-conditions, then any errors in processing or in the procedure's result are the sole fault of the developer. Here, in summary, are the two arguments.
Actual practice tends to acknowledge both perspectives in differing contexts.
More checking is done when applications are more critical. The error procedure in Chez Scheme So far, we've been relying on the underlying implementation of Chez Scheme to detect and report such errors. Sometimes this is an adequate way of dealing with them, but in other cases one might prefer to write the procedure in such a way that it checks and enforces its preconditions before performing any operations on its arguments. The error is detected and reported before the procedure gets down to the point where it might try to apply string-length to a number or cdr to an empty list. However, as noted above, the inclusion of pre-condition testing increases execution time.