Type checking seems to serve two distinct purposes: … [A programmer of an abstract data type needs] the aid of a type system to … [of users of the data type.] First, users of his programs may ask them to operate … to process. This is the authentication problem. … Second, users may write programs that depend upon … the secrecy problem. Type checking is a way … (1) Only values of that type can be … type (secrecy).
Copyright clearance needed for quotation.