Programmer use of invariants
•Helped explain use of data structures
–regexp compiled form (a string)
•Contradicted some maintainer expectations
–anticipated lj < j in makepat
–queried for counterexample
–avoided introducing a bug
•Revealed a bug
–when lastj = *j in stclose, array bounds error
[Use “they”, never “we”.]
[Don’t go too fast or assume audience understands the code.]
The point here is that invariants are useful and helpful.  They clarify the code.
These are insights obtained by the programmers from the invariants without any interaction with me.
Two forms of regular expression:  raw and compiled.
[Say the function name first (and clarify that it is a function)]
Anticipated lj < j because thought that “lj” might stand for “last j”, which would be less.
[Do not mention yet how small the subset of the test suite was.]


Maintainer expectations:  Indeed, lastj < j; however, no relation between lj and j, so they avoided introducing a bug
Bug detection:  unexpected invariant revealed loop might not be entered (they expected it to always be), which was an uncaught array bounds error