15-851 Computation and Deduction
Lecture 24: Refinement Types
We resolve the tension between subtyping, intersection, and parametric
polymorphism by introducing a refinement restriction. We construct the type
system in two stages: in the first stage, we assign simple types (including
prefix polymorphism), without taking account of subtyping or intersection. In
the second stage we investigate additional properties of programs via sorts.