Errr, not really. They just happen to be our representation of aliases for types. In some sense, but they avoid undecidability problems because you just need to look at language semantics, not run-time behavior.