We discuss the relationship between extrinsic and intrinsic formulations of
parametric polymorphism and discover that the two systems are operationally
equivalent only under a so-called value restriction. A corresponding
condition has been adopted for ML to guarantee type preservation even
under the extension of the language by effects such as mutable
references or exceptions.

We then show explicitly how the problem of type inference can be mapped to
the problem of solving constraints in a simple logic containing only equality,
truth, conjunction, and existential quantification. We call this a
unification logic.