In this second lecture we will look at how we can evaluate our intrinsically-typed terms in a type-safe way ensuring that, and proving, that our language is type-safe. Specifically, we will show how dependent types support the creation of intrinsically-typed definitional interpreters for imperative languages.

By the end of this lecture you will be able to:

  1. understand the link between definitional interpreters and proofs of type-safety;
  2. explain how intrinsically-typed terms enable type-safe programs to be evaluated;
  3. explain how dependent-types support creation of well-typed heaps required for working with memory;

The lecture is split into the following sections: