A note on opaque types - Schwartzbach, Michael I. (DAIMI Report Series, 1990)
We extend the results in Schwartzbach: Static Correctness of Hierarchical Procedures to include opaque types. An opaque version of a type is different from the original but has the same values and the same order relations to other types. The opaque types allow a more flexible polymorphism and provide the usual pragmatic advantages of distinguishing between intended and unintended type equalities. Opaque types can be viewed as a compromise between synonym types and abstract types.