User guarantees preconditions: Main advantage is efficiency:
PUSH(S,1);
POP(S);
Postcondition of PUSH satisfies precondition of
POP.
Implementation checks preconditions:
Selective code inclusion:
cc -DSAFE ...
#ifdef SAFE
if (! condition) error("condition not satisfied");
#endif