15-399 Constructive Logic
Lecture 19: Data Structure Invariants
We continue the discussion of dependent types and how they can be used
in programming. We discover some of the limitations of dependent types
in programming and consider ways to overcome them by using existential
types. With universal and existential types we can now see a continuum
of choices between simple types and full verification in programming.
Applications will be mostly in maintaining and checking invariants on
data structures that cannot be enforced with simple types.