The algebraic specification of abstract data types
Programming with abstract data types