Linearize data structures
•
Traverse pointer-directed data
structures
•
Present to invariant engine as
sequence
–
cyclicity determined by front end
[Don’t say “serialize”, which means something in Java; say “linearize”.]
[Don’t say “optimized”, say “designed”.]
No change to engine required
Need not be frequent:
•
stop traversing the data structure when not of interest
•
incrementally maintain
•
backoff (less frequent checking once it has been satisfied many times)
•
integrate with garbage collection
Such invariants require traversal; the same is true for arrays, but there the size is known or at least is generally not enormous.