It turns out that in Mini-ML, the fixpoint constructor is the only source of non-termination. We verify this by showing that every fixpoint-free well-typed program has a value. This property persists when we add subtyping, intersection types, and polymorphism, even though significantly more programs can be typed.
The proof proceeds by constructing a (unary) logical relation, a very important proof technique in the theory of lambda-calculi and programming languages.
[ Home | Schedule | Assignments | Handouts | Software | Overview ]