Consider the problem of two structured types:
Are two record types compatible if they are structurally the same but use different field names?
Are two array types compatible if they are the same except that the subscripts are different?
(e.g. [1..10] and [0..9])
Are two enumeration types compatible if their components are spelled differently?
With structural type compatibility, you cannot differentiate between types of the same structure (e.g. different units of speed, both float)