I present four type abstraction rules which have been introduced by various authors to permit polymorphic type safety in the presence of mutable data. Each of the type abstraction rules is discussed in the context of the language in which is was introduced, and the various abstraction rules are compared.