We introduce a basic system of atomic subtyping and prove some of its
central properties. In particular we show under which conditions
principal types exist, and how subtyping and typability can be decided
by effective procedures. We also illustrate how typing derivations can
be compiled to simply-typed terms with explicit coercions. This
raises the problem of coherence, which we address in the next lecture.
We also show the implementation of these systems and proofs in Elf.