We demonstrated a complicated representation invariant using
Red/Black Trees.
The main lesson is to understand the subtle
interactions of invariants, data structures, and reliable code
production.
In order to write code satisfying a strong invariant, it
is useful to proceed in stages. Each stage satisfies a simple
invariant, and is provably correct. Together the stages satisfy the
strong invariant.
Lecture Slides with every build, use "slideshow" option in your pdf viewer. Lecture Slides compact.