15-312 Foundations of Programming Languages
Lecture 6: Type Safety
In this lecture we first introduce recursion into our language
in order to increase its expressive power. Then we discuss the
shortcomings of the type preservation theorem on the big-step
semantics, which can only talk about complete computations.
In order to remedy this, we introduce a small-step semantics
in which computation is characterized step-by-step. We discuss
the theorems of type preservation and progress which can now
talk about intermediate states of evaluation, providing much
stronger guarantees about a language. We also prove type
preservation, leaving progress for the next lecture.
We say that a language is type safe if it satisfies both
preservation and progress on a small-step semantics.