We demonstrated a complicated representation invariant using
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.