The interface between two programs consists of the set of assumptions that each programmer needs to make about the other program in order to demonstrate the correctness of his own program. [A Procedure for Designing Abstract Interfaces for Device Interface Modules]